ping
Remove various MULS/MLAS patterns which are enabled when optimizing for
size. However the codesize gain from these patterns is so minimal that
there is no point in keeping them.
Bootstrap OK on armhf, regress passes.
ChangeLog:
2019-09-03 Wilco Dijkstra <wdijk...@arm.com>
* config/arm/arm.md (mulsi3_compare0): Remove pattern.
(mulsi3_compare0_v6): Likewise.
(mulsi_compare0_scratch): Likewise.
(mulsi_compare0_scratch_v6): Likewise.
(mulsi3addsi_compare0): Likewise.
(mulsi3addsi_compare0_v6): Likewise.
(mulsi3addsi_compare0_scratch): Likewise.
(mulsi3addsi_compare0_scratch_v6): Likewise.
* config/arm/thumb2.md (thumb2_mulsi_short_compare0): Remove pattern.
(thumb2_mulsi_short_compare0_scratch): Likewise.
--
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index
738d42fd164f117f1dec1108a824d984ccd70d09..66dafdc47b7cfc37c131764e482d47bcaab90538
100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -1618,60 +1618,6 @@ (define_insn "*arm_mulsi3_v6"
(set_attr "predicable_short_it" "yes,yes,no")]
)
-(define_insn "*mulsi3_compare0"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV (mult:SI
- (match_operand:SI 2 "s_register_operand" "r,r")
- (match_operand:SI 1 "s_register_operand" "%0,r"))
- (const_int 0)))
- (set (match_operand:SI 0 "s_register_operand" "=&r,&r")
- (mult:SI (match_dup 2) (match_dup 1)))]
- "TARGET_ARM && !arm_arch6"
- "muls%?\\t%0, %2, %1"
- [(set_attr "conds" "set")
- (set_attr "type" "muls")]
-)
-
-(define_insn "*mulsi3_compare0_v6"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV (mult:SI
- (match_operand:SI 2 "s_register_operand" "r")
- (match_operand:SI 1 "s_register_operand" "r"))
- (const_int 0)))
- (set (match_operand:SI 0 "s_register_operand" "=r")
- (mult:SI (match_dup 2) (match_dup 1)))]
- "TARGET_ARM && arm_arch6 && optimize_size"
- "muls%?\\t%0, %2, %1"
- [(set_attr "conds" "set")
- (set_attr "type" "muls")]
-)
-
-(define_insn "*mulsi_compare0_scratch"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV (mult:SI
- (match_operand:SI 2 "s_register_operand" "r,r")
- (match_operand:SI 1 "s_register_operand" "%0,r"))
- (const_int 0)))
- (clobber (match_scratch:SI 0 "=&r,&r"))]
- "TARGET_ARM && !arm_arch6"
- "muls%?\\t%0, %2, %1"
- [(set_attr "conds" "set")
- (set_attr "type" "muls")]
-)
-
-(define_insn "*mulsi_compare0_scratch_v6"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV (mult:SI
- (match_operand:SI 2 "s_register_operand" "r")
- (match_operand:SI 1 "s_register_operand" "r"))
- (const_int 0)))
- (clobber (match_scratch:SI 0 "=r"))]
- "TARGET_ARM && arm_arch6 && optimize_size"
- "muls%?\\t%0, %2, %1"
- [(set_attr "conds" "set")
- (set_attr "type" "muls")]
-)
-
;; Unnamed templates to match MLA instruction.
(define_insn "*mulsi3addsi"
@@ -1698,70 +1644,6 @@ (define_insn "*mulsi3addsi_v6"
(set_attr "predicable" "yes")]
)
-(define_insn "*mulsi3addsi_compare0"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV
- (plus:SI (mult:SI
- (match_operand:SI 2 "s_register_operand" "r,r,r,r")
- (match_operand:SI 1 "s_register_operand" "%0,r,0,r"))
- (match_operand:SI 3 "s_register_operand" "r,r,0,0"))
- (const_int 0)))
- (set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r")
- (plus:SI (mult:SI (match_dup 2) (match_dup 1))
- (match_dup 3)))]
- "TARGET_ARM && arm_arch6"
- "mlas%?\\t%0, %2, %1, %3"
- [(set_attr "conds" "set")
- (set_attr "type" "mlas")]
-)
-
-(define_insn "*mulsi3addsi_compare0_v6"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV
- (plus:SI (mult:SI
- (match_operand:SI 2 "s_register_operand" "r")
- (match_operand:SI 1 "s_register_operand" "r"))
- (match_operand:SI 3 "s_register_operand" "r"))
- (const_int 0)))
- (set (match_operand:SI 0 "s_register_operand" "=r")
- (plus:SI (mult:SI (match_dup 2) (match_dup 1))
- (match_dup 3)))]
- "TARGET_ARM && arm_arch6 && optimize_size"
- "mlas%?\\t%0, %2, %1, %3"
- [(set_attr "conds" "set")
- (set_attr "type" "mlas")]
-)
-
-(define_insn "*mulsi3addsi_compare0_scratch"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV
- (plus:SI (mult:SI
- (match_operand:SI 2 "s_register_operand" "r,r,r,r")
- (match_operand:SI 1 "s_register_operand" "%0,r,0,r"))
- (match_operand:SI 3 "s_register_operand" "?r,r,0,0"))
- (const_int 0)))
- (clobber (match_scratch:SI 0 "=&r,&r,&r,&r"))]
- "TARGET_ARM && !arm_arch6"
- "mlas%?\\t%0, %2, %1, %3"
- [(set_attr "conds" "set")
- (set_attr "type" "mlas")]
-)
-
-(define_insn "*mulsi3addsi_compare0_scratch_v6"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV
- (plus:SI (mult:SI
- (match_operand:SI 2 "s_register_operand" "r")
- (match_operand:SI 1 "s_register_operand" "r"))
- (match_operand:SI 3 "s_register_operand" "r"))
- (const_int 0)))
- (clobber (match_scratch:SI 0 "=r"))]
- "TARGET_ARM && arm_arch6 && optimize_size"
- "mlas%?\\t%0, %2, %1, %3"
- [(set_attr "conds" "set")
- (set_attr "type" "mlas")]
-)
-
(define_insn "*mulsi3subsi"
[(set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI
diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md
index
6ccc875e2b4e7b8ce256e52da966dfe220c6f5d6..8e26689b66263e7304a0da6163ceccfb4483d3e7
100644
--- a/gcc/config/arm/thumb2.md
+++ b/gcc/config/arm/thumb2.md
@@ -1381,31 +1381,6 @@ (define_insn "*thumb2_mulsi_short"
(set_attr "length" "2")
(set_attr "type" "muls")])
-(define_insn "*thumb2_mulsi_short_compare0"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV
- (mult:SI (match_operand:SI 1 "register_operand" "%0")
- (match_operand:SI 2 "register_operand" "l"))
- (const_int 0)))
- (set (match_operand:SI 0 "register_operand" "=l")
- (mult:SI (match_dup 1) (match_dup 2)))]
- "TARGET_THUMB2 && optimize_size"
- "muls\\t%0, %2, %0"
- [(set_attr "length" "2")
- (set_attr "type" "muls")])
-
-(define_insn "*thumb2_mulsi_short_compare0_scratch"
- [(set (reg:CC_NOOV CC_REGNUM)
- (compare:CC_NOOV
- (mult:SI (match_operand:SI 1 "register_operand" "%0")
- (match_operand:SI 2 "register_operand" "l"))
- (const_int 0)))
- (clobber (match_scratch:SI 0 "=l"))]
- "TARGET_THUMB2 && optimize_size"
- "muls\\t%0, %2, %0"
- [(set_attr "length" "2")
- (set_attr "type" "muls")])
-
(define_insn "*thumb2_cbz"
[(set (pc) (if_then_else
(eq (match_operand:SI 0 "s_register_operand" "l,?r")