Expose MemoryOrder enums for atomic operations
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 146a908..331fb9d 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -419,6 +419,18 @@
   return static_cast<BinaryenExternalKind>(ExternalKind::Tag);
 }
 
+// MemoryOrder for atomic operations
+
+BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderUnordered(void) {
+  return static_cast<BinaryenMemoryOrder>(MemoryOrder::Unordered);
+}
+BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderSeqCst(void) {
+  return static_cast<BinaryenMemoryOrder>(MemoryOrder::SeqCst);
+}
+BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderAcqRel(void) {
+  return static_cast<BinaryenMemoryOrder>(MemoryOrder::AcqRel);
+}
+
 // Features
 
 BinaryenFeatures BinaryenFeatureMVP(void) {
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index f76741b..1337baf 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -203,6 +203,14 @@
 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 82a6695..1fee8df 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -157,6 +157,15 @@
     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 5c36d5b..abf5297 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -65,7 +65,7 @@
   }
 };
 
-enum class MemoryOrder {
+enum class MemoryOrder : uint8_t {
   Unordered,
   SeqCst,
   AcqRel,