diff mbox

[AArch64] Fix operand costing logic for MINUS

Message ID 553E388C.3050902@arm.com
State New
Headers show

Commit Message

Kyrylo Tkachov April 27, 2015, 1:24 p.m. UTC
Hi all,

This fixes a case in aarch64 costs where we forgot
to account for one of the operands in the MINUS case.

This is important to get right as the mult synthesis code
can ask for the cost of a shift+sub operation and put the
shift part in any of the MINUS operands, expecting the cost function to
break it down into a separate shift operation if the
two cannot be combined.

Bootstrapped and tested on aarch64.
Ok for trunk?

Thanks,
Kyrill

2015-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

     * config/aarch64/aarch64.c (aarch64_rtx_costs, MINUS):
     Properly account for both operand costs in simple case.

Comments

Marcus Shawcroft April 30, 2015, 4:02 p.m. UTC | #1
On 27 April 2015 at 14:24, Kyrill Tkachov <kyrylo.tkachov@arm.com> wrote:

> 2015-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>
>     * config/aarch64/aarch64.c (aarch64_rtx_costs, MINUS):
>     Properly account for both operand costs in simple case.

OK /Marcus
Kyrylo Tkachov May 1, 2015, 9:13 a.m. UTC | #2
On 30/04/15 17:02, Marcus Shawcroft wrote:
> On 27 April 2015 at 14:24, Kyrill Tkachov <kyrylo.tkachov@arm.com> wrote:
>
>> 2015-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>>
>>      * config/aarch64/aarch64.c (aarch64_rtx_costs, MINUS):
>>      Properly account for both operand costs in simple case.
> OK /Marcus

Thanks, but my patch is just a subset of Wilcos' patch at:
https://gcc.gnu.org/ml/gcc-patches/2015-03/msg00225.html

As mentioned at https://gcc.gnu.org/ml/gcc-patches/2015-04/msg01629.html
I'd like to get Wilcos' patch in instead of mine.

Thanks,
Kyrill
diff mbox

Patch

commit 4859566692e4b9195b975632ed105b9c4b6ab765
Author: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Date:   Mon Mar 2 10:18:22 2015 +0000

    [AArch64] Properly cost both operands of MINUS.

diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 7ffa7ee..5a3f887 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -5844,7 +5844,8 @@  cost_minus:
 	    return true;
 	  }
 
-	*cost += rtx_cost (new_op1, MINUS, 1, speed);
+	*cost += rtx_cost (new_op1, MINUS, 1, speed)
+	         + rtx_cost (op0, MINUS, 0, speed);
 
 	if (speed)
 	  {