Hi all, This patch implements the missed optimisation noted in PR117850.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117850 It covers all the AArch64 builtins that I can imagine this is sensible for, excluding vshll/vshll_n (for now) due to a discrepancy in their declarations. Bootstrapped and regtested on aarch64-none-linux-gnu. This work was also tested on a cross-compiler targeting aarch64_be-none-linux-gnu. CC'ing Kyrylo as it looks like this patch interferes with his earlier work - I'm wondering what to do about simd/vabal_combine.c without losing coverage? OK for stage-1? Spencer Spencer Abson (1): AArch64: Fold builtins with highpart args to highpart equivalent [PR117850] gcc/config/aarch64/aarch64-builtin-pairs.def | 77 ++ gcc/config/aarch64/aarch64-builtins.cc | 232 ++++++ .../aarch64/simd/fold_to_highpart_1.c | 708 ++++++++++++++++++ .../aarch64/simd/fold_to_highpart_2.c | 82 ++ .../aarch64/simd/fold_to_highpart_3.c | 80 ++ .../aarch64/simd/fold_to_highpart_4.c | 77 ++ .../aarch64/simd/fold_to_highpart_5.c | 71 ++ .../gcc.target/aarch64/simd/vabal_combine.c | 12 +- 8 files changed, 1333 insertions(+), 6 deletions(-) create mode 100644 gcc/config/aarch64/aarch64-builtin-pairs.def create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_4.c create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_5.c -- 2.34.1