izzy2lost
d726dbc780
sloppy stuff
2026-04-08 02:34:59 -04:00
WANG Rui and Richard Henderson
a50347a414
tcg/optimize: Fix folding of vector bitsel
...
It looks like a typo. When the false value (C) is the constant -1, the
correct fold should be: R = B | ~A
Reproducer (LoongArch64 assembly):
.text
.globl _start
_start:
vldi $vr1, 3073
vldi $vr2, 1023
vbitsel.v $vr0, $vr2, $vr1, $vr2
vpickve2gr.d $a1, $vr0, 1
xori $a0, $a1, 1
li.w $a7, 93
syscall 0
Fixes: e58b977238 ("tcg/optimize: Optimize bitsel_vec")
Link: https://github.com/llvm/llvm-project/issues/159610
Signed-off-by: WANG Rui <wangrui@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20250919124901.2756538-1-wangrui@loongson.cn >
2025-09-23 16:53:38 -07:00
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
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
Richard Henderson
33fcebadd0
tcg/optimize: Build and use z_bits and o_bits in fold_eqv
...
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