diff --git a/riscv/insns/srav.h b/riscv/insns/srav.h index ec6fee88..e01fcd58 100644 --- a/riscv/insns/srav.h +++ b/riscv/insns/srav.h @@ -1,2 +1,2 @@ require64; -RC = RB >> (RA & 0x3F); +RC = sreg_t(RB) >> (RA & 0x3F); diff --git a/riscv/insns/srlvw.h b/riscv/insns/srlvw.h index 7e1755ff..c523b59d 100644 --- a/riscv/insns/srlvw.h +++ b/riscv/insns/srlvw.h @@ -1 +1 @@ -RC = sext32(RB >> (RA & 0x1F)); +RC = sext32((uint32_t)RB >> (RA & 0x1F)); diff --git a/riscv/insns/srlw.h b/riscv/insns/srlw.h index 0537a1cc..9e41c8c0 100644 --- a/riscv/insns/srlw.h +++ b/riscv/insns/srlw.h @@ -1 +1 @@ -RC = sext32(RB >> SHAMT); +RC = sext32((uint32_t)RB >> SHAMT);