summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.h1927
1 files changed, 1022 insertions, 905 deletions
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 427edf230..8667f7a6d 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -49,6 +49,12 @@
#include "compiler-support.h"
+#if defined(_MSC_VER) && !defined(BUILD_STATIC_LIBRARY)
+#define BINARYEN_API __declspec(dllexport)
+#else
+#define BINARYEN_API
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -68,18 +74,18 @@ typedef uint32_t BinaryenIndex;
typedef uint32_t BinaryenType;
-BinaryenType BinaryenTypeNone(void);
-BinaryenType BinaryenTypeInt32(void);
-BinaryenType BinaryenTypeInt64(void);
-BinaryenType BinaryenTypeFloat32(void);
-BinaryenType BinaryenTypeFloat64(void);
-BinaryenType BinaryenTypeVec128(void);
-BinaryenType BinaryenTypeAnyref(void);
-BinaryenType BinaryenTypeExnref(void);
-BinaryenType BinaryenTypeUnreachable(void);
+BINARYEN_API BinaryenType BinaryenTypeNone(void);
+BINARYEN_API BinaryenType BinaryenTypeInt32(void);
+BINARYEN_API BinaryenType BinaryenTypeInt64(void);
+BINARYEN_API BinaryenType BinaryenTypeFloat32(void);
+BINARYEN_API BinaryenType BinaryenTypeFloat64(void);
+BINARYEN_API BinaryenType BinaryenTypeVec128(void);
+BINARYEN_API BinaryenType BinaryenTypeAnyref(void);
+BINARYEN_API BinaryenType BinaryenTypeExnref(void);
+BINARYEN_API BinaryenType BinaryenTypeUnreachable(void);
// Not a real type. Used as the last parameter to BinaryenBlock to let
// the API figure out the type instead of providing one.
-BinaryenType BinaryenTypeAuto(void);
+BINARYEN_API BinaryenType BinaryenTypeAuto(void);
WASM_DEPRECATED BinaryenType BinaryenNone(void);
WASM_DEPRECATED BinaryenType BinaryenInt32(void);
@@ -92,76 +98,76 @@ WASM_DEPRECATED BinaryenType BinaryenUndefined(void);
typedef uint32_t BinaryenExpressionId;
-BinaryenExpressionId BinaryenInvalidId(void);
-BinaryenExpressionId BinaryenBlockId(void);
-BinaryenExpressionId BinaryenIfId(void);
-BinaryenExpressionId BinaryenLoopId(void);
-BinaryenExpressionId BinaryenBreakId(void);
-BinaryenExpressionId BinaryenSwitchId(void);
-BinaryenExpressionId BinaryenCallId(void);
-BinaryenExpressionId BinaryenCallIndirectId(void);
-BinaryenExpressionId BinaryenLocalGetId(void);
-BinaryenExpressionId BinaryenLocalSetId(void);
-BinaryenExpressionId BinaryenGlobalGetId(void);
-BinaryenExpressionId BinaryenGlobalSetId(void);
-BinaryenExpressionId BinaryenLoadId(void);
-BinaryenExpressionId BinaryenStoreId(void);
-BinaryenExpressionId BinaryenConstId(void);
-BinaryenExpressionId BinaryenUnaryId(void);
-BinaryenExpressionId BinaryenBinaryId(void);
-BinaryenExpressionId BinaryenSelectId(void);
-BinaryenExpressionId BinaryenDropId(void);
-BinaryenExpressionId BinaryenReturnId(void);
-BinaryenExpressionId BinaryenHostId(void);
-BinaryenExpressionId BinaryenNopId(void);
-BinaryenExpressionId BinaryenUnreachableId(void);
-BinaryenExpressionId BinaryenAtomicCmpxchgId(void);
-BinaryenExpressionId BinaryenAtomicRMWId(void);
-BinaryenExpressionId BinaryenAtomicWaitId(void);
-BinaryenExpressionId BinaryenAtomicNotifyId(void);
-BinaryenExpressionId BinaryenAtomicFenceId(void);
-BinaryenExpressionId BinaryenSIMDExtractId(void);
-BinaryenExpressionId BinaryenSIMDReplaceId(void);
-BinaryenExpressionId BinaryenSIMDShuffleId(void);
-BinaryenExpressionId BinaryenSIMDTernaryId(void);
-BinaryenExpressionId BinaryenSIMDShiftId(void);
-BinaryenExpressionId BinaryenMemoryInitId(void);
-BinaryenExpressionId BinaryenDataDropId(void);
-BinaryenExpressionId BinaryenMemoryCopyId(void);
-BinaryenExpressionId BinaryenMemoryFillId(void);
-BinaryenExpressionId BinaryenTryId(void);
-BinaryenExpressionId BinaryenThrowId(void);
-BinaryenExpressionId BinaryenRethrowId(void);
-BinaryenExpressionId BinaryenBrOnExnId(void);
-BinaryenExpressionId BinaryenPushId(void);
-BinaryenExpressionId BinaryenPopId(void);
+BINARYEN_API BinaryenExpressionId BinaryenInvalidId(void);
+BINARYEN_API BinaryenExpressionId BinaryenBlockId(void);
+BINARYEN_API BinaryenExpressionId BinaryenIfId(void);
+BINARYEN_API BinaryenExpressionId BinaryenLoopId(void);
+BINARYEN_API BinaryenExpressionId BinaryenBreakId(void);
+BINARYEN_API BinaryenExpressionId BinaryenSwitchId(void);
+BINARYEN_API BinaryenExpressionId BinaryenCallId(void);
+BINARYEN_API BinaryenExpressionId BinaryenCallIndirectId(void);
+BINARYEN_API BinaryenExpressionId BinaryenLocalGetId(void);
+BINARYEN_API BinaryenExpressionId BinaryenLocalSetId(void);
+BINARYEN_API BinaryenExpressionId BinaryenGlobalGetId(void);
+BINARYEN_API BinaryenExpressionId BinaryenGlobalSetId(void);
+BINARYEN_API BinaryenExpressionId BinaryenLoadId(void);
+BINARYEN_API BinaryenExpressionId BinaryenStoreId(void);
+BINARYEN_API BinaryenExpressionId BinaryenConstId(void);
+BINARYEN_API BinaryenExpressionId BinaryenUnaryId(void);
+BINARYEN_API BinaryenExpressionId BinaryenBinaryId(void);
+BINARYEN_API BinaryenExpressionId BinaryenSelectId(void);
+BINARYEN_API BinaryenExpressionId BinaryenDropId(void);
+BINARYEN_API BinaryenExpressionId BinaryenReturnId(void);
+BINARYEN_API BinaryenExpressionId BinaryenHostId(void);
+BINARYEN_API BinaryenExpressionId BinaryenNopId(void);
+BINARYEN_API BinaryenExpressionId BinaryenUnreachableId(void);
+BINARYEN_API BinaryenExpressionId BinaryenAtomicCmpxchgId(void);
+BINARYEN_API BinaryenExpressionId BinaryenAtomicRMWId(void);
+BINARYEN_API BinaryenExpressionId BinaryenAtomicWaitId(void);
+BINARYEN_API BinaryenExpressionId BinaryenAtomicNotifyId(void);
+BINARYEN_API BinaryenExpressionId BinaryenAtomicFenceId(void);
+BINARYEN_API BinaryenExpressionId BinaryenSIMDExtractId(void);
+BINARYEN_API BinaryenExpressionId BinaryenSIMDReplaceId(void);
+BINARYEN_API BinaryenExpressionId BinaryenSIMDShuffleId(void);
+BINARYEN_API BinaryenExpressionId BinaryenSIMDTernaryId(void);
+BINARYEN_API BinaryenExpressionId BinaryenSIMDShiftId(void);
+BINARYEN_API BinaryenExpressionId BinaryenMemoryInitId(void);
+BINARYEN_API BinaryenExpressionId BinaryenDataDropId(void);
+BINARYEN_API BinaryenExpressionId BinaryenMemoryCopyId(void);
+BINARYEN_API BinaryenExpressionId BinaryenMemoryFillId(void);
+BINARYEN_API BinaryenExpressionId BinaryenTryId(void);
+BINARYEN_API BinaryenExpressionId BinaryenThrowId(void);
+BINARYEN_API BinaryenExpressionId BinaryenRethrowId(void);
+BINARYEN_API BinaryenExpressionId BinaryenBrOnExnId(void);
+BINARYEN_API BinaryenExpressionId BinaryenPushId(void);
+BINARYEN_API BinaryenExpressionId BinaryenPopId(void);
// External kinds (call to get the value of each; you can cache them)
typedef uint32_t BinaryenExternalKind;
-BinaryenExternalKind BinaryenExternalFunction(void);
-BinaryenExternalKind BinaryenExternalTable(void);
-BinaryenExternalKind BinaryenExternalMemory(void);
-BinaryenExternalKind BinaryenExternalGlobal(void);
-BinaryenExternalKind BinaryenExternalEvent(void);
+BINARYEN_API BinaryenExternalKind BinaryenExternalFunction(void);
+BINARYEN_API BinaryenExternalKind BinaryenExternalTable(void);
+BINARYEN_API BinaryenExternalKind BinaryenExternalMemory(void);
+BINARYEN_API BinaryenExternalKind BinaryenExternalGlobal(void);
+BINARYEN_API BinaryenExternalKind BinaryenExternalEvent(void);
// Features. Call to get the value of each; you can cache them. Use bitwise
// operators to combine and test particular features.
typedef uint32_t BinaryenFeatures;
-BinaryenFeatures BinaryenFeatureMVP(void);
-BinaryenFeatures BinaryenFeatureAtomics(void);
-BinaryenFeatures BinaryenFeatureBulkMemory(void);
-BinaryenFeatures BinaryenFeatureMutableGlobals(void);
-BinaryenFeatures BinaryenFeatureNontrappingFPToInt(void);
-BinaryenFeatures BinaryenFeatureSignExt(void);
-BinaryenFeatures BinaryenFeatureSIMD128(void);
-BinaryenFeatures BinaryenFeatureExceptionHandling(void);
-BinaryenFeatures BinaryenFeatureTailCall(void);
-BinaryenFeatures BinaryenFeatureReferenceTypes(void);
-BinaryenFeatures BinaryenFeatureAll(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureMVP(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureAtomics(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureBulkMemory(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureMutableGlobals(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureNontrappingFPToInt(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureSignExt(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureSIMD128(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureExceptionHandling(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureTailCall(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureReferenceTypes(void);
+BINARYEN_API BinaryenFeatures BinaryenFeatureAll(void);
// Modules
//
@@ -180,8 +186,8 @@ BinaryenFeatures BinaryenFeatureAll(void);
typedef void* BinaryenModuleRef;
-BinaryenModuleRef BinaryenModuleCreate(void);
-void BinaryenModuleDispose(BinaryenModuleRef module);
+BINARYEN_API BinaryenModuleRef BinaryenModuleCreate(void);
+BINARYEN_API void BinaryenModuleDispose(BinaryenModuleRef module);
// Function types
@@ -189,13 +195,15 @@ typedef void* BinaryenFunctionTypeRef;
// Add a new function type. This is thread-safe.
// Note: name can be NULL, in which case we auto-generate a name
-BinaryenFunctionTypeRef BinaryenAddFunctionType(BinaryenModuleRef module,
- const char* name,
- BinaryenType result,
- BinaryenType* paramTypes,
- BinaryenIndex numParams);
+BINARYEN_API BinaryenFunctionTypeRef
+BinaryenAddFunctionType(BinaryenModuleRef module,
+ const char* name,
+ BinaryenType result,
+ BinaryenType* paramTypes,
+ BinaryenIndex numParams);
// Removes a function type.
-void BinaryenRemoveFunctionType(BinaryenModuleRef module, const char* name);
+BINARYEN_API void BinaryenRemoveFunctionType(BinaryenModuleRef module,
+ const char* name);
// Literals. These are passed by value.
@@ -210,13 +218,13 @@ struct BinaryenLiteral {
};
};
-struct BinaryenLiteral BinaryenLiteralInt32(int32_t x);
-struct BinaryenLiteral BinaryenLiteralInt64(int64_t x);
-struct BinaryenLiteral BinaryenLiteralFloat32(float x);
-struct BinaryenLiteral BinaryenLiteralFloat64(double x);
-struct BinaryenLiteral BinaryenLiteralVec128(const uint8_t x[16]);
-struct BinaryenLiteral BinaryenLiteralFloat32Bits(int32_t x);
-struct BinaryenLiteral BinaryenLiteralFloat64Bits(int64_t x);
+BINARYEN_API struct BinaryenLiteral BinaryenLiteralInt32(int32_t x);
+BINARYEN_API struct BinaryenLiteral BinaryenLiteralInt64(int64_t x);
+BINARYEN_API struct BinaryenLiteral BinaryenLiteralFloat32(float x);
+BINARYEN_API struct BinaryenLiteral BinaryenLiteralFloat64(double x);
+BINARYEN_API struct BinaryenLiteral BinaryenLiteralVec128(const uint8_t x[16]);
+BINARYEN_API struct BinaryenLiteral BinaryenLiteralFloat32Bits(int32_t x);
+BINARYEN_API struct BinaryenLiteral BinaryenLiteralFloat64Bits(int64_t x);
// Expressions
//
@@ -230,302 +238,302 @@ struct BinaryenLiteral BinaryenLiteralFloat64Bits(int64_t x);
typedef int32_t BinaryenOp;
-BinaryenOp BinaryenClzInt32(void);
-BinaryenOp BinaryenCtzInt32(void);
-BinaryenOp BinaryenPopcntInt32(void);
-BinaryenOp BinaryenNegFloat32(void);
-BinaryenOp BinaryenAbsFloat32(void);
-BinaryenOp BinaryenCeilFloat32(void);
-BinaryenOp BinaryenFloorFloat32(void);
-BinaryenOp BinaryenTruncFloat32(void);
-BinaryenOp BinaryenNearestFloat32(void);
-BinaryenOp BinaryenSqrtFloat32(void);
-BinaryenOp BinaryenEqZInt32(void);
-BinaryenOp BinaryenClzInt64(void);
-BinaryenOp BinaryenCtzInt64(void);
-BinaryenOp BinaryenPopcntInt64(void);
-BinaryenOp BinaryenNegFloat64(void);
-BinaryenOp BinaryenAbsFloat64(void);
-BinaryenOp BinaryenCeilFloat64(void);
-BinaryenOp BinaryenFloorFloat64(void);
-BinaryenOp BinaryenTruncFloat64(void);
-BinaryenOp BinaryenNearestFloat64(void);
-BinaryenOp BinaryenSqrtFloat64(void);
-BinaryenOp BinaryenEqZInt64(void);
-BinaryenOp BinaryenExtendSInt32(void);
-BinaryenOp BinaryenExtendUInt32(void);
-BinaryenOp BinaryenWrapInt64(void);
-BinaryenOp BinaryenTruncSFloat32ToInt32(void);
-BinaryenOp BinaryenTruncSFloat32ToInt64(void);
-BinaryenOp BinaryenTruncUFloat32ToInt32(void);
-BinaryenOp BinaryenTruncUFloat32ToInt64(void);
-BinaryenOp BinaryenTruncSFloat64ToInt32(void);
-BinaryenOp BinaryenTruncSFloat64ToInt64(void);
-BinaryenOp BinaryenTruncUFloat64ToInt32(void);
-BinaryenOp BinaryenTruncUFloat64ToInt64(void);
-BinaryenOp BinaryenReinterpretFloat32(void);
-BinaryenOp BinaryenReinterpretFloat64(void);
-BinaryenOp BinaryenConvertSInt32ToFloat32(void);
-BinaryenOp BinaryenConvertSInt32ToFloat64(void);
-BinaryenOp BinaryenConvertUInt32ToFloat32(void);
-BinaryenOp BinaryenConvertUInt32ToFloat64(void);
-BinaryenOp BinaryenConvertSInt64ToFloat32(void);
-BinaryenOp BinaryenConvertSInt64ToFloat64(void);
-BinaryenOp BinaryenConvertUInt64ToFloat32(void);
-BinaryenOp BinaryenConvertUInt64ToFloat64(void);
-BinaryenOp BinaryenPromoteFloat32(void);
-BinaryenOp BinaryenDemoteFloat64(void);
-BinaryenOp BinaryenReinterpretInt32(void);
-BinaryenOp BinaryenReinterpretInt64(void);
-BinaryenOp BinaryenExtendS8Int32(void);
-BinaryenOp BinaryenExtendS16Int32(void);
-BinaryenOp BinaryenExtendS8Int64(void);
-BinaryenOp BinaryenExtendS16Int64(void);
-BinaryenOp BinaryenExtendS32Int64(void);
-BinaryenOp BinaryenAddInt32(void);
-BinaryenOp BinaryenSubInt32(void);
-BinaryenOp BinaryenMulInt32(void);
-BinaryenOp BinaryenDivSInt32(void);
-BinaryenOp BinaryenDivUInt32(void);
-BinaryenOp BinaryenRemSInt32(void);
-BinaryenOp BinaryenRemUInt32(void);
-BinaryenOp BinaryenAndInt32(void);
-BinaryenOp BinaryenOrInt32(void);
-BinaryenOp BinaryenXorInt32(void);
-BinaryenOp BinaryenShlInt32(void);
-BinaryenOp BinaryenShrUInt32(void);
-BinaryenOp BinaryenShrSInt32(void);
-BinaryenOp BinaryenRotLInt32(void);
-BinaryenOp BinaryenRotRInt32(void);
-BinaryenOp BinaryenEqInt32(void);
-BinaryenOp BinaryenNeInt32(void);
-BinaryenOp BinaryenLtSInt32(void);
-BinaryenOp BinaryenLtUInt32(void);
-BinaryenOp BinaryenLeSInt32(void);
-BinaryenOp BinaryenLeUInt32(void);
-BinaryenOp BinaryenGtSInt32(void);
-BinaryenOp BinaryenGtUInt32(void);
-BinaryenOp BinaryenGeSInt32(void);
-BinaryenOp BinaryenGeUInt32(void);
-BinaryenOp BinaryenAddInt64(void);
-BinaryenOp BinaryenSubInt64(void);
-BinaryenOp BinaryenMulInt64(void);
-BinaryenOp BinaryenDivSInt64(void);
-BinaryenOp BinaryenDivUInt64(void);
-BinaryenOp BinaryenRemSInt64(void);
-BinaryenOp BinaryenRemUInt64(void);
-BinaryenOp BinaryenAndInt64(void);
-BinaryenOp BinaryenOrInt64(void);
-BinaryenOp BinaryenXorInt64(void);
-BinaryenOp BinaryenShlInt64(void);
-BinaryenOp BinaryenShrUInt64(void);
-BinaryenOp BinaryenShrSInt64(void);
-BinaryenOp BinaryenRotLInt64(void);
-BinaryenOp BinaryenRotRInt64(void);
-BinaryenOp BinaryenEqInt64(void);
-BinaryenOp BinaryenNeInt64(void);
-BinaryenOp BinaryenLtSInt64(void);
-BinaryenOp BinaryenLtUInt64(void);
-BinaryenOp BinaryenLeSInt64(void);
-BinaryenOp BinaryenLeUInt64(void);
-BinaryenOp BinaryenGtSInt64(void);
-BinaryenOp BinaryenGtUInt64(void);
-BinaryenOp BinaryenGeSInt64(void);
-BinaryenOp BinaryenGeUInt64(void);
-BinaryenOp BinaryenAddFloat32(void);
-BinaryenOp BinaryenSubFloat32(void);
-BinaryenOp BinaryenMulFloat32(void);
-BinaryenOp BinaryenDivFloat32(void);
-BinaryenOp BinaryenCopySignFloat32(void);
-BinaryenOp BinaryenMinFloat32(void);
-BinaryenOp BinaryenMaxFloat32(void);
-BinaryenOp BinaryenEqFloat32(void);
-BinaryenOp BinaryenNeFloat32(void);
-BinaryenOp BinaryenLtFloat32(void);
-BinaryenOp BinaryenLeFloat32(void);
-BinaryenOp BinaryenGtFloat32(void);
-BinaryenOp BinaryenGeFloat32(void);
-BinaryenOp BinaryenAddFloat64(void);
-BinaryenOp BinaryenSubFloat64(void);
-BinaryenOp BinaryenMulFloat64(void);
-BinaryenOp BinaryenDivFloat64(void);
-BinaryenOp BinaryenCopySignFloat64(void);
-BinaryenOp BinaryenMinFloat64(void);
-BinaryenOp BinaryenMaxFloat64(void);
-BinaryenOp BinaryenEqFloat64(void);
-BinaryenOp BinaryenNeFloat64(void);
-BinaryenOp BinaryenLtFloat64(void);
-BinaryenOp BinaryenLeFloat64(void);
-BinaryenOp BinaryenGtFloat64(void);
-BinaryenOp BinaryenGeFloat64(void);
-BinaryenOp BinaryenMemorySize(void);
-BinaryenOp BinaryenMemoryGrow(void);
-BinaryenOp BinaryenAtomicRMWAdd(void);
-BinaryenOp BinaryenAtomicRMWSub(void);
-BinaryenOp BinaryenAtomicRMWAnd(void);
-BinaryenOp BinaryenAtomicRMWOr(void);
-BinaryenOp BinaryenAtomicRMWXor(void);
-BinaryenOp BinaryenAtomicRMWXchg(void);
-BinaryenOp BinaryenTruncSatSFloat32ToInt32(void);
-BinaryenOp BinaryenTruncSatSFloat32ToInt64(void);
-BinaryenOp BinaryenTruncSatUFloat32ToInt32(void);
-BinaryenOp BinaryenTruncSatUFloat32ToInt64(void);
-BinaryenOp BinaryenTruncSatSFloat64ToInt32(void);
-BinaryenOp BinaryenTruncSatSFloat64ToInt64(void);
-BinaryenOp BinaryenTruncSatUFloat64ToInt32(void);
-BinaryenOp BinaryenTruncSatUFloat64ToInt64(void);
-BinaryenOp BinaryenSplatVecI8x16(void);
-BinaryenOp BinaryenExtractLaneSVecI8x16(void);
-BinaryenOp BinaryenExtractLaneUVecI8x16(void);
-BinaryenOp BinaryenReplaceLaneVecI8x16(void);
-BinaryenOp BinaryenSplatVecI16x8(void);
-BinaryenOp BinaryenExtractLaneSVecI16x8(void);
-BinaryenOp BinaryenExtractLaneUVecI16x8(void);
-BinaryenOp BinaryenReplaceLaneVecI16x8(void);
-BinaryenOp BinaryenSplatVecI32x4(void);
-BinaryenOp BinaryenExtractLaneVecI32x4(void);
-BinaryenOp BinaryenReplaceLaneVecI32x4(void);
-BinaryenOp BinaryenSplatVecI64x2(void);
-BinaryenOp BinaryenExtractLaneVecI64x2(void);
-BinaryenOp BinaryenReplaceLaneVecI64x2(void);
-BinaryenOp BinaryenSplatVecF32x4(void);
-BinaryenOp BinaryenExtractLaneVecF32x4(void);
-BinaryenOp BinaryenReplaceLaneVecF32x4(void);
-BinaryenOp BinaryenSplatVecF64x2(void);
-BinaryenOp BinaryenExtractLaneVecF64x2(void);
-BinaryenOp BinaryenReplaceLaneVecF64x2(void);
-BinaryenOp BinaryenEqVecI8x16(void);
-BinaryenOp BinaryenNeVecI8x16(void);
-BinaryenOp BinaryenLtSVecI8x16(void);
-BinaryenOp BinaryenLtUVecI8x16(void);
-BinaryenOp BinaryenGtSVecI8x16(void);
-BinaryenOp BinaryenGtUVecI8x16(void);
-BinaryenOp BinaryenLeSVecI8x16(void);
-BinaryenOp BinaryenLeUVecI8x16(void);
-BinaryenOp BinaryenGeSVecI8x16(void);
-BinaryenOp BinaryenGeUVecI8x16(void);
-BinaryenOp BinaryenEqVecI16x8(void);
-BinaryenOp BinaryenNeVecI16x8(void);
-BinaryenOp BinaryenLtSVecI16x8(void);
-BinaryenOp BinaryenLtUVecI16x8(void);
-BinaryenOp BinaryenGtSVecI16x8(void);
-BinaryenOp BinaryenGtUVecI16x8(void);
-BinaryenOp BinaryenLeSVecI16x8(void);
-BinaryenOp BinaryenLeUVecI16x8(void);
-BinaryenOp BinaryenGeSVecI16x8(void);
-BinaryenOp BinaryenGeUVecI16x8(void);
-BinaryenOp BinaryenEqVecI32x4(void);
-BinaryenOp BinaryenNeVecI32x4(void);
-BinaryenOp BinaryenLtSVecI32x4(void);
-BinaryenOp BinaryenLtUVecI32x4(void);
-BinaryenOp BinaryenGtSVecI32x4(void);
-BinaryenOp BinaryenGtUVecI32x4(void);
-BinaryenOp BinaryenLeSVecI32x4(void);
-BinaryenOp BinaryenLeUVecI32x4(void);
-BinaryenOp BinaryenGeSVecI32x4(void);
-BinaryenOp BinaryenGeUVecI32x4(void);
-BinaryenOp BinaryenEqVecF32x4(void);
-BinaryenOp BinaryenNeVecF32x4(void);
-BinaryenOp BinaryenLtVecF32x4(void);
-BinaryenOp BinaryenGtVecF32x4(void);
-BinaryenOp BinaryenLeVecF32x4(void);
-BinaryenOp BinaryenGeVecF32x4(void);
-BinaryenOp BinaryenEqVecF64x2(void);
-BinaryenOp BinaryenNeVecF64x2(void);
-BinaryenOp BinaryenLtVecF64x2(void);
-BinaryenOp BinaryenGtVecF64x2(void);
-BinaryenOp BinaryenLeVecF64x2(void);
-BinaryenOp BinaryenGeVecF64x2(void);
-BinaryenOp BinaryenNotVec128(void);
-BinaryenOp BinaryenAndVec128(void);
-BinaryenOp BinaryenOrVec128(void);
-BinaryenOp BinaryenXorVec128(void);
-BinaryenOp BinaryenBitselectVec128(void);
-BinaryenOp BinaryenNegVecI8x16(void);
-BinaryenOp BinaryenAnyTrueVecI8x16(void);
-BinaryenOp BinaryenAllTrueVecI8x16(void);
-BinaryenOp BinaryenShlVecI8x16(void);
-BinaryenOp BinaryenShrSVecI8x16(void);
-BinaryenOp BinaryenShrUVecI8x16(void);
-BinaryenOp BinaryenAddVecI8x16(void);
-BinaryenOp BinaryenAddSatSVecI8x16(void);
-BinaryenOp BinaryenAddSatUVecI8x16(void);
-BinaryenOp BinaryenSubVecI8x16(void);
-BinaryenOp BinaryenSubSatSVecI8x16(void);
-BinaryenOp BinaryenSubSatUVecI8x16(void);
-BinaryenOp BinaryenMulVecI8x16(void);
-BinaryenOp BinaryenNegVecI16x8(void);
-BinaryenOp BinaryenAnyTrueVecI16x8(void);
-BinaryenOp BinaryenAllTrueVecI16x8(void);
-BinaryenOp BinaryenShlVecI16x8(void);
-BinaryenOp BinaryenShrSVecI16x8(void);
-BinaryenOp BinaryenShrUVecI16x8(void);
-BinaryenOp BinaryenAddVecI16x8(void);
-BinaryenOp BinaryenAddSatSVecI16x8(void);
-BinaryenOp BinaryenAddSatUVecI16x8(void);
-BinaryenOp BinaryenSubVecI16x8(void);
-BinaryenOp BinaryenSubSatSVecI16x8(void);
-BinaryenOp BinaryenSubSatUVecI16x8(void);
-BinaryenOp BinaryenMulVecI16x8(void);
-BinaryenOp BinaryenNegVecI32x4(void);
-BinaryenOp BinaryenAnyTrueVecI32x4(void);
-BinaryenOp BinaryenAllTrueVecI32x4(void);
-BinaryenOp BinaryenShlVecI32x4(void);
-BinaryenOp BinaryenShrSVecI32x4(void);
-BinaryenOp BinaryenShrUVecI32x4(void);
-BinaryenOp BinaryenAddVecI32x4(void);
-BinaryenOp BinaryenSubVecI32x4(void);
-BinaryenOp BinaryenMulVecI32x4(void);
-BinaryenOp BinaryenNegVecI64x2(void);
-BinaryenOp BinaryenAnyTrueVecI64x2(void);
-BinaryenOp BinaryenAllTrueVecI64x2(void);
-BinaryenOp BinaryenShlVecI64x2(void);
-BinaryenOp BinaryenShrSVecI64x2(void);
-BinaryenOp BinaryenShrUVecI64x2(void);
-BinaryenOp BinaryenAddVecI64x2(void);
-BinaryenOp BinaryenSubVecI64x2(void);
-BinaryenOp BinaryenAbsVecF32x4(void);
-BinaryenOp BinaryenNegVecF32x4(void);
-BinaryenOp BinaryenSqrtVecF32x4(void);
-BinaryenOp BinaryenQFMAVecF32x4(void);
-BinaryenOp BinaryenQFMSVecF32x4(void);
-BinaryenOp BinaryenAddVecF32x4(void);
-BinaryenOp BinaryenSubVecF32x4(void);
-BinaryenOp BinaryenMulVecF32x4(void);
-BinaryenOp BinaryenDivVecF32x4(void);
-BinaryenOp BinaryenMinVecF32x4(void);
-BinaryenOp BinaryenMaxVecF32x4(void);
-BinaryenOp BinaryenAbsVecF64x2(void);
-BinaryenOp BinaryenNegVecF64x2(void);
-BinaryenOp BinaryenSqrtVecF64x2(void);
-BinaryenOp BinaryenQFMAVecF64x2(void);
-BinaryenOp BinaryenQFMSVecF64x2(void);
-BinaryenOp BinaryenAddVecF64x2(void);
-BinaryenOp BinaryenSubVecF64x2(void);
-BinaryenOp BinaryenMulVecF64x2(void);
-BinaryenOp BinaryenDivVecF64x2(void);
-BinaryenOp BinaryenMinVecF64x2(void);
-BinaryenOp BinaryenMaxVecF64x2(void);
-BinaryenOp BinaryenTruncSatSVecF32x4ToVecI32x4(void);
-BinaryenOp BinaryenTruncSatUVecF32x4ToVecI32x4(void);
-BinaryenOp BinaryenTruncSatSVecF64x2ToVecI64x2(void);
-BinaryenOp BinaryenTruncSatUVecF64x2ToVecI64x2(void);
-BinaryenOp BinaryenConvertSVecI32x4ToVecF32x4(void);
-BinaryenOp BinaryenConvertUVecI32x4ToVecF32x4(void);
-BinaryenOp BinaryenConvertSVecI64x2ToVecF64x2(void);
-BinaryenOp BinaryenConvertUVecI64x2ToVecF64x2(void);
-BinaryenOp BinaryenNarrowSVecI16x8ToVecI8x16(void);
-BinaryenOp BinaryenNarrowUVecI16x8ToVecI8x16(void);
-BinaryenOp BinaryenNarrowSVecI32x4ToVecI16x8(void);
-BinaryenOp BinaryenNarrowUVecI32x4ToVecI16x8(void);
-BinaryenOp BinaryenWidenLowSVecI8x16ToVecI16x8(void);
-BinaryenOp BinaryenWidenHighSVecI8x16ToVecI16x8(void);
-BinaryenOp BinaryenWidenLowUVecI8x16ToVecI16x8(void);
-BinaryenOp BinaryenWidenHighUVecI8x16ToVecI16x8(void);
-BinaryenOp BinaryenWidenLowSVecI16x8ToVecI32x4(void);
-BinaryenOp BinaryenWidenHighSVecI16x8ToVecI32x4(void);
-BinaryenOp BinaryenWidenLowUVecI16x8ToVecI32x4(void);
-BinaryenOp BinaryenWidenHighUVecI16x8ToVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenClzInt32(void);
+BINARYEN_API BinaryenOp BinaryenCtzInt32(void);
+BINARYEN_API BinaryenOp BinaryenPopcntInt32(void);
+BINARYEN_API BinaryenOp BinaryenNegFloat32(void);
+BINARYEN_API BinaryenOp BinaryenAbsFloat32(void);
+BINARYEN_API BinaryenOp BinaryenCeilFloat32(void);
+BINARYEN_API BinaryenOp BinaryenFloorFloat32(void);
+BINARYEN_API BinaryenOp BinaryenTruncFloat32(void);
+BINARYEN_API BinaryenOp BinaryenNearestFloat32(void);
+BINARYEN_API BinaryenOp BinaryenSqrtFloat32(void);
+BINARYEN_API BinaryenOp BinaryenEqZInt32(void);
+BINARYEN_API BinaryenOp BinaryenClzInt64(void);
+BINARYEN_API BinaryenOp BinaryenCtzInt64(void);
+BINARYEN_API BinaryenOp BinaryenPopcntInt64(void);
+BINARYEN_API BinaryenOp BinaryenNegFloat64(void);
+BINARYEN_API BinaryenOp BinaryenAbsFloat64(void);
+BINARYEN_API BinaryenOp BinaryenCeilFloat64(void);
+BINARYEN_API BinaryenOp BinaryenFloorFloat64(void);
+BINARYEN_API BinaryenOp BinaryenTruncFloat64(void);
+BINARYEN_API BinaryenOp BinaryenNearestFloat64(void);
+BINARYEN_API BinaryenOp BinaryenSqrtFloat64(void);
+BINARYEN_API BinaryenOp BinaryenEqZInt64(void);
+BINARYEN_API BinaryenOp BinaryenExtendSInt32(void);
+BINARYEN_API BinaryenOp BinaryenExtendUInt32(void);
+BINARYEN_API BinaryenOp BinaryenWrapInt64(void);
+BINARYEN_API BinaryenOp BinaryenTruncSFloat32ToInt32(void);
+BINARYEN_API BinaryenOp BinaryenTruncSFloat32ToInt64(void);
+BINARYEN_API BinaryenOp BinaryenTruncUFloat32ToInt32(void);
+BINARYEN_API BinaryenOp BinaryenTruncUFloat32ToInt64(void);
+BINARYEN_API BinaryenOp BinaryenTruncSFloat64ToInt32(void);
+BINARYEN_API BinaryenOp BinaryenTruncSFloat64ToInt64(void);
+BINARYEN_API BinaryenOp BinaryenTruncUFloat64ToInt32(void);
+BINARYEN_API BinaryenOp BinaryenTruncUFloat64ToInt64(void);
+BINARYEN_API BinaryenOp BinaryenReinterpretFloat32(void);
+BINARYEN_API BinaryenOp BinaryenReinterpretFloat64(void);
+BINARYEN_API BinaryenOp BinaryenConvertSInt32ToFloat32(void);
+BINARYEN_API BinaryenOp BinaryenConvertSInt32ToFloat64(void);
+BINARYEN_API BinaryenOp BinaryenConvertUInt32ToFloat32(void);
+BINARYEN_API BinaryenOp BinaryenConvertUInt32ToFloat64(void);
+BINARYEN_API BinaryenOp BinaryenConvertSInt64ToFloat32(void);
+BINARYEN_API BinaryenOp BinaryenConvertSInt64ToFloat64(void);
+BINARYEN_API BinaryenOp BinaryenConvertUInt64ToFloat32(void);
+BINARYEN_API BinaryenOp BinaryenConvertUInt64ToFloat64(void);
+BINARYEN_API BinaryenOp BinaryenPromoteFloat32(void);
+BINARYEN_API BinaryenOp BinaryenDemoteFloat64(void);
+BINARYEN_API BinaryenOp BinaryenReinterpretInt32(void);
+BINARYEN_API BinaryenOp BinaryenReinterpretInt64(void);
+BINARYEN_API BinaryenOp BinaryenExtendS8Int32(void);
+BINARYEN_API BinaryenOp BinaryenExtendS16Int32(void);
+BINARYEN_API BinaryenOp BinaryenExtendS8Int64(void);
+BINARYEN_API BinaryenOp BinaryenExtendS16Int64(void);
+BINARYEN_API BinaryenOp BinaryenExtendS32Int64(void);
+BINARYEN_API BinaryenOp BinaryenAddInt32(void);
+BINARYEN_API BinaryenOp BinaryenSubInt32(void);
+BINARYEN_API BinaryenOp BinaryenMulInt32(void);
+BINARYEN_API BinaryenOp BinaryenDivSInt32(void);
+BINARYEN_API BinaryenOp BinaryenDivUInt32(void);
+BINARYEN_API BinaryenOp BinaryenRemSInt32(void);
+BINARYEN_API BinaryenOp BinaryenRemUInt32(void);
+BINARYEN_API BinaryenOp BinaryenAndInt32(void);
+BINARYEN_API BinaryenOp BinaryenOrInt32(void);
+BINARYEN_API BinaryenOp BinaryenXorInt32(void);
+BINARYEN_API BinaryenOp BinaryenShlInt32(void);
+BINARYEN_API BinaryenOp BinaryenShrUInt32(void);
+BINARYEN_API BinaryenOp BinaryenShrSInt32(void);
+BINARYEN_API BinaryenOp BinaryenRotLInt32(void);
+BINARYEN_API BinaryenOp BinaryenRotRInt32(void);
+BINARYEN_API BinaryenOp BinaryenEqInt32(void);
+BINARYEN_API BinaryenOp BinaryenNeInt32(void);
+BINARYEN_API BinaryenOp BinaryenLtSInt32(void);
+BINARYEN_API BinaryenOp BinaryenLtUInt32(void);
+BINARYEN_API BinaryenOp BinaryenLeSInt32(void);
+BINARYEN_API BinaryenOp BinaryenLeUInt32(void);
+BINARYEN_API BinaryenOp BinaryenGtSInt32(void);
+BINARYEN_API BinaryenOp BinaryenGtUInt32(void);
+BINARYEN_API BinaryenOp BinaryenGeSInt32(void);
+BINARYEN_API BinaryenOp BinaryenGeUInt32(void);
+BINARYEN_API BinaryenOp BinaryenAddInt64(void);
+BINARYEN_API BinaryenOp BinaryenSubInt64(void);
+BINARYEN_API BinaryenOp BinaryenMulInt64(void);
+BINARYEN_API BinaryenOp BinaryenDivSInt64(void);
+BINARYEN_API BinaryenOp BinaryenDivUInt64(void);
+BINARYEN_API BinaryenOp BinaryenRemSInt64(void);
+BINARYEN_API BinaryenOp BinaryenRemUInt64(void);
+BINARYEN_API BinaryenOp BinaryenAndInt64(void);
+BINARYEN_API BinaryenOp BinaryenOrInt64(void);
+BINARYEN_API BinaryenOp BinaryenXorInt64(void);
+BINARYEN_API BinaryenOp BinaryenShlInt64(void);
+BINARYEN_API BinaryenOp BinaryenShrUInt64(void);
+BINARYEN_API BinaryenOp BinaryenShrSInt64(void);
+BINARYEN_API BinaryenOp BinaryenRotLInt64(void);
+BINARYEN_API BinaryenOp BinaryenRotRInt64(void);
+BINARYEN_API BinaryenOp BinaryenEqInt64(void);
+BINARYEN_API BinaryenOp BinaryenNeInt64(void);
+BINARYEN_API BinaryenOp BinaryenLtSInt64(void);
+BINARYEN_API BinaryenOp BinaryenLtUInt64(void);
+BINARYEN_API BinaryenOp BinaryenLeSInt64(void);
+BINARYEN_API BinaryenOp BinaryenLeUInt64(void);
+BINARYEN_API BinaryenOp BinaryenGtSInt64(void);
+BINARYEN_API BinaryenOp BinaryenGtUInt64(void);
+BINARYEN_API BinaryenOp BinaryenGeSInt64(void);
+BINARYEN_API BinaryenOp BinaryenGeUInt64(void);
+BINARYEN_API BinaryenOp BinaryenAddFloat32(void);
+BINARYEN_API BinaryenOp BinaryenSubFloat32(void);
+BINARYEN_API BinaryenOp BinaryenMulFloat32(void);
+BINARYEN_API BinaryenOp BinaryenDivFloat32(void);
+BINARYEN_API BinaryenOp BinaryenCopySignFloat32(void);
+BINARYEN_API BinaryenOp BinaryenMinFloat32(void);
+BINARYEN_API BinaryenOp BinaryenMaxFloat32(void);
+BINARYEN_API BinaryenOp BinaryenEqFloat32(void);
+BINARYEN_API BinaryenOp BinaryenNeFloat32(void);
+BINARYEN_API BinaryenOp BinaryenLtFloat32(void);
+BINARYEN_API BinaryenOp BinaryenLeFloat32(void);
+BINARYEN_API BinaryenOp BinaryenGtFloat32(void);
+BINARYEN_API BinaryenOp BinaryenGeFloat32(void);
+BINARYEN_API BinaryenOp BinaryenAddFloat64(void);
+BINARYEN_API BinaryenOp BinaryenSubFloat64(void);
+BINARYEN_API BinaryenOp BinaryenMulFloat64(void);
+BINARYEN_API BinaryenOp BinaryenDivFloat64(void);
+BINARYEN_API BinaryenOp BinaryenCopySignFloat64(void);
+BINARYEN_API BinaryenOp BinaryenMinFloat64(void);
+BINARYEN_API BinaryenOp BinaryenMaxFloat64(void);
+BINARYEN_API BinaryenOp BinaryenEqFloat64(void);
+BINARYEN_API BinaryenOp BinaryenNeFloat64(void);
+BINARYEN_API BinaryenOp BinaryenLtFloat64(void);
+BINARYEN_API BinaryenOp BinaryenLeFloat64(void);
+BINARYEN_API BinaryenOp BinaryenGtFloat64(void);
+BINARYEN_API BinaryenOp BinaryenGeFloat64(void);
+BINARYEN_API BinaryenOp BinaryenMemorySize(void);
+BINARYEN_API BinaryenOp BinaryenMemoryGrow(void);
+BINARYEN_API BinaryenOp BinaryenAtomicRMWAdd(void);
+BINARYEN_API BinaryenOp BinaryenAtomicRMWSub(void);
+BINARYEN_API BinaryenOp BinaryenAtomicRMWAnd(void);
+BINARYEN_API BinaryenOp BinaryenAtomicRMWOr(void);
+BINARYEN_API BinaryenOp BinaryenAtomicRMWXor(void);
+BINARYEN_API BinaryenOp BinaryenAtomicRMWXchg(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatSFloat32ToInt32(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatSFloat32ToInt64(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatUFloat32ToInt32(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatUFloat32ToInt64(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatSFloat64ToInt32(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatSFloat64ToInt64(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatUFloat64ToInt32(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatUFloat64ToInt64(void);
+BINARYEN_API BinaryenOp BinaryenSplatVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenExtractLaneSVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenExtractLaneUVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenReplaceLaneVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenSplatVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenExtractLaneSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenExtractLaneUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenReplaceLaneVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenSplatVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenExtractLaneVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenReplaceLaneVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenSplatVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenExtractLaneVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenReplaceLaneVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenSplatVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenExtractLaneVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenReplaceLaneVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenSplatVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenExtractLaneVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenReplaceLaneVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenEqVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenNeVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenLtSVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenLtUVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenGtSVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenGtUVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenLeSVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenLeUVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenGeSVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenGeUVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenEqVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenNeVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenLtSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenLtUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenGtSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenGtUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenLeSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenLeUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenGeSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenGeUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenEqVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenNeVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenLtSVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenLtUVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenGtSVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenGtUVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenLeSVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenLeUVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenGeSVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenGeUVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenEqVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenNeVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenLtVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenGtVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenLeVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenGeVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenEqVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenNeVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenLtVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenGtVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenLeVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenGeVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenNotVec128(void);
+BINARYEN_API BinaryenOp BinaryenAndVec128(void);
+BINARYEN_API BinaryenOp BinaryenOrVec128(void);
+BINARYEN_API BinaryenOp BinaryenXorVec128(void);
+BINARYEN_API BinaryenOp BinaryenBitselectVec128(void);
+BINARYEN_API BinaryenOp BinaryenNegVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenAnyTrueVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenAllTrueVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenShlVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenShrSVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenShrUVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenAddVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenAddSatSVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenAddSatUVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenSubVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenSubSatSVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenSubSatUVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenMulVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenNegVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenAnyTrueVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenAllTrueVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenShlVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenShrSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenShrUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenAddVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenAddSatSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenAddSatUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenSubVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenSubSatSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenSubSatUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenMulVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenNegVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenAnyTrueVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenAllTrueVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenShlVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenShrSVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenShrUVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenAddVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenSubVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenMulVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenNegVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenAnyTrueVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenAllTrueVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenShlVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenShrSVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenShrUVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenAddVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenSubVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenAbsVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenNegVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenSqrtVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenQFMAVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenQFMSVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenAddVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenSubVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenMulVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenDivVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenMinVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenMaxVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenAbsVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenNegVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenSqrtVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenQFMAVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenQFMSVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenAddVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenSubVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenMulVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenDivVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenMinVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenMaxVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatSVecF32x4ToVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatUVecF32x4ToVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatSVecF64x2ToVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenTruncSatUVecF64x2ToVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenConvertSVecI32x4ToVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenConvertUVecI32x4ToVecF32x4(void);
+BINARYEN_API BinaryenOp BinaryenConvertSVecI64x2ToVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenConvertUVecI64x2ToVecF64x2(void);
+BINARYEN_API BinaryenOp BinaryenNarrowSVecI16x8ToVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenNarrowUVecI16x8ToVecI8x16(void);
+BINARYEN_API BinaryenOp BinaryenNarrowSVecI32x4ToVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenNarrowUVecI32x4ToVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenWidenLowSVecI8x16ToVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenWidenHighSVecI8x16ToVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenWidenLowUVecI8x16ToVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenWidenHighUVecI8x16ToVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenWidenLowSVecI16x8ToVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenWidenHighSVecI16x8ToVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenWidenLowUVecI16x8ToVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenWidenHighUVecI16x8ToVecI32x4(void);
typedef void* BinaryenExpressionRef;
@@ -533,51 +541,56 @@ typedef void* BinaryenExpressionRef;
// parameter indicates that the block's type shall be figured out
// automatically instead of explicitly providing it. This conforms
// to the behavior before the 'type' parameter has been introduced.
-BinaryenExpressionRef BinaryenBlock(BinaryenModuleRef module,
- const char* name,
- BinaryenExpressionRef* children,
- BinaryenIndex numChildren,
- BinaryenType type);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBlock(BinaryenModuleRef module,
+ const char* name,
+ BinaryenExpressionRef* children,
+ BinaryenIndex numChildren,
+ BinaryenType type);
// If: ifFalse can be NULL
-BinaryenExpressionRef BinaryenIf(BinaryenModuleRef module,
- BinaryenExpressionRef condition,
- BinaryenExpressionRef ifTrue,
- BinaryenExpressionRef ifFalse);
-BinaryenExpressionRef BinaryenLoop(BinaryenModuleRef module,
- const char* in,
- BinaryenExpressionRef body);
+BINARYEN_API BinaryenExpressionRef BinaryenIf(BinaryenModuleRef module,
+ BinaryenExpressionRef condition,
+ BinaryenExpressionRef ifTrue,
+ BinaryenExpressionRef ifFalse);
+BINARYEN_API BinaryenExpressionRef BinaryenLoop(BinaryenModuleRef module,
+ const char* in,
+ BinaryenExpressionRef body);
// Break: value and condition can be NULL
-BinaryenExpressionRef BinaryenBreak(BinaryenModuleRef module,
- const char* name,
- BinaryenExpressionRef condition,
- BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBreak(BinaryenModuleRef module,
+ const char* name,
+ BinaryenExpressionRef condition,
+ BinaryenExpressionRef value);
// Switch: value can be NULL
-BinaryenExpressionRef BinaryenSwitch(BinaryenModuleRef module,
- const char** names,
- BinaryenIndex numNames,
- const char* defaultName,
- BinaryenExpressionRef condition,
- BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSwitch(BinaryenModuleRef module,
+ const char** names,
+ BinaryenIndex numNames,
+ const char* defaultName,
+ BinaryenExpressionRef condition,
+ BinaryenExpressionRef value);
// Call: Note the 'returnType' parameter. You must declare the
// type returned by the function being called, as that
// function might not have been created yet, so we don't
// know what it is.
-BinaryenExpressionRef BinaryenCall(BinaryenModuleRef module,
- const char* target,
- BinaryenExpressionRef* operands,
- BinaryenIndex numOperands,
- BinaryenType returnType);
-BinaryenExpressionRef BinaryenCallIndirect(BinaryenModuleRef module,
- BinaryenExpressionRef target,
- BinaryenExpressionRef* operands,
- BinaryenIndex numOperands,
- const char* type);
-BinaryenExpressionRef BinaryenReturnCall(BinaryenModuleRef module,
- const char* target,
- BinaryenExpressionRef* operands,
- BinaryenIndex numOperands,
- BinaryenType returnType);
-BinaryenExpressionRef
+BINARYEN_API BinaryenExpressionRef BinaryenCall(BinaryenModuleRef module,
+ const char* target,
+ BinaryenExpressionRef* operands,
+ BinaryenIndex numOperands,
+ BinaryenType returnType);
+BINARYEN_API BinaryenExpressionRef
+BinaryenCallIndirect(BinaryenModuleRef module,
+ BinaryenExpressionRef target,
+ BinaryenExpressionRef* operands,
+ BinaryenIndex numOperands,
+ const char* type);
+BINARYEN_API BinaryenExpressionRef
+BinaryenReturnCall(BinaryenModuleRef module,
+ const char* target,
+ BinaryenExpressionRef* operands,
+ BinaryenIndex numOperands,
+ BinaryenType returnType);
+BINARYEN_API BinaryenExpressionRef
BinaryenReturnCallIndirect(BinaryenModuleRef module,
BinaryenExpressionRef target,
BinaryenExpressionRef* operands,
@@ -598,321 +611,402 @@ BinaryenReturnCallIndirect(BinaryenModuleRef module,
// a var, that is, either a parameter to the function or a variable
// declared when you call BinaryenAddFunction. See BinaryenAddFunction
// for more details.
-BinaryenExpressionRef BinaryenLocalGet(BinaryenModuleRef module,
- BinaryenIndex index,
- BinaryenType type);
-BinaryenExpressionRef BinaryenLocalSet(BinaryenModuleRef module,
- BinaryenIndex index,
- BinaryenExpressionRef value);
-BinaryenExpressionRef BinaryenLocalTee(BinaryenModuleRef module,
- BinaryenIndex index,
- BinaryenExpressionRef value);
-BinaryenExpressionRef BinaryenGlobalGet(BinaryenModuleRef module,
- const char* name,
- BinaryenType type);
-BinaryenExpressionRef BinaryenGlobalSet(BinaryenModuleRef module,
- const char* name,
- BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenLocalGet(BinaryenModuleRef module,
+ BinaryenIndex index,
+ BinaryenType type);
+BINARYEN_API BinaryenExpressionRef BinaryenLocalSet(
+ BinaryenModuleRef module, BinaryenIndex index, BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenLocalTee(
+ BinaryenModuleRef module, BinaryenIndex index, BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenGlobalGet(BinaryenModuleRef module,
+ const char* name,
+ BinaryenType type);
+BINARYEN_API BinaryenExpressionRef BinaryenGlobalSet(
+ BinaryenModuleRef module, const char* name, BinaryenExpressionRef value);
// Load: align can be 0, in which case it will be the natural alignment (equal
// to bytes)
-BinaryenExpressionRef BinaryenLoad(BinaryenModuleRef module,
- uint32_t bytes,
- int8_t signed_,
- uint32_t offset,
- uint32_t align,
- BinaryenType type,
- BinaryenExpressionRef ptr);
+BINARYEN_API BinaryenExpressionRef BinaryenLoad(BinaryenModuleRef module,
+ uint32_t bytes,
+ int8_t signed_,
+ uint32_t offset,
+ uint32_t align,
+ BinaryenType type,
+ BinaryenExpressionRef ptr);
// Store: align can be 0, in which case it will be the natural alignment (equal
// to bytes)
-BinaryenExpressionRef BinaryenStore(BinaryenModuleRef module,
- uint32_t bytes,
- uint32_t offset,
- uint32_t align,
- BinaryenExpressionRef ptr,
- BinaryenExpressionRef value,
- BinaryenType type);
-BinaryenExpressionRef BinaryenConst(BinaryenModuleRef module,
- struct BinaryenLiteral value);
-BinaryenExpressionRef BinaryenUnary(BinaryenModuleRef module,
- BinaryenOp op,
- BinaryenExpressionRef value);
-BinaryenExpressionRef BinaryenBinary(BinaryenModuleRef module,
- BinaryenOp op,
- BinaryenExpressionRef left,
- BinaryenExpressionRef right);
-BinaryenExpressionRef BinaryenSelect(BinaryenModuleRef module,
- BinaryenExpressionRef condition,
- BinaryenExpressionRef ifTrue,
- BinaryenExpressionRef ifFalse);
-BinaryenExpressionRef BinaryenDrop(BinaryenModuleRef module,
- BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenStore(BinaryenModuleRef module,
+ uint32_t bytes,
+ uint32_t offset,
+ uint32_t align,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef value,
+ BinaryenType type);
+BINARYEN_API BinaryenExpressionRef BinaryenConst(BinaryenModuleRef module,
+ struct BinaryenLiteral value);
+BINARYEN_API BinaryenExpressionRef BinaryenUnary(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenBinary(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef left,
+ BinaryenExpressionRef right);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSelect(BinaryenModuleRef module,
+ BinaryenExpressionRef condition,
+ BinaryenExpressionRef ifTrue,
+ BinaryenExpressionRef ifFalse);
+BINARYEN_API BinaryenExpressionRef BinaryenDrop(BinaryenModuleRef module,
+ BinaryenExpressionRef value);
// Return: value can be NULL
-BinaryenExpressionRef BinaryenReturn(BinaryenModuleRef module,
- BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenReturn(BinaryenModuleRef module,
+ BinaryenExpressionRef value);
// Host: name may be NULL
-BinaryenExpressionRef BinaryenHost(BinaryenModuleRef module,
- BinaryenOp op,
- const char* name,
- BinaryenExpressionRef* operands,
- BinaryenIndex numOperands);
-BinaryenExpressionRef BinaryenNop(BinaryenModuleRef module);
-BinaryenExpressionRef BinaryenUnreachable(BinaryenModuleRef module);
-BinaryenExpressionRef BinaryenAtomicLoad(BinaryenModuleRef module,
- uint32_t bytes,
- uint32_t offset,
- BinaryenType type,
- BinaryenExpressionRef ptr);
-BinaryenExpressionRef BinaryenAtomicStore(BinaryenModuleRef module,
- uint32_t bytes,
- uint32_t offset,
- BinaryenExpressionRef ptr,
- BinaryenExpressionRef value,
- BinaryenType type);
-BinaryenExpressionRef BinaryenAtomicRMW(BinaryenModuleRef module,
- BinaryenOp op,
- BinaryenIndex bytes,
- BinaryenIndex offset,
- BinaryenExpressionRef ptr,
- BinaryenExpressionRef value,
- BinaryenType type);
-BinaryenExpressionRef BinaryenAtomicCmpxchg(BinaryenModuleRef module,
- BinaryenIndex bytes,
- BinaryenIndex offset,
- BinaryenExpressionRef ptr,
- BinaryenExpressionRef expected,
- BinaryenExpressionRef replacement,
- BinaryenType type);
-BinaryenExpressionRef BinaryenAtomicWait(BinaryenModuleRef module,
- BinaryenExpressionRef ptr,
- BinaryenExpressionRef expected,
- BinaryenExpressionRef timeout,
- BinaryenType type);
-BinaryenExpressionRef BinaryenAtomicNotify(BinaryenModuleRef module,
- BinaryenExpressionRef ptr,
- BinaryenExpressionRef notifyCount);
-BinaryenExpressionRef BinaryenAtomicFence(BinaryenModuleRef module);
-BinaryenExpressionRef BinaryenSIMDExtract(BinaryenModuleRef module,
- BinaryenOp op,
- BinaryenExpressionRef vec,
- uint8_t index);
-BinaryenExpressionRef BinaryenSIMDReplace(BinaryenModuleRef module,
- BinaryenOp op,
- BinaryenExpressionRef vec,
- uint8_t index,
- BinaryenExpressionRef value);
-BinaryenExpressionRef BinaryenSIMDShuffle(BinaryenModuleRef module,
- BinaryenExpressionRef left,
- BinaryenExpressionRef right,
- const uint8_t mask[16]);
-BinaryenExpressionRef BinaryenSIMDTernary(BinaryenModuleRef module,
- BinaryenOp op,
- BinaryenExpressionRef a,
- BinaryenExpressionRef b,
- BinaryenExpressionRef c);
-BinaryenExpressionRef BinaryenSIMDShift(BinaryenModuleRef module,
- BinaryenOp op,
- BinaryenExpressionRef vec,
- BinaryenExpressionRef shift);
-BinaryenExpressionRef BinaryenMemoryInit(BinaryenModuleRef module,
- uint32_t segment,
- BinaryenExpressionRef dest,
- BinaryenExpressionRef offset,
- BinaryenExpressionRef size);
-BinaryenExpressionRef BinaryenDataDrop(BinaryenModuleRef module,
- uint32_t segment);
-BinaryenExpressionRef BinaryenMemoryCopy(BinaryenModuleRef module,
- BinaryenExpressionRef dest,
- BinaryenExpressionRef source,
- BinaryenExpressionRef size);
-BinaryenExpressionRef BinaryenMemoryFill(BinaryenModuleRef module,
- BinaryenExpressionRef dest,
- BinaryenExpressionRef value,
- BinaryenExpressionRef size);
-BinaryenExpressionRef BinaryenTry(BinaryenModuleRef module,
- BinaryenExpressionRef body,
- BinaryenExpressionRef catchBody);
-BinaryenExpressionRef BinaryenThrow(BinaryenModuleRef module,
- const char* event,
- BinaryenExpressionRef* operands,
- BinaryenIndex numOperands);
-BinaryenExpressionRef BinaryenRethrow(BinaryenModuleRef module,
- BinaryenExpressionRef exnref);
-BinaryenExpressionRef BinaryenBrOnExn(BinaryenModuleRef module,
- const char* name,
- const char* eventName,
- BinaryenExpressionRef exnref);
-BinaryenExpressionRef BinaryenPush(BinaryenModuleRef module,
- BinaryenExpressionRef value);
-BinaryenExpressionRef BinaryenPop(BinaryenModuleRef module, BinaryenType type);
-
-BinaryenExpressionId BinaryenExpressionGetId(BinaryenExpressionRef expr);
-BinaryenType BinaryenExpressionGetType(BinaryenExpressionRef expr);
-void BinaryenExpressionPrint(BinaryenExpressionRef expr);
-
-const char* BinaryenBlockGetName(BinaryenExpressionRef expr);
-BinaryenIndex BinaryenBlockGetNumChildren(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenBlockGetChild(BinaryenExpressionRef expr,
- BinaryenIndex index);
-
-BinaryenExpressionRef BinaryenIfGetCondition(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenIfGetIfTrue(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenIfGetIfFalse(BinaryenExpressionRef expr);
-
-const char* BinaryenLoopGetName(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenLoopGetBody(BinaryenExpressionRef expr);
-
-const char* BinaryenBreakGetName(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenBreakGetCondition(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenBreakGetValue(BinaryenExpressionRef expr);
-
-BinaryenIndex BinaryenSwitchGetNumNames(BinaryenExpressionRef expr);
-const char* BinaryenSwitchGetName(BinaryenExpressionRef expr,
- BinaryenIndex index);
-const char* BinaryenSwitchGetDefaultName(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSwitchGetCondition(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSwitchGetValue(BinaryenExpressionRef expr);
-
-const char* BinaryenCallGetTarget(BinaryenExpressionRef expr);
-BinaryenIndex BinaryenCallGetNumOperands(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenCallGetOperand(BinaryenExpressionRef expr,
- BinaryenIndex index);
-
-BinaryenExpressionRef BinaryenCallIndirectGetTarget(BinaryenExpressionRef expr);
-BinaryenIndex BinaryenCallIndirectGetNumOperands(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenCallIndirectGetOperand(BinaryenExpressionRef expr,
- BinaryenIndex index);
-
-BinaryenIndex BinaryenLocalGetGetIndex(BinaryenExpressionRef expr);
-
-int BinaryenLocalSetIsTee(BinaryenExpressionRef expr);
-BinaryenIndex BinaryenLocalSetGetIndex(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenLocalSetGetValue(BinaryenExpressionRef expr);
-
-const char* BinaryenGlobalGetGetName(BinaryenExpressionRef expr);
-
-const char* BinaryenGlobalSetGetName(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenGlobalSetGetValue(BinaryenExpressionRef expr);
-
-BinaryenOp BinaryenHostGetOp(BinaryenExpressionRef expr);
-const char* BinaryenHostGetNameOperand(BinaryenExpressionRef expr);
-BinaryenIndex BinaryenHostGetNumOperands(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenHostGetOperand(BinaryenExpressionRef expr,
- BinaryenIndex index);
-
-int BinaryenLoadIsAtomic(BinaryenExpressionRef expr);
-int BinaryenLoadIsSigned(BinaryenExpressionRef expr);
-uint32_t BinaryenLoadGetOffset(BinaryenExpressionRef expr);
-uint32_t BinaryenLoadGetBytes(BinaryenExpressionRef expr);
-uint32_t BinaryenLoadGetAlign(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenLoadGetPtr(BinaryenExpressionRef expr);
-
-int BinaryenStoreIsAtomic(BinaryenExpressionRef expr);
-uint32_t BinaryenStoreGetBytes(BinaryenExpressionRef expr);
-uint32_t BinaryenStoreGetOffset(BinaryenExpressionRef expr);
-uint32_t BinaryenStoreGetAlign(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenStoreGetPtr(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenStoreGetValue(BinaryenExpressionRef expr);
-
-int32_t BinaryenConstGetValueI32(BinaryenExpressionRef expr);
-int64_t BinaryenConstGetValueI64(BinaryenExpressionRef expr);
-int32_t BinaryenConstGetValueI64Low(BinaryenExpressionRef expr);
-int32_t BinaryenConstGetValueI64High(BinaryenExpressionRef expr);
-float BinaryenConstGetValueF32(BinaryenExpressionRef expr);
-double BinaryenConstGetValueF64(BinaryenExpressionRef expr);
-void BinaryenConstGetValueV128(BinaryenExpressionRef expr, uint8_t* out);
-
-BinaryenOp BinaryenUnaryGetOp(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenUnaryGetValue(BinaryenExpressionRef expr);
-
-BinaryenOp BinaryenBinaryGetOp(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenBinaryGetLeft(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenBinaryGetRight(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenSelectGetIfTrue(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSelectGetIfFalse(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSelectGetCondition(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenDropGetValue(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenReturnGetValue(BinaryenExpressionRef expr);
-
-BinaryenOp BinaryenAtomicRMWGetOp(BinaryenExpressionRef expr);
-uint32_t BinaryenAtomicRMWGetBytes(BinaryenExpressionRef expr);
-uint32_t BinaryenAtomicRMWGetOffset(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenAtomicRMWGetPtr(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenAtomicRMWGetValue(BinaryenExpressionRef expr);
-
-uint32_t BinaryenAtomicCmpxchgGetBytes(BinaryenExpressionRef expr);
-uint32_t BinaryenAtomicCmpxchgGetOffset(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenAtomicCmpxchgGetPtr(BinaryenExpressionRef expr);
-BinaryenExpressionRef
+BINARYEN_API BinaryenExpressionRef BinaryenHost(BinaryenModuleRef module,
+ BinaryenOp op,
+ const char* name,
+ BinaryenExpressionRef* operands,
+ BinaryenIndex numOperands);
+BINARYEN_API BinaryenExpressionRef BinaryenNop(BinaryenModuleRef module);
+BINARYEN_API BinaryenExpressionRef
+BinaryenUnreachable(BinaryenModuleRef module);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicLoad(BinaryenModuleRef module,
+ uint32_t bytes,
+ uint32_t offset,
+ BinaryenType type,
+ BinaryenExpressionRef ptr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicStore(BinaryenModuleRef module,
+ uint32_t bytes,
+ uint32_t offset,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef value,
+ BinaryenType type);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicRMW(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenIndex bytes,
+ BinaryenIndex offset,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef value,
+ BinaryenType type);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicCmpxchg(BinaryenModuleRef module,
+ BinaryenIndex bytes,
+ BinaryenIndex offset,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef expected,
+ BinaryenExpressionRef replacement,
+ BinaryenType type);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicWait(BinaryenModuleRef module,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef expected,
+ BinaryenExpressionRef timeout,
+ BinaryenType type);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicNotify(BinaryenModuleRef module,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef notifyCount);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicFence(BinaryenModuleRef module);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDExtract(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef vec,
+ uint8_t index);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDReplace(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef vec,
+ uint8_t index,
+ BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDShuffle(BinaryenModuleRef module,
+ BinaryenExpressionRef left,
+ BinaryenExpressionRef right,
+ const uint8_t mask[16]);
+BINARYEN_API BinaryenExpressionRef BinaryenSIMDTernary(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef a,
+ BinaryenExpressionRef b,
+ BinaryenExpressionRef c);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDShift(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef vec,
+ BinaryenExpressionRef shift);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryInit(BinaryenModuleRef module,
+ uint32_t segment,
+ BinaryenExpressionRef dest,
+ BinaryenExpressionRef offset,
+ BinaryenExpressionRef size);
+BINARYEN_API BinaryenExpressionRef BinaryenDataDrop(BinaryenModuleRef module,
+ uint32_t segment);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryCopy(BinaryenModuleRef module,
+ BinaryenExpressionRef dest,
+ BinaryenExpressionRef source,
+ BinaryenExpressionRef size);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryFill(BinaryenModuleRef module,
+ BinaryenExpressionRef dest,
+ BinaryenExpressionRef value,
+ BinaryenExpressionRef size);
+BINARYEN_API BinaryenExpressionRef BinaryenTry(BinaryenModuleRef module,
+ BinaryenExpressionRef body,
+ BinaryenExpressionRef catchBody);
+BINARYEN_API BinaryenExpressionRef
+BinaryenThrow(BinaryenModuleRef module,
+ const char* event,
+ BinaryenExpressionRef* operands,
+ BinaryenIndex numOperands);
+BINARYEN_API BinaryenExpressionRef
+BinaryenRethrow(BinaryenModuleRef module, BinaryenExpressionRef exnref);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBrOnExn(BinaryenModuleRef module,
+ const char* name,
+ const char* eventName,
+ BinaryenExpressionRef exnref);
+BINARYEN_API BinaryenExpressionRef BinaryenPush(BinaryenModuleRef module,
+ BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenPop(BinaryenModuleRef module,
+ BinaryenType type);
+
+BINARYEN_API BinaryenExpressionId
+BinaryenExpressionGetId(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenType BinaryenExpressionGetType(BinaryenExpressionRef expr);
+BINARYEN_API void BinaryenExpressionPrint(BinaryenExpressionRef expr);
+
+BINARYEN_API const char* BinaryenBlockGetName(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenIndex
+BinaryenBlockGetNumChildren(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBlockGetChild(BinaryenExpressionRef expr, BinaryenIndex index);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenIfGetCondition(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenIfGetIfTrue(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenIfGetIfFalse(BinaryenExpressionRef expr);
+
+BINARYEN_API const char* BinaryenLoopGetName(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenLoopGetBody(BinaryenExpressionRef expr);
+
+BINARYEN_API const char* BinaryenBreakGetName(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBreakGetCondition(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBreakGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenIndex
+BinaryenSwitchGetNumNames(BinaryenExpressionRef expr);
+BINARYEN_API const char* BinaryenSwitchGetName(BinaryenExpressionRef expr,
+ BinaryenIndex index);
+BINARYEN_API const char*
+BinaryenSwitchGetDefaultName(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSwitchGetCondition(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSwitchGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API const char* BinaryenCallGetTarget(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenIndex
+BinaryenCallGetNumOperands(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenCallGetOperand(BinaryenExpressionRef expr, BinaryenIndex index);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenCallIndirectGetTarget(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenIndex
+BinaryenCallIndirectGetNumOperands(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenCallIndirectGetOperand(BinaryenExpressionRef expr, BinaryenIndex index);
+
+BINARYEN_API BinaryenIndex BinaryenLocalGetGetIndex(BinaryenExpressionRef expr);
+
+BINARYEN_API int BinaryenLocalSetIsTee(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenIndex BinaryenLocalSetGetIndex(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenLocalSetGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API const char* BinaryenGlobalGetGetName(BinaryenExpressionRef expr);
+
+BINARYEN_API const char* BinaryenGlobalSetGetName(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenGlobalSetGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenOp BinaryenHostGetOp(BinaryenExpressionRef expr);
+BINARYEN_API const char* BinaryenHostGetNameOperand(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenIndex
+BinaryenHostGetNumOperands(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenHostGetOperand(BinaryenExpressionRef expr, BinaryenIndex index);
+
+BINARYEN_API int BinaryenLoadIsAtomic(BinaryenExpressionRef expr);
+BINARYEN_API int BinaryenLoadIsSigned(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t BinaryenLoadGetOffset(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t BinaryenLoadGetBytes(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t BinaryenLoadGetAlign(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenLoadGetPtr(BinaryenExpressionRef expr);
+
+BINARYEN_API int BinaryenStoreIsAtomic(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t BinaryenStoreGetBytes(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t BinaryenStoreGetOffset(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t BinaryenStoreGetAlign(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStoreGetPtr(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStoreGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API int32_t BinaryenConstGetValueI32(BinaryenExpressionRef expr);
+BINARYEN_API int64_t BinaryenConstGetValueI64(BinaryenExpressionRef expr);
+BINARYEN_API int32_t BinaryenConstGetValueI64Low(BinaryenExpressionRef expr);
+BINARYEN_API int32_t BinaryenConstGetValueI64High(BinaryenExpressionRef expr);
+BINARYEN_API float BinaryenConstGetValueF32(BinaryenExpressionRef expr);
+BINARYEN_API double BinaryenConstGetValueF64(BinaryenExpressionRef expr);
+BINARYEN_API void BinaryenConstGetValueV128(BinaryenExpressionRef expr,
+ uint8_t* out);
+
+BINARYEN_API BinaryenOp BinaryenUnaryGetOp(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenUnaryGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenOp BinaryenBinaryGetOp(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBinaryGetLeft(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBinaryGetRight(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenSelectGetIfTrue(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSelectGetIfFalse(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSelectGetCondition(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenDropGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenReturnGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenOp BinaryenAtomicRMWGetOp(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t BinaryenAtomicRMWGetBytes(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t BinaryenAtomicRMWGetOffset(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicRMWGetPtr(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicRMWGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API uint32_t BinaryenAtomicCmpxchgGetBytes(BinaryenExpressionRef expr);
+BINARYEN_API uint32_t
+BinaryenAtomicCmpxchgGetOffset(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicCmpxchgGetPtr(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
BinaryenAtomicCmpxchgGetExpected(BinaryenExpressionRef expr);
-BinaryenExpressionRef
+BINARYEN_API BinaryenExpressionRef
BinaryenAtomicCmpxchgGetReplacement(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenAtomicWaitGetPtr(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenAtomicWaitGetExpected(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenAtomicWaitGetTimeout(BinaryenExpressionRef expr);
-BinaryenType BinaryenAtomicWaitGetExpectedType(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenAtomicNotifyGetPtr(BinaryenExpressionRef expr);
-BinaryenExpressionRef
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicWaitGetPtr(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicWaitGetExpected(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicWaitGetTimeout(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenType
+BinaryenAtomicWaitGetExpectedType(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenAtomicNotifyGetPtr(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
BinaryenAtomicNotifyGetNotifyCount(BinaryenExpressionRef expr);
-uint8_t BinaryenAtomicFenceGetOrder(BinaryenExpressionRef expr);
-
-BinaryenOp BinaryenSIMDExtractGetOp(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDExtractGetVec(BinaryenExpressionRef expr);
-uint8_t BinaryenSIMDExtractGetIndex(BinaryenExpressionRef expr);
-
-BinaryenOp BinaryenSIMDReplaceGetOp(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDReplaceGetVec(BinaryenExpressionRef expr);
-uint8_t BinaryenSIMDReplaceGetIndex(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDReplaceGetValue(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenSIMDShuffleGetLeft(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDShuffleGetRight(BinaryenExpressionRef expr);
-void BinaryenSIMDShuffleGetMask(BinaryenExpressionRef expr, uint8_t* mask);
-
-BinaryenOp BinaryenSIMDTernaryGetOp(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDTernaryGetA(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDTernaryGetB(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDTernaryGetC(BinaryenExpressionRef expr);
-
-BinaryenOp BinaryenSIMDShiftGetOp(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDShiftGetVec(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenSIMDShiftGetShift(BinaryenExpressionRef expr);
-
-uint32_t BinaryenMemoryInitGetSegment(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenMemoryInitGetDest(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenMemoryInitGetOffset(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenMemoryInitGetSize(BinaryenExpressionRef expr);
-
-uint32_t BinaryenDataDropGetSegment(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenMemoryCopyGetDest(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenMemoryCopyGetSource(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenMemoryCopyGetSize(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenMemoryFillGetDest(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenMemoryFillGetValue(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenMemoryFillGetSize(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenTryGetBody(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenTryGetCatchBody(BinaryenExpressionRef expr);
-
-const char* BinaryenThrowGetEvent(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenThrowGetOperand(BinaryenExpressionRef expr,
- BinaryenIndex index);
-BinaryenIndex BinaryenThrowGetNumOperands(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenRethrowGetExnref(BinaryenExpressionRef expr);
-
-const char* BinaryenBrOnExnGetEvent(BinaryenExpressionRef expr);
-const char* BinaryenBrOnExnGetName(BinaryenExpressionRef expr);
-BinaryenExpressionRef BinaryenBrOnExnGetExnref(BinaryenExpressionRef expr);
-
-BinaryenExpressionRef BinaryenPushGetValue(BinaryenExpressionRef expr);
+BINARYEN_API uint8_t BinaryenAtomicFenceGetOrder(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenOp BinaryenSIMDExtractGetOp(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDExtractGetVec(BinaryenExpressionRef expr);
+BINARYEN_API uint8_t BinaryenSIMDExtractGetIndex(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenOp BinaryenSIMDReplaceGetOp(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDReplaceGetVec(BinaryenExpressionRef expr);
+BINARYEN_API uint8_t BinaryenSIMDReplaceGetIndex(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDReplaceGetValue(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDShuffleGetLeft(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDShuffleGetRight(BinaryenExpressionRef expr);
+BINARYEN_API void BinaryenSIMDShuffleGetMask(BinaryenExpressionRef expr,
+ uint8_t* mask);
+
+BINARYEN_API BinaryenOp BinaryenSIMDTernaryGetOp(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDTernaryGetA(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDTernaryGetB(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDTernaryGetC(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenOp BinaryenSIMDShiftGetOp(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDShiftGetVec(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenSIMDShiftGetShift(BinaryenExpressionRef expr);
+
+BINARYEN_API uint32_t BinaryenMemoryInitGetSegment(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryInitGetDest(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryInitGetOffset(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryInitGetSize(BinaryenExpressionRef expr);
+
+BINARYEN_API uint32_t BinaryenDataDropGetSegment(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryCopyGetDest(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryCopyGetSource(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryCopyGetSize(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryFillGetDest(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryFillGetValue(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenMemoryFillGetSize(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenTryGetBody(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenTryGetCatchBody(BinaryenExpressionRef expr);
+
+BINARYEN_API const char* BinaryenThrowGetEvent(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenThrowGetOperand(BinaryenExpressionRef expr, BinaryenIndex index);
+BINARYEN_API BinaryenIndex
+BinaryenThrowGetNumOperands(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenRethrowGetExnref(BinaryenExpressionRef expr);
+
+BINARYEN_API const char* BinaryenBrOnExnGetEvent(BinaryenExpressionRef expr);
+BINARYEN_API const char* BinaryenBrOnExnGetName(BinaryenExpressionRef expr);
+BINARYEN_API BinaryenExpressionRef
+BinaryenBrOnExnGetExnref(BinaryenExpressionRef expr);
+
+BINARYEN_API BinaryenExpressionRef
+BinaryenPushGetValue(BinaryenExpressionRef expr);
// Functions
@@ -926,46 +1020,49 @@ typedef void* BinaryenFunctionRef;
// and then vars, so if you have one param it will be at index
// 0 (and written $0), and if you also have 2 vars they will be
// at indexes 1 and 2, etc., that is, they share an index space.
-BinaryenFunctionRef BinaryenAddFunction(BinaryenModuleRef module,
- const char* name,
- BinaryenFunctionTypeRef type,
- BinaryenType* varTypes,
- BinaryenIndex numVarTypes,
- BinaryenExpressionRef body);
+BINARYEN_API BinaryenFunctionRef
+BinaryenAddFunction(BinaryenModuleRef module,
+ const char* name,
+ BinaryenFunctionTypeRef type,
+ BinaryenType* varTypes,
+ BinaryenIndex numVarTypes,
+ BinaryenExpressionRef body);
// Gets a function reference by name.
-BinaryenFunctionRef BinaryenGetFunction(BinaryenModuleRef module,
- const char* name);
+BINARYEN_API BinaryenFunctionRef BinaryenGetFunction(BinaryenModuleRef module,
+ const char* name);
// Removes a function by name.
-void BinaryenRemoveFunction(BinaryenModuleRef module, const char* name);
+BINARYEN_API void BinaryenRemoveFunction(BinaryenModuleRef module,
+ const char* name);
// Imports
-void BinaryenAddFunctionImport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalModuleName,
- const char* externalBaseName,
- BinaryenFunctionTypeRef functionType);
-void BinaryenAddTableImport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalModuleName,
- const char* externalBaseName);
-void BinaryenAddMemoryImport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalModuleName,
- const char* externalBaseName,
- uint8_t shared);
-void BinaryenAddGlobalImport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalModuleName,
- const char* externalBaseName,
- BinaryenType globalType,
- int mutable_);
-void BinaryenAddEventImport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalModuleName,
- const char* externalBaseName,
- uint32_t attribute,
- BinaryenFunctionTypeRef eventType);
+BINARYEN_API void
+BinaryenAddFunctionImport(BinaryenModuleRef module,
+ const char* internalName,
+ const char* externalModuleName,
+ const char* externalBaseName,
+ BinaryenFunctionTypeRef functionType);
+BINARYEN_API void BinaryenAddTableImport(BinaryenModuleRef module,
+ const char* internalName,
+ const char* externalModuleName,
+ const char* externalBaseName);
+BINARYEN_API void BinaryenAddMemoryImport(BinaryenModuleRef module,
+ const char* internalName,
+ const char* externalModuleName,
+ const char* externalBaseName,
+ uint8_t shared);
+BINARYEN_API void BinaryenAddGlobalImport(BinaryenModuleRef module,
+ const char* internalName,
+ const char* externalModuleName,
+ const char* externalBaseName,
+ BinaryenType globalType,
+ int mutable_);
+BINARYEN_API void BinaryenAddEventImport(BinaryenModuleRef module,
+ const char* internalName,
+ const char* externalModuleName,
+ const char* externalBaseName,
+ uint32_t attribute,
+ BinaryenFunctionTypeRef eventType);
// Exports
@@ -974,150 +1071,155 @@ typedef void* BinaryenExportRef;
WASM_DEPRECATED BinaryenExportRef BinaryenAddExport(BinaryenModuleRef module,
const char* internalName,
const char* externalName);
-BinaryenExportRef BinaryenAddFunctionExport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalName);
-BinaryenExportRef BinaryenAddTableExport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalName);
-BinaryenExportRef BinaryenAddMemoryExport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalName);
-BinaryenExportRef BinaryenAddGlobalExport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalName);
-BinaryenExportRef BinaryenAddEventExport(BinaryenModuleRef module,
- const char* internalName,
- const char* externalName);
-void BinaryenRemoveExport(BinaryenModuleRef module, const char* externalName);
+BINARYEN_API BinaryenExportRef BinaryenAddFunctionExport(
+ BinaryenModuleRef module, const char* internalName, const char* externalName);
+BINARYEN_API BinaryenExportRef BinaryenAddTableExport(BinaryenModuleRef module,
+ const char* internalName,
+ const char* externalName);
+BINARYEN_API BinaryenExportRef BinaryenAddMemoryExport(
+ BinaryenModuleRef module, const char* internalName, const char* externalName);
+BINARYEN_API BinaryenExportRef BinaryenAddGlobalExport(
+ BinaryenModuleRef module, const char* internalName, const char* externalName);
+BINARYEN_API BinaryenExportRef BinaryenAddEventExport(BinaryenModuleRef module,
+ const char* internalName,
+ const char* externalName);
+BINARYEN_API void BinaryenRemoveExport(BinaryenModuleRef module,
+ const char* externalName);
// Globals
typedef void* BinaryenGlobalRef;
-BinaryenGlobalRef BinaryenAddGlobal(BinaryenModuleRef module,
- const char* name,
- BinaryenType type,
- int8_t mutable_,
- BinaryenExpressionRef init);
+BINARYEN_API BinaryenGlobalRef BinaryenAddGlobal(BinaryenModuleRef module,
+ const char* name,
+ BinaryenType type,
+ int8_t mutable_,
+ BinaryenExpressionRef init);
// Gets a global reference by name.
-BinaryenGlobalRef BinaryenGetGlobal(BinaryenModuleRef module, const char* name);
-void BinaryenRemoveGlobal(BinaryenModuleRef module, const char* name);
+BINARYEN_API BinaryenGlobalRef BinaryenGetGlobal(BinaryenModuleRef module,
+ const char* name);
+BINARYEN_API void BinaryenRemoveGlobal(BinaryenModuleRef module,
+ const char* name);
// Events
typedef void* BinaryenEventRef;
-BinaryenEventRef BinaryenAddEvent(BinaryenModuleRef module,
- const char* name,
- uint32_t attribute,
- BinaryenFunctionTypeRef type);
-BinaryenEventRef BinaryenGetEvent(BinaryenModuleRef module, const char* name);
-void BinaryenRemoveEvent(BinaryenModuleRef module, const char* name);
+BINARYEN_API BinaryenEventRef BinaryenAddEvent(BinaryenModuleRef module,
+ const char* name,
+ uint32_t attribute,
+ BinaryenFunctionTypeRef type);
+BINARYEN_API BinaryenEventRef BinaryenGetEvent(BinaryenModuleRef module,
+ const char* name);
+BINARYEN_API void BinaryenRemoveEvent(BinaryenModuleRef module,
+ const char* name);
// Function table. One per module
-void BinaryenSetFunctionTable(BinaryenModuleRef module,
- BinaryenIndex initial,
- BinaryenIndex maximum,
- const char** funcNames,
- BinaryenIndex numFuncNames);
+BINARYEN_API void BinaryenSetFunctionTable(BinaryenModuleRef module,
+ BinaryenIndex initial,
+ BinaryenIndex maximum,
+ const char** funcNames,
+ BinaryenIndex numFuncNames);
// Memory. One per module
// Each segment has data in segments, a start offset in segmentOffsets, and a
// size in segmentSizes. exportName can be NULL
-void BinaryenSetMemory(BinaryenModuleRef module,
- BinaryenIndex initial,
- BinaryenIndex maximum,
- const char* exportName,
- const char** segments,
- int8_t* segmentPassive,
- BinaryenExpressionRef* segmentOffsets,
- BinaryenIndex* segmentSizes,
- BinaryenIndex numSegments,
- uint8_t shared);
+BINARYEN_API void BinaryenSetMemory(BinaryenModuleRef module,
+ BinaryenIndex initial,
+ BinaryenIndex maximum,
+ const char* exportName,
+ const char** segments,
+ int8_t* segmentPassive,
+ BinaryenExpressionRef* segmentOffsets,
+ BinaryenIndex* segmentSizes,
+ BinaryenIndex numSegments,
+ uint8_t shared);
// Start function. One per module
-void BinaryenSetStart(BinaryenModuleRef module, BinaryenFunctionRef start);
+BINARYEN_API void BinaryenSetStart(BinaryenModuleRef module,
+ BinaryenFunctionRef start);
// Features
// These control what features are allowed when validation and in passes.
-BinaryenFeatures BinaryenModuleGetFeatures(BinaryenModuleRef module);
-void BinaryenModuleSetFeatures(BinaryenModuleRef module,
- BinaryenFeatures features);
+BINARYEN_API BinaryenFeatures
+BinaryenModuleGetFeatures(BinaryenModuleRef module);
+BINARYEN_API void BinaryenModuleSetFeatures(BinaryenModuleRef module,
+ BinaryenFeatures features);
//
// ========== Module Operations ==========
//
// Parse a module in s-expression text format
-BinaryenModuleRef BinaryenModuleParse(const char* text);
+BINARYEN_API BinaryenModuleRef BinaryenModuleParse(const char* text);
// Print a module to stdout in s-expression text format. Useful for debugging.
-void BinaryenModulePrint(BinaryenModuleRef module);
+BINARYEN_API void BinaryenModulePrint(BinaryenModuleRef module);
// Print a module to stdout in asm.js syntax.
-void BinaryenModulePrintAsmjs(BinaryenModuleRef module);
+BINARYEN_API void BinaryenModulePrintAsmjs(BinaryenModuleRef module);
// Validate a module, showing errors on problems.
// @return 0 if an error occurred, 1 if validated succesfully
-int BinaryenModuleValidate(BinaryenModuleRef module);
+BINARYEN_API int BinaryenModuleValidate(BinaryenModuleRef module);
// Runs the standard optimization passes on the module. Uses the currently set
// global optimize and shrink level.
-void BinaryenModuleOptimize(BinaryenModuleRef module);
+BINARYEN_API void BinaryenModuleOptimize(BinaryenModuleRef module);
// Gets the currently set optimize level. Applies to all modules, globally.
// 0, 1, 2 correspond to -O0, -O1, -O2 (default), etc.
-int BinaryenGetOptimizeLevel(void);
+BINARYEN_API int BinaryenGetOptimizeLevel(void);
// Sets the optimization level to use. Applies to all modules, globally.
// 0, 1, 2 correspond to -O0, -O1, -O2 (default), etc.
-void BinaryenSetOptimizeLevel(int level);
+BINARYEN_API void BinaryenSetOptimizeLevel(int level);
// Gets the currently set shrink level. Applies to all modules, globally.
// 0, 1, 2 correspond to -O0, -Os (default), -Oz.
-int BinaryenGetShrinkLevel(void);
+BINARYEN_API int BinaryenGetShrinkLevel(void);
// Sets the shrink level to use. Applies to all modules, globally.
// 0, 1, 2 correspond to -O0, -Os (default), -Oz.
-void BinaryenSetShrinkLevel(int level);
+BINARYEN_API void BinaryenSetShrinkLevel(int level);
// Gets whether generating debug information is currently enabled or not.
// Applies to all modules, globally.
-int BinaryenGetDebugInfo(void);
+BINARYEN_API int BinaryenGetDebugInfo(void);
// Enables or disables debug information in emitted binaries.
// Applies to all modules, globally.
-void BinaryenSetDebugInfo(int on);
+BINARYEN_API void BinaryenSetDebugInfo(int on);
// Runs the specified passes on the module. Uses the currently set global
// optimize and shrink level.
-void BinaryenModuleRunPasses(BinaryenModuleRef module,
- const char** passes,
- BinaryenIndex numPasses);
+BINARYEN_API void BinaryenModuleRunPasses(BinaryenModuleRef module,
+ const char** passes,
+ BinaryenIndex numPasses);
// Auto-generate drop() operations where needed. This lets you generate code
// without worrying about where they are needed. (It is more efficient to do it
// yourself, but simpler to use autodrop).
-void BinaryenModuleAutoDrop(BinaryenModuleRef module);
+BINARYEN_API void BinaryenModuleAutoDrop(BinaryenModuleRef module);
// Serialize a module into binary form. Uses the currently set global debugInfo
// option.
// @return how many bytes were written. This will be less than or equal to
// outputSize
-size_t
-BinaryenModuleWrite(BinaryenModuleRef module, char* output, size_t outputSize);
+size_t BINARYEN_API BinaryenModuleWrite(BinaryenModuleRef module,
+ char* output,
+ size_t outputSize);
// Serialize a module in s-expression text format.
// @return how many bytes were written. This will be less than or equal to
// outputSize
-size_t BinaryenModuleWriteText(BinaryenModuleRef module,
- char* output,
- size_t outputSize);
+BINARYEN_API size_t BinaryenModuleWriteText(BinaryenModuleRef module,
+ char* output,
+ size_t outputSize);
typedef struct BinaryenBufferSizes {
size_t outputBytes;
@@ -1128,12 +1230,13 @@ typedef struct BinaryenBufferSizes {
// currently set global debugInfo option.
// @returns how many bytes were written. This will be less than or equal to
// outputSize
-BinaryenBufferSizes BinaryenModuleWriteWithSourceMap(BinaryenModuleRef module,
- const char* url,
- char* output,
- size_t outputSize,
- char* sourceMap,
- size_t sourceMapSize);
+BINARYEN_API BinaryenBufferSizes
+BinaryenModuleWriteWithSourceMap(BinaryenModuleRef module,
+ const char* url,
+ char* output,
+ size_t outputSize,
+ char* sourceMap,
+ size_t sourceMapSize);
// Result structure of BinaryenModuleAllocateAndWrite. Contained buffers have
// been allocated using malloc() and the user is expected to free() them
@@ -1149,146 +1252,160 @@ typedef struct BinaryenModuleAllocateAndWriteResult {
// option. Differs from BinaryenModuleWrite in that it implicitly allocates
// appropriate buffers using malloc(), and expects the user to free() them
// manually once not needed anymore.
-BinaryenModuleAllocateAndWriteResult
+BINARYEN_API BinaryenModuleAllocateAndWriteResult
BinaryenModuleAllocateAndWrite(BinaryenModuleRef module,
const char* sourceMapUrl);
// Serialize a module in s-expression form. Implicity allocates the returned
// char* with malloc(), and expects the user to free() them manually
// once not needed anymore.
-char* BinaryenModuleAllocateAndWriteText(BinaryenModuleRef* module);
+BINARYEN_API char*
+BinaryenModuleAllocateAndWriteText(BinaryenModuleRef* module);
// Deserialize a module from binary form.
-BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize);
+BINARYEN_API BinaryenModuleRef BinaryenModuleRead(char* input,
+ size_t inputSize);
// Execute a module in the Binaryen interpreter. This will create an instance of
// the module, run it in the interpreter - which means running the start method
// - and then destroying the instance.
-void BinaryenModuleInterpret(BinaryenModuleRef module);
+BINARYEN_API void BinaryenModuleInterpret(BinaryenModuleRef module);
// Adds a debug info file name to the module and returns its index.
-BinaryenIndex BinaryenModuleAddDebugInfoFileName(BinaryenModuleRef module,
- const char* filename);
+BINARYEN_API BinaryenIndex BinaryenModuleAddDebugInfoFileName(
+ BinaryenModuleRef module, const char* filename);
// Gets the name of the debug info file at the specified index. Returns `NULL`
// if it does not exist.
-const char* BinaryenModuleGetDebugInfoFileName(BinaryenModuleRef module,
- BinaryenIndex index);
+BINARYEN_API const char*
+BinaryenModuleGetDebugInfoFileName(BinaryenModuleRef module,
+ BinaryenIndex index);
//
// ======== FunctionType Operations ========
//
// Gets the name of the specified `FunctionType`.
-const char* BinaryenFunctionTypeGetName(BinaryenFunctionTypeRef ftype);
+BINARYEN_API const char*
+BinaryenFunctionTypeGetName(BinaryenFunctionTypeRef ftype);
// Gets the number of parameters of the specified `FunctionType`.
-BinaryenIndex BinaryenFunctionTypeGetNumParams(BinaryenFunctionTypeRef ftype);
+BINARYEN_API BinaryenIndex
+BinaryenFunctionTypeGetNumParams(BinaryenFunctionTypeRef ftype);
// Gets the type of the parameter at the specified index of the specified
// `FunctionType`.
-BinaryenType BinaryenFunctionTypeGetParam(BinaryenFunctionTypeRef ftype,
- BinaryenIndex index);
+BINARYEN_API BinaryenType BinaryenFunctionTypeGetParam(
+ BinaryenFunctionTypeRef ftype, BinaryenIndex index);
// Gets the result type of the specified `FunctionType`.
-BinaryenType BinaryenFunctionTypeGetResult(BinaryenFunctionTypeRef ftype);
+BINARYEN_API BinaryenType
+BinaryenFunctionTypeGetResult(BinaryenFunctionTypeRef ftype);
//
// ========== Function Operations ==========
//
// Gets the name of the specified `Function`.
-const char* BinaryenFunctionGetName(BinaryenFunctionRef func);
+BINARYEN_API const char* BinaryenFunctionGetName(BinaryenFunctionRef func);
// Gets the name of the `FunctionType` associated with the specified `Function`.
// May be `NULL` if the signature is implicit.
-const char* BinaryenFunctionGetType(BinaryenFunctionRef func);
+BINARYEN_API const char* BinaryenFunctionGetType(BinaryenFunctionRef func);
// Gets the number of parameters of the specified `Function`.
-BinaryenIndex BinaryenFunctionGetNumParams(BinaryenFunctionRef func);
+BINARYEN_API BinaryenIndex
+BinaryenFunctionGetNumParams(BinaryenFunctionRef func);
// Gets the type of the parameter at the specified index of the specified
// `Function`.
-BinaryenType BinaryenFunctionGetParam(BinaryenFunctionRef func,
- BinaryenIndex index);
+BINARYEN_API BinaryenType BinaryenFunctionGetParam(BinaryenFunctionRef func,
+ BinaryenIndex index);
// Gets the result type of the specified `Function`.
-BinaryenType BinaryenFunctionGetResult(BinaryenFunctionRef func);
+BINARYEN_API BinaryenType BinaryenFunctionGetResult(BinaryenFunctionRef func);
// Gets the number of additional locals within the specified `Function`.
-BinaryenIndex BinaryenFunctionGetNumVars(BinaryenFunctionRef func);
+BINARYEN_API BinaryenIndex BinaryenFunctionGetNumVars(BinaryenFunctionRef func);
// Gets the type of the additional local at the specified index within the
// specified `Function`.
-BinaryenType BinaryenFunctionGetVar(BinaryenFunctionRef func,
- BinaryenIndex index);
+BINARYEN_API BinaryenType BinaryenFunctionGetVar(BinaryenFunctionRef func,
+ BinaryenIndex index);
// Gets the body of the specified `Function`.
-BinaryenExpressionRef BinaryenFunctionGetBody(BinaryenFunctionRef func);
+BINARYEN_API BinaryenExpressionRef
+BinaryenFunctionGetBody(BinaryenFunctionRef func);
// Runs the standard optimization passes on the function. Uses the currently set
// global optimize and shrink level.
-void BinaryenFunctionOptimize(BinaryenFunctionRef func,
- BinaryenModuleRef module);
+BINARYEN_API void BinaryenFunctionOptimize(BinaryenFunctionRef func,
+ BinaryenModuleRef module);
// Runs the specified passes on the function. Uses the currently set global
// optimize and shrink level.
-void BinaryenFunctionRunPasses(BinaryenFunctionRef func,
- BinaryenModuleRef module,
- const char** passes,
- BinaryenIndex numPasses);
+BINARYEN_API void BinaryenFunctionRunPasses(BinaryenFunctionRef func,
+ BinaryenModuleRef module,
+ const char** passes,
+ BinaryenIndex numPasses);
// Sets the debug location of the specified `Expression` within the specified
// `Function`.
-void BinaryenFunctionSetDebugLocation(BinaryenFunctionRef func,
- BinaryenExpressionRef expr,
- BinaryenIndex fileIndex,
- BinaryenIndex lineNumber,
- BinaryenIndex columnNumber);
+BINARYEN_API void BinaryenFunctionSetDebugLocation(BinaryenFunctionRef func,
+ BinaryenExpressionRef expr,
+ BinaryenIndex fileIndex,
+ BinaryenIndex lineNumber,
+ BinaryenIndex columnNumber);
//
// ========== Global Operations ==========
//
// Gets the name of the specified `Global`.
-const char* BinaryenGlobalGetName(BinaryenGlobalRef global);
+BINARYEN_API const char* BinaryenGlobalGetName(BinaryenGlobalRef global);
// Gets the name of the `GlobalType` associated with the specified `Global`. May
// be `NULL` if the signature is implicit.
-BinaryenType BinaryenGlobalGetType(BinaryenGlobalRef global);
+BINARYEN_API BinaryenType BinaryenGlobalGetType(BinaryenGlobalRef global);
// Returns true if the specified `Global` is mutable.
-int BinaryenGlobalIsMutable(BinaryenGlobalRef global);
+BINARYEN_API int BinaryenGlobalIsMutable(BinaryenGlobalRef global);
// Gets the initialization expression of the specified `Global`.
-BinaryenExpressionRef BinaryenGlobalGetInitExpr(BinaryenGlobalRef global);
+BINARYEN_API BinaryenExpressionRef
+BinaryenGlobalGetInitExpr(BinaryenGlobalRef global);
//
// ========== Event Operations ==========
//
// Gets the name of the specified `Event`.
-const char* BinaryenEventGetName(BinaryenEventRef event);
+BINARYEN_API const char* BinaryenEventGetName(BinaryenEventRef event);
// Gets the attribute of the specified `Event`.
-int BinaryenEventGetAttribute(BinaryenEventRef event);
+BINARYEN_API int BinaryenEventGetAttribute(BinaryenEventRef event);
// Gets the name of the `FunctionType` associated with the specified `Event`.
-const char* BinaryenEventGetType(BinaryenEventRef event);
+BINARYEN_API const char* BinaryenEventGetType(BinaryenEventRef event);
// Gets the number of parameters of the specified `Event`.
-BinaryenIndex BinaryenEventGetNumParams(BinaryenEventRef event);
+BINARYEN_API BinaryenIndex BinaryenEventGetNumParams(BinaryenEventRef event);
// Gets the type of the parameter at the specified index of the specified
// `Event`.
-BinaryenType BinaryenEventGetParam(BinaryenEventRef event, BinaryenIndex index);
+BINARYEN_API BinaryenType BinaryenEventGetParam(BinaryenEventRef event,
+ BinaryenIndex index);
//
// ========== Import Operations ==========
//
// Gets the external module name of the specified import.
-const char* BinaryenFunctionImportGetModule(BinaryenFunctionRef import);
-const char* BinaryenGlobalImportGetModule(BinaryenGlobalRef import);
-const char* BinaryenEventImportGetModule(BinaryenEventRef import);
+BINARYEN_API const char*
+BinaryenFunctionImportGetModule(BinaryenFunctionRef import);
+BINARYEN_API const char*
+BinaryenGlobalImportGetModule(BinaryenGlobalRef import);
+BINARYEN_API const char* BinaryenEventImportGetModule(BinaryenEventRef import);
// Gets the external base name of the specified import.
-const char* BinaryenFunctionImportGetBase(BinaryenFunctionRef import);
-const char* BinaryenGlobalImportGetBase(BinaryenGlobalRef import);
-const char* BinaryenEventImportGetBase(BinaryenEventRef import);
+BINARYEN_API const char*
+BinaryenFunctionImportGetBase(BinaryenFunctionRef import);
+BINARYEN_API const char* BinaryenGlobalImportGetBase(BinaryenGlobalRef import);
+BINARYEN_API const char* BinaryenEventImportGetBase(BinaryenEventRef import);
//
// ========== Export Operations ==========
//
// Gets the external kind of the specified export.
-BinaryenExternalKind BinaryenExportGetKind(BinaryenExportRef export_);
+BINARYEN_API BinaryenExternalKind
+BinaryenExportGetKind(BinaryenExportRef export_);
// Gets the external name of the specified export.
-const char* BinaryenExportGetName(BinaryenExportRef export_);
+BINARYEN_API const char* BinaryenExportGetName(BinaryenExportRef export_);
// Gets the internal name of the specified export.
-const char* BinaryenExportGetValue(BinaryenExportRef export_);
+BINARYEN_API const char* BinaryenExportGetValue(BinaryenExportRef export_);
//
// ========== CFG / Relooper ==========
@@ -1303,32 +1420,33 @@ typedef void* RelooperRef;
typedef void* RelooperBlockRef;
// Create a relooper instance
-RelooperRef RelooperCreate(BinaryenModuleRef module);
+BINARYEN_API RelooperRef RelooperCreate(BinaryenModuleRef module);
// Create a basic block that ends with nothing, or with some simple branching
-RelooperBlockRef RelooperAddBlock(RelooperRef relooper,
- BinaryenExpressionRef code);
+BINARYEN_API RelooperBlockRef RelooperAddBlock(RelooperRef relooper,
+ BinaryenExpressionRef code);
// Create a branch to another basic block
// The branch can have code on it, that is executed as the branch happens. this
// is useful for phis. otherwise, code can be NULL
-void RelooperAddBranch(RelooperBlockRef from,
- RelooperBlockRef to,
- BinaryenExpressionRef condition,
- BinaryenExpressionRef code);
+BINARYEN_API void RelooperAddBranch(RelooperBlockRef from,
+ RelooperBlockRef to,
+ BinaryenExpressionRef condition,
+ BinaryenExpressionRef code);
// Create a basic block that ends a switch on a condition
-RelooperBlockRef RelooperAddBlockWithSwitch(RelooperRef relooper,
- BinaryenExpressionRef code,
- BinaryenExpressionRef condition);
+BINARYEN_API RelooperBlockRef
+RelooperAddBlockWithSwitch(RelooperRef relooper,
+ BinaryenExpressionRef code,
+ BinaryenExpressionRef condition);
// Create a switch-style branch to another basic block. The block's switch table
// will have these indexes going to that target
-void RelooperAddBranchForSwitch(RelooperBlockRef from,
- RelooperBlockRef to,
- BinaryenIndex* indexes,
- BinaryenIndex numIndexes,
- BinaryenExpressionRef code);
+BINARYEN_API void RelooperAddBranchForSwitch(RelooperBlockRef from,
+ RelooperBlockRef to,
+ BinaryenIndex* indexes,
+ BinaryenIndex numIndexes,
+ BinaryenExpressionRef code);
// Generate structed wasm control flow from the CFG of blocks and branches that
// were created on this relooper instance. This returns the rendered output, and
@@ -1337,9 +1455,8 @@ void RelooperAddBranchForSwitch(RelooperBlockRef from,
// @param labelHelper To render irreducible control flow, we may need a helper
// variable to guide us to the right target label. This value should be
// an index of an i32 local variable that is free for us to use.
-BinaryenExpressionRef RelooperRenderAndDispose(RelooperRef relooper,
- RelooperBlockRef entry,
- BinaryenIndex labelHelper);
+BINARYEN_API BinaryenExpressionRef RelooperRenderAndDispose(
+ RelooperRef relooper, RelooperBlockRef entry, BinaryenIndex labelHelper);
//
// ========= Other APIs =========
@@ -1353,7 +1470,7 @@ BinaryenExpressionRef RelooperRenderAndDispose(RelooperRef relooper,
// giving you the full compilable testcase.
// TODO: compile-time option to enable/disable this feature entirely at build
// time?
-void BinaryenSetAPITracing(int on);
+BINARYEN_API void BinaryenSetAPITracing(int on);
//
// ========= Utilities =========
@@ -1364,17 +1481,17 @@ void BinaryenSetAPITracing(int on);
// set of parameters as BinaryenAddFunctionType but instead of adding a new
// function signature, it returns a pointer to the existing signature or NULL if
// there is no such signature yet.
-BinaryenFunctionTypeRef
+BINARYEN_API BinaryenFunctionTypeRef
BinaryenGetFunctionTypeBySignature(BinaryenModuleRef module,
BinaryenType result,
BinaryenType* paramTypes,
BinaryenIndex numParams);
// Enable or disable coloring for the WASM printer
-void BinaryenSetColorsEnabled(int enabled);
+BINARYEN_API void BinaryenSetColorsEnabled(int enabled);
// Query whether color is enable for the WASM printer
-int BinaryenAreColorsEnabled();
+BINARYEN_API int BinaryenAreColorsEnabled();
#ifdef __cplusplus
} // extern "C"
#endif