From 00aa81b4df8ba6f96077a3de8f4b32b03d0e3a7e Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Thu, 2 Aug 2018 21:44:40 +0000 Subject: [WebAssembly] Support for atomic.wait / atomic.wake builtins Summary: Add support for atomic.wait / atomic.wake builtins based on the Wasm thread proposal. Reviewers: dschuff Subscribers: sbc100, jgravelle-google, sunfish, cfe-commits Differential Revision: https://reviews.llvm.org/D49396 llvm-svn: 338771 --- clang/test/CodeGen/builtins-wasm.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'clang/test/CodeGen/builtins-wasm.c') diff --git a/clang/test/CodeGen/builtins-wasm.c b/clang/test/CodeGen/builtins-wasm.c index 1b647b56d1a..d1c5c303d4e 100644 --- a/clang/test/CodeGen/builtins-wasm.c +++ b/clang/test/CodeGen/builtins-wasm.c @@ -50,3 +50,21 @@ void f7(void) { // WEBASSEMBLY32: call void @llvm.wasm.rethrow() // WEBASSEMBLY64: call void @llvm.wasm.rethrow() } + +int f8(int *addr, int expected, long long timeout) { + return __builtin_wasm_atomic_wait_i32(addr, expected, timeout); +// WEBASSEMBLY32: call i32 @llvm.wasm.atomic.wait.i32(i32* %{{.*}}, i32 %{{.*}}, i64 %{{.*}}) +// WEBASSEMBLY64: call i32 @llvm.wasm.atomic.wait.i32(i32* %{{.*}}, i32 %{{.*}}, i64 %{{.*}}) +} + +int f9(long long *addr, long long expected, long long timeout) { + return __builtin_wasm_atomic_wait_i64(addr, expected, timeout); +// WEBASSEMBLY32: call i32 @llvm.wasm.atomic.wait.i64(i64* %{{.*}}, i64 %{{.*}}, i64 %{{.*}}) +// WEBASSEMBLY64: call i32 @llvm.wasm.atomic.wait.i64(i64* %{{.*}}, i64 %{{.*}}, i64 %{{.*}}) +} + +unsigned long long f10(int *addr, long long count) { + return __builtin_wasm_atomic_notify(addr, count); +// WEBASSEMBLY32: call i64 @llvm.wasm.atomic.notify(i32* %{{.*}}, i64 %{{.*}}) +// WEBASSEMBLY64: call i64 @llvm.wasm.atomic.notify(i32* %{{.*}}, i64 %{{.*}}) +} -- cgit v1.2.3