diff options
author | Joseph Myers <joseph@codesourcery.com> | 2008-08-07 16:43:28 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2008-08-07 16:43:28 +0100 |
commit | 9940eebdf8c0614c2bcde838ed2ac56ae96e93b3 (patch) | |
tree | 757fea1a24a1e83d949a82aa8ec30ae7d5806444 /gcc | |
parent | ed85a1f60b8a827af17129d2e76c332ecf13d7bd (diff) | |
download | gcc-9940eebdf8c0614c2bcde838ed2ac56ae96e93b3.zip gcc-9940eebdf8c0614c2bcde838ed2ac56ae96e93b3.tar.gz gcc-9940eebdf8c0614c2bcde838ed2ac56ae96e93b3.tar.bz2 |
iwmmxt.md (movv8qi_internal, [...]): Combine into mov<mode>_internal.
* config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
movv2si_internal): Combine into mov<mode>_internal.
(movv2si_internal_2): Remove.
From-SVN: r138844
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/iwmmxt.md | 64 |
2 files changed, 9 insertions, 61 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b34da2..dd32e35 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/arm/iwmmxt.md b/gcc/config/arm/iwmmxt.md index b484b55..668172f 100644 --- a/gcc/config/arm/iwmmxt.md +++ b/gcc/config/arm/iwmmxt.md @@ -167,9 +167,9 @@ (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) @@ -188,64 +188,6 @@ (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" |