[ARM][3/4] Cleanup casts from INTVAL to [unsigned] HOST_WIDE_INT
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Tue, 24 May 2016 14:00:39 +0000 (14:00 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Tue, 24 May 2016 14:00:39 +0000 (14:00 +0000)
* config/arm/arm.md (ashldi3): Replace comparison of INTVAL of
operands[2] against 1 with comparison against CONST1_RTX.
(ashrdi3): Likewise.
(lshrdi3): Likewise.
(ashlsi3): Replace cast of INTVAL to unsigned HOST_WIDE_INT with
UINTVAL.
(ashrsi3): Likewise.
(lshrsi3): Likewise.
(rotrsi3): Likewise.
(define_split above *compareqi_eq0): Likewise.
(define_split above "prologue"): Likewise.
* config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
* config/arm/predicates.md (shift_operator): Likewise.
(shift_nomul_operator): Likewise.
(sat_shift_operator): Likewise.
(thumb1_cmp_operand): Likewise.
(const_neon_scalar_shift_amount_operand): Replace manual range
check with IN_RANGE.
* config/arm/thumb1.md (define_peephole2 above *thumb_subdi3):
Replace cast of INTVAL to unsigned HOST_WIDE_INT with UINTVAL.

From-SVN: r236640

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

index 5b3a9f02300693bf78cc84c00f02a74f2a1a39cb..a932987aab9bf4d5eb37f6ea59a740acaaebe6d4 100644 (file)
@@ -1,3 +1,26 @@
+2016-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/arm/arm.md (ashldi3): Replace comparison of INTVAL of
+       operands[2] against 1 with comparison against CONST1_RTX.
+       (ashrdi3): Likewise.
+       (lshrdi3): Likewise.
+       (ashlsi3): Replace cast of INTVAL to unsigned HOST_WIDE_INT with
+       UINTVAL.
+       (ashrsi3): Likewise.
+       (lshrsi3): Likewise.
+       (rotrsi3): Likewise.
+       (define_split above *compareqi_eq0): Likewise.
+       (define_split above "prologue"): Likewise.
+       * config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
+       * config/arm/predicates.md (shift_operator): Likewise.
+       (shift_nomul_operator): Likewise.
+       (sat_shift_operator): Likewise.
+       (thumb1_cmp_operand): Likewise.
+       (const_neon_scalar_shift_amount_operand): Replace manual range
+       check with IN_RANGE.
+       * config/arm/thumb1.md (define_peephole2 above *thumb_subdi3):
+       Replace cast of INTVAL to unsigned HOST_WIDE_INT with UINTVAL.
+
 2016-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * config/arm/arm.md (andsi3): Replace cast of 1 to HOST_WIDE_INT
index 21d09b8ad775f795bcddae12a4f233a5cf53d74b..4e453fd710112adc0cf581ea817bf17df63ac9c4 100644 (file)
@@ -9061,7 +9061,7 @@ thumb1_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer)
     case CONST_INT:
       if (outer == SET)
         {
-          if ((unsigned HOST_WIDE_INT) INTVAL (x) < 256)
+          if (UINTVAL (x) < 256)
             return COSTS_N_INSNS (1);
          /* See split "TARGET_THUMB1 && satisfies_constraint_J".  */
          if (INTVAL (x) >= -255 && INTVAL (x) <= -1)
index 1e61a60e11c07791a5663f9893d94ecd206bf359..451011d9486077ccbffd22518dc0837f63d087cd 100644 (file)
     {
       rtx scratch1, scratch2;
 
-      if (CONST_INT_P (operands[2])
-         && (HOST_WIDE_INT) INTVAL (operands[2]) == 1)
+      if (operands[2] == CONST1_RTX (SImode))
         {
           emit_insn (gen_arm_ashldi3_1bit (operands[0], operands[1]));
           DONE;
   "TARGET_EITHER"
   "
   if (CONST_INT_P (operands[2])
-      && ((unsigned HOST_WIDE_INT) INTVAL (operands[2])) > 31)
+      && (UINTVAL (operands[2])) > 31)
     {
       emit_insn (gen_movsi (operands[0], const0_rtx));
       DONE;
     {
       rtx scratch1, scratch2;
 
-      if (CONST_INT_P (operands[2])
-         && (HOST_WIDE_INT) INTVAL (operands[2]) == 1)
+      if (operands[2] == CONST1_RTX (SImode))
         {
           emit_insn (gen_arm_ashrdi3_1bit (operands[0], operands[1]));
           DONE;
   "TARGET_EITHER"
   "
   if (CONST_INT_P (operands[2])
-      && ((unsigned HOST_WIDE_INT) INTVAL (operands[2])) > 31)
+      && UINTVAL (operands[2]) > 31)
     operands[2] = GEN_INT (31);
   "
 )
     {
       rtx scratch1, scratch2;
 
-      if (CONST_INT_P (operands[2])
-         && (HOST_WIDE_INT) INTVAL (operands[2]) == 1)
+      if (operands[2] == CONST1_RTX (SImode))
         {
           emit_insn (gen_arm_lshrdi3_1bit (operands[0], operands[1]));
           DONE;
   "TARGET_EITHER"
   "
   if (CONST_INT_P (operands[2])
-      && ((unsigned HOST_WIDE_INT) INTVAL (operands[2])) > 31)
+      && (UINTVAL (operands[2])) > 31)
     {
       emit_insn (gen_movsi (operands[0], const0_rtx));
       DONE;
   if (TARGET_32BIT)
     {
       if (CONST_INT_P (operands[2])
-          && ((unsigned HOST_WIDE_INT) INTVAL (operands[2])) > 31)
+          && UINTVAL (operands[2]) > 31)
         operands[2] = GEN_INT (INTVAL (operands[2]) % 32);
     }
   else /* TARGET_THUMB1 */
                     (match_operator 5 "subreg_lowpart_operator"
                      [(match_operand:SI 4 "s_register_operand" "")]))))]
   "TARGET_32BIT
-   && ((unsigned HOST_WIDE_INT) INTVAL (operands[3])
+   && (UINTVAL (operands[3])
        == (GET_MODE_MASK (GET_MODE (operands[5]))
            & (GET_MODE_MASK (GET_MODE (operands[5]))
              << (INTVAL (operands[2])))))"
         (match_operand 1 "const_int_operand" "")))
    (clobber (match_scratch:SI 2 ""))]
   "TARGET_ARM
-   && (((unsigned HOST_WIDE_INT) INTVAL (operands[1]))
-       == (((unsigned HOST_WIDE_INT) INTVAL (operands[1])) >> 24) << 24)"
+   && ((UINTVAL (operands[1]))
+       == ((UINTVAL (operands[1])) >> 24) << 24)"
   [(set (match_dup 2) (zero_extend:SI (match_dup 0)))
    (set (reg:CC CC_REGNUM) (compare:CC (match_dup 2) (match_dup 1)))]
   "
index ad92f6c5419b351b076af13cef234a9d002952e7..4b4b4fe9e45a0957bf8f5b19633c99b2a7b34eb8 100644 (file)
 
 (define_predicate "const_neon_scalar_shift_amount_operand"
   (and (match_code "const_int")
-       (match_test "((unsigned HOST_WIDE_INT) INTVAL (op)) <= GET_MODE_BITSIZE (mode)
-       && ((unsigned HOST_WIDE_INT) INTVAL (op)) > 0")))
+       (match_test "IN_RANGE (UINTVAL (op), 1, GET_MODE_BITSIZE (mode))")))
 
 (define_predicate "ldrd_strd_offset_operand"
   (and (match_operand 0 "const_int_operand")
                      (match_test "power_of_two_operand (XEXP (op, 1), mode)"))
                 (and (match_code "rotate")
                      (match_test "CONST_INT_P (XEXP (op, 1))
-                                  && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
+                                  && (UINTVAL (XEXP (op, 1))) < 32")))
            (and (match_code "ashift,ashiftrt,lshiftrt,rotatert")
                 (match_test "!CONST_INT_P (XEXP (op, 1))
-                             || ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
+                             || (UINTVAL (XEXP (op, 1))) < 32")))
        (match_test "mode == GET_MODE (op)")))
 
 (define_special_predicate "shift_nomul_operator"
   (and (ior (and (match_code "rotate")
                 (match_test "CONST_INT_P (XEXP (op, 1))
-                             && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32"))
+                             && (UINTVAL (XEXP (op, 1))) < 32"))
            (and (match_code "ashift,ashiftrt,lshiftrt,rotatert")
                 (match_test "!CONST_INT_P (XEXP (op, 1))
-                             || ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) < 32")))
+                             || (UINTVAL (XEXP (op, 1))) < 32")))
        (match_test "mode == GET_MODE (op)")))
 
 ;; True for shift operators which can be used with saturation instructions.
                  (match_test "power_of_two_operand (XEXP (op, 1), mode)"))
             (and (match_code "ashift,ashiftrt")
                  (match_test "CONST_INT_P (XEXP (op, 1))
-                             && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1)) < 32)")))
+                             && (UINTVAL (XEXP (op, 1)) < 32)")))
        (match_test "mode == GET_MODE (op)")))
 
 ;; True for MULT, to identify which variant of shift_operator is in use.
   (ior (and (match_code "reg,subreg")
            (match_operand 0 "s_register_operand"))
        (and (match_code "const_int")
-           (match_test "((unsigned HOST_WIDE_INT) INTVAL (op)) < 256"))))
+           (match_test "(UINTVAL (op)) < 256"))))
 
 (define_predicate "thumb1_cmpneg_operand"
   (and (match_code "const_int")
index 072ed4da47ad164eb406bedc3fccc589ac705e9f..c5b59bd3e1577a904a93bb8bdf7d486b086fb848 100644 (file)
    (set (match_dup 0)
        (plus:SI (match_dup 0) (reg:SI SP_REGNUM)))]
   "TARGET_THUMB1
-   && (unsigned HOST_WIDE_INT) (INTVAL (operands[1])) < 1024
-   && (INTVAL (operands[1]) & 3) == 0"
+   && UINTVAL (operands[1]) < 1024
+   && (UINTVAL (operands[1]) & 3) == 0"
   [(set (match_dup 0) (plus:SI (reg:SI SP_REGNUM) (match_dup 1)))]
   ""
 )