Patchwork [i386] : A couple of small fixes

login
register
mail settings
Submitter Uros Bizjak
Date Aug. 27, 2011, 10:43 a.m.
Message ID <CAFULd4bmw+oae4126XniZsgzbCUCwAfCXAf8aHPOnmHEdeVVPQ@mail.gmail.com>
Download mbox | patch
Permalink /patch/111869/
State New
Headers show

Comments

Uros Bizjak - Aug. 27, 2011, 10:43 a.m.
Hello!

2011-08-27  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/sse.md (*absneg<mode>2): Fix split condition.
	(vec_extract_lo_<mode>): Prevent both operands in memory.
	(vec_extract_lo_v16hi): Ditto.
	(*vec_extract_v4sf_mem): Add TARGET_SSE insn constraint.

Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN and 4.6 branch.

Uros.

Patch

Index: sse.md
===================================================================
--- sse.md	(revision 178130)
+++ sse.md	(working copy)
@@ -648,7 +648,7 @@ 
    (use (match_operand:VF 2 "nonimmediate_operand"    "xm,0, xm,x"))]
   "TARGET_SSE"
   "#"
-  "reload_completed"
+  "&& reload_completed"
   [(const_int 0)]
 {
   enum rtx_code absneg_op;
@@ -3708,7 +3708,7 @@ 
 	(vec_select:<ssehalfvecmode>
 	  (match_operand:VI8F_256 1 "nonimmediate_operand" "xm,x")
 	  (parallel [(const_int 0) (const_int 1)])))]
-  "TARGET_AVX"
+  "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "#"
   "&& reload_completed"
   [(const_int 0)]
@@ -3742,7 +3742,7 @@ 
 	  (match_operand:VI4F_256 1 "nonimmediate_operand" "xm,x")
 	  (parallel [(const_int 0) (const_int 1)
 		     (const_int 2) (const_int 3)])))]
-  "TARGET_AVX"
+  "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "#"
   "&& reload_completed"
   [(const_int 0)]
@@ -3779,7 +3779,7 @@ 
 		     (const_int 2) (const_int 3)
 		     (const_int 4) (const_int 5)
 		     (const_int 6) (const_int 7)])))]
-  "TARGET_AVX"
+  "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "#"
   "&& reload_completed"
   [(const_int 0)]
@@ -3822,7 +3822,7 @@ 
 		     (const_int 10) (const_int 11)
 		     (const_int 12) (const_int 13)
 		     (const_int 14) (const_int 15)])))]
-  "TARGET_AVX"
+  "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "#"
   "&& reload_completed"
   [(const_int 0)]
@@ -3876,9 +3876,9 @@ 
        (vec_select:SF
 	 (match_operand:V4SF 1 "memory_operand" "o")
 	 (parallel [(match_operand 2 "const_0_to_3_operand" "n")])))]
-  ""
+  "TARGET_SSE"
   "#"
-  "reload_completed"
+  "&& reload_completed"
   [(const_int 0)]
 {
   int i = INTVAL (operands[2]);