This patch allows us to gain all the benefits provided by
LoopLoadElimination pass to descending loops.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
This patch aids in eliminating load within a complex loop in the benchmark. The GVN LoadPRE is unable to accomplish as the case is too difficult for it. A simplified example demonstrating this loop in the benchmark would be as follows:
void f(double *U, long long i, long long n) {
#pragma clang loop vectorize(disable) unroll(disable)
for (long long k = n; k > 0; --k)
U[i * n + k] = U[i * n + k + 1];
}Comment Actions
LGTM, thanks!
| llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp | ||
|---|---|---|
| 91–93 | nit: maybe absolute distance of one? | |
nit: maybe absolute distance of one?