https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94317

--- Comment #9 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Kyrylo Tkachov <ktkac...@gcc.gnu.org>:

https://gcc.gnu.org/g:ff825b8158394a01a43359efd91d0b6b8c4fa21b

commit r10-7512-gff825b8158394a01a43359efd91d0b6b8c4fa21b
Author: Srinath Parvathaneni <srinath.parvathan...@arm.com>
Date:   Thu Apr 2 10:23:47 2020 +0100

    [ARM]: Fix for MVE ACLE intrinsics with writeback (PR94317).

    Following MVE ACLE intrinsics have an issue with writeback to the base
address.

    vldrdq_gather_base_wb_s64, vldrdq_gather_base_wb_u64,
vldrdq_gather_base_wb_z_s64, vldrdq_gather_base_wb_z_u64,
vldrwq_gather_base_wb_s32, vldrwq_gather_base_wb_u32,
vldrwq_gather_base_wb_z_s32, vldrwq_gather_base_wb_z_u32,
vldrwq_gather_base_wb_f32, vldrwq_gather_base_wb_z_f32.

    This patch fixes the bug reported in PR94317 by adding separate builtin
calls to update the result and writeback to base address for the above
intrinsics.

    2020-04-02  Srinath Parvathaneni  <srinath.parvathan...@arm.com>

            PR target/94317
            * config/arm/arm-builtins.c (LDRGBWBXU_QUALIFIERS): Define.
            (LDRGBWBXU_Z_QUALIFIERS): Likewise.
            * config/arm/arm_mve.h (__arm_vldrdq_gather_base_wb_s64): Modify
            intrinsic defintion by adding a new builtin call to writeback into
base
            address.
            (__arm_vldrdq_gather_base_wb_u64): Likewise.
            (__arm_vldrdq_gather_base_wb_z_s64): Likewise.
            (__arm_vldrdq_gather_base_wb_z_u64): Likewise.
            (__arm_vldrwq_gather_base_wb_s32): Likewise.
            (__arm_vldrwq_gather_base_wb_u32): Likewise.
            (__arm_vldrwq_gather_base_wb_z_s32): Likewise.
            (__arm_vldrwq_gather_base_wb_z_u32): Likewise.
            (__arm_vldrwq_gather_base_wb_f32): Likewise.
            (__arm_vldrwq_gather_base_wb_z_f32): Likewise.
            * config/arm/arm_mve_builtins.def (vldrwq_gather_base_wb_z_u):
Modify
            builtin's qualifier.
            (vldrdq_gather_base_wb_z_u): Likewise.
            (vldrwq_gather_base_wb_u): Likewise.
            (vldrdq_gather_base_wb_u): Likewise.
            (vldrwq_gather_base_wb_z_s): Likewise.
            (vldrwq_gather_base_wb_z_f): Likewise.
            (vldrdq_gather_base_wb_z_s): Likewise.
            (vldrwq_gather_base_wb_s): Likewise.
            (vldrwq_gather_base_wb_f): Likewise.
            (vldrdq_gather_base_wb_s): Likewise.
            (vldrwq_gather_base_nowb_z_u): Define builtin.
            (vldrdq_gather_base_nowb_z_u): Likewise.
            (vldrwq_gather_base_nowb_u): Likewise.
            (vldrdq_gather_base_nowb_u): Likewise.
            (vldrwq_gather_base_nowb_z_s): Likewise.
            (vldrwq_gather_base_nowb_z_f): Likewise.
            (vldrdq_gather_base_nowb_z_s): Likewise.
            (vldrwq_gather_base_nowb_s): Likewise.
            (vldrwq_gather_base_nowb_f): Likewise.
            (vldrdq_gather_base_nowb_s): Likewise.
            * config/arm/mve.md (mve_vldrwq_gather_base_nowb_<supf>v4si):
Define RTL
            pattern.
            (mve_vldrwq_gather_base_wb_<supf>v4si): Modify RTL pattern.
            (mve_vldrwq_gather_base_nowb_z_<supf>v4si): Define RTL pattern.
            (mve_vldrwq_gather_base_wb_z_<supf>v4si): Modify RTL pattern.
            (mve_vldrwq_gather_base_wb_fv4sf): Modify RTL pattern.
            (mve_vldrwq_gather_base_nowb_fv4sf): Define RTL pattern.
            (mve_vldrwq_gather_base_wb_z_fv4sf): Modify RTL pattern.
            (mve_vldrwq_gather_base_nowb_z_fv4sf): Define RTL pattern.
            (mve_vldrdq_gather_base_nowb_<supf>v4di): Define RTL pattern.
            (mve_vldrdq_gather_base_wb_<supf>v4di):  Modify RTL pattern.
            (mve_vldrdq_gather_base_nowb_z_<supf>v4di): Define RTL pattern.
            (mve_vldrdq_gather_base_wb_z_<supf>v4di):  Modify RTL pattern.

    gcc/testsuite/ChangeLog:

    2020-04-02  Srinath Parvathaneni  <srinath.parvathan...@arm.com>

            PR target/94317
            * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c:
Modify.
            * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c:
Likewise.
            * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c:
Likewise.
            * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c:
Likewise.
            * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c:
Likewise.
            * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c:
Likewise.
            * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c:
Likewise.
            * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c:
Likewise.
            * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c:
Likewise.
            * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c:
Likewise.

Reply via email to