Hello!

--- and reoder alternatives a bit.

2011-06-09  Uros Bizjak  <ubiz...@gmail.com>

        * config/i386/i386.md (*movdi_internal_rex64): Merge
        alternatives 6 and 8.

Tested on x86_64-pc-linux-gnu, committed to mainline.

Uros.
Index: i386.md
===================================================================
--- i386.md     (revision 174837)
+++ i386.md     (working copy)
@@ -1975,9 +1975,9 @@
 
 (define_insn "*movdi_internal_rex64"
   [(set (match_operand:DI 0 "nonimmediate_operand"
-         "=r,r  ,r,m ,!m,*y,*y,?r ,m ,?*Ym,?*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")
+         "=r,r  ,r,m ,!m,*y,m*y,?*y,?r ,?*Ym,*x,m ,*x,*x,?r ,?*Yi,?*x,?*Ym")
        (match_operand:DI 1 "general_operand"
-         "Z ,rem,i,re,n ,C ,*y,*Ym,*y,r   ,m  ,C ,*x,*Yi,*x,r  ,m ,*Ym,*x"))]
+         "Z ,rem,i,re,n ,C ,*y ,m  ,*Ym,r   ,C ,*x,*x,m ,*Yi,r   ,*Ym,*x"))]
   "TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
 {
   switch (get_attr_type (insn))
@@ -2027,18 +2027,18 @@
     }
 }
   [(set (attr "type")
-     (cond [(eq_attr "alternative" "5")
+     (cond [(eq_attr "alternative" "4")
+             (const_string "multi")
+           (eq_attr "alternative" "5")
              (const_string "mmx")
-           (eq_attr "alternative" "6,7,8,9,10")
+           (eq_attr "alternative" "6,7,8,9")
              (const_string "mmxmov")
-           (eq_attr "alternative" "11")
+           (eq_attr "alternative" "10")
              (const_string "sselog1")
-           (eq_attr "alternative" "12,13,14,15,16")
+           (eq_attr "alternative" "11,12,13,14,15")
              (const_string "ssemov")
-           (eq_attr "alternative" "17,18")
+           (eq_attr "alternative" "16,17")
              (const_string "ssecvt")
-           (eq_attr "alternative" "4")
-             (const_string "multi")
            (match_operand:DI 1 "pic_32bit_operand" "")
              (const_string "lea")
           ]
@@ -2054,18 +2054,18 @@
         (const_string "8")
         (const_string "*")))
    (set (attr "prefix_rex")
-     (if_then_else (eq_attr "alternative" "7,9")
+     (if_then_else (eq_attr "alternative" "8,9")
        (const_string "1")
        (const_string "*")))
    (set (attr "prefix_data16")
-     (if_then_else (eq_attr "alternative" "15")
+     (if_then_else (eq_attr "alternative" "11")
        (const_string "1")
        (const_string "*")))
    (set (attr "prefix")
-     (if_then_else (eq_attr "alternative" "11,12,13,14,15,16")
+     (if_then_else (eq_attr "alternative" "10,11,12,13,14,15")
        (const_string "maybe_vex")
        (const_string "orig")))
-   (set_attr "mode" 
"SI,DI,DI,DI,SI,DI,DI,DI,DI,DI,DI,TI,TI,DI,DI,DI,DI,DI,DI")])
+   (set_attr "mode" "SI,DI,DI,DI,SI,DI,DI,DI,DI,DI,TI,DI,TI,DI,DI,DI,DI,DI")])
 
 ;; Convert impossible stores of immediate to existing instructions.
 ;; First try to get scratch register and go through it.  In case this

Reply via email to