Hello!

movd to/from MMX or SSE registers is SSE2 instruction. Also, remove
wrong x,x alternative.

2012-06-14  Uros Bizjak  <ubiz...@gmail.com>

        * config/i386/i386.md (*zero_extendsidi2): Mark movd alternatives
        SSE2 only.  Remove x,x alternative.
        (*zero_extendsidi2_rex64): Ditto.

Bootstrapped and regression tested on x86_64-pc-linux-gnu, committed
to mainline SVN. Patch will be backported to other release branches.

Uros.
Index: i386.md
===================================================================
--- i386.md     (revision 188622)
+++ i386.md     (working copy)
@@ -3467,10 +3467,10 @@
 
 (define_insn "*zero_extendsidi2_rex64"
   [(set (match_operand:DI 0 "nonimmediate_operand"
-                       "=r  ,o,?*Ym,?*y,?*Yi,!*x")
+                       "=r  ,o,?*Ym,?*y,?*Yi,?*x")
        (zero_extend:DI
         (match_operand:SI 1 "x86_64_zext_general_operand"
-                       "rmWz,0,r   ,m  ,r   ,m*x")))]
+                       "rmWz,0,r   ,m  ,r   ,m")))]
   "TARGET_64BIT"
   "@
    mov{l}\t{%1, %k0|%k0, %1}
@@ -3479,7 +3479,7 @@
    movd\t{%1, %0|%0, %1}
    %vmovd\t{%1, %0|%0, %1}
    %vmovd\t{%1, %0|%0, %1}"
-  [(set_attr "isa" "*,*,*,*,*,sse2")
+  [(set_attr "isa" "*,*,sse2,sse2,sse2,sse2")
    (set_attr "type" "imovx,multi,mmxmov,mmxmov,ssemov,ssemov")
    (set_attr "prefix" "orig,*,orig,orig,maybe_vex,maybe_vex")
    (set_attr "prefix_0f" "0,*,*,*,*,*")
@@ -3487,9 +3487,9 @@
 
 (define_insn "*zero_extendsidi2"
   [(set (match_operand:DI 0 "nonimmediate_operand"
-                       "=ro,?r,?o,?*Ym,?*y,?*Yi,!*x")
+                       "=ro,?r,?o,?*Ym,?*y,?*Yi,?*x")
        (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand"
-                       "0  ,rm,r ,r   ,m  ,r   ,m*x")))]
+                       "0  ,rm,r ,r   ,m  ,r   ,m")))]
   "!TARGET_64BIT"
   "@
    #
@@ -3499,7 +3499,7 @@
    movd\t{%1, %0|%0, %1}
    %vmovd\t{%1, %0|%0, %1}
    %vmovd\t{%1, %0|%0, %1}"
-  [(set_attr "isa" "*,*,*,*,*,*,sse2")
+  [(set_attr "isa" "*,*,*,sse2,sse2,sse2,sse2")
    (set_attr "type" "multi,multi,multi,mmxmov,mmxmov,ssemov,ssemov")
    (set_attr "prefix" "*,*,*,orig,orig,maybe_vex,maybe_vex")
    (set_attr "mode" "SI,SI,SI,DI,DI,TI,TI")])

Reply via email to