From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id DDB7D3858C53; Tue, 29 Aug 2023 13:01:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DDB7D3858C53 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1693314084; bh=1eZn3lM12LTufcfRTsWjNUjPcizy0jkAkCSy4VJ1NWA=; h=From:To:Subject:Date:From; b=AFCnhoKIErB7zjNEePTsTN0es0zBQWDhg+3fspD50mmlK5c7XVRlsTgT/HOwA3ShV sEpbt96/oZIK8pK+IrUz3YZLGqoH0DlISMi02WEP4Bz/NieJc6D+NtrllRYK7uCCWE yWvidCQpgMTu1n8tJlJ1XoqHkv0YyhTgWfrnYYSk= From: "jamborm at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/111225] New: ICE in curr_insn_transform, unable to generate reloads for xor, since r14-2447-g13c556d6ae84be Date: Tue, 29 Aug 2023 13:01:23 +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: 14.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: jamborm 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 cc target_milestone cf_gcchost cf_gcctarget 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 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D111225 Bug ID: 111225 Summary: ICE in curr_insn_transform, unable to generate reloads for xor, since r14-2447-g13c556d6ae84be Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: jamborm at gcc dot gnu.org CC: crazylht at gmail dot com, fkastl at suse dot cz Target Milestone: --- Host: x86_64-linux Target: x86_64-linux On GCC 14 development master, since revision r14-2447-g13c556d6ae84be, I get an ICE when compiling our testcase gcc/testsuite/gcc.target/i386/avx-vptest-5.c with options -fsanitize=3Dthre= ad -O1 -mforce-drap -mavx512cd: $ ~/gcc/small/inst/bin/gcc /home/mjambor/gcc/trunk/src/gcc/testsuite/gcc.target/i386/avx-vptest-5.c -fsanitize=3Dthread -O1 -mforce-drap -mavx512cd /home/mjambor/gcc/trunk/src/gcc/testsuite/gcc.target/i386/avx-vptest-5.c: In function =E2=80=98foo=E2=80=99: /home/mjambor/gcc/trunk/src/gcc/testsuite/gcc.target/i386/avx-vptest-5.c:10= :1: error: unable to generate reloads for: 10 | } | ^ (insn 11 10 12 2 (set (reg:V4DI 91) (xor:V4DI (mem/c:V4DI (plus:DI (reg/f:DI 19 frame) (const_int -80 [0xffffffffffffffb0])) [1 %sfp+-64 S32 A256]) (const_vector:V4DI [ (const_int -1 [0xffffffffffffffff]) repeated x4 ]))) "/home/mjambor/gcc/trunk/src/gcc/testsuite/gcc.target/i386/avx-vptest-5.c":= 8:19 6853 {*one_cmplv4di2}=20=20=20 (expr_list:REG_DEAD (reg/v:V4DI 89 [ y ]) (nil))) during RTL pass: reload /home/mjambor/gcc/trunk/src/gcc/testsuite/gcc.target/i386/avx-vptest-5.c:10= :1: internal compiler error: in curr_insn_transform, at lra-constraints.cc:4259 0x7cd910 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /home/mjambor/gcc/small/src/gcc/rtl-error.cc:108 0x7a42c0 curr_insn_transform /home/mjambor/gcc/small/src/gcc/lra-constraints.cc:4259 0xdcda7e lra_constraints(bool) /home/mjambor/gcc/small/src/gcc/lra-constraints.cc:5430 0xdb99c2 lra(_IO_FILE*) /home/mjambor/gcc/small/src/gcc/lra.cc:2396 0xd715f1 do_reload /home/mjambor/gcc/small/src/gcc/ira.cc:5967 0xd715f1 execute /home/mjambor/gcc/small/src/gcc/ira.cc:6153 Please submit a full bug report, with preprocessed source (by using -freport-bug). As noted earlier, I have bisected this down to: commit 13c556d6ae84be3ee2bc245a56eafa58221de86a (HEAD) Author: liuhongt Date: Thu Jun 29 14:25:28 2023 +0800 Break false dependence for vpternlog by inserting vpxor or setting constraint of input operand to '0' False dependency happens when destination is only updated by pternlog. There is no false dependency when destination is also used in source. So either a pxor should be inserted, or input operand should be set with constraint '0'. gcc/ChangeLog: PR target/110438 PR target/110202 * config/i386/predicates.md (int_float_vector_all_ones_operand): New predicate. * config/i386/sse.md (*vmov_constm1_pternlog_false_dep): = New define_insn. (*_cvtmask2_pternlog_false_dep): Ditto. (*_cvtmask2_pternlog_false_dep): Ditto. (*_cvtmask2): Adjust to define_insn_and_split to avoid false dependence. (*_cvtmask2): Ditto. (one_cmpl2): Adjust constraint of operands 1 to '0' to avoid false dependence. (*andnot3): Ditto. (iornot3): Ditto. (*3): Ditto.=