15 #ifndef LLVM_LIB_TARGET_AMDGPU_R600ISELLOWERING_H 16 #define LLVM_LIB_TARGET_AMDGPU_R600ISELLOWERING_H 48 EVT VT)
const override;
55 bool *IsFast)
const override;
64 unsigned DwordOffset)
const;
69 const SDLoc &DL)
const;
91 unsigned mainop,
unsigned ovf)
const;
95 void getStackAddress(
unsigned StackWidth,
unsigned ElemIdx,
96 unsigned &Channel,
unsigned &PtrIncr)
const;
98 bool isHWTrueValue(
SDValue Op)
const;
99 bool isHWFalseValue(
SDValue Op)
const;
101 bool FoldOperand(
SDNode *ParentNode,
unsigned SrcIdx,
SDValue &Src,
A parsed version of the target data layout string in and methods for querying it. ...
constexpr char Align[]
Key for Kernel::Arg::Metadata::mAlign.
This class represents lattice values for constants.
bool canMergeStoresTo(unsigned AS, EVT MemVT, const SelectionDAG &DAG) const override
Returns if it's reasonable to merge stores to MemVT size.
bool CCAssignFn(unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
CCAssignFn - This function assigns a location for Val, updating State to reflect the change...
MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr &MI, MachineBasicBlock *BB) const override
This method should be implemented by targets that mark instructions with the 'usesCustomInserter' fla...
Function Alias Analysis Results
CCAssignFn * CCAssignFnForCall(CallingConv::ID CC, bool IsVarArg) const
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
const R600Subtarget * getSubtarget() const
This class is used to represent ISD::STORE nodes.
SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const override
This callback is invoked for operations that are unsupported by the target, which are registered to u...
unsigned const MachineRegisterInfo * MRI
This is an important class for using LLVM in a threaded context.
SDValue LowerFormalArguments(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl< ISD::InputArg > &Ins, const SDLoc &DL, SelectionDAG &DAG, SmallVectorImpl< SDValue > &InVals) const override
XXX Only kernel functions are supported, so we can assume for now that every function is a kernel fun...
void ReplaceNodeResults(SDNode *N, SmallVectorImpl< SDValue > &Results, SelectionDAG &DAG) const override
This callback is invoked when a node result type is illegal for the target, and the operation was reg...
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
Interface definition of the TargetLowering class that is common to all AMD GPUs.
SDValue PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const override
This method will be invoked for all target nodes and for any target-independent nodes that the target...
An SDNode that represents everything that will be needed to construct a MachineInstr.
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
Represents one node in the SelectionDAG.
MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc.
Representation of each machine instruction.
R600TargetLowering(const TargetMachine &TM, const R600Subtarget &STI)
bool allowsMisalignedMemoryAccesses(EVT VT, unsigned AS, unsigned Align, bool *IsFast) const override
Determine if the target supports unaligned memory accesses.
Primary interface to the complete machine description for the target machine.
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation...
EVT getSetCCResultType(const DataLayout &DL, LLVMContext &, EVT VT) const override
Return the ValueType of the result of SETCC operations.
This class is used to represent ISD::LOAD nodes.