diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 146a9089f1f..331fb9df4e2 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -419,6 +419,18 @@ BinaryenExternalKind BinaryenExternalTag(void) { return static_cast(ExternalKind::Tag); } +// MemoryOrder for atomic operations + +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderUnordered(void) { + return static_cast(MemoryOrder::Unordered); +} +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderSeqCst(void) { + return static_cast(MemoryOrder::SeqCst); +} +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderAcqRel(void) { + return static_cast(MemoryOrder::AcqRel); +} + // Features BinaryenFeatures BinaryenFeatureMVP(void) { diff --git a/src/binaryen-c.h b/src/binaryen-c.h index f76741bfec7..1337baf0ed1 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -203,6 +203,14 @@ BINARYEN_API BinaryenExternalKind BinaryenExternalMemory(void); BINARYEN_API BinaryenExternalKind BinaryenExternalGlobal(void); BINARYEN_API BinaryenExternalKind BinaryenExternalTag(void); +// MemoryOrder for atomic operations + +typedef uint8_t BinaryenMemoryOrder; + +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderUnordered(void); +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderSeqCst(void); +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderAcqRel(void); + // Features. Call to get the value of each; you can cache them. Use bitwise // operators to combine and test particular features. diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 82a6695c926..1fee8dfd5af 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -157,6 +157,15 @@ function initializeConstants() { Module['ExternalKinds'][name] = Module['External' + name] = Module['_BinaryenExternal' + name](); }); + // MemoryOrder for atomic operations + Module['MemoryOrder'] = {}; + [ 'Unordered', + 'SeqCst', + 'AcqRel' + ].forEach(name => { + Module['MemoryOrder'][name] = Module['_BinaryenMemoryOrder' + name]() + }); + // Features Module['Features'] = {}; [ 'MVP', diff --git a/src/wasm.h b/src/wasm.h index 5c36d5b40b9..abf5297db8b 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -65,7 +65,7 @@ struct Address { } }; -enum class MemoryOrder { +enum class MemoryOrder : uint8_t { Unordered, SeqCst, AcqRel,