Hi Srinath, > -----Original Message----- > From: Srinath Parvathaneni <srinath.parvathan...@arm.com> > Sent: 18 March 2020 17:18 > To: gcc-patches@gcc.gnu.org > Cc: Kyrylo Tkachov <kyrylo.tkac...@arm.com> > Subject: [PATCH v2][ARM][GCC][7/5x]: MVE store intrinsics which stores > byte,half word or word to memory. > > 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, I've pushed this patch to master. Kyrill > > 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.