From: Kazu Hirata Date: Wed, 22 Apr 2009 16:52:17 +0000 (+0000) Subject: arm.c (arm_rtx_costs_1): Use power_of_two_operand where appropriate. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4c7c486a4e03b5d1e78ba3680bab4aa89c2f50c4;p=gcc.git arm.c (arm_rtx_costs_1): Use power_of_two_operand where appropriate. * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand where appropriate. From-SVN: r146602 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ec64ac24920..14d6774a0e1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-04-22 Kazu Hirata + + * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand + where appropriate. + 2009-04-22 Kazu Hirata * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 547e7602f36..38ab142cacc 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -5141,9 +5141,7 @@ arm_rtx_costs_1 (rtx x, enum rtx_code outer, int* total, bool speed) /* A shift as a part of RSB costs no more than RSB itself. */ if (GET_CODE (XEXP (x, 0)) == MULT - && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT - && ((INTVAL (XEXP (XEXP (x, 0), 1)) - & (INTVAL (XEXP (XEXP (x, 0), 1)) - 1)) == 0)) + && power_of_two_operand (XEXP (XEXP (x, 0), 1), SImode)) { *total += rtx_cost (XEXP (XEXP (x, 0), 0), code, speed); *total += rtx_cost (XEXP (x, 1), code, speed); @@ -5151,9 +5149,7 @@ arm_rtx_costs_1 (rtx x, enum rtx_code outer, int* total, bool speed) } if (subcode == MULT - && GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT - && ((INTVAL (XEXP (XEXP (x, 1), 1)) & - (INTVAL (XEXP (XEXP (x, 1), 1)) - 1)) == 0)) + && power_of_two_operand (XEXP (XEXP (x, 1), 1), SImode)) { *total += rtx_cost (XEXP (x, 0), code, speed); *total += rtx_cost (XEXP (XEXP (x, 1), 0), subcode, speed); @@ -5189,9 +5185,7 @@ arm_rtx_costs_1 (rtx x, enum rtx_code outer, int* total, bool speed) multiplication by a power of two, so that we fall down into the code below. */ if (GET_CODE (XEXP (x, 0)) == MULT - && ! (GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT - && ((INTVAL (XEXP (XEXP (x, 0), 1)) & - (INTVAL (XEXP (XEXP (x, 0), 1)) - 1)) == 0))) + && !power_of_two_operand (XEXP (XEXP (x, 0), 1), SImode)) { /* The cost comes from the cost of the multiply. */ return false; @@ -5274,9 +5268,7 @@ arm_rtx_costs_1 (rtx x, enum rtx_code outer, int* total, bool speed) } if (subcode == MULT - && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT - && ((INTVAL (XEXP (XEXP (x, 0), 1)) & - (INTVAL (XEXP (XEXP (x, 0), 1)) - 1)) == 0)) + && power_of_two_operand (XEXP (XEXP (x, 0), 1), SImode)) { *total += rtx_cost (XEXP (x, 1), code, speed); *total += rtx_cost (XEXP (XEXP (x, 0), 0), subcode, speed); @@ -5333,9 +5325,7 @@ arm_rtx_costs_1 (rtx x, enum rtx_code outer, int* total, bool speed) || subcode == LSHIFTRT || subcode == ROTATE || subcode == ROTATERT || (subcode == MULT - && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT - && ((INTVAL (XEXP (XEXP (x, 0), 1)) & - (INTVAL (XEXP (XEXP (x, 0), 1)) - 1)) == 0))) + && power_of_two_operand (XEXP (XEXP (x, 0), 1), SImode))) { *total += rtx_cost (XEXP (XEXP (x, 0), 0), subcode, speed); /* Register shifts cost an extra cycle. */ @@ -5443,9 +5433,7 @@ arm_rtx_costs_1 (rtx x, enum rtx_code outer, int* total, bool speed) } if (subcode == MULT - && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT - && ((INTVAL (XEXP (XEXP (x, 0), 1)) & - (INTVAL (XEXP (XEXP (x, 0), 1)) - 1)) == 0)) + && power_of_two_operand (XEXP (XEXP (x, 0), 1), SImode)) { *total += rtx_cost (XEXP (x, 1), code, speed); *total += rtx_cost (XEXP (XEXP (x, 0), 0), subcode, speed);