diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2023-06-06 10:51:34 +0100 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2023-06-06 10:51:34 +0100 |
commit | 9371640999eedb8bac3fb9d1429db8a1a905b853 (patch) | |
tree | d0501a4e8d674c0807eb0c6d85ab33316ff34fab /gcc/expr.cc | |
parent | d2cdfafde2060ba2a96b01da223fe33c67439b94 (diff) | |
download | gcc-9371640999eedb8bac3fb9d1429db8a1a905b853.zip gcc-9371640999eedb8bac3fb9d1429db8a1a905b853.tar.gz gcc-9371640999eedb8bac3fb9d1429db8a1a905b853.tar.bz2 |
aarch64: Reimplement URSHR,SRSHR patterns with standard RTL codes
Having converted the patterns for the URSRA,SRSRA instructions to standard RTL codes we can also
easily convert the non-accumulating forms URSHR,SRSHR.
This patch does that, reusing the various helpers and predicates from that patch in a straightforward way.
This allows GCC to perform the optimisations in the testcase, matching what Clang does.
Bootstrapped and tested on aarch64-none-linux-gnu and aarch64_be-none-elf.
gcc/ChangeLog:
* config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
(aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
(aarch64_<sra_op>rshr_n<mode>): New define_expand.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/simd/vrshr_1.c: New test.
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions