@@ -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(
49014901std::pair<Register, unsigned >
49024902AMDGPUInstructionSelector::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>
49664963AMDGPUInstructionSelector::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