|
From: | gaosong |
Subject: | Re: [PATCH 1/1] target/loongarch: LL.{W/D} need writes val to dest register after sign extension |
Date: | Fri, 3 Feb 2023 15:42:54 +0800 |
User-agent: | Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 |
在 2023/2/2 下午1:51, Richard Henderson 写道:
On 2/1/23 17:16, Song Gao wrote:The Manual 2.2.7.2: 'The LL.{W/D} instruction retrieves a word/double-word data from the specified address of the memory and writes it to the general register rd after sign extension.' Signed-off-by: Song Gao <gaosong@loongson.cn> --- target/loongarch/insn_trans/trans_atomic.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)The sign-extension is provided by TRANS(ll_w, gen_ll, MO_TESL) ^^^^^^^ this. So what's the issue?
Sorry for the late reply. It's our other code problem, you can ignore this patch :-) Thanks Song Gao
r~diff --git a/target/loongarch/insn_trans/trans_atomic.c.inc b/target/loongarch/insn_trans/trans_atomic.c.incindex 6763c1c301..24fea558d6 100644 --- a/target/loongarch/insn_trans/trans_atomic.c.inc +++ b/target/loongarch/insn_trans/trans_atomic.c.inc@@ -12,8 +12,8 @@ static bool gen_ll(DisasContext *ctx, arg_rr_i *a, MemOp mop)tcg_gen_addi_tl(t0, src1, a->imm); tcg_gen_qemu_ld_i64(dest, t0, ctx->mem_idx, mop); tcg_gen_st_tl(t0, cpu_env, offsetof(CPULoongArchState, lladdr)); + gen_set_gpr(a->rd, dest, EXT_SIGN); tcg_gen_st_tl(dest, cpu_env, offsetof(CPULoongArchState, llval)); - gen_set_gpr(a->rd, dest, EXT_NONE); tcg_temp_free(t0); return true;
[Prev in Thread] | Current Thread | [Next in Thread] |