qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL v2 01/20] tcg/optimize: Do not attempt to constant fold neg_vec
Date: Tue,  9 Apr 2024 09:35:44 -1000	[thread overview]
Message-ID: <20240409193603.1703216-2-richard.henderson@linaro.org> (raw)
In-Reply-To: <20240409193603.1703216-1-richard.henderson@linaro.org>

Split out the tail of fold_neg to fold_neg_no_const so that we
can avoid attempting to constant fold vector negate.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2150
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/optimize.c                    | 17 ++++++++---------
 tests/tcg/aarch64/test-2150.c     | 12 ++++++++++++
 tests/tcg/aarch64/Makefile.target |  2 +-
 3 files changed, 21 insertions(+), 10 deletions(-)
 create mode 100644 tests/tcg/aarch64/test-2150.c

diff --git a/tcg/optimize.c b/tcg/optimize.c
index 275db77b42..2e9e5725a9 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -1990,16 +1990,10 @@ static bool fold_nand(OptContext *ctx, TCGOp *op)
     return false;
 }
 
-static bool fold_neg(OptContext *ctx, TCGOp *op)
+static bool fold_neg_no_const(OptContext *ctx, TCGOp *op)
 {
-    uint64_t z_mask;
-
-    if (fold_const1(ctx, op)) {
-        return true;
-    }
-
     /* Set to 1 all bits to the left of the rightmost.  */
-    z_mask = arg_info(op->args[1])->z_mask;
+    uint64_t z_mask = arg_info(op->args[1])->z_mask;
     ctx->z_mask = -(z_mask & -z_mask);
 
     /*
@@ -2010,6 +2004,11 @@ static bool fold_neg(OptContext *ctx, TCGOp *op)
     return true;
 }
 
+static bool fold_neg(OptContext *ctx, TCGOp *op)
+{
+    return fold_const1(ctx, op) || fold_neg_no_const(ctx, op);
+}
+
 static bool fold_nor(OptContext *ctx, TCGOp *op)
 {
     if (fold_const2_commutative(ctx, op) ||
@@ -2418,7 +2417,7 @@ static bool fold_sub_to_neg(OptContext *ctx, TCGOp *op)
     if (have_neg) {
         op->opc = neg_op;
         op->args[1] = op->args[2];
-        return fold_neg(ctx, op);
+        return fold_neg_no_const(ctx, op);
     }
     return false;
 }
diff --git a/tests/tcg/aarch64/test-2150.c b/tests/tcg/aarch64/test-2150.c
new file mode 100644
index 0000000000..fb86c11958
--- /dev/null
+++ b/tests/tcg/aarch64/test-2150.c
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/* See https://gitlab.com/qemu-project/qemu/-/issues/2150 */
+
+int main()
+{
+    asm volatile(
+        "movi     v6.4s, #1\n"
+        "movi     v7.4s, #0\n"
+        "sub      v6.2d, v7.2d, v6.2d\n"
+        : : : "v6", "v7");
+    return 0;
+}
diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
index 0efd565f05..70d728ae9a 100644
--- a/tests/tcg/aarch64/Makefile.target
+++ b/tests/tcg/aarch64/Makefile.target
@@ -10,7 +10,7 @@ VPATH 		+= $(AARCH64_SRC)
 
 # Base architecture tests
 AARCH64_TESTS=fcvt pcalign-a64 lse2-fault
-AARCH64_TESTS += test-2248
+AARCH64_TESTS += test-2248 test-2150
 
 fcvt: LDFLAGS+=-lm
 
-- 
2.34.1



  reply	other threads:[~2024-04-09 19:38 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-09 19:35 [PULL v2 00/20] misc patch queue Richard Henderson
2024-04-09 19:35 ` Richard Henderson [this message]
2024-04-09 19:35 ` [PULL v2 02/20] linux-user: Fix waitid return of siginfo_t and rusage Richard Henderson
2024-04-09 19:35 ` [PULL v2 03/20] linux-user: replace calloc() with g_new0() Richard Henderson
2024-04-09 19:35 ` [PULL v2 04/20] target/hppa: Fix IIAOQ, IIASQ for pa2.0 Richard Henderson
2024-04-09 19:35 ` [PULL v2 05/20] target/sh4: mac.w: memory accesses are 16-bit words Richard Henderson
2024-04-09 19:35 ` [PULL v2 06/20] target/sh4: Merge mach and macl into a union Richard Henderson
2024-04-09 19:35 ` [PULL v2 07/20] target/sh4: Fix mac.l with saturation enabled Richard Henderson
2024-04-09 19:35 ` [PULL v2 08/20] target/sh4: Fix mac.w " Richard Henderson
2024-04-09 19:35 ` [PULL v2 09/20] target/sh4: add missing CHECK_NOT_DELAY_SLOT Richard Henderson
2024-04-09 19:35 ` [PULL v2 10/20] target/m68k: Map FPU exceptions to FPSR register Richard Henderson
2024-04-09 19:35 ` [PULL v2 11/20] tcg: Add TCGContext.emit_before_op Richard Henderson
2024-04-09 19:35 ` [PULL v2 12/20] accel/tcg: Add insn_start to DisasContextBase Richard Henderson
2024-04-09 19:35 ` [PULL v2 13/20] target/arm: Use insn_start from DisasContextBase Richard Henderson
2024-04-09 19:35 ` [PULL v2 14/20] target/hppa: " Richard Henderson
2024-04-09 19:35 ` [PULL v2 15/20] target/i386: Preserve DisasContextBase.insn_start across rewind Richard Henderson
2024-04-09 19:35 ` [PULL v2 16/20] target/microblaze: Use insn_start from DisasContextBase Richard Henderson
2024-04-09 19:36 ` [PULL v2 17/20] target/riscv: " Richard Henderson
2024-04-09 19:36 ` [PULL v2 18/20] target/s390x: " Richard Henderson
2024-04-09 19:36 ` [PULL v2 19/20] accel/tcg: Improve can_do_io management Richard Henderson
2024-04-09 19:36 ` [PULL v2 20/20] linux-user: Preserve unswapped siginfo_t for strace Richard Henderson
2024-04-10 13:42 ` [PULL v2 00/20] misc patch queue Peter Maydell
2024-04-10 16:10 ` Michael Tokarev
2024-04-10 16:38   ` Richard Henderson
2024-04-10 17:44     ` Michael Tokarev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240409193603.1703216-2-richard.henderson@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).