[llvm-dev] machine scheduler: pre-RA bidirectional scheduling

Jonas Paulsson via llvm-dev
Tue, 31 Jul 2018 13:19:13 -0000

Hi,

I would like to get some feedback about the current status of the pre-RA
machine scheduler bidirectional scheduling.

I have tried enabling this on SystemZ, and found that it slightly
increases spilling generally (in one benchmark with as much as 5%).
Benchmarking do not indicate that bidirectional would be a win, either.
Is this within the expected, or does it indicate something in the
backend that could be fixed?

Theoretically, it should be better since it enables pre-RA resource
balancing and the second latency heuristic, right? It should also be
better to take from two sides the best candidate, instead of just from
one side, exposing the heuristics to more nodes and finding more good
candidates.

AArch, AMDGPU and PowerPC seem to be the only ones enabling
bidirectional scheduling, which indicates that bottom-up is still the norm.

So, I then would like to ask what is the general advice on when to
enable it? What were the original intentions behind this? Any particular
type of target that would benefit from this?

Thanks for any advice and explanation,

Jonas