@@ -15669,7 +15669,7 @@ arm_select_cc_mode (enum rtx_code op, rtx x, rtx y)
&& CONST_INT_P (y)
&& UINTVAL (y) == 0x800000000
&& (op == GEU || op == LTU))
- return CC_ADCmode;
+ return CC_NOTCmode;
if (GET_MODE (x) == DImode
&& (op == GE || op == LT)
@@ -15685,7 +15685,7 @@ arm_select_cc_mode (enum rtx_code op, rtx x, rtx y)
&& ((GET_CODE (y) == PLUS
&& arm_borrow_operation (XEXP (y, 0), DImode))
|| arm_borrow_operation (y, DImode)))
- return CC_Bmode;
+ return CC_NOTCmode;
if (GET_MODE (x) == DImode
&& (op == EQ || op == NE)
@@ -15879,18 +15879,18 @@ arm_gen_dicompare_reg (rtx_code code, rtx x, rtx y, rtx scratch)
rtx_insn *insn;
if (y_hi == const0_rtx)
- insn = emit_insn (gen_cmpsi3_0_carryin_CC_Bout (scratch, x_hi,
- cmp1));
+ insn = emit_insn (gen_cmpsi3_0_carryin_CC_NOTCout
+ (scratch, x_hi, cmp1));
else if (CONST_INT_P (y_hi))
{
/* Constant is viewed as unsigned when zero-extended. */
y_hi = GEN_INT (UINTVAL (y_hi) & 0xffffffffULL);
- insn = emit_insn (gen_cmpsi3_imm_carryin_CC_Bout (scratch, x_hi,
- y_hi, cmp1));
+ insn = emit_insn (gen_cmpsi3_imm_carryin_CC_NOTCout
+ (scratch, x_hi, y_hi, cmp1));
}
else
- insn = emit_insn (gen_cmpsi3_carryin_CC_Bout (scratch, x_hi, y_hi,
- cmp1));
+ insn = emit_insn (gen_cmpsi3_carryin_CC_NOTCout
+ (scratch, x_hi, y_hi, cmp1));
return SET_DEST (single_set (insn));
}
@@ -15911,8 +15911,8 @@ arm_gen_dicompare_reg (rtx_code code, rtx x, rtx y, rtx scratch)
arm_gen_compare_reg (LTU, y_lo, x_lo, scratch),
const0_rtx);
y_hi = GEN_INT (0xffffffff & UINTVAL (y_hi));
- rtx_insn *insn = emit_insn (gen_rscsi3_CC_Bout_scratch (scratch, y_hi,
- x_hi, cmp1));
+ rtx_insn *insn = emit_insn (gen_rscsi3_CC_NOTCout_scratch
+ (scratch, y_hi, x_hi, cmp1));
return SET_DEST (single_set (insn));
}
@@ -24511,7 +24511,7 @@ maybe_get_arm_condition_code (rtx comparison)
default: return ARM_NV;
}
- case E_CC_Bmode:
+ case E_CC_NOTCmode:
switch (comp_code)
{
case GEU: return ARM_CS;
@@ -24527,14 +24527,6 @@ maybe_get_arm_condition_code (rtx comparison)
default: return ARM_NV;
}
- case E_CC_ADCmode:
- switch (comp_code)
- {
- case GEU: return ARM_CS;
- case LTU: return ARM_CC;
- default: return ARM_NV;
- }
-
case E_CCmode:
case E_CC_RSBmode:
switch (comp_code)
@@ -33,18 +33,15 @@ ADJUST_FLOAT_FORMAT (HF, ((arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)
CC_Zmode should be used if only the Z flag is set correctly
CC_Cmode should be used if only the C flag is set correctly, after an
addition.
+ CC_NOTCmode is the inverse of the C flag, after subtraction (borrow),
+ or for ADC where we cannot use the trick of comparing the sum
+ against one of the other operands.
CC_Nmode should be used if only the N (sign) flag is set correctly
CC_NVmode should be used if only the N and V bits are set correctly,
(used for signed comparisons when the carry is propagated in).
CC_RSBmode should be used where the comparison is set by an RSB immediate,
or NEG instruction. The form of the comparison for (const - reg) will
be (COMPARE (not (reg)) (~const)).
- CC_Bmode should be used if only the C flag is correct after a subtract
- (eg after an unsigned borrow with carry-in propagation).
- (used for DImode signed comparisons).
- CC_ADCmode is used when the carry is formed from the output of ADC for an
- addtion. In this case we cannot use the trick of comparing the sum
- against one of the other operands.
CCmode should be used otherwise. */
CC_MODE (CC_NZ);
@@ -65,10 +62,9 @@ CC_MODE (CC_DLTU);
CC_MODE (CC_DGEU);
CC_MODE (CC_DGTU);
CC_MODE (CC_C);
-CC_MODE (CC_B);
+CC_MODE (CC_NOTC);
CC_MODE (CC_N);
CC_MODE (CC_V);
-CC_MODE (CC_ADC);
/* Vector modes. */
VECTOR_MODES (INT, 4); /* V4QI V2HI */
@@ -755,7 +755,7 @@
else
emit_insn (gen_addsi3_cin_cout_reg (hi_result, hi_op1, hi_op2));
- arm_gen_unlikely_cbranch (GEU, CC_ADCmode, operands[3]);
+ arm_gen_unlikely_cbranch (GEU, CC_NOTCmode, operands[3]);
}
DONE;
@@ -764,7 +764,7 @@
(define_expand "addsi3_cin_cout_reg"
[(parallel
[(set (match_dup 3)
- (compare:CC_ADC
+ (compare:CC_NOTC
(plus:DI
(plus:DI (match_dup 4)
(zero_extend:DI (match_operand:SI 1 "s_register_operand")))
@@ -775,7 +775,7 @@
(match_dup 2)))])]
"TARGET_32BIT"
{
- operands[3] = gen_rtx_REG (CC_ADCmode, CC_REGNUM);
+ operands[3] = gen_rtx_REG (CC_NOTCmode, CC_REGNUM);
rtx ccin = gen_rtx_REG (CC_Cmode, CC_REGNUM);
operands[4] = gen_rtx_LTU (DImode, ccin, const0_rtx);
operands[5] = gen_rtx_LTU (SImode, ccin, const0_rtx);
@@ -783,8 +783,8 @@
)
(define_insn "*addsi3_cin_cout_reg_insn"
- [(set (reg:CC_ADC CC_REGNUM)
- (compare:CC_ADC
+ [(set (reg:CC_NOTC CC_REGNUM)
+ (compare:CC_NOTC
(plus:DI
(plus:DI
(match_operand:DI 3 "arm_carry_operation" "")
@@ -807,7 +807,7 @@
(define_expand "addsi3_cin_cout_imm"
[(parallel
[(set (match_dup 3)
- (compare:CC_ADC
+ (compare:CC_NOTC
(plus:DI
(plus:DI (match_dup 4)
(zero_extend:DI (match_operand:SI 1 "s_register_operand")))
@@ -818,7 +818,7 @@
(match_operand:SI 2 "arm_adcimm_operand")))])]
"TARGET_32BIT"
{
- operands[3] = gen_rtx_REG (CC_ADCmode, CC_REGNUM);
+ operands[3] = gen_rtx_REG (CC_NOTCmode, CC_REGNUM);
rtx ccin = gen_rtx_REG (CC_Cmode, CC_REGNUM);
operands[4] = gen_rtx_LTU (DImode, ccin, const0_rtx);
operands[5] = gen_rtx_LTU (SImode, ccin, const0_rtx);
@@ -827,8 +827,8 @@
)
(define_insn "*addsi3_cin_cout_imm_insn"
- [(set (reg:CC_ADC CC_REGNUM)
- (compare:CC_ADC
+ [(set (reg:CC_NOTC CC_REGNUM)
+ (compare:CC_NOTC
(plus:DI
(plus:DI
(match_operand:DI 3 "arm_carry_operation" "")
@@ -850,7 +850,7 @@
(define_expand "addsi3_cin_cout_0"
[(parallel
[(set (match_dup 2)
- (compare:CC_ADC
+ (compare:CC_NOTC
(plus:DI (match_dup 3)
(zero_extend:DI (match_operand:SI 1 "s_register_operand")))
(const_int 4294967296)))
@@ -858,7 +858,7 @@
(plus:SI (match_dup 4) (match_dup 1)))])]
"TARGET_32BIT"
{
- operands[2] = gen_rtx_REG (CC_ADCmode, CC_REGNUM);
+ operands[2] = gen_rtx_REG (CC_NOTCmode, CC_REGNUM);
rtx ccin = gen_rtx_REG (CC_Cmode, CC_REGNUM);
operands[3] = gen_rtx_LTU (DImode, ccin, const0_rtx);
operands[4] = gen_rtx_LTU (SImode, ccin, const0_rtx);
@@ -866,8 +866,8 @@
)
(define_insn "*addsi3_cin_cout_0_insn"
- [(set (reg:CC_ADC CC_REGNUM)
- (compare:CC_ADC
+ [(set (reg:CC_NOTC CC_REGNUM)
+ (compare:CC_NOTC
(plus:DI
(match_operand:DI 2 "arm_carry_operation" "")
(zero_extend:DI (match_operand:SI 1 "s_register_operand" "r")))
@@ -1616,7 +1616,7 @@
emit_insn (gen_usubvsi3_borrow (hi_result, hi_op1, hi_op2,
gen_rtx_LTU (SImode, ccreg, const0_rtx),
gen_rtx_LTU (DImode, ccreg, const0_rtx)));
- arm_gen_unlikely_cbranch (LTU, CC_Bmode, operands[3]);
+ arm_gen_unlikely_cbranch (LTU, CC_NOTCmode, operands[3]);
DONE;
})
@@ -2109,8 +2109,8 @@
)
(define_insn "usubvsi3_borrow"
- [(set (reg:CC_B CC_REGNUM)
- (compare:CC_B
+ [(set (reg:CC_NOTC CC_REGNUM)
+ (compare:CC_NOTC
(zero_extend:DI (match_operand:SI 1 "s_register_operand" "0,r"))
(plus:DI (match_operand:DI 4 "arm_borrow_operation" "")
(zero_extend:DI
@@ -2127,8 +2127,8 @@
)
(define_insn "usubvsi3_borrow_imm"
- [(set (reg:CC_B CC_REGNUM)
- (compare:CC_B
+ [(set (reg:CC_NOTC CC_REGNUM)
+ (compare:CC_NOTC
(zero_extend:DI (match_operand:SI 1 "s_register_operand" "r,r"))
(plus:DI (match_operand:DI 5 "arm_borrow_operation" "")
(match_operand:DI 3 "const_int_operand" "n,n"))))
@@ -907,7 +907,7 @@
;; Determine the mode of a 'wide compare', ie where the carry flag is
;; propagated into the comparison.
-(define_code_attr CC_EXTEND [(sign_extend "CC_NV") (zero_extend "CC_B")])
+(define_code_attr CC_EXTEND [(sign_extend "CC_NV") (zero_extend "CC_NOTC")])
;; Assembler mnemonics for vqh_ops and vqhs_ops iterators.
(define_code_attr VQH_mnem [(plus "vadd") (smin "vmin") (smax "vmax")
@@ -478,7 +478,7 @@
machine_mode ccmode = GET_MODE (op0);
if (ccmode == CC_Cmode)
return GET_CODE (op) == LTU;
- else if (ccmode == CCmode || ccmode == CC_RSBmode || ccmode == CC_ADCmode)
+ else if (ccmode == CCmode || ccmode == CC_RSBmode || ccmode == CC_NOTCmode)
return GET_CODE (op) == GEU;
return false;
@@ -500,7 +500,7 @@
machine_mode ccmode = GET_MODE (op0);
if (ccmode == CC_Cmode)
return GET_CODE (op) == GEU;
- else if (ccmode == CCmode || ccmode == CC_RSBmode || ccmode == CC_ADCmode)
+ else if (ccmode == CCmode || ccmode == CC_RSBmode || ccmode == CC_NOTCmode)
return GET_CODE (op) == LTU;
return false;
}