[Bug target/81532] [8 Regression] insn does not satisfy its constraints: extract_constrain_insn, at recog.c:2213
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
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
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
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
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}.