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
This commit is contained in:
parent
ed85a1f60b
commit
9940eebdf8
@ -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
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user