Patchwork [i386] : Merge two alternatives in *movdi_internal_rex64

login
register
mail settings
Submitter Uros Bizjak
Date June 9, 2011, 4:24 p.m.
Message ID <BANLkTi=-7vX5zpTFiGZ5HP6Bywqcb3hMsw@mail.gmail.com>
Download mbox | patch
Permalink /patch/99779/
State New
Headers show

Comments

Uros Bizjak - June 9, 2011, 4:24 p.m.
Hello!

--- and reoder alternatives a bit.

2011-06-09  Uros Bizjak  <ubizjak@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.

Patch

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