[MVE] Don't try to unroll vectorised MVE loops
authorDavid Green <david.green@arm.com>
Sun, 11 Aug 2019 08:53:18 +0000 (08:53 +0000)
committerDavid Green <david.green@arm.com>
Sun, 11 Aug 2019 08:53:18 +0000 (08:53 +0000)
commit11c4602fce16c22858de764bff21be4160d323af
tree9a1d2fa121501e93b09c8e75fe593f172771207b
parent44f8d635e20429365782b831ef59ee0903982d02
[MVE] Don't try to unroll vectorised MVE loops

Due to the nature of the beat system in the MVE architecture, along with tail
predication and low-overhead loops, unrolling has less benefit compared to
normal loops. You can not, for example, hide the latency of a load with other
instructions as you can for scalar code. Preventing unrolling also makes the
code easier to read and reason about.

So if a loop contains vector code, don't enable the runtime unrolling. At least
for the time being.

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

llvm-svn: 368530
llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
llvm/test/Transforms/LoopUnroll/ARM/mve-nounroll.ll [new file with mode: 0644]