272
272
/// getSetCCResultType - Return the value type to use for ISD::SETCC.
273
virtual EVT getSetCCResultType(EVT VT) const;
273
virtual EVT getSetCCResultType(LLVMContext &Context, EVT VT) const;
275
275
virtual MachineBasicBlock *
276
276
EmitInstrWithCustomInserter(MachineInstr *MI,
412
412
void addQRTypeForNEON(MVT VT);
414
414
typedef SmallVector<std::pair<unsigned, SDValue>, 8> RegsToPassVector;
415
void PassF64ArgInRegs(DebugLoc dl, SelectionDAG &DAG,
415
void PassF64ArgInRegs(SDLoc dl, SelectionDAG &DAG,
416
416
SDValue Chain, SDValue &Arg,
417
417
RegsToPassVector &RegsToPass,
418
418
CCValAssign &VA, CCValAssign &NextVA,
421
421
ISD::ArgFlagsTy Flags) const;
422
422
SDValue GetF64FormalArgument(CCValAssign &VA, CCValAssign &NextVA,
423
423
SDValue &Root, SelectionDAG &DAG,
426
426
CCAssignFn *CCAssignFnForNode(CallingConv::ID CC, bool Return,
427
427
bool isVarArg) const;
428
428
SDValue LowerMemOpCallTo(SDValue Chain, SDValue StackPtr, SDValue Arg,
429
DebugLoc dl, SelectionDAG &DAG,
429
SDLoc dl, SelectionDAG &DAG,
430
430
const CCValAssign &VA,
431
431
ISD::ArgFlagsTy Flags) const;
432
432
SDValue LowerEH_SJLJ_SETJMP(SDValue Op, SelectionDAG &DAG) const;
463
463
SDValue LowerCallResult(SDValue Chain, SDValue InFlag,
464
464
CallingConv::ID CallConv, bool isVarArg,
465
465
const SmallVectorImpl<ISD::InputArg> &Ins,
466
DebugLoc dl, SelectionDAG &DAG,
467
SmallVectorImpl<SDValue> &InVals) const;
466
SDLoc dl, SelectionDAG &DAG,
467
SmallVectorImpl<SDValue> &InVals,
468
bool isThisReturn, SDValue ThisVal) const;
470
471
LowerFormalArguments(SDValue Chain,
471
472
CallingConv::ID CallConv, bool isVarArg,
472
473
const SmallVectorImpl<ISD::InputArg> &Ins,
473
DebugLoc dl, SelectionDAG &DAG,
474
SDLoc dl, SelectionDAG &DAG,
474
475
SmallVectorImpl<SDValue> &InVals) const;
477
int StoreByValRegs(CCState &CCInfo, SelectionDAG &DAG,
478
SDLoc dl, SDValue &Chain,
479
const Value *OrigArg,
480
unsigned InRegsParamRecordIdx,
481
unsigned OffsetFromOrigArg,
484
bool ForceMutable) const;
476
486
void VarArgStyleRegisters(CCState &CCInfo, SelectionDAG &DAG,
477
DebugLoc dl, SDValue &Chain,
478
const Value *OrigArg,
479
unsigned OffsetFromOrigArg,
487
SDLoc dl, SDValue &Chain,
480
488
unsigned ArgOffset,
481
bool ForceMutable = false)
489
bool ForceMutable = false) const;
484
491
void computeRegArea(CCState &CCInfo, MachineFunction &MF,
485
unsigned &VARegSize, unsigned &VARegSaveSize) const;
492
unsigned InRegsParamRecordIdx,
494
unsigned &ArgRegsSize,
495
unsigned &ArgRegsSaveSize) const;
488
498
LowerCall(TargetLowering::CallLoweringInfo &CLI,
514
524
CallingConv::ID CallConv, bool isVarArg,
515
525
const SmallVectorImpl<ISD::OutputArg> &Outs,
516
526
const SmallVectorImpl<SDValue> &OutVals,
517
DebugLoc dl, SelectionDAG &DAG) const;
527
SDLoc dl, SelectionDAG &DAG) const;
519
529
virtual bool isUsedByReturnOnly(SDNode *N, SDValue &Chain) const;
521
531
virtual bool mayBeEmittedAsTailCall(CallInst *CI) const;
523
533
SDValue getARMCmp(SDValue LHS, SDValue RHS, ISD::CondCode CC,
524
SDValue &ARMcc, SelectionDAG &DAG, DebugLoc dl) const;
534
SDValue &ARMcc, SelectionDAG &DAG, SDLoc dl) const;
525
535
SDValue getVFPCmp(SDValue LHS, SDValue RHS,
526
SelectionDAG &DAG, DebugLoc dl) const;
536
SelectionDAG &DAG, SDLoc dl) const;
527
537
SDValue duplicateCmp(SDValue Cmp, SelectionDAG &DAG) const;
529
539
SDValue OptimizeVFPBrcond(SDValue Op, SelectionDAG &DAG) const;