Commit 544f7fc8 by Yvan Roux Committed by Yvan Roux

arm.md (*arm_movt): Fix type attribute.

2015-04-28  Yvan Roux  <yvan.roux@linaro.org>

	* config/arm/arm.md (*arm_movt): Fix type attribute.
	(*cmpsi_shiftsi): Likewise.
	(*cmpsi_shiftsi_swp): Likewise.
	(*movsicc_insn): Likewise.
	(*cond_move): Likewise.
	(*if_plus_move): Likewise.
	(*if_move_plus): Likewise.
	(*if_arith_move): Likewise.
	(*if_move_arith): Likewise.
	(*if_shift_move): Likewise.
	(*if_move_shift): Likewise.
	(*arm_movtas_ze): Likewise.
	* config/arm/thumb2.md (*thumb2_movsicc_insn): Fix alternative
	redundancy and type attribute.
	(*thumb2_movsi_insn): Fix type attribute.
	(*thumb2_addsi_short): Likewise.
	(thumb2_addsi3_compare0): Likewise.
	(*thumb2_addsi3_compare0_scratch): Merge alternatives and fix
	attributes accordingly.

From-SVN: r222528
parent 6d8a9f7c
2015-04-28 Yvan Roux <yvan.roux@linaro.org>
* config/arm/arm.md (*arm_movt): Fix type attribute.
(*cmpsi_shiftsi): Likewise.
(*cmpsi_shiftsi_swp): Likewise.
(*movsicc_insn): Likewise.
(*cond_move): Likewise.
(*if_plus_move): Likewise.
(*if_move_plus): Likewise.
(*if_arith_move): Likewise.
(*if_move_arith): Likewise.
(*if_shift_move): Likewise.
(*if_move_shift): Likewise.
(*arm_movtas_ze): Likewise.
* config/arm/thumb2.md (*thumb2_movsicc_insn): Fix alternative
redundancy and type attribute.
(*thumb2_movsi_insn): Fix type attribute.
(*thumb2_addsi_short): Likewise.
(thumb2_addsi3_compare0): Likewise.
(*thumb2_addsi3_compare0_scratch): Merge alternatives and fix
attributes accordingly.
2015-04-28 Markus Trippelsdorf <markus@trippelsdorf.de> 2015-04-28 Markus Trippelsdorf <markus@trippelsdorf.de>
PR other/65911 PR other/65911
......
...@@ -5631,7 +5631,7 @@ ...@@ -5631,7 +5631,7 @@
[(set_attr "predicable" "yes") [(set_attr "predicable" "yes")
(set_attr "predicable_short_it" "no") (set_attr "predicable_short_it" "no")
(set_attr "length" "4") (set_attr "length" "4")
(set_attr "type" "mov_imm")] (set_attr "type" "alu_sreg")]
) )
(define_insn "*arm_movsi_insn" (define_insn "*arm_movsi_insn"
...@@ -6886,7 +6886,7 @@ ...@@ -6886,7 +6886,7 @@
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "shift" "1") (set_attr "shift" "1")
(set_attr "arch" "32,a,a") (set_attr "arch" "32,a,a")
(set_attr "type" "alus_shift_imm,alu_shift_reg,alus_shift_imm")]) (set_attr "type" "alus_shift_imm,alus_shift_reg,alus_shift_imm")])
(define_insn "*cmpsi_shiftsi_swp" (define_insn "*cmpsi_shiftsi_swp"
[(set (reg:CC_SWP CC_REGNUM) [(set (reg:CC_SWP CC_REGNUM)
...@@ -6899,7 +6899,7 @@ ...@@ -6899,7 +6899,7 @@
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "shift" "1") (set_attr "shift" "1")
(set_attr "arch" "32,a,a") (set_attr "arch" "32,a,a")
(set_attr "type" "alus_shift_imm,alu_shift_reg,alus_shift_imm")]) (set_attr "type" "alus_shift_imm,alus_shift_reg,alus_shift_imm")])
(define_insn "*arm_cmpsi_negshiftsi_si" (define_insn "*arm_cmpsi_negshiftsi_si"
[(set (reg:CC_Z CC_REGNUM) [(set (reg:CC_Z CC_REGNUM)
...@@ -7492,10 +7492,10 @@ ...@@ -7492,10 +7492,10 @@
(const_string "mov_imm") (const_string "mov_imm")
(const_string "mov_reg")) (const_string "mov_reg"))
(const_string "mvn_imm") (const_string "mvn_imm")
(const_string "mov_reg") (const_string "multiple")
(const_string "mov_reg") (const_string "multiple")
(const_string "mov_reg") (const_string "multiple")
(const_string "mov_reg")])] (const_string "multiple")])]
) )
(define_insn "*movsfcc_soft_insn" (define_insn "*movsfcc_soft_insn"
...@@ -8653,7 +8653,14 @@ ...@@ -8653,7 +8653,14 @@
return \"\"; return \"\";
" "
[(set_attr "conds" "use") [(set_attr "conds" "use")
(set_attr "type" "mov_reg,mov_reg,multiple") (set_attr_alternative "type"
[(if_then_else (match_operand 2 "const_int_operand" "")
(const_string "mov_imm")
(const_string "mov_reg"))
(if_then_else (match_operand 1 "const_int_operand" "")
(const_string "mov_imm")
(const_string "mov_reg"))
(const_string "multiple")])
(set_attr "length" "4,4,8")] (set_attr "length" "4,4,8")]
) )
...@@ -9449,8 +9456,8 @@ ...@@ -9449,8 +9456,8 @@
(const_string "alu_imm" ) (const_string "alu_imm" )
(const_string "alu_sreg")) (const_string "alu_sreg"))
(const_string "alu_imm") (const_string "alu_imm")
(const_string "alu_sreg") (const_string "multiple")
(const_string "alu_sreg")])] (const_string "multiple")])]
) )
(define_insn "*ifcompare_move_plus" (define_insn "*ifcompare_move_plus"
...@@ -9487,7 +9494,13 @@ ...@@ -9487,7 +9494,13 @@
sub%D4\\t%0, %2, #%n3\;mov%d4\\t%0, %1" sub%D4\\t%0, %2, #%n3\;mov%d4\\t%0, %1"
[(set_attr "conds" "use") [(set_attr "conds" "use")
(set_attr "length" "4,4,8,8") (set_attr "length" "4,4,8,8")
(set_attr "type" "alu_sreg,alu_imm,multiple,multiple")] (set_attr_alternative "type"
[(if_then_else (match_operand 3 "const_int_operand" "")
(const_string "alu_imm" )
(const_string "alu_sreg"))
(const_string "alu_imm")
(const_string "multiple")
(const_string "multiple")])]
) )
(define_insn "*ifcompare_arith_arith" (define_insn "*ifcompare_arith_arith"
...@@ -9582,7 +9595,11 @@ ...@@ -9582,7 +9595,11 @@
%I5%d4\\t%0, %2, %3\;mov%D4\\t%0, %1" %I5%d4\\t%0, %2, %3\;mov%D4\\t%0, %1"
[(set_attr "conds" "use") [(set_attr "conds" "use")
(set_attr "length" "4,8") (set_attr "length" "4,8")
(set_attr "type" "alu_shift_reg,multiple")] (set_attr_alternative "type"
[(if_then_else (match_operand 3 "const_int_operand" "")
(const_string "alu_shift_imm" )
(const_string "alu_shift_reg"))
(const_string "multiple")])]
) )
(define_insn "*ifcompare_move_arith" (define_insn "*ifcompare_move_arith"
...@@ -9643,7 +9660,11 @@ ...@@ -9643,7 +9660,11 @@
%I5%D4\\t%0, %2, %3\;mov%d4\\t%0, %1" %I5%D4\\t%0, %2, %3\;mov%d4\\t%0, %1"
[(set_attr "conds" "use") [(set_attr "conds" "use")
(set_attr "length" "4,8") (set_attr "length" "4,8")
(set_attr "type" "alu_shift_reg,multiple")] (set_attr_alternative "type"
[(if_then_else (match_operand 3 "const_int_operand" "")
(const_string "alu_shift_imm" )
(const_string "alu_shift_reg"))
(const_string "multiple")])]
) )
(define_insn "*ifcompare_move_not" (define_insn "*ifcompare_move_not"
...@@ -9750,7 +9771,12 @@ ...@@ -9750,7 +9771,12 @@
[(set_attr "conds" "use") [(set_attr "conds" "use")
(set_attr "shift" "2") (set_attr "shift" "2")
(set_attr "length" "4,8,8") (set_attr "length" "4,8,8")
(set_attr "type" "mov_shift_reg,multiple,multiple")] (set_attr_alternative "type"
[(if_then_else (match_operand 3 "const_int_operand" "")
(const_string "mov_shift" )
(const_string "mov_shift_reg"))
(const_string "multiple")
(const_string "multiple")])]
) )
(define_insn "*ifcompare_move_shift" (define_insn "*ifcompare_move_shift"
...@@ -9788,7 +9814,12 @@ ...@@ -9788,7 +9814,12 @@
[(set_attr "conds" "use") [(set_attr "conds" "use")
(set_attr "shift" "2") (set_attr "shift" "2")
(set_attr "length" "4,8,8") (set_attr "length" "4,8,8")
(set_attr "type" "mov_shift_reg,multiple,multiple")] (set_attr_alternative "type"
[(if_then_else (match_operand 3 "const_int_operand" "")
(const_string "mov_shift" )
(const_string "mov_shift_reg"))
(const_string "multiple")
(const_string "multiple")])]
) )
(define_insn "*ifcompare_shift_shift" (define_insn "*ifcompare_shift_shift"
...@@ -10869,7 +10900,7 @@ ...@@ -10869,7 +10900,7 @@
[(set_attr "predicable" "yes") [(set_attr "predicable" "yes")
(set_attr "predicable_short_it" "no") (set_attr "predicable_short_it" "no")
(set_attr "length" "4") (set_attr "length" "4")
(set_attr "type" "mov_imm")] (set_attr "type" "alu_sreg")]
) )
(define_insn "*arm_rev" (define_insn "*arm_rev"
......
...@@ -300,7 +300,7 @@ ...@@ -300,7 +300,7 @@
ldr%?\\t%0, %1 ldr%?\\t%0, %1
str%?\\t%1, %0 str%?\\t%1, %0
str%?\\t%1, %0" str%?\\t%1, %0"
[(set_attr "type" "mov_reg,alu_imm,alu_imm,alu_imm,mov_imm,load1,load1,store1,store1") [(set_attr "type" "mov_reg,mov_imm,mov_imm,mvn_imm,mov_imm,load1,load1,store1,store1")
(set_attr "length" "2,4,2,4,4,4,4,4,4") (set_attr "length" "2,4,2,4,4,4,4,4,4")
(set_attr "predicable" "yes") (set_attr "predicable" "yes")
(set_attr "predicable_short_it" "yes,no,yes,no,no,no,no,no,no") (set_attr "predicable_short_it" "yes,no,yes,no,no,no,no,no,no")
...@@ -486,12 +486,12 @@ ...@@ -486,12 +486,12 @@
) )
(define_insn_and_split "*thumb2_movsicc_insn" (define_insn_and_split "*thumb2_movsicc_insn"
[(set (match_operand:SI 0 "s_register_operand" "=l,l,r,r,r,r,r,r,r,r,r") [(set (match_operand:SI 0 "s_register_operand" "=l,l,r,r,r,r,r,r,r,r,r,r")
(if_then_else:SI (if_then_else:SI
(match_operator 3 "arm_comparison_operator" (match_operator 3 "arm_comparison_operator"
[(match_operand 4 "cc_register" "") (const_int 0)]) [(match_operand 4 "cc_register" "") (const_int 0)])
(match_operand:SI 1 "arm_not_operand" "0 ,lPy,0 ,0,rI,K,rI,rI,K ,K,r") (match_operand:SI 1 "arm_not_operand" "0 ,lPy,0 ,0,rI,K,I ,r,rI,K ,K,r")
(match_operand:SI 2 "arm_not_operand" "lPy,0 ,rI,K,0 ,0,rI,K ,rI,K,r")))] (match_operand:SI 2 "arm_not_operand" "lPy,0 ,rI,K,0 ,0,rI,I,K ,rI,K,r")))]
"TARGET_THUMB2" "TARGET_THUMB2"
"@ "@
it\\t%D3\;mov%D3\\t%0, %2 it\\t%D3\;mov%D3\\t%0, %2
...@@ -504,12 +504,14 @@ ...@@ -504,12 +504,14 @@
# #
# #
# #
#
#" #"
; alt 6: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2 ; alt 6: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2
; alt 7: ite\\t%d3\;mov%d3\\t%0, %1\;mvn%D3\\t%0, #%B2 ; alt 7: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2
; alt 8: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2 ; alt 8: ite\\t%d3\;mov%d3\\t%0, %1\;mvn%D3\\t%0, #%B2
; alt 9: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2 ; alt 9: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2
; alt 10: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2 ; alt 10: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2
; alt 11: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2
"&& reload_completed" "&& reload_completed"
[(const_int 0)] [(const_int 0)]
{ {
...@@ -540,10 +542,30 @@ ...@@ -540,10 +542,30 @@
operands[2]))); operands[2])));
DONE; DONE;
} }
[(set_attr "length" "4,4,6,6,6,6,10,10,10,10,6") [(set_attr "length" "4,4,6,6,6,6,10,8,10,10,10,6")
(set_attr "enabled_for_depr_it" "yes,yes,no,no,no,no,no,no,no,no,yes") (set_attr "enabled_for_depr_it" "yes,yes,no,no,no,no,no,no,no,no,no,yes")
(set_attr "conds" "use") (set_attr "conds" "use")
(set_attr "type" "multiple")] (set_attr_alternative "type"
[(if_then_else (match_operand 2 "const_int_operand" "")
(const_string "mov_imm")
(const_string "mov_reg"))
(if_then_else (match_operand 1 "const_int_operand" "")
(const_string "mov_imm")
(const_string "mov_reg"))
(if_then_else (match_operand 2 "const_int_operand" "")
(const_string "mov_imm")
(const_string "mov_reg"))
(const_string "mvn_imm")
(if_then_else (match_operand 1 "const_int_operand" "")
(const_string "mov_imm")
(const_string "mov_reg"))
(const_string "mvn_imm")
(const_string "multiple")
(const_string "multiple")
(const_string "multiple")
(const_string "multiple")
(const_string "multiple")
(const_string "multiple")])]
) )
(define_insn "*thumb2_movsfcc_soft_insn" (define_insn "*thumb2_movsfcc_soft_insn"
...@@ -1182,7 +1204,11 @@ ...@@ -1182,7 +1204,11 @@
" "
[(set_attr "predicable" "yes") [(set_attr "predicable" "yes")
(set_attr "length" "2") (set_attr "length" "2")
(set_attr "type" "alu_sreg")] (set_attr_alternative "type"
[(if_then_else (match_operand 2 "const_int_operand" "")
(const_string "alu_imm")
(const_string "alu_sreg"))
(const_string "alu_imm")])]
) )
(define_insn "*thumb2_subsi_short" (define_insn "*thumb2_subsi_short"
...@@ -1247,14 +1273,21 @@ ...@@ -1247,14 +1273,21 @@
" "
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "length" "2,2,4") (set_attr "length" "2,2,4")
(set_attr "type" "alu_sreg")] (set_attr_alternative "type"
[(if_then_else (match_operand 2 "const_int_operand" "")
(const_string "alus_imm")
(const_string "alus_sreg"))
(const_string "alus_imm")
(if_then_else (match_operand 2 "const_int_operand" "")
(const_string "alus_imm")
(const_string "alus_sreg"))])]
) )
(define_insn "*thumb2_addsi3_compare0_scratch" (define_insn "*thumb2_addsi3_compare0_scratch"
[(set (reg:CC_NOOV CC_REGNUM) [(set (reg:CC_NOOV CC_REGNUM)
(compare:CC_NOOV (compare:CC_NOOV
(plus:SI (match_operand:SI 0 "s_register_operand" "l,l, r,r") (plus:SI (match_operand:SI 0 "s_register_operand" "l, r")
(match_operand:SI 1 "arm_add_operand" "Pv,l,IL,r")) (match_operand:SI 1 "arm_add_operand" "lPv,rIL"))
(const_int 0)))] (const_int 0)))]
"TARGET_THUMB2" "TARGET_THUMB2"
"* "*
...@@ -1271,8 +1304,10 @@ ...@@ -1271,8 +1304,10 @@
return \"cmn\\t%0, %1\"; return \"cmn\\t%0, %1\";
" "
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "length" "2,2,4,4") (set_attr "length" "2,4")
(set_attr "type" "alus_imm,alus_sreg,alus_imm,alus_sreg")] (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
(const_string "alus_imm")
(const_string "alus_sreg")))]
) )
(define_insn "*thumb2_mulsi_short" (define_insn "*thumb2_mulsi_short"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment