diff options
Diffstat (limited to 'test/binaryen.js/atomics.js')
-rw-r--r-- | test/binaryen.js/atomics.js | 158 |
1 files changed, 75 insertions, 83 deletions
diff --git a/test/binaryen.js/atomics.js b/test/binaryen.js/atomics.js index 1374da804..bd4b898bd 100644 --- a/test/binaryen.js/atomics.js +++ b/test/binaryen.js/atomics.js @@ -1,95 +1,87 @@ -function assert(x) { - if (!x) throw 'error!'; -} - var wast = ` (module (memory $0 (shared 1 1)) ) `; -function test() { - var module = Binaryen.parseText(wast); +var module = binaryen.parseText(wast); - // i32/i64.atomic.load/store - module.addFunction("main", Binaryen.none, Binaryen.none, [], 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, +// i32/i64.atomic.load/store +module.addFunction("main", binaryen.none, binaryen.none, [], 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) + ) + ), + // wait and notify + module.drop( + module.i32.atomic.wait( 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.i64.const(0) + ) + ), + module.drop( + module.i64.atomic.wait( module.i32.const(0), - module.i64.atomic.load8_u(0, - module.i32.const(0) - ) - ), - // i64 as u16 - module.i64.atomic.store16(0, + module.i64.const(0), + module.i64.const(0) + ) + ), + module.drop( + module.atomic.notify( 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) - ) - ), - // wait and notify - module.drop( - module.i32.atomic.wait( - module.i32.const(0), - module.i32.const(0), - module.i64.const(0) - ) - ), - module.drop( - module.i64.atomic.wait( - module.i32.const(0), - module.i64.const(0), - module.i64.const(0) - ) - ), - module.drop( - module.atomic.notify( - module.i32.const(0), - module.i32.const(0) - ) - ), - // fence - module.atomic.fence() - ])); - - module.setFeatures(Binaryen.Features.Atomics); - assert(module.validate()); - console.log(module.emitText()); -} + module.i32.const(0) + ) + ), + // fence + module.atomic.fence() +])); -Binaryen.ready.then(test); +module.setFeatures(binaryen.Features.Atomics); +assert(module.validate()); +console.log(module.emitText()); |