(match_operand:SI 3 "arm_rhs_operand" "rI,rI")])
(match_operand:SI 1 "s_register_operand" "0,?r")]))
(clobber (reg:CC CC_REGNUM))]
- "TARGET_ARM
- && (GET_CODE (operands[1]) != REG
- || (REGNO(operands[1]) != FRAME_POINTER_REGNUM
- && REGNO(operands[1]) != ARG_POINTER_REGNUM))"
+ "TARGET_ARM && !arm_eliminable_register (operands[1])"
"*
{
enum rtx_code code = GET_CODE (operands[4]);
(set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"str%?b\\t%3, [%0, %2]!"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"str%?b\\t%3, [%0, -%2]!"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"ldr%?b\\t%3, [%0, %2]!"
[(set_attr "type" "load_byte")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"ldr%?b\\t%3, [%0, -%2]!"
[(set_attr "type" "load_byte")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"ldr%?b\\t%3, [%0, %2]!\\t%@ z_extendqisi"
[(set_attr "type" "load_byte")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"ldr%?b\\t%3, [%0, -%2]!\\t%@ z_extendqisi"
[(set_attr "type" "load_byte")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"str%?\\t%3, [%0, %2]!"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"str%?\\t%3, [%0, -%2]!"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"ldr%?\\t%3, [%0, %2]!"
[(set_attr "type" "load1")
(set_attr "predicable" "yes")]
(set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && (GET_CODE (operands[2]) != REG
- || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[2])"
"ldr%?\\t%3, [%0, -%2]!"
[(set_attr "type" "load1")
(set_attr "predicable" "yes")]
(plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)])
(match_dup 1)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[3])"
"str%?b\\t%5, [%0, %3%S2]!"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[3])"
"str%?b\\t%5, [%0, -%3%S2]!"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
(plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)])
(match_dup 1)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[3])"
"ldr%?b\\t%5, [%0, %3%S2]!"
[(set_attr "type" "load_byte")
(set_attr "predicable" "yes")]
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[3])"
"ldr%?b\\t%5, [%0, -%3%S2]!"
[(set_attr "type" "load_byte")
(set_attr "predicable" "yes")]
(plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)])
(match_dup 1)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[3])"
"str%?\\t%5, [%0, %3%S2]!"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[3])"
"str%?\\t%5, [%0, -%3%S2]!"
[(set_attr "type" "store1")
(set_attr "predicable" "yes")]
(plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)])
(match_dup 1)))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[3])"
"ldr%?\\t%5, [%0, %3%S2]!"
[(set_attr "type" "load1")
(set_attr "predicable" "yes")]
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))]
"TARGET_ARM
- && REGNO (operands[0]) != FRAME_POINTER_REGNUM
- && REGNO (operands[1]) != FRAME_POINTER_REGNUM
- && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
+ && !arm_eliminable_register (operands[0])
+ && !arm_eliminable_register (operands[1])
+ && !arm_eliminable_register (operands[3])"
"ldr%?\\t%5, [%0, -%3%S2]!"
[(set_attr "type" "load1")
(set_attr "predicable" "yes")])