These CC_MODEs are identical, merge them into a more generic name.

        * config/arm/arm-modes.def (CC_NOTC): New.
        (CC_ADC, CC_B): Remove.
        * config/arm/arm.c (arm_select_cc_mode): Update to match.
        (arm_gen_dicompare_reg): Likewise.
        (maybe_get_arm_condition_code): Likewise.
        * config/arm/arm.md (uaddvdi4): Likewise.
        (addsi3_cin_cout_reg, addsi3_cin_cout_imm): Likewise.
        (*addsi3_cin_cout_reg_insn): Likewise.
        (*addsi3_cin_cout_imm_insn): Likewise.
        (addsi3_cin_cout_0, *addsi3_cin_cout_0_insn): Likewise.
        (usubvsi3_borrow, usubvsi3_borrow_imm): Likewise.
---
 gcc/config/arm/arm.c         | 30 +++++++++++-------------------
 gcc/config/arm/arm-modes.def | 12 ++++--------
 gcc/config/arm/arm.md        | 36 ++++++++++++++++++------------------
 gcc/config/arm/iterators.md  |  2 +-
 gcc/config/arm/predicates.md |  4 ++--
 5 files changed, 36 insertions(+), 48 deletions(-)

diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index c38776fdad7..145345c2278 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -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)
diff --git a/gcc/config/arm/arm-modes.def b/gcc/config/arm/arm-modes.def
index 6e48223b63d..2495054e066 100644
--- a/gcc/config/arm/arm-modes.def
+++ b/gcc/config/arm/arm-modes.def
@@ -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 */
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 7bc55cce61b..90058a1bdb8 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -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"))))
diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md
index 0bc9eba0722..54539d1edf9 100644
--- a/gcc/config/arm/iterators.md
+++ b/gcc/config/arm/iterators.md
@@ -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")
diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md
index 009862e012c..abd0b5c2c55 100644
--- a/gcc/config/arm/predicates.md
+++ b/gcc/config/arm/predicates.md
@@ -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;
   }
-- 
2.20.1

Reply via email to