machine_mode cmpmode;
rtx tmp, flags;
+ /* Swap operands to emit carry flag comparison. */
+ if ((code == GTU || code == LEU)
+ && nonimmediate_operand (op1, VOIDmode))
+ {
+ std::swap (op0, op1);
+ code = swap_condition (code);
+ }
+
cmpmode = SELECT_CC_MODE (code, op0, op1);
flags = gen_rtx_REG (cmpmode, FLAGS_REG);
[(match_operand 2 "flags_reg_operand") (const_int 0)])
(match_operand:SWI 1 "nonimmediate_operand" "0")))
(clobber (reg:CC FLAGS_REG))]
- "ix86_unary_operator_ok (PLUS, <MODE>mode, operands)"
+ "!MEM_P (operands[0]) || rtx_equal_p (operands[0], operands[1])"
"adc{<imodesuffix>}\t{$0, %0|%0, 0}"
[(set_attr "type" "alu")
(set_attr "use_carry" "1")
(match_operator:SWI 3 "ix86_carry_flag_operator"
[(match_operand 2 "flags_reg_operand") (const_int 0)])))
(clobber (reg:CC FLAGS_REG))]
- "ix86_unary_operator_ok (MINUS, <MODE>mode, operands)"
+ "!MEM_P (operands[0]) || rtx_equal_p (operands[0], operands[1])"
"sbb{<imodesuffix>}\t{$0, %0|%0, 0}"
[(set_attr "type" "alu")
(set_attr "use_carry" "1")