Go to the documentation of this file.
16 #define DEBUG_TYPE "xcore-selectiondag-info"
20 SDValue Size,
Align Alignment,
bool isVolatile,
bool AlwaysInline,
22 unsigned SizeBitWidth = Size.getValueSizeInBits();
24 if (!AlwaysInline && Alignment >=
Align(4) &&
30 Entry.Node = Dst;
Args.push_back(Entry);
31 Entry.Node = Src;
Args.push_back(Entry);
32 Entry.Node = Size;
Args.push_back(Entry);
44 std::pair<SDValue,SDValue> CallResult = TLI.
LowerCallTo(CLI);
45 return CallResult.second;
SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, Align Alignment, bool isVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo, MachinePointerInfo SrcPtrInfo) const override
Emit target-specific code that performs a memcpy.
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...
CallLoweringInfo & setChain(SDValue InChain)
std::pair< SDValue, SDValue > LowerCallTo(CallLoweringInfo &CLI) const
This function lowers an abstract call to a function into an actual call.
const TargetSubtargetInfo & getSubtarget() const
LLVMContext * getContext() const
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...
bool MaskedValueIsZero(SDValue Op, const APInt &Mask, unsigned Depth=0) const
Return true if 'Op & Mask' is known to be zero.
CallLoweringInfo & setDebugLoc(const SDLoc &dl)
This struct is a compact representation of a valid (non-zero power of two) alignment.
CallLoweringInfo & setLibCallee(CallingConv::ID CC, Type *ResultType, SDValue Target, ArgListTy &&ArgsList)
This class contains a discriminated union of information about pointers in memory operands,...
compiles ldr LCPI1_0 ldr ldr mov lsr tst moveq r1 ldr LCPI1_1 and r0 bx lr It would be better to do something like to fold the shift into the conditional move
This structure contains all information that is necessary for lowering calls.
Class for arbitrary precision integers.
std::vector< ArgListEntry > ArgListTy
IntegerType * getIntPtrType(LLVMContext &C, unsigned AddressSpace=0) const
Returns an integer type with size at least as big as that of a pointer in the given address space.
CallLoweringInfo & setDiscardResult(bool Value=true)
const DataLayout & getDataLayout() const
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
static Type * getVoidTy(LLVMContext &C)
virtual const TargetLowering * getTargetLowering() const
SDValue getExternalSymbol(const char *Sym, EVT VT)
constexpr char Args[]
Key for Kernel::Metadata::mArgs.
CallingConv::ID getLibcallCallingConv(RTLIB::Libcall Call) const
Get the CallingConv that should be used for the specified libcall.
virtual MVT getPointerTy(const DataLayout &DL, uint32_t AS=0) const
Return the pointer type for the given address space, defaults to the pointer type from the data layou...