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 /libgfortran/ChangeLog | |
parent | c9ae68f97e0c6a8fda3ff2063c907c12553dac84 (diff) | |
download | gcc-bcc5054b36626459ddb04c779f0b201fba6001d1.zip gcc-bcc5054b36626459ddb04c779f0b201fba6001d1.tar.gz gcc-bcc5054b36626459ddb04c779f0b201fba6001d1.tar.bz2 |
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 'libgfortran/ChangeLog')
0 files changed, 0 insertions, 0 deletions