diff options
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/binaryen-c.h | 1927 |
2 files changed, 1023 insertions, 905 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 89fc5d4e0..a03024b7f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -192,6 +192,7 @@ SET(binaryen_SOURCES ) IF(BUILD_STATIC_LIB) ADD_LIBRARY(binaryen STATIC ${binaryen_SOURCES}) + ADD_DEFINITIONS(-DBUILD_STATIC_LIBRARY) ELSE() ADD_LIBRARY(binaryen SHARED ${binaryen_SOURCES}) ENDIF() 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 |