diff options
author | Adam Nemet <anemet@apple.com> | 2016-03-24 04:28:47 +0000 |
---|---|---|
committer | Adam Nemet <anemet@apple.com> | 2016-03-24 04:28:47 +0000 |
commit | 279784ffc4e48fa7da8bd2c57ee0e31789a1bed1 (patch) | |
tree | ec20b6857461d3d4efec40c558d029cd481220a1 /llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp | |
parent | 972bea8a2e56cd3651e79a6080ad94cfeb8f887f (diff) | |
download | bcm5719-llvm-279784ffc4e48fa7da8bd2c57ee0e31789a1bed1.tar.gz bcm5719-llvm-279784ffc4e48fa7da8bd2c57ee0e31789a1bed1.zip |
[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
Diffstat (limited to 'llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions