Patchwork [x86] Use match_test for .md attributes

login
register
mail settings
Submitter Richard Sandiford
Date Aug. 31, 2011, 9:10 p.m.
Message ID <87mxepl22v.fsf@firetop.home>
Download mbox | patch
Permalink /patch/112689/
State New
Headers show

Comments

Richard Sandiford - Aug. 31, 2011, 9:10 p.m.
Uros Bizjak <ubizjak@gmail.com> writes:
> On Mon, Aug 15, 2011 at 11:57 AM, Richard Sandiford
> <rdsandiford@googlemail.com> wrote:
>
>>>> Following on from the two patches I've just posted, this one makes
>>>> config/i386/*.md use match_test for .md attributes.  Tested as
>>>> described here:
>>>
>>>>     http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01182.html
>>>
>>>>      * config/i386/i386.md: Use (match_test ...) for attribute tests.
>>>>      * config/i386/mmx.md: Likewise.
>>>>      * config/i386/sse.md: Likewise.
>>>
>>> -              (eq (symbol_ref "TARGET_SSE2") (const_int 0)))
>>> +              (not (match_test "TARGET_SSE2")))
>>>
>>> Jus a question - in predicates.md, i.e. (match_test "!TARGET_SSE2") is
>>> used. Do we want to standardize on (not (match_test "...")) form
>>> everywhere?
>>
>> Yeah, good question.  I'd used (not (match_test ...)) so that genattrtab
>> could better optimise combinations of expressions.  I suppose we don't
>> yet combine predicate expressions in the same way, so it probably makes
>> no difference there.  We might use predicate expressions more in future
>> though.
>>
>> I'm happy to convert predicate match_tests at the same time.
>
> That would be much appreciated.

OK, here's what I committed after testing on x86_64-linux-gnu.

Richard


gcc/
	* config/i386/i386.md: Use (match_test ...) for attribute tests.
	* config/i386/mmx.md: Likewise.
	* config/i386/sse.md: Likewise.
	* config/i386/predicates.md (call_insn_operand): Use
	(not (match_test "...")) instead of (match_test "!...")
	* config/i386/constraints.md (w): Likewise.

Patch

Index: gcc/config/i386/i386.md
===================================================================
--- gcc/config/i386/i386.md	2011-08-27 08:17:19.000000000 +0100
+++ gcc/config/i386/i386.md	2011-08-31 19:13:34.000000000 +0100
@@ -490,18 +490,16 @@  (define_attr "prefix_0f" ""
 
 ;; Set when REX opcode prefix is used.
 (define_attr "prefix_rex" ""
-  (cond [(eq (symbol_ref "TARGET_64BIT") (const_int 0))
+  (cond [(not (match_test "TARGET_64BIT"))
 	   (const_int 0)
 	 (and (eq_attr "mode" "DI")
 	      (and (eq_attr "type" "!push,pop,call,callv,leave,ibr")
 		   (eq_attr "unit" "!mmx")))
 	   (const_int 1)
 	 (and (eq_attr "mode" "QI")
-	      (ne (symbol_ref "x86_extended_QIreg_mentioned_p (insn)")
-		  (const_int 0)))
+	      (match_test "x86_extended_QIreg_mentioned_p (insn)"))
 	   (const_int 1)
-	 (ne (symbol_ref "x86_extended_reg_mentioned_p (insn)")
-	     (const_int 0))
+	 (match_test "x86_extended_reg_mentioned_p (insn)")
 	   (const_int 1)
 	 (and (eq_attr "type" "imovx")
 	      (match_operand:QI 1 "ext_QIreg_operand" ""))
@@ -551,7 +549,7 @@  (define_attr "modrm" ""
 	 (eq_attr "unit" "i387")
 	   (const_int 0)
          (and (eq_attr "type" "incdec")
-	      (and (eq (symbol_ref "TARGET_64BIT") (const_int 0))
+	      (and (not (match_test "TARGET_64BIT"))
 		   (ior (match_operand:SI 1 "register_operand" "")
 			(match_operand:HI 1 "register_operand" ""))))
 	   (const_int 0)
@@ -597,7 +595,7 @@  (define_attr "length" ""
 		       (attr "length_address")))
 	 (ior (eq_attr "prefix" "vex")
 	      (and (eq_attr "prefix" "maybe_vex")
-		    (ne (symbol_ref "TARGET_AVX") (const_int 0))))
+		   (match_test "TARGET_AVX")))
 	   (plus (attr "length_vex")
 		 (plus (attr "length_immediate")
 		       (plus (attr "modrm")
@@ -1927,16 +1925,13 @@  (define_insn "*movti_internal_rex64"
    (set (attr "mode")
    	(cond [(eq_attr "alternative" "2,3")
 		 (if_then_else
-		   (ne (symbol_ref "optimize_function_for_size_p (cfun)")
-		       (const_int 0))
+		   (match_test "optimize_function_for_size_p (cfun)")
 		   (const_string "V4SF")
 		   (const_string "TI"))
 	       (eq_attr "alternative" "4")
 		 (if_then_else
-		   (ior (ne (symbol_ref "TARGET_SSE_TYPELESS_STORES")
-			    (const_int 0))
-			(ne (symbol_ref "optimize_function_for_size_p (cfun)")
-			    (const_int 0)))
+		   (ior (match_test "TARGET_SSE_TYPELESS_STORES")
+			(match_test "optimize_function_for_size_p (cfun)"))
 		   (const_string "V4SF")
 		   (const_string "TI"))]
 	       (const_string "DI")))])
@@ -1985,13 +1980,11 @@  (define_insn "*movti_internal_sse"
   [(set_attr "type" "sselog1,ssemov,ssemov")
    (set_attr "prefix" "maybe_vex")
    (set (attr "mode")
-	(cond [(ior (eq (symbol_ref "TARGET_SSE2") (const_int 0))
-		    (ne (symbol_ref "optimize_function_for_size_p (cfun)")
-			(const_int 0)))
+	(cond [(ior (not (match_test "TARGET_SSE2"))
+		    (match_test "optimize_function_for_size_p (cfun)"))
 		 (const_string "V4SF")
 	       (and (eq_attr "alternative" "2")
-		    (ne (symbol_ref "TARGET_SSE_TYPELESS_STORES")
-			(const_int 0)))
+		    (match_test "TARGET_SSE_TYPELESS_STORES"))
 		 (const_string "V4SF")]
 	      (const_string "TI")))])
 
@@ -2308,11 +2301,11 @@  (define_insn "*movsi_internal"
 	      (const_string "DI")
 	    (eq_attr "alternative" "6,7")
 	      (if_then_else
-	        (eq (symbol_ref "TARGET_SSE2") (const_int 0))
+	        (not (match_test "TARGET_SSE2"))
 	        (const_string "V4SF")
 	        (const_string "TI"))
 	    (and (eq_attr "alternative" "8,9,10,11")
-	         (eq (symbol_ref "TARGET_SSE2") (const_int 0)))
+	         (not (match_test "TARGET_SSE2")))
 	      (const_string "SF")
 	   ]
 	   (const_string "SI")))])
@@ -2336,20 +2329,16 @@  (define_insn "*movhi_internal"
     }
 }
   [(set (attr "type")
-     (cond [(ne (symbol_ref "optimize_function_for_size_p (cfun)")
-		(const_int 0))
+     (cond [(match_test "optimize_function_for_size_p (cfun)")
 	      (const_string "imov")
 	    (and (eq_attr "alternative" "0")
-		 (ior (eq (symbol_ref "TARGET_PARTIAL_REG_STALL")
-			  (const_int 0))
-		      (eq (symbol_ref "TARGET_HIMODE_MATH")
-			  (const_int 0))))
+		 (ior (not (match_test "TARGET_PARTIAL_REG_STALL"))
+		      (not (match_test "TARGET_HIMODE_MATH"))))
 	      (const_string "imov")
 	    (and (eq_attr "alternative" "1,2")
 		 (match_operand:HI 1 "aligned_operand" ""))
 	      (const_string "imov")
-	    (and (ne (symbol_ref "TARGET_MOVX")
-		     (const_int 0))
+	    (and (match_test "TARGET_MOVX")
 		 (eq_attr "alternative" "0,2"))
 	      (const_string "imovx")
 	   ]
@@ -2361,10 +2350,8 @@  (define_insn "*movhi_internal"
 		  (match_operand:HI 1 "aligned_operand" ""))
 	       (const_string "SI")
 	     (and (eq_attr "alternative" "0")
-		  (ior (eq (symbol_ref "TARGET_PARTIAL_REG_STALL")
-			   (const_int 0))
-		       (eq (symbol_ref "TARGET_HIMODE_MATH")
-			   (const_int 0))))
+		  (ior (not (match_test "TARGET_PARTIAL_REG_STALL"))
+		       (not (match_test "TARGET_HIMODE_MATH"))))
 	       (const_string "SI")
 	    ]
 	    (const_string "HI")))])
@@ -2400,19 +2387,15 @@  (define_insn "*movqi_internal"
      (cond [(and (eq_attr "alternative" "5")
 		 (not (match_operand:QI 1 "aligned_operand" "")))
 	      (const_string "imovx")
-	    (ne (symbol_ref "optimize_function_for_size_p (cfun)")
-		(const_int 0))
+	    (match_test "optimize_function_for_size_p (cfun)")
 	      (const_string "imov")
 	    (and (eq_attr "alternative" "3")
-		 (ior (eq (symbol_ref "TARGET_PARTIAL_REG_STALL")
-			  (const_int 0))
-		      (eq (symbol_ref "TARGET_QIMODE_MATH")
-			  (const_int 0))))
+		 (ior (not (match_test "TARGET_PARTIAL_REG_STALL"))
+		      (not (match_test "TARGET_QIMODE_MATH"))))
 	      (const_string "imov")
 	    (eq_attr "alternative" "3,5")
 	      (const_string "imovx")
-	    (and (ne (symbol_ref "TARGET_MOVX")
-		     (const_int 0))
+	    (and (match_test "TARGET_MOVX")
 		 (eq_attr "alternative" "2"))
 	      (const_string "imovx")
 	   ]
@@ -2426,20 +2409,15 @@  (define_insn "*movqi_internal"
 	       (const_string "SI")
 	     (and (eq_attr "type" "imov")
 		  (and (eq_attr "alternative" "0,1")
-		       (and (ne (symbol_ref "TARGET_PARTIAL_REG_DEPENDENCY")
-				(const_int 0))
-			    (and (eq (symbol_ref "optimize_function_for_size_p (cfun)")
-				     (const_int 0))
-				 (eq (symbol_ref "TARGET_PARTIAL_REG_STALL")
-				     (const_int 0))))))
+		       (and (match_test "TARGET_PARTIAL_REG_DEPENDENCY")
+			    (and (not (match_test "optimize_function_for_size_p (cfun)"))
+				 (not (match_test "TARGET_PARTIAL_REG_STALL"))))))
 	       (const_string "SI")
 	     ;; Avoid partial register stalls when not using QImode arithmetic
 	     (and (eq_attr "type" "imov")
 		  (and (eq_attr "alternative" "0,1")
-		       (and (ne (symbol_ref "TARGET_PARTIAL_REG_STALL")
-				(const_int 0))
-			    (eq (symbol_ref "TARGET_QIMODE_MATH")
-				(const_int 0)))))
+		       (and (match_test "TARGET_PARTIAL_REG_STALL")
+			    (not (match_test "TARGET_QIMODE_MATH")))))
 	       (const_string "SI")
 	   ]
 	   (const_string "QI")))])
@@ -2579,8 +2557,7 @@  (define_insn "*movqi_extv_1_rex64"
 }
   [(set (attr "type")
      (if_then_else (ior (not (match_operand:QI 0 "QIreg_operand" ""))
-			(ne (symbol_ref "TARGET_MOVX")
-			    (const_int 0)))
+			(match_test "TARGET_MOVX"))
 	(const_string "imovx")
 	(const_string "imov")))
    (set (attr "mode")
@@ -2606,8 +2583,7 @@  (define_insn "*movqi_extv_1"
   [(set (attr "type")
      (if_then_else (and (match_operand:QI 0 "register_operand" "")
 			(ior (not (match_operand:QI 0 "QIreg_operand" ""))
-			     (ne (symbol_ref "TARGET_MOVX")
-				 (const_int 0))))
+			     (match_test "TARGET_MOVX")))
 	(const_string "imovx")
 	(const_string "imov")))
    (set (attr "mode")
@@ -2643,8 +2619,7 @@  (define_insn "*movqi_extzv_2_rex64"
 }
   [(set (attr "type")
      (if_then_else (ior (not (match_operand:QI 0 "QIreg_operand" ""))
-			(ne (symbol_ref "TARGET_MOVX")
-			    (const_int 0)))
+			(match_test "TARGET_MOVX"))
 	(const_string "imovx")
 	(const_string "imov")))
    (set (attr "mode")
@@ -2671,8 +2646,7 @@  (define_insn "*movqi_extzv_2"
   [(set (attr "type")
      (if_then_else (and (match_operand:QI 0 "register_operand" "")
 			(ior (not (match_operand:QI 0 "QIreg_operand" ""))
-			     (ne (symbol_ref "TARGET_MOVX")
-				 (const_int 0))))
+			     (match_test "TARGET_MOVX")))
 	(const_string "imovx")
 	(const_string "imov")))
    (set (attr "mode")
@@ -2937,16 +2911,13 @@  (define_insn "*movtf_internal"
    (set (attr "mode")
         (cond [(eq_attr "alternative" "0,2")
 		 (if_then_else
-		   (ne (symbol_ref "optimize_function_for_size_p (cfun)")
-		       (const_int 0))
+		   (match_test "optimize_function_for_size_p (cfun)")
 		   (const_string "V4SF")
 		   (const_string "TI"))
 	       (eq_attr "alternative" "1")
 		 (if_then_else
-		   (ior (ne (symbol_ref "TARGET_SSE_TYPELESS_STORES")
-			    (const_int 0))
-			(ne (symbol_ref "optimize_function_for_size_p (cfun)")
-			    (const_int 0)))
+		   (ior (match_test "TARGET_SSE_TYPELESS_STORES")
+			(match_test "optimize_function_for_size_p (cfun)"))
 		   (const_string "V4SF")
 		   (const_string "TI"))]
 	       (const_string "DI")))])
@@ -3084,11 +3055,9 @@  (define_insn "*movdf_internal_rex64"
 
 	       /* xorps is one byte shorter.  */
 	       (eq_attr "alternative" "7")
-		 (cond [(ne (symbol_ref "optimize_function_for_size_p (cfun)")
-			    (const_int 0))
+		 (cond [(match_test "optimize_function_for_size_p (cfun)")
 			  (const_string "V4SF")
-			(ne (symbol_ref "TARGET_SSE_LOAD0_BY_PXOR")
-			    (const_int 0))
+			(match_test "TARGET_SSE_LOAD0_BY_PXOR")
 			  (const_string "TI")
 		       ]
 		       (const_string "V2DF"))
@@ -3100,11 +3069,9 @@  (define_insn "*movdf_internal_rex64"
 		  movaps encodes one byte shorter.  */
 	       (eq_attr "alternative" "8")
 		 (cond
-		   [(ne (symbol_ref "optimize_function_for_size_p (cfun)")
-		        (const_int 0))
+		   [(match_test "optimize_function_for_size_p (cfun)")
 		      (const_string "V4SF")
-		    (ne (symbol_ref "TARGET_SSE_PARTIAL_REG_DEPENDENCY")
-		        (const_int 0))
+		    (match_test "TARGET_SSE_PARTIAL_REG_DEPENDENCY")
 		      (const_string "V2DF")
 		   ]
 		   (const_string "DF"))
@@ -3113,8 +3080,7 @@  (define_insn "*movdf_internal_rex64"
 		  of register.  */
 	       (eq_attr "alternative" "9")
 		 (if_then_else
-		   (ne (symbol_ref "TARGET_SSE_SPLIT_REGS")
-		       (const_int 0))
+		   (match_test "TARGET_SSE_SPLIT_REGS")
 		   (const_string "V1DF")
 		   (const_string "DF"))
 	      ]
@@ -3208,7 +3174,7 @@  (define_insn "*movdf_internal"
 		 (const_string "SI")
 
 	       /* For SSE1, we have many fewer alternatives.  */
-	       (eq (symbol_ref "TARGET_SSE2") (const_int 0))
+	       (not (match_test "TARGET_SSE2"))
 		 (if_then_else
 		   (eq_attr "alternative" "5,6,9,10")
 		   (const_string "V4SF")
@@ -3216,11 +3182,9 @@  (define_insn "*movdf_internal"
 
 	       /* xorps is one byte shorter.  */
 	       (eq_attr "alternative" "5,9")
-		 (cond [(ne (symbol_ref "optimize_function_for_size_p (cfun)")
-			    (const_int 0))
+		 (cond [(match_test "optimize_function_for_size_p (cfun)")
 			  (const_string "V4SF")
-			(ne (symbol_ref "TARGET_SSE_LOAD0_BY_PXOR")
-			    (const_int 0))
+			(match_test "TARGET_SSE_LOAD0_BY_PXOR")
 			  (const_string "TI")
 		       ]
 		       (const_string "V2DF"))
@@ -3232,11 +3196,9 @@  (define_insn "*movdf_internal"
 		  movaps encodes one byte shorter.  */
 	       (eq_attr "alternative" "6,10")
 		 (cond
-		   [(ne (symbol_ref "optimize_function_for_size_p (cfun)")
-		        (const_int 0))
+		   [(match_test "optimize_function_for_size_p (cfun)")
 		      (const_string "V4SF")
-		    (ne (symbol_ref "TARGET_SSE_PARTIAL_REG_DEPENDENCY")
-		        (const_int 0))
+		    (match_test "TARGET_SSE_PARTIAL_REG_DEPENDENCY")
 		      (const_string "V2DF")
 		   ]
 		   (const_string "DF"))
@@ -3245,8 +3207,7 @@  (define_insn "*movdf_internal"
 		  of register.  */
 	       (eq_attr "alternative" "7,11")
 		 (if_then_else
-		   (ne (symbol_ref "TARGET_SSE_SPLIT_REGS")
-		       (const_int 0))
+		   (match_test "TARGET_SSE_SPLIT_REGS")
 		   (const_string "V1DF")
 		   (const_string "DF"))
 	      ]
@@ -3321,12 +3282,9 @@  (define_insn "*movsf_internal"
 		 (const_string "SI")
 	       (eq_attr "alternative" "5")
 		 (if_then_else
-		   (and (and (ne (symbol_ref "TARGET_SSE_LOAD0_BY_PXOR")
-			    	 (const_int 0))
-			     (ne (symbol_ref "TARGET_SSE2")
-				 (const_int 0)))
-			(eq (symbol_ref "optimize_function_for_size_p (cfun)")
-			    (const_int 0)))
+		   (and (and (match_test "TARGET_SSE_LOAD0_BY_PXOR")
+			     (match_test "TARGET_SSE2"))
+			(not (match_test "optimize_function_for_size_p (cfun)")))
 		   (const_string "TI")
 		   (const_string "V4SF"))
 	       /* For architectures resolving dependencies on
@@ -3341,10 +3299,8 @@  (define_insn "*movsf_internal"
 		  to avoid problems on using packed logical operations.  */
 	       (eq_attr "alternative" "6")
 		 (if_then_else
-		   (ior (ne (symbol_ref "TARGET_SSE_PARTIAL_REG_DEPENDENCY")
-			    (const_int 0))
-			(ne (symbol_ref "TARGET_SSE_SPLIT_REGS")
-			    (const_int 0)))
+		   (ior (match_test "TARGET_SSE_PARTIAL_REG_DEPENDENCY")
+			(match_test "TARGET_SSE_SPLIT_REGS"))
 		   (const_string "V4SF")
 		   (const_string "SF"))
 	       (eq_attr "alternative" "11")
@@ -4962,7 +4918,7 @@  (define_insn "*float<SWI48x:mode><MODEF:
    (set (attr "prefix_rex")
      (if_then_else
        (and (eq_attr "prefix" "maybe_vex")
-	    (ne (symbol_ref "<SWI48x:MODE>mode == DImode") (const_int 0)))
+	    (match_test "<SWI48x:MODE>mode == DImode"))
        (const_string "1")
        (const_string "*")))
    (set_attr "unit" "i387,*,*")
@@ -4987,7 +4943,7 @@  (define_insn "*float<SWI48x:mode><MODEF:
    (set (attr "prefix_rex")
      (if_then_else
        (and (eq_attr "prefix" "maybe_vex")
-	    (ne (symbol_ref "<SWI48x:MODE>mode == DImode") (const_int 0)))
+	    (match_test "<SWI48x:MODE>mode == DImode"))
        (const_string "1")
        (const_string "*")))
    (set_attr "athlon_decode" "*,direct")
@@ -5182,7 +5138,7 @@  (define_insn "*float<SWI48x:mode><MODEF:
    (set (attr "prefix_rex")
      (if_then_else
        (and (eq_attr "prefix" "maybe_vex")
-	    (ne (symbol_ref "<SWI48x:MODE>mode == DImode") (const_int 0)))
+	    (match_test "<SWI48x:MODE>mode == DImode"))
        (const_string "1")
        (const_string "*")))
    (set_attr "athlon_decode" "double,direct")
@@ -5217,7 +5173,7 @@  (define_insn "*float<SWI48x:mode><MODEF:
    (set (attr "prefix_rex")
      (if_then_else
        (and (eq_attr "prefix" "maybe_vex")
-	    (ne (symbol_ref "<SWI48x:MODE>mode == DImode") (const_int 0)))
+	    (match_test "<SWI48x:MODE>mode == DImode"))
        (const_string "1")
        (const_string "*")))
    (set_attr "athlon_decode" "direct")
@@ -7751,7 +7707,7 @@  (define_insn "*anddi_1"
    (set (attr "prefix_rex")
      (if_then_else
        (and (eq_attr "type" "imovx")
-	    (and (ne (symbol_ref "INTVAL (operands[2]) == 0xff") (const_int 0))
+	    (and (match_test "INTVAL (operands[2]) == 0xff")
 		 (match_operand 1 "ext_QIreg_operand" "")))
        (const_string "1")
        (const_string "*")))
@@ -7795,7 +7751,7 @@  (define_insn "*andsi_1"
    (set (attr "prefix_rex")
      (if_then_else
        (and (eq_attr "type" "imovx")
-	    (and (ne (symbol_ref "INTVAL (operands[2]) == 0xff") (const_int 0))
+	    (and (match_test "INTVAL (operands[2]) == 0xff")
 		 (match_operand 1 "ext_QIreg_operand" "")))
        (const_string "1")
        (const_string "*")))
@@ -9130,8 +9086,7 @@  (define_insn "*ashl<mode>3_1"
 	      (const_string "lea")
 	    (eq_attr "alternative" "2")
 	      (const_string "ishiftx")
-            (and (and (ne (symbol_ref "TARGET_DOUBLE_WITH_ADD")
-		          (const_int 0))
+            (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
 		      (match_operand 0 "register_operand" ""))
 		 (match_operand 2 "const1_operand" ""))
 	      (const_string "alu")
@@ -9142,8 +9097,8 @@  (define_insn "*ashl<mode>3_1"
        (ior (eq_attr "type" "alu")
 	    (and (eq_attr "type" "ishift")
 		 (and (match_operand 2 "const1_operand" "")
-		      (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-			  (const_int 0)))))
+		      (ior (match_test "TARGET_SHIFT1")
+			   (match_test "optimize_function_for_size_p (cfun)")))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -9201,8 +9156,7 @@  (define_insn "*ashlsi3_1_zext"
 	      (const_string "lea")
 	    (eq_attr "alternative" "2")
 	      (const_string "ishiftx")
-            (and (ne (symbol_ref "TARGET_DOUBLE_WITH_ADD")
-		     (const_int 0))
+            (and (match_test "TARGET_DOUBLE_WITH_ADD")
 		 (match_operand 2 "const1_operand" ""))
 	      (const_string "alu")
 	   ]
@@ -9212,8 +9166,8 @@  (define_insn "*ashlsi3_1_zext"
        (ior (eq_attr "type" "alu")
 	    (and (eq_attr "type" "ishift")
 		 (and (match_operand 2 "const1_operand" "")
-		      (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-			  (const_int 0)))))
+		      (ior (match_test "TARGET_SHIFT1")
+			   (match_test "optimize_function_for_size_p (cfun)")))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "SI")])
@@ -9257,8 +9211,7 @@  (define_insn "*ashlhi3_1"
   [(set (attr "type")
      (cond [(eq_attr "alternative" "1")
 	      (const_string "lea")
-            (and (and (ne (symbol_ref "TARGET_DOUBLE_WITH_ADD")
-		          (const_int 0))
+            (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
 		      (match_operand 0 "register_operand" ""))
 		 (match_operand 2 "const1_operand" ""))
 	      (const_string "alu")
@@ -9269,8 +9222,8 @@  (define_insn "*ashlhi3_1"
        (ior (eq_attr "type" "alu")
 	    (and (eq_attr "type" "ishift")
 		 (and (match_operand 2 "const1_operand" "")
-		      (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-			  (const_int 0)))))
+		      (ior (match_test "TARGET_SHIFT1")
+			   (match_test "optimize_function_for_size_p (cfun)")))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "HI,SI")])
@@ -9316,8 +9269,7 @@  (define_insn "*ashlqi3_1"
   [(set (attr "type")
      (cond [(eq_attr "alternative" "2")
 	      (const_string "lea")
-            (and (and (ne (symbol_ref "TARGET_DOUBLE_WITH_ADD")
-		          (const_int 0))
+            (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
 		      (match_operand 0 "register_operand" ""))
 		 (match_operand 2 "const1_operand" ""))
 	      (const_string "alu")
@@ -9328,8 +9280,8 @@  (define_insn "*ashlqi3_1"
        (ior (eq_attr "type" "alu")
 	    (and (eq_attr "type" "ishift")
 		 (and (match_operand 2 "const1_operand" "")
-		      (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-			  (const_int 0)))))
+		      (ior (match_test "TARGET_SHIFT1")
+			   (match_test "optimize_function_for_size_p (cfun)")))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "QI,SI,SI")])
@@ -9360,8 +9312,7 @@  (define_insn "*ashlqi3_1_slp"
     }
 }
   [(set (attr "type")
-     (cond [(and (and (ne (symbol_ref "TARGET_DOUBLE_WITH_ADD")
-		          (const_int 0))
+     (cond [(and (and (match_test "TARGET_DOUBLE_WITH_ADD")
 		      (match_operand 0 "register_operand" ""))
 		 (match_operand 1 "const1_operand" ""))
 	      (const_string "alu")
@@ -9372,8 +9323,8 @@  (define_insn "*ashlqi3_1_slp"
        (ior (eq_attr "type" "alu")
 	    (and (eq_attr "type" "ishift1")
 		 (and (match_operand 1 "const1_operand" "")
-		      (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-			  (const_int 0)))))
+		      (ior (match_test "TARGET_SHIFT1")
+			   (match_test "optimize_function_for_size_p (cfun)")))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "QI")])
@@ -9457,8 +9408,7 @@  (define_insn "*ashl<mode>3_cmp"
     }
 }
   [(set (attr "type")
-     (cond [(and (and (ne (symbol_ref "TARGET_DOUBLE_WITH_ADD")
-		          (const_int 0))
+     (cond [(and (and (match_test "TARGET_DOUBLE_WITH_ADD")
 		      (match_operand 0 "register_operand" ""))
 		 (match_operand 2 "const1_operand" ""))
 	      (const_string "alu")
@@ -9469,8 +9419,8 @@  (define_insn "*ashl<mode>3_cmp"
        (ior (eq_attr "type" "alu")
 	    (and (eq_attr "type" "ishift")
 		 (and (match_operand 2 "const1_operand" "")
-		      (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-			  (const_int 0)))))
+		      (ior (match_test "TARGET_SHIFT1")
+			   (match_test "optimize_function_for_size_p (cfun)")))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -9507,8 +9457,7 @@  (define_insn "*ashlsi3_cmp_zext"
     }
 }
   [(set (attr "type")
-     (cond [(and (ne (symbol_ref "TARGET_DOUBLE_WITH_ADD")
-		     (const_int 0))
+     (cond [(and (match_test "TARGET_DOUBLE_WITH_ADD")
 		 (match_operand 2 "const1_operand" ""))
 	      (const_string "alu")
 	   ]
@@ -9518,8 +9467,8 @@  (define_insn "*ashlsi3_cmp_zext"
        (ior (eq_attr "type" "alu")
 	    (and (eq_attr "type" "ishift")
 		 (and (match_operand 2 "const1_operand" "")
-		      (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-			  (const_int 0)))))
+		      (ior (match_test "TARGET_SHIFT1")
+			   (match_test "optimize_function_for_size_p (cfun)")))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "SI")])
@@ -9553,8 +9502,7 @@  (define_insn "*ashl<mode>3_cconly"
     }
 }
   [(set (attr "type")
-     (cond [(and (and (ne (symbol_ref "TARGET_DOUBLE_WITH_ADD")
-		          (const_int 0))
+     (cond [(and (and (match_test "TARGET_DOUBLE_WITH_ADD")
 		      (match_operand 0 "register_operand" ""))
 		 (match_operand 2 "const1_operand" ""))
 	      (const_string "alu")
@@ -9565,8 +9513,8 @@  (define_insn "*ashl<mode>3_cconly"
        (ior (eq_attr "type" "alu")
 	    (and (eq_attr "type" "ishift")
 		 (and (match_operand 2 "const1_operand" "")
-		      (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-			  (const_int 0)))))
+		      (ior (match_test "TARGET_SHIFT1")
+			   (match_test "optimize_function_for_size_p (cfun)")))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -9784,8 +9732,8 @@  (define_insn "*<shiftrt_insn><mode>3_1"
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 2 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -9837,8 +9785,8 @@  (define_insn "*<shiftrt_insn>si3_1_zext"
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 2 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "SI")])
@@ -9873,8 +9821,8 @@  (define_insn "*<shiftrt_insn><mode>3_1"
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 2 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -9899,8 +9847,8 @@  (define_insn "*<shiftrt_insn>qi3_1_slp"
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 1 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "QI")])
@@ -9934,8 +9882,8 @@  (define_insn "*<shiftrt_insn><mode>3_cmp
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 2 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -9966,8 +9914,8 @@  (define_insn "*<shiftrt_insn>si3_cmp_zex
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 2 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "SI")])
@@ -9996,8 +9944,8 @@  (define_insn "*<shiftrt_insn><mode>3_cco
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 2 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -10165,8 +10113,8 @@  (define_insn "*<rotate_insn><mode>3_1"
      (if_then_else
        (and (eq_attr "type" "rotate")
 	    (and (match_operand 2 "const1_operand" "")
-		 (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		     (const_int 0))))
+		 (ior (match_test "TARGET_SHIFT1")
+		      (match_test "optimize_function_for_size_p (cfun)"))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -10231,8 +10179,8 @@  (define_insn "*<rotate_insn>si3_1_zext"
      (if_then_else
        (and (eq_attr "type" "rotate")
 	    (and (match_operand 2 "const1_operand" "")
-		 (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		     (const_int 0))))
+		 (ior (match_test "TARGET_SHIFT1")
+		      (match_test "optimize_function_for_size_p (cfun)"))))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "SI")])
@@ -10279,8 +10227,8 @@  (define_insn "*<rotate_insn><mode>3_1"
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 2 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "<MODE>")])
@@ -10305,8 +10253,8 @@  (define_insn "*<rotate_insn>qi3_1_slp"
    (set (attr "length_immediate")
      (if_then_else
        (and (match_operand 1 "const1_operand" "")
-	    (ne (symbol_ref "TARGET_SHIFT1 || optimize_function_for_size_p (cfun)")
-		(const_int 0)))
+	    (ior (match_test "TARGET_SHIFT1")
+		 (match_test "optimize_function_for_size_p (cfun)")))
        (const_string "0")
        (const_string "*")))
    (set_attr "mode" "QI")])
@@ -15781,7 +15729,7 @@  (define_insn "*strmovqi_1"
    (set_attr "memory" "both")
    (set (attr "prefix_rex")
 	(if_then_else
-	  (ne (symbol_ref "<P:MODE>mode == DImode") (const_int 0))
+	  (match_test "<P:MODE>mode == DImode")
 	  (const_string "0")
 	  (const_string "*")))
    (set_attr "mode" "QI")])
@@ -15957,7 +15905,7 @@  (define_insn "*strsetqi_1"
    (set_attr "memory" "store")
    (set (attr "prefix_rex")
 	(if_then_else
-	  (ne (symbol_ref "<P:MODE>mode == DImode") (const_int 0))
+	  (match_test "<P:MODE>mode == DImode")
 	  (const_string "0")
 	  (const_string "*")))
    (set_attr "mode" "QI")])
@@ -16023,7 +15971,7 @@  (define_insn "*rep_stosqi"
    (set_attr "memory" "store")
    (set (attr "prefix_rex")
 	(if_then_else
-	  (ne (symbol_ref "<P:MODE>mode == DImode") (const_int 0))
+	  (match_test "<P:MODE>mode == DImode")
 	  (const_string "0")
 	  (const_string "*")))
    (set_attr "mode" "QI")])
@@ -16143,7 +16091,7 @@  (define_insn "*cmpstrnqi_nz_1"
    (set_attr "mode" "QI")
    (set (attr "prefix_rex")
 	(if_then_else
-	  (ne (symbol_ref "<P:MODE>mode == DImode") (const_int 0))
+	  (match_test "<P:MODE>mode == DImode")
 	  (const_string "0")
 	  (const_string "*")))
    (set_attr "prefix_rep" "1")])
@@ -16183,7 +16131,7 @@  (define_insn "*cmpstrnqi_1"
    (set_attr "mode" "QI")
    (set (attr "prefix_rex")
 	(if_then_else
-	  (ne (symbol_ref "<P:MODE>mode == DImode") (const_int 0))
+	  (match_test "<P:MODE>mode == DImode")
 	  (const_string "0")
 	  (const_string "*")))
    (set_attr "prefix_rep" "1")])
@@ -16224,7 +16172,7 @@  (define_insn "*strlenqi_1"
    (set_attr "mode" "QI")
    (set (attr "prefix_rex")
 	(if_then_else
-	  (ne (symbol_ref "<P:MODE>mode == DImode") (const_int 0))
+	  (match_test "<P:MODE>mode == DImode")
 	  (const_string "0")
 	  (const_string "*")))
    (set_attr "prefix_rep" "1")])
@@ -16651,7 +16599,7 @@  (define_insn "pro_epilogue_adjust_stack_
 }
   [(set (attr "type")
 	(cond [(and (eq_attr "alternative" "0")
-		    (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0)))
+		    (not (match_test "TARGET_OPT_AGU")))
 		 (const_string "alu")
 	       (match_operand:<MODE> 2 "const0_operand" "")
 		 (const_string "imov")
Index: gcc/config/i386/mmx.md
===================================================================
--- gcc/config/i386/mmx.md	2011-08-25 19:30:12.000000000 +0100
+++ gcc/config/i386/mmx.md	2011-08-31 19:05:49.000000000 +0100
@@ -159,13 +159,13 @@  (define_insn "*mov<mode>_internal"
      (if_then_else
        (ior (eq_attr "alternative" "4,5")
 	    (and (eq_attr "alternative" "7")
-		 (eq (symbol_ref "TARGET_AVX") (const_int 0))))
+		 (not (match_test "TARGET_AVX"))))
        (const_string "1")
        (const_string "*")))
    (set (attr "prefix_data16")
      (if_then_else
        (and (eq_attr "alternative" "8")
-	    (eq (symbol_ref "TARGET_AVX") (const_int 0)))
+	    (not (match_test "TARGET_AVX")))
        (const_string "1")
        (const_string "*")))
    (set (attr "prefix")
@@ -224,7 +224,7 @@  (define_insn "*movv2sf_internal_rex64"
    (set (attr "length_vex")
      (if_then_else
        (and (eq_attr "alternative" "12,13")
-	    (ne (symbol_ref "TARGET_AVX") (const_int 0)))
+	    (match_test "TARGET_AVX"))
        (const_string "4")
        (const_string "*")))
    (set (attr "prefix")
@@ -1563,7 +1563,8 @@  (define_insn "*mmx_uavgv8qi3"
   [(set_attr "type" "mmxshft")
    (set (attr "prefix_extra")
      (if_then_else
-       (eq (symbol_ref "(TARGET_SSE || TARGET_3DNOW_A)") (const_int 0))
+       (not (ior (match_test "TARGET_SSE")
+		 (match_test "TARGET_3DNOW_A")))
        (const_string "1")
        (const_string "*")))
    (set_attr "mode" "DI")])
Index: gcc/config/i386/sse.md
===================================================================
--- gcc/config/i386/sse.md	2011-08-31 19:04:49.000000000 +0100
+++ gcc/config/i386/sse.md	2011-08-31 19:12:09.000000000 +0100
@@ -397,15 +397,12 @@  (define_insn "*mov<mode>_internal"
   [(set_attr "type" "sselog1,ssemov,ssemov")
    (set_attr "prefix" "maybe_vex")
    (set (attr "mode")
-	(cond [(ne (symbol_ref "TARGET_AVX") (const_int 0))
+	(cond [(match_test "TARGET_AVX")
 		 (const_string "<sseinsnmode>")
-	       (ior (ior
-		      (ne (symbol_ref "optimize_function_for_size_p (cfun)")
-			  (const_int 0))
-		      (eq (symbol_ref "TARGET_SSE2") (const_int 0)))
+	       (ior (ior (match_test "optimize_function_for_size_p (cfun)")
+			 (not (match_test "TARGET_SSE2")))
 		    (and (eq_attr "alternative" "2")
-			 (ne (symbol_ref "TARGET_SSE_TYPELESS_STORES")
-			     (const_int 0))))
+			 (match_test "TARGET_SSE_TYPELESS_STORES")))
 		 (const_string "V4SF")
 	       (eq (const_string "<MODE>mode") (const_string "V4SFmode"))
 		 (const_string "V4SF")
@@ -548,7 +545,7 @@  (define_insn "*<sse2>_movdqu<avxsizesuff
    (set_attr "movu" "1")
    (set (attr "prefix_data16")
      (if_then_else
-       (ne (symbol_ref "TARGET_AVX") (const_int 0))
+       (match_test "TARGET_AVX")
      (const_string "*")
      (const_string "1")))
    (set_attr "prefix" "maybe_vex")
@@ -564,12 +561,12 @@  (define_insn "<sse3>_lddqu<avxsizesuffix
    (set_attr "movu" "1")
    (set (attr "prefix_data16")
      (if_then_else
-       (ne (symbol_ref "TARGET_AVX") (const_int 0))
+       (match_test "TARGET_AVX")
      (const_string "*")
      (const_string "0")))
    (set (attr "prefix_rep")
      (if_then_else
-       (ne (symbol_ref "TARGET_AVX") (const_int 0))
+       (match_test "TARGET_AVX")
      (const_string "*")
      (const_string "1")))
    (set_attr "prefix" "maybe_vex")
@@ -604,7 +601,7 @@  (define_insn "<sse2>_movnt<mode>"
   [(set_attr "type" "ssecvt")
    (set (attr "prefix_data16")
      (if_then_else
-       (ne (symbol_ref "TARGET_AVX") (const_int 0))
+       (match_test "TARGET_AVX")
      (const_string "*")
      (const_string "1")))
    (set_attr "prefix" "maybe_vex")
@@ -2247,7 +2244,7 @@  (define_insn "sse2_cvtps2dq"
   [(set_attr "type" "ssecvt")
    (set (attr "prefix_data16")
      (if_then_else
-       (ne (symbol_ref "TARGET_AVX") (const_int 0))
+       (match_test "TARGET_AVX")
      (const_string "*")
      (const_string "1")))
    (set_attr "prefix" "maybe_vex")
@@ -2270,12 +2267,12 @@  (define_insn "sse2_cvttps2dq"
   [(set_attr "type" "ssecvt")
    (set (attr "prefix_rep")
      (if_then_else
-       (ne (symbol_ref "TARGET_AVX") (const_int 0))
+       (match_test "TARGET_AVX")
      (const_string "*")
      (const_string "1")))
    (set (attr "prefix_data16")
      (if_then_else
-       (ne (symbol_ref "TARGET_AVX") (const_int 0))
+       (match_test "TARGET_AVX")
      (const_string "*")
      (const_string "0")))
    (set_attr "prefix_data16" "0")
@@ -4411,7 +4408,7 @@  (define_insn "sse2_storehpd"
    (set (attr "prefix_data16")
      (if_then_else
        (and (eq_attr "alternative" "0")
-	    (eq (symbol_ref "TARGET_AVX") (const_int 0)))
+	    (not (match_test "TARGET_AVX")))
        (const_string "1")
        (const_string "*")))
    (set_attr "prefix" "maybe_vex,orig,vex,*,*,*")
@@ -4641,7 +4638,7 @@  (define_insn "sse2_movsd"
    (set (attr "prefix_data16")
      (if_then_else
        (and (eq_attr "alternative" "2,4")
-	    (eq (symbol_ref "TARGET_AVX") (const_int 0)))
+	    (not (match_test "TARGET_AVX")))
        (const_string "1")
        (const_string "*")))
    (set_attr "length_immediate" "*,*,*,*,*,1,*,*,*")
@@ -6320,11 +6317,11 @@  (define_insn "*andnot<mode>3"
        (const_string "*")))
    (set_attr "prefix" "orig,vex")
    (set (attr "mode")
-     (cond [(ne (symbol_ref "TARGET_AVX2") (const_int 0))
+     (cond [(match_test "TARGET_AVX2")
 	      (const_string "OI")
-	    (ne (symbol_ref "GET_MODE_SIZE (<MODE>mode) > 128") (const_int 0))
+	    (match_test "GET_MODE_SIZE (<MODE>mode) > 128")
 	      (const_string "V8SF")
-	    (ne (symbol_ref "TARGET_SSE2") (const_int 0))
+	    (match_test "TARGET_SSE2")
 	      (const_string "TI")
 	   ]
 	   (const_string "V4SF")))])
@@ -6396,11 +6393,11 @@  (define_insn "*<code><mode>3"
        (const_string "*")))
    (set_attr "prefix" "orig,vex")
    (set (attr "mode")
-     (cond [(ne (symbol_ref "TARGET_AVX2") (const_int 0))
+     (cond [(match_test "TARGET_AVX2")
 	      (const_string "OI")
-	    (ne (symbol_ref "GET_MODE_SIZE (<MODE>mode) > 128") (const_int 0))
+	    (match_test "GET_MODE_SIZE (<MODE>mode) > 128")
 	      (const_string "V8SF")
-	    (ne (symbol_ref "TARGET_SSE2") (const_int 0))
+	    (match_test "TARGET_SSE2")
 	      (const_string "TI")
 	   ]
 	   (const_string "V4SF")))])
@@ -6813,19 +6810,19 @@  (define_insn "<sse2p4_1>_pinsr<ssemodesu
    (set_attr "type" "sselog")
    (set (attr "prefix_rex")
      (if_then_else
-       (and (eq (symbol_ref "TARGET_AVX") (const_int 0))
+       (and (not (match_test "TARGET_AVX"))
 	    (eq (const_string "<MODE>mode") (const_string "V2DImode")))
        (const_string "1")
        (const_string "*")))
    (set (attr "prefix_data16")
      (if_then_else
-       (and (eq (symbol_ref "TARGET_AVX") (const_int 0))
+       (and (not (match_test "TARGET_AVX"))
 	    (eq (const_string "<MODE>mode") (const_string "V8HImode")))
        (const_string "1")
        (const_string "*")))
    (set (attr "prefix_extra")
      (if_then_else
-       (and (eq (symbol_ref "TARGET_AVX") (const_int 0))
+       (and (not (match_test "TARGET_AVX"))
 	    (eq (const_string "<MODE>mode") (const_string "V8HImode")))
        (const_string "*")
        (const_string "1")))
@@ -7495,7 +7492,7 @@  (define_insn "*vec_concatv2di_rex64"
    (set (attr "prefix_rex")
      (if_then_else
        (and (eq_attr "alternative" "0,3")
-	    (eq (symbol_ref "TARGET_AVX") (const_int 0)))
+	    (not (match_test "TARGET_AVX")))
        (const_string "1")
        (const_string "*")))
    (set_attr "prefix_extra" "1,1,*,*,*,*,*,*,*")
@@ -9709,7 +9706,7 @@  (define_insn "<sse4_1>_round<ssemodesuff
   [(set_attr "type" "ssecvt")
    (set (attr "prefix_data16")
      (if_then_else
-       (ne (symbol_ref "TARGET_AVX") (const_int 0))
+       (match_test "TARGET_AVX")
      (const_string "*")
      (const_string "1")))
    (set_attr "prefix_extra" "1")
Index: gcc/config/i386/predicates.md
===================================================================
--- gcc/config/i386/predicates.md	2011-08-31 20:51:57.000000000 +0100
+++ gcc/config/i386/predicates.md	2011-08-31 20:52:02.000000000 +0100
@@ -565,7 +565,7 @@  (define_predicate "indirect_branch_opera
 (define_predicate "call_insn_operand"
   (ior (match_operand 0 "constant_call_address_operand")
        (match_operand 0 "call_register_no_elim_operand")
-       (and (match_test "!TARGET_X32")
+       (and (not (match_test "TARGET_X32"))
 	    (match_operand 0 "memory_operand"))))
 
 ;; Similarly, but for tail calls, in which we cannot allow memory references.
Index: gcc/config/i386/constraints.md
===================================================================
--- gcc/config/i386/constraints.md	2011-08-31 20:51:42.000000000 +0100
+++ gcc/config/i386/constraints.md	2011-08-31 20:53:03.000000000 +0100
@@ -124,7 +124,7 @@  (define_constraint "z"
 
 (define_constraint "w"
   "@internal Call memory operand."
-  (and (match_test "!TARGET_X32")
+  (and (not (match_test "TARGET_X32"))
        (match_operand 0 "memory_operand")))
 
 ;; Integer constant constraints.