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?