[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

2010-10-30 Thread uros at gcc dot gnu.org
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

2010-10-30 Thread ubizjak at gmail dot com
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

2010-10-28 Thread ubizjak at gmail dot com
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

2010-10-28 Thread uros at gcc dot gnu.org
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

2010-10-28 Thread uros at gcc dot gnu.org
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

2010-10-27 Thread pinskia at gcc dot gnu.org
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

2010-10-26 Thread rguenth at gcc dot gnu.org
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