aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorSander de Smalen <sander.desmalen@arm.com>2020-06-18 10:08:25 +0100
committerSander de Smalen <sander.desmalen@arm.com>2020-06-18 11:06:16 +0100
commit4ea8e27a642c6f97ca69cd39bbe44f7366870f6c (patch)
tree9bc9b787a3bc318254c3666dc7d91b5ed8edbfe6 /clang/lib/Sema/SemaChecking.cpp
parent108560e58c41fc70341d763b941a0d6c24c4d3a9 (diff)
downloadllvm-4ea8e27a642c6f97ca69cd39bbe44f7366870f6c.zip
llvm-4ea8e27a642c6f97ca69cd39bbe44f7366870f6c.tar.gz
llvm-4ea8e27a642c6f97ca69cd39bbe44f7366870f6c.tar.bz2
[SveEmitter] Add builtins to insert/extract subvectors from tuples (svget/svset)
For example: svint32_t svget4(svint32x4_t tuple, uint64_t imm_index) returns the subvector at `index`, which must be in range `0..3`. svint32x3_t svset3(svint32x3_t tuple, uint64_t index, svint32_t vec) returns a tuple vector with `vec` inserted into `tuple` at `index`, which must be in range `0..2`. Reviewers: c-rhodes, efriedma Reviewed By: c-rhodes Tags: #clang Differential Revision: https://reviews.llvm.org/D81464
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r--clang/lib/Sema/SemaChecking.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index b847161..821074d 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -2131,6 +2131,18 @@ bool Sema::CheckSVEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {
diag::err_rotation_argument_to_cmla))
HasError = true;
break;
+ case SVETypeFlags::ImmCheck0_1:
+ if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 1))
+ HasError = true;
+ break;
+ case SVETypeFlags::ImmCheck0_2:
+ if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 2))
+ HasError = true;
+ break;
+ case SVETypeFlags::ImmCheck0_3:
+ if (SemaBuiltinConstantArgRange(TheCall, ArgNum, 0, 3))
+ HasError = true;
+ break;
}
}