This distributes reductions based on the relative offset of loads, if one is found from their operands. Given chains of reductions this will then sort them in ascending load order, which in turn can help simple prefetches latch on to increasing strides more easily.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Very nice idea and looks good to me other than an possible change I thought of.
llvm/lib/Target/ARM/ARMISelLowering.cpp | ||
---|---|---|
13160 | Do you think there's a way to combine the checking if each operand is before the other one into a single call? Perhaps IsKnownLoadBefore could be renamed to something like GetFirstLoad, return true if one is before the other and take X and N0 as reference arguments? It might have a performance benefit over running the check twice but may be unnecessary. Your call. |
Do you think there's a way to combine the checking if each operand is before the other one into a single call? Perhaps IsKnownLoadBefore could be renamed to something like GetFirstLoad, return true if one is before the other and take X and N0 as reference arguments? It might have a performance benefit over running the check twice but may be unnecessary. Your call.