From 186b26d01f2876e8b4b1f0f233e13fc4c613cddc Mon Sep 17 00:00:00 2001 From: Weiming Zhao Date: Tue, 12 Nov 2013 21:42:50 +0000 Subject: [PATCH] add intrinsics: __builtin_arm_{dmb,dsb} for ARM git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194513 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/BuiltinsARM.def | 4 ++++ lib/Sema/SemaChecking.cpp | 2 ++ test/CodeGen/builtins-arm.c | 6 +++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/clang/Basic/BuiltinsARM.def b/include/clang/Basic/BuiltinsARM.def index 5a2b573b16..21bb892a8b 100644 --- a/include/clang/Basic/BuiltinsARM.def +++ b/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/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index 5fe2d03d1d..d059001f9b 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/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/test/CodeGen/builtins-arm.c b/test/CodeGen/builtins-arm.c index f8c7f730a9..937e1d9625 100644 --- a/test/CodeGen/builtins-arm.c +++ b/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) +} -- 2.40.0