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

Jonas Paulsson via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 31 06:19:13 PDT 2018


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




More information about the llvm-dev mailing list