LLVM 20.0.0git
|
#include "Target/Hexagon/HexagonISelDAGToDAG.h"
Public Member Functions | |
HexagonDAGToDAGISel ()=delete | |
HexagonDAGToDAGISel (HexagonTargetMachine &tm, CodeGenOptLevel OptLevel) | |
bool | runOnMachineFunction (MachineFunction &MF) override |
bool | ComplexPatternFuncMutatesDAG () const override |
Return true if complex patterns for this target can mutate the DAG. | |
void | PreprocessISelDAG () override |
PreprocessISelDAG - This hook allows targets to hack on the graph before instruction selection starts. | |
void | emitFunctionEntryCode () override |
void | Select (SDNode *N) override |
Main hook for targets to transform nodes into machine nodes. | |
bool | SelectAddrGA (SDValue &N, SDValue &R) |
bool | SelectAddrGP (SDValue &N, SDValue &R) |
bool | SelectAnyImm (SDValue &N, SDValue &R) |
bool | SelectAnyInt (SDValue &N, SDValue &R) |
bool | SelectAnyImmediate (SDValue &N, SDValue &R, Align Alignment) |
bool | SelectGlobalAddress (SDValue &N, SDValue &R, bool UseGP, Align Alignment) |
bool | SelectAddrFI (SDValue &N, SDValue &R) |
bool | DetectUseSxtw (SDValue &N, SDValue &R) |
bool | SelectAnyImm0 (SDValue &N, SDValue &R) |
bool | SelectAnyImm1 (SDValue &N, SDValue &R) |
bool | SelectAnyImm2 (SDValue &N, SDValue &R) |
bool | SelectAnyImm3 (SDValue &N, SDValue &R) |
MachineSDNode * | LoadInstrForLoadIntrinsic (SDNode *IntN) |
SDNode * | StoreInstrForLoadIntrinsic (MachineSDNode *LoadN, SDNode *IntN) |
void | SelectFrameIndex (SDNode *N) |
bool | SelectInlineAsmMemoryOperand (const SDValue &Op, InlineAsm::ConstraintCode ConstraintID, std::vector< SDValue > &OutOps) override |
SelectInlineAsmMemoryOperand - Implement addressing mode selection for inline asm expressions. | |
bool | tryLoadOfLoadIntrinsic (LoadSDNode *N) |
bool | SelectBrevLdIntrinsic (SDNode *IntN) |
bool | SelectNewCircIntrinsic (SDNode *IntN) |
Generate a machine instruction node for the new circular buffer intrinsics. | |
void | SelectLoad (SDNode *N) |
void | SelectIndexedLoad (LoadSDNode *LD, const SDLoc &dl) |
void | SelectIndexedStore (StoreSDNode *ST, const SDLoc &dl) |
void | SelectStore (SDNode *N) |
void | SelectSHL (SDNode *N) |
void | SelectIntrinsicWChain (SDNode *N) |
void | SelectIntrinsicWOChain (SDNode *N) |
void | SelectExtractSubvector (SDNode *N) |
void | SelectConstant (SDNode *N) |
void | SelectConstantFP (SDNode *N) |
void | SelectV65Gather (SDNode *N) |
void | SelectV65GatherPred (SDNode *N) |
void | SelectHVXDualOutput (SDNode *N) |
void | SelectAddSubCarry (SDNode *N) |
void | SelectVAlign (SDNode *N) |
void | SelectVAlignAddr (SDNode *N) |
void | SelectTypecast (SDNode *N) |
void | SelectP2D (SDNode *N) |
void | SelectD2P (SDNode *N) |
void | SelectQ2V (SDNode *N) |
void | SelectV2Q (SDNode *N) |
void | SelectFDiv (SDNode *N) |
void | FDiv (SDNode *N) |
void | FastFDiv (SDNode *N) |
Public Member Functions inherited from llvm::SelectionDAGISel | |
SelectionDAGISel (TargetMachine &tm, CodeGenOptLevel OL=CodeGenOptLevel::Default) | |
virtual | ~SelectionDAGISel () |
const TargetLowering * | getTargetLowering () const |
void | initializeAnalysisResults (MachineFunctionAnalysisManager &MFAM) |
void | initializeAnalysisResults (MachineFunctionPass &MFP) |
virtual bool | runOnMachineFunction (MachineFunction &mf) |
virtual void | emitFunctionEntryCode () |
virtual void | PreprocessISelDAG () |
PreprocessISelDAG - This hook allows targets to hack on the graph before instruction selection starts. | |
virtual void | PostprocessISelDAG () |
PostprocessISelDAG() - This hook allows the target to hack on the graph right after selection. | |
virtual void | Select (SDNode *N)=0 |
Main hook for targets to transform nodes into machine nodes. | |
virtual bool | SelectInlineAsmMemoryOperand (const SDValue &Op, InlineAsm::ConstraintCode ConstraintID, std::vector< SDValue > &OutOps) |
SelectInlineAsmMemoryOperand - Select the specified address as a target addressing mode, according to the specified constraint. | |
virtual bool | IsProfitableToFold (SDValue N, SDNode *U, SDNode *Root) const |
IsProfitableToFold - Returns true if it's profitable to fold the specific operand node N of U during instruction selection that starts at Root. | |
bool | CheckAndMask (SDValue LHS, ConstantSDNode *RHS, int64_t DesiredMaskS) const |
CheckAndMask - The isel is trying to match something like (and X, 255). | |
bool | CheckOrMask (SDValue LHS, ConstantSDNode *RHS, int64_t DesiredMaskS) const |
CheckOrMask - The isel is trying to match something like (or X, 255). | |
virtual bool | CheckPatternPredicate (unsigned PredNo) const |
CheckPatternPredicate - This function is generated by tblgen in the target. | |
virtual bool | CheckNodePredicate (SDNode *N, unsigned PredNo) const |
CheckNodePredicate - This function is generated by tblgen in the target. | |
virtual bool | CheckNodePredicateWithOperands (SDNode *N, unsigned PredNo, const SmallVectorImpl< SDValue > &Operands) const |
CheckNodePredicateWithOperands - This function is generated by tblgen in the target. | |
virtual bool | CheckComplexPattern (SDNode *Root, SDNode *Parent, SDValue N, unsigned PatternNo, SmallVectorImpl< std::pair< SDValue, SDNode * > > &Result) |
virtual SDValue | RunSDNodeXForm (SDValue V, unsigned XFormNo) |
void | SelectCodeCommon (SDNode *NodeToMatch, const unsigned char *MatcherTable, unsigned TableSize) |
virtual bool | ComplexPatternFuncMutatesDAG () const |
Return true if complex patterns for this target can mutate the DAG. | |
bool | mayRaiseFPException (SDNode *Node) const |
Return whether the node may raise an FP exception. | |
bool | isOrEquivalentToAdd (const SDNode *N) const |
Friends | |
struct | HvxSelector |
Definition at line 28 of file HexagonISelDAGToDAG.h.
|
delete |
|
inlineexplicit |
Definition at line 36 of file HexagonISelDAGToDAG.h.
|
inlineoverridevirtual |
Return true if complex patterns for this target can mutate the DAG.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 51 of file HexagonISelDAGToDAG.h.
Definition at line 1586 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), llvm::ISD::LOAD, N, llvm::ISD::SEXTLOAD, llvm::ISD::SIGN_EXTEND, llvm::ISD::SIGN_EXTEND_INREG, and llvm::ISD::SRA.
|
overridevirtual |
Reimplemented from llvm::SelectionDAGISel.
Definition at line 1416 of file HexagonISelDAGToDAG.cpp.
References llvm::MachineInstrBuilder::addImm(), assert(), llvm::BuildMI(), llvm::MachineFunction::front(), llvm::HexagonRegisterInfo::getCalleeSavedRegs(), llvm::MachineFunction::getFrameInfo(), llvm::HexagonSubtarget::getFrameLowering(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getMaxAlign(), llvm::HexagonSubtarget::getRegisterInfo(), llvm::HexagonRegisterInfo::getReservedRegs(), llvm::MachineFunction::getSubtarget(), llvm::Register::isValid(), llvm::SelectionDAGISel::MF, llvm::Reserved, and llvm::Align::value().
void HexagonDAGToDAGISel::FastFDiv | ( | SDNode * | N | ) |
Definition at line 964 of file HexagonISelDAGToDAG.cpp.
References llvm::CallingConv::C, llvm::SelectionDAGISel::CurDAG, D, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getVTList(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by SelectFDiv().
void HexagonDAGToDAGISel::FDiv | ( | SDNode * | N | ) |
Definition at line 913 of file HexagonISelDAGToDAG.cpp.
References llvm::CallingConv::C, llvm::SelectionDAGISel::CurDAG, D, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getVTList(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by SelectFDiv().
MachineSDNode * HexagonDAGToDAGISel::LoadInstrForLoadIntrinsic | ( | SDNode * | IntN | ) |
Definition at line 195 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SDNode::getConstantOperandVal(), llvm::SelectionDAG::getMachineNode(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::SelectionDAG::getSignedTargetConstant(), I, and llvm::ISD::INTRINSIC_W_CHAIN.
Referenced by SelectIntrinsicWChain(), and tryLoadOfLoadIntrinsic().
|
overridevirtual |
PreprocessISelDAG - This hook allows targets to hack on the graph before instruction selection starts.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 1356 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAG::allnodes(), llvm::SelectionDAG::allnodes_size(), llvm::SelectionDAGISel::CurDAG, llvm::dbgs(), DEBUG_WITH_TYPE, llvm::SelectionDAG::dump(), EnableAddressRebalancing, N, and llvm::HexagonSubtarget::useHVXOps().
|
inlineoverridevirtual |
Reimplemented from llvm::SelectionDAGISel.
Definition at line 41 of file HexagonISelDAGToDAG.h.
References llvm::HexagonSubtarget::getInstrInfo(), llvm::HexagonSubtarget::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::SelectionDAGISel::MF, and llvm::SelectionDAGISel::runOnMachineFunction().
|
overridevirtual |
Main hook for targets to transform nodes into machine nodes.
Implements llvm::SelectionDAGISel.
Definition at line 1004 of file HexagonISelDAGToDAG.cpp.
References llvm::HexagonISD::ADDC, llvm::ISD::Constant, llvm::ISD::ConstantFP, llvm::HexagonISD::D2P, llvm::ISD::EXTRACT_SUBVECTOR, llvm::ISD::FDIV, llvm::ISD::FrameIndex, I, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, llvm::HexagonSubtarget::isHVXVectorType(), llvm::ISD::LOAD, N, llvm::HexagonISD::P2D, llvm::HexagonISD::Q2V, SelectAddSubCarry(), SelectConstant(), SelectConstantFP(), SelectD2P(), SelectExtractSubvector(), SelectFDiv(), SelectFrameIndex(), SelectIntrinsicWChain(), SelectIntrinsicWOChain(), SelectLoad(), SelectP2D(), SelectQ2V(), SelectSHL(), SelectStore(), SelectTypecast(), SelectV2Q(), SelectVAlign(), SelectVAlignAddr(), llvm::ISD::SHL, llvm::ISD::STORE, llvm::HexagonISD::SUBC, llvm::HexagonISD::TYPECAST, llvm::HexagonSubtarget::useHVXOps(), llvm::HexagonISD::V2Q, llvm::HexagonISD::VALIGN, llvm::HexagonISD::VALIGNADDR, llvm::ISD::VECTOR_SHUFFLE, and llvm::HexagonISD::VROR.
Definition at line 1454 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::ISD::FrameIndex, llvm::MachineFunction::getFrameInfo(), llvm::HexagonSubtarget::getFrameLowering(), llvm::SelectionDAG::getTargetFrameIndex(), llvm::MachineFrameInfo::isFixedObjectIndex(), llvm::SelectionDAGISel::MF, and N.
Referenced by SelectInlineAsmMemoryOperand().
Definition at line 1466 of file HexagonISelDAGToDAG.cpp.
References N, and SelectGlobalAddress().
Definition at line 1470 of file HexagonISelDAGToDAG.cpp.
References N, and SelectGlobalAddress().
void HexagonDAGToDAGISel::SelectAddSubCarry | ( | SDNode * | N | ) |
Definition at line 791 of file HexagonISelDAGToDAG.cpp.
References llvm::HexagonISD::ADDC, llvm::CallingConv::C, llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
Definition at line 1474 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1478 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1481 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1484 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1487 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1500 of file HexagonISelDAGToDAG.cpp.
References llvm::ISD::BlockAddress, llvm::ISD::Constant, llvm::HexagonISD::CP, llvm::SelectionDAGISel::CurDAG, llvm::ISD::ExternalSymbol, llvm::getOffset(), llvm::SelectionDAG::getTargetConstant(), llvm::isAligned(), llvm::HexagonISD::JT, N, and SelectGlobalAddress().
Referenced by SelectAnyImm(), SelectAnyImm0(), SelectAnyImm1(), SelectAnyImm2(), and SelectAnyImm3().
Definition at line 1491 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getTargetConstant(), and N.
Definition at line 329 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SDNode::getConstantOperandVal(), llvm::SelectionDAG::getMachineNode(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::ISD::INTRINSIC_W_CHAIN, llvm::SelectionDAG::RemoveDeadNode(), llvm::SelectionDAGISel::ReplaceUses(), and llvm::SelectionDAG::setNodeMemRefs().
Referenced by SelectIntrinsicWChain().
void HexagonDAGToDAGISel::SelectConstant | ( | SDNode * | N | ) |
Definition at line 749 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
void HexagonDAGToDAGISel::SelectConstantFP | ( | SDNode * | N | ) |
Definition at line 728 of file HexagonISelDAGToDAG.cpp.
References A, llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
void HexagonDAGToDAGISel::SelectD2P | ( | SDNode * | N | ) |
Definition at line 877 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
void HexagonDAGToDAGISel::SelectExtractSubvector | ( | SDNode * | N | ) |
Definition at line 707 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::SelectionDAGISel::CurDAG, llvm::EVT::getSimpleVT(), llvm::MVT::getSizeInBits(), llvm::SelectionDAG::getTargetExtractSubreg(), llvm::SDValue::getValueType(), llvm::MVT::getVectorElementType(), llvm::MVT::getVectorNumElements(), Idx, N, llvm::SelectionDAGISel::ReplaceNode(), and SubReg.
Referenced by Select().
void HexagonDAGToDAGISel::SelectFDiv | ( | SDNode * | N | ) |
Definition at line 997 of file HexagonISelDAGToDAG.cpp.
References FastFDiv(), FDiv(), and N.
Referenced by Select().
void HexagonDAGToDAGISel::SelectFrameIndex | ( | SDNode * | N | ) |
Definition at line 762 of file HexagonISelDAGToDAG.cpp.
References CH, llvm::SelectionDAGISel::CurDAG, DL, llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getEntryNode(), llvm::MachineFunction::getFrameInfo(), llvm::HexagonSubtarget::getFrameLowering(), llvm::MachineFunction::getInfo(), llvm::SelectionDAG::getMachineNode(), llvm::MachineFrameInfo::getMaxAlign(), llvm::TargetFrameLowering::getStackAlign(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getTargetFrameIndex(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::SelectionDAGISel::MF, N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
bool HexagonDAGToDAGISel::SelectGlobalAddress | ( | SDValue & | N, |
SDValue & | R, | ||
bool | UseGP, | ||
Align | Alignment | ||
) |
Definition at line 1541 of file HexagonISelDAGToDAG.cpp.
References llvm::ISD::ADD, Addr, llvm::HexagonISD::CONST32, llvm::HexagonISD::CONST32_GP, llvm::HexagonISD::CP, llvm::SelectionDAGISel::CurDAG, llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SelectionDAG::getTargetGlobalAddress(), llvm::isAligned(), llvm::HexagonISD::JT, N, and llvm::ISD::TargetGlobalAddress.
Referenced by SelectAddrGA(), SelectAddrGP(), and SelectAnyImmediate().
void HexagonDAGToDAGISel::SelectHVXDualOutput | ( | SDNode * | N | ) |
Definition at line 2957 of file HexagonISelDAGToDAGHVX.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getVTList(), llvm_unreachable, N, llvm::SelectionDAG::RemoveDeadNode(), and llvm::SelectionDAGISel::ReplaceUses().
Referenced by SelectIntrinsicWOChain().
void HexagonDAGToDAGISel::SelectIndexedLoad | ( | LoadSDNode * | LD, |
const SDLoc & | dl | ||
) |
Definition at line 76 of file HexagonISelDAGToDAG.cpp.
References A, assert(), llvm::sampleprof::Base, llvm::ISD::EXTLOAD, From, llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), llvm::EVT::isSimple(), llvm_unreachable, N, llvm::ISD::NON_EXTLOAD, llvm::Offset, llvm::ISD::SEXTLOAD, llvm::MVT::SimpleTy, and llvm::ISD::ZEXTLOAD.
Referenced by SelectLoad().
void HexagonDAGToDAGISel::SelectIndexedStore | ( | StoreSDNode * | ST, |
const SDLoc & | dl | ||
) |
Definition at line 474 of file HexagonISelDAGToDAG.cpp.
References A, assert(), llvm::sampleprof::Base, llvm::SelectionDAGISel::CurDAG, From, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getSignedTargetConstant(), llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getTargetExtractSubreg(), llvm::EVT::isSimple(), llvm::HexagonInstrInfo::isValidAutoIncImm(), llvm_unreachable, llvm::Offset, llvm::SelectionDAG::RemoveDeadNode(), llvm::SelectionDAGISel::ReplaceUses(), llvm::SelectionDAG::setNodeMemRefs(), and llvm::MVT::SimpleTy.
Referenced by SelectStore().
|
overridevirtual |
SelectInlineAsmMemoryOperand - Implement addressing mode selection for inline asm expressions.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 1056 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getTargetConstant(), llvm::InlineAsm::m, llvm::InlineAsm::o, SelectAddrFI(), and llvm::InlineAsm::v.
void HexagonDAGToDAGISel::SelectIntrinsicWChain | ( | SDNode * | N | ) |
Definition at line 636 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, LoadInstrForLoadIntrinsic(), N, llvm::SelectionDAG::RemoveDeadNode(), SelectBrevLdIntrinsic(), SelectNewCircIntrinsic(), SelectV65Gather(), SelectV65GatherPred(), and StoreInstrForLoadIntrinsic().
Referenced by Select().
void HexagonDAGToDAGISel::SelectIntrinsicWOChain | ( | SDNode * | N | ) |
Definition at line 673 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getNode(), N, llvm::SelectionDAGISel::ReplaceNode(), and SelectHVXDualOutput().
Referenced by Select().
void HexagonDAGToDAGISel::SelectLoad | ( | SDNode * | N | ) |
Definition at line 456 of file HexagonISelDAGToDAG.cpp.
References N, SelectIndexedLoad(), tryLoadOfLoadIntrinsic(), and llvm::ISD::UNINDEXED.
Referenced by Select().
Generate a machine instruction node for the new circular buffer intrinsics.
The new versions use a CSx register instead of the K field.
Definition at line 370 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, DL, llvm::SDNode::getConstantOperandVal(), llvm::SelectionDAG::getMachineNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::SelectionDAG::getTargetConstant(), I, llvm::ISD::INTRINSIC_W_CHAIN, llvm::SelectionDAG::RemoveDeadNode(), and llvm::SelectionDAGISel::ReplaceUses().
Referenced by SelectIntrinsicWChain().
void HexagonDAGToDAGISel::SelectP2D | ( | SDNode * | N | ) |
Definition at line 870 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
void HexagonDAGToDAGISel::SelectQ2V | ( | SDNode * | N | ) |
Definition at line 900 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::CallingConv::C, llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getSignedTargetConstant(), llvm::MVT::getSizeInBits(), llvm::HexagonSubtarget::getVectorLength(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
void HexagonDAGToDAGISel::SelectSHL | ( | SDNode * | N | ) |
Definition at line 579 of file HexagonISelDAGToDAG.cpp.
References llvm::CallingConv::C, llvm::ISD::Constant, llvm::SelectionDAGISel::CurDAG, llvm::Default, llvm::SelectionDAG::getMachineNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SelectionDAG::getTargetConstant(), llvm::ISD::MUL, N, llvm::SelectionDAGISel::ReplaceNode(), llvm::ISD::SHL, and llvm::ISD::SUB.
Referenced by Select().
void HexagonDAGToDAGISel::SelectStore | ( | SDNode * | N | ) |
Definition at line 565 of file HexagonISelDAGToDAG.cpp.
References N, SelectIndexedStore(), and llvm::ISD::UNINDEXED.
Referenced by Select(), and StoreInstrForLoadIntrinsic().
void HexagonDAGToDAGISel::SelectTypecast | ( | SDNode * | N | ) |
Definition at line 862 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getVTList(), llvm::SelectionDAG::MorphNodeTo(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
void HexagonDAGToDAGISel::SelectV2Q | ( | SDNode * | N | ) |
Definition at line 886 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::CallingConv::C, llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getSignedTargetConstant(), llvm::MVT::getSizeInBits(), llvm::HexagonSubtarget::getVectorLength(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
void HexagonDAGToDAGISel::SelectV65Gather | ( | SDNode * | N | ) |
Definition at line 2919 of file HexagonISelDAGToDAGHVX.cpp.
References llvm::Address, llvm::sampleprof::Base, llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getVTList(), llvm_unreachable, N, llvm::Offset, llvm::SelectionDAGISel::ReplaceNode(), and llvm::SelectionDAG::setNodeMemRefs().
Referenced by SelectIntrinsicWChain().
void HexagonDAGToDAGISel::SelectV65GatherPred | ( | SDNode * | N | ) |
Definition at line 2879 of file HexagonISelDAGToDAGHVX.cpp.
References llvm::Address, llvm::sampleprof::Base, llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getVTList(), llvm_unreachable, N, llvm::Offset, llvm::SelectionDAGISel::ReplaceNode(), and llvm::SelectionDAG::setNodeMemRefs().
Referenced by SelectIntrinsicWChain().
void HexagonDAGToDAGISel::SelectVAlign | ( | SDNode * | N | ) |
Definition at line 800 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::CallingConv::C, llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SDValue::getNode(), llvm::MVT::getSizeInBits(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getTargetExtractSubreg(), llvm::HexagonSubtarget::isHVXVectorType(), llvm::M0(), llvm::M1(), N, llvm::SelectionDAGISel::ReplaceNode(), and llvm::HexagonSubtarget::useCompound().
Referenced by Select().
void HexagonDAGToDAGISel::SelectVAlignAddr | ( | SDNode * | N | ) |
Definition at line 847 of file HexagonISelDAGToDAG.cpp.
References A, llvm::SelectionDAGISel::AA, assert(), llvm::SelectionDAGISel::CurDAG, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), llvm::isPowerOf2_32(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
SDNode * HexagonDAGToDAGISel::StoreInstrForLoadIntrinsic | ( | MachineSDNode * | LoadN, |
SDNode * | IntN | ||
) |
Definition at line 227 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, F, llvm::MVT::getIntegerVT(), llvm::SDNode::getMachineOpcode(), llvm::SDValue::getNode(), llvm::SDNode::getOperand(), llvm::SelectionDAG::getStore(), llvm::SelectionDAG::getTruncStore(), llvm::HandleSDNode::getValue(), llvm::HexagonII::MemAccesSizeMask, llvm::HexagonII::MemAccessSizePos, llvm::SelectionDAGISel::ReplaceUses(), SelectStore(), and Size.
Referenced by SelectIntrinsicWChain(), and tryLoadOfLoadIntrinsic().
bool HexagonDAGToDAGISel::tryLoadOfLoadIntrinsic | ( | LoadSDNode * | N | ) |
Definition at line 262 of file HexagonISelDAGToDAG.cpp.
References llvm::CallingConv::C, llvm::SelectionDAGISel::CurDAG, F, llvm::SDValue::getNode(), llvm::ISD::INTRINSIC_W_CHAIN, LoadInstrForLoadIntrinsic(), N, llvm::ISD::NON_EXTLOAD, llvm::SelectionDAG::RemoveDeadNode(), llvm::SelectionDAGISel::ReplaceUses(), llvm::ISD::SEXTLOAD, StoreInstrForLoadIntrinsic(), and llvm::ISD::ZEXTLOAD.
Referenced by SelectLoad().
|
friend |
Definition at line 124 of file HexagonISelDAGToDAG.h.