aboutsummaryrefslogtreecommitdiff
path: root/libcpp/directives.cc
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2023-06-20 11:03:47 +0100
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>2023-06-20 11:03:47 +0100
commit63aaff9b3ab0fed154b2b5ec09f5a0e68c1e5ca7 (patch)
treed8518300cd7d4c711ac355f267f168b716054033 /libcpp/directives.cc
parent36de416df8b3f109353e309011061fa66e872e3a (diff)
downloadgcc-63aaff9b3ab0fed154b2b5ec09f5a0e68c1e5ca7.zip
gcc-63aaff9b3ab0fed154b2b5ec09f5a0e68c1e5ca7.tar.gz
gcc-63aaff9b3ab0fed154b2b5ec09f5a0e68c1e5ca7.tar.bz2
aarch64: Optimise ADDP with same source operands
We've been asked to optimise the testcase in this patch of a 64-bit ADDP with the low and high halves of the same 128-bit vector. This can be done by a single .4s ADDP followed by just reading the bottom 64 bits. A splitter for this is quite straightforward now that all the vec_concat stuff is collapsed by simplify-rtx. With this patch we generate a single: addp v0.4s, v0.4s, v0.4s instead of: dup d31, v0.d[1] addp v0.2s, v0.2s, v31.2s ret Bootstrapped and tested on aarch64-none-linux-gnu and aarch64_be-none-elf. gcc/ChangeLog: * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>): New define_insn_and_split. gcc/testsuite/ChangeLog: * gcc.target/aarch64/simd/addp-same-low_1.c: New test.
Diffstat (limited to 'libcpp/directives.cc')
0 files changed, 0 insertions, 0 deletions