]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
disas/riscv: Fix vsetivli disassembly
authorRichard Henderson <richard.henderson@linaro.org>
Wed, 16 Oct 2024 16:57:15 +0000 (16:57 +0000)
committerRichard Henderson <richard.henderson@linaro.org>
Tue, 22 Oct 2024 18:57:25 +0000 (11:57 -0700)
The first immediate field is unsigned, whereas operand_vimm
extracts a signed value.  There is no need to mask the result
with 'u'; just print the immediate with 'i'.

Fixes: 07f4964d178 ("disas/riscv.c: rvv: Add disas support for vector instructions")
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
disas/riscv.c
disas/riscv.h

index 5965574d8740ded6bc6c3df872bbd36c991118e9..fc0331b90b9efdac8199858e0a84d90a1a2d6ddc 100644 (file)
@@ -4808,7 +4808,7 @@ static void decode_inst_operands(rv_decode *dec, rv_isa isa)
         break;
     case rv_codec_vsetivli:
         dec->rd = operand_rd(inst);
-        dec->imm = operand_vimm(inst);
+        dec->imm = extract32(inst, 15, 5);
         dec->vzimm = operand_vzimm10(inst);
         break;
     case rv_codec_zcb_lb:
index 16a08e4895c2b260eeee5fedb079a78b60753a0f..0d1f89ce8a37e77a86194c526a20ab0b908e27c0 100644 (file)
@@ -290,7 +290,7 @@ enum {
 #define rv_fmt_fd_vs2                 "O\t3,F"
 #define rv_fmt_vd_vm                  "O\tDm"
 #define rv_fmt_vsetvli                "O\t0,1,v"
-#define rv_fmt_vsetivli               "O\t0,u,v"
+#define rv_fmt_vsetivli               "O\t0,i,v"
 #define rv_fmt_rs1_rs2_zce_ldst       "O\t2,i(1)"
 #define rv_fmt_push_rlist             "O\tx,-i"
 #define rv_fmt_pop_rlist              "O\tx,i"