summaryrefslogtreecommitdiff
path: root/test/binaryen.js/atomics.js
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2017-11-21 00:19:12 +0100
committerAlon Zakai <alonzakai@gmail.com>2017-11-20 15:19:12 -0800
commit07c54750eb626ea7434341e439f6cee75efbf4b5 (patch)
treeedfd9c82133ece95fdf702f222cf561afafb1f25 /test/binaryen.js/atomics.js
parenta6c4f10233c0caeb0503960d90aa36a2dd76ed64 (diff)
downloadbinaryen-07c54750eb626ea7434341e439f6cee75efbf4b5.tar.gz
binaryen-07c54750eb626ea7434341e439f6cee75efbf4b5.tar.bz2
binaryen-07c54750eb626ea7434341e439f6cee75efbf4b5.zip
Add atomic load/store to binaryen-c/.js (#1298)
Diffstat (limited to 'test/binaryen.js/atomics.js')
-rw-r--r--test/binaryen.js/atomics.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/binaryen.js/atomics.js b/test/binaryen.js/atomics.js
new file mode 100644
index 000000000..a3880902f
--- /dev/null
+++ b/test/binaryen.js/atomics.js
@@ -0,0 +1,63 @@
+var module = Binaryen.parseText(`
+(module
+ (memory $0 (shared 1 1))
+)
+`);
+
+var signature = module.addFunctionType("v", Binaryen.none, []);
+
+// i32/i64.atomic.load/store
+module.addFunction("main", signature, [], module.block("", [
+ // i32
+ module.i32.atomic.store(0,
+ module.i32.const(0),
+ module.i32.atomic.load(0,
+ module.i32.const(0)
+ )
+ ),
+ // i32 as u8
+ module.i32.atomic.store8(0,
+ module.i32.const(0),
+ module.i32.atomic.load8_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // i32 as u16
+ module.i32.atomic.store16(0,
+ module.i32.const(0),
+ module.i32.atomic.load16_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // i64
+ module.i64.atomic.store(0,
+ module.i32.const(0),
+ module.i64.atomic.load(0,
+ module.i32.const(0)
+ )
+ ),
+ // i64 as u8
+ module.i64.atomic.store8(0,
+ module.i32.const(0),
+ module.i64.atomic.load8_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // i64 as u16
+ module.i64.atomic.store16(0,
+ module.i32.const(0),
+ module.i64.atomic.load16_u(0,
+ module.i32.const(0)
+ )
+ ),
+ // i64 as u32
+ module.i64.atomic.store32(0,
+ module.i32.const(0),
+ module.i64.atomic.load32_u(0,
+ module.i32.const(0)
+ )
+ )
+]));
+
+module.validate();
+console.log(module.emitText());