summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWeiming Zhao <weimingz@codeaurora.org>2013-11-12 21:42:50 +0000
committerWeiming Zhao <weimingz@codeaurora.org>2013-11-12 21:42:50 +0000
commit87bb4920e9a121e437d3d9abf8426706bdaec6ca (patch)
tree6c46bd11712e821ad4ecefbfee838cc34c051fbb
parent8eaf1543e58b6d0832bb9852ee6fa93915c2aa3b (diff)
downloadbcm5719-llvm-87bb4920e9a121e437d3d9abf8426706bdaec6ca.tar.gz
bcm5719-llvm-87bb4920e9a121e437d3d9abf8426706bdaec6ca.zip
add intrinsics: __builtin_arm_{dmb,dsb} for ARM
llvm-svn: 194513
-rw-r--r--clang/include/clang/Basic/BuiltinsARM.def4
-rw-r--r--clang/lib/Sema/SemaChecking.cpp2
-rw-r--r--clang/test/CodeGen/builtins-arm.c6
3 files changed, 11 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/BuiltinsARM.def b/clang/include/clang/Basic/BuiltinsARM.def
index 5a2b573b163..21bb892a8b9 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -61,6 +61,10 @@ BUILTIN(__builtin_arm_crc32cd, "UiUiLLUi", "nc")
// HINT
BUILTIN(__builtin_arm_sevl, "v", "")
+// Data barrier
+BUILTIN(__builtin_arm_dmb, "vUi", "nc")
+BUILTIN(__builtin_arm_dsb, "vUi", "nc")
+
// NEON
#define GET_NEON_BUILTINS
#include "clang/Basic/arm_neon.inc"
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 5fe2d03d1d1..d059001f9bb 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -624,6 +624,8 @@ bool Sema::CheckARMBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {
case ARM::BI__builtin_arm_usat: i = 1; u = 31; break;
case ARM::BI__builtin_arm_vcvtr_f:
case ARM::BI__builtin_arm_vcvtr_d: i = 1; u = 1; break;
+ case ARM::BI__builtin_arm_dmb:
+ case ARM::BI__builtin_arm_dsb: l = 0; u = 15; break;
#define GET_NEON_IMMEDIATE_CHECK
#include "clang/Basic/arm_neon.inc"
#undef GET_NEON_IMMEDIATE_CHECK
diff --git a/clang/test/CodeGen/builtins-arm.c b/clang/test/CodeGen/builtins-arm.c
index f8c7f730a9a..937e1d96259 100644
--- a/clang/test/CodeGen/builtins-arm.c
+++ b/clang/test/CodeGen/builtins-arm.c
@@ -22,5 +22,9 @@ void test_eh_return_data_regno()
void sevl() {
__builtin_arm_sevl();
}
-
// CHECK: call {{.*}} @llvm.arm.sevl
+
+void test_barrier() {
+ __builtin_arm_dmb(1); //CHECK: call {{.*}} @llvm.arm.dmb(i32 1)
+ __builtin_arm_dsb(2); //CHECK: call {{.*}} @llvm.arm.dsb(i32 2)
+}
OpenPOWER on IntegriCloud