@grain/binaryen.ml 0.9.1 → 0.11.2

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.
Files changed (187) hide show
  1. {binaryen-archive → binaryen-archive-v0.11.2}/.gitattributes +0 -0
  2. {binaryen-archive → binaryen-archive-v0.11.2}/.gitignore +1 -0
  3. {binaryen-archive → binaryen-archive-v0.11.2}/.gitmodules +0 -0
  4. {binaryen-archive → binaryen-archive-v0.11.2}/CHANGELOG.md +73 -0
  5. {binaryen-archive → binaryen-archive-v0.11.2}/LICENSE +0 -0
  6. {binaryen-archive → binaryen-archive-v0.11.2}/README.md +27 -3
  7. {binaryen-archive → binaryen-archive-v0.11.2}/binaryen.opam +8 -8
  8. {binaryen-archive → binaryen-archive-v0.11.2}/dune +0 -0
  9. {binaryen-archive → binaryen-archive-v0.11.2}/dune-project +0 -0
  10. {binaryen-archive → binaryen-archive-v0.11.2}/dune-workspace +0 -0
  11. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/.gitattributes +0 -0
  12. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/.gitignore +0 -0
  13. binaryen-archive-v0.11.2/esy.lock/index.json +1365 -0
  14. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/astring.0.8.5/opam +0 -0
  15. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/base-threads.base/opam +0 -0
  16. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/base-unix.base/opam +0 -0
  17. {binaryen-archive/esy.lock/opam/base.v0.14.1 → binaryen-archive-v0.11.2/esy.lock/opam/base.v0.14.2}/opam +4 -4
  18. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/biniou.1.2.1/opam +1 -1
  19. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/cmdliner.1.0.4/opam +0 -0
  20. {binaryen-archive/esy.lock/opam/cppo.1.6.7 → binaryen-archive-v0.11.2/esy.lock/opam/cppo.1.6.8}/opam +4 -6
  21. {binaryen-archive/esy.lock/opam/csexp.1.4.0 → binaryen-archive-v0.11.2/esy.lock/opam/csexp.1.5.1}/opam +11 -9
  22. {binaryen-archive/esy.lock/opam/dune-build-info.2.8.2 → binaryen-archive-v0.11.2/esy.lock/opam/dune-build-info.2.9.1}/opam +5 -5
  23. {binaryen-archive/esy.lock/opam/dune-configurator.2.8.2 → binaryen-archive-v0.11.2/esy.lock/opam/dune-configurator.2.9.1}/opam +5 -5
  24. {binaryen-archive/esy.lock/opam/dune.2.8.2 → binaryen-archive-v0.11.2/esy.lock/opam/dune.2.9.1}/opam +4 -4
  25. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/easy-format.1.3.2/opam +1 -1
  26. {binaryen-archive/esy.lock/opam/fix.20201120 → binaryen-archive-v0.11.2/esy.lock/opam/fix.20211231}/opam +7 -5
  27. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/fpath.0.7.3/opam +0 -0
  28. binaryen-archive-v0.11.2/esy.lock/opam/js_of_ocaml-compiler.3.11.0/opam +54 -0
  29. binaryen-archive-v0.11.2/esy.lock/opam/js_of_ocaml-ppx.3.11.0/opam +44 -0
  30. binaryen-archive-v0.11.2/esy.lock/opam/js_of_ocaml.3.11.0/opam +45 -0
  31. {binaryen-archive/esy.lock/opam/menhir.20201216 → binaryen-archive-v0.11.2/esy.lock/opam/menhir.20211128}/opam +8 -6
  32. {binaryen-archive/esy.lock/opam/menhirLib.20201216 → binaryen-archive-v0.11.2/esy.lock/opam/menhirLib.20211128}/opam +8 -6
  33. {binaryen-archive/esy.lock/opam/menhirSdk.20201216 → binaryen-archive-v0.11.2/esy.lock/opam/menhirSdk.20211128}/opam +8 -6
  34. binaryen-archive-v0.11.2/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam +39 -0
  35. {binaryen-archive/esy.lock/opam/ocaml-lsp-server.1.4.0 → binaryen-archive-v0.11.2/esy.lock/opam/ocaml-lsp-server.1.9.0}/opam +15 -12
  36. {binaryen-archive/esy.lock/opam/ocaml-migrate-parsetree.2.1.0 → binaryen-archive-v0.11.2/esy.lock/opam/ocaml-migrate-parsetree.2.3.0}/opam +13 -10
  37. binaryen-archive-v0.11.2/esy.lock/opam/ocaml-version.3.4.0/opam +49 -0
  38. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/ocamlbuild.0.14.0/opam +1 -1
  39. {binaryen-archive/esy.lock/opam/ocamlfind.1.8.1 → binaryen-archive-v0.11.2/esy.lock/opam/ocamlfind.1.9.1}/opam +19 -39
  40. binaryen-archive-v0.11.2/esy.lock/opam/ocamlformat-rpc-lib.0.19.0/opam +40 -0
  41. binaryen-archive-v0.11.2/esy.lock/opam/ocamlformat.0.18.0/opam +56 -0
  42. {binaryen-archive/esy.lock/opam/odoc.1.5.2 → binaryen-archive-v0.11.2/esy.lock/opam/odoc.1.5.3}/opam +12 -12
  43. binaryen-archive-v0.11.2/esy.lock/opam/pp.1.1.2/opam +58 -0
  44. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/ppx_derivers.1.2.1/opam +1 -1
  45. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/ppx_yojson_conv_lib.v0.14.0/opam +2 -2
  46. {binaryen-archive/esy.lock/opam/ppxlib.0.21.0 → binaryen-archive-v0.11.2/esy.lock/opam/ppxlib.0.22.2}/opam +40 -32
  47. {binaryen-archive/esy.lock/opam/re.1.9.0 → binaryen-archive-v0.11.2/esy.lock/opam/re.1.10.3}/opam +8 -4
  48. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/result.1.5/opam +2 -2
  49. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/seq.base/files/META.seq +0 -0
  50. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/seq.base/files/seq.install +0 -0
  51. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/seq.base/opam +0 -0
  52. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/sexplib0.v0.14.0/opam +2 -2
  53. binaryen-archive-v0.11.2/esy.lock/opam/spawn.v0.15.0/opam +56 -0
  54. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/stdio.v0.14.0/opam +2 -2
  55. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/stdlib-shims.0.3.0/opam +0 -0
  56. {binaryen-archive/esy.lock/opam/topkg.1.0.3 → binaryen-archive-v0.11.2/esy.lock/opam/topkg.1.0.4}/opam +18 -22
  57. binaryen-archive-v0.11.2/esy.lock/opam/tyxml.4.5.0/opam +42 -0
  58. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/uchar.0.0.2/opam +0 -0
  59. binaryen-archive-v0.11.2/esy.lock/opam/uucp.14.0.0/opam +41 -0
  60. {binaryen-archive/esy.lock/opam/uuseg.13.0.0 → binaryen-archive-v0.11.2/esy.lock/opam/uuseg.14.0.0}/opam +22 -28
  61. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/uutf.1.0.2/opam +0 -0
  62. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/opam/yojson.1.7.0/opam +1 -1
  63. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch +0 -0
  64. {binaryen-archive → binaryen-archive-v0.11.2}/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json +0 -0
  65. binaryen-archive/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch → binaryen-archive-v0.11.2/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch +0 -0
  66. {binaryen-archive/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override → binaryen-archive-v0.11.2/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override}/package.json +1 -1
  67. binaryen-archive-v0.11.2/js/binaryen.es5.js +5 -0
  68. {binaryen-archive → binaryen-archive-v0.11.2}/js/dune +1 -6
  69. binaryen-archive-v0.11.2/js/element_segment.ml +33 -0
  70. binaryen-archive-v0.11.2/js/export.ml +60 -0
  71. binaryen-archive-v0.11.2/js/expression.ml +944 -0
  72. binaryen-archive-v0.11.2/js/function.ml +60 -0
  73. binaryen-archive-v0.11.2/js/global.ml +48 -0
  74. {binaryen-archive → binaryen-archive-v0.11.2}/js/import.ml +24 -0
  75. {binaryen-archive → binaryen-archive-v0.11.2}/js/literal.ml +0 -0
  76. {binaryen-archive → binaryen-archive-v0.11.2}/js/memory.ml +0 -0
  77. {binaryen-archive → binaryen-archive-v0.11.2}/js/module.ml +42 -46
  78. {binaryen-archive → binaryen-archive-v0.11.2}/js/op.ml +9 -78
  79. binaryen-archive-v0.11.2/js/postlude.js +2 -0
  80. binaryen-archive-v0.11.2/js/prelude.js +11 -0
  81. binaryen-archive-v0.11.2/js/settings.ml +60 -0
  82. {binaryen-archive → binaryen-archive-v0.11.2}/js/stubs.c +0 -0
  83. binaryen-archive-v0.11.2/js/table.ml +29 -0
  84. {binaryen-archive → binaryen-archive-v0.11.2}/js/type.ml +3 -0
  85. binaryen-archive-v0.11.2/package.json +37 -0
  86. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_exports.c +78 -0
  87. binaryen-archive-v0.11.2/src/binaryen_stubs_expressions.c +1710 -0
  88. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_features.c +7 -0
  89. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_functions.c +78 -0
  90. binaryen-archive-v0.11.2/src/binaryen_stubs_globals.c +109 -0
  91. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_imports.c +29 -0
  92. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_literals.c +0 -0
  93. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_memory.c +1 -1
  94. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_modules.c +0 -122
  95. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_ops.c +19 -173
  96. binaryen-archive-v0.11.2/src/binaryen_stubs_settings.c +145 -0
  97. binaryen-archive-v0.11.2/src/binaryen_stubs_tables.c +145 -0
  98. {binaryen-archive → binaryen-archive-v0.11.2}/src/binaryen_stubs_types.c +18 -0
  99. binaryen-archive-v0.11.2/src/dune +14 -0
  100. binaryen-archive-v0.11.2/src/element_segment.ml +13 -0
  101. binaryen-archive-v0.11.2/src/export.ml +54 -0
  102. binaryen-archive-v0.11.2/src/expression.ml +844 -0
  103. {binaryen-archive → binaryen-archive-v0.11.2}/src/function.ml +18 -0
  104. binaryen-archive-v0.11.2/src/global.ml +24 -0
  105. {binaryen-archive → binaryen-archive-v0.11.2}/src/import.ml +12 -0
  106. {binaryen-archive → binaryen-archive-v0.11.2}/src/literal.ml +0 -0
  107. {binaryen-archive → binaryen-archive-v0.11.2}/src/memory.ml +0 -0
  108. binaryen-archive-v0.11.2/src/module.ml +115 -0
  109. {binaryen-archive → binaryen-archive-v0.11.2}/src/ocaml_helpers.c +0 -8
  110. {binaryen-archive → binaryen-archive-v0.11.2}/src/ocaml_helpers.h +2 -3
  111. {binaryen-archive → binaryen-archive-v0.11.2}/src/op.ml +18 -131
  112. binaryen-archive-v0.11.2/src/settings.ml +45 -0
  113. binaryen-archive-v0.11.2/src/table.ml +26 -0
  114. {binaryen-archive → binaryen-archive-v0.11.2}/src/type.ml +2 -0
  115. binaryen-archive-v0.11.2/test/config/dune +8 -0
  116. binaryen-archive-v0.11.2/test/config/ocamlopt_flags.ml +16 -0
  117. {binaryen-archive → binaryen-archive-v0.11.2}/test/dune +4 -0
  118. {binaryen-archive → binaryen-archive-v0.11.2}/test/test.expected +38 -5
  119. binaryen-archive-v0.11.2/test/test.ml +147 -0
  120. binaryen-archive-v0.11.2/virtual/dune +6 -0
  121. binaryen-archive-v0.11.2/virtual/element_segment.mli +11 -0
  122. binaryen-archive-v0.11.2/virtual/export.mli +33 -0
  123. binaryen-archive-v0.11.2/virtual/expression.mli +423 -0
  124. {binaryen-archive → binaryen-archive-v0.11.2}/virtual/function.mli +16 -0
  125. binaryen-archive-v0.11.2/virtual/global.mli +19 -0
  126. {binaryen-archive → binaryen-archive-v0.11.2}/virtual/import.mli +8 -0
  127. {binaryen-archive → binaryen-archive-v0.11.2}/virtual/literal.mli +0 -0
  128. {binaryen-archive → binaryen-archive-v0.11.2}/virtual/memory.mli +0 -0
  129. binaryen-archive-v0.11.2/virtual/module.mli +65 -0
  130. {binaryen-archive → binaryen-archive-v0.11.2}/virtual/op.mli +9 -53
  131. binaryen-archive-v0.11.2/virtual/settings.mli +35 -0
  132. binaryen-archive-v0.11.2/virtual/table.mli +19 -0
  133. {binaryen-archive → binaryen-archive-v0.11.2}/virtual/type.mli +2 -0
  134. binaryen-archive/esy.lock/index.json +0 -1288
  135. binaryen-archive/esy.lock/opam/conf-m4.1/opam +0 -22
  136. binaryen-archive/esy.lock/opam/dot-merlin-reader.4.1/opam +0 -30
  137. binaryen-archive/esy.lock/opam/js_of_ocaml-compiler.3.9.1/opam +0 -40
  138. binaryen-archive/esy.lock/opam/js_of_ocaml-ppx.3.9.0/opam +0 -30
  139. binaryen-archive/esy.lock/opam/js_of_ocaml.3.9.0/opam +0 -31
  140. binaryen-archive/esy.lock/opam/ocaml-compiler-libs.v0.12.3/opam +0 -29
  141. binaryen-archive/esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub +0 -4
  142. binaryen-archive/esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install +0 -6
  143. binaryen-archive/esy.lock/opam/ocamlformat.0.15.1/opam +0 -41
  144. binaryen-archive/esy.lock/opam/tyxml.4.4.0/opam +0 -47
  145. binaryen-archive/esy.lock/opam/uucp.13.0.0/opam +0 -44
  146. binaryen-archive/esy.lock/overrides/opam__s__conf_m4_opam__c__1_opam_override/package.json +0 -6
  147. binaryen-archive/js/export.ml +0 -23
  148. binaryen-archive/js/expression.ml +0 -185
  149. binaryen-archive/js/features.ml +0 -27
  150. binaryen-archive/js/function.ml +0 -29
  151. binaryen-archive/js/function_table.ml +0 -13
  152. binaryen-archive/js/global.ml +0 -19
  153. binaryen-archive/js/postlude.js +0 -2
  154. binaryen-archive/js/table.ml +0 -12
  155. binaryen-archive/package.json +0 -43
  156. binaryen-archive/src/binaryen_stubs_expressions.c +0 -410
  157. binaryen-archive/src/binaryen_stubs_function_tables.c +0 -25
  158. binaryen-archive/src/binaryen_stubs_globals.c +0 -46
  159. binaryen-archive/src/binaryen_stubs_tables.c +0 -31
  160. binaryen-archive/src/config/dune +0 -8
  161. binaryen-archive/src/config/library_flags.ml +0 -16
  162. binaryen-archive/src/dune +0 -53
  163. binaryen-archive/src/export.ml +0 -21
  164. binaryen-archive/src/expression.ml +0 -115
  165. binaryen-archive/src/features.ml +0 -49
  166. binaryen-archive/src/function_table.ml +0 -6
  167. binaryen-archive/src/global.ml +0 -10
  168. binaryen-archive/src/module.ml +0 -89
  169. binaryen-archive/src/table.ml +0 -4
  170. binaryen-archive/test/test.ml +0 -83
  171. binaryen-archive/vendor/binaryen-c.h +0 -2647
  172. binaryen-archive/vendor/js/index.es5.js +0 -5
  173. binaryen-archive/vendor/linux/libbinaryen.a +0 -0
  174. binaryen-archive/vendor/linux/libbinaryen.so +0 -0
  175. binaryen-archive/vendor/macosx/libbinaryen.a +0 -0
  176. binaryen-archive/vendor/macosx/libbinaryen.dylib +0 -0
  177. binaryen-archive/vendor/mingw64/libbinaryen.a +0 -0
  178. binaryen-archive/vendor/mingw64/libbinaryen.dll +0 -0
  179. binaryen-archive/vendor/wasm-delegations.h +0 -85
  180. binaryen-archive/virtual/dune +0 -6
  181. binaryen-archive/virtual/export.mli +0 -11
  182. binaryen-archive/virtual/expression.mli +0 -68
  183. binaryen-archive/virtual/features.mli +0 -23
  184. binaryen-archive/virtual/function_table.mli +0 -4
  185. binaryen-archive/virtual/global.mli +0 -7
  186. binaryen-archive/virtual/module.mli +0 -67
  187. binaryen-archive/virtual/table.mli +0 -2
@@ -0,0 +1,844 @@
1
+ type t
2
+
3
+ type kind =
4
+ | Invalid
5
+ | Nop
6
+ | Block
7
+ | If
8
+ | Loop
9
+ | Break
10
+ | Switch
11
+ | Call
12
+ | CallIndirect
13
+ | LocalGet
14
+ | LocalSet
15
+ | GlobalGet
16
+ | GlobalSet
17
+ | Load
18
+ | Store
19
+ | AtomicRMW
20
+ | AtomicCmpxchg
21
+ | AtomicWait
22
+ | AtomicNotify
23
+ | AtomicFence
24
+ | SIMDExtract
25
+ | SIMDReplace
26
+ | SIMDShuffle
27
+ | SIMDTernary
28
+ | SIMDShift
29
+ | SIMDLoad
30
+ | SIMDLoadStoreLane
31
+ | MemoryInit
32
+ | DataDrop
33
+ | MemoryCopy
34
+ | MemoryFill
35
+ | Const
36
+ | Unary
37
+ | Binary
38
+ | Select
39
+ | Drop
40
+ | Return
41
+ | MemorySize
42
+ | MemoryGrow
43
+ | Unreachable
44
+ | Pop
45
+ | RefNull
46
+ | RefIs
47
+ | RefFunc
48
+ | RefEq
49
+ | Try
50
+ | Throw
51
+ | Rethrow
52
+ | TupleMake
53
+ | TupleExtract
54
+ | I31New
55
+ | I31Get
56
+ | CallRef
57
+ | RefTest
58
+ | RefCast
59
+ | BrOn
60
+ | RttCanon
61
+ | RttSub
62
+ | StructNew
63
+ | StructGet
64
+ | StructSet
65
+ | ArrayNew
66
+ | ArrayGet
67
+ | ArraySet
68
+ | ArrayLen
69
+ | RefAs
70
+
71
+ external get_id : t -> int = "caml_binaryen_expression_get_id"
72
+
73
+ external id_invalid : unit -> int = "caml_binaryen_expression_id_invalid"
74
+
75
+ let id_invalid = id_invalid ()
76
+
77
+ external id_nop : unit -> int = "caml_binaryen_expression_id_nop"
78
+
79
+ let id_nop = id_nop ()
80
+
81
+ external id_block : unit -> int = "caml_binaryen_expression_id_block"
82
+
83
+ let id_block = id_block ()
84
+
85
+ external id_if : unit -> int = "caml_binaryen_expression_id_if"
86
+
87
+ let id_if = id_if ()
88
+
89
+ external id_loop : unit -> int = "caml_binaryen_expression_id_loop"
90
+
91
+ let id_loop = id_loop ()
92
+
93
+ external id_break : unit -> int = "caml_binaryen_expression_id_break"
94
+
95
+ let id_break = id_break ()
96
+
97
+ external id_switch : unit -> int = "caml_binaryen_expression_id_switch"
98
+
99
+ let id_switch = id_switch ()
100
+
101
+ external id_call : unit -> int = "caml_binaryen_expression_id_call"
102
+
103
+ let id_call = id_call ()
104
+
105
+ external id_call_indirect : unit -> int
106
+ = "caml_binaryen_expression_id_call_indirect"
107
+
108
+ let id_call_indirect = id_call_indirect ()
109
+
110
+ external id_local_get : unit -> int = "caml_binaryen_expression_id_local_get"
111
+
112
+ let id_local_get = id_local_get ()
113
+
114
+ external id_local_set : unit -> int = "caml_binaryen_expression_id_local_set"
115
+
116
+ let id_local_set = id_local_set ()
117
+
118
+ external id_global_get : unit -> int = "caml_binaryen_expression_id_global_get"
119
+
120
+ let id_global_get = id_global_get ()
121
+
122
+ external id_global_set : unit -> int = "caml_binaryen_expression_id_global_set"
123
+
124
+ let id_global_set = id_global_set ()
125
+
126
+ external id_load : unit -> int = "caml_binaryen_expression_id_load"
127
+
128
+ let id_load = id_load ()
129
+
130
+ external id_store : unit -> int = "caml_binaryen_expression_id_store"
131
+
132
+ let id_store = id_store ()
133
+
134
+ external id_atomic_rmw : unit -> int = "caml_binaryen_expression_id_atomic_rmw"
135
+
136
+ let id_atomic_rmw = id_atomic_rmw ()
137
+
138
+ external id_atomic_cmpxchg : unit -> int
139
+ = "caml_binaryen_expression_id_atomic_cmpxchg"
140
+
141
+ let id_atomic_cmpxchg = id_atomic_cmpxchg ()
142
+
143
+ external id_atomic_wait : unit -> int
144
+ = "caml_binaryen_expression_id_atomic_wait"
145
+
146
+ let id_atomic_wait = id_atomic_wait ()
147
+
148
+ external id_atomic_notify : unit -> int
149
+ = "caml_binaryen_expression_id_atomic_notify"
150
+
151
+ let id_atomic_notify = id_atomic_notify ()
152
+
153
+ external id_atomic_fence : unit -> int
154
+ = "caml_binaryen_expression_id_atomic_fence"
155
+
156
+ let id_atomic_fence = id_atomic_fence ()
157
+
158
+ external id_simd_extract : unit -> int
159
+ = "caml_binaryen_expression_id_simd_extract"
160
+
161
+ let id_simd_extract = id_simd_extract ()
162
+
163
+ external id_simd_replace : unit -> int
164
+ = "caml_binaryen_expression_id_simd_replace"
165
+
166
+ let id_simd_replace = id_simd_replace ()
167
+
168
+ external id_simd_shuffle : unit -> int
169
+ = "caml_binaryen_expression_id_simd_shuffle"
170
+
171
+ let id_simd_shuffle = id_simd_shuffle ()
172
+
173
+ external id_simd_ternary : unit -> int
174
+ = "caml_binaryen_expression_id_simd_ternary"
175
+
176
+ let id_simd_ternary = id_simd_ternary ()
177
+
178
+ external id_simd_shift : unit -> int = "caml_binaryen_expression_id_simd_shift"
179
+
180
+ let id_simd_shift = id_simd_shift ()
181
+
182
+ external id_simd_load : unit -> int = "caml_binaryen_expression_id_simd_load"
183
+
184
+ let id_simd_load = id_simd_load ()
185
+
186
+ external id_simd_load_store_lane : unit -> int
187
+ = "caml_binaryen_expression_id_simd_load_store_lane"
188
+
189
+ let id_simd_load_store_lane = id_simd_load_store_lane ()
190
+
191
+ external id_memory_init : unit -> int
192
+ = "caml_binaryen_expression_id_memory_init"
193
+
194
+ let id_memory_init = id_memory_init ()
195
+
196
+ external id_data_drop : unit -> int = "caml_binaryen_expression_id_data_drop"
197
+
198
+ let id_data_drop = id_data_drop ()
199
+
200
+ external id_memory_copy : unit -> int
201
+ = "caml_binaryen_expression_id_memory_copy"
202
+
203
+ let id_memory_copy = id_memory_copy ()
204
+
205
+ external id_memory_fill : unit -> int
206
+ = "caml_binaryen_expression_id_memory_fill"
207
+
208
+ let id_memory_fill = id_memory_fill ()
209
+
210
+ external id_const : unit -> int = "caml_binaryen_expression_id_const"
211
+
212
+ let id_const = id_const ()
213
+
214
+ external id_unary : unit -> int = "caml_binaryen_expression_id_unary"
215
+
216
+ let id_unary = id_unary ()
217
+
218
+ external id_binary : unit -> int = "caml_binaryen_expression_id_binary"
219
+
220
+ let id_binary = id_binary ()
221
+
222
+ external id_select : unit -> int = "caml_binaryen_expression_id_select"
223
+
224
+ let id_select = id_select ()
225
+
226
+ external id_drop : unit -> int = "caml_binaryen_expression_id_drop"
227
+
228
+ let id_drop = id_drop ()
229
+
230
+ external id_return : unit -> int = "caml_binaryen_expression_id_return"
231
+
232
+ let id_return = id_return ()
233
+
234
+ external id_memory_size : unit -> int
235
+ = "caml_binaryen_expression_id_memory_size"
236
+
237
+ let id_memory_size = id_memory_size ()
238
+
239
+ external id_memory_grow : unit -> int
240
+ = "caml_binaryen_expression_id_memory_grow"
241
+
242
+ let id_memory_grow = id_memory_grow ()
243
+
244
+ external id_unreachable : unit -> int
245
+ = "caml_binaryen_expression_id_unreachable"
246
+
247
+ let id_unreachable = id_unreachable ()
248
+
249
+ external id_pop : unit -> int = "caml_binaryen_expression_id_pop"
250
+
251
+ let id_pop = id_pop ()
252
+
253
+ external id_ref_null : unit -> int = "caml_binaryen_expression_id_ref_null"
254
+
255
+ let id_ref_null = id_ref_null ()
256
+
257
+ external id_ref_is : unit -> int = "caml_binaryen_expression_id_ref_is"
258
+
259
+ let id_ref_is = id_ref_is ()
260
+
261
+ external id_ref_func : unit -> int = "caml_binaryen_expression_id_ref_func"
262
+
263
+ let id_ref_func = id_ref_func ()
264
+
265
+ external id_ref_eq : unit -> int = "caml_binaryen_expression_id_ref_eq"
266
+
267
+ let id_ref_eq = id_ref_eq ()
268
+
269
+ external id_try : unit -> int = "caml_binaryen_expression_id_try"
270
+
271
+ let id_try = id_try ()
272
+
273
+ external id_throw : unit -> int = "caml_binaryen_expression_id_throw"
274
+
275
+ let id_throw = id_throw ()
276
+
277
+ external id_rethrow : unit -> int = "caml_binaryen_expression_id_rethrow"
278
+
279
+ let id_rethrow = id_rethrow ()
280
+
281
+ external id_tuple_make : unit -> int = "caml_binaryen_expression_id_tuple_make"
282
+
283
+ let id_tuple_make = id_tuple_make ()
284
+
285
+ external id_tuple_extract : unit -> int
286
+ = "caml_binaryen_expression_id_tuple_extract"
287
+
288
+ let id_tuple_extract = id_tuple_extract ()
289
+
290
+ external id_i31_new : unit -> int = "caml_binaryen_expression_id_i31_new"
291
+
292
+ let id_i31_new = id_i31_new ()
293
+
294
+ external id_i31_get : unit -> int = "caml_binaryen_expression_id_i31_get"
295
+
296
+ let id_i31_get = id_i31_get ()
297
+
298
+ external id_call_ref : unit -> int = "caml_binaryen_expression_id_call_ref"
299
+
300
+ let id_call_ref = id_call_ref ()
301
+
302
+ external id_ref_test : unit -> int = "caml_binaryen_expression_id_ref_test"
303
+
304
+ let id_ref_test = id_ref_test ()
305
+
306
+ external id_ref_cast : unit -> int = "caml_binaryen_expression_id_ref_cast"
307
+
308
+ let id_ref_cast = id_ref_cast ()
309
+
310
+ external id_br_on : unit -> int = "caml_binaryen_expression_id_br_on"
311
+
312
+ let id_br_on = id_br_on ()
313
+
314
+ external id_rtt_canon : unit -> int = "caml_binaryen_expression_id_rtt_canon"
315
+
316
+ let id_rtt_canon = id_rtt_canon ()
317
+
318
+ external id_rtt_sub : unit -> int = "caml_binaryen_expression_id_rtt_sub"
319
+
320
+ let id_rtt_sub = id_rtt_sub ()
321
+
322
+ external id_struct_new : unit -> int = "caml_binaryen_expression_id_struct_new"
323
+
324
+ let id_struct_new = id_struct_new ()
325
+
326
+ external id_struct_get : unit -> int = "caml_binaryen_expression_id_struct_get"
327
+
328
+ let id_struct_get = id_struct_get ()
329
+
330
+ external id_struct_set : unit -> int = "caml_binaryen_expression_id_struct_set"
331
+
332
+ let id_struct_set = id_struct_set ()
333
+
334
+ external id_array_new : unit -> int = "caml_binaryen_expression_id_array_new"
335
+
336
+ let id_array_new = id_array_new ()
337
+
338
+ external id_array_get : unit -> int = "caml_binaryen_expression_id_array_get"
339
+
340
+ let id_array_get = id_array_get ()
341
+
342
+ external id_array_set : unit -> int = "caml_binaryen_expression_id_array_set"
343
+
344
+ let id_array_set = id_array_set ()
345
+
346
+ external id_array_len : unit -> int = "caml_binaryen_expression_id_array_len"
347
+
348
+ let id_array_len = id_array_len ()
349
+
350
+ external id_ref_as : unit -> int = "caml_binaryen_expression_id_ref_as"
351
+
352
+ let id_ref_as = id_ref_as ()
353
+
354
+ let get_kind expr =
355
+ let id = get_id expr in
356
+ match id with
357
+ | n when n = id_invalid -> Invalid
358
+ | n when n = id_nop -> Nop
359
+ | n when n = id_block -> Block
360
+ | n when n = id_if -> If
361
+ | n when n = id_loop -> Loop
362
+ | n when n = id_break -> Break
363
+ | n when n = id_switch -> Switch
364
+ | n when n = id_call -> Call
365
+ | n when n = id_call_indirect -> CallIndirect
366
+ | n when n = id_local_get -> LocalGet
367
+ | n when n = id_local_set -> LocalSet
368
+ | n when n = id_global_get -> GlobalGet
369
+ | n when n = id_global_set -> GlobalSet
370
+ | n when n = id_load -> Load
371
+ | n when n = id_store -> Store
372
+ | n when n = id_atomic_rmw -> AtomicRMW
373
+ | n when n = id_atomic_cmpxchg -> AtomicCmpxchg
374
+ | n when n = id_atomic_wait -> AtomicWait
375
+ | n when n = id_atomic_notify -> AtomicNotify
376
+ | n when n = id_atomic_fence -> AtomicFence
377
+ | n when n = id_simd_extract -> SIMDExtract
378
+ | n when n = id_simd_replace -> SIMDReplace
379
+ | n when n = id_simd_shuffle -> SIMDShuffle
380
+ | n when n = id_simd_ternary -> SIMDTernary
381
+ | n when n = id_simd_shift -> SIMDShift
382
+ | n when n = id_simd_load -> SIMDLoad
383
+ | n when n = id_simd_load_store_lane -> SIMDLoadStoreLane
384
+ | n when n = id_memory_init -> MemoryInit
385
+ | n when n = id_data_drop -> DataDrop
386
+ | n when n = id_memory_copy -> MemoryCopy
387
+ | n when n = id_memory_fill -> MemoryFill
388
+ | n when n = id_const -> Const
389
+ | n when n = id_unary -> Unary
390
+ | n when n = id_binary -> Binary
391
+ | n when n = id_select -> Select
392
+ | n when n = id_drop -> Drop
393
+ | n when n = id_return -> Return
394
+ | n when n = id_memory_size -> MemorySize
395
+ | n when n = id_memory_grow -> MemoryGrow
396
+ | n when n = id_unreachable -> Unreachable
397
+ | n when n = id_pop -> Pop
398
+ | n when n = id_ref_null -> RefNull
399
+ | n when n = id_ref_is -> RefIs
400
+ | n when n = id_ref_func -> RefFunc
401
+ | n when n = id_ref_eq -> RefEq
402
+ | n when n = id_try -> Try
403
+ | n when n = id_throw -> Throw
404
+ | n when n = id_rethrow -> Rethrow
405
+ | n when n = id_tuple_make -> TupleMake
406
+ | n when n = id_tuple_extract -> TupleExtract
407
+ | n when n = id_i31_new -> I31New
408
+ | n when n = id_i31_get -> I31Get
409
+ | n when n = id_call_ref -> CallRef
410
+ | n when n = id_ref_test -> RefTest
411
+ | n when n = id_ref_cast -> RefCast
412
+ | n when n = id_br_on -> BrOn
413
+ | n when n = id_rtt_canon -> RttCanon
414
+ | n when n = id_rtt_sub -> RttSub
415
+ | n when n = id_struct_new -> StructNew
416
+ | n when n = id_struct_get -> StructGet
417
+ | n when n = id_struct_set -> StructSet
418
+ | n when n = id_array_new -> ArrayNew
419
+ | n when n = id_array_get -> ArrayGet
420
+ | n when n = id_array_set -> ArraySet
421
+ | n when n = id_array_len -> ArrayLen
422
+ | n when n = id_ref_as -> RefAs
423
+ | _ -> failwith "unknown expression kind"
424
+
425
+ external print : t -> unit = "caml_binaryen_expression_print"
426
+ (** Print an expression to the console. *)
427
+
428
+ external finalize : t -> unit = "caml_binaryen_expression_finalize"
429
+
430
+ external copy : t -> Module.t -> t = "caml_binaryen_expression_copy"
431
+
432
+ (** Expression manipulation *)
433
+
434
+ module Block = struct
435
+ external make : Module.t -> string -> t list -> Type.t -> t
436
+ = "caml_binaryen_block"
437
+ (** Module, block name, expression list. *)
438
+
439
+ let make ?(return_type = Type.auto) wasm_mod name exprs =
440
+ make wasm_mod name exprs return_type
441
+
442
+ external get_name : t -> string option = "caml_binaryen_block_get_name"
443
+
444
+ external set_name : t -> string -> unit = "caml_binaryen_block_set_name"
445
+
446
+ external get_num_children : t -> int = "caml_binaryen_block_get_num_children"
447
+
448
+ external get_child_at : t -> int -> t = "caml_binaryen_block_get_child_at"
449
+
450
+ external set_child_at : t -> int -> t -> unit
451
+ = "caml_binaryen_block_set_child_at"
452
+
453
+ external append_child : t -> t -> int = "caml_binaryen_block_append_child"
454
+
455
+ external insert_child_at : t -> int -> t -> unit
456
+ = "caml_binaryen_block_insert_child_at"
457
+
458
+ external remove_child_at : t -> int -> t
459
+ = "caml_binaryen_block_remove_child_at"
460
+ end
461
+
462
+ module If = struct
463
+ external make : Module.t -> t -> t -> t -> t = "caml_binaryen_if"
464
+ (** Module, condition, true branch, false branch. False branch may be null. *)
465
+
466
+ external get_condition : t -> t = "caml_binaryen_if_get_condition"
467
+
468
+ external set_condition : t -> t -> unit = "caml_binaryen_if_set_condition"
469
+
470
+ external get_if_true : t -> t = "caml_binaryen_if_get_if_true"
471
+
472
+ external set_if_true : t -> t -> unit = "caml_binaryen_if_set_if_true"
473
+
474
+ external get_if_false : t -> t option = "caml_binaryen_if_get_if_false"
475
+
476
+ external set_if_false : t -> t -> unit = "caml_binaryen_if_set_if_false"
477
+ end
478
+
479
+ module Loop = struct
480
+ external make : Module.t -> string -> t -> t = "caml_binaryen_loop"
481
+ (** Module, loop name, body. *)
482
+
483
+ external get_name : t -> string = "caml_binaryen_loop_get_name"
484
+
485
+ external set_name : t -> string -> unit = "caml_binaryen_loop_set_name"
486
+
487
+ external get_body : t -> t = "caml_binaryen_loop_get_body"
488
+
489
+ external set_body : t -> t -> unit = "caml_binaryen_loop_set_body"
490
+ end
491
+
492
+ module Break = struct
493
+ external make : Module.t -> string -> t -> t -> t = "caml_binaryen_break"
494
+ (** Module, block name, condition, result. Value and condition may be null. *)
495
+
496
+ external get_name : t -> string = "caml_binaryen_break_get_name"
497
+
498
+ external set_name : t -> string -> unit = "caml_binaryen_break_set_name"
499
+
500
+ external get_condition : t -> t option = "caml_binaryen_break_get_condition"
501
+
502
+ external set_condition : t -> t -> unit = "caml_binaryen_break_set_condition"
503
+
504
+ external get_value : t -> t option = "caml_binaryen_break_get_value"
505
+
506
+ external set_value : t -> t -> unit = "caml_binaryen_break_set_value"
507
+ end
508
+
509
+ module Switch = struct
510
+ external make : Module.t -> string list -> string -> t -> t -> t
511
+ = "caml_binaryen_switch"
512
+ (** Module, branch names, default branch name, condition, value. Value may be null. *)
513
+
514
+ external get_num_names : t -> int = "caml_binaryen_switch_get_num_names"
515
+
516
+ external get_name_at : t -> int -> string = "caml_binaryen_switch_get_name_at"
517
+
518
+ external set_name_at : t -> int -> string -> unit
519
+ = "caml_binaryen_switch_set_name_at"
520
+
521
+ external append_name : t -> string -> int = "caml_binaryen_switch_append_name"
522
+
523
+ external insert_name_at : t -> int -> string -> unit
524
+ = "caml_binaryen_switch_insert_name_at"
525
+
526
+ external remove_name_at : t -> int -> string
527
+ = "caml_binaryen_switch_remove_name_at"
528
+
529
+ external get_default_name : t -> string option
530
+ = "caml_binaryen_switch_get_default_name"
531
+
532
+ external set_default_name : t -> string -> unit
533
+ = "caml_binaryen_switch_set_default_name"
534
+
535
+ external get_condition : t -> t = "caml_binaryen_switch_get_condition"
536
+
537
+ external set_condition : t -> t -> unit = "caml_binaryen_switch_set_condition"
538
+
539
+ external get_value : t -> t option = "caml_binaryen_switch_get_value"
540
+
541
+ external set_value : t -> t -> unit = "caml_binaryen_switch_set_value"
542
+ end
543
+
544
+ module Call = struct
545
+ external make : Module.t -> string -> t list -> Type.t -> t
546
+ = "caml_binaryen_call"
547
+ (** Module, function name, params, return type. *)
548
+
549
+ external make_return : Module.t -> string -> t list -> Type.t -> t
550
+ = "caml_binaryen_return_call"
551
+ (** Module, function name, params, return type. *)
552
+
553
+ external get_target : t -> string = "caml_binaryen_call_get_target"
554
+
555
+ external set_target : t -> string -> unit = "caml_binaryen_call_set_target"
556
+
557
+ external get_num_operands : t -> int = "caml_binaryen_call_get_num_operands"
558
+
559
+ external get_operand_at : t -> int -> t = "caml_binaryen_call_get_operand_at"
560
+
561
+ external set_operand_at : t -> int -> t -> unit
562
+ = "caml_binaryen_call_set_operand_at"
563
+
564
+ external append_operand : t -> t -> int = "caml_binaryen_call_append_operand"
565
+
566
+ external insert_operand_at : t -> int -> t -> unit
567
+ = "caml_binaryen_call_insert_operand_at"
568
+
569
+ external remove_operand_at : t -> int -> t
570
+ = "caml_binaryen_call_remove_operand_at"
571
+
572
+ external is_return : t -> bool = "caml_binaryen_call_is_return"
573
+
574
+ external set_return : t -> bool -> unit = "caml_binaryen_call_set_return"
575
+ end
576
+
577
+ module Call_indirect = struct
578
+ external make : Module.t -> string -> t -> t list -> Type.t -> Type.t -> t
579
+ = "caml_binaryen_call_indirect__bytecode" "caml_binaryen_call_indirect"
580
+ (** Module, table, function value, params, params type, return type. *)
581
+
582
+ external make_return :
583
+ Module.t -> string -> t -> t list -> Type.t -> Type.t -> t
584
+ = "caml_binaryen_return_call_indirect__bytecode" "caml_binaryen_return_call_indirect"
585
+ (** Module, table, function value, params, params type, return type. *)
586
+
587
+ external get_target : t -> t = "caml_binaryen_call_indirect_get_target"
588
+
589
+ external set_target : t -> t -> unit
590
+ = "caml_binaryen_call_indirect_set_target"
591
+
592
+ external get_table : t -> string = "caml_binaryen_call_indirect_get_table"
593
+
594
+ external set_table : t -> string -> unit
595
+ = "caml_binaryen_call_indirect_set_table"
596
+
597
+ external get_num_operands : t -> int
598
+ = "caml_binaryen_call_indirect_get_num_operands"
599
+
600
+ external get_operand_at : t -> int -> t
601
+ = "caml_binaryen_call_indirect_get_operand_at"
602
+
603
+ external set_operand_at : t -> int -> t -> unit
604
+ = "caml_binaryen_call_indirect_set_operand_at"
605
+
606
+ external append_operand : t -> t -> int
607
+ = "caml_binaryen_call_indirect_append_operand"
608
+
609
+ external insert_operand_at : t -> int -> t -> unit
610
+ = "caml_binaryen_call_indirect_insert_operand_at"
611
+
612
+ external remove_operand_at : t -> int -> t
613
+ = "caml_binaryen_call_indirect_remove_operand_at"
614
+
615
+ external is_return : t -> bool = "caml_binaryen_call_indirect_is_return"
616
+
617
+ external set_return : t -> bool -> unit
618
+ = "caml_binaryen_call_indirect_set_return"
619
+ end
620
+
621
+ module Local_get = struct
622
+ external make : Module.t -> int -> Type.t -> t = "caml_binaryen_local_get"
623
+ (** Module, slot, type. *)
624
+ end
625
+
626
+ module Local_set = struct
627
+ external make : Module.t -> int -> t -> t = "caml_binaryen_local_set"
628
+ (** Module, slot, value. *)
629
+
630
+ external get_value : t -> t = "caml_binaryen_local_set_get_value"
631
+
632
+ external set_value : t -> t -> unit = "caml_binaryen_local_set_set_value"
633
+ end
634
+
635
+ module Local_tee = struct
636
+ external make : Module.t -> int -> t -> Type.t -> t
637
+ = "caml_binaryen_local_tee"
638
+ (** Module, slot, value, type. *)
639
+ end
640
+
641
+ module Global_get = struct
642
+ external make : Module.t -> string -> Type.t -> t = "caml_binaryen_global_get"
643
+ (** Module, name, type. *)
644
+
645
+ external get_name : t -> string = "caml_binaryen_global_get_get_name"
646
+
647
+ external set_name : t -> string -> unit = "caml_binaryen_global_get_set_name"
648
+ end
649
+
650
+ module Global_set = struct
651
+ external make : Module.t -> string -> t -> t = "caml_binaryen_global_set"
652
+ (** Module, name, value. *)
653
+
654
+ external get_name : t -> string = "caml_binaryen_global_set_get_name"
655
+
656
+ external set_name : t -> string -> unit = "caml_binaryen_global_set_set_name"
657
+
658
+ external get_value : t -> t = "caml_binaryen_global_set_get_value"
659
+
660
+ external set_value : t -> t -> unit = "caml_binaryen_global_set_set_value"
661
+ end
662
+
663
+ module Load = struct
664
+ external make : Module.t -> int -> bool -> int -> int -> Type.t -> t -> t
665
+ = "caml_binaryen_load__bytecode" "caml_binaryen_load"
666
+
667
+ (** Module, num_bytes, ?signed, offset, align, type, ptr. *)
668
+ let make wasm_mod bytes ?(signed = false) offset align ty ptr =
669
+ make wasm_mod bytes signed offset align ty ptr
670
+
671
+ external get_ptr : t -> t = "caml_binaryen_load_get_ptr"
672
+
673
+ external set_ptr : t -> t -> unit = "caml_binaryen_load_set_ptr"
674
+ end
675
+
676
+ module Store = struct
677
+ external make : Module.t -> int -> int -> int -> t -> t -> Type.t -> t
678
+ = "caml_binaryen_store__bytecode" "caml_binaryen_store"
679
+ (** Module, num_bytes, offset, align, ptr, value, type. *)
680
+
681
+ external get_ptr : t -> t = "caml_binaryen_store_get_ptr"
682
+
683
+ external set_ptr : t -> t -> unit = "caml_binaryen_store_set_ptr"
684
+
685
+ external get_value : t -> t = "caml_binaryen_store_get_value"
686
+
687
+ external set_value : t -> t -> unit = "caml_binaryen_store_set_value"
688
+ end
689
+
690
+ module Const = struct
691
+ external make : Module.t -> Literal.t -> t = "caml_binaryen_const"
692
+ end
693
+
694
+ module Unary = struct
695
+ external make : Module.t -> Op.t -> t -> t = "caml_binaryen_unary"
696
+
697
+ external get_value : t -> t = "caml_binaryen_unary_get_value"
698
+
699
+ external set_value : t -> t -> unit = "caml_binaryen_unary_set_value"
700
+ end
701
+
702
+ module Binary = struct
703
+ external make : Module.t -> Op.t -> t -> t -> t = "caml_binaryen_binary"
704
+
705
+ external get_left : t -> t = "caml_binaryen_binary_get_left"
706
+
707
+ external set_left : t -> t -> unit = "caml_binaryen_binary_set_left"
708
+
709
+ external get_right : t -> t = "caml_binaryen_binary_get_right"
710
+
711
+ external set_right : t -> t -> unit = "caml_binaryen_binary_set_right"
712
+ end
713
+
714
+ module Select = struct
715
+ external make : Module.t -> t -> t -> t -> Type.t -> t
716
+ = "caml_binaryen_select"
717
+
718
+ (** Module, condition, true branch, false branch. *)
719
+ let make wasm_mod cond tru fals = make wasm_mod cond tru fals Type.auto
720
+
721
+ external get_if_true : t -> t = "caml_binaryen_select_get_if_true"
722
+
723
+ external set_if_true : t -> t -> unit = "caml_binaryen_select_set_if_true"
724
+
725
+ external get_if_false : t -> t = "caml_binaryen_select_get_if_false"
726
+
727
+ external set_if_false : t -> t -> unit = "caml_binaryen_select_set_if_false"
728
+
729
+ external get_condition : t -> t = "caml_binaryen_select_get_condition"
730
+
731
+ external set_condition : t -> t -> unit = "caml_binaryen_select_set_condition"
732
+ end
733
+
734
+ module Drop = struct
735
+ external make : Module.t -> t -> t = "caml_binaryen_drop"
736
+
737
+ external get_value : t -> t = "caml_binaryen_drop_get_value"
738
+
739
+ external set_value : t -> t -> unit = "caml_binaryen_drop_set_value"
740
+ end
741
+
742
+ module Return = struct
743
+ external make : Module.t -> t -> t = "caml_binaryen_return"
744
+
745
+ external get_value : t -> t = "caml_binaryen_return_get_value"
746
+
747
+ external set_value : t -> t -> unit = "caml_binaryen_return_set_value"
748
+ end
749
+
750
+ module Memory_size = struct
751
+ external make : Module.t -> t = "caml_binaryen_memory_size"
752
+ end
753
+
754
+ module Memory_grow = struct
755
+ external make : Module.t -> t -> t = "caml_binaryen_memory_grow"
756
+
757
+ external get_delta : t -> t = "caml_binaryen_memory_grow_get_delta"
758
+
759
+ external set_delta : t -> t -> unit = "caml_binaryen_memory_grow_set_delta"
760
+ end
761
+
762
+ module Memory_copy = struct
763
+ external make : Module.t -> t -> t -> t -> t = "caml_binaryen_memory_copy"
764
+ (** Module, destination, source, size. *)
765
+
766
+ external get_dest : t -> t = "caml_binaryen_memory_copy_get_dest"
767
+
768
+ external set_dest : t -> t -> unit = "caml_binaryen_memory_copy_set_dest"
769
+
770
+ external get_source : t -> t = "caml_binaryen_memory_copy_get_source"
771
+
772
+ external set_source : t -> t -> unit = "caml_binaryen_memory_copy_set_source"
773
+
774
+ external get_size : t -> t = "caml_binaryen_memory_copy_get_size"
775
+
776
+ external set_size : t -> t -> unit = "caml_binaryen_memory_copy_set_size"
777
+ end
778
+
779
+ module Memory_fill = struct
780
+ external make : Module.t -> t -> t -> t -> t = "caml_binaryen_memory_fill"
781
+ (** Module, destination, value, size. *)
782
+
783
+ external get_dest : t -> t = "caml_binaryen_memory_fill_get_dest"
784
+
785
+ external set_dest : t -> t -> unit = "caml_binaryen_memory_fill_set_dest"
786
+
787
+ external get_value : t -> t = "caml_binaryen_memory_fill_get_value"
788
+
789
+ external set_value : t -> t -> unit = "caml_binaryen_memory_fill_set_value"
790
+
791
+ external get_size : t -> t = "caml_binaryen_memory_fill_get_size"
792
+
793
+ external set_size : t -> t -> unit = "caml_binaryen_memory_fill_set_size"
794
+ end
795
+
796
+ module Tuple_make = struct
797
+ external make : Module.t -> t list -> t = "caml_binaryen_tuple_make"
798
+ (** Module, items *)
799
+
800
+ external get_num_operands : t -> int
801
+ = "caml_binaryen_tuple_make_get_num_operands"
802
+
803
+ external get_operand_at : t -> int -> t
804
+ = "caml_binaryen_tuple_make_get_operand_at"
805
+
806
+ external set_operand_at : t -> int -> t -> unit
807
+ = "caml_binaryen_tuple_make_set_operand_at"
808
+
809
+ external append_operand : t -> t -> int
810
+ = "caml_binaryen_tuple_make_append_operand"
811
+
812
+ external insert_operand_at : t -> int -> t -> unit
813
+ = "caml_binaryen_tuple_make_insert_operand_at"
814
+
815
+ external remove_operand_at : t -> int -> t
816
+ = "caml_binaryen_tuple_make_remove_operand_at"
817
+ end
818
+
819
+ module Tuple_extract = struct
820
+ external make : Module.t -> t -> int -> t = "caml_binaryen_tuple_extract"
821
+ (** Module, tuple, index *)
822
+
823
+ external get_tuple : t -> t = "caml_binaryen_tuple_extract_get_tuple"
824
+
825
+ external set_tuple : t -> t -> unit = "caml_binaryen_tuple_extract_set_tuple"
826
+ end
827
+
828
+ module Nop = struct
829
+ external make : Module.t -> t = "caml_binaryen_nop"
830
+ end
831
+
832
+ module Unreachable = struct
833
+ external make : Module.t -> t = "caml_binaryen_unreachable"
834
+ end
835
+
836
+ module Pop = struct
837
+ external make : Module.t -> Type.t -> t = "caml_binaryen_pop"
838
+ (** Module, type *)
839
+ end
840
+
841
+ module Null = struct
842
+ external make : unit -> t = "caml_binaryen_null_expression"
843
+ (** A null reference. *)
844
+ end