14 #define DEBUG_TYPE "x86-selectiondag-info"
23 TLI(*TM.getTargetLowering()) {
45 if ((Align & 3) != 0 ||
52 if (
const char *bzeroEntry = V &&
60 Args.push_back(Entry);
62 Args.push_back(Entry);
65 false,
false,
false,
false,
70 std::pair<SDValue,SDValue> CallResult =
72 return CallResult.second;
84 unsigned BytesLeft = 0;
85 bool TwoRepStos =
false;
95 Val = (Val << 8) | Val;
100 Val = (Val << 8) | Val;
101 Val = (Val << 16) | Val;
102 if (Subtarget->
is64Bit() && ((Align & 0x7) == 0)) {
105 Val = (Val << 32) | Val;
118 BytesLeft = SizeVal % UBytes;
147 EVT CVT = Count.getValueType();
157 }
else if (BytesLeft) {
159 unsigned Offset = SizeVal - BytesLeft;
160 EVT AddrVT = Dst.getValueType();
179 bool isVolatile,
bool AlwaysInline,
195 if (!AlwaysInline && (Align & 3) != 0)
224 unsigned CountVal = SizeVal / UBytes;
226 unsigned BytesLeft = SizeVal % UBytes;
251 unsigned Offset = SizeVal - BytesLeft;
252 EVT DstVT = Dst.getValueType();
253 EVT SrcVT = Src.getValueType();
261 Align, isVolatile, AlwaysInline,
267 &Results[0], Results.
size());
unsigned getMaxInlineSizeThreshold() const
void push_back(const T &Elt)
SDValue getConstant(uint64_t Val, EVT VT, bool isTarget=false)
SDValue getValue(unsigned R) const
LLVMContext * getContext() const
SDValue getCopyToReg(SDValue Chain, SDLoc dl, unsigned Reg, SDValue N)
bool hasBasePointer(const MachineFunction &MF) const
enable_if_c<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)
const TargetMachine & getTarget() const
unsigned getSizeInBits() const
X86SelectionDAGInfo(const X86TargetMachine &TM)
SDValue getExternalSymbol(const char *Sym, EVT VT)
MachineFunction & getMachineFunction() const
MachinePointerInfo getWithOffset(int64_t O) const
SDVTList getVTList(EVT VT)
virtual MVT getPointerTy(uint32_t=0) const
std::pair< SDValue, SDValue > LowerCallTo(CallLoweringInfo &CLI) const
size_t array_lengthof(T(&)[N])
Find the length of an array.
const DataLayout * getDataLayout() const
bool is64Bit() const
Is this x86_64? (disregarding specific ABI / programming model)
Simple integer binary arithmetic operators.
REP_STOS - Repeat fill, corresponds to X86::REP_STOSx.
static Type * getVoidTy(LLVMContext &C)
REP_MOVS - Repeat move, corresponds to X86::REP_MOVSx.
std::vector< ArgListEntry > ArgListTy
unsigned getBaseRegister() const
SDValue getMemcpy(SDValue Chain, SDLoc dl, SDValue Dst, SDValue Src, SDValue Size, unsigned Align, bool isVol, bool AlwaysInline, MachinePointerInfo DstPtrInfo, MachinePointerInfo SrcPtrInfo)
bool bitsGT(EVT VT) const
bitsGT - Return true if this has more bits than VT.
IntegerType * getIntPtrType(LLVMContext &C, unsigned AddressSpace=0) const
SDValue getIntPtrConstant(uint64_t Val, bool isTarget=false)
virtual SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc dl, SDValue Chain, SDValue Dst, SDValue Src, SDValue Size, unsigned Align, bool isVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo, MachinePointerInfo SrcPtrInfo) const
unsigned getAddrSpace() const
SDValue getNode(unsigned Opcode, SDLoc DL, EVT VT)
static cl::opt< AlignMode > Align(cl::desc("Load/store alignment support"), cl::Hidden, cl::init(DefaultAlign), cl::values(clEnumValN(DefaultAlign,"arm-default-align","Generate unaligned accesses only on hardware/OS ""combinations that are known to support them"), clEnumValN(StrictAlign,"arm-strict-align","Disallow all unaligned memory accesses"), clEnumValN(NoStrictAlign,"arm-no-strict-align","Allow unaligned memory accesses"), clEnumValEnd))
Bitwise operators - logical and, logical or, logical xor.
unsigned getSizeInBits() const
getSizeInBits - Return the size of the specified value type in bits.
virtual const TargetRegisterInfo * getRegisterInfo() const
SDValue getMemset(SDValue Chain, SDLoc dl, SDValue Dst, SDValue Src, SDValue Size, unsigned Align, bool isVol, MachinePointerInfo DstPtrInfo)
SDValue getValueType(EVT)
const char * getBZeroEntry() const
virtual SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc dl, SDValue Chain, SDValue Dst, SDValue Src, SDValue Size, unsigned Align, bool isVolatile, MachinePointerInfo DstPtrInfo) const
uint64_t getZExtValue() const