LLVM: lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp File Reference (original) (raw)
This file implements the targeting of the InstructionSelector class for AMDGPU. More...
Go to the source code of this file.
| Macros | |
|---|---|
| #define | DEBUG_TYPE "amdgpu-isel" |
| #define | GET_GLOBALISEL_IMPL |
| #define | AMDGPUSubtarget GCNSubtarget |
| #define | GET_GLOBALISEL_PREDICATES_INIT |
| #define | GET_GLOBALISEL_TEMPORARIES_INIT |
| Enumerations | |
|---|---|
| enum class | SrcStatus { IS_SAME, IS_UPPER_HALF, IS_LOWER_HALF, IS_UPPER_HALF_NEG, IS_LOWER_HALF_NEG, IS_HI_NEG, IS_LO_NEG, IS_BOTH_NEG, INVALID, NEG_START = IS_UPPER_HALF_NEG , NEG_END = IS_BOTH_NEG , HALF_START = IS_UPPER_HALF , HALF_END = IS_LOWER_HALF_NEG } |
| enum class | TypeClass { VECTOR_OF_TWO, SCALAR, NONE_OF_LISTED } |
This file implements the targeting of the InstructionSelector class for AMDGPU.
This should be generated by TableGen.
Definition in file AMDGPUInstructionSelector.cpp.
◆ AMDGPUSubtarget
◆ DEBUG_TYPE
#define DEBUG_TYPE "amdgpu-isel"
◆ GET_GLOBALISEL_IMPL
#define GET_GLOBALISEL_IMPL
◆ GET_GLOBALISEL_PREDICATES_INIT
#define GET_GLOBALISEL_PREDICATES_INIT
◆ GET_GLOBALISEL_TEMPORARIES_INIT
#define GET_GLOBALISEL_TEMPORARIES_INIT
◆ SrcStatus
| Enumerator |
|---|
| IS_SAME |
| IS_UPPER_HALF |
| IS_LOWER_HALF |
| IS_UPPER_HALF_NEG |
| IS_LOWER_HALF_NEG |
| IS_HI_NEG |
| IS_LO_NEG |
| IS_BOTH_NEG |
| INVALID |
| NEG_START |
| NEG_END |
| HALF_START |
| HALF_END |
Definition at line 4451 of file AMDGPUInstructionSelector.cpp.
◆ TypeClass
◆ addZeroImm()
◆ BitOp3_Op()
Definition at line 3889 of file AMDGPUInstructionSelector.cpp.
References BitOp3_Op(), llvm::getSrcRegIgnoringCopies(), I, LHS, llvm::MIPatternMatch::m_AllOnesInt(), llvm::MIPatternMatch::m_Not(), llvm::MIPatternMatch::m_Reg(), llvm::MIPatternMatch::m_ZeroInt(), MI, llvm::MIPatternMatch::mi_match(), MRI, and RHS.
Referenced by BitOp3_Op(), and BitOp3_Op().
◆ buildAddr64RSrc()
◆ buildOffsetSrc()
◆ buildRegSequence()
Definition at line 5042 of file AMDGPUInstructionSelector.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), B(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::SIRegisterInfo::getSubRegFromChannel(), llvm_unreachable, MRI, and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by selectWMMAModsNegAbs(), and selectWMMAModsNegAbs().
◆ buildRSRC()
◆ calcNextStatus()
Definition at line 4691 of file AMDGPUInstructionSelector.cpp.
References getNegStatus(), INVALID, IS_HI_NEG, IS_LOWER_HALF, IS_LOWER_HALF_NEG, IS_SAME, IS_UPPER_HALF, IS_UPPER_HALF_NEG, isLshrHalf(), isShlHalf(), isTruncHalf(), isUnmergeHalf(), MI, MRI, and Opc.
Referenced by getLastSameOrNeg(), and getSrcStats().
◆ checkRB()
◆ computeIndirectRegIndex()
◆ getConstantZext32Val()
◆ getLastSameOrNeg()
◆ getLegalRegBank()
◆ getLogicalBitOpcode()
◆ getNamedBarrierOp()
◆ getNegStatus()
Definition at line 4535 of file AMDGPUInstructionSelector.cpp.
References INVALID, IS_BOTH_NEG, IS_HI_NEG, IS_LO_NEG, IS_LOWER_HALF, IS_LOWER_HALF_NEG, IS_SAME, IS_UPPER_HALF, IS_UPPER_HALF_NEG, isVectorOfTwoOrScalar(), llvm_unreachable, MRI, Reg, SCALAR, and VECTOR_OF_TWO.
Referenced by calcNextStatus().
◆ getSrcStats()
◆ getV_CMPOpcode()
Definition at line 1224 of file AMDGPUInstructionSelector.cpp.
References llvm::CmpInst::FCMP_FALSE, llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OGE, llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::FCMP_ONE, llvm::CmpInst::FCMP_ORD, llvm::CmpInst::FCMP_TRUE, llvm::CmpInst::FCMP_UEQ, llvm::CmpInst::FCMP_UGE, llvm::CmpInst::FCMP_UGT, llvm::CmpInst::FCMP_ULE, llvm::CmpInst::FCMP_ULT, llvm::CmpInst::FCMP_UNE, llvm::CmpInst::FCMP_UNO, llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGE, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULE, llvm::CmpInst::ICMP_ULT, llvm_unreachable, P, Select, and Size.
◆ getWaveAddress()
◆ gwsIntrinToOpcode()
◆ isConstant()
Definition at line 2935 of file AMDGPUInstructionSelector.cpp.
References MI.
Referenced by allConstant(), llvm::buildModuleSummaryIndex(), llvm::MDBuilder::createTBAANode(), llvm::HexagonInstrInfo::expandPostRAPseudo(), getMemcpyLoadsAndStores(), slpvectorizer::BoUpSLP::getReorderingData(), isSimpleVIDSequence(), slpvectorizer::BoUpSLP::processBuildVector(), slpvectorizer::BoUpSLP::reorderBottomToTop(), tryFoldHelper(), and tryToFindDuplicates().
◆ isExtractHiElt()
Definition at line 2777 of file AMDGPUInstructionSelector.cpp.
References assert(), llvm::LLT::fixed_vector(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getShuffleMask(), llvm::MIPatternMatch::m_GLShr(), llvm::MIPatternMatch::m_GTrunc(), llvm::MIPatternMatch::m_Reg(), llvm::MIPatternMatch::m_SpecificICst(), llvm::MIPatternMatch::mi_match(), MRI, stripBitCast(), and stripCopy().
Referenced by buildRegSequence16().
◆ isLaneMaskFromSameBlock()
Definition at line 1585 of file AMDGPUInstructionSelector.cpp.
References llvm::RegisterBank::getID(), llvm::isa(), isLaneMaskFromSameBlock(), LHS, llvm::MIPatternMatch::m_GAnd(), llvm::MIPatternMatch::m_Reg(), MBB, MI, llvm::MIPatternMatch::mi_match(), MRI, Reg, and RHS.
Referenced by isLaneMaskFromSameBlock().
◆ isLshrHalf()
◆ isNoUnsignedWrap()
◆ isSameBitWidth()
◆ isShlHalf()
◆ isTruncHalf()
◆ isUnmergeHalf()
◆ isValidToPack()
◆ isVCmpResult()
◆ isVectorOfTwoOrScalar()
◆ parseTexFail()
◆ selectWMMAModsNegAbs()
Definition at line 5070 of file AMDGPUInstructionSelector.cpp.
References assert(), buildRegSequence(), llvm::MIPatternMatch::m_GFabs(), llvm::MIPatternMatch::m_Reg(), llvm::MIPatternMatch::mi_match(), MRI, llvm::SISrcMods::NEG, llvm::SISrcMods::NEG_HI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorTemplateCommon< T, typename >::size().