#
cda7f93f |
| 19-Jan-2025 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Implement add/sub carry opcodes
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
#
19b9fc2a |
| 18-Jan-2025 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Add TCG_CT_CONST_N32
We were using S32 | U32 for add2/sub2. But the ALGFI and SLGFI insns that implement this both have uint32_t immediates. This makes the composite range balanced and e
tcg/s390x: Add TCG_CT_CONST_N32
We were using S32 | U32 for add2/sub2. But the ALGFI and SLGFI insns that implement this both have uint32_t immediates. This makes the composite range balanced and enables use of -0xffffffff ... -0x80000001.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
1f406e46 |
| 10-Jan-2025 |
Richard Henderson <richard.henderson@linaro.org> |
tcg: Convert movcond to TCGOutOpMovcond
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
#
18bc9209 |
| 06-Jan-2025 |
Richard Henderson <richard.henderson@linaro.org> |
tcg: Convert eqv to TCGOutOpBinary
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
#
a341c84e |
| 06-Jan-2025 |
Richard Henderson <richard.henderson@linaro.org> |
tcg: Convert andc to TCGOutOpBinary
At the same time, drop all backend support for immediate operands, as we now transform andc to and during optimize.
Reviewed-by: Philippe Mathieu-Daudé <philmd@l
tcg: Convert andc to TCGOutOpBinary
At the same time, drop all backend support for immediate operands, as we now transform andc to and during optimize.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
50695fb8 |
| 11-Sep-2024 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Optimize cmpsel with constant 0/-1 arguments
These can be simplified to and/or/andc/orc, avoiding the load of the constantinto a register.
Signed-off-by: Richard Henderson <richard.hende
tcg/s390x: Optimize cmpsel with constant 0/-1 arguments
These can be simplified to and/or/andc/orc, avoiding the load of the constantinto a register.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
1c7d05ff |
| 11-Sep-2024 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Implement cmpsel_vec
Do not allow cmpsel_vec to be expanded early, so that we can make the correct decision wrt the sense of the comparison.
Signed-off-by: Richard Henderson <richard.hen
tcg/s390x: Implement cmpsel_vec
Do not allow cmpsel_vec to be expanded early, so that we can make the correct decision wrt the sense of the comparison.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
d95b51d3 |
| 28-Oct-2023 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Add TCG_CT_CONST_CMP
Better constraint for tcg_out_cmp, based on the comparison.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henders
tcg/s390x: Add TCG_CT_CONST_CMP
Better constraint for tcg_out_cmp, based on the comparison.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
cbaddf30 |
| 28-Oct-2023 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Split constraint A into J+U
Signed 33-bit == signed 32-bit + unsigned 32-bit.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@
tcg/s390x: Split constraint A into J+U
Signed 33-bit == signed 32-bit + unsigned 32-bit.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
22d2e535 |
| 19-Jul-2023 |
Ilya Leoshkevich <iii@linux.ibm.com> |
tcg/{i386, s390x}: Add earlyclobber to the op_add2's first output
i386 and s390x implementations of op_add2 require an earlyclobber, which is currently missing. This breaks VCKSM in s390x guests. E.
tcg/{i386, s390x}: Add earlyclobber to the op_add2's first output
i386 and s390x implementations of op_add2 require an earlyclobber, which is currently missing. This breaks VCKSM in s390x guests. E.g., on x86_64 the following op:
add2_i32 tmp2,tmp3,tmp2,tmp3,tmp3,tmp2 dead: 0 2 3 4 5 pref=none,0xffff
is translated to:
addl %ebx, %r12d adcl %r12d, %ebx
Introduce a new C_N1_O1_I4 constraint, and make sure that earlyclobber of aliased outputs is honored.
Cc: qemu-stable@nongnu.org Fixes: 82790a870992 ("tcg: Add markup for output requires new register") Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230719221310.1968845-7-iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
4caad79f |
| 19-Apr-2023 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Support 128-bit load/store
Use LPQ/STPQ when 16-byte atomicity is required. Note that these instructions require 16-byte alignment.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
tcg/s390x: Support 128-bit load/store
Use LPQ/STPQ when 16-byte atomicity is required. Note that these instructions require 16-byte alignment.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
94901422 |
| 07-Apr-2023 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Simplify constraints on qemu_ld/st
Adjust the softmmu tlb to use R0+R1, not any of the normally available registers. Since we handle overlap betwen inputs and helper arguments, we can al
tcg/s390x: Simplify constraints on qemu_ld/st
Adjust the softmmu tlb to use R0+R1, not any of the normally available registers. Since we handle overlap betwen inputs and helper arguments, we can allow any allocatable reg.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
32c256ed |
| 08-Dec-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Tighten constraints for 64-bit compare
Give 64-bit comparison second operand a signed 33-bit immediate. This is the smallest superset of uint32_t and int32_t, as used by CLGFI and CGFI re
tcg/s390x: Tighten constraints for 64-bit compare
Give 64-bit comparison second operand a signed 33-bit immediate. This is the smallest superset of uint32_t and int32_t, as used by CLGFI and CGFI respectively. The rest of the 33-bit space can be loaded into TCG_TMP0. Drop use of the constant pool.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
bfff8518 |
| 24-Feb-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Use tgen_movcond_int in tgen_clz
Reuse code from movcond to conditionally copy a2 to dest, based on the condition codes produced by FLOGR.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.co
tcg/s390x: Use tgen_movcond_int in tgen_clz
Reuse code from movcond to conditionally copy a2 to dest, based on the condition codes produced by FLOGR.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
23d1394a |
| 24-Feb-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Generalize movcond implementation
Generalize movcond to support pre-computed conditions, and the same set of arguments at all times. This will be assumed by a following patch, which need
tcg/s390x: Generalize movcond implementation
Generalize movcond to support pre-computed conditions, and the same set of arguments at all times. This will be assumed by a following patch, which needs to reuse tgen_movcond_int.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
6c9b5c0f |
| 24-Feb-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Support MIE3 logical operations
This is andc, orc, nand, nor, eqv. We can use nor for implementing not.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson
tcg/s390x: Support MIE3 logical operations
This is andc, orc, nand, nor, eqv. We can use nor for implementing not.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
4134083f |
| 08-Dec-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Tighten constraints for and_i64
Let the register allocator handle such immediates by matching only what one insn can achieve.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off
tcg/s390x: Tighten constraints for and_i64
Let the register allocator handle such immediates by matching only what one insn can achieve.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
b2509acc |
| 08-Dec-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Tighten constraints for or_i64 and xor_i64
Drop support for sequential OR and XOR, as the serial dependency is slower than loading the constant first. Let the register allocator handle s
tcg/s390x: Tighten constraints for or_i64 and xor_i64
Drop support for sequential OR and XOR, as the serial dependency is slower than loading the constant first. Let the register allocator handle such immediates by matching only what one insn can achieve.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
668ce343 |
| 24-Feb-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Support MIE2 MGRK instruction
The MIE2 facility adds a 3-operand signed 64x64->128 multiply.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.h
tcg/s390x: Support MIE2 MGRK instruction
The MIE2 facility adds a 3-operand signed 64x64->128 multiply.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
92c89a07 |
| 24-Feb-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Support MIE2 multiply single instructions
The MIE2 facility adds 3-operand versions of multiply.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richa
tcg/s390x: Support MIE2 multiply single instructions
The MIE2 facility adds 3-operand versions of multiply.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
4143f78d |
| 10-Oct-2022 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Use register pair allocation for div and mulu2
Previously we hard-coded R2 and R3.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@l
tcg/s390x: Use register pair allocation for div and mulu2
Previously we hard-coded R2 and R3.
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
9bca986d |
| 15-Sep-2020 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Implement TCG_TARGET_HAS_bitsel_vec
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
#
22cb37b4 |
| 15-Sep-2020 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Implement vector shift operations
Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
#
ae77bbe5 |
| 15-Sep-2020 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Implement andc, orc, abs, neg, not vector operations
These logical and arithmetic operations are optional but trivial.
Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Ri
tcg/s390x: Implement andc, orc, abs, neg, not vector operations
These logical and arithmetic operations are optional but trivial.
Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
34ef7676 |
| 14-Sep-2020 |
Richard Henderson <richard.henderson@linaro.org> |
tcg/s390x: Add host vector framework
Add registers and function stubs. The functionality is disabled via squashing s390_facilities[2] to 0.
We must still include results for the mandatory opcodes
tcg/s390x: Add host vector framework
Add registers and function stubs. The functionality is disabled via squashing s390_facilities[2] to 0.
We must still include results for the mandatory opcodes in tcg_target_op_def, as all opcodes are checked during tcg init.
Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|