15 #ifndef LLVM_TARGET_AARCH64_ISELLOWERING_H
16 #define LLVM_TARGET_AARCH64_ISELLOWERING_H
25 namespace AArch64ISD {
204 class AArch64Subtarget;
205 class AArch64TargetMachine;
252 bool IsCalleeStructRet,
253 bool IsCallerStructRet,
282 unsigned Size,
unsigned Opcode)
const;
286 unsigned Size,
unsigned CmpOp,
290 unsigned Size)
const;
334 const char *Constraint)
const;
336 std::string &Constraint,
337 std::vector<SDValue> &Ops,
340 std::pair<unsigned, const TargetRegisterClass*>
359 bool &usesOnlyOneValue,
bool &hasDominantValue,
360 bool &isConstant,
bool &isUNDEF);
363 #endif // LLVM_TARGET_AARCH64_ISELLOWERING_H
AArch64TargetLowering(AArch64TargetMachine &TM)
SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const
MachineBasicBlock * emitAtomicBinaryMinMax(MachineInstr *MI, MachineBasicBlock *BB, unsigned Size, unsigned CmpOp, A64CC::CondCodes Cond) const
virtual SDValue PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const
void SaveVarArgRegisters(CCState &CCInfo, SelectionDAG &DAG, SDLoc DL, SDValue &Chain) const
SDValue LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const
virtual bool getTgtMemIntrinsic(IntrinsicInfo &Info, const CallInst &I, unsigned Intrinsic) const LLVM_OVERRIDE
const TargetMachine & getTargetMachine() const
SDValue LowerFormalArguments(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl< ISD::InputArg > &Ins, SDLoc dl, SelectionDAG &DAG, SmallVectorImpl< SDValue > &InVals) const
SDValue ScanBUILD_VECTOR(SDValue Op, bool &isOnlyLowElement, bool &usesOnlyOneValue, bool &hasDominantValue, bool &isConstant, bool &isUNDEF)
bool CCAssignFn(unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
void LowerAsmOperandForConstraint(SDValue Op, std::string &Constraint, std::vector< SDValue > &Ops, SelectionDAG &DAG) const
SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const
SDValue LowerTLSDescCall(SDValue SymAddr, SDValue DescAddr, SDLoc DL, SelectionDAG &DAG) const
SDValue LowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG, const AArch64Subtarget *ST) const
SDValue LowerSELECT(SDValue Op, SelectionDAG &DAG) const
SDValue LowerFP_EXTEND(SDValue Op, SelectionDAG &DAG) const
SDValue LowerGlobalAddressELFLarge(SDValue Op, SelectionDAG &DAG) const
SDValue getSelectableIntSetCC(SDValue LHS, SDValue RHS, ISD::CondCode CC, SDValue &A64cc, SelectionDAG &DAG, SDLoc &dl) const
CCAssignFn * CCAssignFnForNode(CallingConv::ID CC) const
const char * getTargetNodeName(unsigned Opcode) const
This method returns the name of a target specific DAG node.
SDValue LowerVASTART(SDValue Op, SelectionDAG &DAG) const
SDValue addTokenForArgument(SDValue Chain, SelectionDAG &DAG, MachineFrameInfo *MFI, int ClobberedFI) const
Abstract Stack Frame Information.
std::pair< unsigned, const TargetRegisterClass * > getRegForInlineAsmConstraint(const std::string &Constraint, MVT VT) const
bool isKnownShuffleVector(SDValue Op, SelectionDAG &DAG, SDValue &Res) const
ID
LLVM Calling Convention Representation.
MachineBasicBlock * emitAtomicBinary(MachineInstr *MI, MachineBasicBlock *MBB, unsigned Size, unsigned Opcode) const
This contains information for each constraint that we are lowering.
SDValue LowerFP_ROUND(SDValue Op, SelectionDAG &DAG) const
SDValue LowerBR_CC(SDValue Op, SelectionDAG &DAG) const
SDValue LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const
SDValue LowerATOMIC_STORE(SDValue Op, SelectionDAG &DAG) const
virtual MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr *MI, MachineBasicBlock *MBB) const
SDValue LowerCallResult(SDValue Chain, SDValue InFlag, CallingConv::ID CallConv, bool IsVarArg, const SmallVectorImpl< ISD::InputArg > &Ins, SDLoc dl, SelectionDAG &DAG, SmallVectorImpl< SDValue > &InVals) const
SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const
SDValue LowerCall(CallLoweringInfo &CLI, SmallVectorImpl< SDValue > &InVals) const
SDValue LowerGlobalAddressELF(SDValue Op, SelectionDAG &DAG) const
ConstraintType getConstraintType(const std::string &Constraint) const
Given a constraint, return the type of constraint it is for this target.
SDValue LowerF128ToCall(SDValue Op, SelectionDAG &DAG, RTLIB::Libcall Call) const
virtual bool isFMAFasterThanFMulAndFAdd(EVT VT) const
bool IsEligibleForTailCallOptimization(SDValue Callee, CallingConv::ID CalleeCC, bool IsVarArg, bool IsCalleeStructRet, bool IsCallerStructRet, const SmallVectorImpl< ISD::OutputArg > &Outs, const SmallVectorImpl< SDValue > &OutVals, const SmallVectorImpl< ISD::InputArg > &Ins, SelectionDAG &DAG) const
const STC & getSubtarget() const
ConstraintWeight getSingleConstraintMatchWeight(AsmOperandInfo &Info, const char *Constraint) const
MachineBasicBlock * emitAtomicCmpSwap(MachineInstr *MI, MachineBasicBlock *BB, unsigned Size) const
static const int FIRST_TARGET_MEMORY_OPCODE
bool isLegalICmpImmediate(int64_t Val) const
MachineBasicBlock * EmitF128CSEL(MachineInstr *MI, MachineBasicBlock *MBB) const
SDValue LowerSETCC(SDValue Op, SelectionDAG &DAG) const
SDValue LowerBRCOND(SDValue Op, SelectionDAG &DAG) const
SDValue LowerReturn(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl< ISD::OutputArg > &Outs, const SmallVectorImpl< SDValue > &OutVals, SDLoc dl, SelectionDAG &DAG) const
SDValue LowerFP_TO_INT(SDValue Op, SelectionDAG &DAG, bool IsSigned) const
SDValue LowerJumpTable(SDValue Op, SelectionDAG &DAG) const
SDValue LowerGlobalAddressELFSmall(SDValue Op, SelectionDAG &DAG) const
SDValue LowerINT_TO_FP(SDValue Op, SelectionDAG &DAG, bool IsSigned) const
bool IsTailCallConvention(CallingConv::ID CallCC) const
SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const
SDValue LowerGlobalTLSAddress(SDValue Op, SelectionDAG &DAG) const
bool DoesCalleeRestoreStack(CallingConv::ID CallCC, bool TailCallOpt) const
SDValue LowerATOMIC_FENCE(SDValue Op, SelectionDAG &DAG) const
EVT getSetCCResultType(LLVMContext &Context, EVT VT) const
SDValue LowerVACOPY(SDValue Op, SelectionDAG &DAG) const