Patchwork [i386] : Handle TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL in SSE bitops

login
register
mail settings
Submitter Uros Bizjak
Date May 13, 2012, 5:16 p.m.
Message ID <CAFULd4aQQx6LviYFxtcsMT0AaBazv-RLJUWhztmxN8r5y541Tg@mail.gmail.com>
Download mbox | patch
Permalink /patch/158846/
State New
Headers show

Comments

Uros Bizjak - May 13, 2012, 5:16 p.m.
On Sun, May 13, 2012 at 5:16 PM, Uros Bizjak <ubizjak@gmail.com> wrote:

> 2012-05-13  Uros Bizjak  <ubizjak@gmail.com>
>
>        * config/i386/sse.md (<sse>_andnot<mode>3): Handle
>        TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
>        (<code><mode>3): Ditto.
>        (*andnot<mode>3): Ditto.
>        (*andnottf3): Ditto.
>        (*<code><mode>3): Ditto.
>        (<code>tf3): Ditto.
>
> Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN.

For some reason, the attached part was left out of my previous mail and commit.

Uros.

Patch

Index: config/i386/sse.md
===================================================================
--- config/i386/sse.md	(revision 187438)
+++ config/i386/sse.md	(working copy)
@@ -6729,13 +6729,20 @@ 
        (const_string "*")))
    (set_attr "prefix" "orig,vex")
    (set (attr "mode")
-     (cond [(and (not (match_test "TARGET_AVX2"))
-		 (match_test "GET_MODE_SIZE (<MODE>mode) > 16"))
-	      (const_string "V8SF")
-	    (not (match_test "TARGET_SSE2"))
-	      (const_string "V4SF")
-	   ]
-	   (const_string "<sseinsnmode>")))])
+	(cond [(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
+		 (const_string "<ssePSmode>")
+	       (match_test "TARGET_AVX2")
+		 (const_string "<sseinsnmode>")
+	       (match_test "TARGET_AVX")
+		 (if_then_else
+		   (match_test "GET_MODE_SIZE (<MODE>mode) > 16")
+		   (const_string "V8SF")
+		   (const_string "<sseinsnmode>"))
+	       (ior (not (match_test "TARGET_SSE2"))
+		    (match_test "optimize_function_for_size_p (cfun)"))
+		 (const_string "V4SF")
+	      ]
+	      (const_string "<sseinsnmode>")))])
 
 (define_expand "<code><mode>3"
   [(set (match_operand:VI 0 "register_operand")
@@ -6804,13 +6811,20 @@ 
        (const_string "*")))
    (set_attr "prefix" "orig,vex")
    (set (attr "mode")
-     (cond [(and (not (match_test "TARGET_AVX2"))
-		 (match_test "GET_MODE_SIZE (<MODE>mode) > 16"))
-	      (const_string "V8SF")
-	    (not (match_test "TARGET_SSE2"))
-	      (const_string "V4SF")
-	   ]
-	   (const_string "<sseinsnmode>")))])
+	(cond [(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
+		 (const_string "<ssePSmode>")
+	       (match_test "TARGET_AVX2")
+		 (const_string "<sseinsnmode>")
+	       (match_test "TARGET_AVX")
+		 (if_then_else
+		   (match_test "GET_MODE_SIZE (<MODE>mode) > 16")
+		   (const_string "V8SF")
+		   (const_string "<sseinsnmode>"))
+	       (ior (not (match_test "TARGET_SSE2"))
+		    (match_test "optimize_function_for_size_p (cfun)"))
+		 (const_string "V4SF")
+	      ]
+	      (const_string "<sseinsnmode>")))])
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;