Skip to content

Commit 9eefa92

Browse files
authored
AMDGPU/GlobalISel: Remove getVRegDef null checks in selector (llvm#115530)
We should be able to assume every virtual register is defined.
1 parent c02b8a0 commit 9eefa92

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3839,7 +3839,7 @@ AMDGPUInstructionSelector::selectVOP3PModsImpl(
38393839
unsigned Mods = 0;
38403840
MachineInstr *MI = MRI.getVRegDef(Src);
38413841

3842-
if (MI && MI->getOpcode() == AMDGPU::G_FNEG &&
3842+
if (MI->getOpcode() == AMDGPU::G_FNEG &&
38433843
// It's possible to see an f32 fneg here, but unlikely.
38443844
// TODO: Treat f32 fneg as only high bit.
38453845
MRI.getType(Src) == LLT::fixed_vector(2, 16)) {
@@ -4662,24 +4662,24 @@ AMDGPUInstructionSelector::selectMUBUFScratchOffen(MachineOperand &Root) const {
46624662
// offsets.
46634663
std::optional<int> FI;
46644664
Register VAddr = Root.getReg();
4665-
if (const MachineInstr *RootDef = MRI->getVRegDef(Root.getReg())) {
4666-
Register PtrBase;
4667-
int64_t ConstOffset;
4668-
std::tie(PtrBase, ConstOffset) = getPtrBaseWithConstantOffset(VAddr, *MRI);
4669-
if (ConstOffset != 0) {
4670-
if (TII.isLegalMUBUFImmOffset(ConstOffset) &&
4671-
(!STI.privateMemoryResourceIsRangeChecked() ||
4672-
KB->signBitIsZero(PtrBase))) {
4673-
const MachineInstr *PtrBaseDef = MRI->getVRegDef(PtrBase);
4674-
if (PtrBaseDef->getOpcode() == AMDGPU::G_FRAME_INDEX)
4675-
FI = PtrBaseDef->getOperand(1).getIndex();
4676-
else
4677-
VAddr = PtrBase;
4678-
Offset = ConstOffset;
4679-
}
4680-
} else if (RootDef->getOpcode() == AMDGPU::G_FRAME_INDEX) {
4681-
FI = RootDef->getOperand(1).getIndex();
4665+
4666+
const MachineInstr *RootDef = MRI->getVRegDef(Root.getReg());
4667+
Register PtrBase;
4668+
int64_t ConstOffset;
4669+
std::tie(PtrBase, ConstOffset) = getPtrBaseWithConstantOffset(VAddr, *MRI);
4670+
if (ConstOffset != 0) {
4671+
if (TII.isLegalMUBUFImmOffset(ConstOffset) &&
4672+
(!STI.privateMemoryResourceIsRangeChecked() ||
4673+
KB->signBitIsZero(PtrBase))) {
4674+
const MachineInstr *PtrBaseDef = MRI->getVRegDef(PtrBase);
4675+
if (PtrBaseDef->getOpcode() == AMDGPU::G_FRAME_INDEX)
4676+
FI = PtrBaseDef->getOperand(1).getIndex();
4677+
else
4678+
VAddr = PtrBase;
4679+
Offset = ConstOffset;
46824680
}
4681+
} else if (RootDef->getOpcode() == AMDGPU::G_FRAME_INDEX) {
4682+
FI = RootDef->getOperand(1).getIndex();
46834683
}
46844684

46854685
return {{[=](MachineInstrBuilder &MIB) { // rsrc
@@ -4901,9 +4901,6 @@ AMDGPUInstructionSelector::selectMUBUFScratchOffset(
49014901
std::pair<Register, unsigned>
49024902
AMDGPUInstructionSelector::selectDS1Addr1OffsetImpl(MachineOperand &Root) const {
49034903
const MachineInstr *RootDef = MRI->getVRegDef(Root.getReg());
4904-
if (!RootDef)
4905-
return std::pair(Root.getReg(), 0);
4906-
49074904
int64_t ConstAddr = 0;
49084905

49094906
Register PtrBase;
@@ -4966,9 +4963,6 @@ std::pair<Register, unsigned>
49664963
AMDGPUInstructionSelector::selectDSReadWrite2Impl(MachineOperand &Root,
49674964
unsigned Size) const {
49684965
const MachineInstr *RootDef = MRI->getVRegDef(Root.getReg());
4969-
if (!RootDef)
4970-
return std::pair(Root.getReg(), 0);
4971-
49724966
int64_t ConstAddr = 0;
49734967

49744968
Register PtrBase;

0 commit comments

Comments
 (0)