mirror of
https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git
synced 2025-11-13 03:35:55 +08:00
2133 lines
77 KiB
TypeScript
2133 lines
77 KiB
TypeScript
declare module Binaryen {
|
|
|
|
type Type = number;
|
|
|
|
const none: Type;
|
|
const i32: Type;
|
|
const i64: Type;
|
|
const f32: Type;
|
|
const f64: Type;
|
|
const v128: Type;
|
|
const funcref: Type;
|
|
const externref: Type;
|
|
const anyref: Type;
|
|
const eqref: Type;
|
|
const i31ref: Type;
|
|
const dataref: Type;
|
|
const unreachable: Type;
|
|
const auto: Type;
|
|
|
|
function createType(types: Type[]): Type;
|
|
function expandType(type: Type): Type[];
|
|
|
|
const enum ExpressionIds {
|
|
Invalid,
|
|
Block,
|
|
If,
|
|
Loop,
|
|
Break,
|
|
Switch,
|
|
Call,
|
|
CallIndirect,
|
|
LocalGet,
|
|
LocalSet,
|
|
GlobalGet,
|
|
GlobalSet,
|
|
Load,
|
|
Store,
|
|
Const,
|
|
Unary,
|
|
Binary,
|
|
Select,
|
|
Drop,
|
|
Return,
|
|
MemorySize,
|
|
MemoryGrow,
|
|
Nop,
|
|
Unreachable,
|
|
AtomicCmpxchg,
|
|
AtomicRMW,
|
|
AtomicWait,
|
|
AtomicNotify,
|
|
AtomicFence,
|
|
SIMDExtract,
|
|
SIMDReplace,
|
|
SIMDShuffle,
|
|
SIMDTernary,
|
|
SIMDShift,
|
|
SIMDLoad,
|
|
MemoryInit,
|
|
DataDrop,
|
|
MemoryCopy,
|
|
MemoryFill,
|
|
RefNull,
|
|
RefIsNull,
|
|
RefFunc,
|
|
RefEq,
|
|
Try,
|
|
Throw,
|
|
Rethrow,
|
|
TupleMake,
|
|
TupleExtract,
|
|
Pop,
|
|
I31New,
|
|
I31Get,
|
|
CallRef,
|
|
RefTest,
|
|
RefCast,
|
|
BrOnCast,
|
|
RttCanon,
|
|
RttSub,
|
|
StructNew,
|
|
StructGet,
|
|
StructSet,
|
|
ArrayNew,
|
|
ArrayGet,
|
|
ArraySet,
|
|
ArrayLen
|
|
}
|
|
|
|
const InvalidId: ExpressionIds;
|
|
const BlockId: ExpressionIds;
|
|
const IfId: ExpressionIds;
|
|
const LoopId: ExpressionIds;
|
|
const BreakId: ExpressionIds;
|
|
const SwitchId: ExpressionIds;
|
|
const CallId: ExpressionIds;
|
|
const CallIndirectId: ExpressionIds;
|
|
const LocalGetId: ExpressionIds;
|
|
const LocalSetId: ExpressionIds;
|
|
const GlobalGetId: ExpressionIds;
|
|
const GlobalSetId: ExpressionIds;
|
|
const TableGetId: ExpressionIds;
|
|
const TableSetId: ExpressionIds;
|
|
const TableSizeId: ExpressionIds;
|
|
const TableGrowId: ExpressionIds;
|
|
const LoadId: ExpressionIds;
|
|
const StoreId: ExpressionIds;
|
|
const ConstId: ExpressionIds;
|
|
const UnaryId: ExpressionIds;
|
|
const BinaryId: ExpressionIds;
|
|
const SelectId: ExpressionIds;
|
|
const DropId: ExpressionIds;
|
|
const ReturnId: ExpressionIds;
|
|
const NopId: ExpressionIds;
|
|
const UnreachableId: ExpressionIds;
|
|
const PopId: ExpressionIds;
|
|
const MemorySizeId: ExpressionIds;
|
|
const MemoryGrowId: ExpressionIds;
|
|
const AtomicRMWId: ExpressionIds;
|
|
const AtomicCmpxchgId: ExpressionIds;
|
|
const AtomicWaitId: ExpressionIds;
|
|
const AtomicNotifyId: ExpressionIds;
|
|
const AtomicFenceId: ExpressionIds;
|
|
const SIMDExtractId: ExpressionIds;
|
|
const SIMDReplaceId: ExpressionIds;
|
|
const SIMDShuffleId: ExpressionIds;
|
|
const SIMDTernaryId: ExpressionIds;
|
|
const SIMDShiftId: ExpressionIds;
|
|
const SIMDLoadId: ExpressionIds;
|
|
const SIMDLoadStoreLaneId: ExpressionIds;
|
|
const MemoryInitId: ExpressionIds;
|
|
const DataDropId: ExpressionIds;
|
|
const MemoryCopyId: ExpressionIds;
|
|
const MemoryFillId: ExpressionIds;
|
|
const RefNullId: ExpressionIds;
|
|
const RefIsId: ExpressionIds;
|
|
const RefAsId: ExpressionIds;
|
|
const RefFuncId: ExpressionIds;
|
|
const RefEqId: ExpressionIds;
|
|
const TryId: ExpressionIds;
|
|
const ThrowId: ExpressionIds;
|
|
const RethrowId: ExpressionIds;
|
|
const TupleMakeId: ExpressionIds;
|
|
const TupleExtractId: ExpressionIds;
|
|
const I31NewId: ExpressionIds;
|
|
const I31GetId: ExpressionIds;
|
|
const CallRefId: ExpressionIds;
|
|
const RefTestId: ExpressionIds;
|
|
const RefCastId: ExpressionIds;
|
|
const BrOnCastId: ExpressionIds;
|
|
const RttCanonId: ExpressionIds;
|
|
const RttSubId: ExpressionIds;
|
|
const StructNewId: ExpressionIds;
|
|
const StructGetId: ExpressionIds;
|
|
const StructSetId: ExpressionIds;
|
|
const ArrayNewId: ExpressionIds;
|
|
const ArrayGetId: ExpressionIds;
|
|
const ArraySetId: ExpressionIds;
|
|
const ArrayLenId: ExpressionIds;
|
|
|
|
const enum ExternalKinds {
|
|
Function,
|
|
Table,
|
|
Memory,
|
|
Global,
|
|
Tag
|
|
}
|
|
|
|
const ExternalFunction: ExternalKinds;
|
|
const ExternalTable: ExternalKinds;
|
|
const ExternalMemory: ExternalKinds;
|
|
const ExternalGlobal: ExternalKinds;
|
|
const ExternalTag: ExternalKinds;
|
|
|
|
enum Features {
|
|
MVP,
|
|
Atomics,
|
|
BulkMemory,
|
|
MutableGlobals,
|
|
NontrappingFPToInt,
|
|
SignExt,
|
|
SIMD128,
|
|
ExceptionHandling,
|
|
TailCall,
|
|
ReferenceTypes,
|
|
Multivalue,
|
|
GC,
|
|
Memory64,
|
|
TypedFunctionReferences,
|
|
RelaxedSIMD,
|
|
All
|
|
}
|
|
|
|
const enum Operations {
|
|
ClzInt32,
|
|
CtzInt32,
|
|
PopcntInt32,
|
|
NegFloat32,
|
|
AbsFloat32,
|
|
CeilFloat32,
|
|
FloorFloat32,
|
|
TruncFloat32,
|
|
NearestFloat32,
|
|
SqrtFloat32,
|
|
EqZInt32,
|
|
ClzInt64,
|
|
CtzInt64,
|
|
PopcntInt64,
|
|
NegFloat64,
|
|
AbsFloat64,
|
|
CeilFloat64,
|
|
FloorFloat64,
|
|
TruncFloat64,
|
|
NearestFloat64,
|
|
SqrtFloat64,
|
|
EqZInt64,
|
|
ExtendSInt32,
|
|
ExtendUInt32,
|
|
WrapInt64,
|
|
TruncSFloat32ToInt32,
|
|
TruncSFloat32ToInt64,
|
|
TruncUFloat32ToInt32,
|
|
TruncUFloat32ToInt64,
|
|
TruncSFloat64ToInt32,
|
|
TruncSFloat64ToInt64,
|
|
TruncUFloat64ToInt32,
|
|
TruncUFloat64ToInt64,
|
|
TruncSatSFloat32ToInt32,
|
|
TruncSatSFloat32ToInt64,
|
|
TruncSatUFloat32ToInt32,
|
|
TruncSatUFloat32ToInt64,
|
|
TruncSatSFloat64ToInt32,
|
|
TruncSatSFloat64ToInt64,
|
|
TruncSatUFloat64ToInt32,
|
|
TruncSatUFloat64ToInt64,
|
|
ReinterpretFloat32,
|
|
ReinterpretFloat64,
|
|
ConvertSInt32ToFloat32,
|
|
ConvertSInt32ToFloat64,
|
|
ConvertUInt32ToFloat32,
|
|
ConvertUInt32ToFloat64,
|
|
ConvertSInt64ToFloat32,
|
|
ConvertSInt64ToFloat64,
|
|
ConvertUInt64ToFloat32,
|
|
ConvertUInt64ToFloat64,
|
|
PromoteFloat32,
|
|
DemoteFloat64,
|
|
ReinterpretInt32,
|
|
ReinterpretInt64,
|
|
ExtendS8Int32,
|
|
ExtendS16Int32,
|
|
ExtendS8Int64,
|
|
ExtendS16Int64,
|
|
ExtendS32Int64,
|
|
AddInt32,
|
|
SubInt32,
|
|
MulInt32,
|
|
DivSInt32,
|
|
DivUInt32,
|
|
RemSInt32,
|
|
RemUInt32,
|
|
AndInt32,
|
|
OrInt32,
|
|
XorInt32,
|
|
ShlInt32,
|
|
ShrUInt32,
|
|
ShrSInt32,
|
|
RotLInt32,
|
|
RotRInt32,
|
|
EqInt32,
|
|
NeInt32,
|
|
LtSInt32,
|
|
LtUInt32,
|
|
LeSInt32,
|
|
LeUInt32,
|
|
GtSInt32,
|
|
GtUInt32,
|
|
GeSInt32,
|
|
GeUInt32,
|
|
AddInt64,
|
|
SubInt64,
|
|
MulInt64,
|
|
DivSInt64,
|
|
DivUInt64,
|
|
RemSInt64,
|
|
RemUInt64,
|
|
AndInt64,
|
|
OrInt64,
|
|
XorInt64,
|
|
ShlInt64,
|
|
ShrUInt64,
|
|
ShrSInt64,
|
|
RotLInt64,
|
|
RotRInt64,
|
|
EqInt64,
|
|
NeInt64,
|
|
LtSInt64,
|
|
LtUInt64,
|
|
LeSInt64,
|
|
LeUInt64,
|
|
GtSInt64,
|
|
GtUInt64,
|
|
GeSInt64,
|
|
GeUInt64,
|
|
AddFloat32,
|
|
SubFloat32,
|
|
MulFloat32,
|
|
DivFloat32,
|
|
CopySignFloat32,
|
|
MinFloat32,
|
|
MaxFloat32,
|
|
EqFloat32,
|
|
NeFloat32,
|
|
LtFloat32,
|
|
LeFloat32,
|
|
GtFloat32,
|
|
GeFloat32,
|
|
AddFloat64,
|
|
SubFloat64,
|
|
MulFloat64,
|
|
DivFloat64,
|
|
CopySignFloat64,
|
|
MinFloat64,
|
|
MaxFloat64,
|
|
EqFloat64,
|
|
NeFloat64,
|
|
LtFloat64,
|
|
LeFloat64,
|
|
GtFloat64,
|
|
GeFloat64,
|
|
AtomicRMWAdd,
|
|
AtomicRMWSub,
|
|
AtomicRMWAnd,
|
|
AtomicRMWOr,
|
|
AtomicRMWXor,
|
|
AtomicRMWXchg,
|
|
SplatVecI8x16,
|
|
ExtractLaneSVecI8x16,
|
|
ExtractLaneUVecI8x16,
|
|
ReplaceLaneVecI8x16,
|
|
SplatVecI16x8,
|
|
ExtractLaneSVecI16x8,
|
|
ExtractLaneUVecI16x8,
|
|
ReplaceLaneVecI16x8,
|
|
SplatVecI32x4,
|
|
ExtractLaneVecI32x4,
|
|
ReplaceLaneVecI32x4,
|
|
SplatVecI64x2,
|
|
ExtractLaneVecI64x2,
|
|
ReplaceLaneVecI64x2,
|
|
SplatVecF32x4,
|
|
ExtractLaneVecF32x4,
|
|
ReplaceLaneVecF32x4,
|
|
SplatVecF64x2,
|
|
ExtractLaneVecF64x2,
|
|
ReplaceLaneVecF64x2,
|
|
EqVecI8x16,
|
|
NeVecI8x16,
|
|
LtSVecI8x16,
|
|
LtUVecI8x16,
|
|
GtSVecI8x16,
|
|
GtUVecI8x16,
|
|
LeSVecI8x16,
|
|
LeUVecI8x16,
|
|
GeSVecI8x16,
|
|
GeUVecI8x16,
|
|
EqVecI16x8,
|
|
NeVecI16x8,
|
|
LtSVecI16x8,
|
|
LtUVecI16x8,
|
|
GtSVecI16x8,
|
|
GtUVecI16x8,
|
|
LeSVecI16x8,
|
|
LeUVecI16x8,
|
|
GeSVecI16x8,
|
|
GeUVecI16x8,
|
|
EqVecI32x4,
|
|
NeVecI32x4,
|
|
LtSVecI32x4,
|
|
LtUVecI32x4,
|
|
GtSVecI32x4,
|
|
GtUVecI32x4,
|
|
LeSVecI32x4,
|
|
LeUVecI32x4,
|
|
GeSVecI32x4,
|
|
GeUVecI32x4,
|
|
EqVecI64x2,
|
|
NeVecI64x2,
|
|
LtSVecI64x2,
|
|
GtSVecI64x2,
|
|
LeSVecI64x2,
|
|
GeSVecI64x2,
|
|
EqVecF32x4,
|
|
NeVecF32x4,
|
|
LtVecF32x4,
|
|
GtVecF32x4,
|
|
LeVecF32x4,
|
|
GeVecF32x4,
|
|
EqVecF64x2,
|
|
NeVecF64x2,
|
|
LtVecF64x2,
|
|
GtVecF64x2,
|
|
LeVecF64x2,
|
|
GeVecF64x2,
|
|
NotVec128,
|
|
AndVec128,
|
|
OrVec128,
|
|
XorVec128,
|
|
AndNotVec128,
|
|
BitselectVec128,
|
|
AnyTrueVec128,
|
|
PopcntVecI8x16,
|
|
AbsVecI8x16,
|
|
NegVecI8x16,
|
|
AllTrueVecI8x16,
|
|
BitmaskVecI8x16,
|
|
ShlVecI8x16,
|
|
ShrSVecI8x16,
|
|
ShrUVecI8x16,
|
|
AddVecI8x16,
|
|
AddSatSVecI8x16,
|
|
AddSatUVecI8x16,
|
|
SubVecI8x16,
|
|
SubSatSVecI8x16,
|
|
SubSatUVecI8x16,
|
|
MinSVecI8x16,
|
|
MinUVecI8x16,
|
|
MaxSVecI8x16,
|
|
MaxUVecI8x16,
|
|
AvgrUVecI8x16,
|
|
AbsVecI16x8,
|
|
NegVecI16x8,
|
|
AllTrueVecI16x8,
|
|
BitmaskVecI16x8,
|
|
ShlVecI16x8,
|
|
ShrSVecI16x8,
|
|
ShrUVecI16x8,
|
|
AddVecI16x8,
|
|
AddSatSVecI16x8,
|
|
AddSatUVecI16x8,
|
|
SubVecI16x8,
|
|
SubSatSVecI16x8,
|
|
SubSatUVecI16x8,
|
|
MulVecI16x8,
|
|
MinSVecI16x8,
|
|
MinUVecI16x8,
|
|
MaxSVecI16x8,
|
|
MaxUVecI16x8,
|
|
AvgrUVecI16x8,
|
|
Q15MulrSatSVecI16x8,
|
|
ExtMulLowSVecI16x8,
|
|
ExtMulHighSVecI16x8,
|
|
ExtMulLowUVecI16x8,
|
|
ExtMulHighUVecI16x8,
|
|
DotSVecI16x8ToVecI32x4,
|
|
ExtMulLowSVecI32x4,
|
|
ExtMulHighSVecI32x4,
|
|
ExtMulLowUVecI32x4,
|
|
ExtMulHighUVecI32x4,
|
|
AbsVecI32x4,
|
|
NegVecI32x4,
|
|
AllTrueVecI32x4,
|
|
BitmaskVecI32x4,
|
|
ShlVecI32x4,
|
|
ShrSVecI32x4,
|
|
ShrUVecI32x4,
|
|
AddVecI32x4,
|
|
SubVecI32x4,
|
|
MulVecI32x4,
|
|
MinSVecI32x4,
|
|
MinUVecI32x4,
|
|
MaxSVecI32x4,
|
|
MaxUVecI32x4,
|
|
AbsVecI64x2,
|
|
NegVecI64x2,
|
|
AllTrueVecI64x2,
|
|
BitmaskVecI64x2,
|
|
ShlVecI64x2,
|
|
ShrSVecI64x2,
|
|
ShrUVecI64x2,
|
|
AddVecI64x2,
|
|
SubVecI64x2,
|
|
MulVecI64x2,
|
|
ExtMulLowSVecI64x2,
|
|
ExtMulHighSVecI64x2,
|
|
ExtMulLowUVecI64x2,
|
|
ExtMulHighUVecI64x2,
|
|
AbsVecF32x4,
|
|
NegVecF32x4,
|
|
SqrtVecF32x4,
|
|
AddVecF32x4,
|
|
SubVecF32x4,
|
|
MulVecF32x4,
|
|
DivVecF32x4,
|
|
MinVecF32x4,
|
|
MaxVecF32x4,
|
|
PMinVecF32x4,
|
|
PMaxVecF32x4,
|
|
CeilVecF32x4,
|
|
FloorVecF32x4,
|
|
TruncVecF32x4,
|
|
NearestVecF32x4,
|
|
AbsVecF64x2,
|
|
NegVecF64x2,
|
|
SqrtVecF64x2,
|
|
AddVecF64x2,
|
|
SubVecF64x2,
|
|
MulVecF64x2,
|
|
DivVecF64x2,
|
|
MinVecF64x2,
|
|
MaxVecF64x2,
|
|
PMinVecF64x2,
|
|
PMaxVecF64x2,
|
|
CeilVecF64x2,
|
|
FloorVecF64x2,
|
|
TruncVecF64x2,
|
|
NearestVecF64x2,
|
|
ExtAddPairwiseSVecI8x16ToI16x8,
|
|
ExtAddPairwiseUVecI8x16ToI16x8,
|
|
ExtAddPairwiseSVecI16x8ToI32x4,
|
|
ExtAddPairwiseUVecI16x8ToI32x4,
|
|
TruncSatSVecF32x4ToVecI32x4,
|
|
TruncSatUVecF32x4ToVecI32x4,
|
|
ConvertSVecI32x4ToVecF32x4,
|
|
ConvertUVecI32x4ToVecF32x4,
|
|
Load8SplatVec128,
|
|
Load16SplatVec128,
|
|
Load32SplatVec128,
|
|
Load64SplatVec128,
|
|
Load8x8SVec128,
|
|
Load8x8UVec128,
|
|
Load16x4SVec128,
|
|
Load16x4UVec128,
|
|
Load32x2SVec128,
|
|
Load32x2UVec128,
|
|
Load32ZeroVec128,
|
|
Load64ZeroVec128,
|
|
Load8LaneVec128,
|
|
Load16LaneVec128,
|
|
Load32LaneVec128,
|
|
Load64LaneVec128,
|
|
Store8LaneVec128,
|
|
Store16LaneVec128,
|
|
Store32LaneVec128,
|
|
Store64LaneVec128,
|
|
NarrowSVecI16x8ToVecI8x16,
|
|
NarrowUVecI16x8ToVecI8x16,
|
|
NarrowSVecI32x4ToVecI16x8,
|
|
NarrowUVecI32x4ToVecI16x8,
|
|
ExtendLowSVecI8x16ToVecI16x8,
|
|
ExtendHighSVecI8x16ToVecI16x8,
|
|
ExtendLowUVecI8x16ToVecI16x8,
|
|
ExtendHighUVecI8x16ToVecI16x8,
|
|
ExtendLowSVecI16x8ToVecI32x4,
|
|
ExtendHighSVecI16x8ToVecI32x4,
|
|
ExtendLowUVecI16x8ToVecI32x4,
|
|
ExtendHighUVecI16x8ToVecI32x4,
|
|
ExtendLowSVecI32x4ToVecI64x2,
|
|
ExtendHighSVecI32x4ToVecI64x2,
|
|
ExtendLowUVecI32x4ToVecI64x2,
|
|
ExtendHighUVecI32x4ToVecI64x2,
|
|
ConvertLowSVecI32x4ToVecF64x2,
|
|
ConvertLowUVecI32x4ToVecF64x2,
|
|
TruncSatZeroSVecF64x2ToVecI32x4,
|
|
TruncSatZeroUVecF64x2ToVecI32x4,
|
|
DemoteZeroVecF64x2ToVecF32x4,
|
|
PromoteLowVecF32x4ToVecF64x2,
|
|
SwizzleVec8x16,
|
|
RefIsNull,
|
|
RefIsFunc,
|
|
RefIsData,
|
|
RefIsI31,
|
|
RefAsNonNull,
|
|
RefAsFunc,
|
|
RefAsData,
|
|
RefAsI31
|
|
}
|
|
|
|
const ClzInt32: Operations;
|
|
const CtzInt32: Operations;
|
|
const PopcntInt32: Operations;
|
|
const NegFloat32: Operations;
|
|
const AbsFloat32: Operations;
|
|
const CeilFloat32: Operations;
|
|
const FloorFloat32: Operations;
|
|
const TruncFloat32: Operations;
|
|
const NearestFloat32: Operations;
|
|
const SqrtFloat32: Operations;
|
|
const EqZInt32: Operations;
|
|
const ClzInt64: Operations;
|
|
const CtzInt64: Operations;
|
|
const PopcntInt64: Operations;
|
|
const NegFloat64: Operations;
|
|
const AbsFloat64: Operations;
|
|
const CeilFloat64: Operations;
|
|
const FloorFloat64: Operations;
|
|
const TruncFloat64: Operations;
|
|
const NearestFloat64: Operations;
|
|
const SqrtFloat64: Operations;
|
|
const EqZInt64: Operations;
|
|
const ExtendSInt32: Operations;
|
|
const ExtendUInt32: Operations;
|
|
const WrapInt64: Operations;
|
|
const TruncSFloat32ToInt32: Operations;
|
|
const TruncSFloat32ToInt64: Operations;
|
|
const TruncUFloat32ToInt32: Operations;
|
|
const TruncUFloat32ToInt64: Operations;
|
|
const TruncSFloat64ToInt32: Operations;
|
|
const TruncSFloat64ToInt64: Operations;
|
|
const TruncUFloat64ToInt32: Operations;
|
|
const TruncUFloat64ToInt64: Operations;
|
|
const TruncSatSFloat32ToInt32: Operations;
|
|
const TruncSatSFloat32ToInt64: Operations;
|
|
const TruncSatUFloat32ToInt32: Operations;
|
|
const TruncSatUFloat32ToInt64: Operations;
|
|
const TruncSatSFloat64ToInt32: Operations;
|
|
const TruncSatSFloat64ToInt64: Operations;
|
|
const TruncSatUFloat64ToInt32: Operations;
|
|
const TruncSatUFloat64ToInt64: Operations;
|
|
const ReinterpretFloat32: Operations;
|
|
const ReinterpretFloat64: Operations;
|
|
const ConvertSInt32ToFloat32: Operations;
|
|
const ConvertSInt32ToFloat64: Operations;
|
|
const ConvertUInt32ToFloat32: Operations;
|
|
const ConvertUInt32ToFloat64: Operations;
|
|
const ConvertSInt64ToFloat32: Operations;
|
|
const ConvertSInt64ToFloat64: Operations;
|
|
const ConvertUInt64ToFloat32: Operations;
|
|
const ConvertUInt64ToFloat64: Operations;
|
|
const PromoteFloat32: Operations;
|
|
const DemoteFloat64: Operations;
|
|
const ReinterpretInt32: Operations;
|
|
const ReinterpretInt64: Operations;
|
|
const ExtendS8Int32: Operations;
|
|
const ExtendS16Int32: Operations;
|
|
const ExtendS8Int64: Operations;
|
|
const ExtendS16Int64: Operations;
|
|
const ExtendS32Int64: Operations;
|
|
const AddInt32: Operations;
|
|
const SubInt32: Operations;
|
|
const MulInt32: Operations;
|
|
const DivSInt32: Operations;
|
|
const DivUInt32: Operations;
|
|
const RemSInt32: Operations;
|
|
const RemUInt32: Operations;
|
|
const AndInt32: Operations;
|
|
const OrInt32: Operations;
|
|
const XorInt32: Operations;
|
|
const ShlInt32: Operations;
|
|
const ShrUInt32: Operations;
|
|
const ShrSInt32: Operations;
|
|
const RotLInt32: Operations;
|
|
const RotRInt32: Operations;
|
|
const EqInt32: Operations;
|
|
const NeInt32: Operations;
|
|
const LtSInt32: Operations;
|
|
const LtUInt32: Operations;
|
|
const LeSInt32: Operations;
|
|
const LeUInt32: Operations;
|
|
const GtSInt32: Operations;
|
|
const GtUInt32: Operations;
|
|
const GeSInt32: Operations;
|
|
const GeUInt32: Operations;
|
|
const AddInt64: Operations;
|
|
const SubInt64: Operations;
|
|
const MulInt64: Operations;
|
|
const DivSInt64: Operations;
|
|
const DivUInt64: Operations;
|
|
const RemSInt64: Operations;
|
|
const RemUInt64: Operations;
|
|
const AndInt64: Operations;
|
|
const OrInt64: Operations;
|
|
const XorInt64: Operations;
|
|
const ShlInt64: Operations;
|
|
const ShrUInt64: Operations;
|
|
const ShrSInt64: Operations;
|
|
const RotLInt64: Operations;
|
|
const RotRInt64: Operations;
|
|
const EqInt64: Operations;
|
|
const NeInt64: Operations;
|
|
const LtSInt64: Operations;
|
|
const LtUInt64: Operations;
|
|
const LeSInt64: Operations;
|
|
const LeUInt64: Operations;
|
|
const GtSInt64: Operations;
|
|
const GtUInt64: Operations;
|
|
const GeSInt64: Operations;
|
|
const GeUInt64: Operations;
|
|
const AddFloat32: Operations;
|
|
const SubFloat32: Operations;
|
|
const MulFloat32: Operations;
|
|
const DivFloat32: Operations;
|
|
const CopySignFloat32: Operations;
|
|
const MinFloat32: Operations;
|
|
const MaxFloat32: Operations;
|
|
const EqFloat32: Operations;
|
|
const NeFloat32: Operations;
|
|
const LtFloat32: Operations;
|
|
const LeFloat32: Operations;
|
|
const GtFloat32: Operations;
|
|
const GeFloat32: Operations;
|
|
const AddFloat64: Operations;
|
|
const SubFloat64: Operations;
|
|
const MulFloat64: Operations;
|
|
const DivFloat64: Operations;
|
|
const CopySignFloat64: Operations;
|
|
const MinFloat64: Operations;
|
|
const MaxFloat64: Operations;
|
|
const EqFloat64: Operations;
|
|
const NeFloat64: Operations;
|
|
const LtFloat64: Operations;
|
|
const LeFloat64: Operations;
|
|
const GtFloat64: Operations;
|
|
const GeFloat64: Operations;
|
|
const AtomicRMWAdd: Operations;
|
|
const AtomicRMWSub: Operations;
|
|
const AtomicRMWAnd: Operations;
|
|
const AtomicRMWOr: Operations;
|
|
const AtomicRMWXor: Operations;
|
|
const AtomicRMWXchg: Operations;
|
|
const SplatVecI8x16: Operations;
|
|
const ExtractLaneSVecI8x16: Operations;
|
|
const ExtractLaneUVecI8x16: Operations;
|
|
const ReplaceLaneVecI8x16: Operations;
|
|
const SplatVecI16x8: Operations;
|
|
const ExtractLaneSVecI16x8: Operations;
|
|
const ExtractLaneUVecI16x8: Operations;
|
|
const ReplaceLaneVecI16x8: Operations;
|
|
const SplatVecI32x4: Operations;
|
|
const ExtractLaneVecI32x4: Operations;
|
|
const ReplaceLaneVecI32x4: Operations;
|
|
const SplatVecI64x2: Operations;
|
|
const ExtractLaneVecI64x2: Operations;
|
|
const ReplaceLaneVecI64x2: Operations;
|
|
const SplatVecF32x4: Operations;
|
|
const ExtractLaneVecF32x4: Operations;
|
|
const ReplaceLaneVecF32x4: Operations;
|
|
const SplatVecF64x2: Operations;
|
|
const ExtractLaneVecF64x2: Operations;
|
|
const ReplaceLaneVecF64x2: Operations;
|
|
const EqVecI8x16: Operations;
|
|
const NeVecI8x16: Operations;
|
|
const LtSVecI8x16: Operations;
|
|
const LtUVecI8x16: Operations;
|
|
const GtSVecI8x16: Operations;
|
|
const GtUVecI8x16: Operations;
|
|
const LeSVecI8x16: Operations;
|
|
const LeUVecI8x16: Operations;
|
|
const GeSVecI8x16: Operations;
|
|
const GeUVecI8x16: Operations;
|
|
const EqVecI16x8: Operations;
|
|
const NeVecI16x8: Operations;
|
|
const LtSVecI16x8: Operations;
|
|
const LtUVecI16x8: Operations;
|
|
const GtSVecI16x8: Operations;
|
|
const GtUVecI16x8: Operations;
|
|
const LeSVecI16x8: Operations;
|
|
const LeUVecI16x8: Operations;
|
|
const GeSVecI16x8: Operations;
|
|
const GeUVecI16x8: Operations;
|
|
const EqVecI32x4: Operations;
|
|
const NeVecI32x4: Operations;
|
|
const LtSVecI32x4: Operations;
|
|
const LtUVecI32x4: Operations;
|
|
const GtSVecI32x4: Operations;
|
|
const GtUVecI32x4: Operations;
|
|
const LeSVecI32x4: Operations;
|
|
const LeUVecI32x4: Operations;
|
|
const GeSVecI32x4: Operations;
|
|
const GeUVecI32x4: Operations;
|
|
const EqVecI64x2: Operations;
|
|
const NeVecI64x2: Operations;
|
|
const LtSVecI64x2: Operations;
|
|
const GtSVecI64x2: Operations;
|
|
const LeSVecI64x2: Operations;
|
|
const GeSVecI64x2: Operations;
|
|
const EqVecF32x4: Operations;
|
|
const NeVecF32x4: Operations;
|
|
const LtVecF32x4: Operations;
|
|
const GtVecF32x4: Operations;
|
|
const LeVecF32x4: Operations;
|
|
const GeVecF32x4: Operations;
|
|
const EqVecF64x2: Operations;
|
|
const NeVecF64x2: Operations;
|
|
const LtVecF64x2: Operations;
|
|
const GtVecF64x2: Operations;
|
|
const LeVecF64x2: Operations;
|
|
const GeVecF64x2: Operations;
|
|
const NotVec128: Operations;
|
|
const AndVec128: Operations;
|
|
const OrVec128: Operations;
|
|
const XorVec128: Operations;
|
|
const AndNotVec128: Operations;
|
|
const BitselectVec128: Operations;
|
|
const AnyTrueVec128: Operations;
|
|
const PopcntVecI8x16: Operations;
|
|
const AbsVecI8x16: Operations;
|
|
const NegVecI8x16: Operations;
|
|
const AllTrueVecI8x16: Operations;
|
|
const BitmaskVecI8x16: Operations;
|
|
const ShlVecI8x16: Operations;
|
|
const ShrSVecI8x16: Operations;
|
|
const ShrUVecI8x16: Operations;
|
|
const AddVecI8x16: Operations;
|
|
const AddSatSVecI8x16: Operations;
|
|
const AddSatUVecI8x16: Operations;
|
|
const SubVecI8x16: Operations;
|
|
const SubSatSVecI8x16: Operations;
|
|
const SubSatUVecI8x16: Operations;
|
|
const MinSVecI8x16: Operations;
|
|
const MinUVecI8x16: Operations;
|
|
const MaxSVecI8x16: Operations;
|
|
const MaxUVecI8x16: Operations;
|
|
const AvgrUVecI8x16: Operations;
|
|
const AbsVecI16x8: Operations;
|
|
const NegVecI16x8: Operations;
|
|
const AllTrueVecI16x8: Operations;
|
|
const BitmaskVecI16x8: Operations;
|
|
const ShlVecI16x8: Operations;
|
|
const ShrSVecI16x8: Operations;
|
|
const ShrUVecI16x8: Operations;
|
|
const AddVecI16x8: Operations;
|
|
const AddSatSVecI16x8: Operations;
|
|
const AddSatUVecI16x8: Operations;
|
|
const SubVecI16x8: Operations;
|
|
const SubSatSVecI16x8: Operations;
|
|
const SubSatUVecI16x8: Operations;
|
|
const MulVecI16x8: Operations;
|
|
const MinSVecI16x8: Operations;
|
|
const MinUVecI16x8: Operations;
|
|
const MaxSVecI16x8: Operations;
|
|
const MaxUVecI16x8: Operations;
|
|
const AvgrUVecI16x8: Operations;
|
|
const Q15MulrSatSVecI16x8: Operations;
|
|
const ExtMulLowSVecI16x8: Operations;
|
|
const ExtMulHighSVecI16x8: Operations;
|
|
const ExtMulLowUVecI16x8: Operations;
|
|
const ExtMulHighUVecI16x8: Operations;
|
|
const DotSVecI16x8ToVecI32x4: Operations;
|
|
const ExtMulLowSVecI32x4: Operations;
|
|
const ExtMulHighSVecI32x4: Operations;
|
|
const ExtMulLowUVecI32x4: Operations;
|
|
const ExtMulHighUVecI32x4: Operations;
|
|
const AbsVecI32x4: Operations;
|
|
const NegVecI32x4: Operations;
|
|
const AllTrueVecI32x4: Operations;
|
|
const BitmaskVecI32x4: Operations;
|
|
const ShlVecI32x4: Operations;
|
|
const ShrSVecI32x4: Operations;
|
|
const ShrUVecI32x4: Operations;
|
|
const AddVecI32x4: Operations;
|
|
const SubVecI32x4: Operations;
|
|
const MulVecI32x4: Operations;
|
|
const MinSVecI32x4: Operations;
|
|
const MinUVecI32x4: Operations;
|
|
const MaxSVecI32x4: Operations;
|
|
const MaxUVecI32x4: Operations;
|
|
const AbsVecI64x2: Operations;
|
|
const NegVecI64x2: Operations;
|
|
const AllTrueVecI64x2: Operations;
|
|
const BitmaskVecI64x2: Operations;
|
|
const ShlVecI64x2: Operations;
|
|
const ShrSVecI64x2: Operations;
|
|
const ShrUVecI64x2: Operations;
|
|
const AddVecI64x2: Operations;
|
|
const SubVecI64x2: Operations;
|
|
const MulVecI64x2: Operations;
|
|
const ExtMulLowSVecI64x2: Operations;
|
|
const ExtMulHighSVecI64x2: Operations;
|
|
const ExtMulLowUVecI64x2: Operations;
|
|
const ExtMulHighUVecI64x2: Operations;
|
|
const AbsVecF32x4: Operations;
|
|
const NegVecF32x4: Operations;
|
|
const SqrtVecF32x4: Operations;
|
|
const AddVecF32x4: Operations;
|
|
const SubVecF32x4: Operations;
|
|
const MulVecF32x4: Operations;
|
|
const DivVecF32x4: Operations;
|
|
const MinVecF32x4: Operations;
|
|
const MaxVecF32x4: Operations;
|
|
const PMinVecF32x4: Operations;
|
|
const PMaxVecF32x4: Operations;
|
|
const CeilVecF32x4: Operations;
|
|
const FloorVecF32x4: Operations;
|
|
const TruncVecF32x4: Operations;
|
|
const NearestVecF32x4: Operations;
|
|
const AbsVecF64x2: Operations;
|
|
const NegVecF64x2: Operations;
|
|
const SqrtVecF64x2: Operations;
|
|
const AddVecF64x2: Operations;
|
|
const SubVecF64x2: Operations;
|
|
const MulVecF64x2: Operations;
|
|
const DivVecF64x2: Operations;
|
|
const MinVecF64x2: Operations;
|
|
const MaxVecF64x2: Operations;
|
|
const PMinVecF64x2: Operations;
|
|
const PMaxVecF64x2: Operations;
|
|
const CeilVecF64x2: Operations;
|
|
const FloorVecF64x2: Operations;
|
|
const TruncVecF64x2: Operations;
|
|
const NearestVecF64x2: Operations;
|
|
const ExtAddPairwiseSVecI8x16ToI16x8: Operations;
|
|
const ExtAddPairwiseUVecI8x16ToI16x8: Operations;
|
|
const ExtAddPairwiseSVecI16x8ToI32x4: Operations;
|
|
const ExtAddPairwiseUVecI16x8ToI32x4: Operations;
|
|
const TruncSatSVecF32x4ToVecI32x4: Operations;
|
|
const TruncSatUVecF32x4ToVecI32x4: Operations;
|
|
const ConvertSVecI32x4ToVecF32x4: Operations;
|
|
const ConvertUVecI32x4ToVecF32x4: Operations;
|
|
const Load8SplatVec128: Operations;
|
|
const Load16SplatVec128: Operations;
|
|
const Load32SplatVec128: Operations;
|
|
const Load64SplatVec128: Operations;
|
|
const Load8x8SVec128: Operations;
|
|
const Load8x8UVec128: Operations;
|
|
const Load16x4SVec128: Operations;
|
|
const Load16x4UVec128: Operations;
|
|
const Load32x2SVec128: Operations;
|
|
const Load32x2UVec128: Operations;
|
|
const Load32ZeroVec128: Operations;
|
|
const Load64ZeroVec128: Operations;
|
|
const Load8LaneVec128: Operations;
|
|
const Load16LaneVec128: Operations;
|
|
const Load32LaneVec128: Operations;
|
|
const Load64LaneVec128: Operations;
|
|
const Store8LaneVec128: Operations;
|
|
const Store16LaneVec128: Operations;
|
|
const Store32LaneVec128: Operations;
|
|
const Store64LaneVec128: Operations;
|
|
const NarrowSVecI16x8ToVecI8x16: Operations;
|
|
const NarrowUVecI16x8ToVecI8x16: Operations;
|
|
const NarrowSVecI32x4ToVecI16x8: Operations;
|
|
const NarrowUVecI32x4ToVecI16x8: Operations;
|
|
const ExtendLowSVecI8x16ToVecI16x8: Operations;
|
|
const ExtendHighSVecI8x16ToVecI16x8: Operations;
|
|
const ExtendLowUVecI8x16ToVecI16x8: Operations;
|
|
const ExtendHighUVecI8x16ToVecI16x8: Operations;
|
|
const ExtendLowSVecI16x8ToVecI32x4: Operations;
|
|
const ExtendHighSVecI16x8ToVecI32x4: Operations;
|
|
const ExtendLowUVecI16x8ToVecI32x4: Operations;
|
|
const ExtendHighUVecI16x8ToVecI32x4: Operations;
|
|
const ExtendLowSVecI32x4ToVecI64x2: Operations;
|
|
const ExtendHighSVecI32x4ToVecI64x2: Operations;
|
|
const ExtendLowUVecI32x4ToVecI64x2: Operations;
|
|
const ExtendHighUVecI32x4ToVecI64x2: Operations;
|
|
const ConvertLowSVecI32x4ToVecF64x2: Operations;
|
|
const ConvertLowUVecI32x4ToVecF64x2: Operations;
|
|
const TruncSatZeroSVecF64x2ToVecI32x4: Operations;
|
|
const TruncSatZeroUVecF64x2ToVecI32x4: Operations;
|
|
const DemoteZeroVecF64x2ToVecF32x4: Operations;
|
|
const PromoteLowVecF32x4ToVecF64x2: Operations;
|
|
const SwizzleVec8x16: Operations;
|
|
const RefIsNull: Operations;
|
|
const RefIsFunc: Operations;
|
|
const RefIsData: Operations;
|
|
const RefIsI31: Operations;
|
|
const RefAsNonNull: Operations;
|
|
const RefAsFunc: Operations;
|
|
const RefAsData: Operations;
|
|
const RefAsI31: Operations;
|
|
|
|
const enum ExpressionRunnerFlags {
|
|
Default,
|
|
PreserveSideeffects,
|
|
TraverseCalls
|
|
}
|
|
|
|
type ElementSegmentRef = number;
|
|
type ExpressionRef = number;
|
|
type FunctionRef = number;
|
|
type GlobalRef = number;
|
|
type ExportRef = number;
|
|
type TableRef = number;
|
|
type TagRef = number;
|
|
|
|
class Module {
|
|
constructor();
|
|
readonly ptr: number;
|
|
block(label: string | null, children: ExpressionRef[], resultType?: Type): ExpressionRef;
|
|
if(condition: ExpressionRef, ifTrue: ExpressionRef, ifFalse?: ExpressionRef): ExpressionRef;
|
|
loop(label: string | null, body: ExpressionRef): ExpressionRef;
|
|
br(label: string, condition?: ExpressionRef, value?: ExpressionRef): ExpressionRef;
|
|
br_if(label: string, condition?: ExpressionRef, value?: ExpressionRef): ExpressionRef;
|
|
switch(labels: string[], defaultLabel: string, condition: ExpressionRef, value?: ExpressionRef): ExpressionRef;
|
|
call(name: string, operands: ExpressionRef[], returnType: Type): ExpressionRef;
|
|
return_call(name: string, operands: ExpressionRef[], returnType: Type): ExpressionRef;
|
|
call_indirect(target: ExpressionRef, operands: ExpressionRef[], params: Type, results: Type): ExpressionRef;
|
|
return_call_indirect(target: ExpressionRef, operands: ExpressionRef[], params: Type, results: Type): ExpressionRef;
|
|
local: {
|
|
get(index: number, type: Type): ExpressionRef;
|
|
set(index: number, value: ExpressionRef): ExpressionRef;
|
|
tee(index: number, value: ExpressionRef, type: Type): ExpressionRef;
|
|
};
|
|
global: {
|
|
get(name: string, type: Type): ExpressionRef;
|
|
set(name: string, value: ExpressionRef): ExpressionRef;
|
|
};
|
|
table: {
|
|
get(name: string, index: ExpressionRef, type: Type): ExpressionRef;
|
|
set(name: string, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
size(name: string): ExpressionRef;
|
|
grow(name: string, value: ExpressionRef, delta: ExpressionRef): ExpressionRef;
|
|
// TODO: init, fill, copy
|
|
};
|
|
memory: {
|
|
size(): ExpressionRef;
|
|
grow(value: ExpressionRef): ExpressionRef;
|
|
init(segment: number, dest: ExpressionRef, offset: ExpressionRef, size: ExpressionRef): ExpressionRef;
|
|
copy(dest: ExpressionRef, source: ExpressionRef, size: ExpressionRef): ExpressionRef;
|
|
fill(dest: ExpressionRef, value: ExpressionRef, size: ExpressionRef): ExpressionRef;
|
|
atomic: {
|
|
notify(ptr: ExpressionRef, notifyCount: ExpressionRef): ExpressionRef;
|
|
wait32(ptr: ExpressionRef, expected: ExpressionRef, timeout: ExpressionRef): ExpressionRef;
|
|
wait64(ptr: ExpressionRef, expected: ExpressionRef, timeout: ExpressionRef): ExpressionRef;
|
|
}
|
|
};
|
|
data: {
|
|
drop(segment: number): ExpressionRef;
|
|
};
|
|
i32: {
|
|
load(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
store(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store8(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store16(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
const(value: number): ExpressionRef;
|
|
clz(value: ExpressionRef): ExpressionRef;
|
|
ctz(value: ExpressionRef): ExpressionRef;
|
|
popcnt(value: ExpressionRef): ExpressionRef;
|
|
eqz(value: ExpressionRef): ExpressionRef;
|
|
trunc_s: {
|
|
f32(value: ExpressionRef): ExpressionRef;
|
|
f64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
trunc_u: {
|
|
f32(value: ExpressionRef): ExpressionRef;
|
|
f64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
trunc_s_sat: {
|
|
f32(value: ExpressionRef): ExpressionRef;
|
|
f64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
trunc_u_sat: {
|
|
f32(value: ExpressionRef): ExpressionRef;
|
|
f64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
reinterpret(value: ExpressionRef): ExpressionRef;
|
|
extend8_s(value: ExpressionRef): ExpressionRef;
|
|
extend16_s(value: ExpressionRef): ExpressionRef;
|
|
wrap(value: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
div_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
div_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
rem_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
rem_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
and(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
or(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
xor(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
shl(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
shr_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
shr_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
rotl(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
rotr(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
atomic: {
|
|
load(offset: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8_u(offset: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16_u(offset: number, ptr: ExpressionRef): ExpressionRef;
|
|
store(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store8(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store16(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
rmw: {
|
|
add(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
sub(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
and(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
or(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xor(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xchg(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
cmpxchg(offset: number, ptr: ExpressionRef, expected: ExpressionRef, replacement: ExpressionRef): ExpressionRef;
|
|
},
|
|
rmw8_u: {
|
|
add(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
sub(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
and(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
or(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xor(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xchg(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
cmpxchg(offset: number, ptr: ExpressionRef, expected: ExpressionRef, replacement: ExpressionRef): ExpressionRef;
|
|
},
|
|
rmw16_u: {
|
|
add(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
sub(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
and(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
or(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xor(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xchg(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
cmpxchg(offset: number, ptr: ExpressionRef, expected: ExpressionRef, replacement: ExpressionRef): ExpressionRef;
|
|
},
|
|
},
|
|
pop(): ExpressionRef;
|
|
};
|
|
i64: {
|
|
load(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load32_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load32_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
store(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store8(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store16(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store32(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
const(low: number, high: number): ExpressionRef;
|
|
clz(value: ExpressionRef): ExpressionRef;
|
|
ctz(value: ExpressionRef): ExpressionRef;
|
|
popcnt(value: ExpressionRef): ExpressionRef;
|
|
eqz(value: ExpressionRef): ExpressionRef;
|
|
trunc_s: {
|
|
f32(value: ExpressionRef): ExpressionRef;
|
|
f64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
trunc_u: {
|
|
f32(value: ExpressionRef): ExpressionRef;
|
|
f64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
trunc_s_sat: {
|
|
f32(value: ExpressionRef): ExpressionRef;
|
|
f64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
trunc_u_sat: {
|
|
f32(value: ExpressionRef): ExpressionRef;
|
|
f64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
reinterpret(value: ExpressionRef): ExpressionRef;
|
|
extend8_s(value: ExpressionRef): ExpressionRef;
|
|
extend16_s(value: ExpressionRef): ExpressionRef;
|
|
extend32_s(value: ExpressionRef): ExpressionRef;
|
|
extend_s(value: ExpressionRef): ExpressionRef;
|
|
extend_u(value: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
div_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
div_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
rem_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
rem_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
and(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
or(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
xor(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
shl(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
shr_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
shr_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
rotl(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
rotr(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
atomic: {
|
|
load(offset: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8_u(offset: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16_u(offset: number, ptr: ExpressionRef): ExpressionRef;
|
|
load32_u(offset: number, ptr: ExpressionRef): ExpressionRef;
|
|
store(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store8(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store16(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
store32(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
rmw: {
|
|
add(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
sub(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
and(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
or(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xor(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xchg(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
cmpxchg(offset: number, ptr: ExpressionRef, expected: ExpressionRef, replacement: ExpressionRef): ExpressionRef;
|
|
},
|
|
rmw8_u: {
|
|
add(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
sub(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
and(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
or(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xor(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xchg(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
cmpxchg(offset: number, ptr: ExpressionRef, expected: ExpressionRef, replacement: ExpressionRef): ExpressionRef;
|
|
},
|
|
rmw16_u: {
|
|
add(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
sub(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
and(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
or(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xor(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xchg(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
cmpxchg(offset: number, ptr: ExpressionRef, expected: ExpressionRef, replacement: ExpressionRef): ExpressionRef;
|
|
},
|
|
rmw32_u: {
|
|
add(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
sub(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
and(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
or(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xor(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
xchg(offset: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
cmpxchg(offset: number, ptr: ExpressionRef, expected: ExpressionRef, replacement: ExpressionRef): ExpressionRef;
|
|
},
|
|
},
|
|
pop(): ExpressionRef;
|
|
};
|
|
f32: {
|
|
load(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
store(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
const(value: number): ExpressionRef;
|
|
const_bits(value: number): ExpressionRef;
|
|
neg(value: ExpressionRef): ExpressionRef;
|
|
abs(value: ExpressionRef): ExpressionRef;
|
|
ceil(value: ExpressionRef): ExpressionRef;
|
|
floor(value: ExpressionRef): ExpressionRef;
|
|
trunc(value: ExpressionRef): ExpressionRef;
|
|
nearest(value: ExpressionRef): ExpressionRef;
|
|
sqrt(value: ExpressionRef): ExpressionRef;
|
|
reinterpret(value: ExpressionRef): ExpressionRef;
|
|
convert_s: {
|
|
i32(value: ExpressionRef): ExpressionRef;
|
|
i64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
convert_u: {
|
|
i32(value: ExpressionRef): ExpressionRef;
|
|
i64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
demote(value: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
div(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
copysign(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
pop(): ExpressionRef;
|
|
};
|
|
f64: {
|
|
load(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
store(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
const(value: number): ExpressionRef;
|
|
const_bits(low: number, high: number): ExpressionRef;
|
|
neg(value: ExpressionRef): ExpressionRef;
|
|
abs(value: ExpressionRef): ExpressionRef;
|
|
ceil(value: ExpressionRef): ExpressionRef;
|
|
floor(value: ExpressionRef): ExpressionRef;
|
|
trunc(value: ExpressionRef): ExpressionRef;
|
|
nearest(value: ExpressionRef): ExpressionRef;
|
|
sqrt(value: ExpressionRef): ExpressionRef;
|
|
reinterpret(value: ExpressionRef): ExpressionRef;
|
|
convert_s: {
|
|
i32(value: ExpressionRef): ExpressionRef;
|
|
i64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
convert_u: {
|
|
i32(value: ExpressionRef): ExpressionRef;
|
|
i64(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
promote(value: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
div(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
copysign(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
pop(): ExpressionRef;
|
|
};
|
|
v128: {
|
|
load(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load32_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load64_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8x8_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8x8_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16x4_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load16x4_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load32x2_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load32x2_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load32_zero(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load64_zero(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
|
|
load8_lane(offset: number, align: number, index: number, ptr: ExpressionRef, vec: ExpressionRef): ExpressionRef;
|
|
load16_lane(offset: number, align: number, index: number, ptr: ExpressionRef, vec: ExpressionRef): ExpressionRef;
|
|
load32_lane(offset: number, align: number, index: number, ptr: ExpressionRef, vec: ExpressionRef): ExpressionRef;
|
|
load64_lane(offset: number, align: number, index: number, ptr: ExpressionRef, vec: ExpressionRef): ExpressionRef;
|
|
store8_lane(offset: number, align: number, index: number, pt: ExpressionRef, vec: ExpressionRef): ExpressionRef;
|
|
store16_lane(offset: number, align: number, index: number, pt: ExpressionRef, vec: ExpressionRef): ExpressionRef;
|
|
store32_lane(offset: number, align: number, index: number, pt: ExpressionRef, vec: ExpressionRef): ExpressionRef;
|
|
store64_lane(offset: number, align: number, index: number, pt: ExpressionRef, vec: ExpressionRef): ExpressionRef;
|
|
store(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
const(value: ArrayLike<number>): ExpressionRef;
|
|
not(value: ExpressionRef): ExpressionRef;
|
|
any_true(value: ExpressionRef): ExpressionRef;
|
|
and(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
or(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
xor(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
andnot(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
bitselect(left: ExpressionRef, right: ExpressionRef, cond: ExpressionRef): ExpressionRef;
|
|
pop(): ExpressionRef;
|
|
};
|
|
i8x16: {
|
|
shuffle(left: ExpressionRef, right: ExpressionRef, mask: ArrayLike<number>): ExpressionRef;
|
|
swizzle(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
splat(value: ExpressionRef): ExpressionRef;
|
|
extract_lane_s(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
|
|
extract_lane_u(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
|
|
replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
abs(value: ExpressionRef): ExpressionRef;
|
|
neg(value: ExpressionRef): ExpressionRef;
|
|
all_true(value: ExpressionRef): ExpressionRef;
|
|
bitmask(value: ExpressionRef): ExpressionRef;
|
|
popcnt(value: ExpressionRef): ExpressionRef;
|
|
shl(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
shr_s(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
shr_u(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
add_saturate_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
add_saturate_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub_saturate_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub_saturate_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
avgr_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
narrow_i16x8_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
narrow_i16x8_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
};
|
|
i16x8: {
|
|
splat(value: ExpressionRef): ExpressionRef;
|
|
extract_lane_s(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
|
|
extract_lane_u(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
|
|
replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
abs(value: ExpressionRef): ExpressionRef;
|
|
neg(value: ExpressionRef): ExpressionRef;
|
|
all_true(value: ExpressionRef): ExpressionRef;
|
|
bitmask(value: ExpressionRef): ExpressionRef;
|
|
shl(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
shr_s(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
shr_u(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
add_saturate_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
add_saturate_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub_saturate_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub_saturate_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
avgr_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
q15mulr_sat_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_low_i8x16_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_high_i8x16_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_low_i8x16_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_high_i8x16_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extadd_pairwise_i8x16_s(value: ExpressionRef): ExpressionRef;
|
|
extadd_pairwise_i8x16_u(value: ExpressionRef): ExpressionRef;
|
|
narrow_i32x4_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
narrow_i32x4_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extend_low_i8x16_s(value: ExpressionRef): ExpressionRef;
|
|
extend_high_i8x16_s(value: ExpressionRef): ExpressionRef;
|
|
extend_low_i8x16_u(value: ExpressionRef): ExpressionRef;
|
|
extend_high_i8x16_u(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
i32x4: {
|
|
splat(value: ExpressionRef): ExpressionRef;
|
|
extract_lane(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
|
|
replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
abs(value: ExpressionRef): ExpressionRef;
|
|
neg(value: ExpressionRef): ExpressionRef;
|
|
all_true(value: ExpressionRef): ExpressionRef;
|
|
bitmask(value: ExpressionRef): ExpressionRef;
|
|
shl(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
shr_s(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
shr_u(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
dot_i16x8_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_low_i16x8_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_high_i16x8_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_low_i16x8_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_high_i16x8_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extadd_pairwise_i16x8_s(value: ExpressionRef): ExpressionRef;
|
|
extadd_pairwise_i16x8_u(value: ExpressionRef): ExpressionRef;
|
|
trunc_sat_f32x4_s(value: ExpressionRef): ExpressionRef;
|
|
trunc_sat_f32x4_u(value: ExpressionRef): ExpressionRef;
|
|
extend_low_i16x8_s(value: ExpressionRef): ExpressionRef;
|
|
extend_high_i16x8_s(value: ExpressionRef): ExpressionRef;
|
|
extend_low_i16x8_u(value: ExpressionRef): ExpressionRef;
|
|
extend_high_i16x8_u(value: ExpressionRef): ExpressionRef;
|
|
trunc_sat_f64x2_s_zero(value: ExpressionRef): ExpressionRef;
|
|
trunc_sat_f64x2_u_zero(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
i64x2: {
|
|
splat(value: ExpressionRef): ExpressionRef;
|
|
extract_lane(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
|
|
replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
abs(value: ExpressionRef): ExpressionRef;
|
|
neg(value: ExpressionRef): ExpressionRef;
|
|
all_true(value: ExpressionRef): ExpressionRef;
|
|
bitmask(value: ExpressionRef): ExpressionRef;
|
|
shl(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
shr_s(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
shr_u(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_low_i32x4_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_high_i32x4_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_low_i32x4_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extmul_high_i32x4_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
extend_low_i32x4_s(value: ExpressionRef): ExpressionRef;
|
|
extend_high_i32x4_s(value: ExpressionRef): ExpressionRef;
|
|
extend_low_i32x4_u(value: ExpressionRef): ExpressionRef;
|
|
extend_high_i32x4_u(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
f32x4: {
|
|
splat(value: ExpressionRef): ExpressionRef;
|
|
extract_lane(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
|
|
replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
abs(value: ExpressionRef): ExpressionRef;
|
|
neg(value: ExpressionRef): ExpressionRef;
|
|
sqrt(value: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
div(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
pmin(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
pmax(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ceil(value: ExpressionRef): ExpressionRef;
|
|
floor(value: ExpressionRef): ExpressionRef;
|
|
trunc(value: ExpressionRef): ExpressionRef;
|
|
nearest(value: ExpressionRef): ExpressionRef;
|
|
convert_i32x4_s(value: ExpressionRef): ExpressionRef;
|
|
convert_i32x4_u(value: ExpressionRef): ExpressionRef;
|
|
demote_f64x2_zero(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
f64x2: {
|
|
splat(value: ExpressionRef): ExpressionRef;
|
|
extract_lane(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
|
|
replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
lt(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
gt(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
le(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ge(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
abs(value: ExpressionRef): ExpressionRef;
|
|
neg(value: ExpressionRef): ExpressionRef;
|
|
sqrt(value: ExpressionRef): ExpressionRef;
|
|
add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
div(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
min(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
max(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
pmin(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
pmax(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
ceil(value: ExpressionRef): ExpressionRef;
|
|
floor(value: ExpressionRef): ExpressionRef;
|
|
trunc(value: ExpressionRef): ExpressionRef;
|
|
nearest(value: ExpressionRef): ExpressionRef;
|
|
convert_low_i32x4_s(value: ExpressionRef): ExpressionRef;
|
|
convert_low_i32x4_u(value: ExpressionRef): ExpressionRef;
|
|
promote_low_f32x4(value: ExpressionRef): ExpressionRef;
|
|
};
|
|
funcref: {
|
|
pop(): ExpressionRef;
|
|
};
|
|
externref: {
|
|
pop(): ExpressionRef;
|
|
};
|
|
anyref: {
|
|
pop(): ExpressionRef;
|
|
};
|
|
eqref: {
|
|
pop(): ExpressionRef;
|
|
};
|
|
i31ref: {
|
|
pop(): ExpressionRef;
|
|
};
|
|
dataref: {
|
|
pop(): ExpressionRef;
|
|
};
|
|
ref: {
|
|
null(type: Type): ExpressionRef;
|
|
is_null(value: ExpressionRef): ExpressionRef;
|
|
is_func(value: ExpressionRef): ExpressionRef;
|
|
is_data(value: ExpressionRef): ExpressionRef;
|
|
is_i31(value: ExpressionRef): ExpressionRef;
|
|
as_non_null(value: ExpressionRef): ExpressionRef;
|
|
as_func(value: ExpressionRef): ExpressionRef;
|
|
as_data(value: ExpressionRef): ExpressionRef;
|
|
as_i31(value: ExpressionRef): ExpressionRef;
|
|
func(name: string, type: Type): ExpressionRef;
|
|
eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
|
|
};
|
|
i31: {
|
|
'new'(value: ExpressionRef): ExpressionRef;
|
|
get_s(i31: ExpressionRef): ExpressionRef;
|
|
get_u(i31: ExpressionRef): ExpressionRef;
|
|
}
|
|
atomic: {
|
|
fence(): ExpressionRef;
|
|
};
|
|
tuple: {
|
|
make(elements: ExportRef[]): ExpressionRef;
|
|
extract(tuple: ExpressionRef, index: number): ExpressionRef;
|
|
};
|
|
try(name: string, body: ExpressionRef, catchTags: string[], catchBodies: ExpressionRef[], delegateTarget?: string): ExpressionRef;
|
|
throw(tag: string, operands: ExpressionRef[]): ExpressionRef;
|
|
rethrow(target: string): ExpressionRef;
|
|
select(condition: ExpressionRef, ifTrue: ExpressionRef, ifFalse: ExpressionRef, type?: Type): ExpressionRef;
|
|
drop(value: ExpressionRef): ExpressionRef;
|
|
return(value?: ExpressionRef): ExpressionRef;
|
|
nop(): ExpressionRef;
|
|
unreachable(): ExpressionRef;
|
|
addFunction(name: string, params: Type, results: Type, vars: Type[], body: ExpressionRef): FunctionRef;
|
|
getFunction(name: string): FunctionRef;
|
|
removeFunction(name: string): void;
|
|
getNumFunctions(): number;
|
|
getFunctionByIndex(index: number): FunctionRef;
|
|
addGlobal(name: string, type: Type, mutable: boolean, init: ExpressionRef): GlobalRef;
|
|
getGlobal(name: string): GlobalRef;
|
|
removeGlobal(name: string): void;
|
|
addTable(name: string, initial: number, maximum: number, type: Type): TableRef;
|
|
getTable(name: string): TableRef;
|
|
removeTable(name: string): void;
|
|
addTag(name: string, params: Type, results: Type): TagRef;
|
|
getTag(name: string): TagRef;
|
|
removeTag(name: string): void;
|
|
addFunctionImport(internalName: string, externalModuleName: string, externalBaseName: string, params: Type, results: Type): void;
|
|
addTableImport(internalName: string, externalModuleName: string, externalBaseName: string): void;
|
|
addMemoryImport(internalName: string, externalModuleName: string, externalBaseName: string): void;
|
|
addGlobalImport(internalName: string, externalModuleName: string, externalBaseName: string, globalType: Type): void;
|
|
addTagImport(internalName: string, externalModuleName: string, externalBaseName: string, params: Type, results: Type): void;
|
|
addFunctionExport(internalName: string, externalName: string): ExportRef;
|
|
addTableExport(internalName: string, externalName: string): ExportRef;
|
|
addMemoryExport(internalName: string, externalName: string): ExportRef;
|
|
addGlobalExport(internalName: string, externalName: string): ExportRef;
|
|
addTagExport(internalName: string, externalName: string): ExportRef;
|
|
removeExport(externalName: string): void;
|
|
getExport(externalName: string): ExportRef;
|
|
getNumExports(): number;
|
|
getExportByIndex(index: number): ExportRef;
|
|
setFunctionTable(initial: number, maximum: number, funcNames: number[], offset?: ExpressionRef): void;
|
|
getFunctionTable(): { imported: boolean, segments: TableElement[] };
|
|
setMemory(initial: number, maximum: number, exportName?: string | null, segments?: MemorySegment[] | null, flags?: number[] | null, shared?: boolean): void;
|
|
getMemorySegmentInfoByIndex(index: number): MemorySegmentInfo;
|
|
setStart(start: FunctionRef): void;
|
|
getFeatures(): Features;
|
|
setFeatures(features: Features): void;
|
|
addCustomSection(name: string, contents: Uint8Array): void;
|
|
getNumGlobals(): number;
|
|
getNumTables(): number;
|
|
getNumMemorySegments(): number;
|
|
getNumElementSegments(): number;
|
|
getGlobalByIndex(index: number): GlobalRef;
|
|
getTableByIndex(index: number): TableRef;
|
|
getElementSegmentByIndex(index: number): ElementSegmentRef;
|
|
emitText(): string;
|
|
emitStackIR(optimize?: boolean): string;
|
|
emitAsmjs(): string;
|
|
validate(): number;
|
|
optimize(): void;
|
|
optimizeFunction(func: string | FunctionRef): void;
|
|
runPasses(passes: string[]): void;
|
|
runPassesOnFunction(func: string | FunctionRef, passes: string[]): void;
|
|
autoDrop(): void;
|
|
dispose(): void;
|
|
emitBinary(): Uint8Array;
|
|
emitBinary(sourceMapUrl: string | null): { binary: Uint8Array; sourceMap: string | null; };
|
|
interpret(): void;
|
|
addDebugInfoFileName(filename: string): number;
|
|
getDebugInfoFileName(index: number): string | null;
|
|
setDebugLocation(func: FunctionRef, expr: ExpressionRef, fileIndex: number, lineNumber: number, columnNumber: number): void;
|
|
copyExpression(expr: ExpressionRef): ExpressionRef;
|
|
}
|
|
|
|
interface MemorySegment {
|
|
offset: ExpressionRef;
|
|
data: Uint8Array;
|
|
passive?: boolean;
|
|
}
|
|
|
|
interface TableElement {
|
|
offset: ExpressionRef;
|
|
names: string[];
|
|
}
|
|
|
|
function wrapModule(ptr: number): Module;
|
|
|
|
function getExpressionId(expression: ExpressionRef): number;
|
|
function getExpressionType(expression: ExpressionRef): Type;
|
|
function getExpressionInfo(expression: ExpressionRef): ExpressionInfo;
|
|
|
|
interface MemorySegmentInfo {
|
|
offset: ExpressionRef;
|
|
data: Uint8Array;
|
|
passive: boolean;
|
|
}
|
|
|
|
interface ExpressionInfo {
|
|
id: ExpressionIds;
|
|
type: Type;
|
|
}
|
|
|
|
interface BlockInfo extends ExpressionInfo {
|
|
name: string;
|
|
children: ExpressionRef[];
|
|
}
|
|
|
|
interface IfInfo extends ExpressionInfo {
|
|
condition: ExpressionRef;
|
|
ifTrue: ExpressionRef;
|
|
ifFalse: ExpressionRef;
|
|
}
|
|
|
|
interface LoopInfo extends ExpressionInfo {
|
|
name: string;
|
|
body: ExpressionRef;
|
|
}
|
|
|
|
interface BreakInfo extends ExpressionInfo {
|
|
name: string;
|
|
condition: ExpressionRef;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface SwitchInfo extends ExpressionInfo {
|
|
names: string[];
|
|
defaultName: string | null;
|
|
condition: ExpressionRef;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface CallInfo extends ExpressionInfo {
|
|
isReturn: boolean;
|
|
target: string;
|
|
operands: ExpressionRef[];
|
|
}
|
|
|
|
interface CallIndirectInfo extends ExpressionInfo {
|
|
isReturn: boolean;
|
|
target: ExpressionRef;
|
|
operands: ExpressionRef[];
|
|
}
|
|
|
|
interface LocalGetInfo extends ExpressionInfo {
|
|
index: number;
|
|
}
|
|
|
|
interface LocalSetInfo extends ExpressionInfo {
|
|
isTee: boolean;
|
|
index: number;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface GlobalGetInfo extends ExpressionInfo {
|
|
name: string;
|
|
}
|
|
|
|
interface GlobalSetInfo extends ExpressionInfo {
|
|
name: string;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface TableGetInfo extends ExpressionInfo {
|
|
table: string;
|
|
index: ExpressionRef;
|
|
}
|
|
|
|
interface TableSetInfo extends ExpressionInfo {
|
|
table: string;
|
|
index: ExpressionRef;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface TableSizeInfo extends ExpressionInfo {
|
|
table: string;
|
|
}
|
|
|
|
interface TableGrowInfo extends ExpressionInfo {
|
|
table: string;
|
|
value: ExpressionRef;
|
|
delta: ExpressionRef;
|
|
}
|
|
|
|
interface LoadInfo extends ExpressionInfo {
|
|
isAtomic: boolean;
|
|
isSigned: boolean;
|
|
offset: number;
|
|
bytes: number;
|
|
align: number;
|
|
ptr: ExpressionRef;
|
|
}
|
|
|
|
interface StoreInfo extends ExpressionInfo {
|
|
isAtomic: boolean;
|
|
offset: number;
|
|
bytes: number;
|
|
align: number;
|
|
ptr: ExpressionRef;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface ConstInfo extends ExpressionInfo {
|
|
value: number | { low: number, high: number } | Array<number>;
|
|
}
|
|
|
|
interface UnaryInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface BinaryInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
left: ExpressionRef;
|
|
right: ExpressionRef;
|
|
}
|
|
|
|
interface SelectInfo extends ExpressionInfo {
|
|
ifTrue: ExpressionRef;
|
|
ifFalse: ExpressionRef;
|
|
condition: ExpressionRef;
|
|
}
|
|
|
|
interface DropInfo extends ExpressionInfo {
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface ReturnInfo extends ExpressionInfo {
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface NopInfo extends ExpressionInfo {
|
|
}
|
|
|
|
interface UnreachableInfo extends ExpressionInfo {
|
|
}
|
|
|
|
interface PopInfo extends ExpressionInfo {
|
|
}
|
|
|
|
interface MemorySizeInfo extends ExpressionInfo {
|
|
}
|
|
|
|
interface MemoryGrowInfo extends ExpressionInfo {
|
|
delta: ExpressionRef;
|
|
}
|
|
|
|
interface AtomicRMWInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
bytes: number;
|
|
offset: number;
|
|
ptr: ExpressionRef;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface AtomicCmpxchgInfo extends ExpressionInfo {
|
|
bytes: number;
|
|
offset: number;
|
|
ptr: ExpressionRef;
|
|
expected: ExpressionRef;
|
|
replacement: ExpressionRef;
|
|
}
|
|
|
|
interface AtomicWaitInfo extends ExpressionInfo {
|
|
ptr: ExpressionRef;
|
|
expected: ExpressionRef;
|
|
timeout: ExpressionRef;
|
|
expectedType: Type;
|
|
}
|
|
|
|
interface AtomicNotifyInfo extends ExpressionInfo {
|
|
ptr: ExpressionRef;
|
|
notifyCount: ExpressionRef;
|
|
}
|
|
|
|
interface AtomicFenceInfo extends ExpressionInfo {
|
|
order: number;
|
|
}
|
|
|
|
interface SIMDExtractInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
vec: ExpressionRef;
|
|
index: ExpressionRef;
|
|
}
|
|
|
|
interface SIMDReplaceInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
vec: ExpressionRef;
|
|
index: ExpressionRef;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface SIMDShuffleInfo extends ExpressionInfo {
|
|
left: ExpressionRef;
|
|
right: ExpressionRef;
|
|
mask: number[];
|
|
}
|
|
|
|
interface SIMDTernaryInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
a: ExpressionRef;
|
|
b: ExpressionRef;
|
|
c: ExpressionRef;
|
|
}
|
|
|
|
interface SIMDShiftInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
vec: ExpressionRef;
|
|
shift: ExpressionRef;
|
|
}
|
|
|
|
interface SIMDLoadInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
offset: number;
|
|
align: number;
|
|
ptr: ExpressionRef;
|
|
}
|
|
|
|
interface SIMDLoadStoreLaneInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
offset: number;
|
|
align: number;
|
|
index: number;
|
|
ptr: ExpressionRef;
|
|
vec: ExpressionRef;
|
|
}
|
|
|
|
interface MemoryInitInfo extends ExpressionInfo {
|
|
segment: number;
|
|
dest: ExpressionRef;
|
|
offset: ExpressionRef;
|
|
size: ExpressionRef;
|
|
}
|
|
|
|
interface DataDropInfo extends ExpressionInfo {
|
|
segment: number;
|
|
}
|
|
|
|
interface MemoryCopyInfo extends ExpressionInfo {
|
|
dest: ExpressionRef;
|
|
source: ExpressionRef;
|
|
size: ExpressionRef;
|
|
}
|
|
|
|
interface MemoryFillInfo extends ExpressionInfo {
|
|
dest: ExpressionRef;
|
|
value: ExpressionRef;
|
|
size: ExpressionRef;
|
|
}
|
|
|
|
interface RefNullInfo extends ExpressionInfo {
|
|
}
|
|
|
|
interface RefIsInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface RefAsInfo extends ExpressionInfo {
|
|
op: Operations;
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface RefFuncInfo extends ExpressionInfo {
|
|
func: string;
|
|
}
|
|
|
|
interface RefEqInfo extends ExpressionInfo {
|
|
left: ExpressionRef;
|
|
right: ExpressionRef;
|
|
}
|
|
|
|
interface TryInfo extends ExpressionInfo {
|
|
name: string;
|
|
body: ExpressionRef;
|
|
catchTags: string[];
|
|
catchBodies: ExpressionRef[];
|
|
hasCatchAll: boolean;
|
|
delegateTarget: string;
|
|
isDelegate: boolean;
|
|
}
|
|
|
|
interface ThrowInfo extends ExpressionInfo {
|
|
tag: string;
|
|
operands: ExpressionRef[];
|
|
}
|
|
|
|
interface RethrowInfo extends ExpressionInfo {
|
|
target: string;
|
|
}
|
|
|
|
interface TupleMakeInfo extends ExpressionInfo {
|
|
operands: ExpressionRef[];
|
|
}
|
|
|
|
interface TupleExtract extends ExpressionInfo {
|
|
tuple: ExpressionRef;
|
|
index: number;
|
|
}
|
|
|
|
interface I31NewInfo extends ExpressionInfo {
|
|
value: ExpressionRef;
|
|
}
|
|
|
|
interface I31GetInfo extends ExpressionInfo {
|
|
i31: ExpressionRef;
|
|
isSigned: boolean;
|
|
}
|
|
|
|
function getFunctionInfo(func: FunctionRef): FunctionInfo;
|
|
|
|
interface FunctionInfo {
|
|
name: string;
|
|
module: string | null;
|
|
base: string | null;
|
|
params: Type;
|
|
results: Type;
|
|
vars: Type[];
|
|
body: ExpressionRef;
|
|
}
|
|
|
|
function getGlobalInfo(global: GlobalRef): GlobalInfo;
|
|
|
|
interface GlobalInfo {
|
|
name: string;
|
|
module: string | null;
|
|
base: string | null;
|
|
type: Type;
|
|
mutable: boolean;
|
|
init: ExpressionRef;
|
|
}
|
|
|
|
function getTableInfo(table: TableRef): TableInfo;
|
|
|
|
interface TableInfo {
|
|
name: string;
|
|
module: string | null;
|
|
base: string | null;
|
|
initial: number;
|
|
max?: number;
|
|
}
|
|
|
|
function getElementSegmentInfo(segment: ElementSegmentRef): ElementSegmentInfo;
|
|
|
|
interface ElementSegmentInfo {
|
|
name: string,
|
|
table: string,
|
|
offset: number,
|
|
data: string[]
|
|
}
|
|
|
|
function getTagInfo(tag: TagRef): TagInfo;
|
|
|
|
interface TagInfo {
|
|
name: string;
|
|
module: string | null;
|
|
base: string | null;
|
|
params: Type;
|
|
results: Type;
|
|
}
|
|
|
|
function getExportInfo(export_: ExportRef): ExportInfo;
|
|
|
|
interface ExportInfo {
|
|
kind: ExternalKinds;
|
|
name: string;
|
|
value: string;
|
|
}
|
|
|
|
function getSideEffects(expr: ExpressionRef, features: Features): SideEffects;
|
|
|
|
const enum SideEffects {
|
|
None,
|
|
Branches,
|
|
Calls,
|
|
ReadsLocal,
|
|
WritesLocal,
|
|
ReadsGlobal,
|
|
WritesGlobal,
|
|
ReadsMemory,
|
|
WritesMemory,
|
|
ReadsTable,
|
|
WritesTable,
|
|
ImplicitTrap,
|
|
IsAtomic,
|
|
Throws,
|
|
DanglingPop,
|
|
TrapsNeverHappen,
|
|
Any
|
|
}
|
|
|
|
function emitText(expression: ExpressionRef | Module): string;
|
|
function readBinary(data: Uint8Array): Module;
|
|
function parseText(text: string): Module;
|
|
function getOptimizeLevel(): number;
|
|
function setOptimizeLevel(level: number): number;
|
|
function getShrinkLevel(): number;
|
|
function setShrinkLevel(level: number): number;
|
|
function getDebugInfo(): boolean;
|
|
function setDebugInfo(on: boolean): void;
|
|
function getLowMemoryUnused(): boolean;
|
|
function setLowMemoryUnused(on: boolean): void;
|
|
function getZeroFilledMemory(): boolean;
|
|
function setZeroFilledMemory(on: boolean): void;
|
|
function getFastMath(): boolean;
|
|
function setFastMath(on: boolean): void;
|
|
function getPassArgument(key: string): string | null;
|
|
function setPassArgument(key: string, value: string | null): void;
|
|
function clearPassArguments(): void;
|
|
function getAlwaysInlineMaxSize(): number;
|
|
function setAlwaysInlineMaxSize(size: number): void;
|
|
function getFlexibleInlineMaxSize(): number;
|
|
function setFlexibleInlineMaxSize(size: number): void;
|
|
function getOneCallerInlineMaxSize(): number;
|
|
function setOneCallerInlineMaxSize(size: number): void;
|
|
function getAllowInliningFunctionsWithLoops(): boolean;
|
|
function setAllowInliningFunctionsWithLoops(on: boolean): void;
|
|
function exit(status: number): void;
|
|
|
|
type RelooperBlockRef = number;
|
|
|
|
class Relooper {
|
|
constructor(module: Module);
|
|
addBlock(expression: ExpressionRef): RelooperBlockRef;
|
|
addBranch(from: RelooperBlockRef, to: RelooperBlockRef, condition: ExpressionRef, code: ExpressionRef): void;
|
|
addBlockWithSwitch(code: ExpressionRef, condition: ExpressionRef): RelooperBlockRef;
|
|
addBranchForSwitch(from: RelooperBlockRef, to: RelooperBlockRef, indexes: number[], code: ExpressionRef): void;
|
|
renderAndDispose(entry: RelooperBlockRef, labelHelper: number): ExpressionRef;
|
|
}
|
|
|
|
class ExpressionRunner {
|
|
constructor(module: Module, flags: ExpressionRunnerFlags, maxDepth: number, maxLoopIterations: number);
|
|
setLocalValue(index: number, valueExpr: ExpressionRef): boolean;
|
|
setGlobalValue(name: string, valueExpr: ExpressionRef): boolean;
|
|
runAndDispose(expr: ExpressionRef): ExpressionRef;
|
|
}
|
|
}
|
|
|
|
declare const binaryen: typeof Binaryen;
|
|
|
|
export default binaryen;
|