binaryen 102.0.0 → 103.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,7 +1,4 @@
1
- declare module binaryen {
2
-
3
- const isReady: boolean;
4
- const ready: Promise<typeof binaryen>;
1
+ declare module Binaryen {
5
2
 
6
3
  type Type = number;
7
4
 
@@ -13,10 +10,10 @@ declare module binaryen {
13
10
  const v128: Type;
14
11
  const funcref: Type;
15
12
  const externref: Type;
16
- const exnref: Type;
17
13
  const anyref: Type;
18
14
  const eqref: Type;
19
15
  const i31ref: Type;
16
+ const dataref: Type;
20
17
  const unreachable: Type;
21
18
  const auto: Type;
22
19
 
@@ -70,7 +67,6 @@ declare module binaryen {
70
67
  Try,
71
68
  Throw,
72
69
  Rethrow,
73
- BrOnExn,
74
70
  TupleMake,
75
71
  TupleExtract,
76
72
  Pop,
@@ -103,6 +99,10 @@ declare module binaryen {
103
99
  const LocalSetId: ExpressionIds;
104
100
  const GlobalGetId: ExpressionIds;
105
101
  const GlobalSetId: ExpressionIds;
102
+ const TableGetId: ExpressionIds;
103
+ const TableSetId: ExpressionIds;
104
+ const TableSizeId: ExpressionIds;
105
+ const TableGrowId: ExpressionIds;
106
106
  const LoadId: ExpressionIds;
107
107
  const StoreId: ExpressionIds;
108
108
  const ConstId: ExpressionIds;
@@ -111,12 +111,13 @@ declare module binaryen {
111
111
  const SelectId: ExpressionIds;
112
112
  const DropId: ExpressionIds;
113
113
  const ReturnId: ExpressionIds;
114
- const MemorySizeId: ExpressionIds;
115
- const MemoryGrowId: ExpressionIds;
116
114
  const NopId: ExpressionIds;
117
115
  const UnreachableId: ExpressionIds;
118
- const AtomicCmpxchgId: ExpressionIds;
116
+ const PopId: ExpressionIds;
117
+ const MemorySizeId: ExpressionIds;
118
+ const MemoryGrowId: ExpressionIds;
119
119
  const AtomicRMWId: ExpressionIds;
120
+ const AtomicCmpxchgId: ExpressionIds;
120
121
  const AtomicWaitId: ExpressionIds;
121
122
  const AtomicNotifyId: ExpressionIds;
122
123
  const AtomicFenceId: ExpressionIds;
@@ -126,21 +127,21 @@ declare module binaryen {
126
127
  const SIMDTernaryId: ExpressionIds;
127
128
  const SIMDShiftId: ExpressionIds;
128
129
  const SIMDLoadId: ExpressionIds;
130
+ const SIMDLoadStoreLaneId: ExpressionIds;
129
131
  const MemoryInitId: ExpressionIds;
130
132
  const DataDropId: ExpressionIds;
131
133
  const MemoryCopyId: ExpressionIds;
132
134
  const MemoryFillId: ExpressionIds;
133
135
  const RefNullId: ExpressionIds;
134
- const RefIsNullId: ExpressionIds;
136
+ const RefIsId: ExpressionIds;
137
+ const RefAsId: ExpressionIds;
135
138
  const RefFuncId: ExpressionIds;
136
139
  const RefEqId: ExpressionIds;
137
140
  const TryId: ExpressionIds;
138
141
  const ThrowId: ExpressionIds;
139
142
  const RethrowId: ExpressionIds;
140
- const BrOnExnId: ExpressionIds;
141
143
  const TupleMakeId: ExpressionIds;
142
144
  const TupleExtractId: ExpressionIds;
143
- const PopId: ExpressionIds;
144
145
  const I31NewId: ExpressionIds;
145
146
  const I31GetId: ExpressionIds;
146
147
  const CallRefId: ExpressionIds;
@@ -162,14 +163,14 @@ declare module binaryen {
162
163
  Table,
163
164
  Memory,
164
165
  Global,
165
- Event
166
+ Tag
166
167
  }
167
168
 
168
169
  const ExternalFunction: ExternalKinds;
169
170
  const ExternalTable: ExternalKinds;
170
171
  const ExternalMemory: ExternalKinds;
171
172
  const ExternalGlobal: ExternalKinds;
172
- const ExternalEvent: ExternalKinds;
173
+ const ExternalTag: ExternalKinds;
173
174
 
174
175
  enum Features {
175
176
  MVP,
@@ -185,6 +186,8 @@ declare module binaryen {
185
186
  Multivalue,
186
187
  GC,
187
188
  Memory64,
189
+ TypedFunctionReferences,
190
+ RelaxedSIMD,
188
191
  All
189
192
  }
190
193
 
@@ -381,6 +384,12 @@ declare module binaryen {
381
384
  LeUVecI32x4,
382
385
  GeSVecI32x4,
383
386
  GeUVecI32x4,
387
+ EqVecI64x2,
388
+ NeVecI64x2,
389
+ LtSVecI64x2,
390
+ GtSVecI64x2,
391
+ LeSVecI64x2,
392
+ GeSVecI64x2,
384
393
  EqVecF32x4,
385
394
  NeVecF32x4,
386
395
  LtVecF32x4,
@@ -399,9 +408,12 @@ declare module binaryen {
399
408
  XorVec128,
400
409
  AndNotVec128,
401
410
  BitselectVec128,
411
+ AnyTrueVec128,
412
+ PopcntVecI8x16,
413
+ AbsVecI8x16,
402
414
  NegVecI8x16,
403
- AnyTrueVecI8x16,
404
415
  AllTrueVecI8x16,
416
+ BitmaskVecI8x16,
405
417
  ShlVecI8x16,
406
418
  ShrSVecI8x16,
407
419
  ShrUVecI8x16,
@@ -411,14 +423,15 @@ declare module binaryen {
411
423
  SubVecI8x16,
412
424
  SubSatSVecI8x16,
413
425
  SubSatUVecI8x16,
414
- MulVecI8x16,
415
426
  MinSVecI8x16,
416
427
  MinUVecI8x16,
417
428
  MaxSVecI8x16,
418
429
  MaxUVecI8x16,
430
+ AvgrUVecI8x16,
431
+ AbsVecI16x8,
419
432
  NegVecI16x8,
420
- AnyTrueVecI16x8,
421
433
  AllTrueVecI16x8,
434
+ BitmaskVecI16x8,
422
435
  ShlVecI16x8,
423
436
  ShrSVecI16x8,
424
437
  ShrUVecI16x8,
@@ -433,10 +446,21 @@ declare module binaryen {
433
446
  MinUVecI16x8,
434
447
  MaxSVecI16x8,
435
448
  MaxUVecI16x8,
449
+ AvgrUVecI16x8,
450
+ Q15MulrSatSVecI16x8,
451
+ ExtMulLowSVecI16x8,
452
+ ExtMulHighSVecI16x8,
453
+ ExtMulLowUVecI16x8,
454
+ ExtMulHighUVecI16x8,
436
455
  DotSVecI16x8ToVecI32x4,
456
+ ExtMulLowSVecI32x4,
457
+ ExtMulHighSVecI32x4,
458
+ ExtMulLowUVecI32x4,
459
+ ExtMulHighUVecI32x4,
460
+ AbsVecI32x4,
437
461
  NegVecI32x4,
438
- AnyTrueVecI32x4,
439
462
  AllTrueVecI32x4,
463
+ BitmaskVecI32x4,
440
464
  ShlVecI32x4,
441
465
  ShrSVecI32x4,
442
466
  ShrUVecI32x4,
@@ -447,67 +471,109 @@ declare module binaryen {
447
471
  MinUVecI32x4,
448
472
  MaxSVecI32x4,
449
473
  MaxUVecI32x4,
474
+ AbsVecI64x2,
450
475
  NegVecI64x2,
451
- AnyTrueVecI64x2,
452
476
  AllTrueVecI64x2,
477
+ BitmaskVecI64x2,
453
478
  ShlVecI64x2,
454
479
  ShrSVecI64x2,
455
480
  ShrUVecI64x2,
456
481
  AddVecI64x2,
457
482
  SubVecI64x2,
483
+ MulVecI64x2,
484
+ ExtMulLowSVecI64x2,
485
+ ExtMulHighSVecI64x2,
486
+ ExtMulLowUVecI64x2,
487
+ ExtMulHighUVecI64x2,
458
488
  AbsVecF32x4,
459
489
  NegVecF32x4,
460
490
  SqrtVecF32x4,
461
- QFMAVecF32x4,
462
- QFMSVecF32x4,
463
491
  AddVecF32x4,
464
492
  SubVecF32x4,
465
493
  MulVecF32x4,
466
494
  DivVecF32x4,
467
495
  MinVecF32x4,
468
496
  MaxVecF32x4,
497
+ PMinVecF32x4,
498
+ PMaxVecF32x4,
499
+ CeilVecF32x4,
500
+ FloorVecF32x4,
501
+ TruncVecF32x4,
502
+ NearestVecF32x4,
469
503
  AbsVecF64x2,
470
504
  NegVecF64x2,
471
505
  SqrtVecF64x2,
472
- QFMAVecF64x2,
473
- QFMSVecF64x2,
474
506
  AddVecF64x2,
475
507
  SubVecF64x2,
476
508
  MulVecF64x2,
477
509
  DivVecF64x2,
478
510
  MinVecF64x2,
479
511
  MaxVecF64x2,
512
+ PMinVecF64x2,
513
+ PMaxVecF64x2,
514
+ CeilVecF64x2,
515
+ FloorVecF64x2,
516
+ TruncVecF64x2,
517
+ NearestVecF64x2,
518
+ ExtAddPairwiseSVecI8x16ToI16x8,
519
+ ExtAddPairwiseUVecI8x16ToI16x8,
520
+ ExtAddPairwiseSVecI16x8ToI32x4,
521
+ ExtAddPairwiseUVecI16x8ToI32x4,
480
522
  TruncSatSVecF32x4ToVecI32x4,
481
523
  TruncSatUVecF32x4ToVecI32x4,
482
- TruncSatSVecF64x2ToVecI64x2,
483
- TruncSatUVecF64x2ToVecI64x2,
484
524
  ConvertSVecI32x4ToVecF32x4,
485
525
  ConvertUVecI32x4ToVecF32x4,
486
- ConvertSVecI64x2ToVecF64x2,
487
- ConvertUVecI64x2ToVecF64x2,
488
- LoadSplatVec8x16,
489
- LoadSplatVec16x8,
490
- LoadSplatVec32x4,
491
- LoadSplatVec64x2,
492
- LoadExtSVec8x8ToVecI16x8,
493
- LoadExtUVec8x8ToVecI16x8,
494
- LoadExtSVec16x4ToVecI32x4,
495
- LoadExtUVec16x4ToVecI32x4,
496
- LoadExtSVec32x2ToVecI64x2,
497
- LoadExtUVec32x2ToVecI64x2,
526
+ Load8SplatVec128,
527
+ Load16SplatVec128,
528
+ Load32SplatVec128,
529
+ Load64SplatVec128,
530
+ Load8x8SVec128,
531
+ Load8x8UVec128,
532
+ Load16x4SVec128,
533
+ Load16x4UVec128,
534
+ Load32x2SVec128,
535
+ Load32x2UVec128,
536
+ Load32ZeroVec128,
537
+ Load64ZeroVec128,
538
+ Load8LaneVec128,
539
+ Load16LaneVec128,
540
+ Load32LaneVec128,
541
+ Load64LaneVec128,
542
+ Store8LaneVec128,
543
+ Store16LaneVec128,
544
+ Store32LaneVec128,
545
+ Store64LaneVec128,
498
546
  NarrowSVecI16x8ToVecI8x16,
499
547
  NarrowUVecI16x8ToVecI8x16,
500
548
  NarrowSVecI32x4ToVecI16x8,
501
549
  NarrowUVecI32x4ToVecI16x8,
502
- WidenLowSVecI8x16ToVecI16x8,
503
- WidenHighSVecI8x16ToVecI16x8,
504
- WidenLowUVecI8x16ToVecI16x8,
505
- WidenHighUVecI8x16ToVecI16x8,
506
- WidenLowSVecI16x8ToVecI32x4,
507
- WidenHighSVecI16x8ToVecI32x4,
508
- WidenLowUVecI16x8ToVecI32x4,
509
- WidenHighUVecI16x8ToVecI32x4,
510
- SwizzleVec8x16
550
+ ExtendLowSVecI8x16ToVecI16x8,
551
+ ExtendHighSVecI8x16ToVecI16x8,
552
+ ExtendLowUVecI8x16ToVecI16x8,
553
+ ExtendHighUVecI8x16ToVecI16x8,
554
+ ExtendLowSVecI16x8ToVecI32x4,
555
+ ExtendHighSVecI16x8ToVecI32x4,
556
+ ExtendLowUVecI16x8ToVecI32x4,
557
+ ExtendHighUVecI16x8ToVecI32x4,
558
+ ExtendLowSVecI32x4ToVecI64x2,
559
+ ExtendHighSVecI32x4ToVecI64x2,
560
+ ExtendLowUVecI32x4ToVecI64x2,
561
+ ExtendHighUVecI32x4ToVecI64x2,
562
+ ConvertLowSVecI32x4ToVecF64x2,
563
+ ConvertLowUVecI32x4ToVecF64x2,
564
+ TruncSatZeroSVecF64x2ToVecI32x4,
565
+ TruncSatZeroUVecF64x2ToVecI32x4,
566
+ DemoteZeroVecF64x2ToVecF32x4,
567
+ PromoteLowVecF32x4ToVecF64x2,
568
+ SwizzleVec8x16,
569
+ RefIsNull,
570
+ RefIsFunc,
571
+ RefIsData,
572
+ RefIsI31,
573
+ RefAsNonNull,
574
+ RefAsFunc,
575
+ RefAsData,
576
+ RefAsI31
511
577
  }
512
578
 
513
579
  const ClzInt32: Operations;
@@ -702,6 +768,12 @@ declare module binaryen {
702
768
  const LeUVecI32x4: Operations;
703
769
  const GeSVecI32x4: Operations;
704
770
  const GeUVecI32x4: Operations;
771
+ const EqVecI64x2: Operations;
772
+ const NeVecI64x2: Operations;
773
+ const LtSVecI64x2: Operations;
774
+ const GtSVecI64x2: Operations;
775
+ const LeSVecI64x2: Operations;
776
+ const GeSVecI64x2: Operations;
705
777
  const EqVecF32x4: Operations;
706
778
  const NeVecF32x4: Operations;
707
779
  const LtVecF32x4: Operations;
@@ -720,9 +792,12 @@ declare module binaryen {
720
792
  const XorVec128: Operations;
721
793
  const AndNotVec128: Operations;
722
794
  const BitselectVec128: Operations;
795
+ const AnyTrueVec128: Operations;
796
+ const PopcntVecI8x16: Operations;
797
+ const AbsVecI8x16: Operations;
723
798
  const NegVecI8x16: Operations;
724
- const AnyTrueVecI8x16: Operations;
725
799
  const AllTrueVecI8x16: Operations;
800
+ const BitmaskVecI8x16: Operations;
726
801
  const ShlVecI8x16: Operations;
727
802
  const ShrSVecI8x16: Operations;
728
803
  const ShrUVecI8x16: Operations;
@@ -732,14 +807,15 @@ declare module binaryen {
732
807
  const SubVecI8x16: Operations;
733
808
  const SubSatSVecI8x16: Operations;
734
809
  const SubSatUVecI8x16: Operations;
735
- const MulVecI8x16: Operations;
736
810
  const MinSVecI8x16: Operations;
737
811
  const MinUVecI8x16: Operations;
738
812
  const MaxSVecI8x16: Operations;
739
813
  const MaxUVecI8x16: Operations;
814
+ const AvgrUVecI8x16: Operations;
815
+ const AbsVecI16x8: Operations;
740
816
  const NegVecI16x8: Operations;
741
- const AnyTrueVecI16x8: Operations;
742
817
  const AllTrueVecI16x8: Operations;
818
+ const BitmaskVecI16x8: Operations;
743
819
  const ShlVecI16x8: Operations;
744
820
  const ShrSVecI16x8: Operations;
745
821
  const ShrUVecI16x8: Operations;
@@ -754,10 +830,21 @@ declare module binaryen {
754
830
  const MinUVecI16x8: Operations;
755
831
  const MaxSVecI16x8: Operations;
756
832
  const MaxUVecI16x8: Operations;
833
+ const AvgrUVecI16x8: Operations;
834
+ const Q15MulrSatSVecI16x8: Operations;
835
+ const ExtMulLowSVecI16x8: Operations;
836
+ const ExtMulHighSVecI16x8: Operations;
837
+ const ExtMulLowUVecI16x8: Operations;
838
+ const ExtMulHighUVecI16x8: Operations;
757
839
  const DotSVecI16x8ToVecI32x4: Operations;
840
+ const ExtMulLowSVecI32x4: Operations;
841
+ const ExtMulHighSVecI32x4: Operations;
842
+ const ExtMulLowUVecI32x4: Operations;
843
+ const ExtMulHighUVecI32x4: Operations;
844
+ const AbsVecI32x4: Operations;
758
845
  const NegVecI32x4: Operations;
759
- const AnyTrueVecI32x4: Operations;
760
846
  const AllTrueVecI32x4: Operations;
847
+ const BitmaskVecI32x4: Operations;
761
848
  const ShlVecI32x4: Operations;
762
849
  const ShrSVecI32x4: Operations;
763
850
  const ShrUVecI32x4: Operations;
@@ -768,80 +855,130 @@ declare module binaryen {
768
855
  const MinUVecI32x4: Operations;
769
856
  const MaxSVecI32x4: Operations;
770
857
  const MaxUVecI32x4: Operations;
858
+ const AbsVecI64x2: Operations;
771
859
  const NegVecI64x2: Operations;
772
- const AnyTrueVecI64x2: Operations;
773
860
  const AllTrueVecI64x2: Operations;
861
+ const BitmaskVecI64x2: Operations;
774
862
  const ShlVecI64x2: Operations;
775
863
  const ShrSVecI64x2: Operations;
776
864
  const ShrUVecI64x2: Operations;
777
865
  const AddVecI64x2: Operations;
778
866
  const SubVecI64x2: Operations;
867
+ const MulVecI64x2: Operations;
868
+ const ExtMulLowSVecI64x2: Operations;
869
+ const ExtMulHighSVecI64x2: Operations;
870
+ const ExtMulLowUVecI64x2: Operations;
871
+ const ExtMulHighUVecI64x2: Operations;
779
872
  const AbsVecF32x4: Operations;
780
873
  const NegVecF32x4: Operations;
781
874
  const SqrtVecF32x4: Operations;
782
- const QFMAVecF32x4: Operations;
783
- const QFMSVecF32x4: Operations;
784
875
  const AddVecF32x4: Operations;
785
876
  const SubVecF32x4: Operations;
786
877
  const MulVecF32x4: Operations;
787
878
  const DivVecF32x4: Operations;
788
879
  const MinVecF32x4: Operations;
789
880
  const MaxVecF32x4: Operations;
881
+ const PMinVecF32x4: Operations;
882
+ const PMaxVecF32x4: Operations;
883
+ const CeilVecF32x4: Operations;
884
+ const FloorVecF32x4: Operations;
885
+ const TruncVecF32x4: Operations;
886
+ const NearestVecF32x4: Operations;
790
887
  const AbsVecF64x2: Operations;
791
888
  const NegVecF64x2: Operations;
792
889
  const SqrtVecF64x2: Operations;
793
- const QFMAVecF64x2: Operations;
794
- const QFMSVecF64x2: Operations;
795
890
  const AddVecF64x2: Operations;
796
891
  const SubVecF64x2: Operations;
797
892
  const MulVecF64x2: Operations;
798
893
  const DivVecF64x2: Operations;
799
894
  const MinVecF64x2: Operations;
800
895
  const MaxVecF64x2: Operations;
896
+ const PMinVecF64x2: Operations;
897
+ const PMaxVecF64x2: Operations;
898
+ const CeilVecF64x2: Operations;
899
+ const FloorVecF64x2: Operations;
900
+ const TruncVecF64x2: Operations;
901
+ const NearestVecF64x2: Operations;
902
+ const ExtAddPairwiseSVecI8x16ToI16x8: Operations;
903
+ const ExtAddPairwiseUVecI8x16ToI16x8: Operations;
904
+ const ExtAddPairwiseSVecI16x8ToI32x4: Operations;
905
+ const ExtAddPairwiseUVecI16x8ToI32x4: Operations;
801
906
  const TruncSatSVecF32x4ToVecI32x4: Operations;
802
907
  const TruncSatUVecF32x4ToVecI32x4: Operations;
803
- const TruncSatSVecF64x2ToVecI64x2: Operations;
804
- const TruncSatUVecF64x2ToVecI64x2: Operations;
805
908
  const ConvertSVecI32x4ToVecF32x4: Operations;
806
909
  const ConvertUVecI32x4ToVecF32x4: Operations;
807
- const ConvertSVecI64x2ToVecF64x2: Operations;
808
- const ConvertUVecI64x2ToVecF64x2: Operations;
809
- const LoadSplatVec8x16: Operations;
810
- const LoadSplatVec16x8: Operations;
811
- const LoadSplatVec32x4: Operations;
812
- const LoadSplatVec64x2: Operations;
813
- const LoadExtSVec8x8ToVecI16x8: Operations;
814
- const LoadExtUVec8x8ToVecI16x8: Operations;
815
- const LoadExtSVec16x4ToVecI32x4: Operations;
816
- const LoadExtUVec16x4ToVecI32x4: Operations;
817
- const LoadExtSVec32x2ToVecI64x2: Operations;
818
- const LoadExtUVec32x2ToVecI64x2: Operations;
910
+ const Load8SplatVec128: Operations;
911
+ const Load16SplatVec128: Operations;
912
+ const Load32SplatVec128: Operations;
913
+ const Load64SplatVec128: Operations;
914
+ const Load8x8SVec128: Operations;
915
+ const Load8x8UVec128: Operations;
916
+ const Load16x4SVec128: Operations;
917
+ const Load16x4UVec128: Operations;
918
+ const Load32x2SVec128: Operations;
919
+ const Load32x2UVec128: Operations;
920
+ const Load32ZeroVec128: Operations;
921
+ const Load64ZeroVec128: Operations;
922
+ const Load8LaneVec128: Operations;
923
+ const Load16LaneVec128: Operations;
924
+ const Load32LaneVec128: Operations;
925
+ const Load64LaneVec128: Operations;
926
+ const Store8LaneVec128: Operations;
927
+ const Store16LaneVec128: Operations;
928
+ const Store32LaneVec128: Operations;
929
+ const Store64LaneVec128: Operations;
819
930
  const NarrowSVecI16x8ToVecI8x16: Operations;
820
931
  const NarrowUVecI16x8ToVecI8x16: Operations;
821
932
  const NarrowSVecI32x4ToVecI16x8: Operations;
822
933
  const NarrowUVecI32x4ToVecI16x8: Operations;
823
- const WidenLowSVecI8x16ToVecI16x8: Operations;
824
- const WidenHighSVecI8x16ToVecI16x8: Operations;
825
- const WidenLowUVecI8x16ToVecI16x8: Operations;
826
- const WidenHighUVecI8x16ToVecI16x8: Operations;
827
- const WidenLowSVecI16x8ToVecI32x4: Operations;
828
- const WidenHighSVecI16x8ToVecI32x4: Operations;
829
- const WidenLowUVecI16x8ToVecI32x4: Operations;
830
- const WidenHighUVecI16x8ToVecI32x4: Operations;
934
+ const ExtendLowSVecI8x16ToVecI16x8: Operations;
935
+ const ExtendHighSVecI8x16ToVecI16x8: Operations;
936
+ const ExtendLowUVecI8x16ToVecI16x8: Operations;
937
+ const ExtendHighUVecI8x16ToVecI16x8: Operations;
938
+ const ExtendLowSVecI16x8ToVecI32x4: Operations;
939
+ const ExtendHighSVecI16x8ToVecI32x4: Operations;
940
+ const ExtendLowUVecI16x8ToVecI32x4: Operations;
941
+ const ExtendHighUVecI16x8ToVecI32x4: Operations;
942
+ const ExtendLowSVecI32x4ToVecI64x2: Operations;
943
+ const ExtendHighSVecI32x4ToVecI64x2: Operations;
944
+ const ExtendLowUVecI32x4ToVecI64x2: Operations;
945
+ const ExtendHighUVecI32x4ToVecI64x2: Operations;
946
+ const ConvertLowSVecI32x4ToVecF64x2: Operations;
947
+ const ConvertLowUVecI32x4ToVecF64x2: Operations;
948
+ const TruncSatZeroSVecF64x2ToVecI32x4: Operations;
949
+ const TruncSatZeroUVecF64x2ToVecI32x4: Operations;
950
+ const DemoteZeroVecF64x2ToVecF32x4: Operations;
951
+ const PromoteLowVecF32x4ToVecF64x2: Operations;
831
952
  const SwizzleVec8x16: Operations;
953
+ const RefIsNull: Operations;
954
+ const RefIsFunc: Operations;
955
+ const RefIsData: Operations;
956
+ const RefIsI31: Operations;
957
+ const RefAsNonNull: Operations;
958
+ const RefAsFunc: Operations;
959
+ const RefAsData: Operations;
960
+ const RefAsI31: Operations;
961
+
962
+ const enum ExpressionRunnerFlags {
963
+ Default,
964
+ PreserveSideeffects,
965
+ TraverseCalls
966
+ }
832
967
 
968
+ type ElementSegmentRef = number;
833
969
  type ExpressionRef = number;
834
970
  type FunctionRef = number;
835
971
  type GlobalRef = number;
836
972
  type ExportRef = number;
837
- type EventRef = number;
973
+ type TableRef = number;
974
+ type TagRef = number;
838
975
 
839
976
  class Module {
840
977
  constructor();
841
978
  readonly ptr: number;
842
- block(label: string, children: ExpressionRef[], resultType?: Type): ExpressionRef;
979
+ block(label: string | null, children: ExpressionRef[], resultType?: Type): ExpressionRef;
843
980
  if(condition: ExpressionRef, ifTrue: ExpressionRef, ifFalse?: ExpressionRef): ExpressionRef;
844
- loop(label: string, body: ExpressionRef): ExpressionRef;
981
+ loop(label: string | null, body: ExpressionRef): ExpressionRef;
845
982
  br(label: string, condition?: ExpressionRef, value?: ExpressionRef): ExpressionRef;
846
983
  br_if(label: string, condition?: ExpressionRef, value?: ExpressionRef): ExpressionRef;
847
984
  switch(labels: string[], defaultLabel: string, condition: ExpressionRef, value?: ExpressionRef): ExpressionRef;
@@ -858,6 +995,13 @@ declare module binaryen {
858
995
  get(name: string, type: Type): ExpressionRef;
859
996
  set(name: string, value: ExpressionRef): ExpressionRef;
860
997
  };
998
+ table: {
999
+ get(name: string, index: ExpressionRef, type: Type): ExpressionRef;
1000
+ set(name: string, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
1001
+ size(name: string): ExpressionRef;
1002
+ grow(name: string, value: ExpressionRef, delta: ExpressionRef): ExpressionRef;
1003
+ // TODO: init, fill, copy
1004
+ };
861
1005
  memory: {
862
1006
  size(): ExpressionRef;
863
1007
  grow(value: ExpressionRef): ExpressionRef;
@@ -1157,9 +1301,30 @@ declare module binaryen {
1157
1301
  };
1158
1302
  v128: {
1159
1303
  load(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1304
+ load8_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1305
+ load16_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1306
+ load32_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1307
+ load64_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1308
+ load8x8_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1309
+ load8x8_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1310
+ load16x4_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1311
+ load16x4_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1312
+ load32x2_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1313
+ load32x2_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1314
+ load32_zero(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1315
+ load64_zero(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1316
+ load8_lane(offset: number, align: number, index: number, ptr: ExpressionRef, vec: ExpressionRef): ExpressionRef;
1317
+ load16_lane(offset: number, align: number, index: number, ptr: ExpressionRef, vec: ExpressionRef): ExpressionRef;
1318
+ load32_lane(offset: number, align: number, index: number, ptr: ExpressionRef, vec: ExpressionRef): ExpressionRef;
1319
+ load64_lane(offset: number, align: number, index: number, ptr: ExpressionRef, vec: ExpressionRef): ExpressionRef;
1320
+ store8_lane(offset: number, align: number, index: number, pt: ExpressionRef, vec: ExpressionRef): ExpressionRef;
1321
+ store16_lane(offset: number, align: number, index: number, pt: ExpressionRef, vec: ExpressionRef): ExpressionRef;
1322
+ store32_lane(offset: number, align: number, index: number, pt: ExpressionRef, vec: ExpressionRef): ExpressionRef;
1323
+ store64_lane(offset: number, align: number, index: number, pt: ExpressionRef, vec: ExpressionRef): ExpressionRef;
1160
1324
  store(offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef): ExpressionRef;
1161
- const(value: number): ExpressionRef;
1325
+ const(value: ArrayLike<number>): ExpressionRef;
1162
1326
  not(value: ExpressionRef): ExpressionRef;
1327
+ any_true(value: ExpressionRef): ExpressionRef;
1163
1328
  and(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1164
1329
  or(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1165
1330
  xor(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
@@ -1168,6 +1333,8 @@ declare module binaryen {
1168
1333
  pop(): ExpressionRef;
1169
1334
  };
1170
1335
  i8x16: {
1336
+ shuffle(left: ExpressionRef, right: ExpressionRef, mask: ArrayLike<number>): ExpressionRef;
1337
+ swizzle(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1171
1338
  splat(value: ExpressionRef): ExpressionRef;
1172
1339
  extract_lane_s(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
1173
1340
  extract_lane_u(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
@@ -1182,9 +1349,11 @@ declare module binaryen {
1182
1349
  le_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1183
1350
  ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1184
1351
  ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1352
+ abs(value: ExpressionRef): ExpressionRef;
1185
1353
  neg(value: ExpressionRef): ExpressionRef;
1186
- any_true(value: ExpressionRef): ExpressionRef;
1187
1354
  all_true(value: ExpressionRef): ExpressionRef;
1355
+ bitmask(value: ExpressionRef): ExpressionRef;
1356
+ popcnt(value: ExpressionRef): ExpressionRef;
1188
1357
  shl(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1189
1358
  shr_s(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1190
1359
  shr_u(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
@@ -1218,9 +1387,10 @@ declare module binaryen {
1218
1387
  le_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1219
1388
  ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1220
1389
  ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1390
+ abs(value: ExpressionRef): ExpressionRef;
1221
1391
  neg(value: ExpressionRef): ExpressionRef;
1222
- any_true(value: ExpressionRef): ExpressionRef;
1223
1392
  all_true(value: ExpressionRef): ExpressionRef;
1393
+ bitmask(value: ExpressionRef): ExpressionRef;
1224
1394
  shl(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1225
1395
  shr_s(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1226
1396
  shr_u(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
@@ -1236,14 +1406,19 @@ declare module binaryen {
1236
1406
  max_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1237
1407
  max_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1238
1408
  avgr_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1409
+ q15mulr_sat_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1410
+ extmul_low_i8x16_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1411
+ extmul_high_i8x16_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1412
+ extmul_low_i8x16_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1413
+ extmul_high_i8x16_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1414
+ extadd_pairwise_i8x16_s(value: ExpressionRef): ExpressionRef;
1415
+ extadd_pairwise_i8x16_u(value: ExpressionRef): ExpressionRef;
1239
1416
  narrow_i32x4_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1240
1417
  narrow_i32x4_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1241
- widen_low_i8x16_s(value: ExpressionRef): ExpressionRef;
1242
- widen_high_i8x16_s(value: ExpressionRef): ExpressionRef;
1243
- widen_low_i8x16_u(value: ExpressionRef): ExpressionRef;
1244
- widen_high_i8x16_u(value: ExpressionRef): ExpressionRef;
1245
- load8x8_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1246
- load8x8_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1418
+ extend_low_i8x16_s(value: ExpressionRef): ExpressionRef;
1419
+ extend_high_i8x16_s(value: ExpressionRef): ExpressionRef;
1420
+ extend_low_i8x16_u(value: ExpressionRef): ExpressionRef;
1421
+ extend_high_i8x16_u(value: ExpressionRef): ExpressionRef;
1247
1422
  };
1248
1423
  i32x4: {
1249
1424
  splat(value: ExpressionRef): ExpressionRef;
@@ -1259,40 +1434,64 @@ declare module binaryen {
1259
1434
  le_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1260
1435
  ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1261
1436
  ge_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1437
+ abs(value: ExpressionRef): ExpressionRef;
1262
1438
  neg(value: ExpressionRef): ExpressionRef;
1263
- any_true(value: ExpressionRef): ExpressionRef;
1264
1439
  all_true(value: ExpressionRef): ExpressionRef;
1440
+ bitmask(value: ExpressionRef): ExpressionRef;
1265
1441
  shl(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1266
1442
  shr_s(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1267
1443
  shr_u(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1268
1444
  add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1269
1445
  sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1270
1446
  mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1447
+ min_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1448
+ min_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1449
+ max_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1450
+ max_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1451
+ dot_i16x8_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1452
+ extmul_low_i16x8_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1453
+ extmul_high_i16x8_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1454
+ extmul_low_i16x8_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1455
+ extmul_high_i16x8_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1456
+ extadd_pairwise_i16x8_s(value: ExpressionRef): ExpressionRef;
1457
+ extadd_pairwise_i16x8_u(value: ExpressionRef): ExpressionRef;
1271
1458
  trunc_sat_f32x4_s(value: ExpressionRef): ExpressionRef;
1272
1459
  trunc_sat_f32x4_u(value: ExpressionRef): ExpressionRef;
1273
- widen_low_i16x8_s(value: ExpressionRef): ExpressionRef;
1274
- widen_high_i16x8_s(value: ExpressionRef): ExpressionRef;
1275
- widen_low_i16x8_u(value: ExpressionRef): ExpressionRef;
1276
- widen_high_i16x8_u(value: ExpressionRef): ExpressionRef;
1277
- load16x4_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1278
- load16x4_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1460
+ extend_low_i16x8_s(value: ExpressionRef): ExpressionRef;
1461
+ extend_high_i16x8_s(value: ExpressionRef): ExpressionRef;
1462
+ extend_low_i16x8_u(value: ExpressionRef): ExpressionRef;
1463
+ extend_high_i16x8_u(value: ExpressionRef): ExpressionRef;
1464
+ trunc_sat_f64x2_s_zero(value: ExpressionRef): ExpressionRef;
1465
+ trunc_sat_f64x2_u_zero(value: ExpressionRef): ExpressionRef;
1279
1466
  };
1280
1467
  i64x2: {
1281
1468
  splat(value: ExpressionRef): ExpressionRef;
1282
1469
  extract_lane(vec: ExpressionRef, index: ExpressionRef): ExpressionRef;
1283
1470
  replace_lane(vec: ExpressionRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef;
1471
+ eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1472
+ ne(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1473
+ lt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1474
+ gt_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1475
+ le_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1476
+ ge_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1477
+ abs(value: ExpressionRef): ExpressionRef;
1284
1478
  neg(value: ExpressionRef): ExpressionRef;
1285
- any_true(value: ExpressionRef): ExpressionRef;
1286
1479
  all_true(value: ExpressionRef): ExpressionRef;
1480
+ bitmask(value: ExpressionRef): ExpressionRef;
1287
1481
  shl(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1288
1482
  shr_s(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1289
1483
  shr_u(vec: ExpressionRef, shift: ExpressionRef): ExpressionRef;
1290
1484
  add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1291
1485
  sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1292
- trunc_sat_f64x2_s(value: ExpressionRef): ExpressionRef;
1293
- trunc_sat_f64x2_u(value: ExpressionRef): ExpressionRef;
1294
- load32x2_s(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1295
- load32x2_u(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1486
+ mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1487
+ extmul_low_i32x4_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1488
+ extmul_high_i32x4_s(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1489
+ extmul_low_i32x4_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1490
+ extmul_high_i32x4_u(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1491
+ extend_low_i32x4_s(value: ExpressionRef): ExpressionRef;
1492
+ extend_high_i32x4_s(value: ExpressionRef): ExpressionRef;
1493
+ extend_low_i32x4_u(value: ExpressionRef): ExpressionRef;
1494
+ extend_high_i32x4_u(value: ExpressionRef): ExpressionRef;
1296
1495
  };
1297
1496
  f32x4: {
1298
1497
  splat(value: ExpressionRef): ExpressionRef;
@@ -1307,16 +1506,21 @@ declare module binaryen {
1307
1506
  abs(value: ExpressionRef): ExpressionRef;
1308
1507
  neg(value: ExpressionRef): ExpressionRef;
1309
1508
  sqrt(value: ExpressionRef): ExpressionRef;
1310
- qfma(a: ExpressionRef, b: ExpressionRef, c: ExpressionRef): ExpressionRef;
1311
- qfms(a: ExpressionRef, b: ExpressionRef, c: ExpressionRef): ExpressionRef;
1312
1509
  add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1313
1510
  sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1314
1511
  mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1315
1512
  div(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1316
1513
  min(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1317
1514
  max(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1515
+ pmin(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1516
+ pmax(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1517
+ ceil(value: ExpressionRef): ExpressionRef;
1518
+ floor(value: ExpressionRef): ExpressionRef;
1519
+ trunc(value: ExpressionRef): ExpressionRef;
1520
+ nearest(value: ExpressionRef): ExpressionRef;
1318
1521
  convert_i32x4_s(value: ExpressionRef): ExpressionRef;
1319
1522
  convert_i32x4_u(value: ExpressionRef): ExpressionRef;
1523
+ demote_f64x2_zero(value: ExpressionRef): ExpressionRef;
1320
1524
  };
1321
1525
  f64x2: {
1322
1526
  splat(value: ExpressionRef): ExpressionRef;
@@ -1331,30 +1535,21 @@ declare module binaryen {
1331
1535
  abs(value: ExpressionRef): ExpressionRef;
1332
1536
  neg(value: ExpressionRef): ExpressionRef;
1333
1537
  sqrt(value: ExpressionRef): ExpressionRef;
1334
- qfma(a: ExpressionRef, b: ExpressionRef, c: ExpressionRef): ExpressionRef;
1335
- qfms(a: ExpressionRef, b: ExpressionRef, c: ExpressionRef): ExpressionRef;
1336
1538
  add(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1337
1539
  sub(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1338
1540
  mul(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1339
1541
  div(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1340
1542
  min(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1341
1543
  max(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1342
- convert_i64x2_s(value: ExpressionRef): ExpressionRef;
1343
- convert_i64x2_u(value: ExpressionRef): ExpressionRef;
1344
- };
1345
- v8x16: {
1346
- shuffle(left: ExpressionRef, right: ExpressionRef, mask: number[]): ExpressionRef;
1347
- swizzle(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1348
- load_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1349
- };
1350
- v16x8: {
1351
- load_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1352
- };
1353
- v32x4: {
1354
- load_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1355
- };
1356
- v64x2: {
1357
- load_splat(offset: number, align: number, ptr: ExpressionRef): ExpressionRef;
1544
+ pmin(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1545
+ pmax(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1546
+ ceil(value: ExpressionRef): ExpressionRef;
1547
+ floor(value: ExpressionRef): ExpressionRef;
1548
+ trunc(value: ExpressionRef): ExpressionRef;
1549
+ nearest(value: ExpressionRef): ExpressionRef;
1550
+ convert_low_i32x4_s(value: ExpressionRef): ExpressionRef;
1551
+ convert_low_i32x4_u(value: ExpressionRef): ExpressionRef;
1552
+ promote_low_f32x4(value: ExpressionRef): ExpressionRef;
1358
1553
  };
1359
1554
  funcref: {
1360
1555
  pop(): ExpressionRef;
@@ -1362,9 +1557,6 @@ declare module binaryen {
1362
1557
  externref: {
1363
1558
  pop(): ExpressionRef;
1364
1559
  };
1365
- exnref: {
1366
- pop(): ExpressionRef;
1367
- };
1368
1560
  anyref: {
1369
1561
  pop(): ExpressionRef;
1370
1562
  };
@@ -1374,9 +1566,19 @@ declare module binaryen {
1374
1566
  i31ref: {
1375
1567
  pop(): ExpressionRef;
1376
1568
  };
1569
+ dataref: {
1570
+ pop(): ExpressionRef;
1571
+ };
1377
1572
  ref: {
1378
1573
  null(type: Type): ExpressionRef;
1379
1574
  is_null(value: ExpressionRef): ExpressionRef;
1575
+ is_func(value: ExpressionRef): ExpressionRef;
1576
+ is_data(value: ExpressionRef): ExpressionRef;
1577
+ is_i31(value: ExpressionRef): ExpressionRef;
1578
+ as_non_null(value: ExpressionRef): ExpressionRef;
1579
+ as_func(value: ExpressionRef): ExpressionRef;
1580
+ as_data(value: ExpressionRef): ExpressionRef;
1581
+ as_i31(value: ExpressionRef): ExpressionRef;
1380
1582
  func(name: string, type: Type): ExpressionRef;
1381
1583
  eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef;
1382
1584
  };
@@ -1392,10 +1594,9 @@ declare module binaryen {
1392
1594
  make(elements: ExportRef[]): ExpressionRef;
1393
1595
  extract(tuple: ExpressionRef, index: number): ExpressionRef;
1394
1596
  };
1395
- try(body: ExpressionRef, catchBody: ExpressionRef): ExpressionRef;
1396
- throw(event: string, operands: ExpressionRef[]): ExpressionRef;
1397
- rethrow(exnref: ExpressionRef): ExpressionRef;
1398
- br_on_exn(label: string, event: string, exnref: ExpressionRef): ExpressionRef;
1597
+ try(name: string, body: ExpressionRef, catchTags: string[], catchBodies: ExpressionRef[], delegateTarget?: string): ExpressionRef;
1598
+ throw(tag: string, operands: ExpressionRef[]): ExpressionRef;
1599
+ rethrow(target: string): ExpressionRef;
1399
1600
  select(condition: ExpressionRef, ifTrue: ExpressionRef, ifFalse: ExpressionRef, type?: Type): ExpressionRef;
1400
1601
  drop(value: ExpressionRef): ExpressionRef;
1401
1602
  return(value?: ExpressionRef): ExpressionRef;
@@ -1409,30 +1610,41 @@ declare module binaryen {
1409
1610
  addGlobal(name: string, type: Type, mutable: boolean, init: ExpressionRef): GlobalRef;
1410
1611
  getGlobal(name: string): GlobalRef;
1411
1612
  removeGlobal(name: string): void;
1412
- addEvent(name: string, attribute: number, params: Type, results: Type): EventRef;
1413
- getEvent(name: string): EventRef;
1414
- removeEvent(name: string): void;
1613
+ addTable(name: string, initial: number, maximum: number, type: Type): TableRef;
1614
+ getTable(name: string): TableRef;
1615
+ removeTable(name: string): void;
1616
+ addTag(name: string, params: Type, results: Type): TagRef;
1617
+ getTag(name: string): TagRef;
1618
+ removeTag(name: string): void;
1415
1619
  addFunctionImport(internalName: string, externalModuleName: string, externalBaseName: string, params: Type, results: Type): void;
1416
1620
  addTableImport(internalName: string, externalModuleName: string, externalBaseName: string): void;
1417
1621
  addMemoryImport(internalName: string, externalModuleName: string, externalBaseName: string): void;
1418
1622
  addGlobalImport(internalName: string, externalModuleName: string, externalBaseName: string, globalType: Type): void;
1419
- addEventImport(internalName: string, externalModuleName: string, externalBaseName: string, attribute: number, params: Type, results: Type): void;
1623
+ addTagImport(internalName: string, externalModuleName: string, externalBaseName: string, params: Type, results: Type): void;
1420
1624
  addFunctionExport(internalName: string, externalName: string): ExportRef;
1421
1625
  addTableExport(internalName: string, externalName: string): ExportRef;
1422
1626
  addMemoryExport(internalName: string, externalName: string): ExportRef;
1423
1627
  addGlobalExport(internalName: string, externalName: string): ExportRef;
1628
+ addTagExport(internalName: string, externalName: string): ExportRef;
1424
1629
  removeExport(externalName: string): void;
1630
+ getExport(externalName: string): ExportRef;
1425
1631
  getNumExports(): number;
1426
1632
  getExportByIndex(index: number): ExportRef;
1427
1633
  setFunctionTable(initial: number, maximum: number, funcNames: number[], offset?: ExpressionRef): void;
1428
1634
  getFunctionTable(): { imported: boolean, segments: TableElement[] };
1429
1635
  setMemory(initial: number, maximum: number, exportName?: string | null, segments?: MemorySegment[] | null, flags?: number[] | null, shared?: boolean): void;
1430
- getNumMemorySegments(): number;
1431
1636
  getMemorySegmentInfoByIndex(index: number): MemorySegmentInfo;
1432
1637
  setStart(start: FunctionRef): void;
1433
1638
  getFeatures(): Features;
1434
1639
  setFeatures(features: Features): void;
1435
1640
  addCustomSection(name: string, contents: Uint8Array): void;
1641
+ getNumGlobals(): number;
1642
+ getNumTables(): number;
1643
+ getNumMemorySegments(): number;
1644
+ getNumElementSegments(): number;
1645
+ getGlobalByIndex(index: number): GlobalRef;
1646
+ getTableByIndex(index: number): TableRef;
1647
+ getElementSegmentByIndex(index: number): ElementSegmentRef;
1436
1648
  emitText(): string;
1437
1649
  emitStackIR(optimize?: boolean): string;
1438
1650
  emitAsmjs(): string;
@@ -1540,6 +1752,27 @@ declare module binaryen {
1540
1752
  value: ExpressionRef;
1541
1753
  }
1542
1754
 
1755
+ interface TableGetInfo extends ExpressionInfo {
1756
+ table: string;
1757
+ index: ExpressionRef;
1758
+ }
1759
+
1760
+ interface TableSetInfo extends ExpressionInfo {
1761
+ table: string;
1762
+ index: ExpressionRef;
1763
+ value: ExpressionRef;
1764
+ }
1765
+
1766
+ interface TableSizeInfo extends ExpressionInfo {
1767
+ table: string;
1768
+ }
1769
+
1770
+ interface TableGrowInfo extends ExpressionInfo {
1771
+ table: string;
1772
+ value: ExpressionRef;
1773
+ delta: ExpressionRef;
1774
+ }
1775
+
1543
1776
  interface LoadInfo extends ExpressionInfo {
1544
1777
  isAtomic: boolean;
1545
1778
  isSigned: boolean;
@@ -1559,7 +1792,7 @@ declare module binaryen {
1559
1792
  }
1560
1793
 
1561
1794
  interface ConstInfo extends ExpressionInfo {
1562
- value: number | { low: number, high: number };
1795
+ value: number | { low: number, high: number } | Array<number>;
1563
1796
  }
1564
1797
 
1565
1798
  interface UnaryInfo extends ExpressionInfo {
@@ -1593,10 +1826,14 @@ declare module binaryen {
1593
1826
  interface UnreachableInfo extends ExpressionInfo {
1594
1827
  }
1595
1828
 
1596
- interface HostInfo extends ExpressionInfo {
1597
- op: Operations;
1598
- nameOperand: string | null;
1599
- operands: ExpressionRef[];
1829
+ interface PopInfo extends ExpressionInfo {
1830
+ }
1831
+
1832
+ interface MemorySizeInfo extends ExpressionInfo {
1833
+ }
1834
+
1835
+ interface MemoryGrowInfo extends ExpressionInfo {
1836
+ delta: ExpressionRef;
1600
1837
  }
1601
1838
 
1602
1839
  interface AtomicRMWInfo extends ExpressionInfo {
@@ -1670,6 +1907,15 @@ declare module binaryen {
1670
1907
  ptr: ExpressionRef;
1671
1908
  }
1672
1909
 
1910
+ interface SIMDLoadStoreLaneInfo extends ExpressionInfo {
1911
+ op: Operations;
1912
+ offset: number;
1913
+ align: number;
1914
+ index: number;
1915
+ ptr: ExpressionRef;
1916
+ vec: ExpressionRef;
1917
+ }
1918
+
1673
1919
  interface MemoryInitInfo extends ExpressionInfo {
1674
1920
  segment: number;
1675
1921
  dest: ExpressionRef;
@@ -1677,7 +1923,7 @@ declare module binaryen {
1677
1923
  size: ExpressionRef;
1678
1924
  }
1679
1925
 
1680
- interface MemoryDropInfo extends ExpressionInfo {
1926
+ interface DataDropInfo extends ExpressionInfo {
1681
1927
  segment: number;
1682
1928
  }
1683
1929
 
@@ -1696,7 +1942,13 @@ declare module binaryen {
1696
1942
  interface RefNullInfo extends ExpressionInfo {
1697
1943
  }
1698
1944
 
1699
- interface RefIsNullInfo extends ExpressionInfo {
1945
+ interface RefIsInfo extends ExpressionInfo {
1946
+ op: Operations;
1947
+ value: ExpressionRef;
1948
+ }
1949
+
1950
+ interface RefAsInfo extends ExpressionInfo {
1951
+ op: Operations;
1700
1952
  value: ExpressionRef;
1701
1953
  }
1702
1954
 
@@ -1704,34 +1956,48 @@ declare module binaryen {
1704
1956
  func: string;
1705
1957
  }
1706
1958
 
1959
+ interface RefEqInfo extends ExpressionInfo {
1960
+ left: ExpressionRef;
1961
+ right: ExpressionRef;
1962
+ }
1963
+
1707
1964
  interface TryInfo extends ExpressionInfo {
1965
+ name: string;
1708
1966
  body: ExpressionRef;
1709
- catchBody: ExpressionRef;
1967
+ catchTags: string[];
1968
+ catchBodies: ExpressionRef[];
1969
+ hasCatchAll: boolean;
1970
+ delegateTarget: string;
1971
+ isDelegate: boolean;
1710
1972
  }
1711
1973
 
1712
1974
  interface ThrowInfo extends ExpressionInfo {
1713
- event: string;
1975
+ tag: string;
1714
1976
  operands: ExpressionRef[];
1715
1977
  }
1716
1978
 
1717
1979
  interface RethrowInfo extends ExpressionInfo {
1718
- exnref: ExpressionRef;
1980
+ target: string;
1719
1981
  }
1720
1982
 
1721
- interface BrOnExnInfo extends ExpressionInfo {
1722
- name: string;
1723
- event: string;
1724
- exnref: ExpressionRef;
1983
+ interface TupleMakeInfo extends ExpressionInfo {
1984
+ operands: ExpressionRef[];
1725
1985
  }
1726
1986
 
1727
- interface PopInfo extends ExpressionInfo {
1987
+ interface TupleExtract extends ExpressionInfo {
1988
+ tuple: ExpressionRef;
1989
+ index: number;
1728
1990
  }
1729
1991
 
1730
- interface PushInfo extends ExpressionInfo {
1731
- type: never; // ?
1992
+ interface I31NewInfo extends ExpressionInfo {
1732
1993
  value: ExpressionRef;
1733
1994
  }
1734
1995
 
1996
+ interface I31GetInfo extends ExpressionInfo {
1997
+ i31: ExpressionRef;
1998
+ isSigned: boolean;
1999
+ }
2000
+
1735
2001
  function getFunctionInfo(func: FunctionRef): FunctionInfo;
1736
2002
 
1737
2003
  interface FunctionInfo {
@@ -1755,25 +2021,43 @@ declare module binaryen {
1755
2021
  init: ExpressionRef;
1756
2022
  }
1757
2023
 
1758
- function getExportInfo(export_: ExportRef): ExportInfo;
2024
+ function getTableInfo(table: TableRef): TableInfo;
1759
2025
 
1760
- interface ExportInfo {
1761
- kind: ExternalKinds;
2026
+ interface TableInfo {
1762
2027
  name: string;
1763
- value: string;
2028
+ module: string | null;
2029
+ base: string | null;
2030
+ initial: number;
2031
+ max?: number;
2032
+ }
2033
+
2034
+ function getElementSegmentInfo(segment: ElementSegmentRef): ElementSegmentInfo;
2035
+
2036
+ interface ElementSegmentInfo {
2037
+ name: string,
2038
+ table: string,
2039
+ offset: number,
2040
+ data: string[]
1764
2041
  }
1765
2042
 
1766
- function getEventInfo(event: EventRef): EventInfo;
2043
+ function getTagInfo(tag: TagRef): TagInfo;
1767
2044
 
1768
- interface EventInfo {
2045
+ interface TagInfo {
1769
2046
  name: string;
1770
2047
  module: string | null;
1771
2048
  base: string | null;
1772
- attribute: number;
1773
2049
  params: Type;
1774
2050
  results: Type;
1775
2051
  }
1776
2052
 
2053
+ function getExportInfo(export_: ExportRef): ExportInfo;
2054
+
2055
+ interface ExportInfo {
2056
+ kind: ExternalKinds;
2057
+ name: string;
2058
+ value: string;
2059
+ }
2060
+
1777
2061
  function getSideEffects(expr: ExpressionRef, features: Features): SideEffects;
1778
2062
 
1779
2063
  const enum SideEffects {
@@ -1786,10 +2070,13 @@ declare module binaryen {
1786
2070
  WritesGlobal,
1787
2071
  ReadsMemory,
1788
2072
  WritesMemory,
2073
+ ReadsTable,
2074
+ WritesTable,
1789
2075
  ImplicitTrap,
1790
2076
  IsAtomic,
1791
2077
  Throws,
1792
2078
  DanglingPop,
2079
+ TrapsNeverHappen,
1793
2080
  Any
1794
2081
  }
1795
2082
 
@@ -1804,6 +2091,8 @@ declare module binaryen {
1804
2091
  function setDebugInfo(on: boolean): void;
1805
2092
  function getLowMemoryUnused(): boolean;
1806
2093
  function setLowMemoryUnused(on: boolean): void;
2094
+ function getZeroFilledMemory(): boolean;
2095
+ function setZeroFilledMemory(on: boolean): void;
1807
2096
  function getFastMath(): boolean;
1808
2097
  function setFastMath(on: boolean): void;
1809
2098
  function getPassArgument(key: string): string | null;
@@ -1815,6 +2104,8 @@ declare module binaryen {
1815
2104
  function setFlexibleInlineMaxSize(size: number): void;
1816
2105
  function getOneCallerInlineMaxSize(): number;
1817
2106
  function setOneCallerInlineMaxSize(size: number): void;
2107
+ function getAllowInliningFunctionsWithLoops(): boolean;
2108
+ function setAllowInliningFunctionsWithLoops(on: boolean): void;
1818
2109
  function exit(status: number): void;
1819
2110
 
1820
2111
  type RelooperBlockRef = number;
@@ -1827,6 +2118,15 @@ declare module binaryen {
1827
2118
  addBranchForSwitch(from: RelooperBlockRef, to: RelooperBlockRef, indexes: number[], code: ExpressionRef): void;
1828
2119
  renderAndDispose(entry: RelooperBlockRef, labelHelper: number): ExpressionRef;
1829
2120
  }
2121
+
2122
+ class ExpressionRunner {
2123
+ constructor(module: Module, flags: ExpressionRunnerFlags, maxDepth: number, maxLoopIterations: number);
2124
+ setLocalValue(index: number, valueExpr: ExpressionRef): boolean;
2125
+ setGlobalValue(name: string, valueExpr: ExpressionRef): boolean;
2126
+ runAndDispose(expr: ExpressionRef): ExpressionRef;
2127
+ }
1830
2128
  }
1831
2129
 
1832
- export = binaryen;
2130
+ declare const binaryen: typeof Binaryen;
2131
+
2132
+ export default binaryen;