;; Define the DImode operations that can be done in a small number
;; of instructions.
(define_insn "adddi3"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (plus:DI (match_operand:DI 1 "gpc_reg_operand" "%r")
- (match_operand:DI 2 "gpc_reg_operand" "r")))]
+ [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
+ (plus:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r")
+ (match_operand:DI 2 "reg_or_short_operand" "r,I")))]
""
- "a %L0,%L1,%L2\;ae %0,%1,%2")
+ "@
+ a %L0,%L1,%L2\;ae %0,%1,%2
+ ai %L0,%L1,%2\;a%G2e %0,%1")
(define_insn "subdi3"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (minus:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "gpc_reg_operand" "r")))]
+ [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
+ (minus:DI (match_operand:DI 1 "reg_or_short_operand" "r,I")
+ (match_operand:DI 2 "gpc_reg_operand" "r,r")))]
""
- "sf %L0,%L2,%L1\;sfe %0,%2,%1")
+ "@
+ sf %L0,%L2,%L1\;sfe %0,%2,%1
+ sfi %L0,%L2,%1\;sf%G1e %0,%2")
(define_insn "negdi2"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r")