@@ -200,8 +200,7 @@ RISCVInstructionSelector::selectSHXADDOp(MachineOperand &Root,
200
200
// Given (and (shl y, c2), mask) in which mask has no leading zeros and
201
201
// c3 trailing zeros. We can use an SRLI by c3 - c2 followed by a SHXADD.
202
202
if (*LeftShift && Leading == 0 && C2.ult (Trailing) && Trailing == ShAmt) {
203
- Register DstReg =
204
- MRI.createGenericVirtualRegister (MRI.getType (RootReg));
203
+ Register DstReg = MRI.createVirtualRegister (&RISCV::GPRRegClass);
205
204
return {{[=](MachineInstrBuilder &MIB) {
206
205
MachineIRBuilder (*MIB.getInstr ())
207
206
.buildInstr (RISCV::SRLI, {DstReg}, {RegY})
@@ -213,8 +212,7 @@ RISCVInstructionSelector::selectSHXADDOp(MachineOperand &Root,
213
212
// Given (and (lshr y, c2), mask) in which mask has c2 leading zeros and
214
213
// c3 trailing zeros. We can use an SRLI by c2 + c3 followed by a SHXADD.
215
214
if (!*LeftShift && Leading == C2 && Trailing == ShAmt) {
216
- Register DstReg =
217
- MRI.createGenericVirtualRegister (MRI.getType (RootReg));
215
+ Register DstReg = MRI.createVirtualRegister (&RISCV::GPRRegClass);
218
216
return {{[=](MachineInstrBuilder &MIB) {
219
217
MachineIRBuilder (*MIB.getInstr ())
220
218
.buildInstr (RISCV::SRLI, {DstReg}, {RegY})
@@ -253,7 +251,7 @@ RISCVInstructionSelector::selectSHXADDOp(MachineOperand &Root,
253
251
(Trailing - C2.getLimitedValue ()) == ShAmt;
254
252
255
253
if (Cond) {
256
- Register DstReg = MRI.createGenericVirtualRegister (MRI. getType (RootReg) );
254
+ Register DstReg = MRI.createVirtualRegister (&RISCV::GPRRegClass );
257
255
return {{[=](MachineInstrBuilder &MIB) {
258
256
MachineIRBuilder (*MIB.getInstr ())
259
257
.buildInstr (RISCV::SRLIW, {DstReg}, {RegY})
@@ -292,8 +290,7 @@ RISCVInstructionSelector::selectSHXADD_UWOp(MachineOperand &Root,
292
290
unsigned Leading = Mask.countl_zero ();
293
291
unsigned Trailing = Mask.countr_zero ();
294
292
if (Leading == 32 - ShAmt && C2 == Trailing && Trailing > ShAmt) {
295
- Register DstReg =
296
- MRI.createGenericVirtualRegister (MRI.getType (RootReg));
293
+ Register DstReg = MRI.createVirtualRegister (&RISCV::GPRRegClass);
297
294
return {{[=](MachineInstrBuilder &MIB) {
298
295
MachineIRBuilder (*MIB.getInstr ())
299
296
.buildInstr (RISCV::SLLI, {DstReg}, {RegX})
0 commit comments