Commit 3d91674b by Richard Kenner

(subsi3): Merge alternatives.

(comparison patterns): Eliminate generation of "sfi."; no such instruction
exists.

From-SVN: r5151
parent fd5d5b94
......@@ -236,13 +236,11 @@
"sfi %0,%1,-1")
(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(minus:SI (match_operand:SI 1 "reg_or_short_operand" "r,I")
(match_operand:SI 2 "gpc_reg_operand" "r,r")))]
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(minus:SI (match_operand:SI 1 "reg_or_short_operand" "rI")
(match_operand:SI 2 "gpc_reg_operand" "r")))]
""
"@
sf %0,%2,%1
sfi %0,%2,%1")
"sf%I1 %0,%2,%1")
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x")
......@@ -4188,38 +4186,34 @@
[(set_attr "length" "12")])
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x,x")
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x")
(compare:CC
(plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,r,P,P"))
(match_operand:SI 3 "reg_or_short_operand" "r,I,r,I"))
(plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r,r,&r,r"))]
(clobber (match_scratch:SI 4 "=&r,&r"))]
""
"@
sf %4,%2,%1\;sfe %4,%4,%4\;sf%I3. %4,%4,%3
sf %4,%2,%1\;sfe %4,%4,%4\;sf%I3. %4,%4,%3
ai %4,%1,%n2\;sfe %4,%4,%4\;sf%I3. %4,%4,%3
ai %4,%1,%n2\;sfe %4,%4,%4\;sf%I3. %4,%4,%3"
sf %4,%2,%1\;sfe %4,%4,%4\;sf. %4,%4,%3
ai %4,%1,%n2\;sfe %4,%4,%4\;sf. %4,%4,%3"
[(set_attr "type" "compare")
(set_attr "length" "12")])
(define_insn ""
[(set (match_operand:CC 5 "cc_reg_operand" "=x,x,x,x")
[(set (match_operand:CC 5 "cc_reg_operand" "=x,x")
(compare:CC
(plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,r,P,P"))
(match_operand:SI 3 "reg_or_short_operand" "r,I,r,I"))
(plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r,r,&r,r"))]
(clobber (match_scratch:SI 4 "=&r,&r"))]
""
"@
sf %4,%2,%1\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
sf %4,%2,%1\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
ai %4,%1,%n2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
ai %4,%1,%n2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3"
sf %4,%2,%1\;sfe %4,%4,%4\;sf. %0,%4,%3
ai %4,%1,%n2\;sfe %4,%4,%4\;sf. %0,%4,%3"
[(set_attr "type" "compare")
(set_attr "length" "12")])
......@@ -4644,38 +4638,36 @@
[(set_attr "length" "8,12,12")])
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x")
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x")
(compare:CC
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r")
(match_operand:SI 2 "reg_or_short_operand" "I,r,rI"))
(match_operand:SI 3 "reg_or_short_operand" "r,r,I"))
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "I,r"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r,&r,&r"))]
(clobber (match_scratch:SI 4 "=&r,&r"))]
""
"@
ai %4,%1,%k2\;aze. %0,%3
sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3"
sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf. %0,%4,%3"
[(set_attr "type" "compare")
(set_attr "length" "8,12,12")])
(set_attr "length" "8,12")])
(define_insn ""
[(set (match_operand:CC 5 "cc_reg_operand" "=x,x,x")
[(set (match_operand:CC 5 "cc_reg_operand" "=x,x")
(compare:CC
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r")
(match_operand:SI 2 "reg_or_short_operand" "I,r,rI"))
(match_operand:SI 3 "reg_or_short_operand" "r,r,I"))
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "I,r"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r,&r,&r"))]
(clobber (match_scratch:SI 4 "=&r,&r"))]
""
"@
ai %4,%1,%k2\;aze. %0,%3
sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3
sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf%I3. %0,%4,%3"
sf%I2 %4,%1,%2\;sfe %4,%4,%4\;sf. %0,%4,%3"
[(set_attr "type" "compare")
(set_attr "length" "8,12,12")])
(set_attr "length" "8,12")])
(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
......
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