LLVM: lib/Target/Sparc/SparcISelLowering.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
static bool CC_Sparc_Assign_SRet (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static bool CC_Sparc_Assign_Split_64 (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static bool CC_Sparc_Assign_Ret_Split_64 (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static bool Analyze_CC_Sparc64_Full (bool IsReturn, unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static bool Analyze_CC_Sparc64_Half (bool IsReturn, unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static bool CC_Sparc64_Full (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static bool CC_Sparc64_Half (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static bool RetCC_Sparc64_Full (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static bool RetCC_Sparc64_Half (unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
static unsigned toCallerWindow (unsigned Reg)
static bool isAnyArgRegReserved (const SparcRegisterInfo *TRI, const MachineFunction &MF)
static void emitReservedArgRegCallError (const MachineFunction &MF)
static bool hasReturnsTwiceAttr (SelectionDAG &DAG, SDValue Callee, const CallBase *Call)
static void fixupVariableFloatArgs (SmallVectorImpl< CCValAssign > &ArgLocs, ArrayRef< ISD::OutputArg > Outs)
static SPCC::CondCodes intCondCCodeToRcond (ISD::CondCode CC)
intCondCCodeToRcond - Convert a DAG integer condition code to a SPARC rcond condition.
static SPCC::CondCodes IntCondCCodeToICC (ISD::CondCode CC)
IntCondCCodeToICC - Convert a DAG integer condition code to a SPARC ICC condition.
static SPCC::CondCodes FPCondCCodeToFCC (ISD::CondCode CC)
FPCondCCodeToFCC - Convert a DAG floatingp oint condition code to a SPARC FCC condition.
static void LookThroughSetCC (SDValue &LHS, SDValue &RHS, ISD::CondCode CC, unsigned &SPCC)
static SDValue LowerF128_FPEXTEND (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI)
static SDValue LowerF128_FPROUND (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI)
static SDValue LowerFP_TO_SINT (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI, bool hasHardQuad)
static SDValue LowerSINT_TO_FP (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI, bool hasHardQuad)
static SDValue LowerFP_TO_UINT (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI, bool hasHardQuad)
static SDValue LowerUINT_TO_FP (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI, bool hasHardQuad)
static SDValue LowerBR_CC (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI, bool hasHardQuad, bool isV9, bool is64Bit)
static SDValue LowerSELECT_CC (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI, bool hasHardQuad, bool isV9, bool is64Bit)
static SDValue LowerVASTART (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI)
static SDValue LowerVAARG (SDValue Op, SelectionDAG &DAG)
static SDValue LowerDYNAMIC_STACKALLOC (SDValue Op, SelectionDAG &DAG, const SparcSubtarget *Subtarget)
static SDValue getFLUSHW (SDValue Op, SelectionDAG &DAG)
static SDValue getFRAMEADDR (uint64_t depth, SDValue Op, SelectionDAG &DAG, const SparcSubtarget *Subtarget, bool AlwaysFlush=false)
static SDValue LowerFRAMEADDR (SDValue Op, SelectionDAG &DAG, const SparcSubtarget *Subtarget)
static SDValue LowerRETURNADDR (SDValue Op, SelectionDAG &DAG, const SparcTargetLowering &TLI, const SparcSubtarget *Subtarget)
static SDValue LowerF64Op (SDValue SrcReg64, const SDLoc &dl, SelectionDAG &DAG, unsigned opcode)
static SDValue LowerF128Load (SDValue Op, SelectionDAG &DAG)
static SDValue LowerLOAD (SDValue Op, SelectionDAG &DAG)
static SDValue LowerF128Store (SDValue Op, SelectionDAG &DAG)
static SDValue LowerSTORE (SDValue Op, SelectionDAG &DAG)
static SDValue LowerFNEGorFABS (SDValue Op, SelectionDAG &DAG, bool isV9)
static SDValue LowerATOMIC_LOAD_STORE (SDValue Op, SelectionDAG &DAG)

Analyze_CC_Sparc64_Full()

Analyze_CC_Sparc64_Half()

CC_Sparc64_Full()

CC_Sparc64_Half()

CC_Sparc_Assign_Ret_Split_64()

CC_Sparc_Assign_Split_64()

CC_Sparc_Assign_SRet()

emitReservedArgRegCallError()

fixupVariableFloatArgs()

FPCondCCodeToFCC()

FPCondCCodeToFCC - Convert a DAG floatingp oint condition code to a SPARC FCC condition.

Definition at line 1607 of file SparcISelLowering.cpp.

References llvm::SPCC::FCC_E, llvm::SPCC::FCC_G, llvm::SPCC::FCC_GE, llvm::SPCC::FCC_L, llvm::SPCC::FCC_LE, llvm::SPCC::FCC_LG, llvm::SPCC::FCC_NE, llvm::SPCC::FCC_O, llvm::SPCC::FCC_U, llvm::SPCC::FCC_UE, llvm::SPCC::FCC_UG, llvm::SPCC::FCC_UGE, llvm::SPCC::FCC_UL, llvm::SPCC::FCC_ULE, llvm_unreachable, llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETO, llvm::ISD::SETOEQ, llvm::ISD::SETOGE, llvm::ISD::SETOGT, llvm::ISD::SETOLE, llvm::ISD::SETOLT, llvm::ISD::SETONE, llvm::ISD::SETUEQ, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, llvm::ISD::SETULT, llvm::ISD::SETUNE, and llvm::ISD::SETUO.

Referenced by LowerBR_CC(), and LowerSELECT_CC().

getFLUSHW()

getFRAMEADDR()

Definition at line 2836 of file SparcISelLowering.cpp.

References llvm::ISD::ADD, llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getEntryNode(), getFLUSHW(), llvm::MachineFunction::getFrameInfo(), llvm::SelectionDAG::getIntPtrConstant(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineFunction(), llvm::SelectionDAG::getNode(), llvm::SparcSubtarget::getStackPointerBias(), llvm::Offset, and llvm::MachineFrameInfo::setFrameAddressIsTaken().

Referenced by LowerFRAMEADDR(), and LowerRETURNADDR().

hasReturnsTwiceAttr()

IntCondCCodeToICC()

IntCondCCodeToICC - Convert a DAG integer condition code to a SPARC ICC condition.

Definition at line 1589 of file SparcISelLowering.cpp.

References llvm::SPCC::ICC_CC, llvm::SPCC::ICC_CS, llvm::SPCC::ICC_E, llvm::SPCC::ICC_G, llvm::SPCC::ICC_GE, llvm::SPCC::ICC_GU, llvm::SPCC::ICC_L, llvm::SPCC::ICC_LE, llvm::SPCC::ICC_LEU, llvm::SPCC::ICC_NE, llvm_unreachable, llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, and llvm::ISD::SETULT.

intCondCCodeToRcond()

intCondCCodeToRcond - Convert a DAG integer condition code to a SPARC rcond condition.

Definition at line 1568 of file SparcISelLowering.cpp.

References llvm_unreachable, llvm::SPCC::REG_GEZ, llvm::SPCC::REG_GZ, llvm::SPCC::REG_LEZ, llvm::SPCC::REG_LZ, llvm::SPCC::REG_NZ, llvm::SPCC::REG_Z, llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, and llvm::ISD::SETNE.

Referenced by LowerBR_CC(), and LowerSELECT_CC().

isAnyArgRegReserved()

LookThroughSetCC()

LowerATOMIC_LOAD_STORE()

LowerBR_CC()

Definition at line 2608 of file SparcISelLowering.cpp.

References assert(), llvm::cast(), FPCondCCodeToFCC(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), IntCondCCodeToICC(), intCondCCodeToRcond(), is64Bit(), llvm::isNullConstant(), llvm::ISD::isUnsignedIntSetCC(), LHS, LookThroughSetCC(), llvm::SparcTargetLowering::LowerF128Compare(), Opc, and RHS.

Referenced by llvm::SparcTargetLowering::LowerOperation().

LowerDYNAMIC_STACKALLOC()

Definition at line 2757 of file SparcISelLowering.cpp.

References AbstractManglingParser< Derived, Alloc >::Ops, llvm::ISD::ADD, llvm::ISD::AND, llvm::cast(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getCopyToReg(), llvm::SelectionDAG::getMergeValues(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getSignedConstant(), llvm::SparcSubtarget::getStackPointerBias(), Size, SPReg, and llvm::ISD::SUB.

Referenced by llvm::SparcTargetLowering::LowerOperation().

LowerF128_FPEXTEND()

LowerF128_FPROUND()

LowerF128Load()

Definition at line 2944 of file SparcISelLowering.cpp.

References AbstractManglingParser< Derived, Alloc >::Ops, llvm::ISD::ADD, assert(), llvm::cast(), llvm::commonAlignment(), llvm::MemSDNode::getBaseAlign(), llvm::LoadSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getMergeValues(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::LoadSDNode::getOffset(), llvm::MemSDNode::getPointerInfo(), llvm::SelectionDAG::getTargetConstant(), llvm::SDValue::getValueType(), llvm::MachinePointerInfo::getWithOffset(), llvm::SDValue::isUndef(), SDValue(), and llvm::ISD::TokenFactor.

Referenced by LowerLOAD().

LowerF128Store()

Definition at line 2997 of file SparcISelLowering.cpp.

References llvm::ISD::ADD, assert(), llvm::cast(), llvm::commonAlignment(), llvm::MemSDNode::getBaseAlign(), llvm::StoreSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getNode(), llvm::StoreSDNode::getOffset(), llvm::MemSDNode::getPointerInfo(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTargetConstant(), llvm::StoreSDNode::getValue(), llvm::SDValue::getValueType(), llvm::MachinePointerInfo::getWithOffset(), llvm::SDValue::isUndef(), and llvm::ISD::TokenFactor.

Referenced by LowerSTORE().

LowerF64Op()

LowerFNEGorFABS()

LowerFP_TO_SINT()

LowerFP_TO_UINT()

LowerFRAMEADDR()

LowerLOAD()

LowerRETURNADDR()

Definition at line 2878 of file SparcISelLowering.cpp.

References llvm::ISD::ADD, llvm::MachineFunction::addLiveIn(), llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getDataLayout(), llvm::SelectionDAG::getEntryNode(), getFRAMEADDR(), llvm::MachineFunction::getFrameInfo(), llvm::SelectionDAG::getIntPtrConstant(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineFunction(), llvm::SelectionDAG::getNode(), llvm::TargetLoweringBase::getPointerTy(), llvm::TargetLoweringBase::getRegClassFor(), llvm::Offset, and llvm::MachineFrameInfo::setReturnAddressIsTaken().

Referenced by llvm::SparcTargetLowering::LowerOperation().

LowerSELECT_CC()

Definition at line 2659 of file SparcISelLowering.cpp.

References assert(), llvm::cast(), FPCondCCodeToFCC(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), IntCondCCodeToICC(), intCondCCodeToRcond(), is64Bit(), llvm::isNullConstant(), llvm::ISD::isUnsignedIntSetCC(), LHS, LookThroughSetCC(), llvm::SparcTargetLowering::LowerF128Compare(), Opc, and RHS.

Referenced by llvm::SparcTargetLowering::LowerOperation().

LowerSINT_TO_FP()

LowerSTORE()

Definition at line 3033 of file SparcISelLowering.cpp.

References llvm::cast(), llvm::MemSDNode::getAAInfo(), llvm::MemSDNode::getBaseAlign(), llvm::StoreSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::MachineMemOperand::getFlags(), llvm::MemSDNode::getMemOperand(), llvm::MemSDNode::getMemoryVT(), llvm::SelectionDAG::getNode(), llvm::MemSDNode::getPointerInfo(), llvm::SelectionDAG::getStore(), llvm::StoreSDNode::getValue(), LowerF128Store(), and SDValue().

LowerUINT_TO_FP()

LowerVAARG()

Definition at line 2733 of file SparcISelLowering.cpp.

References llvm::ISD::ADD, llvm::cast(), DL, llvm::EVT::getFixedSizeInBits(), llvm::SelectionDAG::getIntPtrConstant(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getNode(), llvm::EVT::getSizeInBits(), llvm::SelectionDAG::getStore(), llvm::SDValue::getValue(), and llvm::SDValue::getValueType().

Referenced by llvm::SparcTargetLowering::LowerOperation().

LowerVASTART()

Definition at line 2713 of file SparcISelLowering.cpp.

References llvm::ISD::ADD, llvm::cast(), DL, llvm::SelectionDAG::getDataLayout(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), llvm::SelectionDAG::getIntPtrConstant(), llvm::SelectionDAG::getMachineFunction(), llvm::SelectionDAG::getNode(), llvm::TargetLoweringBase::getPointerTy(), llvm::SelectionDAG::getRegister(), llvm::SelectionDAG::getStore(), llvm::SparcMachineFunctionInfo::getVarArgsFrameOffset(), llvm::Offset, and llvm::MachineFrameInfo::setFrameAddressIsTaken().

RetCC_Sparc64_Full()

RetCC_Sparc64_Half()

toCallerWindow()