15 #ifndef LLVM_LIB_TARGET_NVPTX_NVPTXISELLOWERING_H 16 #define LLVM_LIB_TARGET_NVPTX_NVPTXISELLOWERING_H 449 const char *getTargetNodeName(
unsigned Opcode)
const override;
453 unsigned Intrinsic)
const override;
473 EVT VT)
const override {
480 std::pair<unsigned, const TargetRegisterClass *>
495 unsigned retAlignment,
503 void LowerAsmOperandForConstraint(
SDValue Op, std::string &Constraint,
504 std::vector<SDValue> &Ops,
515 getPreferredVectorAction(
MVT VT)
const override;
523 int getDivF32Level()
const;
527 bool usePrecSqrtF32()
const;
534 int &ExtraSteps,
bool &UseOneConst,
535 bool Reciprocal)
const override;
static SDValue LowerEXTRACT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG)
unsigned combineRepeatedFPDivisors() const override
Indicate whether this target prefers to combine FDIVs with the same divisor.
BUILTIN_OP_END - This must be the last enum value in this list.
A parsed version of the target data layout string in and methods for querying it. ...
This represents an addressing mode of: BaseGV + BaseOffs + BaseReg + Scale*ScaleReg If BaseGV is null...
This class represents lattice values for constants.
bool isFMAFasterThanFMulAndFAdd(EVT) const override
Return true if an FMA operation is faster than a pair of fmul and fadd instructions.
EVT getSetCCResultType(const DataLayout &DL, LLVMContext &Ctx, EVT VT) const override
Return the ValueType of the result of SETCC operations.
bool isCheapToSpeculateCtlz() const override
Return true if it is cheap to speculate a call to intrinsic ctlz.
This class represents a function call, abstracting a target machine's calling convention.
Function Alias Analysis Results
bool enableAggressiveFMAFusion(EVT VT) const override
Return true if target always beneficiates from combining into FMA for a given value type...
unsigned const TargetRegisterInfo * TRI
static SDValue LowerCONCAT_VECTORS(SDValue Op, SelectionDAG &DAG)
MVT getScalarShiftAmountTy(const DataLayout &, EVT) const override
EVT is not used in-tree, but is used by out-of-tree target.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
bool isIntegerTy() const
True if this is an instance of IntegerType.
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
amdgpu Simplify well known AMD library false Value * Callee
Analysis containing CSE Info
static SDValue LowerSTORE(SDValue Op, SelectionDAG &DAG)
The instances of the Type class are immutable: once they are created, they are never changed...
This is an important class for using LLVM in a threaded context.
unsigned getVectorNumElements() const
Given a vector type, return the number of elements it contains.
std::vector< ArgListEntry > ArgListTy
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
This structure contains all information that is necessary for lowering calls.
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
static const int FIRST_TARGET_MEMORY_OPCODE
FIRST_TARGET_MEMORY_OPCODE - Target-specific pre-isel operations which do not reference a specific me...
Represents one node in the SelectionDAG.
static EVT getVectorVT(LLVMContext &Context, EVT VT, unsigned NumElements, bool IsScalable=false)
Returns the EVT that represents a vector NumElements in length, where each element is of type VT...
bool isVector() const
Return true if this is a vector value type.
Establish a view to a call site for examination.
LegalizeTypeAction
This enum indicates whether a types are legal for a target, and if not, what action should be used to...
unsigned getPrimitiveSizeInBits() const LLVM_READONLY
Return the basic size of this type if it is a primitive type.
static SDValue LowerLOAD(SDValue Op, SelectionDAG &DAG)
StringRef - Represent a constant reference to a string, i.e.
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation...
This file describes how to lower LLVM code to machine code.
bool isTruncateFree(Type *SrcTy, Type *DstTy) const override
Return true if it's free to truncate a value of type FromTy to type ToTy.
const NVPTXTargetMachine * nvTM