[Bug target/46153] [4.5/4.6 Regression] ICE: in extract_insn, at recog.c:2110 (unrecognizable insn) with -ffloat-store and __builtin_ia32_movlhps
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46153 --- Comment #5 from uros at gcc dot gnu.org 2010-10-30 20:32:15 UTC --- Author: uros Date: Sat Oct 30 20:32:11 2010 New Revision: 166093 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=166093 Log: PR target/46153 * config/i386/sse.md (sse_movhlps_exp): Use destination returned from ix86_fixup_binary_operands to expand insn. (sse_movlhps_exp): Ditto. (sse_loadhps_exp): Ditto. (sse_loadlps_exp): Ditto. (sse2_loadhpd_exp): Ditto. (sse2_loadlpd_exp): Ditto. testsuite/ChangeLog: PR target/46153 * gcc.target/i386/pr46153.c: New test. Added: branches/gcc-4_5-branch/gcc/testsuite/gcc.target/i386/pr46153.c - copied unchanged from r166031, trunk/gcc/testsuite/gcc.target/i386/pr46153.c Modified: branches/gcc-4_5-branch/gcc/ChangeLog branches/gcc-4_5-branch/gcc/config/i386/sse.md branches/gcc-4_5-branch/gcc/testsuite/ChangeLog
[Bug target/46153] [4.5/4.6 Regression] ICE: in extract_insn, at recog.c:2110 (unrecognizable insn) with -ffloat-store and __builtin_ia32_movlhps
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46153 Uros Bizjak ubizjak at gmail dot com changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED --- Comment #6 from Uros Bizjak ubizjak at gmail dot com 2010-10-30 20:33:40 UTC --- Fixed.
[Bug target/46153] [4.5/4.6 Regression] ICE: in extract_insn, at recog.c:2110 (unrecognizable insn) with -ffloat-store and __builtin_ia32_movlhps
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46153 Uros Bizjak ubizjak at gmail dot com changed: What|Removed |Added Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |ubizjak at gmail dot com |gnu.org | --- Comment #2 from Uros Bizjak ubizjak at gmail dot com 2010-10-28 09:07:34 UTC --- Somebody didn't read the comment for ix86_fixup_binary_operands to the very end: /* Fix up OPERANDS to satisfy ix86_binary_operator_ok. Return the destination to use for the operation. If different from the true destination in operands[0], a copy operation will be required. */ rtx ix86_fixup_binary_operands (enum rtx_code code, enum machine_mode mode, rtx operands[]) ... So we have to change - ix86_fixup_binary_operands (UNKNOWN, V2DFmode, operands);) +{ + rtx dst = ix86_fixup_binary_operands (UNKNOWN, V2DFmode, operands); + + emit_insn (gen_sse2_loadlpd (dst, operands[1], operands[2])); + + /* Fix up the destination if needed. */ + if (dst != operands[0]) +emit_move_insn (operands[0], dst); + + DONE; +}) in a few places. I have a patch in testing.
[Bug target/46153] [4.5/4.6 Regression] ICE: in extract_insn, at recog.c:2110 (unrecognizable insn) with -ffloat-store and __builtin_ia32_movlhps
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46153 --- Comment #3 from uros at gcc dot gnu.org 2010-10-28 17:45:57 UTC --- Author: uros Date: Thu Oct 28 17:45:52 2010 New Revision: 166031 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=166031 Log: PR target/46153 * config/i386/sse.md (sse_movhlps_exp): Use destination returned from ix86_fixup_binary_operands to expand insn. (sse_movlhps_exp): Ditto. (sse_loadhps_exp): Ditto. (sse_loadlps_exp): Ditto. (sse2_loadhpd_exp): Ditto. (sse2_loadlpd_exp): Ditto. (*avx_movhlps): Use ix86_binary_operator_ok in insn predicate. (sse_movhlps): Ditto. (*avx_movlhps): Ditto. (sse_movlhps): Ditto. (*avx_loadhps): Ditto. (sse_loadhps): Ditto. (*avx_loadhpd): Ditto. (sse_loadhpd): Ditto. (*avx_storelps): Prevent both operands in memory. (sse_storelps): Ditto. testsuite/ChangeLog: PR target/46153 * gcc.target/i386/pr46153.c: New test. Added: trunk/gcc/testsuite/gcc.target/i386/pr46153.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/46153] [4.5/4.6 Regression] ICE: in extract_insn, at recog.c:2110 (unrecognizable insn) with -ffloat-store and __builtin_ia32_movlhps
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46153 --- Comment #4 from uros at gcc dot gnu.org 2010-10-28 20:49:56 UTC --- Author: uros Date: Thu Oct 28 20:49:46 2010 New Revision: 166047 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=166047 Log: Partially revert: 2010-10-28 Uros Bizjak ubiz...@gmail.com PR target/46153 * config/i386/sse.md (*avx_movhlps): Use ix86_binary_operator_ok in insn predicate. (sse_movhlps): Ditto. (*avx_movlhps): Ditto. (sse_movlhps): Ditto. (*avx_loadhps): Ditto. (sse_loadhps): Ditto. (*avx_loadhpd): Ditto. (sse_loadhpd): Ditto. (*avx_storelps): Prevent both operands in memory. (sse_storelps): Ditto. Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md
[Bug target/46153] [4.5/4.6 Regression] ICE: in extract_insn, at recog.c:2110 (unrecognizable insn) with -ffloat-store and __builtin_ia32_movlhps
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46153 Andrew Pinski pinskia at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2010.10.27 21:48:02 Ever Confirmed|0 |1 --- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2010-10-27 21:48:02 UTC --- I wonder if -ffloat-store should touch the vector types. We have a store to the stack but the pattern does not accept a store; only a register. Confirmed.
[Bug target/46153] [4.5/4.6 Regression] ICE: in extract_insn, at recog.c:2110 (unrecognizable insn) with -ffloat-store and __builtin_ia32_movlhps
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46153 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Target Milestone|--- |4.5.2