|
LLVM 24.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 | DetectUseSxth (SDValue &N, SDValue &R) |
| bool | DetectUseZxth (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) |
| bool | isIEEEHVXIntrinsic (unsigned) |
| void | translateIEEEIntrinsicToQFloat (SDNode *N, unsigned &Opcode) |
| Public Member Functions inherited from llvm::SelectionDAGISel | |
| SelectionDAGISel (TargetMachine &tm, CodeGenOptLevel OL=CodeGenOptLevel::Default) | |
| virtual | ~SelectionDAGISel () |
| BatchAAResults * | getBatchAA () const |
| Returns a (possibly null) pointer to the current BatchAAResults. | |
| const TargetLowering * | getTargetLowering () const |
| void | initializeAnalysisResults (MachineFunctionAnalysisManager &MFAM) |
| void | initializeAnalysisResults (MachineFunctionPass &MFP) |
| virtual void | PostprocessISelDAG () |
| PostprocessISelDAG() - This hook allows the target to hack on the graph right after selection. | |
| 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 (SDValue Op, unsigned PredNo) const |
| CheckNodePredicate - This function is generated by tblgen in the target. | |
| virtual bool | CheckNodePredicateWithOperands (SDValue Op, unsigned PredNo, ArrayRef< 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) |
| virtual MVT | getValueTypeForHwMode (unsigned Index) const |
| void | SelectCodeCommon (SDNode *NodeToMatch, const uint8_t *MatcherTable, unsigned TableSize, const uint8_t *OperandLists) |
| bool | mayRaiseFPException (SDNode *Node) const |
| Return whether the node may raise an FP exception. | |
| bool | isOrEquivalentToAdd (const SDNode *N) const |
| bool | selectShiftAmountMask (SDValue N, unsigned ShiftWidth, SDValue &ShAmt) const |
Look through a mask on the amount N of a shift that reads only the low Log2(ShiftWidth) bits of its amount, as many shift instructions do. | |
Friends | |
| struct | HvxSelector |
Definition at line 28 of file HexagonISelDAGToDAG.h.
|
delete |
Referenced by SelectIndexedLoad().
|
inlineexplicit |
Definition at line 36 of file HexagonISelDAGToDAG.h.
References llvm::SelectionDAGISel::OptLevel, and llvm::SelectionDAGISel::SelectionDAGISel().
|
inlineoverridevirtual |
Return true if complex patterns for this target can mutate the DAG.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 50 of file HexagonISelDAGToDAG.h.
Definition at line 1681 of file HexagonISelDAGToDAG.cpp.
References llvm::ISD::AssertSext, llvm::cast(), llvm::EVT::getVectorElementType(), llvm::EVT::isVector(), llvm::ISD::LOAD, N, Opc, llvm::ISD::SEXTLOAD, llvm::ISD::SIGN_EXTEND, llvm::ISD::SIGN_EXTEND_INREG, and T.
Definition at line 1595 of file HexagonISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, assert(), llvm::ISD::AssertSext, llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), llvm::ISD::LOAD, N, Opc, SDValue(), llvm::ISD::SEXTLOAD, llvm::ISD::SIGN_EXTEND, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SRA, and T.
Definition at line 1787 of file HexagonISelDAGToDAG.cpp.
References llvm::ISD::AND, llvm::ISD::AssertZext, llvm::ISD::BUILD_VECTOR, llvm::cast(), getConstantSplatValue(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), llvm::EVT::getVectorElementType(), llvm::EVT::isVector(), llvm::ISD::LOAD, N, Opc, llvm::ISD::SPLAT_VECTOR, llvm::ISD::SRL, T, llvm::ISD::ZERO_EXTEND, and llvm::ISD::ZEXTLOAD.
|
overridevirtual |
Reimplemented from llvm::SelectionDAGISel.
Definition at line 1450 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::HexagonSubtarget::getFrameLowering(), llvm::Register::isValid(), and llvm::SelectionDAGISel::MF.
| void HexagonDAGToDAGISel::FastFDiv | ( | SDNode * | N | ) |
Definition at line 995 of file HexagonISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, C(), llvm::SelectionDAGISel::CurDAG, D(), N, llvm::SelectionDAGISel::ReplaceNode(), and SDValue().
Referenced by SelectFDiv().
| void HexagonDAGToDAGISel::FDiv | ( | SDNode * | N | ) |
Definition at line 944 of file HexagonISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, C(), llvm::SelectionDAGISel::CurDAG, D(), N, llvm::SelectionDAGISel::ReplaceNode(), and SDValue().
Referenced by SelectFDiv().
Definition at line 3012 of file HexagonISelDAGToDAGHVX.cpp.
Referenced by SelectIntrinsicWOChain().
| MachineSDNode * HexagonDAGToDAGISel::LoadInstrForLoadIntrinsic | ( | SDNode * | IntN | ) |
Definition at line 195 of file HexagonISelDAGToDAG.cpp.
References llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::SDNode::getConstantOperandVal(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), 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 1390 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::dbgs(), DEBUG_WITH_TYPE, EnableAddressRebalancing, N, and T.
|
inlineoverridevirtual |
Reimplemented from llvm::SelectionDAGISel.
Definition at line 41 of file HexagonISelDAGToDAG.h.
References llvm::HexagonSubtarget::getInstrInfo(), llvm::HexagonInstrInfo::getRegisterInfo(), llvm::SelectionDAGISel::MF, and llvm::SelectionDAGISel::runOnMachineFunction().
|
overridevirtual |
Main hook for targets to transform nodes into machine nodes.
Implements llvm::SelectionDAGISel.
Definition at line 1035 of file HexagonISelDAGToDAG.cpp.
References 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::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::TYPECAST, llvm::HexagonISD::V2Q, llvm::ISD::VECTOR_SHUFFLE, and llvm::HexagonISD::VROR.
Definition at line 1463 of file HexagonISelDAGToDAG.cpp.
References llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::ISD::FrameIndex, llvm::MachineFrameInfo::isFixedObjectIndex(), llvm::SelectionDAGISel::MF, and N.
Referenced by SelectInlineAsmMemoryOperand().
Definition at line 1475 of file HexagonISelDAGToDAG.cpp.
References N, and SelectGlobalAddress().
Definition at line 1479 of file HexagonISelDAGToDAG.cpp.
References N, and SelectGlobalAddress().
| void HexagonDAGToDAGISel::SelectAddSubCarry | ( | SDNode * | N | ) |
Definition at line 822 of file HexagonISelDAGToDAG.cpp.
References C(), llvm::SelectionDAGISel::CurDAG, N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
Definition at line 1483 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1487 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1490 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1493 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1496 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1509 of file HexagonISelDAGToDAG.cpp.
References llvm::ISD::BlockAddress, llvm::cast(), llvm::ISD::Constant, llvm::SelectionDAGISel::CurDAG, llvm::ISD::ExternalSymbol, llvm::getOffset(), llvm::isAligned(), N, and SelectGlobalAddress().
Referenced by SelectAnyImm(), SelectAnyImm0(), SelectAnyImm1(), SelectAnyImm2(), and SelectAnyImm3().
Definition at line 1500 of file HexagonISelDAGToDAG.cpp.
References llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::isa(), N, and T.
Definition at line 329 of file HexagonISelDAGToDAG.cpp.
References llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::SDNode::getConstantOperandVal(), llvm::SDNode::getOpcode(), llvm::ISD::INTRINSIC_W_CHAIN, llvm::SelectionDAGISel::ReplaceUses(), and SDValue().
Referenced by SelectIntrinsicWChain().
| void HexagonDAGToDAGISel::SelectConstant | ( | SDNode * | N | ) |
Definition at line 779 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, N, Opc, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
| void HexagonDAGToDAGISel::SelectConstantFP | ( | SDNode * | N | ) |
Definition at line 758 of file HexagonISelDAGToDAG.cpp.
References A(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
| void HexagonDAGToDAGISel::SelectD2P | ( | SDNode * | N | ) |
Definition at line 908 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, N, llvm::SelectionDAGISel::ReplaceNode(), T, and Zero.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectExtractSubvector | ( | SDNode * | N | ) |
Definition at line 737 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::SelectionDAGISel::CurDAG, llvm::SDValue::getNode(), llvm::EVT::getSimpleVT(), llvm::MVT::getSizeInBits(), llvm::SDValue::getValueType(), llvm::MVT::getVectorElementType(), llvm::MVT::getVectorNumElements(), N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
| void HexagonDAGToDAGISel::SelectFDiv | ( | SDNode * | N | ) |
Definition at line 1028 of file HexagonISelDAGToDAG.cpp.
References FastFDiv(), FDiv(), and N.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectFrameIndex | ( | SDNode * | N | ) |
Definition at line 792 of file HexagonISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, assert(), llvm::cast(), CH, llvm::SelectionDAGISel::CurDAG, DL, llvm::MachineFrameInfo::getMaxAlign(), llvm::TargetFrameLowering::getStackAlign(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::SelectionDAGISel::MF, N, llvm::SelectionDAGISel::ReplaceNode(), and Zero.
Referenced by Select().
| bool HexagonDAGToDAGISel::SelectGlobalAddress | ( | SDValue & | N, |
| SDValue & | R, | ||
| bool | UseGP, | ||
| Align | Alignment ) |
Definition at line 1550 of file HexagonISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::isAligned(), N, and llvm::ISD::TargetGlobalAddress.
Referenced by SelectAddrGA(), SelectAddrGP(), and SelectAnyImmediate().
| void HexagonDAGToDAGISel::SelectHVXDualOutput | ( | SDNode * | N | ) |
Definition at line 2970 of file HexagonISelDAGToDAGHVX.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::SelectionDAGISel::CurDAG, llvm_unreachable, N, llvm::SelectionDAGISel::ReplaceUses(), and SDValue().
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::cast(), const, llvm::SelectionDAGISel::CurDAG, llvm::ISD::EXTLOAD, llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), HexagonDAGToDAGISel(), llvm::EVT::isSimple(), llvm_unreachable, N, llvm::ISD::NON_EXTLOAD, llvm::Offset, llvm::SelectionDAGISel::ReplaceUses(), SDValue(), SelectIndexedLoad(), llvm::ISD::SEXTLOAD, llvm::MVT::SimpleTy, Zero, and llvm::ISD::ZEXTLOAD.
Referenced by SelectIndexedLoad(), and SelectLoad().
| void HexagonDAGToDAGISel::SelectIndexedStore | ( | StoreSDNode * | ST, |
| const SDLoc & | dl ) |
Definition at line 490 of file HexagonISelDAGToDAG.cpp.
References A(), AbstractManglingParser< Derived, Alloc >::Ops, assert(), llvm::sampleprof::Base, llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), llvm::EVT::isSimple(), llvm_unreachable, llvm::Offset, llvm::SelectionDAGISel::ReplaceUses(), SDValue(), llvm::MVT::SimpleTy, and Zero.
Referenced by SelectStore().
|
overridevirtual |
SelectInlineAsmMemoryOperand - Implement addressing mode selection for inline asm expressions.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 1087 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, llvm::InlineAsm::m, llvm::InlineAsm::o, SelectAddrFI(), and llvm::InlineAsm::v.
| void HexagonDAGToDAGISel::SelectIntrinsicWChain | ( | SDNode * | N | ) |
Definition at line 655 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, LoadInstrForLoadIntrinsic(), N, SelectBrevLdIntrinsic(), SelectNewCircIntrinsic(), SelectV65Gather(), SelectV65GatherPred(), and StoreInstrForLoadIntrinsic().
Referenced by Select().
| void HexagonDAGToDAGISel::SelectIntrinsicWOChain | ( | SDNode * | N | ) |
Definition at line 694 of file HexagonISelDAGToDAG.cpp.
References llvm::cast(), llvm::SelectionDAGISel::CurDAG, isIEEEHVXIntrinsic(), N, llvm::SelectionDAGISel::ReplaceNode(), SelectHVXDualOutput(), and translateIEEEIntrinsicToQFloat().
Referenced by Select().
| void HexagonDAGToDAGISel::SelectLoad | ( | SDNode * | N | ) |
Definition at line 472 of file HexagonISelDAGToDAG.cpp.
References llvm::cast(), 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 382 of file HexagonISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, getCircRegister(), llvm::SDNode::getConstantOperandVal(), llvm::SDNode::getNumOperands(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), I, llvm::ISD::INTRINSIC_W_CHAIN, llvm::SelectionDAGISel::ReplaceUses(), and SDValue().
Referenced by SelectIntrinsicWChain().
| void HexagonDAGToDAGISel::SelectP2D | ( | SDNode * | N | ) |
Definition at line 901 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, N, llvm::SelectionDAGISel::ReplaceNode(), and T.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectQ2V | ( | SDNode * | N | ) |
Definition at line 931 of file HexagonISelDAGToDAG.cpp.
References assert(), C(), llvm::SelectionDAGISel::CurDAG, llvm::MVT::getSizeInBits(), N, llvm::SelectionDAGISel::ReplaceNode(), and T.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectSHL | ( | SDNode * | N | ) |
Definition at line 595 of file HexagonISelDAGToDAG.cpp.
References C(), C1, llvm::cast(), llvm::ISD::Constant, llvm::SelectionDAGISel::CurDAG, llvm::Default, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::isInt(), 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 581 of file HexagonISelDAGToDAG.cpp.
References llvm::cast(), N, SelectIndexedStore(), and llvm::ISD::UNINDEXED.
Referenced by Select(), and StoreInstrForLoadIntrinsic().
| void HexagonDAGToDAGISel::SelectTypecast | ( | SDNode * | N | ) |
Definition at line 893 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, N, llvm::SelectionDAGISel::ReplaceNode(), and T.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectV2Q | ( | SDNode * | N | ) |
Definition at line 917 of file HexagonISelDAGToDAG.cpp.
References assert(), C(), llvm::SelectionDAGISel::CurDAG, N, llvm::SelectionDAGISel::ReplaceNode(), and T.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectV65Gather | ( | SDNode * | N | ) |
Definition at line 2928 of file HexagonISelDAGToDAGHVX.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::Address, llvm::sampleprof::Base, llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm_unreachable, N, llvm::Offset, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by SelectIntrinsicWChain().
| void HexagonDAGToDAGISel::SelectV65GatherPred | ( | SDNode * | N | ) |
Definition at line 2888 of file HexagonISelDAGToDAGHVX.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::Address, llvm::sampleprof::Base, llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm_unreachable, N, llvm::Offset, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by SelectIntrinsicWChain().
| void HexagonDAGToDAGISel::SelectVAlign | ( | SDNode * | N | ) |
Definition at line 831 of file HexagonISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, assert(), C(), llvm::SelectionDAGISel::CurDAG, llvm::MVT::getSizeInBits(), llvm::M0(), llvm::M1(), N, llvm::SelectionDAGISel::ReplaceNode(), SDValue(), and T.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectVAlignAddr | ( | SDNode * | N | ) |
Definition at line 878 of file HexagonISelDAGToDAG.cpp.
References A(), assert(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, 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::HandleSDNode::getValue(), llvm::HexagonII::MemAccesSizeMask, llvm::HexagonII::MemAccessSizePos, llvm::SelectionDAGISel::ReplaceUses(), SDValue(), SelectStore(), and llvm::Size.
Referenced by SelectIntrinsicWChain(), and tryLoadOfLoadIntrinsic().
Definition at line 3048 of file HexagonISelDAGToDAGHVX.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::SelectionDAGISel::CurDAG, DL, llvm::SelectionDAG::getMachineFunction(), llvm_unreachable, llvm::SelectionDAGISel::MF, N, llvm::SelectionDAGISel::ReplaceUses(), and SDValue().
Referenced by SelectIntrinsicWOChain().
| bool HexagonDAGToDAGISel::tryLoadOfLoadIntrinsic | ( | LoadSDNode * | N | ) |
Definition at line 262 of file HexagonISelDAGToDAG.cpp.
References C(), llvm::SelectionDAGISel::CurDAG, F, llvm::SDValue::getNode(), llvm::ISD::INTRINSIC_W_CHAIN, LoadInstrForLoadIntrinsic(), N, llvm::ISD::NON_EXTLOAD, llvm::SelectionDAGISel::ReplaceUses(), SDValue(), llvm::ISD::SEXTLOAD, StoreInstrForLoadIntrinsic(), T, and llvm::ISD::ZEXTLOAD.
Referenced by SelectLoad().
|
friend |
Definition at line 128 of file HexagonISelDAGToDAG.h.
References llvm::SelectionDAGISel::CurDAG, and HvxSelector.
Referenced by HvxSelector.