LoopVectorizer: Handle strided memory accesses by versioning

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

Details

Committed
arnoldsJan 10 2014, 10:20 AM
Parents
rL198949: SCEVRewriter: Optionally interpret constants in value map as SCEVConstant
Branches
Unknown
Tags
Unknown