[PATCH] Schedule by INSN_COST in case of tie

Kyrill Tkachov kyrylo.tkachov@foss.arm.com
Tue Sep 11 15:00:00 GMT 2018


Hi Ramana,

On 11/09/18 15:55, Ramana Radhakrishnan wrote:
> On Tue, 11 Sep 2018, 14:38 Vlad Lazar, <vlad.lazar@arm.com> wrote:
>
> > Hi.
> >
> > This patch makes the scheduler prefer instructions with higher cost if two
> > given instructions are equally good.
> > Issuing more restricted instructions first is particularly useful on
> > in-order cores because it increases the
> > number of dual issue opportunities.
> >
> > For example, on AArch64, instead of:
> >
> >    add     x11, x2, 96
> >    mov     x4, x2
> >    mov     w10, 1
> >    ldrh    w5, [x0]
> >    ldrh    w13, [x0, 2]
> >    ldrh    w9, [x0, 4]
> >    ldrh    w12, [x0, 6]
> >    b       .L759
> >
> > Generate:
> >
> >    ldrh    w5, [x0]
> >    add     x11, x2, 96
> >    ldrh    w13, [x0, 2]
> >    mov     x4, x2
> >    ldrh    w9, [x0, 4]
> >    mov     w10, 1
> >    ldrh    w12, [x0, 6]
> >    b       .L759
> >
> > Bootstrapped and regtested on aarch64-none-linux-gnu and there are no
> > regressions.
> > Ok for trunk?
> >
>
> This to me feels like the wrong approach as it feels like you are assuming
> INSN_COST is latency in some way ? Surely, we shouldn't be introducing
> INSN_COST based stuff into the scheduler.
>
> Have you investigated  using TARGET_SCHED_ADJUST_COST (IIRC, look for the
> right name in the internals documents) and such hooks that come from the
> scheduler rather than trying to massage INSN_COST into the target
> independent parts of the scheduler ?
>

In the context of haifa-sched.c, INSN_COST is the latency cost.
It is not the rtx_cost of the insn, as used by combine and others.
So this approach looks reasonable to me (though I haven't done a deep review).

Thanks,
Kyrill

> Ramana
>
>
> >
> > Thanks,
> > Vlad
> >
> > gcc/
> > Changelog for gcc/Changelog
> > 2018-09-11  Vlad Lazar  <vlad.lazar@arm.com>
> >
> >         * haifa-sched.c (rank_for_schedule): Schedule by INSN_COST.
> >         (rfs_decision): New scheduling decision.
> >



More information about the Gcc-patches mailing list