diff options
author | David Sherwood <david.sherwood@arm.com> | 2021-01-15 14:12:50 +0000 |
---|---|---|
committer | David Sherwood <david.sherwood@arm.com> | 2021-03-05 09:57:56 +0000 |
commit | fec0a0adac544aeb43da758749c463ff5151ac1e (patch) | |
tree | 1e7dd4c9b6639aa705189ff5e6a62ff8bd463254 /clang/unittests/Frontend/CompilerInvocationTest.cpp | |
parent | fcf75ae6ce20e3575b1464ce724619f38c43edd2 (diff) | |
download | llvm-fec0a0adac544aeb43da758749c463ff5151ac1e.zip llvm-fec0a0adac544aeb43da758749c463ff5151ac1e.tar.gz llvm-fec0a0adac544aeb43da758749c463ff5151ac1e.tar.bz2 |
[SVE][LoopVectorize] Add support for extracting the last lane of a scalable vector
There are certain loops like this below:
for (int i = 0; i < n; i++) {
a[i] = b[i] + 1;
*inv = a[i];
}
that can only be vectorised if we are able to extract the last lane of the
vectorised form of 'a[i]'. For fixed width vectors this already works since
we know at compile time what the final lane is, however for scalable vectors
this is a different story. This patch adds support for extracting the last
lane from a scalable vector using a runtime determined lane value. I have
added support to VPIteration for runtime-determined lanes that still permit
the caching of values. I did this by introducing a new class called VPLane,
which describes the lane we're dealing with and provides interfaces to get
both the compile-time known lane and the runtime determined value. Whilst
doing this work I couldn't find any explicit tests for extracting the last
lane values of fixed width vectors so I added tests for both scalable and
fixed width vectors.
Differential Revision: https://reviews.llvm.org/D95139
Diffstat (limited to 'clang/unittests/Frontend/CompilerInvocationTest.cpp')
0 files changed, 0 insertions, 0 deletions