Home

LoopVectorizer: Handle strided memory accesses by versioning

Press ? to show keyboard shortcuts.
Committed
arnoldsJan 10 2014, 10:20 AM
Parents
rL198949: SCEVRewriter: Optionally interpret constants in value map as SCEVConstant
Branches
Unknown
Tags
Unknown
Subscribers
None
Projects
None
Description

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

rL198950

llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp

Loading...

llvm/trunk/test/Transforms/LoopVectorize/runtime-check-readonly.ll

Loading...

llvm/trunk/test/Transforms/LoopVectorize/version-mem-access.ll

Loading...

Add Comment