From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id D49DE385E022; Thu, 26 Mar 2020 11:18:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D49DE385E022 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1585221523; bh=qM0trwu0LMatDnWf3FRdRt4EYKmgBerAN8XpmZfa4wg=; h=From:To:Subject:Date:From; b=x8Pu1OB8GMuqIqAcYkhoFDhxHUE+Q9hB3gve+QM+PpBiVpddrov14vGhvOXChpc5T M7wKj20CKf/3cjV4zpRapANevnXjCl4Zx3mNHswtIEgFjK/42D9AmnbCkFSDxQY5Ey BlvUN0s6WlqBifwIfKpXwh81uU5PuKJBFxXORYPs= From: "matmal01 at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/94341] New: mve_mov can produce ICE on latest trunk Date: Thu, 26 Mar 2020 11:18:43 +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: 10.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: matmal01 at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: sripar01 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: Thu, 26 Mar 2020 11:18:43 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D94341 Bug ID: 94341 Summary: mve_mov can produce ICE on latest trunk Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: sripar01 at gcc dot gnu.org Reporter: matmal01 at gcc dot gnu.org Target Milestone: --- The following code ICE's on fsf-trunk. #include "arm_mve.h" uint8x16_t test() { uint8x16_t accum =3D (uint8x16_t)(uint32x4_t){0, 0, 0, 2}; uint8x16_t accum2 =3D (uint8x16_t)(uint32x4_t){0, 0, 0, 1}; accum +=3D __arm_vddupq_m_n_u8 (accum2, 0, 4, (mve_pred16_t)1); return accum; } It ICE's because the first (define_insn "*mve_mov" ...) pattern has = the following clause for it's 4th alternative: case 4: if ((TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (mode)) || (MEM_P (operands[1]) && (GET_CODE (XEXP (operands[1], 0)) =3D=3D LABEL_REF))) return output_move_neon (operands); else return "vldrb.8 %q0, %E1"; For the test above, we get an RTL pattern of (insn 5 7 6 2 (set (reg:V16QI 28 s12 [116]) (mem:V16QI (const:SI (plus:SI (label_ref 28) (const_int 16 [0x10]))) [0 S16 A64])) "cde-mve-tests.c":6:12 2990 {*mve_movv16qi} (expr_list:REG_EQUIV (const_vector:V16QI [ (const_int 0 [0]) repeated x16 ]) (nil))) This matches the *mve_movv16qi pattern on the fourth alternative. the clause above does not match for going into `output_move_neon` (since the operand is not a mem of a label_ref, it's the mem of an offset to a label_r= ef). Hence the compiler tries to emit "vldrb.8 %q0, %E1", but since the 'E' synt= ax is for registers it does not match the RTL pattern for the operand. This results in an ICE. test: @ args =3D 0, pretend =3D 0, frame =3D 0 @ frame_needed =3D 0, uses_anonymous_args =3D 0 @ link register save eliminated. mov r3, #1 @ movhi movs r2, #0 vldr.64 d6, .L3 vldr.64 d7, .L3+8 during RTL pass: final dump file: cde-mve-tests.c.314r.final /home/matmal01/Documents/gnu-work/cde-intrinsics/cde-mve-tests.c: In functi= on 'test': /home/matmal01/Documents/gnu-work/cde-intrinsics/cde-mve-tests.c:9:1: inter= nal compiler error: in arm_print_operand, at config/arm/arm.c:23953 0x113c138 arm_print_operand =20=20=20=20=20=20=20 /tmp/dgboter/bbs/rhev-vm10--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/b= uild/src/gcc/gcc/config/arm/arm.c:23953 0x9332c5 output_operand(rtx_def*, int) =20=20=20=20=20=20=20 /tmp/dgboter/bbs/rhev-vm10--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/b= uild/src/gcc/gcc/final.c:4051 0x933b63 output_asm_insn(char const*, rtx_def**) =20=20=20=20=20=20=20 /tmp/dgboter/bbs/rhev-vm10--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/b= uild/src/gcc/gcc/final.c:3944 0x9366b6 final_scan_insn_1 =20=20=20=20=20=20=20 /tmp/dgboter/bbs/rhev-vm10--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/b= uild/src/gcc/gcc/final.c:3106 0x9369a7 final_scan_insn(rtx_insn*, _IO_FILE*, int, int, int*) =20=20=20=20=20=20=20 /tmp/dgboter/bbs/rhev-vm10--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/b= uild/src/gcc/gcc/final.c:3152 0x9376ac final_1 =20=20=20=20=20=20=20 /tmp/dgboter/bbs/rhev-vm10--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/b= uild/src/gcc/gcc/final.c:2020 0x9378f6 rest_of_handle_final =20=20=20=20=20=20=20 /tmp/dgboter/bbs/rhev-vm10--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/b= uild/src/gcc/gcc/final.c:4658 0x9378f6 execute =20=20=20=20=20=20=20 /tmp/dgboter/bbs/rhev-vm10--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/b= uild/src/gcc/gcc/final.c:4736 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See for instructions. vldrb.8 q0, gcc [11:11:19] $=