From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id D01853842437; Fri, 2 Oct 2020 13:00:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D01853842437 From: "sripar01 at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/97271] New: [ARM MVE]: Wrong code generated for scatter store with writeback intrinsics with -O2. Date: Fri, 02 Oct 2020 13:00:21 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 11.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: sripar01 at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Oct 2020 13:00:21 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D97271 Bug ID: 97271 Summary: [ARM MVE]: Wrong code generated for scatter store with writeback intrinsics with -O2. Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: sripar01 at gcc dot gnu.org Target Milestone: --- Created attachment 49300 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=3D49300&action=3Dedit test case $ arm-none-eabi-gcc -v Using built-in specs. COLLECT_GCC=3D/work/gnu-work/Release/build-arm-none-eabi/install/bin/arm-no= ne-eabi-gcc COLLECT_LTO_WRAPPER=3D/work/gnu-work/Release/build-arm-none-eabi/install/li= bexec/gcc/arm-none-eabi/11.0.0/lto-wrapper Target: arm-none-eabi Configured with: /work/gnu-work/Release/src/gcc/configure --target=3Darm-none-eabi --prefix=3D/work/gnu-work/Release/build-arm-none-eabi/install// --with-gmp=3D/work/gnu-work/Release/build-arm-none-eabi/host-tools --with-mpfr=3D/work/gnu-work/Release/build-arm-none-eabi/host-tools --with-mpc=3D/work/gnu-work/Release/build-arm-none-eabi/host-tools --with-isl=3D/work/gnu-work/Release/build-arm-none-eabi/host-tools --disable-shared --disable-nls --disable-threads --disable-tls --enable-checking=3Dyes --enable-languages=3Dc,c++,fortran --with-newlib --with-multilib-list=3Drmprofile --with-pkgversion=3Dunknown Thread model: single Supported LTO compression algorithms: zlib gcc version 11.0.0 20200930 (experimental) (unknown) $ cat bug.c #include "arm_mve.h" void foo (uint32x4_t * addr, const int offset, int32x4_t value) { vstrwq_scatter_base_wb_s32 (addr, 8, value); } $ arm-none-eabi-gcc bug.c -S -O2 -march=3Darmv8.1-m.main+mve -mfloat-abi= =3Dhard -o - ... foo: @ args =3D 0, pretend =3D 0, frame =3D 0 @ frame_needed =3D 0, uses_anonymous_args =3D 0 @ link register save eliminated. vldrw.32 q3, [r0] vstrw.u32 q0, [q3, #8]! ---> (A) vldr.64 d4, .L3 vldr.64 d5, .L3+8 vldrw.32 q3, [r0] vstrw.u32 q2, [q3, #8]! ---> (B) bx lr ... Current compiler wrongly generates 2 vstrw assembly instructions, where are only one is expected.=