From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 632C83857C75; Wed, 12 May 2021 19:51:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 632C83857C75 From: "acoplan at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/100572] New: arm: Assemble failures with MVE vcreateq intrinsic Date: Wed, 12 May 2021 19:51:00 +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: 12.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: acoplan 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 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: Wed, 12 May 2021 19:51:00 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D100572 Bug ID: 100572 Summary: arm: Assemble failures with MVE vcreateq intrinsic Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: acoplan at gcc dot gnu.org Target Milestone: --- GCC's output fails to assemble for the following: $ cat test.c #include uint64x2_t v; void f(void) { v =3D vcreateq_u64(0, 0); } $ ./arm-eabi-gcc -c test.c -march=3Darmv8.1-m.main+mve -mfloat-abi=3Dhard -O /tmp/ccXeZkHP.s: Assembler messages: /tmp/ccXeZkHP.s:31: Error: General purpose registers may not be the same -- `vmov q3[2],q3[0],r2,r2' /tmp/ccXeZkHP.s:32: Error: General purpose registers may not be the same -- `vmov q3[3],q3[1],r3,r3' The code generated for f here is: f: movs r2, #0 movs r3, #0 vmov q3[2], q3[0], r2, r2 vmov q3[3], q3[1], r3, r3 ldr r3, .L2 vstrw.32 q3, [r3] bx lr The problem also occurs for other types when used with vcreateq, e.g. for: #include uint32x4_t v; void f(void) { v =3D vcreateq_u32(0, 0); } Here is a preprocessed testcase (not for the testsuite, but for testing wit= h a cc1): __simd128_uint64_t v; void f(void) { v =3D __builtin_mve_vcreateq_uv2di(0, 0); }=