On Tue, 11 Sep 2018, 14:38 Vlad Lazar, <vlad.la...@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 ? Ramana > > Thanks, > Vlad > > gcc/ > Changelog for gcc/Changelog > 2018-09-11 Vlad Lazar <vlad.la...@arm.com> > > * haifa-sched.c (rank_for_schedule): Schedule by INSN_COST. > (rfs_decision): New scheduling decision. >