Patchwork [i386] : Two cleanups.

login
register
mail settings
Submitter Uros Bizjak
Date Sept. 19, 2011, 6:24 p.m.
Message ID <CAFULd4YhvMkNRXJnRizeQCZUrLPEi-+_VgrRxs96YzuYVV9nLg@mail.gmail.com>
Download mbox | patch
Permalink /patch/115381/
State New
Headers show

Comments

Uros Bizjak - Sept. 19, 2011, 6:24 p.m.
Hello!

No functional change.

2011-09-19  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
	to calculate unit, prefix_rep and prefix_data16 attributes.
	(*mov<mode>_internal): Ditto for unit attribute.
	(*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
	(*movv2sf_internal): Ditto.
	* config/i386/sse.md (VI1248_256): Remove mode iterator.
	(avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
	(*avx2_eq<mode>3): Ditto.
	(avx2_gt<mode>3): Ditto.

Tested on x86_64-pc-linux-gnu {,-m32}, comitted to mainline SVN.

Uros.

Patch

Index: mmx.md
===================================================================
--- mmx.md	(revision 178981)
+++ mmx.md	(working copy)
@@ -98,9 +98,18 @@ 
 	      (const_string "sselog1")
 	   ]
 	   (const_string "ssemov")))
-   (set_attr "unit" "*,*,*,*,*,*,mmx,mmx,*,*,*,*,*")
-   (set_attr "prefix_rep" "*,*,*,*,*,*,1,1,*,1,*,*,*")
-   (set_attr "prefix_data16" "*,*,*,*,*,*,*,*,*,*,1,1,1")
+   (set (attr "unit")
+     (if_then_else (eq_attr "alternative" "6,7")
+       (const_string "mmx")
+       (const_string "*")))
+   (set (attr "prefix_rep")
+     (if_then_else (eq_attr "alternative" "6,7,9")
+       (const_string "1")
+       (const_string "*")))
+   (set (attr "prefix_data16")
+     (if_then_else (eq_attr "alternative" "10,11,12")
+       (const_string "1")
+       (const_string "*")))
    (set (attr "prefix_rex")
      (if_then_else (eq_attr "alternative" "9,10")
        (symbol_ref "x86_extended_reg_mentioned_p (insn)")
@@ -154,7 +163,10 @@ 
 	      (const_string "multi")
 	   ]
 	   (const_string "ssemov")))
-   (set_attr "unit" "*,*,*,*,mmx,mmx,*,*,*,*,*,*,*,*,*")
+   (set (attr "unit")
+     (if_then_else (eq_attr "alternative" "4,5")
+       (const_string "mmx")
+       (const_string "*")))
    (set (attr "prefix_rep")
      (if_then_else
        (ior (eq_attr "alternative" "4,5")
@@ -219,8 +231,14 @@ 
 	      (const_string "sselog1")
 	   ]
 	   (const_string "ssemov")))
-   (set_attr "unit" "*,*,*,*,*,*,mmx,mmx,*,*,*,*,*,*")
-   (set_attr "prefix_rep" "*,*,*,*,*,*,1,1,*,*,*,*,*,*")
+   (set (attr "unit")
+     (if_then_else (eq_attr "alternative" "6,7")
+       (const_string "mmx")
+       (const_string "*")))
+   (set (attr "prefix_rep")
+     (if_then_else (eq_attr "alternative" "6,7")
+       (const_string "1")
+       (const_string "*")))
    (set (attr "length_vex")
      (if_then_else
        (and (eq_attr "alternative" "12,13")
@@ -270,8 +288,14 @@ 
 	      (const_string "multi")
 	   ]
 	   (const_string "ssemov")))
-   (set_attr "unit" "*,*,*,*,mmx,mmx,*,*,*,*,*,*")
-   (set_attr "prefix_rep" "*,*,*,*,1,1,*,*,*,*,*,*")
+   (set (attr "unit")
+     (if_then_else (eq_attr "alternative" "4,5")
+       (const_string "mmx")
+       (const_string "*")))
+   (set (attr "prefix_rep")
+     (if_then_else (eq_attr "alternative" "4,5")
+       (const_string "1")
+       (const_string "*")))
    (set (attr "prefix")
      (if_then_else (eq_attr "alternative" "6,7,8,9")
        (const_string "maybe_vex")
Index: sse.md
===================================================================
--- sse.md	(revision 178981)
+++ sse.md	(working copy)
@@ -191,7 +191,6 @@ 
 
 ;; Random 256bit vector integer mode combinations
 (define_mode_iterator VI124_256 [V32QI V16HI V8SI])
-(define_mode_iterator VI1248_256 [V32QI V16HI V8SI V4DI])
 (define_mode_iterator VI248_256 [V16HI V8SI V4DI])
 
 ;; Int-float size matches
@@ -6036,18 +6035,18 @@ 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define_expand "avx2_eq<mode>3"
-  [(set (match_operand:VI1248_256 0 "register_operand" "")
-	(eq:VI1248_256
-	  (match_operand:VI1248_256 1 "nonimmediate_operand" "")
-	  (match_operand:VI1248_256 2 "nonimmediate_operand" "")))]
+  [(set (match_operand:VI_256 0 "register_operand" "")
+	(eq:VI_256
+	  (match_operand:VI_256 1 "nonimmediate_operand" "")
+	  (match_operand:VI_256 2 "nonimmediate_operand" "")))]
   "TARGET_AVX2"
   "ix86_fixup_binary_operands_no_copy (EQ, <MODE>mode, operands);")
 
 (define_insn "*avx2_eq<mode>3"
-  [(set (match_operand:VI1248_256 0 "register_operand" "=x")
-	(eq:VI1248_256
-	  (match_operand:VI1248_256 1 "nonimmediate_operand" "%x")
-	  (match_operand:VI1248_256 2 "nonimmediate_operand" "xm")))]
+  [(set (match_operand:VI_256 0 "register_operand" "=x")
+	(eq:VI_256
+	  (match_operand:VI_256 1 "nonimmediate_operand" "%x")
+	  (match_operand:VI_256 2 "nonimmediate_operand" "xm")))]
   "TARGET_AVX2 && ix86_binary_operator_ok (EQ, <MODE>mode, operands)"
   "vpcmpeq<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
   [(set_attr "type" "ssecmp")
@@ -6118,10 +6117,10 @@ 
    (set_attr "mode" "TI")])
 
 (define_insn "avx2_gt<mode>3"
-  [(set (match_operand:VI1248_256 0 "register_operand" "=x")
-	(gt:VI1248_256
-	  (match_operand:VI1248_256 1 "register_operand" "x")
-	  (match_operand:VI1248_256 2 "nonimmediate_operand" "xm")))]
+  [(set (match_operand:VI_256 0 "register_operand" "=x")
+	(gt:VI_256
+	  (match_operand:VI_256 1 "register_operand" "x")
+	  (match_operand:VI_256 2 "nonimmediate_operand" "xm")))]
   "TARGET_AVX2"
   "vpcmpgt<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
   [(set_attr "type" "ssecmp")