qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/1] tcg/loongarch64: Fix tcg_out_mov() Aborted


From: gaosong
Subject: Re: [PATCH 1/1] tcg/loongarch64: Fix tcg_out_mov() Aborted
Date: Tue, 21 Nov 2023 09:50:10 +0800
User-agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0

在 2023/11/20 下午11:59, Richard Henderson 写道:
On 11/19/23 22:59, Song Gao wrote:
On LoongArch host,  we got an Aborted from tcg_out_mov().

qemu-x86_64 configure with '--enable-debug'.

(gdb) b /home1/gaosong/code/qemu/tcg/loongarch64/tcg-target.c.inc:312
Breakpoint 1 at 0x2576f0: file /home1/gaosong/code/qemu/tcg/loongarch64/tcg-target.c.inc, line 312.
(gdb) run hello
[...]
Thread 1 "qemu-x86_64" hit Breakpoint 1, tcg_out_mov (s=0xaaaae91760 <tcg_init_ctx>, type=TCG_TYPE_V128, ret=TCG_REG_V2,      arg=TCG_REG_V0) at /home1/gaosong/code/qemu/tcg/loongarch64/tcg-target.c.inc:312
312           g_assert_not_reached();
(gdb) bt
#0  tcg_out_mov (s=0xaaaae91760 <tcg_init_ctx>, type=TCG_TYPE_V128, ret=TCG_REG_V2, arg=TCG_REG_V0)
     at /home1/gaosong/code/qemu/tcg/loongarch64/tcg-target.c.inc:312
#1  0x000000aaaad0fee0 in tcg_reg_alloc_mov (s=0xaaaae91760 <tcg_init_ctx>, op=0xaaaaf67c20) at ../tcg/tcg.c:4632 #2  0x000000aaaad142f4 in tcg_gen_code (s=0xaaaae91760 <tcg_init_ctx>, tb=0xffe8030340 <code_gen_buffer+197328>,
     pc_start=4346094) at ../tcg/tcg.c:6135
[...]
(gdb) c
Continuing.
**
ERROR:/home1/gaosong/code/qemu/tcg/loongarch64/tcg-target.c.inc:312:tcg_out_mov: code should not be reached Bail out! ERROR:/home1/gaosong/code/qemu/tcg/loongarch64/tcg-target.c.inc:312:tcg_out_mov: code should not be reached

Thread 1 "qemu-x86_64" received signal SIGABRT, Aborted.
0x000000fff7b1c390 in raise () from /lib64/libc.so.6
(gdb) q

Signed-off-by: Song Gao <gaosong@loongson.cn>
---
  tcg/loongarch64/tcg-target.c.inc | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc
index a588fb3085..5f68040230 100644
--- a/tcg/loongarch64/tcg-target.c.inc
+++ b/tcg/loongarch64/tcg-target.c.inc
@@ -308,6 +308,9 @@ static bool tcg_out_mov(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg)
           */
          tcg_out_opc_or(s, ret, arg, TCG_REG_ZERO);
          break;
+    case TCG_TYPE_V128:
+        tcg_out_opc_vaddi_du(s, ret, arg, 0);
+        break;

Is add with immediate zero really the canonical alias for "vector move"?

There is often some form that is recommended by the architecture, so that it may be recognized for register renaming.  Usually it is some form of logic instruction, not arithmetic.  I see that LLVM emits "vori.b dst, src, 0" for this case.
adfadf
you are right,
I see  the insn  'mov '  opcode is '00150000'.  it is 'or dst, src, zero'.

Thanks.
Song Gao
Regardless, this patch works to fix the assert so,

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~




reply via email to

[Prev in Thread] Current Thread [Next in Thread]