[InterleavedAccessPass] Don't increase the number of bytes loaded.
authorEli Friedman <efriedma@quicinc.com>
Thu, 28 Mar 2019 20:44:50 +0000 (20:44 +0000)
committerEli Friedman <efriedma@quicinc.com>
Thu, 28 Mar 2019 20:44:50 +0000 (20:44 +0000)
commit96f295e23bed5b717313f41fb71d81e8f1d49090
treee95da9d1d760160bbbcfc0947f6e1376de839ef6
parentc87869ebea000dd6483de7c7451cb36c1d36f866
[InterleavedAccessPass] Don't increase the number of bytes loaded.

Even if the interleaving transform would otherwise be legal, we shouldn't
introduce an interleaved load that is wider than the original load: it might
have undefined behavior.

It might be possible to perform some sort of mask-narrowing transform in
some cases (using a narrower interleaved load, then extending the
results using shufflevectors).  But I haven't tried to implement that,
at least for now.

Fixes https://bugs.llvm.org/show_bug.cgi?id=41245 .

Differential Revision: https://reviews.llvm.org/D59954

llvm-svn: 357212
llvm/lib/CodeGen/InterleavedAccessPass.cpp
llvm/test/Transforms/InterleavedAccess/ARM/interleaved-accesses.ll