16 #ifndef AMDGPUISELLOWERING_H
17 #define AMDGPUISELLOWERING_H
23 class AMDGPUMachineFunction;
24 class MachineRegisterInfo;
30 unsigned Start,
unsigned Count)
const;
51 unsigned Reg,
EVT VT)
const;
112 unsigned Depth = 0)
const;
115 const CallInst &
I,
unsigned Intrinsic)
const;
124 void InitAMDILLowering();
135 EVT genIntType(uint32_t size = 32, uint32_t numEle = 1)
const;
140 namespace AMDGPUISD {
185 #endif // AMDGPUISELLOWERING_H
AMDGPUTargetLowering(TargetMachine &TM)
void AnalyzeFormalArguments(CCState &State, const SmallVectorImpl< ISD::InputArg > &Ins) const
SDValue LowerGlobalAddress(AMDGPUMachineFunction *MFI, SDValue Op, SelectionDAG &DAG) const
virtual SDNode * PostISelFolding(MachineSDNode *N, SelectionDAG &DAG) const
virtual SDValue LowerReturn(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl< ISD::OutputArg > &Outs, const SmallVectorImpl< SDValue > &OutVals, SDLoc DL, SelectionDAG &DAG) const
bool ShouldShrinkFPConstant(EVT VT) const
We don't want to shrink f64/f32 constants.
virtual bool isFNegFree(EVT VT) const
#define llvm_unreachable(msg)
virtual SDValue CreateLiveInRegister(SelectionDAG &DAG, const TargetRegisterClass *RC, unsigned Reg, EVT VT) const
Helper function that adds Reg to the LiveIn list of the DAG's MachineFunction.
SDValue LowerIntrinsicIABS(SDValue Op, SelectionDAG &DAG) const
IABS(a) = SMAX(sub(0, a), a)
ID
LLVM Calling Convention Representation.
bool isHWTrueValue(SDValue Op) const
A self-contained host- and target-independent arbitrary-precision floating-point software implementat...
virtual bool isFAbsFree(EVT VT) const
virtual const char * getTargetNodeName(unsigned Opcode) const
This method returns the name of a target specific DAG node.
virtual void computeMaskedBitsForTargetNode(const SDValue Op, APInt &KnownZero, APInt &KnownOne, const SelectionDAG &DAG, unsigned Depth=0) const
Determine which of the bits specified in Mask are known to be either zero or one and return them in t...
virtual bool isLoadBitCastBeneficial(EVT, EVT) const LLVM_OVERRIDE
SDValue LowerIntrinsicLRP(SDValue Op, SelectionDAG &DAG) const
bool isHWFalseValue(SDValue Op) const
SDValue SplitVectorStore(SDValue Op, SelectionDAG &DAG) const
SDValue LowerSTORE(SDValue Op, SelectionDAG &DAG) const
virtual bool getTgtMemIntrinsic(IntrinsicInfo &Info, const CallInst &I, unsigned Intrinsic) const
static const int FIRST_TARGET_MEMORY_OPCODE
virtual MVT getVectorIdxTy() const
virtual SDValue LowerCall(CallLoweringInfo &CLI, SmallVectorImpl< SDValue > &InVals) const
Class for arbitrary precision integers.
SDValue SplitVectorLoad(const SDValue &Op, SelectionDAG &DAG) const
Split a vector load into multiple scalar loads.
void getOriginalFunctionArgs(SelectionDAG &DAG, const Function *F, const SmallVectorImpl< ISD::InputArg > &Ins, SmallVectorImpl< ISD::InputArg > &OrigIns) const
virtual SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const
bool isFPImmLegal(const APFloat &Imm, EVT VT) const
We want to mark f32/f64 floating point values as legal.
SDValue LowerMinMax(SDValue Op, SelectionDAG &DAG) const
Generate Min/Max node.