diff options
author | Heejin Ahn <aheejin@gmail.com> | 2019-08-27 16:40:59 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-27 16:40:59 -0700 |
commit | cb0b31a2d185f18662814c9f3c9158b2eea74760 (patch) | |
tree | 4fe23ff2abb08af7a804f6e6755b07454f79f45d /src/wasm-stack.h | |
parent | f070e8c10a15a02735fbd9b88c4c569a8c786933 (diff) | |
download | binaryen-cb0b31a2d185f18662814c9f3c9158b2eea74760.tar.gz binaryen-cb0b31a2d185f18662814c9f3c9158b2eea74760.tar.bz2 binaryen-cb0b31a2d185f18662814c9f3c9158b2eea74760.zip |
Add atomic.fence instruction (#2307)
This adds `atomic.fence` instruction:
https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md#fence-operator
This also fix bugs in `atomic.wait` and `atomic.notify` instructions in
binaryen.js and adds tests for them.
Diffstat (limited to 'src/wasm-stack.h')
-rw-r--r-- | src/wasm-stack.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/wasm-stack.h b/src/wasm-stack.h index 562a00684..3a7d7c38e 100644 --- a/src/wasm-stack.h +++ b/src/wasm-stack.h @@ -103,6 +103,7 @@ public: void visitAtomicCmpxchg(AtomicCmpxchg* curr); void visitAtomicWait(AtomicWait* curr); void visitAtomicNotify(AtomicNotify* curr); + void visitAtomicFence(AtomicFence* curr); void visitSIMDExtract(SIMDExtract* curr); void visitSIMDReplace(SIMDReplace* curr); void visitSIMDShuffle(SIMDShuffle* curr); @@ -178,6 +179,7 @@ public: void visitAtomicCmpxchg(AtomicCmpxchg* curr); void visitAtomicWait(AtomicWait* curr); void visitAtomicNotify(AtomicNotify* curr); + void visitAtomicFence(AtomicFence* curr); void visitSIMDExtract(SIMDExtract* curr); void visitSIMDReplace(SIMDReplace* curr); void visitSIMDShuffle(SIMDShuffle* curr); @@ -526,6 +528,11 @@ void BinaryenIRWriter<SubType>::visitAtomicNotify(AtomicNotify* curr) { } template<typename SubType> +void BinaryenIRWriter<SubType>::visitAtomicFence(AtomicFence* curr) { + emit(curr); +} + +template<typename SubType> void BinaryenIRWriter<SubType>::visitSIMDExtract(SIMDExtract* curr) { visit(curr->vec); if (curr->type == unreachable) { |