diff mbox

rs6000: Improve rtx_costs for EQ a bit (PR30967)

Message ID 3d6c05579541bab52972a84232e5767a8b1b79ad.1431536316.git.segher@kernel.crashing.org
State New
Headers show

Commit Message

Segher Boessenkool May 13, 2015, 5:15 p.m. UTC
This patch changes rs6000_rtx_costs to be closer to reality.  It is
still not quite right, but at least it handles more cases, so the

	(set (reg:SI) (eq:SI (reg:SI) (reg:SI)))

from the PR isn't taken as costing 1 insn anymore, while setting
a reg:DI was cost 3 insns.  The mode of the dest doesn't matter at
all here, not for any of our current scc patterns.

Testing in progress; okay for trunk?


Segher


2015-05-13  Segher Boessenkool  <segher@kernel.crashing.org>

	PR rtl-optimization/30967
	* config/rs6000/rs6000.c (rs6000_rtx_costs): Don't consider
	destination mode for the cost of scc patterns.

---
 gcc/config/rs6000/rs6000.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Edelsohn May 13, 2015, 5:25 p.m. UTC | #1
On Wed, May 13, 2015 at 1:15 PM, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> This patch changes rs6000_rtx_costs to be closer to reality.  It is
> still not quite right, but at least it handles more cases, so the
>
>         (set (reg:SI) (eq:SI (reg:SI) (reg:SI)))
>
> from the PR isn't taken as costing 1 insn anymore, while setting
> a reg:DI was cost 3 insns.  The mode of the dest doesn't matter at
> all here, not for any of our current scc patterns.
>
> Testing in progress; okay for trunk?
>
>
> Segher
>
>
> 2015-05-13  Segher Boessenkool  <segher@kernel.crashing.org>
>
>         PR rtl-optimization/30967
>         * config/rs6000/rs6000.c (rs6000_rtx_costs): Don't consider
>         destination mode for the cost of scc patterns.

Okay.

Should this be applied to GCC 5 branch?

thanks, David
Segher Boessenkool May 13, 2015, 5:29 p.m. UTC | #2
On Wed, May 13, 2015 at 01:25:16PM -0400, David Edelsohn wrote:
> >         PR rtl-optimization/30967
> >         * config/rs6000/rs6000.c (rs6000_rtx_costs): Don't consider
> >         destination mode for the cost of scc patterns.
> 
> Okay.
> 
> Should this be applied to GCC 5 branch?

[ Testing is still in progress. ]

It should be prefectly safe to backport; OTOH, it is just one of very
many cases where we generate an extra sign-extend, so I don't think it
is particularly useful.  Your choice :-)


Segher
David Edelsohn May 14, 2015, 1:51 p.m. UTC | #3
On Wed, May 13, 2015 at 1:29 PM, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> On Wed, May 13, 2015 at 01:25:16PM -0400, David Edelsohn wrote:
>> >         PR rtl-optimization/30967
>> >         * config/rs6000/rs6000.c (rs6000_rtx_costs): Don't consider
>> >         destination mode for the cost of scc patterns.
>>
>> Okay.
>>
>> Should this be applied to GCC 5 branch?
>
> [ Testing is still in progress. ]
>
> It should be prefectly safe to backport; OTOH, it is just one of very
> many cases where we generate an extra sign-extend, so I don't think it
> is particularly useful.  Your choice :-)

The other prereqs are backported, so probably should backport this also.

Fixing this is a process, not an event.

- David
Segher Boessenkool May 15, 2015, 12:23 p.m. UTC | #4
On Thu, May 14, 2015 at 09:51:18AM -0400, David Edelsohn wrote:
> On Wed, May 13, 2015 at 1:29 PM, Segher Boessenkool
> <segher@kernel.crashing.org> wrote:
> > On Wed, May 13, 2015 at 01:25:16PM -0400, David Edelsohn wrote:
> >> >         PR rtl-optimization/30967
> >> >         * config/rs6000/rs6000.c (rs6000_rtx_costs): Don't consider
> >> >         destination mode for the cost of scc patterns.
> >>
> >> Okay.
> >>
> >> Should this be applied to GCC 5 branch?
> >
> > [ Testing is still in progress. ]
> >
> > It should be prefectly safe to backport; OTOH, it is just one of very
> > many cases where we generate an extra sign-extend, so I don't think it
> > is particularly useful.  Your choice :-)
> 
> The other prereqs are backported, so probably should backport this also.

The only related patch that could be backported (the compare imm thing)
is not backported yet AFAIK (I haven't checked); should it be?

This cost patch improves things with or without it.


Segher
diff mbox

Patch

diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index e5b8edd..1e32144 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -30631,7 +30631,7 @@  rs6000_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
 		*total = COSTS_N_INSNS (2);
 	      return true;
 	    }
-	  else if (mode == Pmode)
+	  else
 	    {
 	      *total = COSTS_N_INSNS (3);
 	      return false;