|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
| #
62531518 |
| 23-Jul-2022 |
Matt Arsenault <[email protected]> |
RegAllocGreedy: Add a command line flag for reverseLocalAssignment
Introduce a flag like for some of the other target heuristic controls to help with experimentation.
|
| #
8d0383eb |
| 24-Jun-2022 |
Matt Arsenault <[email protected]> |
CodeGen: Remove AliasAnalysis from regalloc
This was stored in LiveIntervals, but not actually used for anything related to LiveIntervals. It was only used in one check for if a load instruction is
CodeGen: Remove AliasAnalysis from regalloc
This was stored in LiveIntervals, but not actually used for anything related to LiveIntervals. It was only used in one check for if a load instruction is rematerializable. I also don't think this was entirely correct, since it was implicitly assuming constant loads are also dereferenceable.
Remove this and rely only on the invariant+dereferenceable flags in the memory operand. Set the flag based on the AA query upfront. This should have the same net benefit, but has the possible disadvantage of making this AA query nonlazy.
Preserve the behavior of assuming pointsToConstantMemory implying dereferenceable for now, but maybe this should be changed.
show more ...
|
| #
c0fe37de |
| 16-Jul-2022 |
Kazu Hirata <[email protected]> |
[CodeGen] Remove redundant declaration createGreedyRegisterAllocator (NFC)
The function is declared in llvm/include/llvm/CodeGen/Passes.h.
Identified with readability-redundant-declaration.
|
| #
4d9d07c5 |
| 16-Jul-2022 |
Kazu Hirata <[email protected]> |
[CodeGen] Use RegClassFilterFunc where appropriate (NFC)
|
| #
fa8656d2 |
| 29-Jun-2022 |
Luo, Yuanke <[email protected]> |
[greedyalloc] Return early when there is no register to allocate.
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
[greedyalloc] Return early when there is no register to allocate.
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.
Differential Revision: https://reviews.llvm.org/D128804
show more ...
|
|
Revision tags: llvmorg-14.0.6, llvmorg-14.0.5 |
|
| #
095bf6be |
| 08-Jun-2022 |
Serguei Katkov <[email protected]> |
[Greedy RegAlloc] Fix the handling of split register in last chance re-coloring.
This is a fix for https://github.com/llvm/llvm-project/issues/55827.
When register we are trying to re-color is spli
[Greedy RegAlloc] Fix the handling of split register in last chance re-coloring.
This is a fix for https://github.com/llvm/llvm-project/issues/55827.
When register we are trying to re-color is split the original register (we tried to recover) has no uses after the split. However in rollback actions we assign back physical register to it. Later it causes different assertions. One of them is in attached test.
This CL fixes this by avoiding assigning physical register back to register which has no usage or its live interval now is empty.
Reviewed By: arsenm, qcolombet Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D127281
show more ...
|
| #
23d9ca10 |
| 13-Jun-2022 |
Kazu Hirata <[email protected]> |
[CodeGen] Remove EvictionTrack (NFC)
The last of getEvictor use was removed on Jun 5, 2022 in commit 5c06f7168fd1bd589b831cacd5f1cb8a928446fb, which was itself a patch to remove unused code.
Once w
[CodeGen] Remove EvictionTrack (NFC)
The last of getEvictor use was removed on Jun 5, 2022 in commit 5c06f7168fd1bd589b831cacd5f1cb8a928446fb, which was itself a patch to remove unused code.
Once we remove getEvictor, EvictionTrack becomes a write-only data structure. The data in it won't affect compilation, so the entire class is essentially dead.
show more ...
|
| #
5c06f716 |
| 06-Jun-2022 |
Kazu Hirata <[email protected]> |
[CodeGen] Remove splitCanCauseEvictionChain and its helpers (NFC)
The last use was removed on Mar 7, 2022 in commit 294eca35a00f89dff474044ebd478a7f83ccc310.
|
|
Revision tags: llvmorg-14.0.4 |
|
| #
12bae5f3 |
| 23-May-2022 |
Qunyan Mangus <[email protected]> |
Remove duplicate fields in RAGreedy
RAGreedy has two fields of RegisterClassInfo, one called RCI and another RegClassInfo from its base class. RCI is initialized without freezeReservedRegs first, wh
Remove duplicate fields in RAGreedy
RAGreedy has two fields of RegisterClassInfo, one called RCI and another RegClassInfo from its base class. RCI is initialized without freezeReservedRegs first, while RegClassInfo does. Therefore, if reserved registers information is changed between last time freezeReservedRegs is called and RAGreedy, it's not picked up by RCI. Instead of having both fields in RAGreedy, remove RCI and use RegClassInfo instead. Also removed is the TRI field which is present in its base class.
Reviewed By: MatzeB
Differential Revision: https://reviews.llvm.org/D125926
show more ...
|
| #
77480556 |
| 04-May-2022 |
Jay Foad <[email protected]> |
[RegAllocGreedy] New hook regClassPriorityTrumpsGlobalness
Add a new TargetRegisterInfo hook to allow targets to tweak the priority of live ranges, so that AllocationPriority of the register class w
[RegAllocGreedy] New hook regClassPriorityTrumpsGlobalness
Add a new TargetRegisterInfo hook to allow targets to tweak the priority of live ranges, so that AllocationPriority of the register class will be treated as more important than whether the range is local to a basic block or global. This is determined per-MachineFunction.
Differential Revision: https://reviews.llvm.org/D125102
show more ...
|
| #
9ebbe250 |
| 05-May-2022 |
Jay Foad <[email protected]> |
RegAllocGreedy: Common up part of the priority calculation. NFC.
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
7714e031 |
| 01-Apr-2022 |
Matt Arsenault <[email protected]> |
RegAllocGreedy: Allow last chance recolor to retry overlapping tuples
Last chance recoloring didn't try recoloring a done register with the same class since it believed there was no point. This does
RegAllocGreedy: Allow last chance recolor to retry overlapping tuples
Last chance recoloring didn't try recoloring a done register with the same class since it believed there was no point. This doesn't necessarily apply if the members in that class overlap. Allow the recoloring to proceed if the assigned interfering physical register overlaps with the candidate register.
This avoids an allocation failure with overlapping tuples. This testcase could be handled better, and I don't believe should reach last chance recoloring. The failure only manifests with the mutually unsatisfiable register hints to overlapping tuples. The earlier assignment decisions probably should have figured out that using these hints was a bad idea.
show more ...
|
| #
681b9466 |
| 26-Mar-2022 |
Matt Arsenault <[email protected]> |
RegAllocGreedy: Remove redundant check for virtual registers
The set of interfering virtual registers obviously only includes virtual registers.
|
| #
fa5a4e1b |
| 13-Apr-2022 |
serge-sans-paille <[email protected]> |
[iwyu] Handle regressions in libLLVM header include
Running iwyu-diff on LLVM codebase since a96638e50ef5 detected a few regressions, fixing them.
|
| #
eefed1db |
| 17-Mar-2022 |
Matt Arsenault <[email protected]> |
RegAllocGreedy: Roll back successful recolorings on failure
This is a replacement for the original fix attempted in c46aab01c002b7a04135b8b7f1f52d8c9ae23a58.
This fixes "overlapping insert" asserti
RegAllocGreedy: Roll back successful recolorings on failure
This is a replacement for the original fix attempted in c46aab01c002b7a04135b8b7f1f52d8c9ae23a58.
This fixes "overlapping insert" assertion failures when trying to unwind an unsuccessful recoloring attempt.
The problem would occur when there are multiple recoloring candidates which recursively required recoloring. If one recoloring candidate was successfully recolored at one level, and the next recoloring candidate was unsuccessful, we would not roll back the first candidates successful recoloring. The forgotten successful recoloring may have been assigned to something that conflicts with a register that needs to be restored in a parent recoloring attempt.
See the testcase added in issue48473 for a more concrete example with explanation.
show more ...
|
| #
9a2798c7 |
| 05-Apr-2022 |
Max Kazantsev <[email protected]> |
[CodeGen][NFC] Hoist budget check out of loop
Less computations & early exit if we know for sure that the limit will be exceeded.
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2 |
|
| #
395f8ccf |
| 28-Feb-2022 |
Matt Arsenault <[email protected]> |
RegAllocGreedy: Fix typo
|
| #
8d66603a |
| 17-Mar-2022 |
Matt Arsenault <[email protected]> |
Revert "RegAllocGreedy: Fix last chance recolor assert in impossible case"
This reverts commit c46aab01c002b7a04135b8b7f1f52d8c9ae23a58.
This evidently blocks compiling in some cases that used to w
Revert "RegAllocGreedy: Fix last chance recolor assert in impossible case"
This reverts commit c46aab01c002b7a04135b8b7f1f52d8c9ae23a58.
This evidently blocks compiling in some cases that used to work before. I'm also not fully convinced this is the correct place to fix this problem.
show more ...
|
| #
989f1c72 |
| 15-Mar-2022 |
serge-sans-paille <[email protected]> |
Cleanup codegen includes
This is a (fixed) recommit of https://reviews.llvm.org/D121169
after: 1061034926 before: 1063332844
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-in
Cleanup codegen includes
This is a (fixed) recommit of https://reviews.llvm.org/D121169
after: 1061034926 before: 1063332844
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup Differential Revision: https://reviews.llvm.org/D121681
show more ...
|
| #
9286786e |
| 14-Mar-2022 |
Kazu Hirata <[email protected]> |
[CodeGen] Remove an unused variable introduced in D121128
|
| #
294eca35 |
| 07-Mar-2022 |
Mircea Trofin <[email protected]> |
[regalloc] Remove -consider-local-interval-cost
Discussed extensively on D98232. The functionality introduced in D35816 never worked correctly. In D98232, it was fixed, but, as it was introducing a
[regalloc] Remove -consider-local-interval-cost
Discussed extensively on D98232. The functionality introduced in D35816 never worked correctly. In D98232, it was fixed, but, as it was introducing a large compile-time regression, and the value of the original patch was called into doubt, we disabled it by default everywhere. A year later, it appears that caused no grief, so it seems safe to remove the disabled code.
This should be accompanied by re-opening bug 26810.
Differential Revision: https://reviews.llvm.org/D121128
show more ...
|
| #
ed98c1b3 |
| 09-Mar-2022 |
serge-sans-paille <[email protected]> |
Cleanup includes: DebugInfo & CodeGen
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup Differential Revision: https://reviews.llvm.org/D121332
|
| #
a278250b |
| 10-Mar-2022 |
Nico Weber <[email protected]> |
Revert "Cleanup codegen includes"
This reverts commit 7f230feeeac8a67b335f52bd2e900a05c6098f20. Breaks CodeGenCUDA/link-device-bitcode.cu in check-clang, and many LLVM tests, see comments on https:/
Revert "Cleanup codegen includes"
This reverts commit 7f230feeeac8a67b335f52bd2e900a05c6098f20. Breaks CodeGenCUDA/link-device-bitcode.cu in check-clang, and many LLVM tests, see comments on https://reviews.llvm.org/D121169
show more ...
|
| #
7f230fee |
| 07-Mar-2022 |
serge-sans-paille <[email protected]> |
Cleanup codegen includes
after: 1061034926 before: 1063332844
Differential Revision: https://reviews.llvm.org/D121169
|
| #
6f9640d6 |
| 01-Mar-2022 |
Vasileios Porpodas <[email protected]> |
[RegAlloc] Add a complexity limit in growRegion() to cap compilation time.
growRegion() does not scale in code with BBs with a very large number of edges. In such code growRegion() becomes a compile
[RegAlloc] Add a complexity limit in growRegion() to cap compilation time.
growRegion() does not scale in code with BBs with a very large number of edges. In such code growRegion() becomes a compile-time bottleneck, consuming 60% of the total compilation time. This patch adds a limit to the complexity of growRegion() by incrementing a counter in each iteration. We bail out once the limit is reached.
Differential Revision: https://reviews.llvm.org/D120752
show more ...
|