When removing barrier edges on exports then dependencies need to
be propagated.
Details
Details
- Reviewers
foad - Commits
- rG195de442daba: [AMDGPU] Strengthen export cluster ordering
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
Time | Test | |
---|---|---|
70 ms | LLVM.DebugInfo/X86::Unknown Unit Message ("") |
Event Timeline
Comment Actions
This is OK, and I can confirm it fixes some Vulkan CTS failures we were seeing.
For bonus marks:
- removeExportDependencies iterates the preds of every node. I think it could be a lot faster if it only iterated the preds and succs of export nodes.
- I still wonder if we could get the barriers right in the first place, perhaps by pretending that each kind of export instruction writes to a fake address space and teaching alias analysis that those address spaces are disjoint.
Comment Actions
Address (1) by only processing on export nodes.
Since there is no way to remove a successor directly, use the
existing removeExportDependencies code and simply apply it to
successors.
Comment Actions
Thanks. For a future cleanup it should be pretty easy to implement SUnit::removeSucc.