Skip to content

Commit de4aa9c

Browse files
authored
AMDGPU: Minor SDWA pass cleanups (#166629)
Don't use low level regclass query in SDWA pass.
1 parent 2a3ef05 commit de4aa9c

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,20 +1334,21 @@ void SIPeepholeSDWA::legalizeScalarOperands(MachineInstr &MI,
13341334
const MCInstrDesc &Desc = TII->get(MI.getOpcode());
13351335
unsigned ConstantBusCount = 0;
13361336
for (MachineOperand &Op : MI.explicit_uses()) {
1337-
if (!Op.isImm() && !(Op.isReg() && !TRI->isVGPR(*MRI, Op.getReg())))
1338-
continue;
1339-
1340-
unsigned I = Op.getOperandNo();
1337+
if (Op.isReg()) {
1338+
if (TRI->isVGPR(*MRI, Op.getReg()))
1339+
continue;
13411340

1342-
int16_t RegClass = TII->getOpRegClassID(Desc.operands()[I]);
1343-
if (RegClass == -1 || !TRI->isVSSuperClass(TRI->getRegClass(RegClass)))
1341+
if (ST.hasSDWAScalar() && ConstantBusCount == 0) {
1342+
++ConstantBusCount;
1343+
continue;
1344+
}
1345+
} else if (!Op.isImm())
13441346
continue;
13451347

1346-
if (ST.hasSDWAScalar() && ConstantBusCount == 0 && Op.isReg() &&
1347-
TRI->isSGPRReg(*MRI, Op.getReg())) {
1348-
++ConstantBusCount;
1348+
unsigned I = Op.getOperandNo();
1349+
const TargetRegisterClass *OpRC = TII->getRegClass(Desc, I, TRI);
1350+
if (!OpRC || !TRI->isVSSuperClass(OpRC))
13491351
continue;
1350-
}
13511352

13521353
Register VGPR = MRI->createVirtualRegister(&AMDGPU::VGPR_32RegClass);
13531354
auto Copy = BuildMI(*MI.getParent(), MI.getIterator(), MI.getDebugLoc(),

0 commit comments

Comments
 (0)