aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2020-12-30 17:41:21 +0100
committerUros Bizjak <ubizjak@gmail.com>2020-12-30 17:42:15 +0100
commit0696141107d61483f38482b941549959a0d7f613 (patch)
tree572712d239d5881276c63e9e680a37bc91b91cb3
parent209da90b40fca1be964e25c48352712d519c4dc2 (diff)
downloadgcc-0696141107d61483f38482b941549959a0d7f613.zip
gcc-0696141107d61483f38482b941549959a0d7f613.tar.gz
gcc-0696141107d61483f38482b941549959a0d7f613.tar.bz2
i386: Remove unnecessary clobbers from combine splitters.
There is no need for combine splitters to emit insn patterns with clobbers, the pass is smart enough to add clobbers to patterns as necessary. 2020-12-30 Uroš Bizjak <ubizjak@gmail.com> gcc/ * config/i386/i386.md: Remove unnecessary clobbers from combine splitters.
-rw-r--r--gcc/config/i386/i386.md61
1 files changed, 24 insertions, 37 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index d7cd3df..ea1a070 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -12693,12 +12693,10 @@
[(not:SWI (match_operand:SWI 2 "register_operand"))
(match_operand:SWI 3 "nonimmediate_operand")]))]
""
- [(parallel
- [(set (reg:CCC FLAGS_REG)
- (compare:CCC
- (plus:SWI (match_dup 2) (match_dup 3))
- (match_dup 2)))
- (clobber (scratch:SWI))])
+ [(set (reg:CCC FLAGS_REG)
+ (compare:CCC
+ (plus:SWI (match_dup 2) (match_dup 3))
+ (match_dup 2)))
(set (match_dup 0)
(match_op_dup 1 [(reg:CCC FLAGS_REG) (const_int 0)]))])
@@ -12709,12 +12707,10 @@
(match_operand 3 "const_int_operand")]))]
"TARGET_64BIT
&& IN_RANGE (exact_log2 (UINTVAL (operands[3]) + 1), 32, 63)"
- [(parallel
- [(set (reg:CCZ FLAGS_REG)
- (compare:CCZ
- (lshiftrt:DI (match_dup 2) (match_dup 4))
- (const_int 0)))
- (clobber (scratch:DI))])
+ [(set (reg:CCZ FLAGS_REG)
+ (compare:CCZ
+ (lshiftrt:DI (match_dup 2) (match_dup 4))
+ (const_int 0)))
(set (match_dup 0)
(match_op_dup 1 [(reg:CCZ FLAGS_REG) (const_int 0)]))]
{
@@ -12905,12 +12901,10 @@
(label_ref (match_operand 0))
(pc)))]
""
- [(parallel
- [(set (reg:CCC FLAGS_REG)
- (compare:CCC
- (plus:SWI (match_dup 2) (match_dup 3))
- (match_dup 2)))
- (clobber (scratch:SWI))])
+ [(set (reg:CCC FLAGS_REG)
+ (compare:CCC
+ (plus:SWI (match_dup 2) (match_dup 3))
+ (match_dup 2)))
(set (pc)
(if_then_else (match_op_dup 1 [(reg:CCC FLAGS_REG) (const_int 0)])
(label_ref (match_operand 0))
@@ -12926,12 +12920,10 @@
(pc)))]
"TARGET_64BIT
&& IN_RANGE (exact_log2 (UINTVAL (operands[3]) + 1), 32, 63)"
- [(parallel
- [(set (reg:CCZ FLAGS_REG)
- (compare:CCZ
- (lshiftrt:DI (match_dup 2) (match_dup 4))
- (const_int 0)))
- (clobber (scratch:DI))])
+ [(set (reg:CCZ FLAGS_REG)
+ (compare:CCZ
+ (lshiftrt:DI (match_dup 2) (match_dup 4))
+ (const_int 0)))
(set (pc)
(if_then_else (match_op_dup 1 [(reg:CCZ FLAGS_REG) (const_int 0)])
(label_ref (match_operand 0))
@@ -18581,9 +18573,8 @@
&& INTVAL (operands[2]) != -1
&& INTVAL (operands[2]) != 2147483647"
[(set (reg:CC FLAGS_REG) (compare:CC (match_dup 1) (match_dup 2)))
- (parallel [(set (match_dup 0)
- (neg:SWI48 (ltu:SWI48 (reg:CC FLAGS_REG) (const_int 0))))
- (clobber (reg:CC FLAGS_REG))])]
+ (set (match_dup 0)
+ (neg:SWI48 (ltu:SWI48 (reg:CC FLAGS_REG) (const_int 0))))]
"operands[2] = GEN_INT (INTVAL (operands[2]) + 1);")
(define_split
@@ -18594,9 +18585,8 @@
(const_int 0))))]
""
[(set (reg:CC FLAGS_REG) (compare:CC (match_dup 1) (const_int 1)))
- (parallel [(set (match_dup 0)
- (neg:SWI (ltu:SWI (reg:CC FLAGS_REG) (const_int 0))))
- (clobber (reg:CC FLAGS_REG))])])
+ (set (match_dup 0)
+ (neg:SWI (ltu:SWI (reg:CC FLAGS_REG) (const_int 0))))])
(define_split
[(set (match_operand:SWI 0 "register_operand")
@@ -18605,13 +18595,10 @@
(match_operand 1 "int_nonimmediate_operand")
(const_int 0))))]
""
- [(parallel [(set (reg:CCC FLAGS_REG)
- (ne:CCC (match_dup 1) (const_int 0)))
- (clobber (match_dup 2))])
- (parallel [(set (match_dup 0)
- (neg:SWI (ltu:SWI (reg:CCC FLAGS_REG) (const_int 0))))
- (clobber (reg:CC FLAGS_REG))])]
- "operands[2] = gen_rtx_SCRATCH (GET_MODE (operands[1]));")
+ [(set (reg:CCC FLAGS_REG)
+ (ne:CCC (match_dup 1) (const_int 0)))
+ (set (match_dup 0)
+ (neg:SWI (ltu:SWI (reg:CCC FLAGS_REG) (const_int 0))))])
(define_insn "*mov<mode>cc_noc"
[(set (match_operand:SWI248 0 "register_operand" "=r,r")