summaryrefslogtreecommitdiff
path: root/src/binaryen-c.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r--src/binaryen-c.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index d8f8163c4..a06e32d87 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -331,6 +331,9 @@ BinaryenExpressionId BinaryenAtomicWaitId(void) {
BinaryenExpressionId BinaryenAtomicNotifyId(void) {
return Expression::Id::AtomicNotifyId;
}
+BinaryenExpressionId BinaryenAtomicFenceId(void) {
+ return Expression::Id::AtomicFenceId;
+}
BinaryenExpressionId BinaryenSIMDExtractId(void) {
return Expression::Id::SIMDExtractId;
}
@@ -1466,6 +1469,15 @@ BinaryenExpressionRef BinaryenAtomicNotify(BinaryenModuleRef module,
return static_cast<Expression*>(ret);
}
+BinaryenExpressionRef BinaryenAtomicFence(BinaryenModuleRef module) {
+ auto* ret = Builder(*(Module*)module).makeAtomicFence();
+
+ if (tracing) {
+ traceExpression(ret, "BinaryenAtomicFence");
+ }
+
+ return static_cast<Expression*>(ret);
+}
BinaryenExpressionRef BinaryenSIMDExtract(BinaryenModuleRef module,
BinaryenOp op,
BinaryenExpressionRef vec,
@@ -2520,6 +2532,17 @@ BinaryenAtomicNotifyGetNotifyCount(BinaryenExpressionRef expr) {
assert(expression->is<AtomicNotify>());
return static_cast<AtomicNotify*>(expression)->notifyCount;
}
+// AtomicFence
+uint8_t BinaryenAtomicFenceGetOrder(BinaryenExpressionRef expr) {
+ if (tracing) {
+ std::cout << " BinaryenAtomicFenceGetOrder(expressions["
+ << expressions[expr] << "]);\n";
+ }
+
+ auto* expression = (Expression*)expr;
+ assert(expression->is<AtomicFence>());
+ return static_cast<AtomicFence*>(expression)->order;
+}
// SIMDExtract
BinaryenOp BinaryenSIMDExtractGetOp(BinaryenExpressionRef expr) {
if (tracing) {