aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/slli.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/insns/slli.h')
-rw-r--r--riscv/insns/slli.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/riscv/insns/slli.h b/riscv/insns/slli.h
index f7ba310..bfaf430 100644
--- a/riscv/insns/slli.h
+++ b/riscv/insns/slli.h
@@ -1,2 +1,8 @@
-require64;
-RD = RS1 << SHAMT;
+if(xpr64)
+ RD = RS1 << SHAMT;
+else
+{
+ if(SHAMT & 0x20)
+ throw trap_illegal_instruction;
+ RD = sext32(RS1 << SHAMT);
+}