Author: mgrang Date: Wed Oct 3 10:24:21 2018 New Revision: 343699 URL: http://llvm.org/viewvc/llvm-project?rev=343699&view=rev Log: [COFF, ARM64] Add _ReadWriteBarrier intrinsic
Reviewers: rnk, mstorsjo, compnerd, TomTan, haripul, javed.absar Reviewed By: rnk Subscribers: kristof.beyls, chrib, jfb, cfe-commits Differential Revision: https://reviews.llvm.org/D52809 Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def cfe/trunk/lib/CodeGen/CGBuiltin.cpp cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=343699&r1=343698&r2=343699&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original) +++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Wed Oct 3 10:24:21 2018 @@ -103,6 +103,8 @@ TARGET_HEADER_BUILTIN(_InterlockedIncrem TARGET_HEADER_BUILTIN(_InterlockedOr64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", "intrin.h", ALL_MS_LANGUAGES, "") +TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", ALL_MS_LANGUAGES, "") + #undef BUILTIN #undef LANGBUILTIN #undef TARGET_HEADER_BUILTIN Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=343699&r1=343698&r2=343699&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original) +++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Oct 3 10:24:21 2018 @@ -6581,6 +6581,10 @@ Value *CodeGenFunction::EmitAArch64Built return Builder.CreateCall(F); } + if (BuiltinID == AArch64::BI_ReadWriteBarrier) + return Builder.CreateFence(llvm::AtomicOrdering::SequentiallyConsistent, + llvm::SyncScope::SingleThread); + // CRC32 Intrinsic::ID CRCIntrinsicID = Intrinsic::not_intrinsic; switch (BuiltinID) { Modified: cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c?rev=343699&r1=343698&r2=343699&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c (original) +++ cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c Wed Oct 3 10:24:21 2018 @@ -59,3 +59,10 @@ void check__sevl(void) { // CHECK-MSVC: @llvm.aarch64.hint(i32 5) // CHECK-LINUX: error: implicit declaration of function '__sevl' + +void check_ReadWriteBarrier() { + _ReadWriteBarrier(); +} + +// CHECK-MSVC: fence syncscope("singlethread") +// CHECK-LINUX: error: implicit declaration of function '_ReadWriteBarrier' _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits