All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-5.1] tcg: Save/restore vecop_list around minmax fallback
@ 2020-07-10 23:37 Richard Henderson
  0 siblings, 0 replies; only message in thread
From: Richard Henderson @ 2020-07-10 23:37 UTC (permalink / raw)
  To: qemu-devel; +Cc: alex.bennee

Forgetting this asserts when tcg_gen_cmp_vec is called from
within tcg_gen_cmpsel_vec.

Fixes: 72b4c792c7a
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---

I found this while testing SVE2 (and the patch is included in the
large SVE2 patch set), but it seems like it should be reproducible
with master.  What's needed is a guest vector minmax operation of
a size that is not supported by the host.  In the case of x86_64
host, that would be a 64-bit minmax.


r~

---
 tcg/tcg-op-vec.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tcg/tcg-op-vec.c b/tcg/tcg-op-vec.c
index f784517d84..ed6fb55fe1 100644
--- a/tcg/tcg-op-vec.c
+++ b/tcg/tcg-op-vec.c
@@ -657,7 +657,9 @@ static void do_minmax(unsigned vece, TCGv_vec r, TCGv_vec a,
                       TCGv_vec b, TCGOpcode opc, TCGCond cond)
 {
     if (!do_op3(vece, r, a, b, opc)) {
+        const TCGOpcode *hold_list = tcg_swap_vecop_list(NULL);
         tcg_gen_cmpsel_vec(cond, vece, r, a, b, a, b);
+        tcg_swap_vecop_list(hold_list);
     }
 }
 
-- 
2.25.1



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2020-07-10 23:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-10 23:37 [PATCH for-5.1] tcg: Save/restore vecop_list around minmax fallback Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.