Hi gcc-patches mailing list,
Karl Meakin via Sourceware Forge 
<[email protected]> has requested that the 
following forgejo pull request
be published on the mailing list.

Created on: 2026-05-13 15:39:36+00:00
Latest update: 2026-05-29 16:03:04+00:00
Changes: 115 changed files, 20708 additions, 16802 deletions
Head revision: karmea01/gcc-TEST ref dsg/karmea01/neon-port commit 
5fc28ca39d0d240bc26c8ebc48d38e5282c76e90
Base revision: gcc/gcc-TEST ref trunk commit 
2946b3a77880a9f0ba108e76d34a4b656bb4b1ca r17-985-g2946b3a77880a9
Merge base: 2946b3a77880a9f0ba108e76d34a4b656bb4b1ca
Full diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/158.diff
Discussion:  https://forge.sourceware.org/gcc/gcc-TEST/pulls/158
Requested Reviewers: rdfm, pinskia

This patch is a proof of concept patch which ports a few NEON intrinsics 
(intrinsics defined in `arm_neon.h`) to the "pragma-based" framework used by 
SVE/SME intrinsics.
If successful, I will follow up with further patches porting the rest.

tested with `make check`

changelog:
* v1: Initial revision
* v2: Appease `check_GNU_style.py`
* v3: Drop unrelated `.editorconfig` changes which were included by mistake
* v4:
    * Address review comments
    * Move reformatting of `config.gcc` into its own commit.
    * Merge `aarch64-neon-builtins.cc` into `aarch64-sve-builtins.cc` and 
rename it to `aarch64-acle-builtins.cc`
* v5: Fix codegen for big-endian targets
* v6 Improve codegen for `FEAT_SHA3` intrinsics (`veor3`, `vbcax`, `vrax1` and 
`vxar`) at `-O0`.
* v7 Delete `aarch64-neon-builtins.cc` again after it somehow got reintroduced 
in v6


Changed files:
- A: gcc/config/aarch64/aarch64-acle-builtins.cc
- A: gcc/config/aarch64/aarch64-acle-builtins.h
- A: gcc/config/aarch64/aarch64-neon-builtins-base.cc
- A: gcc/config/aarch64/aarch64-neon-builtins-base.def
- A: gcc/config/aarch64/aarch64-neon-builtins-base.h
- A: gcc/config/aarch64/aarch64-neon-builtins-functions.h
- A: gcc/config/aarch64/aarch64-neon-builtins-shapes.cc
- A: gcc/config/aarch64/aarch64-neon-builtins-shapes.h
- A: gcc/config/aarch64/aarch64-neon-builtins.def
- A: gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_indices.c
- A: gcc/testsuite/gcc.target/aarch64/neon/aarch64-neon.exp
- A: gcc/testsuite/gcc.target/aarch64/neon/arm_neon_test.h
- A: gcc/testsuite/gcc.target/aarch64/neon/vadd.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vand.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vbcax.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vbic.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vbsl.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vcls.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vclz.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vcnt.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vcombine.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vcopy_lane.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vcreate.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vdup.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vdup_lane.c
- A: gcc/testsuite/gcc.target/aarch64/neon/veor.c
- A: gcc/testsuite/gcc.target/aarch64/neon/veor3.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vext.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vget_high.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vget_lane.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vget_low.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vmov_n.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vmvn.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vorn.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vorr.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vrax1.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vrbit.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vreinterpret.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vrev.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vset_lane.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vtrn.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vuzp.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vxar.c
- A: gcc/testsuite/gcc.target/aarch64/neon/vzip.c
- A: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_indices.c
- D: gcc/config/aarch64/aarch64-sve-builtins.cc
- D: gcc/config/aarch64/aarch64-sve-builtins.h
- D: 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c
- D: 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c
- D: 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c
- D: 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c
- D: 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c
- D: 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c
- D: 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c
- D: 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f64_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p16_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p8_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s16_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s32_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s64_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s8_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u16_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u32_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u64_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u8_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f32_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f64_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p16_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p8_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s16_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s32_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s64_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s8_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u16_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c
- D: gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c
- M: gcc/config.gcc
- M: gcc/config/aarch64/aarch64-builtins.cc
- M: gcc/config/aarch64/aarch64-builtins.h
- M: gcc/config/aarch64/aarch64-c.cc
- M: gcc/config/aarch64/aarch64-protos.h
- M: gcc/config/aarch64/aarch64-simd-builtins.def
- M: gcc/config/aarch64/aarch64-simd-pragma-builtins.def
- M: gcc/config/aarch64/aarch64-simd.md
- M: gcc/config/aarch64/aarch64-sve-builtins-base.cc
- M: gcc/config/aarch64/aarch64-sve-builtins-base.h
- M: gcc/config/aarch64/aarch64-sve-builtins-functions.h
- M: gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
- M: gcc/config/aarch64/aarch64-sve-builtins-shapes.h
- M: gcc/config/aarch64/aarch64-sve-builtins-sme.cc
- M: gcc/config/aarch64/aarch64-sve-builtins-sme.h
- M: gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
- M: gcc/config/aarch64/aarch64-sve-builtins-sve2.h
- M: gcc/config/aarch64/aarch64-sve-builtins.def
- M: gcc/config/aarch64/aarch64.cc
- M: gcc/config/aarch64/aarch64.md
- M: gcc/config/aarch64/arm_neon.h
- M: gcc/config/aarch64/iterators.md
- M: gcc/config/aarch64/t-aarch64
- M: gcc/testsuite/g++.target/aarch64/lane-bound-1.C
- M: gcc/testsuite/g++.target/aarch64/pr103147-6.C
- M: gcc/testsuite/g++.target/aarch64/pr117048.C
- M: gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c
- M: gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c
- M: gcc/testsuite/gcc.target/aarch64/lane-bound-3.c
- M: gcc/testsuite/gcc.target/aarch64/pr103147-6.c
- M: gcc/testsuite/gcc.target/aarch64/pr113573.c
- M: gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c
- M: gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c
- M: gcc/testsuite/gcc.target/aarch64/simd/vset_lane_s16_const_1.c
- M: gcc/testsuite/gcc.target/aarch64/sme/inlining_10.c
- M: gcc/testsuite/gcc.target/aarch64/sme/inlining_11.c
- M: gcc/testsuite/gcc.target/aarch64/target_attr_10.c
- M: gcc/testsuite/gcc.target/aarch64/vmov_n_1.c


Karl Meakin (7):
  aarch64: Reformat `config.gcc`
  aarch64: Rename `aarch64-sve-builtins` to `aarch64-acle-builtins`
  aarch64: Port NEON add intrinsics to pragma-based framework
  aarch64: Port NEON vector manipulation intrinsics to pragma-based
    framework
  aarch64: Port NEON bit manipulation intrinsics to pragma-based
    framework
  aarch64: Port NEON permutation intrinsics to pragma-based framework
  aarch64: Port NEON reinterpret intrinsics to pragma-based framework

 gcc/config.gcc                                |    40 +-
 ...e-builtins.cc => aarch64-acle-builtins.cc} |   959 +-
 ...sve-builtins.h => aarch64-acle-builtins.h} |  1005 +-
 gcc/config/aarch64/aarch64-builtins.cc        |   547 +-
 gcc/config/aarch64/aarch64-builtins.h         |     1 +
 gcc/config/aarch64/aarch64-c.cc               |    17 +-
 .../aarch64/aarch64-neon-builtins-base.cc     |   833 +
 .../aarch64/aarch64-neon-builtins-base.def    |   147 +
 .../aarch64/aarch64-neon-builtins-base.h      |    29 +
 .../aarch64/aarch64-neon-builtins-functions.h |    29 +
 .../aarch64/aarch64-neon-builtins-shapes.cc   |   132 +
 .../aarch64/aarch64-neon-builtins-shapes.h    |    29 +
 gcc/config/aarch64/aarch64-neon-builtins.def  |    40 +
 gcc/config/aarch64/aarch64-protos.h           |     5 +-
 gcc/config/aarch64/aarch64-simd-builtins.def  |    36 -
 .../aarch64/aarch64-simd-pragma-builtins.def  |   105 -
 gcc/config/aarch64/aarch64-simd.md            |    21 +-
 .../aarch64/aarch64-sve-builtins-base.cc      |    16 +-
 .../aarch64/aarch64-sve-builtins-base.h       |     2 +-
 .../aarch64/aarch64-sve-builtins-functions.h  |     2 +-
 .../aarch64/aarch64-sve-builtins-shapes.cc    |    47 +-
 .../aarch64/aarch64-sve-builtins-shapes.h     |     2 +-
 .../aarch64/aarch64-sve-builtins-sme.cc       |     8 +-
 gcc/config/aarch64/aarch64-sve-builtins-sme.h |     2 +-
 .../aarch64/aarch64-sve-builtins-sve2.cc      |     8 +-
 .../aarch64/aarch64-sve-builtins-sve2.h       |     2 +-
 gcc/config/aarch64/aarch64-sve-builtins.def   |    11 +
 gcc/config/aarch64/aarch64.cc                 |    40 +-
 gcc/config/aarch64/aarch64.md                 |     6 -
 gcc/config/aarch64/arm_neon.h                 | 22960 ++++++----------
 gcc/config/aarch64/iterators.md               |     2 +-
 gcc/config/aarch64/t-aarch64                  |    41 +-
 .../g++.target/aarch64/lane-bound-1.C         |     2 +-
 gcc/testsuite/g++.target/aarch64/pr103147-6.C |     1 +
 gcc/testsuite/g++.target/aarch64/pr117048.C   |     2 +-
 .../aarch64/advsimd-intrinsics/bf16_dup.c     |     7 +-
 .../bf16_vect_copy_lane_1.c                   |     3 +-
 .../vcopy_lane_bf16_indices_1.c               |    18 -
 .../vcopy_lane_bf16_indices_2.c               |    18 -
 .../advsimd-intrinsics/vcopy_lane_indices.c   |    68 +
 .../vcopy_laneq_bf16_indices_1.c              |    17 -
 .../vcopy_laneq_bf16_indices_2.c              |    17 -
 .../vcopyq_lane_bf16_indices_1.c              |    17 -
 .../vcopyq_lane_bf16_indices_2.c              |    17 -
 .../vcopyq_laneq_bf16_indices_1.c             |    17 -
 .../vcopyq_laneq_bf16_indices_2.c             |    17 -
 .../gcc.target/aarch64/lane-bound-3.c         |     4 +-
 .../gcc.target/aarch64/neon/aarch64-neon.exp  |    43 +
 .../gcc.target/aarch64/neon/arm_neon_test.h   |    24 +
 gcc/testsuite/gcc.target/aarch64/neon/vadd.c  |   203 +
 gcc/testsuite/gcc.target/aarch64/neon/vand.c  |   116 +
 gcc/testsuite/gcc.target/aarch64/neon/vbcax.c |    60 +
 gcc/testsuite/gcc.target/aarch64/neon/vbic.c  |   116 +
 gcc/testsuite/gcc.target/aarch64/neon/vbsl.c  |   214 +
 gcc/testsuite/gcc.target/aarch64/neon/vcls.c  |    88 +
 gcc/testsuite/gcc.target/aarch64/neon/vclz.c  |    88 +
 gcc/testsuite/gcc.target/aarch64/neon/vcnt.c  |    25 +
 .../gcc.target/aarch64/neon/vcombine.c        |   120 +
 .../gcc.target/aarch64/neon/vcopy_lane.c      |   438 +
 .../gcc.target/aarch64/neon/vcreate.c         |   119 +
 gcc/testsuite/gcc.target/aarch64/neon/vdup.c  |   226 +
 .../gcc.target/aarch64/neon/vdup_lane.c       |   647 +
 gcc/testsuite/gcc.target/aarch64/neon/veor.c  |   116 +
 gcc/testsuite/gcc.target/aarch64/neon/veor3.c |    60 +
 gcc/testsuite/gcc.target/aarch64/neon/vext.c  |   216 +
 .../gcc.target/aarch64/neon/vget_high.c       |   116 +
 .../gcc.target/aarch64/neon/vget_lane.c       |   449 +
 .../gcc.target/aarch64/neon/vget_low.c        |   100 +
 .../gcc.target/aarch64/neon/vmov_n.c          |   212 +
 gcc/testsuite/gcc.target/aarch64/neon/vmvn.c  |   102 +
 gcc/testsuite/gcc.target/aarch64/neon/vorn.c  |   116 +
 gcc/testsuite/gcc.target/aarch64/neon/vorr.c  |   116 +
 gcc/testsuite/gcc.target/aarch64/neon/vrax1.c |    11 +
 gcc/testsuite/gcc.target/aarch64/neon/vrbit.c |    46 +
 .../gcc.target/aarch64/neon/vreinterpret.c    |  3143 +++
 gcc/testsuite/gcc.target/aarch64/neon/vrev.c  |   311 +
 .../gcc.target/aarch64/neon/vset_lane.c       |   234 +
 gcc/testsuite/gcc.target/aarch64/neon/vtrn.c  |   566 +
 gcc/testsuite/gcc.target/aarch64/neon/vuzp.c  |   566 +
 gcc/testsuite/gcc.target/aarch64/neon/vxar.c  |    32 +
 gcc/testsuite/gcc.target/aarch64/neon/vzip.c  |   559 +
 gcc/testsuite/gcc.target/aarch64/pr103147-6.c |     1 +
 gcc/testsuite/gcc.target/aarch64/pr113573.c   |    62 +-
 .../aarch64/simd/fold_to_highpart_6.c         |    24 +-
 .../gcc.target/aarch64/simd/mf8_data_2.c      |     1 -
 .../aarch64/simd/vget_lane_f32_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_f64_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_indices.c          |    46 +
 .../aarch64/simd/vget_lane_p16_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_p8_indices_1.c     |    17 -
 .../aarch64/simd/vget_lane_s16_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_s32_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_s64_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_s8_indices_1.c     |    17 -
 .../aarch64/simd/vget_lane_u16_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_u32_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_u64_indices_1.c    |    17 -
 .../aarch64/simd/vget_lane_u8_indices_1.c     |    17 -
 .../aarch64/simd/vgetq_lane_f32_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_f64_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_p16_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_p8_indices_1.c    |    17 -
 .../aarch64/simd/vgetq_lane_s16_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_s32_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_s64_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_s8_indices_1.c    |    17 -
 .../aarch64/simd/vgetq_lane_u16_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_u32_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_u64_indices_1.c   |    17 -
 .../aarch64/simd/vgetq_lane_u8_indices_1.c    |    17 -
 .../aarch64/simd/vset_lane_s16_const_1.c      |     2 +-
 .../gcc.target/aarch64/sme/inlining_10.c      |     6 +-
 .../gcc.target/aarch64/sme/inlining_11.c      |     7 +-
 .../gcc.target/aarch64/target_attr_10.c       |     4 +-
 gcc/testsuite/gcc.target/aarch64/vmov_n_1.c   |     2 +-
 115 files changed, 20708 insertions(+), 16802 deletions(-)
 rename gcc/config/aarch64/{aarch64-sve-builtins.cc => 
aarch64-acle-builtins.cc} (87%)
 rename gcc/config/aarch64/{aarch64-sve-builtins.h => aarch64-acle-builtins.h} 
(59%)
 create mode 100644 gcc/config/aarch64/aarch64-neon-builtins-base.cc
 create mode 100644 gcc/config/aarch64/aarch64-neon-builtins-base.def
 create mode 100644 gcc/config/aarch64/aarch64-neon-builtins-base.h
 create mode 100644 gcc/config/aarch64/aarch64-neon-builtins-functions.h
 create mode 100644 gcc/config/aarch64/aarch64-neon-builtins-shapes.cc
 create mode 100644 gcc/config/aarch64/aarch64-neon-builtins-shapes.h
 create mode 100644 gcc/config/aarch64/aarch64-neon-builtins.def
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_indices.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/aarch64-neon.exp
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/arm_neon_test.h
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vadd.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vand.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vbcax.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vbic.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vbsl.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcls.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vclz.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcnt.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcombine.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcopy_lane.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcreate.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vdup.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vdup_lane.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/veor.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/veor3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vext.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vget_high.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vget_lane.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vget_low.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vmov_n.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vmvn.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vorn.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vorr.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vrax1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vrbit.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vreinterpret.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vrev.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vset_lane.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vtrn.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vuzp.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vxar.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vzip.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f64_indices_1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vget_lane_indices.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p8_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s32_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s64_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_s8_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u32_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u64_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vget_lane_u8_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f32_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_f64_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_p8_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s32_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s64_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_s8_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u16_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u32_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u64_indices_1.c
 delete mode 100644 
gcc/testsuite/gcc.target/aarch64/simd/vgetq_lane_u8_indices_1.c

Range-diff against v6:
1:  fecd9fba0ae6 = 1:  742db9c24837 aarch64: Reformat `config.gcc`
2:  9e9d987c4c96 = 2:  dad9c63f49e8 aarch64: Rename `aarch64-sve-builtins` to 
`aarch64-acle-builtins`
3:  a6069ecc10d7 ! 3:  516df7af148f aarch64: Port NEON add intrinsics to 
pragma-based framework
    @@ gcc/config/aarch64/aarch64-acle-builtins.cc
      #include "aarch64-sve-builtins-sve2.h"
      #include "aarch64-sve-builtins-sme.h"
      #include "aarch64-sve-builtins-shapes.h"
    -+#include "aarch64-neon-builtins.h"
     +#include "aarch64-neon-builtins-shapes.h"
     +#include "aarch64-neon-builtins-base.h"
      #include "aarch64-builtins.h"
    @@ gcc/config/aarch64/aarch64-acle-builtins.cc: CONSTEXPR const 
group_suffix_info g
     -#define TYPES_all_float(S, D, T) \
     -  S (f16), S (f32), S (f64)
     -
    +-/* _f32 _f64.  */
    +-#define TYPES_sd_float(S, D, T) \
    +-  S (f32), S (f64)
    +-
     -/* _s8 _s16 _s32 _s64.  */
     -#define TYPES_all_signed(S, D, T) \
     -  S (s8), S (s16), S (s32), S (s64)
    @@ gcc/config/aarch64/aarch64-acle-builtins.cc: CONSTEXPR const 
group_suffix_info g
     -DEF_SVE_TYPES_ARRAY (s_unsigned);
     -DEF_SVE_TYPES_ARRAY (s_integer);
     -DEF_SVE_TYPES_ARRAY (s_data);
    +-DEF_SVE_TYPES_ARRAY (sd_float);
     -DEF_SVE_TYPES_ARRAY (sd_signed);
     -DEF_SVE_TYPES_ARRAY (sd_unsigned);
     -DEF_SVE_TYPES_ARRAY (sd_integer);
    @@ gcc/config/aarch64/aarch64-acle-builtins.h: 
function_expander::result_mode () co
     +#define TYPES_all_float(S, D, T) \
     +  S (f16), S (f32), S (f64)
     +
    ++/* _f32 _f64.  */
    ++#define TYPES_sd_float(S, D, T) \
    ++  S (f32), S (f64)
    ++
     +/* _s8 _s16 _s32 _s64.  */
     +#define TYPES_all_signed(S, D, T) \
     +  S (s8), S (s16), S (s32), S (s64)
    @@ gcc/config/aarch64/aarch64-acle-builtins.h: 
function_expander::result_mode () co
     +DEF_SVE_TYPES_ARRAY (all_count);
     +DEF_SVE_TYPES_ARRAY (all_pred_count);
     +DEF_SVE_TYPES_ARRAY (all_float);
    ++DEF_SVE_TYPES_ARRAY (sd_float);
     +DEF_SVE_TYPES_ARRAY (all_signed);
     +DEF_SVE_TYPES_ARRAY (all_float_and_signed);
     +DEF_SVE_TYPES_ARRAY (all_unsigned);
    @@ gcc/config/aarch64/aarch64-acle-builtins.h: 
function_expander::result_mode () co
      #endif
     
      ## gcc/config/aarch64/aarch64-builtins.cc ##
    -@@
    - #include "tree-pass.h"
    - #include "tree-vector-builder.h"
    - #include "aarch64-builtins.h"
    -+#include "aarch64-neon-builtins.h"
    - 
    - using namespace aarch64;
    - 
     @@ gcc/config/aarch64/aarch64-builtins.cc: 
aarch64_target_switcher::~aarch64_target_switcher ()
          sizeof (have_regs_of_mode));
      }
    @@ gcc/config/aarch64/aarch64-builtins.cc: aarch64_init_simd_builtins (void)
        aarch64_init_fcmla_laneq_builtins ();
     
      ## gcc/config/aarch64/aarch64-c.cc ##
    -@@
    - #include "c-family/c-pragma.h"
    - #include "langhooks.h"
    - #include "target.h"
    -+#include "aarch64-neon-builtins.h"
    - 
    - #define builtin_define(TXT) cpp_define (pfile, TXT)
    - #define builtin_assert(TXT) cpp_assert (pfile, TXT)
     @@ gcc/config/aarch64/aarch64-c.cc: aarch64_pragma_aarch64 (cpp_reader *)
        else if (strcmp (name, "arm_sme.h") == 0)
          aarch64_acle::handle_arm_sme_h (false);
    @@ gcc/config/aarch64/aarch64-neon-builtins-base.cc (new)
     +#include "aarch64-acle-builtins.h"
     +#include "aarch64-neon-builtins-base.h"
     +#include "aarch64-neon-builtins-functions.h"
    -+#include "aarch64-neon-builtins.h"
     +#include "gimple-fold.h"
     +
     +using namespace aarch64_acle;
    @@ gcc/config/aarch64/aarch64-neon-builtins-shapes.h (new)
     +
     +#endif
     
    - ## gcc/config/aarch64/aarch64-neon-builtins.cc (new) ##
    -@@
    -+/* ACLE support for AArch64 NEON
    -+   Copyright (C) 2026-2026 Free Software Foundation, Inc.
    -+
    -+   This file is part of GCC.
    -+
    -+   GCC is free software; you can redistribute it and/or modify it
    -+   under the terms of the GNU General Public License as published by
    -+   the Free Software Foundation; either version 3, or (at your option)
    -+   any later version.
    -+
    -+   GCC is distributed in the hope that it will be useful, but
    -+   WITHOUT ANY WARRANTY; without even the implied warranty of
    -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    -+   General Public License for more details.
    -+
    -+   You should have received a copy of the GNU General Public License
    -+   along with GCC; see the file COPYING3.  If not see
    -+   <http://www.gnu.org/licenses/>.  */
    -+
    -+#define IN_TARGET_CODE 1
    -+
    -+#include "config.h"
    -+#include "system.h"
    -+#include "coretypes.h"
    -+#include "tm.h"
    -+#include "tree.h"
    -+#include "rtl.h"
    -+#include "tm_p.h"
    -+#include "memmodel.h"
    -+#include "insn-codes.h"
    -+#include "optabs.h"
    -+#include "diagnostic.h"
    -+#include "expr.h"
    -+#include "basic-block.h"
    -+#include "function.h"
    -+#include "gimple.h"
    -+#include "gimple-iterator.h"
    -+#include "gimplify.h"
    -+#include "explow.h"
    -+#include "aarch64-acle-builtins.h"
    -+#include "aarch64-sve-builtins-base.h"
    -+#include "aarch64-sve-builtins-shapes.h"
    -+#include "aarch64-neon-builtins-shapes.h"
    -+#include "aarch64-neon-builtins-functions.h"
    -+#include "aarch64-neon-builtins-base.h"
    -+#include "aarch64-builtins.h"
    -+
    -+/* Implement `#pragma GCC aarch64 "arm_neon"`.  */
    -+namespace aarch64_acle {};
    -
      ## gcc/config/aarch64/aarch64-neon-builtins.def (new) ##
     @@
     +/* ACLE support for AArch64 NEON (__ARM_FEATURE_SIMD intrinsics)
    @@ gcc/config/aarch64/aarch64-neon-builtins.def (new)
     +#undef OBJ_NAME
     +#undef SHAPE_NAME
     
    - ## gcc/config/aarch64/aarch64-neon-builtins.h (new) ##
    -@@
    -+/* ACLE support for AArch64 NEON
    -+   Copyright (C) 2026-2026 Free Software Foundation, Inc.
    -+
    -+   This file is part of GCC.
    -+
    -+   GCC is free software; you can redistribute it and/or modify it
    -+   under the terms of the GNU General Public License as published by
    -+   the Free Software Foundation; either version 3, or (at your option)
    -+   any later version.
    -+
    -+   GCC is distributed in the hope that it will be useful, but
    -+   WITHOUT ANY WARRANTY; without even the implied warranty of
    -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    -+   General Public License for more details.
    -+
    -+   You should have received a copy of the GNU General Public License
    -+   along with GCC; see the file COPYING3.  If not see
    -+   <http://www.gnu.org/licenses/>.  */
    -+
    -+#ifndef GCC_AARCH64_NEON_BUILTINS_H
    -+#define GCC_AARCH64_NEON_BUILTINS_H
    -+
    -+#endif
    -
      ## gcc/config/aarch64/aarch64-protos.h ##
     @@ gcc/config/aarch64/aarch64-protos.h: tree aarch64_general_builtin_decl 
(unsigned, bool);
      tree aarch64_general_builtin_rsqrt (unsigned int);
    @@ gcc/config/aarch64/t-aarch64: aarch64-builtins.o: 
$(srcdir)/config/aarch64/aarch
     +  $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) \
     +  $(TM_P_H) memmodel.h insn-codes.h $(OPTABS_H) \
     +  $(srcdir)/config/aarch64/aarch64-acle-builtins.h \
    -+  $(srcdir)/config/aarch64/aarch64-neon-builtins.h \
     +  $(srcdir)/config/aarch64/aarch64-neon-builtins-shapes.h
     +  $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
     +          $(srcdir)/config/aarch64/aarch64-neon-builtins-shapes.cc
    @@ gcc/config/aarch64/t-aarch64: aarch64-builtins.o: 
$(srcdir)/config/aarch64/aarch
     +  gimple-iterator.h gimplify.h explow.h $(EMIT_RTL_H) 
tree-vector-builder.h \
     +  rtx-vector-builder.h vec-perm-indices.h \
     +  $(srcdir)/config/aarch64/aarch64-acle-builtins.h \
    -+  $(srcdir)/config/aarch64/aarch64-neon-builtins.h \
     +  $(srcdir)/config/aarch64/aarch64-neon-builtins-shapes.h \
     +  $(srcdir)/config/aarch64/aarch64-neon-builtins-base.h \
     +  $(srcdir)/config/aarch64/aarch64-neon-builtins-functions.h
4:  6c191ae1ce75 = 4:  477b572d5bbe aarch64: Port NEON vector manipulation 
intrinsics to pragma-based framework
5:  b1b4ff6e432d = 5:  7f89a459768c aarch64: Port NEON bit manipulation 
intrinsics to pragma-based framework
6:  b916e0a0be8c = 6:  a9a81d463210 aarch64: Port NEON permutation intrinsics 
to pragma-based framework
7:  11538878a427 = 7:  5fc28ca39d0d aarch64: Port NEON reinterpret intrinsics 
to pragma-based framework
-- 
2.54.0

Reply via email to