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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-02-29 
20:37:49 UTC ---
I've tried:

@@ -3899,7 +3899,7 @@
     (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,fF,*re"))
       (match_operand:VI4F_128 1 "vector_move_operand"
       " C,C,C ,C,0,x,0  ,x  ,0,0 ,0")
       (const_int 1)))]

and that worked too.  If you want to swap the m/fF/0 alternative with m/*r/0
alternative (extended with additional e or n, which one is right?), then
you should also swap
            (eq_attr "alternative" "9")
              (const_string "fmov")
            (eq_attr "alternative" "10")
              (const_string "imov")

Reply via email to