iwmmxt.md (movv8qi_internal, [...]): Combine into mov<mode>_internal.
authorJoseph Myers <joseph@codesourcery.com>
Thu, 7 Aug 2008 15:43:28 +0000 (16:43 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Thu, 7 Aug 2008 15:43:28 +0000 (16:43 +0100)
* config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
movv2si_internal): Combine into mov<mode>_internal.
(movv2si_internal_2): Remove.

From-SVN: r138844

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

index 3b34da2..dd32e35 100644 (file)
@@ -1,3 +1,9 @@
+2008-08-07  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
+       movv2si_internal): Combine into mov<mode>_internal.
+       (movv2si_internal_2): Remove.
+
 2008-08-07  Jan Hubicka  <jh@suse.cz>
 
        PR target/37048
index b484b55..668172f 100644 (file)
    (set_attr "neg_pool_range" "*,*,4084,     *,*,*")]
 )
 
-(define_insn "movv8qi_internal"
-  [(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"))]
+(define_insn "mov<mode>_internal"
+  [(set (match_operand:VMMX 0 "nonimmediate_operand" "=y,m,y,?r,?y,?r,?r,?m")
+       (match_operand:VMMX 1 "general_operand"       "y,y,mi,y,r,r,mi,r"))]
   "TARGET_REALLY_IWMMXT"
   "*
    switch (which_alternative)
    (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,?m")
-       (match_operand:V4HI 1 "general_operand"       "y,y,mi,y,r,r,mi,r"))]
-  "TARGET_REALLY_IWMMXT"
-  "*
-   switch (which_alternative)
-   {
-   case 0: return \"wmov%?\\t%0, %1\";
-   case 1: return \"wstrd%?\\t%1, %0\";
-   case 2: return \"wldrd%?\\t%0, %1\";
-   case 3: return \"tmrrc%?\\t%Q0, %R0, %1\";
-   case 4: return \"tmcrr%?\\t%0, %Q1, %R1\";
-   case 5: return \"#\";
-   default: return output_move_double (operands);
-   }"
-  [(set_attr "predicable" "yes")
-   (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,?m")
-       (match_operand:V2SI 1 "general_operand"       "y,y,mi,y,r,r,mi,r"))]
-  "TARGET_REALLY_IWMMXT"
-  "*
-   switch (which_alternative)
-   {
-   case 0: return \"wmov%?\\t%0, %1\";
-   case 1: return \"wstrd%?\\t%1, %0\";
-   case 2: return \"wldrd%?\\t%0, %1\";
-   case 3: return \"tmrrc%?\\t%Q0, %R0, %1\";
-   case 4: return \"tmcrr%?\\t%0, %Q1, %R1\";
-   case 5: return \"#\";
-   default: return output_move_double (operands);
-   }"
-  [(set_attr "predicable" "yes")
-   (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
-;; enabled.  (Try compiling gcc/testsuite/gcc.c-torture/
-;; compile/simd-5.c at -O0).  The mode for operands[1] is
-;; deliberately omitted.
-(define_insn "movv2si_internal_2"
-  [(set (match_operand:V2SI 0 "nonimmediate_operand" "=?r")
-       (match_operand      1 "immediate_operand"      "mi"))]
-  "TARGET_REALLY_IWMMXT"
-  "* return output_move_double (operands);"
-  [(set_attr "predicable"     "yes")
-   (set_attr "length"         "8")
-   (set_attr "type"           "load1")
-   (set_attr "pool_range"     "256")
-   (set_attr "neg_pool_range" "244")])
-
 ;; Vector add/subtract
 
 (define_insn "*add<mode>3_iwmmxt"