Skip to content

Commit a209293

Browse files
committed
fixup! More updates for RISCVMakeCompressible.
1 parent 1d4f4b6 commit a209293

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

llvm/lib/Target/RISCV/RISCVMakeCompressible.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ static int64_t getBaseAdjustForCompression(int64_t Offset, unsigned Opcode) {
177177
// Return true if Reg is in a compressed register class.
178178
static bool isCompressedReg(Register Reg) {
179179
return RISCV::GPRCRegClass.contains(Reg) ||
180+
RISCV::GPRF16CRegClass.contains(Reg) ||
180181
RISCV::FPR32CRegClass.contains(Reg) ||
181182
RISCV::FPR64CRegClass.contains(Reg);
182183
}
@@ -326,6 +327,8 @@ static Register analyzeCompressibleUses(MachineInstr &FirstMI,
326327
// Work out the compressed register class from which to scavenge.
327328
if (RISCV::GPRRegClass.contains(RegImm.Reg))
328329
RCToScavenge = &RISCV::GPRCRegClass;
330+
else if (RISCV::GPRF16RegClass.contains(RegImm.Reg))
331+
RCToScavenge = &RISCV::GPRF16CRegClass;
329332
else if (RISCV::FPR32RegClass.contains(RegImm.Reg))
330333
RCToScavenge = &RISCV::FPR32CRegClass;
331334
else if (RISCV::FPR64RegClass.contains(RegImm.Reg))
@@ -416,6 +419,10 @@ bool RISCVMakeCompressibleOpt::runOnMachineFunction(MachineFunction &Fn) {
416419
BuildMI(MBB, MI, MI.getDebugLoc(), TII.get(RISCV::ADDI), NewReg)
417420
.addReg(RegImm.Reg)
418421
.addImm(RegImm.Imm);
422+
} else if (RISCV::GPRRegClass.contains(RegImm.Reg)) {
423+
assert(RegImm.Imm == 0);
424+
BuildMI(MBB, MI, MI.getDebugLoc(), TII.get(RISCV::PseudoMV_FPR16INX), NewReg)
425+
.addReg(RegImm.Reg);
419426
} else {
420427
// If we are looking at replacing an FPR register we don't expect to
421428
// have any offset. The only compressible FP instructions with an offset

0 commit comments

Comments
 (0)