From 33dc95e1a8806bdc21cc1ce95f31a40e972a913b Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 12 Jan 2023 13:20:38 -0800 Subject: Fix backwards incompatibility introduced by RV128 opcodes in #112 Adding RV128 shift opcodes changed what metadata we emit for SLLI, SRLI, and SRAI. Thus, downstream tooling that relies on these to connote the RV64 variants of these instructions is semantically affected. Fix by reverting SLLI etc. to being the RV64 variants. --- rv32_i | 6 +++--- rv64_i | 6 +++--- unratified/rv128_i | 7 +++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/rv32_i b/rv32_i index 61f6c2e..7e4da0f 100644 --- a/rv32_i +++ b/rv32_i @@ -1,3 +1,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 +$pseudo_op rv128_i::slli slli_rv32 rd rs1 shamtw 31..25=0 14..12=1 6..2=0x04 1..0=3 +$pseudo_op rv128_i::srli srli_rv32 rd rs1 shamtw 31..25=0 14..12=5 6..2=0x04 1..0=3 +$pseudo_op rv128_i::srai srai_rv32 rd rs1 shamtw 31..25=32 14..12=5 6..2=0x04 1..0=3 diff --git a/rv64_i b/rv64_i index 4d2617d..3fad043 100644 --- a/rv64_i +++ b/rv64_i @@ -4,9 +4,9 @@ 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 -$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 +slli rd rs1 31..26=0 shamtd 14..12=1 6..2=0x04 1..0=3 +srli rd rs1 31..26=0 shamtd 14..12=5 6..2=0x04 1..0=3 +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 diff --git a/unratified/rv128_i b/unratified/rv128_i index 05c521e..191d61a 100644 --- a/unratified/rv128_i +++ b/unratified/rv128_i @@ -16,7 +16,6 @@ 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 shamtq 14..12=1 6..2=0x04 1..0=3 -srli rd rs1 31..27=0 shamtq 14..12=5 6..2=0x04 1..0=3 -srai rd rs1 31..27=8 shamtq 14..12=5 6..2=0x04 1..0=3 +$pseudo_op rv64_i::slli slli_rv128 rd rs1 31..27=0 shamtq 14..12=1 6..2=0x04 1..0=3 +$pseudo_op rv64_i::srli srli_rv128 rd rs1 31..27=0 shamtq 14..12=5 6..2=0x04 1..0=3 +$pseudo_op rv64_i::srai srai_rv128 rd rs1 31..27=8 shamtq 14..12=5 6..2=0x04 1..0=3 -- cgit v1.1