diff options
| author | Andrew Pinski <pinskia@gmail.com> | 2023-10-18 16:39:12 -0700 |
|---|---|---|
| committer | Andrew Pinski <pinskia@gmail.com> | 2023-10-22 15:32:44 -0700 |
| commit | bcc5054b36626459ddb04c779f0b201fba6001d1 (patch) | |
| tree | dbe68a49c41f5f74bb4240359c3ff8b852f5a7fc /libbacktrace | |
| parent | c9ae68f97e0c6a8fda3ff2063c907c12553dac84 (diff) | |
aarch64: Emit csinv again for `a ? ~b : b` [PR110986]
After r14-3110-g7fb65f10285, the canonical form for
`a ? ~b : b` changed to be `-(a) ^ b` that means
for aarch64 we need to add a few new insn patterns
to be able to catch this and change it to be
what is the canonical form for the aarch64 backend.
A secondary pattern was needed to support a zero_extended
form too; this adds a testcase for all 3 cases.
Bootstrapped and tested on aarch64-linux-gnu with no regressions.
PR target/110986
gcc/ChangeLog:
* config/aarch64/aarch64.md (*cmov<mode>_insn_insv): New pattern.
(*cmov_uxtw_insn_insv): Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/cond_op-1.c: New test.
Diffstat (limited to 'libbacktrace')
0 files changed, 0 insertions, 0 deletions
