forked from OSchip/llvm-project
279784ffc4
We used to only allow SCEVAddRecExpr for pointer expressions in order to be able to compute the bounds. However this is also trivially possible for loop-invariant addresses (scUnknown) since then the bounds are the address itself. Interestingly, we used allow this for the special case when the loop-invariant address happens to also be an SCEVAddRecExpr (in an outer loop). There are a couple more loops that are vectorized in SPEC after this. My guess is that the main reason we don't see more because for example a loop-invariant load is vectorized into a splat vector with several vector-inserts. This is likely to make the vectorization unprofitable. I.e. we don't notice that a later LICM will move all of this out of the loop so the cost estimate should really be 0. llvm-svn: 264243 |
||
---|---|---|
.. | ||
backward-dep-different-types.ll | ||
forward-loop-carried.ll | ||
forward-loop-independent.ll | ||
interleave-innermost.ll | ||
memcheck-for-loop-invariant.ll | ||
non-wrapping-pointer.ll | ||
nullptr.ll | ||
number-of-memchecks.ll | ||
pointer-with-unknown-bounds.ll | ||
resort-to-memchecks-only.ll | ||
reverse-memcheck-bounds.ll | ||
safe-no-checks.ll | ||
store-to-invariant-check1.ll | ||
store-to-invariant-check2.ll | ||
store-to-invariant-check3.ll | ||
stride-access-dependence.ll | ||
underlying-objects-1.ll | ||
underlying-objects-2.ll | ||
unsafe-and-rt-checks.ll | ||
wrapping-pointer-versioning.ll |