From: Richard Henderson Date: Fri, 18 Jul 2025 17:34:06 +0000 (+0000) Subject: tcg/optimize: Don't fold INDEX_op_and_vec to extract X-Git-Tag: v10.1.0-rc0~4^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c047bdb77e8f636936edd9ac5000521c9580477;p=thirdparty%2Fqemu.git tcg/optimize: Don't fold INDEX_op_and_vec to extract There is no such thing as vector extract. Fixes: 932522a9ddc1 ("tcg/optimize: Fold and to extract during optimize") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3036 Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Tested-by: Pierrick Bouvier Reviewed-by: Peter Maydell --- diff --git a/tcg/optimize.c b/tcg/optimize.c index 62a128bc9b..3638ab9fea 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -1454,7 +1454,7 @@ static bool fold_and(OptContext *ctx, TCGOp *op) a_mask = t1->z_mask & ~t2->o_mask; if (!fold_masks_zosa_int(ctx, op, z_mask, o_mask, s_mask, a_mask)) { - if (ti_is_const(t2)) { + if (op->opc == INDEX_op_and && ti_is_const(t2)) { /* * Canonicalize on extract, if valid. This aids x86 with its * 2 operand MOVZBL and 2 operand AND, selecting the TCGOpcode