diff options
author | Derek Schuff <dschuff@chromium.org> | 2017-06-28 12:05:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-28 12:05:27 -0700 |
commit | e2c08d42ab0ffc05d980ae2d34fee0e77b201134 (patch) | |
tree | 4b70d7469df7fdd4ee70abf42534a2f685da4704 /test | |
parent | 14bcc443282146cb85ef2798c36fcb2fe6fa74fa (diff) | |
download | binaryen-e2c08d42ab0ffc05d980ae2d34fee0e77b201134.tar.gz binaryen-e2c08d42ab0ffc05d980ae2d34fee0e77b201134.tar.bz2 binaryen-e2c08d42ab0ffc05d980ae2d34fee0e77b201134.zip |
Add atomic loads and stores (#1077)
Add IR, wast and binary support for atomic loads and stores.
Currently all IR generated by means other than parsing wast and binary files always generates non-atomic accesses, and optimizations have not yet been made aware of atomics, so they are certainly not ready to be used yet.
Diffstat (limited to 'test')
-rw-r--r-- | test/atomics.wast | 71 | ||||
-rw-r--r-- | test/atomics.wast.from-wast | 71 | ||||
-rw-r--r-- | test/atomics.wast.fromBinary | 74 | ||||
-rw-r--r-- | test/atomics.wast.fromBinary.noDebugInfo | 74 |
4 files changed, 290 insertions, 0 deletions
diff --git a/test/atomics.wast b/test/atomics.wast new file mode 100644 index 000000000..af78b98d5 --- /dev/null +++ b/test/atomics.wast @@ -0,0 +1,71 @@ +(module + (type $0 (func)) + (memory $0 23 256 shared) + (func $atomics (type $0) + (local $0 i32) + (local $1 i64) + (drop + (i32.atomic.load8_u offset=4 + (get_local $0) + ) + ) + (drop + (i32.atomic.load16_u offset=4 + (get_local $0) + ) + ) + (drop + (i32.atomic.load offset=4 + (get_local $0) + ) + ) + (drop + (i64.atomic.load8_u + (get_local $0) + ) + ) + (drop + (i64.atomic.load16_u + (get_local $0) + ) + ) + (drop + (i64.atomic.load32_u + (get_local $0) + ) + ) + (drop + (i64.atomic.load + (get_local $0) + ) + ) + (i32.atomic.store offset=4 + (get_local $0) + (get_local $0) + ) + (i32.atomic.store8 offset=4 + (get_local $0) + (get_local $0) + ) + (i32.atomic.store16 offset=4 + (get_local $0) + (get_local $0) + ) + (i64.atomic.store offset=4 + (get_local $0) + (get_local $1) + ) + (i64.atomic.store8 offset=4 + (get_local $0) + (get_local $1) + ) + (i64.atomic.store16 offset=4 + (get_local $0) + (get_local $1) + ) + (i64.atomic.store32 offset=4 + (get_local $0) + (get_local $1) + ) + ) +) diff --git a/test/atomics.wast.from-wast b/test/atomics.wast.from-wast new file mode 100644 index 000000000..af78b98d5 --- /dev/null +++ b/test/atomics.wast.from-wast @@ -0,0 +1,71 @@ +(module + (type $0 (func)) + (memory $0 23 256 shared) + (func $atomics (type $0) + (local $0 i32) + (local $1 i64) + (drop + (i32.atomic.load8_u offset=4 + (get_local $0) + ) + ) + (drop + (i32.atomic.load16_u offset=4 + (get_local $0) + ) + ) + (drop + (i32.atomic.load offset=4 + (get_local $0) + ) + ) + (drop + (i64.atomic.load8_u + (get_local $0) + ) + ) + (drop + (i64.atomic.load16_u + (get_local $0) + ) + ) + (drop + (i64.atomic.load32_u + (get_local $0) + ) + ) + (drop + (i64.atomic.load + (get_local $0) + ) + ) + (i32.atomic.store offset=4 + (get_local $0) + (get_local $0) + ) + (i32.atomic.store8 offset=4 + (get_local $0) + (get_local $0) + ) + (i32.atomic.store16 offset=4 + (get_local $0) + (get_local $0) + ) + (i64.atomic.store offset=4 + (get_local $0) + (get_local $1) + ) + (i64.atomic.store8 offset=4 + (get_local $0) + (get_local $1) + ) + (i64.atomic.store16 offset=4 + (get_local $0) + (get_local $1) + ) + (i64.atomic.store32 offset=4 + (get_local $0) + (get_local $1) + ) + ) +) diff --git a/test/atomics.wast.fromBinary b/test/atomics.wast.fromBinary new file mode 100644 index 000000000..95c5473e2 --- /dev/null +++ b/test/atomics.wast.fromBinary @@ -0,0 +1,74 @@ +(module + (type $0 (func)) + (memory $0 23 256 shared) + (func $atomics (type $0) + (local $var$0 i32) + (local $var$1 i64) + (block $label$0 + (drop + (i32.atomic.load8_u offset=4 + (get_local $var$0) + ) + ) + (drop + (i32.atomic.load16_u offset=4 + (get_local $var$0) + ) + ) + (drop + (i32.atomic.load offset=4 + (get_local $var$0) + ) + ) + (drop + (i64.atomic.load8_u + (get_local $var$0) + ) + ) + (drop + (i64.atomic.load16_u + (get_local $var$0) + ) + ) + (drop + (i64.atomic.load32_u + (get_local $var$0) + ) + ) + (drop + (i64.atomic.load + (get_local $var$0) + ) + ) + (i32.atomic.store offset=4 + (get_local $var$0) + (get_local $var$0) + ) + (i32.atomic.store8 offset=4 + (get_local $var$0) + (get_local $var$0) + ) + (i32.atomic.store16 offset=4 + (get_local $var$0) + (get_local $var$0) + ) + (i64.atomic.store offset=4 + (get_local $var$0) + (get_local $var$1) + ) + (i64.atomic.store8 offset=4 + (get_local $var$0) + (get_local $var$1) + ) + (i64.atomic.store16 offset=4 + (get_local $var$0) + (get_local $var$1) + ) + (i64.atomic.store32 offset=4 + (get_local $var$0) + (get_local $var$1) + ) + ) + ) +) + diff --git a/test/atomics.wast.fromBinary.noDebugInfo b/test/atomics.wast.fromBinary.noDebugInfo new file mode 100644 index 000000000..279ef79a6 --- /dev/null +++ b/test/atomics.wast.fromBinary.noDebugInfo @@ -0,0 +1,74 @@ +(module + (type $0 (func)) + (memory $0 23 256 shared) + (func $0 (type $0) + (local $var$0 i32) + (local $var$1 i64) + (block $label$0 + (drop + (i32.atomic.load8_u offset=4 + (get_local $var$0) + ) + ) + (drop + (i32.atomic.load16_u offset=4 + (get_local $var$0) + ) + ) + (drop + (i32.atomic.load offset=4 + (get_local $var$0) + ) + ) + (drop + (i64.atomic.load8_u + (get_local $var$0) + ) + ) + (drop + (i64.atomic.load16_u + (get_local $var$0) + ) + ) + (drop + (i64.atomic.load32_u + (get_local $var$0) + ) + ) + (drop + (i64.atomic.load + (get_local $var$0) + ) + ) + (i32.atomic.store offset=4 + (get_local $var$0) + (get_local $var$0) + ) + (i32.atomic.store8 offset=4 + (get_local $var$0) + (get_local $var$0) + ) + (i32.atomic.store16 offset=4 + (get_local $var$0) + (get_local $var$0) + ) + (i64.atomic.store offset=4 + (get_local $var$0) + (get_local $var$1) + ) + (i64.atomic.store8 offset=4 + (get_local $var$0) + (get_local $var$1) + ) + (i64.atomic.store16 offset=4 + (get_local $var$0) + (get_local $var$1) + ) + (i64.atomic.store32 offset=4 + (get_local $var$0) + (get_local $var$1) + ) + ) + ) +) + |