s390.md ("*adddi3_carry1_cc", [...]): New insns.
* config/s390/s390.md ("*adddi3_carry1_cc", "*adddi3_carry1_cconly", "*adddi3_carry2_cc", "*adddi3_carry2_cconly", "*subdi3_borrow_cc", "*subdi3_borrow_cconly"): New insns. ("*addsi3_sub", "*subsi3_sub"): Remove. ("*subdi3_cc", *subdi3_cconly"): Use only if TARGET_64BIT. ("*subsi3_cc"): Fix op_type attribute. From-SVN: r71885
This commit is contained in:
parent
177560b2d0
commit
b2ba71cad8
@ -1,3 +1,12 @@
|
||||
2003-09-28 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* config/s390/s390.md ("*adddi3_carry1_cc", "*adddi3_carry1_cconly",
|
||||
"*adddi3_carry2_cc", "*adddi3_carry2_cconly", "*subdi3_borrow_cc",
|
||||
"*subdi3_borrow_cconly"): New insns.
|
||||
("*addsi3_sub", "*subsi3_sub"): Remove.
|
||||
("*subdi3_cc", *subdi3_cconly"): Use only if TARGET_64BIT.
|
||||
("*subsi3_cc"): Fix op_type attribute.
|
||||
|
||||
2003-09-28 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* stmt.c (expand_asm_operands): Take a location_t, instead of
|
||||
|
@ -3156,6 +3156,56 @@
|
||||
"aghi\t%0,%h2"
|
||||
[(set_attr "op_type" "RI")])
|
||||
|
||||
(define_insn "*adddi3_carry1_cc"
|
||||
[(set (reg 33)
|
||||
(compare (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0")
|
||||
(match_operand:DI 2 "general_operand" "d,m"))
|
||||
(match_dup 1)))
|
||||
(set (match_operand:DI 0 "register_operand" "=d,d")
|
||||
(plus:DI (match_dup 1) (match_dup 2)))]
|
||||
"s390_match_ccmode (insn, CCL1mode) && TARGET_64BIT"
|
||||
"@
|
||||
algr\t%0,%2
|
||||
alg\t%0,%2"
|
||||
[(set_attr "op_type" "RRE,RXY")])
|
||||
|
||||
(define_insn "*adddi3_carry1_cconly"
|
||||
[(set (reg 33)
|
||||
(compare (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0")
|
||||
(match_operand:DI 2 "general_operand" "d,m"))
|
||||
(match_dup 1)))
|
||||
(clobber (match_scratch:DI 0 "=d,d"))]
|
||||
"s390_match_ccmode (insn, CCL1mode) && TARGET_64BIT"
|
||||
"@
|
||||
algr\t%0,%2
|
||||
alg\t%0,%2"
|
||||
[(set_attr "op_type" "RRE,RXY")])
|
||||
|
||||
(define_insn "*adddi3_carry2_cc"
|
||||
[(set (reg 33)
|
||||
(compare (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0")
|
||||
(match_operand:DI 2 "general_operand" "d,m"))
|
||||
(match_dup 2)))
|
||||
(set (match_operand:DI 0 "register_operand" "=d,d")
|
||||
(plus:DI (match_dup 1) (match_dup 2)))]
|
||||
"s390_match_ccmode (insn, CCL1mode) && TARGET_64BIT"
|
||||
"@
|
||||
algr\t%0,%2
|
||||
alg\t%0,%2"
|
||||
[(set_attr "op_type" "RRE,RXY")])
|
||||
|
||||
(define_insn "*adddi3_carry2_cconly"
|
||||
[(set (reg 33)
|
||||
(compare (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0")
|
||||
(match_operand:DI 2 "general_operand" "d,m"))
|
||||
(match_dup 2)))
|
||||
(clobber (match_scratch:DI 0 "=d,d"))]
|
||||
"s390_match_ccmode (insn, CCL1mode) && TARGET_64BIT"
|
||||
"@
|
||||
algr\t%0,%2
|
||||
alg\t%0,%2"
|
||||
[(set_attr "op_type" "RRE,RXY")])
|
||||
|
||||
(define_insn "*adddi3_cc"
|
||||
[(set (reg 33)
|
||||
(compare (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0")
|
||||
@ -3395,7 +3445,7 @@
|
||||
(compare (match_operand:SI 1 "nonimmediate_operand" "%0,0,0")
|
||||
(neg:SI (match_operand:SI 2 "general_operand" "d,R,T"))))
|
||||
(clobber (match_scratch:SI 0 "=d,d,d"))]
|
||||
"s390_match_ccmode(insn, CCLmode)"
|
||||
"s390_match_ccmode (insn, CCLmode)"
|
||||
"@
|
||||
alr\t%0,%2
|
||||
al\t%0,%2
|
||||
@ -3413,17 +3463,6 @@
|
||||
ahy\t%0,%2"
|
||||
[(set_attr "op_type" "RX,RXY")])
|
||||
|
||||
(define_insn "*addsi3_sub"
|
||||
[(set (match_operand:SI 0 "register_operand" "=d,d")
|
||||
(plus:SI (match_operand:SI 1 "register_operand" "0,0")
|
||||
(subreg:SI (match_operand:HI 2 "memory_operand" "R,T") 0)))
|
||||
(clobber (reg:CC 33))]
|
||||
""
|
||||
"@
|
||||
ah\t%0,%2
|
||||
ahy\t%0,%2"
|
||||
[(set_attr "op_type" "RX,RXY")])
|
||||
|
||||
(define_insn "addsi3"
|
||||
[(set (match_operand:SI 0 "register_operand" "=d,d,d,d")
|
||||
(plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,0,0")
|
||||
@ -3704,6 +3743,31 @@
|
||||
slgf\t%0,%2"
|
||||
[(set_attr "op_type" "RRE,RXY")])
|
||||
|
||||
(define_insn "*subdi3_borrow_cc"
|
||||
[(set (reg 33)
|
||||
(compare (minus:DI (match_operand:DI 1 "register_operand" "0,0")
|
||||
(match_operand:DI 2 "general_operand" "d,m"))
|
||||
(match_dup 1)))
|
||||
(set (match_operand:DI 0 "register_operand" "=d,d")
|
||||
(minus:DI (match_dup 1) (match_dup 2)))]
|
||||
"s390_match_ccmode (insn, CCL2mode) && TARGET_64BIT"
|
||||
"@
|
||||
slgr\t%0,%2
|
||||
slg\t%0,%2"
|
||||
[(set_attr "op_type" "RRE,RXY")])
|
||||
|
||||
(define_insn "*subdi3_borrow_cconly"
|
||||
[(set (reg 33)
|
||||
(compare (minus:DI (match_operand:DI 1 "register_operand" "0,0")
|
||||
(match_operand:DI 2 "general_operand" "d,m"))
|
||||
(match_dup 1)))
|
||||
(clobber (match_scratch:DI 0 "=d,d"))]
|
||||
"s390_match_ccmode (insn, CCL2mode) && TARGET_64BIT"
|
||||
"@
|
||||
slgr\t%0,%2
|
||||
slg\t%0,%2"
|
||||
[(set_attr "op_type" "RRE,RXY")])
|
||||
|
||||
(define_insn "*subdi3_cc"
|
||||
[(set (reg 33)
|
||||
(compare (minus:DI (match_operand:DI 1 "register_operand" "0,0")
|
||||
@ -3711,7 +3775,7 @@
|
||||
(const_int 0)))
|
||||
(set (match_operand:DI 0 "register_operand" "=d,d")
|
||||
(minus:DI (match_dup 1) (match_dup 2)))]
|
||||
"s390_match_ccmode (insn, CCLmode)"
|
||||
"s390_match_ccmode (insn, CCLmode) && TARGET_64BIT"
|
||||
"@
|
||||
slgr\t%0,%2
|
||||
slg\t%0,%2"
|
||||
@ -3723,7 +3787,7 @@
|
||||
(match_operand:DI 2 "general_operand" "d,m"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:DI 0 "=d,d"))]
|
||||
"s390_match_ccmode (insn, CCLmode)"
|
||||
"s390_match_ccmode (insn, CCLmode) && TARGET_64BIT"
|
||||
"@
|
||||
slgr\t%0,%2
|
||||
slg\t%0,%2"
|
||||
@ -3793,7 +3857,7 @@
|
||||
(match_dup 1)))
|
||||
(set (match_operand:SI 0 "register_operand" "=d,d,d")
|
||||
(minus:SI (match_dup 1) (match_dup 2)))]
|
||||
"s390_match_ccmode(insn, CCL2mode)"
|
||||
"s390_match_ccmode (insn, CCL2mode)"
|
||||
"@
|
||||
slr\t%0,%2
|
||||
sl\t%0,%2
|
||||
@ -3806,12 +3870,12 @@
|
||||
(match_operand:SI 2 "general_operand" "d,R,T"))
|
||||
(match_dup 1)))
|
||||
(clobber (match_scratch:SI 0 "=d,d,d"))]
|
||||
"s390_match_ccmode(insn, CCL2mode)"
|
||||
"s390_match_ccmode (insn, CCL2mode)"
|
||||
"@
|
||||
slr\t%0,%2
|
||||
sl\t%0,%2
|
||||
sly\t%0,%2"
|
||||
[(set_attr "op_type" "RR,RX,RXE")])
|
||||
[(set_attr "op_type" "RR,RX,RXY")])
|
||||
|
||||
(define_insn "*subsi3_cc"
|
||||
[(set (reg 33)
|
||||
@ -3820,7 +3884,7 @@
|
||||
(const_int 0)))
|
||||
(set (match_operand:SI 0 "register_operand" "=d,d,d")
|
||||
(minus:SI (match_dup 1) (match_dup 2)))]
|
||||
"s390_match_ccmode(insn, CCLmode)"
|
||||
"s390_match_ccmode (insn, CCLmode)"
|
||||
"@
|
||||
slr\t%0,%2
|
||||
sl\t%0,%2
|
||||
@ -3833,7 +3897,7 @@
|
||||
(match_operand:SI 2 "general_operand" "d,R,T"))
|
||||
(const_int 0)))
|
||||
(clobber (match_scratch:SI 0 "=d,d,d"))]
|
||||
"s390_match_ccmode(insn, CCLmode)"
|
||||
"s390_match_ccmode (insn, CCLmode)"
|
||||
"@
|
||||
slr\t%0,%2
|
||||
sl\t%0,%2
|
||||
@ -3851,17 +3915,6 @@
|
||||
shy\t%0,%2"
|
||||
[(set_attr "op_type" "RX,RXY")])
|
||||
|
||||
(define_insn "*subsi3_sub"
|
||||
[(set (match_operand:SI 0 "register_operand" "=d,d")
|
||||
(minus:SI (match_operand:SI 1 "register_operand" "0,0")
|
||||
(subreg:SI (match_operand:HI 2 "memory_operand" "R,T") 0)))
|
||||
(clobber (reg:CC 33))]
|
||||
""
|
||||
"@
|
||||
sh\t%0,%2
|
||||
shy\t%0,%2"
|
||||
[(set_attr "op_type" "RX,RXY")])
|
||||
|
||||
(define_insn "subsi3"
|
||||
[(set (match_operand:SI 0 "register_operand" "=d,d,d")
|
||||
(minus:SI (match_operand:SI 1 "register_operand" "0,0,0")
|
||||
|
Loading…
Reference in New Issue
Block a user