Detecting the type of dependencies between blocks
enables better handling of high latencies, as
order dependencies can be differentiated from
data dependencies (in the former you don't need
to insert a wait, whereas you need in the latter).
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
| lib/Target/AMDGPU/SIMachineScheduler.cpp | ||
|---|---|---|
| 541–544 | Factor into predicate function and assert on that condition | |
| 562–563 | std::make_pair | |
| 586 | Debug printing not guarded by DEBUG. Looks like this problem existed already, so this whole block should be under DEBUG | |
| lib/Target/AMDGPU/SIMachineScheduler.h | ||
| 101 | Don't need enum keyword | |
| 124 | Return ArrayRef | |
| lib/Target/AMDGPU/SIMachineScheduler.cpp | ||
|---|---|---|
| 586 | It is in a function printDebug, protected by #ifndef NDEBUG | |
| lib/Target/AMDGPU/SIMachineScheduler.cpp | ||
|---|---|---|
| 586 | Please provide full context diff next time (-U9999999), it helps to avoid such misunderstandings. Better to use const reference to &S here. | |
| 1365 | const auto &Succ | |
| 1367 | In genereal please don't duplicate expressions. Compilers are good in CSE, but my eyes aren't :-) This can be rewritten as Height = std::min(Height, Succ.first->Height + 1) | |
| 1650 | const auto &Block | |
| 1653 | if (--BlockNumPredsLeft[Block.first->getID()] == 0) | |
Don't need enum keyword