llvm-project/llvm/test/Analysis/LoopAccessAnalysis
Adam Nemet 279784ffc4 [LAA] Support memchecks involving loop-invariant addresses
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
2016-03-24 04:28:47 +00:00
..
backward-dep-different-types.ll [LoopAccesses] Remove unused global variables in tests 2015-04-02 04:42:51 +00:00
forward-loop-carried.ll [LAA] LLE 3/6: Rename InterestingDependence to Dependences, NFC 2015-11-03 21:39:52 +00:00
forward-loop-independent.ll [LAA] LLE 3/6: Rename InterestingDependence to Dependences, NFC 2015-11-03 21:39:52 +00:00
interleave-innermost.ll [Vectorization] Actually return from error case in isStridedPtr 2016-01-08 01:55:13 +00:00
memcheck-for-loop-invariant.ll [LAA] Support memchecks involving loop-invariant addresses 2016-03-24 04:28:47 +00:00
non-wrapping-pointer.ll [LAA] Try to prove non-wrapping of pointers if SCEV cannot 2015-06-26 17:25:43 +00:00
nullptr.ll Fix LoopAccessAnalysis when potentially nullptr check are involved 2015-11-05 05:49:43 +00:00
number-of-memchecks.ll [LAA] Add clarifying comments for the checking pointer grouping algorithm. NFC 2015-07-28 13:44:08 +00:00
pointer-with-unknown-bounds.ll [LAA] LLE 3/6: Rename InterestingDependence to Dependences, NFC 2015-11-03 21:39:52 +00:00
resort-to-memchecks-only.ll [LAA] LLE 3/6: Rename InterestingDependence to Dependences, NFC 2015-11-03 21:39:52 +00:00
reverse-memcheck-bounds.ll Fix memcheck interval ends for pointers with negative strides 2015-07-16 14:02:58 +00:00
safe-no-checks.ll [LAA] LLE 3/6: Rename InterestingDependence to Dependences, NFC 2015-11-03 21:39:52 +00:00
store-to-invariant-check1.ll [LoopAccesses] Allow analysis to complete in the presence of uniform stores 2015-04-08 17:48:40 +00:00
store-to-invariant-check2.ll [LoopAccesses] Allow analysis to complete in the presence of uniform stores 2015-04-08 17:48:40 +00:00
store-to-invariant-check3.ll [LoopAccesses] Allow analysis to complete in the presence of uniform stores 2015-04-08 17:48:40 +00:00
stride-access-dependence.ll [LAA] LLE 3/6: Rename InterestingDependence to Dependences, NFC 2015-11-03 21:39:52 +00:00
underlying-objects-1.ll [getUnderlyingOjbects] Analyze loop PHIs further to remove false positives 2015-04-23 20:09:20 +00:00
underlying-objects-2.ll [LAA] LLE 3/6: Rename InterestingDependence to Dependences, NFC 2015-11-03 21:39:52 +00:00
unsafe-and-rt-checks.ll [LAA] LLE 3/6: Rename InterestingDependence to Dependences, NFC 2015-11-03 21:39:52 +00:00
wrapping-pointer-versioning.ll [SCEV][LAA] Re-commit r260085 and r260086, this time with a fix for the memory 2016-02-08 17:02:45 +00:00