aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel I. Kryukov <pavel.igorevich.kryukov@gmail.com>2022-05-24 08:45:39 +0300
committerGitHub <noreply@github.com>2022-05-23 22:45:39 -0700
commit2bc227547742e65ba8c64c6e6c573e49bfe72e7e (patch)
tree41aa10ace410a58eb729273790bbfee03536ec4c
parent86808b1df8cebda5435fc3d08a1abb86ed73ffd2 (diff)
downloadriscv-opcodes-2bc227547742e65ba8c64c6e6c573e49bfe72e7e.zip
riscv-opcodes-2bc227547742e65ba8c64c6e6c573e49bfe72e7e.tar.gz
riscv-opcodes-2bc227547742e65ba8c64c6e6c573e49bfe72e7e.tar.bz2
Add RV128I opcodes (#112)
* Add RV128I instructions * Address code review feedback * Fix typo
-rw-r--r--constants.py4
-rw-r--r--rv32_i7
-rw-r--r--rv64_i9
-rw-r--r--unratified/rv128_i22
4 files changed, 34 insertions, 8 deletions
diff --git a/constants.py b/constants.py
index b6a4351..be65a25 100644
--- a/constants.py
+++ b/constants.py
@@ -435,9 +435,10 @@ arg_lut['bimm12hi'] = (31, 25)
arg_lut['imm12lo'] = (11, 7)
arg_lut['bimm12lo'] = (11, 7)
arg_lut['zimm'] = (19, 15)
-arg_lut['shamt'] = (25, 20)
+arg_lut['shamt'] = (26, 20)
arg_lut['shamtw'] = (24, 20)
arg_lut['shamtw4'] = (23, 20)
+arg_lut['shamtd'] = (25, 20)
arg_lut['bs'] = (31, 30) # byte select for RV32K AES
arg_lut['rnum'] = (23, 20) # round constant for RV64 AES
arg_lut['rc'] = (29, 25)
@@ -524,6 +525,7 @@ latex_mapping['imm12lo'] = 'imm[4:0]'
latex_mapping['jimm20'] = 'imm[20$\\vert$10:1$\\vert$11$\\vert$19:12]'
latex_mapping['zimm'] = 'uimm'
latex_mapping['shamtw'] = 'shamt'
+latex_mapping['shamtd'] = 'shamt'
latex_mapping['rd_p'] = "rd\\,$'$"
latex_mapping['rs1_p'] = "rs1\\,$'$"
latex_mapping['rs2_p'] = "rs2\\,$'$"
diff --git a/rv32_i b/rv32_i
index 28d371a..61f6c2e 100644
--- a/rv32_i
+++ b/rv32_i
@@ -1,4 +1,3 @@
-$pseudo_op rv64_i::slli slli rd rs1 shamtw 31..25=0 14..12=1 6..2=0x04 1..0=3
-$pseudo_op rv64_i::srli srli rd rs1 shamtw 31..25=0 14..12=5 6..2=0x04 1..0=3
-$pseudo_op rv64_i::srai srai rd rs1 shamtw 31..25=32 14..12=5 6..2=0x04 1..0=3
-
+$pseudo_op rv128_i::slli slli rd rs1 shamtw 31..25=0 14..12=1 6..2=0x04 1..0=3
+$pseudo_op rv128_i::srli srli rd rs1 shamtw 31..25=0 14..12=5 6..2=0x04 1..0=3
+$pseudo_op rv128_i::srai srai rd rs1 shamtw 31..25=32 14..12=5 6..2=0x04 1..0=3
diff --git a/rv64_i b/rv64_i
index 1d88e59..4d2617d 100644
--- a/rv64_i
+++ b/rv64_i
@@ -3,13 +3,16 @@
lwu rd rs1 imm12 14..12=6 6..2=0x00 1..0=3
ld rd rs1 imm12 14..12=3 6..2=0x00 1..0=3
sd imm12hi rs1 rs2 imm12lo 14..12=3 6..2=0x08 1..0=3
-slli rd rs1 31..26=0 shamt 14..12=1 6..2=0x04 1..0=3
-srli rd rs1 31..26=0 shamt 14..12=5 6..2=0x04 1..0=3
-srai rd rs1 31..26=16 shamt 14..12=5 6..2=0x04 1..0=3
+
+$pseudo_op rv128_i::slli slli rd rs1 31..26=0 shamtd 14..12=1 6..2=0x04 1..0=3
+$pseudo_op rv128_i::srli srli rd rs1 31..26=0 shamtd 14..12=5 6..2=0x04 1..0=3
+$pseudo_op rv128_i::srai srai rd rs1 31..26=16 shamtd 14..12=5 6..2=0x04 1..0=3
+
addiw rd rs1 imm12 14..12=0 6..2=0x06 1..0=3
slliw rd rs1 31..25=0 shamtw 14..12=1 6..2=0x06 1..0=3
srliw rd rs1 31..25=0 shamtw 14..12=5 6..2=0x06 1..0=3
sraiw rd rs1 31..25=32 shamtw 14..12=5 6..2=0x06 1..0=3
+
addw rd rs1 rs2 31..25=0 14..12=0 6..2=0x0E 1..0=3
subw rd rs1 rs2 31..25=32 14..12=0 6..2=0x0E 1..0=3
sllw rd rs1 rs2 31..25=0 14..12=1 6..2=0x0E 1..0=3
diff --git a/unratified/rv128_i b/unratified/rv128_i
new file mode 100644
index 0000000..1d62fe5
--- /dev/null
+++ b/unratified/rv128_i
@@ -0,0 +1,22 @@
+# RV128I additions to RV64I
+
+addid rd rs1 imm12 14..12=0 6..2=0x16 1..0=3
+sllid rd rs1 31..26=0 shamtd 14..12=1 6..2=0x16 1..0=3
+srlid rd rs1 31..26=0 shamtd 14..12=5 6..2=0x16 1..0=3
+sraid rd rs1 31..26=16 shamtd 14..12=5 6..2=0x16 1..0=3
+
+addd rd rs1 rs2 31..25=0 14..12=0 6..2=0x1E 1..0=3
+subd rd rs1 rs2 31..25=32 14..12=0 6..2=0x1E 1..0=3
+slld rd rs1 rs2 31..25=0 14..12=1 6..2=0x1E 1..0=3
+srld rd rs1 rs2 31..25=0 14..12=5 6..2=0x1E 1..0=3
+srad rd rs1 rs2 31..25=32 14..12=5 6..2=0x1E 1..0=3
+
+lq rd rs1 imm12 14..12=3 6..2=0x03 1..0=3
+ldu rd rs1 imm12 14..12=7 6..2=0x00 1..0=3
+
+sq imm12hi rs1 rs2 imm12lo 14..12=4 6..2=0x08 1..0=3
+
+# RV32 and RV64 versions of these are in opcodes-pseudo
+slli rd rs1 31..27=0 shamt 14..12=1 6..2=0x04 1..0=3
+srli rd rs1 31..27=0 shamt 14..12=5 6..2=0x04 1..0=3
+srai rd rs1 31..27=8 shamt 14..12=5 6..2=0x04 1..0=3