On 20/11/23 07: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

Available since commit af88a28414 ("tcg/loongarch64: Import LSX
instructions"), missed when LSX host instruction got enabled in
commit 16288ded94 ("tcg/loongarch64: Lower basic tcg vec ops to LSX").


Fixes: 16288ded94 ("tcg/loongarch64: Lower basic tcg vec ops to LSX")
Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org>

Signed-off-by: Song Gao <gaos...@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;
      default:
          g_assert_not_reached();
      }


Reply via email to