aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/srai.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/insns/srai.h')
-rw-r--r--riscv/insns/srai.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/riscv/insns/srai.h b/riscv/insns/srai.h
new file mode 100644
index 0000000..bb17d27
--- /dev/null
+++ b/riscv/insns/srai.h
@@ -0,0 +1,8 @@
+if(xpr64)
+ RD = sreg_t(RS1) >> SHAMT;
+else
+{
+ if(SHAMT & 0x20)
+ throw trap_illegal_instruction;
+ RD = sext32(int32_t(RS1) >> SHAMT);
+}