diff options
author | Pavel I. Kryukov <pavel.igorevich.kryukov@gmail.com> | 2022-05-24 08:45:39 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-23 22:45:39 -0700 |
commit | 2bc227547742e65ba8c64c6e6c573e49bfe72e7e (patch) | |
tree | 41aa10ace410a58eb729273790bbfee03536ec4c | |
parent | 86808b1df8cebda5435fc3d08a1abb86ed73ffd2 (diff) | |
download | riscv-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.py | 4 | ||||
-rw-r--r-- | rv32_i | 7 | ||||
-rw-r--r-- | rv64_i | 9 | ||||
-rw-r--r-- | unratified/rv128_i | 22 |
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\\,$'$" @@ -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 @@ -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 |