summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/builtins-wasm.c
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2018-08-02 21:44:40 +0000
committerHeejin Ahn <aheejin@gmail.com>2018-08-02 21:44:40 +0000
commit00aa81b4df8ba6f96077a3de8f4b32b03d0e3a7e (patch)
tree7e89b01b5185da8011a3a463a998b8d99edd0809 /clang/test/CodeGen/builtins-wasm.c
parent4128cb0b6bbe921188247e8db1a0a9103f66e51f (diff)
downloadbcm5719-llvm-00aa81b4df8ba6f96077a3de8f4b32b03d0e3a7e.tar.gz
bcm5719-llvm-00aa81b4df8ba6f96077a3de8f4b32b03d0e3a7e.zip
[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
Diffstat (limited to 'clang/test/CodeGen/builtins-wasm.c')
-rw-r--r--clang/test/CodeGen/builtins-wasm.c18
1 files changed, 18 insertions, 0 deletions
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 %{{.*}})
+}
OpenPOWER on IntegriCloud