aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2010-06-09 01:10:23 +0000
committerNate Begeman <natebegeman@mac.com>2010-06-09 01:10:23 +0000
commit1c2a88cfaeb11227d3a6bf7204207e0c8cf6de6f (patch)
tree9dd0e5bf1c968d885f23047f43281c9cc9417122 /lib/Sema/SemaChecking.cpp
parent9b065ddabf572772991a4aadad5bf4921fac5069 (diff)
Implement transpose/zip/unzip & table lookup.
Test out some basic constant-checking. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105667 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaChecking.cpp')
-rw-r--r--lib/Sema/SemaChecking.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp
index 76407ef7a7..6e54dab113 100644
--- a/lib/Sema/SemaChecking.cpp
+++ b/lib/Sema/SemaChecking.cpp
@@ -241,7 +241,28 @@ bool Sema::CheckX86BuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {
}
bool Sema::CheckARMBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {
- // TODO: verify NEON intrinsic constant args.
+ llvm::APSInt Result;
+
+ switch (BuiltinID) {
+ case ARM::BI__builtin_neon_vget_lane_i8:
+ case ARM::BI__builtin_neon_vget_lane_i16:
+ case ARM::BI__builtin_neon_vget_lane_i32:
+ case ARM::BI__builtin_neon_vget_lane_f32:
+ case ARM::BI__builtin_neon_vget_lane_i64:
+ case ARM::BI__builtin_neon_vgetq_lane_i8:
+ case ARM::BI__builtin_neon_vgetq_lane_i16:
+ case ARM::BI__builtin_neon_vgetq_lane_i32:
+ case ARM::BI__builtin_neon_vgetq_lane_f32:
+ case ARM::BI__builtin_neon_vgetq_lane_i64:
+ // Check constant-ness first.
+ if (SemaBuiltinConstantArg(TheCall, 1, Result))
+ return true;
+ break;
+ }
+
+ // Now, range check values.
+ //unsigned lower = 0, upper = 0;
+
return false;
}