public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da
@ 2021-05-13  7:39 marxin at gcc dot gnu.org
  2021-05-13  8:00 ` [Bug target/100581] " acoplan at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-05-13  7:39 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 100581
           Summary: [12 Regression] ICE in extract_insn, at recog.c:2770
                    since r12-731-gb1f7fd8a2a5558da
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: ubizjak at gmail dot com
  Target Milestone: ---
              Host: x86_64-linux-gnu

The following fails:

$ cat ice.C
typedef float __attribute__((__vector_size__(8))) v64f32;
v64f32 af, bf, ff_a, ff_b;
v64f32 f() { return ff_a > ff_b ? af : bf; }

$ g++ ice.C -c -mxop
ice.C: In function ‘v64f32 f()’:
ice.C:3:44: error: unrecognizable insn:
    3 | v64f32 f() { return ff_a > ff_b ? af : bf; }
      |                                            ^
(insn 10 9 13 2 (set (reg:V2SF 86 [ _7 ])
        (if_then_else:V2SF (reg:V2SF 86 [ _7 ])
            (reg:V2SF 84 [ af.2_4 ])
            (reg:V2SF 85 [ bf.3_5 ]))) "ice.C":3:40 -1
     (nil))
during RTL pass: vregs
ice.C:3:44: internal compiler error: in extract_insn, at recog.c:2770
0x7fd7bb _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        /home/marxin/Programming/gcc/gcc/rtl-error.c:108
0x7fd7dd _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
        /home/marxin/Programming/gcc/gcc/rtl-error.c:116
0x7fb9b1 extract_insn(rtx_insn*)
        /home/marxin/Programming/gcc/gcc/recog.c:2770
0xe62989 instantiate_virtual_regs_in_insn
        /home/marxin/Programming/gcc/gcc/function.c:1609
0xe62989 instantiate_virtual_regs
        /home/marxin/Programming/gcc/gcc/function.c:1983
0xe62989 execute
        /home/marxin/Programming/gcc/gcc/function.c:2032
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/100581] [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da
  2021-05-13  7:39 [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da marxin at gcc dot gnu.org
@ 2021-05-13  8:00 ` acoplan at gcc dot gnu.org
  2021-05-13  8:04 ` ubizjak at gmail dot com
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: acoplan at gcc dot gnu.org @ 2021-05-13  8:00 UTC (permalink / raw)
  To: gcc-bugs

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

Alex Coplan <acoplan at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |acoplan at gcc dot gnu.org

--- Comment #1 from Alex Coplan <acoplan at gcc dot gnu.org> ---
Is it valid to create a vector type with total size less than the element size?
Shouldn't this be rejected?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/100581] [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da
  2021-05-13  7:39 [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da marxin at gcc dot gnu.org
  2021-05-13  8:00 ` [Bug target/100581] " acoplan at gcc dot gnu.org
@ 2021-05-13  8:04 ` ubizjak at gmail dot com
  2021-05-13  8:15 ` ubizjak at gmail dot com
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ubizjak at gmail dot com @ 2021-05-13  8:04 UTC (permalink / raw)
  To: gcc-bugs

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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |ubizjak at gmail dot com
            Version|11.0                        |12.0
   Last reconfirmed|                            |2021-05-13
   Target Milestone|---                         |12.0
                 CC|ubizjak at gmail dot com           |
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
I have a patch - thanks for the testcase, I'll add it to the patch.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/100581] [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da
  2021-05-13  7:39 [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da marxin at gcc dot gnu.org
  2021-05-13  8:00 ` [Bug target/100581] " acoplan at gcc dot gnu.org
  2021-05-13  8:04 ` ubizjak at gmail dot com
@ 2021-05-13  8:15 ` ubizjak at gmail dot com
  2021-05-13  8:19 ` acoplan at gcc dot gnu.org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ubizjak at gmail dot com @ 2021-05-13  8:15 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Alex Coplan from comment #1)
> Is it valid to create a vector type with total size less than the element
> size? Shouldn't this be rejected?

No, the generated code is:

        vmovq   ff_b(%rip), %xmm0
        vmovq   ff_a(%rip), %xmm1
        vmovq   bf(%rip), %xmm2
        vcmpltps        %xmm1, %xmm0, %xmm1
        vmovq   af(%rip), %xmm0
        vpcmov  %xmm1, %xmm2, %xmm0, %xmm0
        ret

Using vmovq ensures that zero is loaded to the top two elements of xmm reg.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/100581] [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da
  2021-05-13  7:39 [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da marxin at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2021-05-13  8:15 ` ubizjak at gmail dot com
@ 2021-05-13  8:19 ` acoplan at gcc dot gnu.org
  2021-05-13  8:22 ` acoplan at gcc dot gnu.org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: acoplan at gcc dot gnu.org @ 2021-05-13  8:19 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Alex Coplan <acoplan at gcc dot gnu.org> ---
When describing the vector_size attribute,
https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html says:
> Only sizes that are positive power-of-two multiples of the base type size are currently allowed.

Is the documentation out of date?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/100581] [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da
  2021-05-13  7:39 [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da marxin at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2021-05-13  8:19 ` acoplan at gcc dot gnu.org
@ 2021-05-13  8:22 ` acoplan at gcc dot gnu.org
  2021-05-13  9:11 ` cvs-commit at gcc dot gnu.org
  2021-05-13  9:17 ` ubizjak at gmail dot com
  6 siblings, 0 replies; 8+ messages in thread
From: acoplan at gcc dot gnu.org @ 2021-05-13  8:22 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Alex Coplan <acoplan at gcc dot gnu.org> ---
Agh, I just remembered that the size is in bytes rather than bits, sorry for
the noise.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/100581] [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da
  2021-05-13  7:39 [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da marxin at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2021-05-13  8:22 ` acoplan at gcc dot gnu.org
@ 2021-05-13  9:11 ` cvs-commit at gcc dot gnu.org
  2021-05-13  9:17 ` ubizjak at gmail dot com
  6 siblings, 0 replies; 8+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-05-13  9:11 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Uros Bizjak <uros@gcc.gnu.org>:

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

commit r12-768-gf1693741cb2b2db519bb82155a3c0880fd820ea3
Author: Uros Bizjak <ubizjak@gmail.com>
Date:   Thu May 13 11:09:53 2021 +0200

    i386: Fix up V2SFmode vcond* with -mxop [PR100581]

    ix86_expand_sse_movcc has special TARGET_XOP handling and the recent
    addition of support of v*cond* patterns for V2SFmode results in
    ICEs because the expected pattern doesn't exist.  We can handle it
    using 128-bit vpcmov (if we ignore the upper 64 bits like we ignore in
    other TARGET_MMX_WITH_SSE support).

    2021-05-13  Uroš Bizjak  <ubizjak@gmail.com>

    gcc/
            PR target/100581
            * config/i386/i386-expand.c (ix86_expand_sse_movcc): Force mode
            sizes < 16 to a register when constructing vpcmov pattern.
            * config/i386/mmx.md (*xop_pcmov_<mode>): Use MMXMODE124 mode.

    gcc/testsuite/

            PR target/100581
            * g++.target/i386/pr100581.C: New test.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug target/100581] [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da
  2021-05-13  7:39 [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da marxin at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2021-05-13  9:11 ` cvs-commit at gcc dot gnu.org
@ 2021-05-13  9:17 ` ubizjak at gmail dot com
  6 siblings, 0 replies; 8+ messages in thread
From: ubizjak at gmail dot com @ 2021-05-13  9:17 UTC (permalink / raw)
  To: gcc-bugs

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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> ---
Fixed.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-05-13  9:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-13  7:39 [Bug target/100581] New: [12 Regression] ICE in extract_insn, at recog.c:2770 since r12-731-gb1f7fd8a2a5558da marxin at gcc dot gnu.org
2021-05-13  8:00 ` [Bug target/100581] " acoplan at gcc dot gnu.org
2021-05-13  8:04 ` ubizjak at gmail dot com
2021-05-13  8:15 ` ubizjak at gmail dot com
2021-05-13  8:19 ` acoplan at gcc dot gnu.org
2021-05-13  8:22 ` acoplan at gcc dot gnu.org
2021-05-13  9:11 ` cvs-commit at gcc dot gnu.org
2021-05-13  9:17 ` ubizjak at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).