LLVM 24.0.0git
AMDGPURegBankSelect.cpp File Reference

Go to the source code of this file.

Classes

class  RegBankSelectHelper

Macros

#define DEBUG_TYPE   "amdgpu-reg-bank-select"
 Assign register banks to all register operands of G_ instructions using machine uniformity analysis.

Functions

 INITIALIZE_PASS_BEGIN (AMDGPURegBankSelectLegacy, DEBUG_TYPE, "AMDGPU Register Bank Select", false, false) INITIALIZE_PASS_END(AMDGPURegBankSelectLegacy
static Register getVReg (MachineOperand &Op)
static bool runRegBankSelect (MachineFunction &MF, function_ref< GISelCSEInfo *()> GetCSEInfo, function_ref< const MachineUniformityInfo *()> GetMUI)

Variables

 DEBUG_TYPE
AMDGPU Register Bank Select
AMDGPU Register Bank false

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "amdgpu-reg-bank-select"

Assign register banks to all register operands of G_ instructions using machine uniformity analysis.

Sgpr - uniform values and some lane masks Vgpr - divergent, non S1, values Vcc - divergent S1 values(lane masks) However in some cases G_ instructions with this register bank assignment can't be inst-selected. This is solved in AMDGPURegBankLegalize.

Definition at line 29 of file AMDGPURegBankSelect.cpp.

Function Documentation

◆ getVReg()

Register getVReg ( MachineOperand & Op)
static

Definition at line 190 of file AMDGPURegBankSelect.cpp.

References Reg.

Referenced by runRegBankSelect().

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( AMDGPURegBankSelectLegacy ,
DEBUG_TYPE ,
"AMDGPU Register Bank Select" ,
false ,
false  )

◆ runRegBankSelect()

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 69 of file AMDGPURegBankSelect.cpp.

◆ false

AMDGPU Register Bank false

Definition at line 70 of file AMDGPURegBankSelect.cpp.

◆ Select

AMDGPU Register Bank Select

Definition at line 70 of file AMDGPURegBankSelect.cpp.

Referenced by llvm::CombinerHelper::applyFoldBinOpIntoSelect(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), collectUsedHandles(), combineAdd(), combineMulSelectConstOne(), combineSelect(), constantFold(), llvm::VPlanTransforms::convertToConcreteRecipes(), llvm::createMinMaxOp(), llvm::logicalview::LVReader::doLoad(), llvm::VPReductionRecipe::execute(), llvm::TargetLowering::expandCttzElts(), llvm::TargetLowering::expandFP_TO_INT_SAT(), llvm::TargetLowering::expandVPCTTZElements(), llvm::InstCombinerImpl::foldICmpSelectConstant(), llvm::InstCombinerImpl::foldVectorSelect(), getAccessIndices(), getV_CMPOpcode(), getValueOnFirstIteration(), INITIALIZE_PASS(), llvm::SIInstrInfo::insertSelect(), instCombineSVESel(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::slpvectorizer::isFixedVectorShuffle(), isSignedMinMaxClamp(), LowerBUILD_VECTORvXi1(), lowerDisjointIndicesShuffle(), llvm::LegalizerHelper::lowerFMODF(), LowerMLOAD(), lowerSELECT(), llvm::PatternMatch::LogicalOp_match< LHS, RHS, Opcode, Commutable >::match(), llvm::CombinerHelper::matchCastOfSelect(), llvm::CombinerHelper::matchSelect(), llvm::LegalizerHelper::narrowScalarSelect(), llvm::SIInstrInfo::optimizeCompareInstr(), llvm::RISCVTargetLowering::PerformDAGCombine(), simplifyShiftSelectingPackedElement(), simplifySwitchOnSelectUsingRanges(), tryToRecognizeTableBasedLog2(), upgradeMaskedMove(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGEPOfGEP(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitSwitchInst().