iwmmxt.md (movv8qi_internal, [...]): Add mem = reg alternative.
authorJoseph Myers <joseph@codesourcery.com>
Fri, 25 Jul 2008 16:21:05 +0000 (17:21 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Fri, 25 Jul 2008 16:21:05 +0000 (17:21 +0100)
* config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
movv2si_internal): Add mem = reg alternative.

From-SVN: r138146

gcc/ChangeLog
gcc/config/arm/iwmmxt.md

index 854e160c7aa2c1c4fd74e164e20f3a5ceb0b25df..25a844993282d23bf86361c205e5e5cc5b952fb3 100644 (file)
@@ -1,3 +1,8 @@
+2008-07-25  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
+       movv2si_internal): Add mem = reg alternative.
+
 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
 
        PR bootstrap/36918
index 633aaaa875f98a3adff6c41a868607113b241ed8..b484b55e6cde05bafebb3a25fc6d489988fffc56 100644 (file)
 )
 
 (define_insn "movv8qi_internal"
-  [(set (match_operand:V8QI 0 "nonimmediate_operand" "=y,m,y,?r,?y,?r,?r")
-       (match_operand:V8QI 1 "general_operand"       "y,y,mi,y,r,r,mi"))]
+  [(set (match_operand:V8QI 0 "nonimmediate_operand" "=y,m,y,?r,?y,?r,?r,?m")
+       (match_operand:V8QI 1 "general_operand"       "y,y,mi,y,r,r,mi,r"))]
   "TARGET_REALLY_IWMMXT"
   "*
    switch (which_alternative)
    default: return output_move_double (operands);
    }"
   [(set_attr "predicable" "yes")
-   (set_attr "length"         "4,     4,   4,4,4,8,   8")
-   (set_attr "type"           "*,store1,load1,*,*,*,load1")
-   (set_attr "pool_range"     "*,     *, 256,*,*,*, 256")
-   (set_attr "neg_pool_range" "*,     *, 244,*,*,*, 244")])
+   (set_attr "length"         "4,     4,   4,4,4,8,   8,8")
+   (set_attr "type"           "*,store1,load1,*,*,*,load1,store1")
+   (set_attr "pool_range"     "*,     *, 256,*,*,*, 256,*")
+   (set_attr "neg_pool_range" "*,     *, 244,*,*,*, 244,*")])
 
 (define_insn "movv4hi_internal"
-  [(set (match_operand:V4HI 0 "nonimmediate_operand" "=y,m,y,?r,?y,?r,?r")
-       (match_operand:V4HI 1 "general_operand"       "y,y,mi,y,r,r,mi"))]
+  [(set (match_operand:V4HI 0 "nonimmediate_operand" "=y,m,y,?r,?y,?r,?r,?m")
+       (match_operand:V4HI 1 "general_operand"       "y,y,mi,y,r,r,mi,r"))]
   "TARGET_REALLY_IWMMXT"
   "*
    switch (which_alternative)
    default: return output_move_double (operands);
    }"
   [(set_attr "predicable" "yes")
-   (set_attr "length"         "4,     4,   4,4,4,8,   8")
-   (set_attr "type"           "*,store1,load1,*,*,*,load1")
-   (set_attr "pool_range"     "*,     *, 256,*,*,*, 256")
-   (set_attr "neg_pool_range" "*,     *, 244,*,*,*, 244")])
+   (set_attr "length"         "4,     4,   4,4,4,8,   8,8")
+   (set_attr "type"           "*,store1,load1,*,*,*,load1,store1")
+   (set_attr "pool_range"     "*,     *, 256,*,*,*, 256,*")
+   (set_attr "neg_pool_range" "*,     *, 244,*,*,*, 244,*")])
 
 (define_insn "movv2si_internal"
-  [(set (match_operand:V2SI 0 "nonimmediate_operand" "=y,m,y,?r,?y,?r,?r")
-       (match_operand:V2SI 1 "general_operand"       "y,y,mi,y,r,r,mi"))]
+  [(set (match_operand:V2SI 0 "nonimmediate_operand" "=y,m,y,?r,?y,?r,?r,?m")
+       (match_operand:V2SI 1 "general_operand"       "y,y,mi,y,r,r,mi,r"))]
   "TARGET_REALLY_IWMMXT"
   "*
    switch (which_alternative)
    default: return output_move_double (operands);
    }"
   [(set_attr "predicable" "yes")
-   (set_attr "length"         "4,     4,   4,4,4,8,  24")
-   (set_attr "type"           "*,store1,load1,*,*,*,load1")
-   (set_attr "pool_range"     "*,     *, 256,*,*,*, 256")
-   (set_attr "neg_pool_range" "*,     *, 244,*,*,*, 244")])
+   (set_attr "length"         "4,     4,   4,4,4,8,  24,8")
+   (set_attr "type"           "*,store1,load1,*,*,*,load1,store1")
+   (set_attr "pool_range"     "*,     *, 256,*,*,*, 256,*")
+   (set_attr "neg_pool_range" "*,     *, 244,*,*,*, 244,*")])
 
 ;; This pattern should not be needed.  It is to match a
 ;; wierd case generated by GCC when no optimizations are