------- Comment #14 from ubizjak at gmail dot com  2008-08-02 16:01 -------
(In reply to comment #13)
> We should also test -O0.

Usage of MMX regs with -O0 is fixed by following patch:

Index: config/i386/mmx.md
===================================================================
--- config/i386/mmx.md  (revision 138553)
+++ config/i386/mmx.md  (working copy)
@@ -65,9 +65,9 @@

 (define_insn "*mov<mode>_internal_rex64"
   [(set (match_operand:MMXMODEI8 0 "nonimmediate_operand"
-                               "=rm,r,!?y,!?y ,m  ,!y,Y2,x,x ,m,r,x")
+                               "=rm,r,!?y,!?y ,m  ,!y,*Y2,x,x ,m,r,x")
        (match_operand:MMXMODEI8 1 "vector_move_operand"
-                               "Cr ,m,C  ,!?ym,!?y,Y2,!y,C,xm,x,x,r"))]
+                               "Cr ,m,C  ,!?ym,!?y,*Y2,!y,C,xm,x,x,r"))]
   "TARGET_64BIT && TARGET_MMX
    && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "@
@@ -124,9 +124,9 @@

 (define_insn "*movv2sf_internal_rex64"
   [(set (match_operand:V2SF 0 "nonimmediate_operand"
-                               "=rm,r ,!?y,!?y ,m ,!y,Y2,x,x,x,m,r,x")
+                               "=rm,r ,!?y,!?y ,m ,!y,*Y2,x,x,x,m,r,x")
         (match_operand:V2SF 1 "vector_move_operand"
-                               "Cr ,m ,C  ,!?ym,!y,Y2,!y,C,x,m,x,x,r"))]
+                               "Cr ,m ,C  ,!?ym,!y,*Y2,!y,C,x,m,x,x,r"))]
   "TARGET_64BIT && TARGET_MMX
    && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "@

> Why do we use _mm_movepi64_pi64 at all? _mm_movepi64_pi64 is an MMX
> intrinsic. It isn't necessary here.

_mm_movepi64_pi64 extracts DImode element 0 from V2DI vector. It just generates
sse2_storeq_* pattern that operates also on SSE regs.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36992

Reply via email to