[Bug target/81532] [8 Regression] insn does not satisfy its constraints: extract_constrain_insn, at recog.c:2213

2017-07-25 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81532

Jakub Jelinek  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Jakub Jelinek  ---
Fixed.  Yd/Ye doesn't exist in gcc 7 and earlier.

[Bug target/81532] [8 Regression] insn does not satisfy its constraints: extract_constrain_insn, at recog.c:2213

2017-07-25 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81532

--- Comment #3 from Jakub Jelinek  ---
Author: jakub
Date: Tue Jul 25 13:35:17 2017
New Revision: 250520

URL: https://gcc.gnu.org/viewcvs?rev=250520&root=gcc&view=rev
Log:
PR target/81532
* config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for
TARGET_AVX512DQ rather than TARGET_AVX512BW.

* gcc.target/i386/pr80833-3.c: New test.
* gcc.target/i386/avx512dq-pr81532.c: New test.
* gcc.target/i386/avx512bw-pr81532.c: New test.

Added:
trunk/gcc/testsuite/gcc.target/i386/avx512bw-pr81532.c
trunk/gcc/testsuite/gcc.target/i386/avx512dq-pr81532.c
trunk/gcc/testsuite/gcc.target/i386/pr80833-3.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/constraints.md
trunk/gcc/testsuite/ChangeLog

[Bug target/81532] [8 Regression] insn does not satisfy its constraints: extract_constrain_insn, at recog.c:2213

2017-07-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81532

Richard Biener  changed:

   What|Removed |Added

 Target||x86_64-*-*, i?86-*-*
Version|7.0 |8.0
   Target Milestone|--- |8.0

[Bug target/81532] [8 Regression] insn does not satisfy its constraints: extract_constrain_insn, at recog.c:2213

2017-07-24 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81532

Jakub Jelinek  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
Created attachment 41816
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41816&action=edit
gcc8-pr81532.patch

Untested fix.

[Bug target/81532] [8 Regression] insn does not satisfy its constraints: extract_constrain_insn, at recog.c:2213

2017-07-24 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81532

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-07-24
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek  ---
-O2 -mavx512bw -mavx512vl is enough to reproduce.
Cleaned up testcase:

typedef unsigned __int128 V __attribute__ ((vector_size (64)));
V
foo (V c)
{
  c >>= 0 != c;
  return c;
}

The problem is I believe that Yd/Ye constraints use wrong ISA macro.
For !TARGET_64BIT ALL_SSE_REGS is equivalent to SSE_REGS, and for TARGET_64BIT
Yd/Ye is only used in movti_internal.  For the corresponding splitters to work,
I believe we need vpextrq and vpinsrq instructions, both of which are AVX512DQ
rather than AVX512BW - AVX512BW is only for vp{ext,ins}r{b,w}.