forked from OSchip/llvm-project
f8d4afc49a
Summary: These instructions generate a vector of consecutive elements starting from a given base value and incrementing by 1, 2, 4 or 8. The `wdup` versions also wrap the values back to zero when they reach a given limit value. The instruction updates the scalar base register so that another use of the same instruction will continue the sequence from where the previous one left off. At the IR level, I've represented these instructions as a family of target-specific intrinsics with two return values (the constructed vector and the updated base). The user-facing ACLE API provides a set of intrinsics that throw away the written-back base and another set that receive it as a pointer so they can update it, plus the usual predicated versions. Because the intrinsics return two values (as do the underlying instructions), the isel has to be done in C++. This is the first family of MVE intrinsics that use the `imm_1248` immediate type in the clang Tablegen framework, so naturally, I found I'd given it the wrong C integer type. Also added some tests of the check that the immediate has a legal value, because this is the first time those particular checks have been exercised. Finally, I also had to fix a bug in MveEmitter which failed an assertion when I nested two `seq` nodes (the inner one used to extract the two values from the pair returned by the IR intrinsic, and the outer one put on by the predication multiclass). Reviewers: dmgreen, MarkMurrayARM, miyuki, ostannard Reviewed By: dmgreen Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D73357 |
||
---|---|---|
.. | ||
ABITest | ||
CIndex | ||
ClangVisualizers | ||
TableGen | ||
TestUtils | ||
VtableTest | ||
analyzer | ||
check_cfc | ||
hmaptool | ||
perf-training | ||
valgrind | ||
CaptureCmd | ||
ClangDataFormat.py | ||
CmpDriver | ||
FindSpecRefs | ||
FuzzTest | ||
bash-autocomplete.sh | ||
builtin-defines.c | ||
clangdiag.py | ||
convert_arm_neon.py | ||
creduce-clang-crash.py | ||
find-unused-diagnostics.sh | ||
make-ast-dump-check.sh | ||
modfuzz.py | ||
token-delta.py |