]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V/testsuite: Add branchless cases for generic integer cond adds
authorMaciej W. Rozycki <macro@embecosm.com>
Wed, 22 Nov 2023 01:18:29 +0000 (01:18 +0000)
committerMaciej W. Rozycki <macro@embecosm.com>
Wed, 22 Nov 2023 01:18:29 +0000 (01:18 +0000)
commit5e6903ddd39e058b9a8304a77765529d64819966
treeaefb8e4b5af09b66473d532f5cde715dd8a9ab14
parentbbfe2639e18cbaa431f82d69fb79f34562a60881
RISC-V/testsuite: Add branchless cases for generic integer cond adds

Verify, for generic integer conditional-add operations, if-conversion
to trigger via `noce_try_addcc' at the respective sufficiently high
`-mbranch-cost=' settings that make branchless code sequences produced
by if-conversion cheaper than their original branched equivalents, and,
where applicable, that extraneous instructions such as SNEZ, etc. are
not present in output.  Cover all integer relational operations to make
sure no corner case escapes.

The reason to XFAIL SImode tests for RV64 targets is the compiler thinks
it has to sign-extend addends, which causes if-conversion to give up.

gcc/testsuite/
* gcc.target/riscv/adddieq.c: New test.
* gcc.target/riscv/adddige.c: New test.
* gcc.target/riscv/adddigeu.c: New test.
* gcc.target/riscv/adddigt.c: New test.
* gcc.target/riscv/adddigtu.c: New test.
* gcc.target/riscv/adddile.c: New test.
* gcc.target/riscv/adddileu.c: New test.
* gcc.target/riscv/adddilt.c: New test.
* gcc.target/riscv/adddiltu.c: New test.
* gcc.target/riscv/adddine.c: New test.
* gcc.target/riscv/addsieq.c: New test.
* gcc.target/riscv/addsige.c: New test.
* gcc.target/riscv/addsigeu.c: New test.
* gcc.target/riscv/addsigt.c: New test.
* gcc.target/riscv/addsigtu.c: New test.
* gcc.target/riscv/addsile.c: New test.
* gcc.target/riscv/addsileu.c: New test.
* gcc.target/riscv/addsilt.c: New test.
* gcc.target/riscv/addsiltu.c: New test.
* gcc.target/riscv/addsine.c: New test.
20 files changed:
gcc/testsuite/gcc.target/riscv/adddieq.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddige.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddigeu.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddigt.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddigtu.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddile.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddileu.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddilt.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddiltu.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/adddine.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsieq.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsige.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsigeu.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsigt.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsigtu.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsile.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsileu.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsilt.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsiltu.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/addsine.c [new file with mode: 0644]