Hi,

As subject, this patch declares the Neon vector-tuple types inside the
compiler instead of in the arm_neon.h header. This is a necessary first
step before adding corresponding machine modes to the AArch64
backend.

The vector-tuple types are implemented using a #pragma. This means
initialization of builtin functions that have vector-tuple types as
arguments or return values has to be delayed until the #pragma is
handled.

Bootstrapped and regression tested on aarch64-none-linux-gnu - no
issues.

Note that this patch series cannot be merged until the following has
been accepted: 
https://gcc.gnu.org/pipermail/gcc-patches/2021-October/581948.html

Ok for master with this proviso?

Thanks,
Jonathan

---

gcc/ChangeLog:

2021-09-10  Jonathan Wright  <jonathan.wri...@arm.com>

        * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
        Factor out main loop to...
        (aarch64_init_simd_builtin_functions): This new function.
        (register_tuple_type): Define.
        (aarch64_scalar_builtin_type_p): Define.
        (handle_arm_neon_h): Define.
        * config/aarch64/aarch64-c.c (aarch64_pragma_aarch64): Handle
        pragma for arm_neon.h.
        * config/aarch64/aarch64-protos.h (aarch64_advsimd_struct_mode_p):
        Declare.
        (handle_arm_neon_h): Likewise.
        * config/aarch64/aarch64.c (aarch64_advsimd_struct_mode_p):
        Remove static modifier.
        * config/aarch64/arm_neon.h (target): Remove Neon vector
        structure type definitions.

Attachment: rb14838.patch
Description: rb14838.patch

Reply via email to