In X86 we split greddy register allocation into 2 passes. The 1st pass
is to allocate tile register, and the 2nd pass is to allocate the rest
of virtual register. In most cases there is no tile register, so the 1st
pass is unnecessary. To improve the compiling time, we check if there is
any register need to be allocated by invoking callback
ShouldAllocateClass. If there is no register to be allocated, just
return false in the pass. This would improve the 1st greed RA pass for
normal cases.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Yes, looks like it fixed the regression, or at least most of it: http://llvm-compile-time-tracker.com/compare.php?from=66a16b2848b434e937d658f15fc1849650f52185&to=67bc0ed77803965cf986e79674f16305e0c503b2&stat=instructions
llvm/lib/CodeGen/RegAllocGreedy.cpp | ||
---|---|---|
2536 | The logic is no problem. |
llvm/lib/CodeGen/RegAllocGreedy.cpp | ||
---|---|---|
2536 | Sure, I'll update the patch. |
The logic is no problem.
Do you mind move the code to a function (e.g. hasVirtRegAlloc() ) to make the RAGreedy::runOnMachineFunction clean ?