aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.cc
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@linaro.org>2024-10-30 17:32:48 +0000
committerChristophe Lyon <christophe.lyon@linaro.org>2024-12-13 14:23:32 +0000
commit6505151088fcc28e6b210c04c95f1d1981849a78 (patch)
treea6a7e942b9217d8e6de0c53b8f9d5e25e33c1b3e /gcc/fortran/trans-expr.cc
parent6aae1658d2c1cb9ef5851324e94d3c2e436f763b (diff)
downloadgcc-6505151088fcc28e6b210c04c95f1d1981849a78.zip
gcc-6505151088fcc28e6b210c04c95f1d1981849a78.tar.gz
gcc-6505151088fcc28e6b210c04c95f1d1981849a78.tar.bz2
arm: [MVE intrinsics] rework vldr gather_base
Implement vldr?q_gather_base using the new MVE builtins framework. The patch updates two testcases rather than using different iterators for predicated and non-predicated versions. According to ACLE: vldrdq_gather_base_s64 is expected to generate VLDRD.64 vldrdq_gather_base_z_s64 is expected to generate VLDRDT.U64 Both are equally valid, however. gcc/ChangeLog: * config/arm/arm-builtins.cc (arm_ldrgbs_qualifiers) (arm_ldrgbu_qualifiers, arm_ldrgbs_z_qualifiers) (arm_ldrgbu_z_qualifiers): Delete. * config/arm/arm-mve-builtins-base.cc (class vldrq_gather_base_impl): New. (vldrdq_gather_base, vldrwq_gather_base): New. * config/arm/arm-mve-builtins-base.def (vldrdq_gather_base) (vldrwq_gather_base): New. * config/arm/arm-mve-builtins-base.h: (vldrdq_gather_base) (vldrwq_gather_base): New. * config/arm/arm_mve.h (vldrwq_gather_base_s32): Delete. (vldrwq_gather_base_u32): Delete. (vldrwq_gather_base_z_u32): Delete. (vldrwq_gather_base_z_s32): Delete. (vldrdq_gather_base_s64): Delete. (vldrdq_gather_base_u64): Delete. (vldrdq_gather_base_z_s64): Delete. (vldrdq_gather_base_z_u64): Delete. (vldrwq_gather_base_f32): Delete. (vldrwq_gather_base_z_f32): Delete. (__arm_vldrwq_gather_base_s32): Delete. (__arm_vldrwq_gather_base_u32): Delete. (__arm_vldrwq_gather_base_z_s32): Delete. (__arm_vldrwq_gather_base_z_u32): Delete. (__arm_vldrdq_gather_base_s64): Delete. (__arm_vldrdq_gather_base_u64): Delete. (__arm_vldrdq_gather_base_z_s64): Delete. (__arm_vldrdq_gather_base_z_u64): Delete. (__arm_vldrwq_gather_base_f32): Delete. (__arm_vldrwq_gather_base_z_f32): Delete. * config/arm/arm_mve_builtins.def (vldrwq_gather_base_s) (vldrwq_gather_base_u, vldrwq_gather_base_z_s) (vldrwq_gather_base_z_u, vldrdq_gather_base_s) (vldrwq_gather_base_f, vldrdq_gather_base_z_s) (vldrwq_gather_base_z_f, vldrdq_gather_base_u) (vldrdq_gather_base_z_u): Delete. * config/arm/iterators.md (supf): Remove VLDRWQGB_S, VLDRWQGB_U, VLDRDQGB_S, VLDRDQGB_U. (VLDRWGBQ, VLDRDGBQ): Delete. * config/arm/mve.md (mve_vldrwq_gather_base_<supf>v4si): Delete. (mve_vldrwq_gather_base_z_<supf>v4si): Delete. (mve_vldrdq_gather_base_<supf>v2di): Delete. (mve_vldrdq_gather_base_z_<supf>v2di): Delete. (mve_vldrwq_gather_base_fv4sf): Delete. (mve_vldrwq_gather_base_z_fv4sf): Delete. (@mve_vldrq_gather_base_<mode>): New. (@mve_vldrq_gather_base_z_<mode>): New. * config/arm/unspecs.md (VLDRWQGB_S, VLDRWQGB_U, VLDRDQGB_S) (VLDRDQGB_U, VLDRWQGB_F): Delete. (VLDRGBQ, VLDRGBQ_Z): New. gcc/testsuite/ChangeLog: * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c: Update expected output. * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c: Likewise.
Diffstat (limited to 'gcc/fortran/trans-expr.cc')
0 files changed, 0 insertions, 0 deletions