disas/riscv: Fix vsetivli disassembly

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: 07f4964d17 ("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>
This commit is contained in:
Richard Henderson 2024-10-16 16:57:15 +00:00
parent a7cfd751fb
commit be46e0bf14
2 changed files with 2 additions and 2 deletions

View File

@ -4808,7 +4808,7 @@ static void decode_inst_operands(rv_decode *dec, rv_isa isa)
break; break;
case rv_codec_vsetivli: case rv_codec_vsetivli:
dec->rd = operand_rd(inst); dec->rd = operand_rd(inst);
dec->imm = operand_vimm(inst); dec->imm = extract32(inst, 15, 5);
dec->vzimm = operand_vzimm10(inst); dec->vzimm = operand_vzimm10(inst);
break; break;
case rv_codec_zcb_lb: case rv_codec_zcb_lb:

View File

@ -290,7 +290,7 @@ enum {
#define rv_fmt_fd_vs2 "O\t3,F" #define rv_fmt_fd_vs2 "O\t3,F"
#define rv_fmt_vd_vm "O\tDm" #define rv_fmt_vd_vm "O\tDm"
#define rv_fmt_vsetvli "O\t0,1,v" #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_rs1_rs2_zce_ldst "O\t2,i(1)"
#define rv_fmt_push_rlist "O\tx,-i" #define rv_fmt_push_rlist "O\tx,-i"
#define rv_fmt_pop_rlist "O\tx,i" #define rv_fmt_pop_rlist "O\tx,i"