Go to the documentation of this file.
14 #ifndef LLVM_LIB_TARGET_XCORE_XCOREISELLOWERING_H
15 #define LLVM_LIB_TARGET_XCORE_XCOREISELLOWERING_H
124 Type *Ty,
unsigned AS,
194 std::pair<unsigned, const TargetRegisterClass *>
202 SDValue PerformDAGCombine(
SDNode *
N, DAGCombinerInfo &DCI)
const override;
204 void computeKnownBitsForTargetNode(
const SDValue Op,
206 const APInt &DemandedElts,
208 unsigned Depth = 0)
const override;
230 bool shouldInsertFencesForAtomic(
const Instruction *
I)
const override {
This is an optimization pass for GlobalISel generic memory operations.
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
A parsed version of the target data layout string in and methods for querying it.
unsigned getJumpTableEncoding() const override
Return the entry encoding for a jump table in the current function.
Represents one node in the SelectionDAG.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
The instances of the Type class are immutable: once they are created, they are never changed.
Function Alias Analysis Results
unsigned const TargetRegisterInfo * TRI
void ReplaceNodeResults(SDNode *N, SmallVectorImpl< SDValue > &Results, SelectionDAG &DAG) const override
ReplaceNodeResults - Replace the results of node with an illegal result type with new values built ou...
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
Register getExceptionSelectorRegister(const Constant *PersonalityFn) const override
If a physical register, this returns the register that receives the exception typeid on entry to a la...
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
bool isZExtFree(SDValue Val, EVT VT2) const override
Return true if zero-extending the specific node Val to type VT2 is free (either because it's implicit...
This is an important base class in LLVM.
Representation of each machine instruction.
This is an important class for using LLVM in a threaded context.
const char * getTargetNodeName(unsigned Opcode) const override
getTargetNodeName - This method returns the name of a target specific
Flags
Flags values. These may be or'd together.
This structure contains all information that is necessary for lowering calls.
Primary interface to the complete machine description for the target machine.
Class for arbitrary precision integers.
StringRef - Represent a constant reference to a string, i.e.
MVT getScalarShiftAmountTy(const DataLayout &DL, EVT) const override
Return the type to use for a scalar shift opcode, given the shifted amount type.
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
@ BUILTIN_OP_END
BUILTIN_OP_END - This must be the last enum value in this list.
Wrapper class representing virtual and physical registers.
XCoreTargetLowering(const TargetMachine &TM, const XCoreSubtarget &Subtarget)
bool isLegalAddressingMode(const DataLayout &DL, const AddrMode &AM, Type *Ty, unsigned AS, Instruction *I=nullptr) const override
isLegalAddressingMode - Return true if the addressing mode represented by AM is legal for this target...
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const override
LowerOperation - Provide custom lowering hooks for some operations.
virtual bool isZExtFree(Type *FromTy, Type *ToTy) const
Return true if any actual instruction that defines a value of type FromTy implicitly zero-extends the...
Register getExceptionPointerRegister(const Constant *PersonalityFn) const override
If a physical register, this returns the register that receives the exception address on entry to an ...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
const char LLVMTargetMachineRef TM
MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr &MI, MachineBasicBlock *MBB) const override
This method should be implemented by targets that mark instructions with the 'usesCustomInserter' fla...