11efde54f2
tcg: Drop TCGContext.page_{mask,bits}
...
Use exec/target_page.h instead of independent variables.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-05-28 08:08:47 +01:00
eafecf0805
tcg: Remove tcg_out_op
...
All integer opcodes are now converted to TCGOutOp.
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:17 -07:00
86fe5c2597
tcg: Convert qemu_st{2} to TCGOutOpLdSt{2}
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
3bedb9d3e2
tcg: Convert qemu_ld{2} to TCGOutOpLoad{2}
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
aae2456ac0
tcg: Merge INDEX_op_{ld,st}_{i32,i64,i128}
...
Merge into INDEX_op_{ld,st,ld2,st2}, where "2" indicates that two
inputs or outputs are required. This simplifies the processing of
i64/i128 depending on host word size.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
33aba058c8
tcg: Remove INDEX_op_qemu_st8_*
...
The i386 backend can now check TCGOP_FLAGS to select
the correct set of constraints.
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:17 -07:00
4a686aa9d9
tcg: Convert st to TCGOutOpStore
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
0de5c9d1f5
tcg: Convert ld to TCGOutOpLoad
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
fee03fdde3
tcg: Formalize tcg_out_goto_ptr
...
Split these functions out from tcg_out_op.
Define outop_goto_ptr generically.
Call tcg_out_goto_ptr from tcg_reg_alloc_op.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
3752a5a5ba
tcg: Formalize tcg_out_br
...
Split these functions out from tcg_out_op.
Call it directly from tcg_gen_code.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
e038696c92
tcg: Formalize tcg_out_mb
...
Most tcg backends already have a function for this;
the rest can split one out from tcg_out_op.
Call it directly from tcg_gen_code.
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:17 -07:00
f2b1708e80
tcg: Remove add2/sub2 opcodes
...
All uses have been replaced by add/sub carry opcodes.
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:17 -07:00
b15c0d11a2
tcg/arm: Implement add/sub carry opcodes
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
ee60315210
tcg: Add TCGOutOp structures for add/sub carry opcodes
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
8dc1bdf795
tcg: Do not default add2/sub2_i32 for 32-bit hosts
...
Require TCG_TARGET_HAS_{add2,sub2}_i32 be defined,
one way or another.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
c8f9f70047
tcg: Convert extract2 to TCGOutOpExtract2
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
cf4905c031
tcg: Convert deposit to TCGOutOpDeposit
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-28 13:40:17 -07:00
05a1129e23
tcg: Convert sextract to TCGOutOpExtract
...
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
5a4d034f3c
tcg: Convert extract to TCGOutOpExtract
...
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
613b571c93
tcg: Convert bswap64 to TCGOutOpUnary
...
Use TCGOutOpUnary instead of TCGOutOpBswap because the
flags are not used with this opcode; they are merely
present for uniformity with the smaller bswaps.
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
d7b15a25a7
tcg: Convert bswap32 to TCGOutOpBswap
...
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
5fa8e13872
tcg: Convert bswap16 to TCGOutOpBswap
...
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
e579c717cb
tcg: Convert setcond2_i32 to TCGOutOpSetcond2
...
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
f408df587a
tcg: Convert brcond2_i32 to TCGOutOpBrcond2
...
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
cd2d9b181a
tcg/arm: Expand arguments to tcg_out_cmp2
...
Pass explicit arguments instead of arrays.
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
1f406e4678
tcg: Convert movcond to TCGOutOpMovcond
...
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
99ac4706b3
tcg: Convert brcond to TCGOutOpBrcond
...
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
5a7b38c8ca
tcg: Convert setcond, negsetcond to TCGOutOpSetcond
...
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
f791458932
tcg: Remove TCG_TARGET_HAS_negsetcond_{i32,i64}
...
All targets now provide negsetcond, so remove the conditional.
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
d37bc370fc
tcg: Convert mulu2 to TCGOutOpMul2
...
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
5641afdf9b
tcg: Convert muls2 to TCGOutOpMul2
...
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
f8fa1dae3d
tcg: Convert ctpop to TCGOutOpUnary
...
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
e3fcde59c9
tcg: Convert ctz 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
8b915879b0
tcg: Convert clz 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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