LoopVectorizer: Handle strided memory accesses by versioning
for (i = 0; i < N; ++i) A[i * Stride1] += B[i * Stride2]; We take loops like this and check that the symbolic strides 'Strided1/2' are one and drop to the scalar loop if they are not. This is currently disabled by default and hidden behind the flag 'enable-mem-access-versioning'. radar://13075509 llvm-svn: 198950
Showing
- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp 408 additions, 83 deletionsllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
- llvm/test/Transforms/LoopVectorize/runtime-check-readonly.ll 7 additions, 5 deletionsllvm/test/Transforms/LoopVectorize/runtime-check-readonly.ll
- llvm/test/Transforms/LoopVectorize/version-mem-access.ll 50 additions, 0 deletionsllvm/test/Transforms/LoopVectorize/version-mem-access.ll
Loading
Please register or sign in to comment