Richard Henderson
2c047bdb77
tcg/optimize: Don't fold INDEX_op_and_vec to extract
...
There is no such thing as vector extract.
Fixes: 932522a9dd ("tcg/optimize: Fold and to extract during optimize")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3036
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
2025-07-21 08:09:04 -07:00
Richard Henderson
c86da2b1dd
tcg: Use uintptr_t in tcg_malloc implementation
...
Avoid ubsan failure with clang-20,
tcg.h:715:19: runtime error: applying non-zero offset 64 to null pointer
by not using pointers.
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-07-11 10:43:47 -06:00
Richard Henderson
0d0fc3f465
tcg: Fix constant propagation in tcg_reg_alloc_dup
...
The scalar constant must be replicated for dup.
Cc: qemu-stable@nongnu.org
Fixes: bab1671f0f ("tcg: Manually expand INDEX_op_dup_vec")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3002
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:56 -06:00
Richard Henderson
169d253e1f
tcg/riscv: Fix typo in tgen_extract
...
Fix the direction of the shift, introduced when converting
the codebase to TCGOutOp* and small tgen_* helpers.
Fixes: 5a4d034f3c ("tcg: Convert extract to TCGOutOpExtract")
Reported-by: Andrea Bolognani <abologna@redhat.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Andrea Bolognani <abologna@redhat.com >
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
7630de24ba
tcg/optimize: Simplify fold_eqv constant checks
...
Both cases are handled by fold_xor after conversion.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
61617f715e
tcg/optimize: Simplify fold_orc constant checks
...
If operand 2 is constant, then the computation of z_mask and a_mask
will produce the same results as the explicit check via fold_xi_to_i.
Shift the calls of fold_xx_to_i and fold_ix_to_not down below the
i2->is_const check.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
3c75cb4d64
tcg/optimize: Simplify fold_andc constant checks
...
If operand 2 is constant, then the computation of z_mask and a_mask
will produce the same results as the explicit check via fold_xi_to_i.
Shift the calls of fold_xx_to_i and fold_ix_to_not down below the
i2->is_const check.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
9ffa5420e9
tcg/optimize: Simplify fold_and constant checks
...
If operand 2 is constant, then the computation of z_mask
and a_mask will produce the same results as the explicit
checks via fold_xi_to_i and fold_xi_to_x. Shift the call
of fold_xx_to_x down below the ti_is_const(t2) check.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
932522a9dd
tcg/optimize: Fold and to extract during optimize
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
e532a39352
tcg/optimize: Use fold_and in do_constant_folding_cond[12]
...
When lowering tst comparisons, completely fold the and
opcode that we generate.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
03329e3ce4
tcg/optimize: Build and use o_bits in fold_shift
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
f4a818a08d
tcg/optimize: Build and use o_bits in fold_sextract
...
This was the last use of fold_affected_mask,
now fully replaced by fold_masks_zosa.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
08d676a46b
tcg/optimize: Build and use o_bits in fold_movcond
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
f78342472f
tcg/optimize: Build and use o_bits in fold_extu
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
de85257f14
tcg/optimize: Build and use o_bits in fold_exts
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
83c47c3027
tcg/optimize: Build and use z_bits and o_bits in fold_extract2
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:38 -06:00
Richard Henderson
fcde7363d3
tcg/optimize: Build and use o_bits in fold_extract
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00
Richard Henderson
9d80b3c890
tcg/optimize: Build and use o_bits in fold_deposit
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00
Richard Henderson
e6e3733bf1
tcg/optimize: Build and use o_bits in fold_bswap
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00
Richard Henderson
787190e3f4
tcg/optimize: Build and use o_bits in fold_xor
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00
Richard Henderson
cc4033ee47
tcg/optimize: Build and use zero, one and affected bits in fold_orc
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00
Richard Henderson
84b399df9a
tcg/optimize: Build and use one and affected bits in fold_or
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00
Richard Henderson
d89504b047
tcg/optimize: Build and use z_bits and o_bits in fold_not
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00
Richard Henderson
682d6d57ba
tcg/optimize: Build and use z_bits and o_bits in fold_nor
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00
Richard Henderson
16559c3ecb
tcg/optimize: Build and use z_bits and o_bits in fold_nand
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-06-30 07:42:37 -06:00