Skip to content

Commit 2d638d5

Browse files
committed
Use one loop to collect subregs.
1 parent e2e6760 commit 2d638d5

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -386,23 +386,22 @@ void GCNRewritePartialRegUsesImpl::updateLiveIntervals(
386386
}
387387

388388
bool GCNRewritePartialRegUsesImpl::rewriteReg(Register Reg) const {
389-
auto Range = MRI->reg_nodbg_operands(Reg);
390-
if (Range.empty() || any_of(Range, [](MachineOperand &MO) {
391-
return MO.getSubReg() == AMDGPU::NoSubRegister; // Whole reg used. [1]
392-
}))
393-
return false;
394-
395-
auto *RC = MRI->getRegClass(Reg);
396-
LLVM_DEBUG(dbgs() << "Try to rewrite partial reg " << printReg(Reg, TRI)
397-
<< ':' << TRI->getRegClassName(RC) << '\n');
398389

399390
// Collect used subregs.
400391
SubRegMap SubRegs;
401392
for (MachineOperand &MO : MRI->reg_nodbg_operands(Reg)) {
402-
assert(MO.getSubReg() != AMDGPU::NoSubRegister); // Due to [1].
393+
if (MO.getSubReg() == AMDGPU::NoSubRegister)
394+
return false; // Whole reg used.
403395
SubRegs.try_emplace(MO.getSubReg());
404396
}
405397

398+
if (SubRegs.empty())
399+
return false;
400+
401+
auto *RC = MRI->getRegClass(Reg);
402+
LLVM_DEBUG(dbgs() << "Try to rewrite partial reg " << printReg(Reg, TRI)
403+
<< ':' << TRI->getRegClassName(RC) << '\n');
404+
406405
auto *NewRC = getMinSizeReg(RC, SubRegs);
407406
if (!NewRC) {
408407
LLVM_DEBUG(dbgs() << " No improvement achieved\n");

0 commit comments

Comments
 (0)