|
LLVM 24.0.0git
|
#include "Target/Hexagon/HexagonISelDAGToDAG.h"
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 1576 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.
|
overridevirtual |
Reimplemented from llvm::SelectionDAGISel.
Definition at line 1431 of file HexagonISelDAGToDAG.cpp.
References assert(), llvm::HexagonSubtarget::getFrameLowering(), llvm::Register::isValid(), and llvm::SelectionDAGISel::MF.
| void HexagonDAGToDAGISel::FastFDiv | ( | SDNode * | N | ) |
Definition at line 979 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 928 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 1371 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 1019 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 1444 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 1456 of file HexagonISelDAGToDAG.cpp.
References N, and SelectGlobalAddress().
Definition at line 1460 of file HexagonISelDAGToDAG.cpp.
References N, and SelectGlobalAddress().
| void HexagonDAGToDAGISel::SelectAddSubCarry | ( | SDNode * | N | ) |
Definition at line 806 of file HexagonISelDAGToDAG.cpp.
References C(), llvm::SelectionDAGISel::CurDAG, N, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
Definition at line 1464 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1468 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1471 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1474 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1477 of file HexagonISelDAGToDAG.cpp.
References N, and SelectAnyImmediate().
Definition at line 1490 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 1481 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 763 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 742 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 892 of file HexagonISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, N, llvm::SelectionDAGISel::ReplaceNode(), and T.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectExtractSubvector | ( | SDNode * | N | ) |
Definition at line 721 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 1012 of file HexagonISelDAGToDAG.cpp.
References FastFDiv(), FDiv(), and N.
Referenced by Select().
| void HexagonDAGToDAGISel::SelectFrameIndex | ( | SDNode * | N | ) |
Definition at line 776 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, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
| bool HexagonDAGToDAGISel::SelectGlobalAddress | ( | SDValue & | N, |
| SDValue & | R, | ||
| bool | UseGP, | ||
| Align | Alignment ) |
Definition at line 1531 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, and llvm::ISD::ZEXTLOAD.
Referenced by SelectIndexedLoad(), and SelectLoad().
| void HexagonDAGToDAGISel::SelectIndexedStore | ( | StoreSDNode * | ST, |
| const SDLoc & | dl ) |
Definition at line 474 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(), and llvm::MVT::SimpleTy.
Referenced by SelectStore().
|
overridevirtual |
SelectInlineAsmMemoryOperand - Implement addressing mode selection for inline asm expressions.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 1071 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 639 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 678 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 456 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 370 of file HexagonISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, 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 885 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 915 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 579 of file HexagonISelDAGToDAG.cpp.
References C(), 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 565 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 877 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 901 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 815 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 862 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 Size.
Referenced by SelectIntrinsicWChain(), and tryLoadOfLoadIntrinsic().
Definition at line 3038 of file HexagonISelDAGToDAGHVX.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::SelectionDAGISel::CurDAG, DL, llvm_unreachable, 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 126 of file HexagonISelDAGToDAG.h.
References llvm::SelectionDAGISel::CurDAG, and HvxSelector.
Referenced by HvxSelector.