test.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. // CodeMirror, copyright (c) by Marijn Haverbeke and others
  2. // Distributed under an MIT license: https://codemirror.net/LICENSE
  3. ;(function () {
  4. var mode = CodeMirror.getMode({ indentUnit: 4 }, 'wast')
  5. function MT(name) {
  6. test.mode(name, mode, Array.prototype.slice.call(arguments, 1))
  7. }
  8. MT('number-test', '[number 0]', '[number 123]', '[number nan]', '[number inf]', '[number infinity]', '[number 0.1]', '[number 123.0]', '[number 12E+99]')
  9. MT('string-literals-test', '[string "foo"]', '[string "\\"foo\\""]', '[string "foo #\\"# bar"]')
  10. MT('atom-test', '[atom funcref]', '[atom externref]', '[atom i32]', '[atom i64]', '[atom f32]', '[atom f64]')
  11. MT('keyword-test', '[keyword br]', '[keyword if]', '[keyword loop]', '[keyword i32.add]', '[keyword local.get]')
  12. MT(
  13. 'control-instructions',
  14. '[keyword unreachable]',
  15. '[keyword nop]',
  16. '[keyword br] [variable-2 $label0]',
  17. '[keyword br_if] [variable-2 $label0]',
  18. '[keyword br_table] [variable-2 $label0] [variable-2 $label1] [variable-2 $label3]',
  19. '[keyword return]',
  20. '[keyword call] [variable-2 $func0]',
  21. '[keyword call_indirect] [variable-2 $table] ([keyword param] [atom f32] [atom f64]) ([keyword result] [atom i32] [atom i64])',
  22. '[keyword return_call] [variable-2 $func0]',
  23. '[keyword return_call_indirect] ([keyword param] [atom f32] [atom f64]) ([keyword result] [atom i32] [atom i64])',
  24. '[keyword select] ([keyword local.get] [number 1]) ([keyword local.get] [number 2]) ([keyword local.get] [number 3])',
  25. '[keyword try] ([keyword result] [atom i32])',
  26. '[keyword throw] [number 0]',
  27. '[keyword rethrow] [number 0]',
  28. '[keyword catch] [number 0]',
  29. '[keyword catch_all]',
  30. '[keyword delegate] [number 0]',
  31. '[keyword unwind]'
  32. )
  33. MT(
  34. 'memory-instructions',
  35. '[keyword i32.load] [keyword offset]=[number 4] [keyword align]=[number 4]',
  36. '[keyword i32.load8_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
  37. '[keyword i32.load8_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
  38. '[keyword i32.load16_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
  39. '[keyword i32.load16_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
  40. '[keyword i32.store] [keyword offset]=[number 4] [keyword align]=[number 4]',
  41. '[keyword i32.store8] [keyword offset]=[number 4] [keyword align]=[number 4]',
  42. '[keyword i32.store16] [keyword offset]=[number 4] [keyword align]=[number 4]',
  43. '[keyword i64.store] [keyword offset]=[number 4] [keyword align]=[number 4]',
  44. '[keyword i64.load] [keyword offset]=[number 4] [keyword align]=[number 4]',
  45. '[keyword i64.load8_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
  46. '[keyword i64.load8_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
  47. '[keyword i64.load16_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
  48. '[keyword i64.load16_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
  49. '[keyword i64.load32_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
  50. '[keyword i64.load32_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
  51. '[keyword i64.store8] [keyword offset]=[number 4] [keyword align]=[number 4]',
  52. '[keyword i64.store16] [keyword offset]=[number 4] [keyword align]=[number 4]',
  53. '[keyword i64.store32] [keyword offset]=[number 4] [keyword align]=[number 4]',
  54. '[keyword f32.load] [keyword offset]=[number 4] [keyword align]=[number 4]',
  55. '[keyword f32.store] [keyword offset]=[number 4] [keyword align]=[number 4]',
  56. '[keyword f64.load] [keyword offset]=[number 4] [keyword align]=[number 4]',
  57. '[keyword f64.store] [keyword offset]=[number 4] [keyword align]=[number 4]'
  58. )
  59. MT(
  60. 'atomic-memory-instructions',
  61. '[keyword memory.atomic.notify] [keyword offset]=[number 32] [keyword align]=[number 4]',
  62. '[keyword memory.atomic.wait32] [keyword offset]=[number 32] [keyword align]=[number 4]',
  63. '[keyword memory.atomic.wait64] [keyword offset]=[number 32] [keyword align]=[number 4]',
  64. '[keyword i32.atomic.load] [keyword offset]=[number 32] [keyword align]=[number 4]',
  65. '[keyword i32.atomic.load8_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  66. '[keyword i32.atomic.load16_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  67. '[keyword i32.atomic.store] [keyword offset]=[number 32] [keyword align]=[number 4]',
  68. '[keyword i32.atomic.store8] [keyword offset]=[number 32] [keyword align]=[number 4]',
  69. '[keyword i32.atomic.store16] [keyword offset]=[number 32] [keyword align]=[number 4]',
  70. '[keyword i64.atomic.load] [keyword offset]=[number 32] [keyword align]=[number 4]',
  71. '[keyword i64.atomic.load8_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  72. '[keyword i64.atomic.load16_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  73. '[keyword i64.atomic.load32_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  74. '[keyword i64.atomic.store] [keyword offset]=[number 32] [keyword align]=[number 4]',
  75. '[keyword i64.atomic.store8] [keyword offset]=[number 32] [keyword align]=[number 4]',
  76. '[keyword i64.atomic.store16] [keyword offset]=[number 32] [keyword align]=[number 4]',
  77. '[keyword i64.atomic.store32] [keyword offset]=[number 32] [keyword align]=[number 4]',
  78. '[keyword i32.atomic.rmw.add] [keyword offset]=[number 32] [keyword align]=[number 4]',
  79. '[keyword i32.atomic.rmw8.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  80. '[keyword i32.atomic.rmw16.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  81. '[keyword i64.atomic.rmw.add] [keyword offset]=[number 32] [keyword align]=[number 4]',
  82. '[keyword i64.atomic.rmw8.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  83. '[keyword i64.atomic.rmw16.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  84. '[keyword i64.atomic.rmw32.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  85. '[keyword i32.atomic.rmw.sub] [keyword offset]=[number 32] [keyword align]=[number 4]',
  86. '[keyword i32.atomic.rmw8.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  87. '[keyword i32.atomic.rmw16.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  88. '[keyword i64.atomic.rmw.sub] [keyword offset]=[number 32] [keyword align]=[number 4]',
  89. '[keyword i64.atomic.rmw8.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  90. '[keyword i64.atomic.rmw16.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  91. '[keyword i64.atomic.rmw32.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  92. '[keyword i32.atomic.rmw.and] [keyword offset]=[number 32] [keyword align]=[number 4]',
  93. '[keyword i32.atomic.rmw8.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  94. '[keyword i32.atomic.rmw16.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  95. '[keyword i64.atomic.rmw.and] [keyword offset]=[number 32] [keyword align]=[number 4]',
  96. '[keyword i64.atomic.rmw8.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  97. '[keyword i64.atomic.rmw16.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  98. '[keyword i64.atomic.rmw32.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  99. '[keyword i32.atomic.rmw.or] [keyword offset]=[number 32] [keyword align]=[number 4]',
  100. '[keyword i32.atomic.rmw8.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  101. '[keyword i32.atomic.rmw16.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  102. '[keyword i64.atomic.rmw.or] [keyword offset]=[number 32] [keyword align]=[number 4]',
  103. '[keyword i64.atomic.rmw8.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  104. '[keyword i64.atomic.rmw16.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  105. '[keyword i64.atomic.rmw32.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  106. '[keyword i32.atomic.rmw.xor] [keyword offset]=[number 32] [keyword align]=[number 4]',
  107. '[keyword i32.atomic.rmw8.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  108. '[keyword i32.atomic.rmw16.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  109. '[keyword i64.atomic.rmw.xor] [keyword offset]=[number 32] [keyword align]=[number 4]',
  110. '[keyword i64.atomic.rmw8.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  111. '[keyword i64.atomic.rmw16.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  112. '[keyword i64.atomic.rmw32.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  113. '[keyword i32.atomic.rmw.xchg] [keyword offset]=[number 32] [keyword align]=[number 4]',
  114. '[keyword i32.atomic.rmw8.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  115. '[keyword i32.atomic.rmw16.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  116. '[keyword i64.atomic.rmw.xchg] [keyword offset]=[number 32] [keyword align]=[number 4]',
  117. '[keyword i64.atomic.rmw8.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  118. '[keyword i64.atomic.rmw16.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  119. '[keyword i64.atomic.rmw32.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  120. '[keyword i32.atomic.rmw.cmpxchg] [keyword offset]=[number 32] [keyword align]=[number 4]',
  121. '[keyword i32.atomic.rmw8.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  122. '[keyword i32.atomic.rmw16.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  123. '[keyword i64.atomic.rmw.cmpxchg] [keyword offset]=[number 32] [keyword align]=[number 4]',
  124. '[keyword i64.atomic.rmw8.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  125. '[keyword i64.atomic.rmw16.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
  126. '[keyword i64.atomic.rmw32.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]'
  127. )
  128. MT(
  129. 'simd-instructions',
  130. '[keyword v128.load] [keyword offset]=[number 32] [keyword align]=[number 4]',
  131. '[keyword v128.load8x8_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
  132. '[keyword v128.load8x8_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
  133. '[keyword v128.load16x4_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
  134. '[keyword v128.load16x4_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
  135. '[keyword v128.load32x2_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
  136. '[keyword v128.load32x2_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
  137. '[keyword v128.load8_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
  138. '[keyword v128.load16_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
  139. '[keyword v128.load32_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
  140. '[keyword v128.load64_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
  141. '[keyword v128.store] [keyword offset]=[number 32] [keyword align]=[number 4]',
  142. '[keyword v128.const] [number 0] [number 1] [number 2] [number 3] [number 4] [number 5] [number 6] [number 7] [number 8] [number 9] [number 10] [number 11] [number 12] [number 13] [number 14] [number 15]',
  143. '[keyword i8x16.shuffle] [number 0] [number 1] [number 2] [number 3] [number 4] [number 5] [number 6] [number 7] [number 8] [number 9] [number 10] [number 11] [number 12] [number 13] [number 14] [number 15]',
  144. '[keyword i8x16.swizzle]',
  145. '[keyword i8x16.splat]',
  146. '[keyword i16x8.splat]',
  147. '[keyword i32x4.splat]',
  148. '[keyword i64x2.splat]',
  149. '[keyword f32x4.splat]',
  150. '[keyword f64x2.splat]',
  151. '[keyword i8x16.extract_lane_s] [number 1]',
  152. '[keyword i8x16.extract_lane_u] [number 1]',
  153. '[keyword i8x16.replace_lane] [number 1]',
  154. '[keyword i16x8.extract_lane_s] [number 1]',
  155. '[keyword i16x8.extract_lane_u] [number 1]',
  156. '[keyword i16x8.replace_lane] [number 1]',
  157. '[keyword i32x4.extract_lane] [number 1]',
  158. '[keyword i32x4.replace_lane] [number 1]',
  159. '[keyword i64x2.extract_lane] [number 1]',
  160. '[keyword i64x2.replace_lane] [number 1]',
  161. '[keyword f32x4.extract_lane] [number 1]',
  162. '[keyword f32x4.replace_lane] [number 1]',
  163. '[keyword f64x2.extract_lane] [number 1]',
  164. '[keyword f64x2.replace_lane] [number 1]',
  165. '[keyword i8x16.eq]',
  166. '[keyword i8x16.ne]',
  167. '[keyword i8x16.lt_s]',
  168. '[keyword i8x16.lt_u]',
  169. '[keyword i8x16.gt_s]',
  170. '[keyword i8x16.gt_u]',
  171. '[keyword i8x16.le_s]',
  172. '[keyword i8x16.le_u]',
  173. '[keyword i8x16.ge_s]',
  174. '[keyword i8x16.ge_u]',
  175. '[keyword i16x8.eq]',
  176. '[keyword i16x8.ne]',
  177. '[keyword i16x8.lt_s]',
  178. '[keyword i16x8.lt_u]',
  179. '[keyword i16x8.gt_s]',
  180. '[keyword i16x8.gt_u]',
  181. '[keyword i16x8.le_s]',
  182. '[keyword i16x8.le_u]',
  183. '[keyword i16x8.ge_s]',
  184. '[keyword i16x8.ge_u]',
  185. '[keyword i32x4.eq]',
  186. '[keyword i32x4.ne]',
  187. '[keyword i32x4.lt_s]',
  188. '[keyword i32x4.lt_u]',
  189. '[keyword i32x4.gt_s]',
  190. '[keyword i32x4.gt_u]',
  191. '[keyword i32x4.le_s]',
  192. '[keyword i32x4.le_u]',
  193. '[keyword i32x4.ge_s]',
  194. '[keyword i32x4.ge_u]',
  195. '[keyword f32x4.eq]',
  196. '[keyword f32x4.ne]',
  197. '[keyword f32x4.lt]',
  198. '[keyword f32x4.gt]',
  199. '[keyword f32x4.le]',
  200. '[keyword f32x4.ge]',
  201. '[keyword f64x2.eq]',
  202. '[keyword f64x2.ne]',
  203. '[keyword f64x2.lt]',
  204. '[keyword f64x2.gt]',
  205. '[keyword f64x2.le]',
  206. '[keyword f64x2.ge]',
  207. '[keyword v128.not]',
  208. '[keyword v128.and]',
  209. '[keyword v128.andnot]',
  210. '[keyword v128.or]',
  211. '[keyword v128.xor]',
  212. '[keyword v128.bitselect]',
  213. '[keyword v128.any_true]',
  214. '[keyword v128.load8_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
  215. '[keyword v128.load16_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
  216. '[keyword v128.load32_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
  217. '[keyword v128.load64_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
  218. '[keyword v128.store8_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
  219. '[keyword v128.store16_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
  220. '[keyword v128.store32_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
  221. '[keyword v128.store64_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
  222. '[keyword v128.load32_zero] [keyword offset]=[number 64] [keyword align]=[number 0]',
  223. '[keyword v128.load64_zero] [keyword offset]=[number 64] [keyword align]=[number 0]',
  224. '[keyword f32x4.demote_f64x2_zero]',
  225. '[keyword f64x2.promote_low_f32x4]',
  226. '[keyword i8x16.abs]',
  227. '[keyword i8x16.neg]',
  228. '[keyword i8x16.popcnt]',
  229. '[keyword i8x16.all_true]',
  230. '[keyword i8x16.bitmask]',
  231. '[keyword i8x16.narrow_i16x8_s]',
  232. '[keyword i8x16.narrow_i16x8_u]',
  233. '[keyword f32x4.ceil]',
  234. '[keyword f32x4.floor]',
  235. '[keyword f32x4.trunc]',
  236. '[keyword f32x4.nearest]',
  237. '[keyword i8x16.shl]',
  238. '[keyword i8x16.shr_s]',
  239. '[keyword i8x16.shr_u]',
  240. '[keyword i8x16.add]',
  241. '[keyword i8x16.add_sat_s]',
  242. '[keyword i8x16.add_sat_u]',
  243. '[keyword i8x16.sub]',
  244. '[keyword i8x16.sub_sat_s]',
  245. '[keyword i8x16.sub_sat_u]',
  246. '[keyword f64x2.ceil]',
  247. '[keyword f64x2.floor]',
  248. '[keyword i8x16.min_s]',
  249. '[keyword i8x16.min_u]',
  250. '[keyword i8x16.max_s]',
  251. '[keyword i8x16.max_u]',
  252. '[keyword f64x2.trunc]',
  253. '[keyword i8x16.avgr_u]',
  254. '[keyword i16x8.extadd_pairwise_i8x16_s]',
  255. '[keyword i16x8.extadd_pairwise_i8x16_u]',
  256. '[keyword i32x4.extadd_pairwise_i16x8_s]',
  257. '[keyword i32x4.extadd_pairwise_i16x8_u]',
  258. '[keyword i16x8.abs]',
  259. '[keyword i16x8.neg]',
  260. '[keyword i16x8.q15mulr_sat_s]',
  261. '[keyword i16x8.all_true]',
  262. '[keyword i16x8.bitmask]',
  263. '[keyword i16x8.narrow_i32x4_s]',
  264. '[keyword i16x8.narrow_i32x4_u]',
  265. '[keyword i16x8.extend_low_i8x16_s]',
  266. '[keyword i16x8.extend_high_i8x16_s]',
  267. '[keyword i16x8.extend_low_i8x16_u]',
  268. '[keyword i16x8.extend_high_i8x16_u]',
  269. '[keyword i16x8.shl]',
  270. '[keyword i16x8.shr_s]',
  271. '[keyword i16x8.shr_u]',
  272. '[keyword i16x8.add]',
  273. '[keyword i16x8.add_sat_s]',
  274. '[keyword i16x8.add_sat_u]',
  275. '[keyword i16x8.sub]',
  276. '[keyword i16x8.sub_sat_s]',
  277. '[keyword i16x8.sub_sat_u]',
  278. '[keyword f64x2.nearest]',
  279. '[keyword i16x8.mul]',
  280. '[keyword i16x8.min_s]',
  281. '[keyword i16x8.min_u]',
  282. '[keyword i16x8.max_s]',
  283. '[keyword i16x8.max_u]',
  284. '[keyword i16x8.avgr_u]',
  285. '[keyword i16x8.extmul_low_i8x16_s]',
  286. '[keyword i16x8.extmul_high_i8x16_s]',
  287. '[keyword i16x8.extmul_low_i8x16_u]',
  288. '[keyword i16x8.extmul_high_i8x16_u]',
  289. '[keyword i32x4.abs]',
  290. '[keyword i32x4.neg]',
  291. '[keyword i32x4.all_true]',
  292. '[keyword i32x4.bitmask]',
  293. '[keyword i32x4.extend_low_i16x8_s]',
  294. '[keyword i32x4.extend_high_i16x8_s]',
  295. '[keyword i32x4.extend_low_i16x8_u]',
  296. '[keyword i32x4.extend_high_i16x8_u]',
  297. '[keyword i32x4.shl]',
  298. '[keyword i32x4.shr_s]',
  299. '[keyword i32x4.shr_u]',
  300. '[keyword i32x4.add]',
  301. '[keyword i32x4.sub]',
  302. '[keyword i32x4.mul]',
  303. '[keyword i32x4.min_s]',
  304. '[keyword i32x4.min_u]',
  305. '[keyword i32x4.max_s]',
  306. '[keyword i32x4.max_u]',
  307. '[keyword i32x4.dot_i16x8_s]',
  308. '[keyword i32x4.extmul_low_i16x8_s]',
  309. '[keyword i32x4.extmul_high_i16x8_s]',
  310. '[keyword i32x4.extmul_low_i16x8_u]',
  311. '[keyword i32x4.extmul_high_i16x8_u]',
  312. '[keyword i64x2.abs]',
  313. '[keyword i64x2.neg]',
  314. '[keyword i64x2.all_true]',
  315. '[keyword i64x2.bitmask]',
  316. '[keyword i64x2.extend_low_i32x4_s]',
  317. '[keyword i64x2.extend_high_i32x4_s]',
  318. '[keyword i64x2.extend_low_i32x4_u]',
  319. '[keyword i64x2.extend_high_i32x4_u]',
  320. '[keyword i64x2.shl]',
  321. '[keyword i64x2.shr_s]',
  322. '[keyword i64x2.shr_u]',
  323. '[keyword i64x2.add]',
  324. '[keyword i64x2.sub]',
  325. '[keyword i64x2.mul]',
  326. '[keyword i64x2.eq]',
  327. '[keyword i64x2.ne]',
  328. '[keyword i64x2.lt_s]',
  329. '[keyword i64x2.gt_s]',
  330. '[keyword i64x2.le_s]',
  331. '[keyword i64x2.ge_s]',
  332. '[keyword i64x2.extmul_low_i32x4_s]',
  333. '[keyword i64x2.extmul_high_i32x4_s]',
  334. '[keyword i64x2.extmul_low_i32x4_u]',
  335. '[keyword i64x2.extmul_high_i32x4_u]',
  336. '[keyword f32x4.abs]',
  337. '[keyword f32x4.neg]',
  338. '[keyword f32x4.sqrt]',
  339. '[keyword f32x4.add]',
  340. '[keyword f32x4.sub]',
  341. '[keyword f32x4.mul]',
  342. '[keyword f32x4.div]',
  343. '[keyword f32x4.min]',
  344. '[keyword f32x4.max]',
  345. '[keyword f64x2.abs]',
  346. '[keyword f64x2.neg]',
  347. '[keyword f64x2.sqrt]',
  348. '[keyword f64x2.add]',
  349. '[keyword f64x2.sub]',
  350. '[keyword f64x2.mul]',
  351. '[keyword f64x2.div]',
  352. '[keyword f64x2.min]',
  353. '[keyword f64x2.max]',
  354. '[keyword i32x4.trunc_sat_f32x4_s]',
  355. '[keyword i32x4.trunc_sat_f32x4_u]',
  356. '[keyword f32x4.convert_i32x4_s]',
  357. '[keyword f32x4.convert_i32x4_u]',
  358. '[keyword i32x4.trunc_sat_f64x2_s_zero]',
  359. '[keyword i32x4.trunc_sat_f64x2_u_zero]',
  360. '[keyword f64x2.convert_low_i32x4_s]',
  361. '[keyword f64x2.convert_low_i32x4_u]'
  362. )
  363. MT(
  364. 'reference-type-instructions',
  365. '[keyword ref.null] [keyword extern]',
  366. '[keyword ref.null] [keyword func]',
  367. '[keyword ref.is_null] ([keyword ref.func] [variable-2 $f])',
  368. '[keyword ref.func] [variable-2 $f]'
  369. )
  370. MT(
  371. 'table-instructions',
  372. '[keyword table.get] [variable-2 $t] ([keyword i32.const] [number 5])',
  373. '[keyword table.set] [variable-2 $t] ([keyword i32.const] [number 5]) ([keyword ref.func] [variable-2 $f])',
  374. '[keyword table.size] [variable-2 $t]',
  375. '[keyword table.grow] [variable-2 $t] ([keyword ref.null] [keyword extern]) ([keyword i32.const] [number 5])',
  376. '[keyword table.fill] [variable-2 $t] ([keyword i32.const] [number 5]) ([keyword param] [variable-2 $r] [atom externref]) ([keyword i32.const] [number 5])',
  377. '[keyword table.init] [variable-2 $t] [number 1] ([keyword i32.const] [number 5]) ([keyword i32.const] [number 10]) ([keyword i32.const] [number 15])',
  378. '[keyword table.copy] [variable-2 $t] [variable-2 $t2] ([keyword i32.const] [number 5]) ([keyword i32.const] [number 10]) ([keyword i32.const] [number 15])'
  379. )
  380. MT('gc-proposal', '[keyword call_ref] [keyword return_call_ref]', '[keyword ref.as_non_null] [keyword br_on_null] [keyword ref.eq]')
  381. MT('gc-proposal-structs', '[keyword struct.new_with_rtt] [keyword struct.new_default_with_rtt]', '[keyword struct.get] [keyword struct.get_s] [keyword struct.get_u]', '[keyword struct.set]')
  382. MT(
  383. 'gc-proposal-arrays',
  384. '[keyword array.new_with_rtt] [keyword array.new_default_with_rtt]',
  385. '[keyword array.get] [keyword array.get_s] [keyword array.get_u]',
  386. '[keyword array.len] [keyword array.set]'
  387. )
  388. MT('gc-proposal-i31', '[keyword i31.new] [keyword i31.get_s] [keyword i31.get_u]')
  389. MT('gc-proposal-rtt', '[keyword rtt.canon] [keyword rtt.sub]')
  390. MT(
  391. 'gc-proposal-typechecks',
  392. '[keyword ref.test] [keyword ref.cast] [keyword br_on_cast]',
  393. '[keyword ref.is_func] [keyword ref.is_data] [keyword ref.is_i31]',
  394. '[keyword ref.as_func] [keyword ref.as_data] [keyword ref.as_i31]',
  395. '[keyword br_on_func] [keyword br_on_data] [keyword br_on_i31]'
  396. )
  397. MT('gc-proposal-types', '[atom i8] [atom i16]', '[atom anyref] [atom dataref] [atom eqref] [atom i31ref]')
  398. })()