Hi,

This patch declares unsigned and polynomial type-qualified builtins and
uses them to implement the LD1/ST1 Neon intrinsics. This removes the
need for many casts in arm_neon.h.

The new type-qualified builtins are also lowered to gimple - as the
unqualified builtins are already.

Regression tested and bootstrapped on aarch64-none-linux-gnu - no
issues.

Ok for master?

Thanks,
Jonathan

---

gcc/ChangeLog:

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

        * config/aarch64/aarch64-builtins.c (TYPES_LOAD1_U): Define.
        (TYPES_LOAD1_P): Define.
        (TYPES_STORE1_U): Define.
        (TYPES_STORE1P): Rename to...
        (TYPES_STORE1_P): This.
        (get_mem_type_for_load_store): Add unsigned and poly types.
        (aarch64_general_gimple_fold_builtin): Add unsigned and poly
        type-qualified builtin declarations.
        * config/aarch64/aarch64-simd-builtins.def: Declare type-
        qualified builtins for LD1/ST1.
        * config/aarch64/arm_neon.h (vld1_p8): Use type-qualified
        builtin and remove cast.
        (vld1_p16): Likewise.
        (vld1_u8): Likewise.
        (vld1_u16): Likewise.
        (vld1_u32): Likewise.
        (vld1q_p8): Likewise.
        (vld1q_p16): Likewise.
        (vld1q_p64): Likewise.
        (vld1q_u8): Likewise.
        (vld1q_u16): Likewise.
        (vld1q_u32): Likewise.
        (vld1q_u64): Likewise.
        (vst1_p8): Likewise.
        (vst1_p16): Likewise.
        (vst1_u8): Likewise.
        (vst1_u16): Likewise.
        (vst1_u32): Likewise.
        (vst1q_p8): Likewise.
        (vst1q_p16): Likewise.
        (vst1q_p64): Likewise.
        (vst1q_u8): Likewise.
        (vst1q_u16): Likewise.
        (vst1q_u32): Likewise.
        (vst1q_u64): Likewise.
        * config/aarch64/iterators.md (VALLP_NO_DI): New iterator.

Attachment: rb15058.patch
Description: rb15058.patch

Reply via email to