http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52437

--- Comment #2 from Uros Bizjak <ubizjak at gmail dot com> 2012-02-29 20:32:06 
UTC ---
This patch adds missing alternative, and also disparages alternatives that end
with excess register->mem moves.

Index: sse.md
===================================================================
--- sse.md      (revision 184630)
+++ sse.md      (working copy)
@@ -3895,13 +3895,13 @@
 ;; see comment above inline_secondary_memory_needed function in i386.c
 (define_insn "vec_set<mode>_0"
   [(set (match_operand:VI4F_128 0 "nonimmediate_operand"
-         "=x,x,x ,x,x,x,x  ,x  ,m,m ,m")
+         "=x,x,x ,x,x,x,x  ,x  ,m ,m   ,m")
        (vec_merge:VI4F_128
          (vec_duplicate:VI4F_128
            (match_operand:<ssescalarmode> 2 "general_operand"
-         " x,m,*r,m,x,x,*rm,*rm,x,fF,*r"))
+         " x,m,*r,m,x,x,*rm,*rm,!x,!*rn,!*fF"))
          (match_operand:VI4F_128 1 "vector_move_operand"
-         " C,C,C ,C,0,x,0  ,x  ,0,0 ,0")
+         " C,C,C ,C,0,x,0  ,x  ,0 ,0   ,0")
          (const_int 1)))]
   "TARGET_SSE"
   "@

Reply via email to