LLVM API Documentation
#include "HexagonISelLowering.h"#include "HexagonMachineFunctionInfo.h"#include "HexagonSubtarget.h"#include "HexagonTargetMachine.h"#include "HexagonTargetObjectFile.h"#include "llvm/CodeGen/CallingConvLower.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachineJumpTableInfo.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/SelectionDAGISel.h"#include "llvm/CodeGen/ValueTypes.h"#include "llvm/IR/CallingConv.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/Function.h"#include "llvm/IR/GlobalAlias.h"#include "llvm/IR/GlobalVariable.h"#include "llvm/IR/InlineAsm.h"#include "llvm/IR/Intrinsics.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/raw_ostream.h"
Go to the source code of this file.
Defines | |
| #define | DEBUG_TYPE "hexagon-lowering" |
Functions | |
| static bool | CC_Hexagon (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State) |
| static bool | CC_Hexagon32 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State) |
| static bool | CC_Hexagon64 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State) |
| static bool | RetCC_Hexagon (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State) |
| static bool | RetCC_Hexagon32 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State) |
| static bool | RetCC_Hexagon64 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State) |
| static bool | CC_Hexagon_VarArg (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State) |
| static SDValue | CreateCopyOfByValArgument (SDValue Src, SDValue Dst, SDValue Chain, ISD::ArgFlagsTy Flags, SelectionDAG &DAG, SDLoc dl) |
| static bool | getIndexedAddressParts (SDNode *Ptr, EVT VT, bool isSEXTLoad, SDValue &Base, SDValue &Offset, bool &isInc, SelectionDAG &DAG) |
| static bool | Is_PostInc_S4_Offset (SDNode *S, int ShiftAmount) |
Variables | |
| static cl::opt< bool > | EmitJumpTables ("hexagon-emit-jump-tables", cl::init(true), cl::Hidden, cl::desc("Control jump table emission on Hexagon target")) |
| #define DEBUG_TYPE "hexagon-lowering" |
Definition at line 42 of file HexagonISelLowering.cpp.
| static bool CC_Hexagon | ( | unsigned | ValNo, |
| MVT | ValVT, | ||
| MVT | LocVT, | ||
| CCValAssign::LocInfo | LocInfo, | ||
| ISD::ArgFlagsTy | ArgFlags, | ||
| CCState & | State | ||
| ) | [static] |
Definition at line 145 of file HexagonISelLowering.cpp.
References llvm::CCState::addLoc(), llvm::CCValAssign::AExt, llvm::CCState::AllocateStack(), CC_Hexagon32(), CC_Hexagon64(), llvm::MVT::f32, llvm::MVT::f64, llvm::ISD::ArgFlagsTy::getByValSize(), llvm::CCValAssign::getMem(), llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, llvm::ISD::ArgFlagsTy::isByVal(), llvm::ISD::ArgFlagsTy::isSExt(), llvm::ISD::ArgFlagsTy::isZExt(), llvm::CCValAssign::SExt, and llvm::CCValAssign::ZExt.
Referenced by CC_Hexagon_VarArg(), llvm::HexagonTargetLowering::LowerCall(), and llvm::HexagonTargetLowering::LowerFormalArguments().
| static bool CC_Hexagon32 | ( | unsigned | ValNo, |
| MVT | ValVT, | ||
| MVT | LocVT, | ||
| CCValAssign::LocInfo | LocInfo, | ||
| ISD::ArgFlagsTy | ArgFlags, | ||
| CCState & | State | ||
| ) | [static] |
Definition at line 183 of file HexagonISelLowering.cpp.
References llvm::CCState::addLoc(), llvm::CCState::AllocateReg(), llvm::CCState::AllocateStack(), llvm::CCValAssign::getMem(), and llvm::CCValAssign::getReg().
Referenced by CC_Hexagon().
| static bool CC_Hexagon64 | ( | unsigned | ValNo, |
| MVT | ValVT, | ||
| MVT | LocVT, | ||
| CCValAssign::LocInfo | LocInfo, | ||
| ISD::ArgFlagsTy | ArgFlags, | ||
| CCState & | State | ||
| ) | [static] |
Definition at line 201 of file HexagonISelLowering.cpp.
References llvm::CCState::addLoc(), llvm::CCState::AllocateReg(), llvm::CCState::AllocateStack(), llvm::CCValAssign::getMem(), and llvm::CCValAssign::getReg().
Referenced by CC_Hexagon().
| static bool CC_Hexagon_VarArg | ( | unsigned | ValNo, |
| MVT | ValVT, | ||
| MVT | LocVT, | ||
| CCValAssign::LocInfo | LocInfo, | ||
| ISD::ArgFlagsTy | ArgFlags, | ||
| CCState & | State | ||
| ) | [static] |
Definition at line 95 of file HexagonISelLowering.cpp.
References llvm::CCState::addLoc(), llvm::CCValAssign::AExt, llvm::CCState::AllocateStack(), CC_Hexagon(), llvm::MVT::f32, llvm::MVT::f64, llvm::ISD::ArgFlagsTy::getByValSize(), llvm::CCValAssign::getMem(), llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, llvm::ISD::ArgFlagsTy::isByVal(), llvm::ISD::ArgFlagsTy::isSExt(), llvm::ISD::ArgFlagsTy::isZExt(), llvm_unreachable, llvm::CCValAssign::SExt, and llvm::CCValAssign::ZExt.
Referenced by llvm::HexagonTargetLowering::LowerCall().
| static SDValue CreateCopyOfByValArgument | ( | SDValue | Src, |
| SDValue | Dst, | ||
| SDValue | Chain, | ||
| ISD::ArgFlagsTy | Flags, | ||
| SelectionDAG & | DAG, | ||
| SDLoc | dl | ||
| ) | [static] |
CreateCopyOfByValArgument - Make a copy of an aggregate at address specified by "Src" to address "Dst" of size "Size". Alignment information is specified by the specific parameter attribute. The copy will be passed as a byval function parameter. Sometimes what we are copying is the end of a larger object, the part that does not fit in registers.
Definition at line 300 of file HexagonISelLowering.cpp.
References llvm::ISD::ArgFlagsTy::getByValAlign(), llvm::ISD::ArgFlagsTy::getByValSize(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getMemcpy(), and llvm::MVT::i32.
Referenced by llvm::HexagonTargetLowering::LowerCall().
| static bool getIndexedAddressParts | ( | SDNode * | Ptr, |
| EVT | VT, | ||
| bool | isSEXTLoad, | ||
| SDValue & | Base, | ||
| SDValue & | Offset, | ||
| bool & | isInc, | ||
| SelectionDAG & | DAG | ||
| ) | [static] |
Definition at line 614 of file HexagonISelLowering.cpp.
References llvm::ISD::ADD, llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, and llvm::MVT::i8.
Referenced by llvm::HexagonTargetLowering::getPostIndexedAddressParts().
| static bool Is_PostInc_S4_Offset | ( | SDNode * | S, |
| int | ShiftAmount | ||
| ) | [static] |
Definition at line 635 of file HexagonISelLowering.cpp.
References llvm::ConstantSDNode::getSExtValue(), and N.
Referenced by llvm::HexagonTargetLowering::getPostIndexedAddressParts().
| static bool RetCC_Hexagon | ( | unsigned | ValNo, |
| MVT | ValVT, | ||
| MVT | LocVT, | ||
| CCValAssign::LocInfo | LocInfo, | ||
| ISD::ArgFlagsTy | ArgFlags, | ||
| CCState & | State | ||
| ) | [static] |
Definition at line 226 of file HexagonISelLowering.cpp.
References llvm::CCValAssign::AExt, llvm::MVT::f32, llvm::MVT::f64, llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, llvm::ISD::ArgFlagsTy::isSExt(), llvm::ISD::ArgFlagsTy::isZExt(), RetCC_Hexagon32(), RetCC_Hexagon64(), llvm::CCValAssign::SExt, and llvm::CCValAssign::ZExt.
Referenced by llvm::HexagonTargetLowering::LowerCallResult(), and llvm::HexagonTargetLowering::LowerReturn().
| static bool RetCC_Hexagon32 | ( | unsigned | ValNo, |
| MVT | ValVT, | ||
| MVT | LocVT, | ||
| CCValAssign::LocInfo | LocInfo, | ||
| ISD::ArgFlagsTy | ArgFlags, | ||
| CCState & | State | ||
| ) | [static] |
Definition at line 257 of file HexagonISelLowering.cpp.
References llvm::CCState::addLoc(), llvm::CCState::AllocateReg(), llvm::CCState::AllocateStack(), llvm::MVT::f32, llvm::CCValAssign::getMem(), llvm::CCValAssign::getReg(), and llvm::MVT::i32.
Referenced by RetCC_Hexagon().
| static bool RetCC_Hexagon64 | ( | unsigned | ValNo, |
| MVT | ValVT, | ||
| MVT | LocVT, | ||
| CCValAssign::LocInfo | LocInfo, | ||
| ISD::ArgFlagsTy | ArgFlags, | ||
| CCState & | State | ||
| ) | [static] |
Definition at line 273 of file HexagonISelLowering.cpp.
References llvm::CCState::addLoc(), llvm::CCState::AllocateReg(), llvm::CCState::AllocateStack(), llvm::MVT::f64, llvm::CCValAssign::getMem(), llvm::CCValAssign::getReg(), and llvm::MVT::i64.
Referenced by RetCC_Hexagon().
cl::opt<bool> EmitJumpTables("hexagon-emit-jump-tables", cl::init(true), cl::Hidden, cl::desc("Control jump table emission on Hexagon target")) [static] |
Referenced by llvm::HexagonTargetLowering::HexagonTargetLowering().