diff --git a/src/hotspot/cpu/riscv/assembler_riscv.hpp b/src/hotspot/cpu/riscv/assembler_riscv.hpp index 1fa89b0ae7b..f96984003f0 100644 --- a/src/hotspot/cpu/riscv/assembler_riscv.hpp +++ b/src/hotspot/cpu/riscv/assembler_riscv.hpp @@ -2787,7 +2787,13 @@ public: c_slli(Rd, shamt); \ return; \ } \ - _slli(Rd, Rs1, shamt); \ + if (shamt != 0) { \ + _slli(Rd, Rs1, shamt); \ + } else { \ + if (Rd != Rs1) { \ + addi(Rd, Rs1, 0); \ + } \ + } \ } INSN(slli); @@ -2802,7 +2808,13 @@ public: C_NAME(Rd, shamt); \ return; \ } \ - NORMAL_NAME(Rd, Rs1, shamt); \ + if (shamt != 0) { \ + NORMAL_NAME(Rd, Rs1, shamt); \ + } else { \ + if (Rd != Rs1) { \ + addi(Rd, Rs1, 0); \ + } \ + } \ } INSN(srai, c_srai, _srai);