Richard Henderson
005a87e148
tcg: Merge INDEX_op_rot{l,r}_{i32,i64}
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
03568c0d53
tcg: Convert rotl, rotr to TCGOutOpBinary
...
For aarch64, arm, loongarch64, mips, we can drop rotl.
For ppc, s390x we can drop rotr.
Only x86, riscv, tci have both rotl and rotr.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
8726c7d799
tcg: Do not require both rotr and rotl from the backend
...
Many host architectures do not implement both rotate right
and rotate left and require the compiler to negate the
shift count to rotate the opposite direction. We have been
requiring the backend to perform this transformation.
Do this during opcode expansion so that the next patch
can drop support where possible in the backend.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
3949f365eb
tcg: Merge INDEX_op_sar_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
b5aafbaa83
tcg: Convert sar to TCGOutOpBinary
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
74dbd36f1f
tcg: Merge INDEX_op_shr_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
edd6ba8a6b
tcg: Convert shr to TCGOutOpBinary
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
6ca594517a
tcg: Merge INDEX_op_shl_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
27d21ee7c7
tcg: Convert shl to TCGOutOpBinary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
cd9acd2049
tcg: Merge INDEX_op_remu_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
967e7ccd9c
tcg: Convert remu to TCGOutOpBinary
...
For TCI, we're losing type information in the interpreter.
Introduce a tci-specific opcode to handle the difference.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
9a6bc1840e
tcg: Merge INDEX_op_rem_{i32,i64}
...
Rename to INDEX_op_rems to emphasize signed inputs,
and mirroring INDEX_op_remu_*.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
646f36fead
tcg: Convert rem to TCGOutOpBinary
...
For TCI, we're losing type information in the interpreter.
Introduce a tci-specific opcode to handle the difference.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
8109598b68
tcg: Merge INDEX_op_divu2_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
9bf558ed17
tcg: Convert divu2 to TCGOutOpDivRem
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
ee1805b9e6
tcg: Merge INDEX_op_div2_{i32,i64}
...
Rename to INDEX_op_divs2 to emphasize signed inputs,
and mirroring INDEX_op_divu2_*. Document the opcode.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
d6cad9c927
tcg: Convert div2 to TCGOutOpDivRem
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
961b80aecd
tcg: Merge INDEX_op_divu_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
6d1a2365ea
tcg: Convert divu to TCGOutOpBinary
...
For TCI, we're losing type information in the interpreter.
Introduce a tci-specific opcode to handle the difference.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
b2c514f9d5
tcg: Merge INDEX_op_div_{i32,i64}
...
Rename to INDEX_op_divs to emphasize signed inputs,
and mirroring INDEX_op_divu_*.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
0cdacacebb
tcg: Convert div to TCGOutOpBinary
...
For TCI, we're losing type information in the interpreter.
Introduce a tci-specific opcode to handle the difference.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
c742824dd8
tcg: Merge INDEX_op_mulsh_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
a9983f8129
tcg: Convert mulsh to TCGOutOpBinary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
aa28c9ef8e
tcg: Merge INDEX_op_muluh_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
937246f2ee
tcg: Convert muluh to TCGOutOpBinary
...
Remove unreachable mul[su]h_i32 leftovers from commit aeb6326ec5
("tcg/riscv: Require TCG_TARGET_REG_BITS == 64").
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
d2c3ecadea
tcg: Merge INDEX_op_mul_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
1e4ac0ea5d
tcg: Convert mul to TCGOutOpBinary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
5c62d3779b
tcg: Merge INDEX_op_not_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
592982bf04
tcg: Convert not to TCGOutOpUnary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
6971358747
tcg: Merge INDEX_op_neg_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
e126a91c38
tcg: Convert neg to TCGOutOpUnary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
60f34f55f1
tcg: Merge INDEX_op_sub_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
3f057e2400
tcg: Convert sub to TCGOutOpSubtract
...
Create a special subclass for sub, because two backends can
support "subtract from immediate". Drop all backend support
for an immediate as the second operand, as we transform sub
to add during optimize.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
a3b37bc6fa
tcg/arm: Fix constraints for sub
...
In 7536b82d28 we lost the rI constraint that allowed the use of
RSB to perform reg = imm - reg. At the same time, drop support
for reg = reg - imm, which is now transformed generically to
addition, and need not be handled by the backend.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
3a8c4e9e53
tcg: Merge INDEX_op_nor_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:16 -07:00
Richard Henderson
3f6b223012
tcg: Convert nor to TCGOutOpBinary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
8fb04b8295
tcg/loongarch64: Do not accept constant argument to nor
...
The instruction set does not implement nor with immediate.
There is no reason to pretend that we do.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
59379a45af
tcg: Merge INDEX_op_nand_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
e5a3162cb6
tcg: Convert nand to TCGOutOpBinary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
5c0968a7e1
tcg: Merge INDEX_op_eqv_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
18bc920916
tcg: Convert eqv to TCGOutOpBinary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
46c68d7506
tcg/optimize: Fold eqv with immediate to xor
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
fffd3dc902
tcg: Merge INDEX_op_xor_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
d3e56f3824
tcg: Convert xor to TCGOutOpBinary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
6aba25ebb9
tcg: Merge INDEX_op_orc_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
d262ae6081
tcg: Convert orc to TCGOutOpBinary
...
At the same time, drop all backend support for immediate
operands, as we now transform orc to or during optimize.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
50e40ecd7a
tcg/optimize: Fold orc with immediate to or
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
49bd751497
tcg: Merge INDEX_op_or_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
6497af5b0d
tcg: Convert or to TCGOutOpBinary
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00
Richard Henderson
46f96bff16
tcg: Merge INDEX_op_andc_{i32,i64}
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:15 -07:00