(set (mem:QI (match_dup 5))
(const_int 0))]
"operands[5] = (operands[0] == operands[3]) ? operands[4] : operands[3];")
+
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (match_operand:SI 1 "pow2_m1_operand" ""))
+ (set (cc0) (compare (match_operand:SI 2 "register_operand" "")
+ (match_operand:SI 3 "register_operand" "")))
+ (set (pc) (if_then_else (gtu (cc0) (const_int 0))
+ (match_operand 4 "pc_or_label_operand")
+ (match_operand 5 "pc_or_label_operand")))]
+ "INTVAL (operands[1]) <= 255
+ && operands[0] == operands[3]
+ && peep2_reg_dead_p (2, operands[0])
+ && peep2_reg_dead_p (2, operands[2])
+ && (operands[4] == pc_rtx || operands[5] == pc_rtx)
+ && (optimize_size || TUNE_68040_60)
+ && DATA_REG_P (operands[2])"
+ [(set (match_dup 7) (lshiftrt:SI (match_dup 7) (match_dup 6)))
+ (set (cc0) (compare (match_dup 7) (const_int 0)))
+ (set (pc) (if_then_else (ne (cc0) (const_int 0))
+ (match_dup 4) (match_dup 5)))]
+ "
+{
+ operands[6] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
+ operands[7] = operands[2];
+}")
+
+(define_peephole2
+ [(set (cc0) (compare (match_operand:SI 0 "register_operand" "")
+ (match_operand:SI 1 "pow2_m1_operand" "")))
+ (set (pc) (if_then_else (gtu (cc0) (const_int 0))
+ (match_operand 2 "pc_or_label_operand")
+ (match_operand 3 "pc_or_label_operand")))]
+ "INTVAL (operands[1]) <= 255
+ && peep2_reg_dead_p (1, operands[0])
+ && (operands[2] == pc_rtx || operands[3] == pc_rtx)
+ && (optimize_size || TUNE_68040_60)
+ && DATA_REG_P (operands[0])"
+ [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 4)))
+ (set (cc0) (compare (match_dup 0) (const_int 0)))
+ (set (pc) (if_then_else (ne (cc0) (const_int 0))
+ (match_dup 2) (match_dup 3)))]
+ "{ operands[4] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1)); }")
+
+(define_peephole2
+ [(set (match_operand:SI 0 "register_operand" "")
+ (match_operand:SI 1 "pow2_m1_operand" ""))
+ (set (cc0) (compare (match_operand:SI 2 "register_operand" "")
+ (match_operand:SI 3 "register_operand" "")))
+ (set (pc) (if_then_else (leu (cc0) (const_int 0))
+ (match_operand 4 "pc_or_label_operand")
+ (match_operand 5 "pc_or_label_operand")))]
+ "INTVAL (operands[1]) <= 255
+ && operands[0] == operands[3]
+ && peep2_reg_dead_p (2, operands[0])
+ && peep2_reg_dead_p (2, operands[2])
+ && (operands[4] == pc_rtx || operands[5] == pc_rtx)
+ && (optimize_size || TUNE_68040_60)
+ && DATA_REG_P (operands[2])"
+ [(set (match_dup 7) (lshiftrt:SI (match_dup 7) (match_dup 6)))
+ (set (cc0) (compare (match_dup 7) (const_int 0)))
+ (set (pc) (if_then_else (eq (cc0) (const_int 0))
+ (match_dup 4) (match_dup 5)))]
+ "
+{
+ operands[6] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1));
+ operands[7] = operands[2];
+}")
+
+(define_peephole2
+ [(set (cc0) (compare (match_operand:SI 0 "register_operand" "")
+ (match_operand:SI 1 "pow2_m1_operand" "")))
+ (set (pc) (if_then_else (leu (cc0) (const_int 0))
+ (match_operand 2 "pc_or_label_operand")
+ (match_operand 3 "pc_or_label_operand")))]
+ "INTVAL (operands[1]) <= 255
+ && peep2_reg_dead_p (1, operands[0])
+ && (operands[2] == pc_rtx || operands[3] == pc_rtx)
+ && (optimize_size || TUNE_68040_60)
+ && DATA_REG_P (operands[0])"
+ [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (match_dup 4)))
+ (set (cc0) (compare (match_dup 0) (const_int 0)))
+ (set (pc) (if_then_else (eq (cc0) (const_int 0))
+ (match_dup 2) (match_dup 3)))]
+ "{ operands[4] = GEN_INT (exact_log2 (INTVAL (operands[1]) + 1)); }")
+