(set_attr "pa_combine_type" "addmove")
(set_attr "length" "4")])
+; Rewrite RTL using a REG+D store. This will allow the insn that
+; computes the address to be deleted if the register it sets is dead.
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "const_int_operand" "")))
+ (set (mem:SI (match_dup 0))
+ (match_operand:SI 3 "register_operand" ""))]
+ "!TARGET_64BIT
+ && !INT14_OK_STRICT
+ && GENERAL_REGNO_P (REGNO (operands[0]))
+ && GENERAL_REGNO_P (REGNO (operands[3]))
+ && REGNO (operands[0]) != REGNO (operands[3])
+ && base14_operand (operands[2], E_SImode)"
+ [(set (mem:SI (plus:SI (match_dup 1) (match_dup 2))) (match_dup 3))
+ (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))]
+ "")
+
+; Rewrite RTL using a REG+D load. This will allow the insn that
+; computes the address to be deleted if the register it sets is dead.
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "const_int_operand" "")))
+ (set (match_operand:SI 3 "register_operand" "")
+ (mem:SI (match_dup 0)))]
+ "!TARGET_64BIT
+ && !INT14_OK_STRICT
+ && GENERAL_REGNO_P (REGNO (operands[0]))
+ && GENERAL_REGNO_P (REGNO (operands[3]))
+ && REGNO (operands[0]) != REGNO (operands[3])
+ && REGNO (operands[1]) != REGNO (operands[3])
+ && base14_operand (operands[2], E_SImode)"
+ [(set (match_dup 3) (mem:SI (plus:SI (match_dup 1) (match_dup 2))))
+ (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))]
+ "")
+
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "const_int_operand" "")))
+ (set (match_operand:SI 3 "register_operand" "")
+ (mem:SI (match_dup 0)))]
+ "!TARGET_64BIT
+ && !INT14_OK_STRICT
+ && GENERAL_REGNO_P (REGNO (operands[0]))
+ && GENERAL_REGNO_P (REGNO (operands[3]))
+ && REGNO (operands[0]) == REGNO (operands[3])
+ && base14_operand (operands[2], E_SImode)"
+ [(set (match_dup 3) (mem:SI (plus:SI (match_dup 1) (match_dup 2))))]
+ "")
+
; Rewrite RTL using an indexed store. This will allow the insn that
; computes the address to be deleted if the register it sets is dead.
(define_peephole2
(set_attr "pa_combine_type" "addmove")
(set_attr "length" "4")])
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "const_int_operand" "")))
+ (set (mem:SF (match_dup 0))
+ (match_operand:SF 3 "register_operand" ""))]
+ "!TARGET_64BIT
+ && !INT14_OK_STRICT
+ && GENERAL_REGNO_P (REGNO (operands[0]))
+ && GENERAL_REGNO_P (REGNO (operands[3]))
+ && REGNO (operands[0]) != REGNO (operands[3])
+ && base14_operand (operands[2], E_SImode)"
+ [(set (mem:SF (plus:SI (match_dup 1) (match_dup 2))) (match_dup 3))
+ (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))]
+ "")
+
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "const_int_operand" "")))
+ (set (match_operand:SF 3 "register_operand" "")
+ (mem:SF (match_dup 0)))]
+ "!TARGET_64BIT
+ && !INT14_OK_STRICT
+ && GENERAL_REGNO_P (REGNO (operands[0]))
+ && GENERAL_REGNO_P (REGNO (operands[3]))
+ && REGNO (operands[0]) != REGNO (operands[3])
+ && REGNO (operands[1]) != REGNO (operands[3])
+ && base14_operand (operands[2], E_SImode)"
+ [(set (match_dup 3) (mem:SF (plus:DI (match_dup 1) (match_dup 2))))
+ (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))]
+ "")
+
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (plus:SI (match_operand:SI 1 "register_operand" "")
+ (match_operand:SI 2 "const_int_operand" "")))
+ (set (match_operand:SF 3 "register_operand" "")
+ (mem:SF (match_dup 0)))]
+ "!TARGET_64BIT
+ && !INT14_OK_STRICT
+ && GENERAL_REGNO_P (REGNO (operands[0]))
+ && GENERAL_REGNO_P (REGNO (operands[3]))
+ && REGNO (operands[0]) == REGNO (operands[3])
+ && base14_operand (operands[2], E_SImode)"
+ [(set (match_dup 3) (mem:SF (plus:DI (match_dup 1) (match_dup 2))))]
+ "")
+
(define_peephole2
[(set (match_operand:SI 0 "register_operand" "")
(plus:SI (ashift:SI (match_operand:SI 1 "register_operand" "")