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