On 11/18/23 22:41, Maciej W. Rozycki wrote:
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.
WRT extension and causing if-conversion to give up. Yes, it's a real issue. In fact when we had Jivan do some analysis work on missed if-conversions, better handling of 32bit operations on rv64 was the biggest class of missed cases.

We've got a bit of internal code to address that. But I've been having trouble finding the time to clean it up enough to post.


        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.
OK
jeff

Reply via email to