[arm] make arm_carry_operation and arm_borrow_operation duals
authorRichard Earnshaw <rearnsha@arm.com>
Tue, 22 Oct 2019 13:16:42 +0000 (13:16 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Tue, 22 Oct 2019 13:16:42 +0000 (13:16 +0000)
Arm_carry_operation and arm_borrow_operation are duals: given that we
have a comparison that returns a result that relies solely in the
carry flag one is the inverse of the other.  So there's no reason for
one to have a CC mode that the other does not have.  This patch
restores that equivalence.

* config/arm/predicates.md (arm_borrow_operation): Handle CC_ADCmode.

From-SVN: r277289

gcc/ChangeLog
gcc/config/arm/predicates.md

index f8cfef70508389f91b75f5d4c29e18916fcb1833..e80bb17738724b666fd79b9d219ee71e2d9ba238 100644 (file)
@@ -1,3 +1,7 @@
+2019-10-22  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/arm/predicates.md (arm_borrow_operation): Handle CC_ADCmode.
+
 2019-10-22  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/92173
index 8a8f10ccb501d1c9e2ac7f18f4de138fd7634fe7..267c446c03e8903c21a0d74e43ae589ffcf689f4 100644 (file)
     machine_mode ccmode = GET_MODE (op0);
     if (ccmode == CC_Cmode)
       return GET_CODE (op) == GEU;
-    else if (ccmode == CCmode || ccmode == CC_RSBmode)
+    else if (ccmode == CCmode || ccmode == CC_RSBmode || ccmode == CC_ADCmode)
       return GET_CODE (op) == LTU;
     return false;
   }