ping

> -----Original Message-----
> From: Wilco Dijkstra [mailto:wdijk...@arm.com]
> Sent: 04 March 2015 15:38
> To: GCC Patches
> Subject: [PATCH][AArch64] Fix aarch64_rtx_costs of PLUS/MINUS
> 
> Include the cost of op0 and op1 in all cases in PLUS and MINUS in 
> aarch64_rtx_costs.
> Bootstrap & regression OK.
> 
> ChangeLog:
> 2015-03-04  Wilco Dijkstra  <wdijk...@arm.com>
> 
>         * gcc/config/aarch64/aarch64.c (aarch64_rtx_costs):
>         Calculate cost of op0 and op1 in PLUS and MINUS cases.
> 
> ---
>  gcc/config/aarch64/aarch64.c | 12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)
> 
> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
> index 39921a7..e22d72e 100644
> --- a/gcc/config/aarch64/aarch64.c
> +++ b/gcc/config/aarch64/aarch64.c
> @@ -5794,6 +5794,8 @@ aarch64_rtx_costs (rtx x, int code, int outer 
> ATTRIBUTE_UNUSED,
>       op1 = XEXP (x, 1);
> 
>  cost_minus:
> +     *cost += rtx_cost (op0, MINUS, 0, speed);
> +
>       /* Detect valid immediates.  */
>       if ((GET_MODE_CLASS (mode) == MODE_INT
>            || (GET_MODE_CLASS (mode) == MODE_CC
> @@ -5801,13 +5803,10 @@ cost_minus:
>           && CONST_INT_P (op1)
>           && aarch64_uimm12_shift (INTVAL (op1)))
>         {
> -         *cost += rtx_cost (op0, MINUS, 0, speed);
> -
>           if (speed)
>             /* SUB(S) (immediate).  */
>             *cost += extra_cost->alu.arith;
>           return true;
> -
>         }
> 
>       /* Look for SUB (extended register).  */
> @@ -5832,7 +5831,6 @@ cost_minus:
>           *cost += aarch64_rtx_mult_cost (new_op1, MULT,
>                                           (enum rtx_code) code,
>                                           speed);
> -         *cost += rtx_cost (op0, MINUS, 0, speed);
>           return true;
>         }
> 
> @@ -5879,6 +5877,8 @@ cost_plus:
>           return true;
>         }
> 
> +     *cost += rtx_cost (op1, PLUS, 1, speed);
> +
>       /* Look for ADD (extended register).  */
>          if (aarch64_rtx_arith_op_extract_p (op0, mode))
>         {
> @@ -5900,12 +5900,10 @@ cost_plus:
>         {
>           *cost += aarch64_rtx_mult_cost (new_op0, MULT, PLUS,
>                                           speed);
> -         *cost += rtx_cost (op1, PLUS, 1, speed);
>           return true;
>         }
> 
> -     *cost += (rtx_cost (new_op0, PLUS, 0, speed)
> -               + rtx_cost (op1, PLUS, 1, speed));
> +     *cost += rtx_cost (new_op0, PLUS, 0, speed);
> 
>       if (speed)
>         {
> --
> 1.9.1


Reply via email to