Hello Kyrill,

Following patch is the rebased version of v1.
(version v1) https://gcc.gnu.org/pipermail/gcc-patches/2019-November/534335.html

####

Hello,

This patch supports the following MVE ACLE store intrinsics which stores a 
byte, halfword,
or word to memory.

vst1q_f32, vst1q_f16, vst1q_s8, vst1q_s32, vst1q_s16, vst1q_u8, vst1q_u32, 
vst1q_u16,
vstrhq_f16, vstrhq_scatter_offset_s32, vstrhq_scatter_offset_s16, 
vstrhq_scatter_offset_u32,
vstrhq_scatter_offset_u16, vstrhq_scatter_offset_p_s32, 
vstrhq_scatter_offset_p_s16,
vstrhq_scatter_offset_p_u32, vstrhq_scatter_offset_p_u16, 
vstrhq_scatter_shifted_offset_s32,
vstrhq_scatter_shifted_offset_s16, vstrhq_scatter_shifted_offset_u32,
vstrhq_scatter_shifted_offset_u16, vstrhq_scatter_shifted_offset_p_s32,
vstrhq_scatter_shifted_offset_p_s16, vstrhq_scatter_shifted_offset_p_u32,
vstrhq_scatter_shifted_offset_p_u16, vstrhq_s32, vstrhq_s16, vstrhq_u32, 
vstrhq_u16,
vstrhq_p_f16, vstrhq_p_s32, vstrhq_p_s16, vstrhq_p_u32, vstrhq_p_u16, 
vstrwq_f32,
vstrwq_s32, vstrwq_u32, vstrwq_p_f32, vstrwq_p_s32, vstrwq_p_u32.

Please refer to M-profile Vector Extension (MVE) intrinsics [1]  for more 
details.
[1]  
https://developer.arm.com/architectures/instruction-sets/simd-isas/helium/mve-intrinsics

Regression tested on arm-none-eabi and found no regressions.

Ok for trunk?

Thanks,
Srinath.

gcc/ChangeLog:

2019-11-01  Andre Vieira  <andre.simoesdiasvie...@arm.com>
            Mihail Ionescu  <mihail.ione...@arm.com>
            Srinath Parvathaneni  <srinath.parvathan...@arm.com>

        * config/arm/arm_mve.h (vst1q_f32): Define macro.
        (vst1q_f16): Likewise.
        (vst1q_s8): Likewise.
        (vst1q_s32): Likewise.
        (vst1q_s16): Likewise.
        (vst1q_u8): Likewise.
        (vst1q_u32): Likewise.
        (vst1q_u16): Likewise.
        (vstrhq_f16): Likewise.
        (vstrhq_scatter_offset_s32): Likewise.
        (vstrhq_scatter_offset_s16): Likewise.
        (vstrhq_scatter_offset_u32): Likewise.
        (vstrhq_scatter_offset_u16): Likewise.
        (vstrhq_scatter_offset_p_s32): Likewise.
        (vstrhq_scatter_offset_p_s16): Likewise.
        (vstrhq_scatter_offset_p_u32): Likewise.
        (vstrhq_scatter_offset_p_u16): Likewise.
        (vstrhq_scatter_shifted_offset_s32): Likewise.
        (vstrhq_scatter_shifted_offset_s16): Likewise.
        (vstrhq_scatter_shifted_offset_u32): Likewise.
        (vstrhq_scatter_shifted_offset_u16): Likewise.
        (vstrhq_scatter_shifted_offset_p_s32): Likewise.
        (vstrhq_scatter_shifted_offset_p_s16): Likewise.
        (vstrhq_scatter_shifted_offset_p_u32): Likewise.
        (vstrhq_scatter_shifted_offset_p_u16): Likewise.
        (vstrhq_s32): Likewise.
        (vstrhq_s16): Likewise.
        (vstrhq_u32): Likewise.
        (vstrhq_u16): Likewise.
        (vstrhq_p_f16): Likewise.
        (vstrhq_p_s32): Likewise.
        (vstrhq_p_s16): Likewise.
        (vstrhq_p_u32): Likewise.
        (vstrhq_p_u16): Likewise.
        (vstrwq_f32): Likewise.
        (vstrwq_s32): Likewise.
        (vstrwq_u32): Likewise.
        (vstrwq_p_f32): Likewise.
        (vstrwq_p_s32): Likewise.
        (vstrwq_p_u32): Likewise.
        (__arm_vst1q_s8): Define intrinsic.
        (__arm_vst1q_s32): Likewise.
        (__arm_vst1q_s16): Likewise.
        (__arm_vst1q_u8): Likewise.
        (__arm_vst1q_u32): Likewise.
        (__arm_vst1q_u16): Likewise.
        (__arm_vstrhq_scatter_offset_s32): Likewise.
        (__arm_vstrhq_scatter_offset_s16): Likewise.
        (__arm_vstrhq_scatter_offset_u32): Likewise.
        (__arm_vstrhq_scatter_offset_u16): Likewise.
        (__arm_vstrhq_scatter_offset_p_s32): Likewise.
        (__arm_vstrhq_scatter_offset_p_s16): Likewise.
        (__arm_vstrhq_scatter_offset_p_u32): Likewise.
        (__arm_vstrhq_scatter_offset_p_u16): Likewise.
        (__arm_vstrhq_scatter_shifted_offset_s32): Likewise.
        (__arm_vstrhq_scatter_shifted_offset_s16): Likewise.
        (__arm_vstrhq_scatter_shifted_offset_u32): Likewise.
        (__arm_vstrhq_scatter_shifted_offset_u16): Likewise.
        (__arm_vstrhq_scatter_shifted_offset_p_s32): Likewise.
        (__arm_vstrhq_scatter_shifted_offset_p_s16): Likewise.
        (__arm_vstrhq_scatter_shifted_offset_p_u32): Likewise.
        (__arm_vstrhq_scatter_shifted_offset_p_u16): Likewise.
        (__arm_vstrhq_s32): Likewise.
        (__arm_vstrhq_s16): Likewise.
        (__arm_vstrhq_u32): Likewise.
        (__arm_vstrhq_u16): Likewise.
        (__arm_vstrhq_p_s32): Likewise.
        (__arm_vstrhq_p_s16): Likewise.
        (__arm_vstrhq_p_u32): Likewise.
        (__arm_vstrhq_p_u16): Likewise.
        (__arm_vstrwq_s32): Likewise.
        (__arm_vstrwq_u32): Likewise.
        (__arm_vstrwq_p_s32): Likewise.
        (__arm_vstrwq_p_u32): Likewise.
        (__arm_vstrwq_p_f32): Likewise.
        (__arm_vstrwq_f32): Likewise.
        (__arm_vst1q_f32): Likewise.
        (__arm_vst1q_f16): Likewise.
        (__arm_vstrhq_f16): Likewise.
        (__arm_vstrhq_p_f16): Likewise.
        (vst1q): Define polymorphic variant.
        (vstrhq): Likewise.
        (vstrhq_p): Likewise.
        (vstrhq_scatter_offset_p): Likewise.
        (vstrhq_scatter_offset): Likewise.
        (vstrhq_scatter_shifted_offset_p): Likewise.
        (vstrhq_scatter_shifted_offset): Likewise.
        (vstrwq_p): Likewise.
        (vstrwq): Likewise.
        * config/arm/arm_mve_builtins.def (STRS): Use builtin qualifier.
        (STRS_P): Likewise.
        (STRSS): Likewise.
        (STRSS_P): Likewise.
        (STRSU): Likewise.
        (STRSU_P): Likewise.
        (STRU): Likewise.
        (STRU_P): Likewise.
        * config/arm/mve.md (VST1Q): Define iterator.
        (VSTRHSOQ): Likewise.
        (VSTRHSSOQ): Likewise.
        (VSTRHQ): Likewise.
        (VSTRWQ): Likewise.
        (mve_vstrhq_fv8hf): Define RTL pattern.
        (mve_vstrhq_p_fv8hf): Likewise.
        (mve_vstrhq_p_<supf><mode>): Likewise.
        (mve_vstrhq_scatter_offset_p_<supf><mode>): Likewise.
        (mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
        (mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
        (mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
        (mve_vstrhq_<supf><mode>): Likewise.
        (mve_vstrwq_fv4sf): Likewise.
        (mve_vstrwq_p_fv4sf): Likewise.
        (mve_vstrwq_p_<supf>v4si): Likewise.
        (mve_vstrwq_<supf>v4si): Likewise.
        (mve_vst1q_f<mode>): Define expand.
        (mve_vst1q_<supf><mode>): Likewise.

gcc/testsuite/ChangeLog:

2019-11-01  Andre Vieira  <andre.simoesdiasvie...@arm.com>
            Mihail Ionescu  <mihail.ione...@arm.com>
            Srinath Parvathaneni  <srinath.parvathan...@arm.com>

        * gcc.target/arm/mve/intrinsics/vst1q_f16.c: New test.
        * gcc.target/arm/mve/intrinsics/vst1q_f32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vst1q_s16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vst1q_s32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vst1q_s8.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vst1q_u16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vst1q_u32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vst1q_u8.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_f16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_s16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_s32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c:
        Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c:
        Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c:
        Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c:
        Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c:
        Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c:
        Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c:
        Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c:
        Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_u16.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrhq_u32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrwq_f32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrwq_s32.c: Likewise.
        * gcc.target/arm/mve/intrinsics/vstrwq_u32.c: Likewise.

Attachment: rb12722.patch.gz
Description: application/gzip

Reply via email to