1 package wasm
2
3
4 type Opcode = byte
5
6 const (
7
8 OpcodeUnreachable Opcode = 0x00
9
10 OpcodeNop Opcode = 0x01
11
12
13 OpcodeBlock Opcode = 0x02
14
15
16 OpcodeLoop Opcode = 0x03
17
18
19 OpcodeIf Opcode = 0x04
20
21
22 OpcodeElse Opcode = 0x05
23
24 OpcodeEnd Opcode = 0x0b
25
26
27
28
29
30
31
32
33
34
35
36
37 OpcodeBr Opcode = 0x0c
38
39 OpcodeBrIf Opcode = 0x0d
40 OpcodeBrTable Opcode = 0x0e
41 OpcodeReturn Opcode = 0x0f
42 OpcodeCall Opcode = 0x10
43 OpcodeCallIndirect Opcode = 0x11
44
45
46
47 OpcodeDrop Opcode = 0x1a
48 OpcodeSelect Opcode = 0x1b
49 OpcodeTypedSelect Opcode = 0x1c
50
51
52
53 OpcodeLocalGet Opcode = 0x20
54 OpcodeLocalSet Opcode = 0x21
55 OpcodeLocalTee Opcode = 0x22
56 OpcodeGlobalGet Opcode = 0x23
57 OpcodeGlobalSet Opcode = 0x24
58
59
60
61 OpcodeTableGet Opcode = 0x25
62 OpcodeTableSet Opcode = 0x26
63
64
65
66 OpcodeI32Load Opcode = 0x28
67 OpcodeI64Load Opcode = 0x29
68 OpcodeF32Load Opcode = 0x2a
69 OpcodeF64Load Opcode = 0x2b
70 OpcodeI32Load8S Opcode = 0x2c
71 OpcodeI32Load8U Opcode = 0x2d
72 OpcodeI32Load16S Opcode = 0x2e
73 OpcodeI32Load16U Opcode = 0x2f
74 OpcodeI64Load8S Opcode = 0x30
75 OpcodeI64Load8U Opcode = 0x31
76 OpcodeI64Load16S Opcode = 0x32
77 OpcodeI64Load16U Opcode = 0x33
78 OpcodeI64Load32S Opcode = 0x34
79 OpcodeI64Load32U Opcode = 0x35
80 OpcodeI32Store Opcode = 0x36
81 OpcodeI64Store Opcode = 0x37
82 OpcodeF32Store Opcode = 0x38
83 OpcodeF64Store Opcode = 0x39
84 OpcodeI32Store8 Opcode = 0x3a
85 OpcodeI32Store16 Opcode = 0x3b
86 OpcodeI64Store8 Opcode = 0x3c
87 OpcodeI64Store16 Opcode = 0x3d
88 OpcodeI64Store32 Opcode = 0x3e
89 OpcodeMemorySize Opcode = 0x3f
90 OpcodeMemoryGrow Opcode = 0x40
91
92
93
94 OpcodeI32Const Opcode = 0x41
95 OpcodeI64Const Opcode = 0x42
96 OpcodeF32Const Opcode = 0x43
97 OpcodeF64Const Opcode = 0x44
98
99
100
101 OpcodeI32Eqz Opcode = 0x45
102 OpcodeI32Eq Opcode = 0x46
103 OpcodeI32Ne Opcode = 0x47
104 OpcodeI32LtS Opcode = 0x48
105 OpcodeI32LtU Opcode = 0x49
106 OpcodeI32GtS Opcode = 0x4a
107 OpcodeI32GtU Opcode = 0x4b
108 OpcodeI32LeS Opcode = 0x4c
109 OpcodeI32LeU Opcode = 0x4d
110 OpcodeI32GeS Opcode = 0x4e
111 OpcodeI32GeU Opcode = 0x4f
112
113 OpcodeI64Eqz Opcode = 0x50
114 OpcodeI64Eq Opcode = 0x51
115 OpcodeI64Ne Opcode = 0x52
116 OpcodeI64LtS Opcode = 0x53
117 OpcodeI64LtU Opcode = 0x54
118 OpcodeI64GtS Opcode = 0x55
119 OpcodeI64GtU Opcode = 0x56
120 OpcodeI64LeS Opcode = 0x57
121 OpcodeI64LeU Opcode = 0x58
122 OpcodeI64GeS Opcode = 0x59
123 OpcodeI64GeU Opcode = 0x5a
124
125 OpcodeF32Eq Opcode = 0x5b
126 OpcodeF32Ne Opcode = 0x5c
127 OpcodeF32Lt Opcode = 0x5d
128 OpcodeF32Gt Opcode = 0x5e
129 OpcodeF32Le Opcode = 0x5f
130 OpcodeF32Ge Opcode = 0x60
131
132 OpcodeF64Eq Opcode = 0x61
133 OpcodeF64Ne Opcode = 0x62
134 OpcodeF64Lt Opcode = 0x63
135 OpcodeF64Gt Opcode = 0x64
136 OpcodeF64Le Opcode = 0x65
137 OpcodeF64Ge Opcode = 0x66
138
139 OpcodeI32Clz Opcode = 0x67
140 OpcodeI32Ctz Opcode = 0x68
141 OpcodeI32Popcnt Opcode = 0x69
142 OpcodeI32Add Opcode = 0x6a
143 OpcodeI32Sub Opcode = 0x6b
144 OpcodeI32Mul Opcode = 0x6c
145 OpcodeI32DivS Opcode = 0x6d
146 OpcodeI32DivU Opcode = 0x6e
147 OpcodeI32RemS Opcode = 0x6f
148 OpcodeI32RemU Opcode = 0x70
149 OpcodeI32And Opcode = 0x71
150 OpcodeI32Or Opcode = 0x72
151 OpcodeI32Xor Opcode = 0x73
152 OpcodeI32Shl Opcode = 0x74
153 OpcodeI32ShrS Opcode = 0x75
154 OpcodeI32ShrU Opcode = 0x76
155 OpcodeI32Rotl Opcode = 0x77
156 OpcodeI32Rotr Opcode = 0x78
157
158 OpcodeI64Clz Opcode = 0x79
159 OpcodeI64Ctz Opcode = 0x7a
160 OpcodeI64Popcnt Opcode = 0x7b
161 OpcodeI64Add Opcode = 0x7c
162 OpcodeI64Sub Opcode = 0x7d
163 OpcodeI64Mul Opcode = 0x7e
164 OpcodeI64DivS Opcode = 0x7f
165 OpcodeI64DivU Opcode = 0x80
166 OpcodeI64RemS Opcode = 0x81
167 OpcodeI64RemU Opcode = 0x82
168 OpcodeI64And Opcode = 0x83
169 OpcodeI64Or Opcode = 0x84
170 OpcodeI64Xor Opcode = 0x85
171 OpcodeI64Shl Opcode = 0x86
172 OpcodeI64ShrS Opcode = 0x87
173 OpcodeI64ShrU Opcode = 0x88
174 OpcodeI64Rotl Opcode = 0x89
175 OpcodeI64Rotr Opcode = 0x8a
176
177 OpcodeF32Abs Opcode = 0x8b
178 OpcodeF32Neg Opcode = 0x8c
179 OpcodeF32Ceil Opcode = 0x8d
180 OpcodeF32Floor Opcode = 0x8e
181 OpcodeF32Trunc Opcode = 0x8f
182 OpcodeF32Nearest Opcode = 0x90
183 OpcodeF32Sqrt Opcode = 0x91
184 OpcodeF32Add Opcode = 0x92
185 OpcodeF32Sub Opcode = 0x93
186 OpcodeF32Mul Opcode = 0x94
187 OpcodeF32Div Opcode = 0x95
188 OpcodeF32Min Opcode = 0x96
189 OpcodeF32Max Opcode = 0x97
190 OpcodeF32Copysign Opcode = 0x98
191
192 OpcodeF64Abs Opcode = 0x99
193 OpcodeF64Neg Opcode = 0x9a
194 OpcodeF64Ceil Opcode = 0x9b
195 OpcodeF64Floor Opcode = 0x9c
196 OpcodeF64Trunc Opcode = 0x9d
197 OpcodeF64Nearest Opcode = 0x9e
198 OpcodeF64Sqrt Opcode = 0x9f
199 OpcodeF64Add Opcode = 0xa0
200 OpcodeF64Sub Opcode = 0xa1
201 OpcodeF64Mul Opcode = 0xa2
202 OpcodeF64Div Opcode = 0xa3
203 OpcodeF64Min Opcode = 0xa4
204 OpcodeF64Max Opcode = 0xa5
205 OpcodeF64Copysign Opcode = 0xa6
206
207 OpcodeI32WrapI64 Opcode = 0xa7
208 OpcodeI32TruncF32S Opcode = 0xa8
209 OpcodeI32TruncF32U Opcode = 0xa9
210 OpcodeI32TruncF64S Opcode = 0xaa
211 OpcodeI32TruncF64U Opcode = 0xab
212
213 OpcodeI64ExtendI32S Opcode = 0xac
214 OpcodeI64ExtendI32U Opcode = 0xad
215 OpcodeI64TruncF32S Opcode = 0xae
216 OpcodeI64TruncF32U Opcode = 0xaf
217 OpcodeI64TruncF64S Opcode = 0xb0
218 OpcodeI64TruncF64U Opcode = 0xb1
219
220 OpcodeF32ConvertI32S Opcode = 0xb2
221 OpcodeF32ConvertI32U Opcode = 0xb3
222 OpcodeF32ConvertI64S Opcode = 0xb4
223 OpcodeF32ConvertI64U Opcode = 0xb5
224 OpcodeF32DemoteF64 Opcode = 0xb6
225
226 OpcodeF64ConvertI32S Opcode = 0xb7
227 OpcodeF64ConvertI32U Opcode = 0xb8
228 OpcodeF64ConvertI64S Opcode = 0xb9
229 OpcodeF64ConvertI64U Opcode = 0xba
230 OpcodeF64PromoteF32 Opcode = 0xbb
231
232 OpcodeI32ReinterpretF32 Opcode = 0xbc
233 OpcodeI64ReinterpretF64 Opcode = 0xbd
234 OpcodeF32ReinterpretI32 Opcode = 0xbe
235 OpcodeF64ReinterpretI64 Opcode = 0xbf
236
237
238
239
240
241 OpcodeRefNull = 0xd0
242
243
244
245
246 OpcodeRefIsNull = 0xd1
247
248
249
250
251 OpcodeRefFunc = 0xd2
252
253
254
255
256
257 OpcodeI32Extend8S Opcode = 0xc0
258
259
260
261 OpcodeI32Extend16S Opcode = 0xc1
262
263
264
265 OpcodeI64Extend8S Opcode = 0xc2
266
267
268
269 OpcodeI64Extend16S Opcode = 0xc3
270
271
272
273 OpcodeI64Extend32S Opcode = 0xc4
274
275
276
277
278 OpcodeMiscPrefix Opcode = 0xfc
279
280
281
282 OpcodeVecPrefix Opcode = 0xfd
283 )
284
285
286
287 type OpcodeMisc = byte
288
289 const (
290
291
292
293 OpcodeMiscI32TruncSatF32S OpcodeMisc = 0x00
294 OpcodeMiscI32TruncSatF32U OpcodeMisc = 0x01
295 OpcodeMiscI32TruncSatF64S OpcodeMisc = 0x02
296 OpcodeMiscI32TruncSatF64U OpcodeMisc = 0x03
297 OpcodeMiscI64TruncSatF32S OpcodeMisc = 0x04
298 OpcodeMiscI64TruncSatF32U OpcodeMisc = 0x05
299 OpcodeMiscI64TruncSatF64S OpcodeMisc = 0x06
300 OpcodeMiscI64TruncSatF64U OpcodeMisc = 0x07
301
302
303
304
305
306
307 OpcodeMiscMemoryInit OpcodeMisc = 0x08
308 OpcodeMiscDataDrop OpcodeMisc = 0x09
309 OpcodeMiscMemoryCopy OpcodeMisc = 0x0a
310 OpcodeMiscMemoryFill OpcodeMisc = 0x0b
311 OpcodeMiscTableInit OpcodeMisc = 0x0c
312 OpcodeMiscElemDrop OpcodeMisc = 0x0d
313 OpcodeMiscTableCopy OpcodeMisc = 0x0e
314
315
316
317 OpcodeMiscTableGrow OpcodeMisc = 0x0f
318 OpcodeMiscTableSize OpcodeMisc = 0x10
319 OpcodeMiscTableFill OpcodeMisc = 0x11
320 )
321
322
323
324
325
326 type OpcodeVec = byte
327
328 const (
329
330
331 OpcodeVecV128Load OpcodeVec = 0x00
332 OpcodeVecV128Load8x8s OpcodeVec = 0x01
333 OpcodeVecV128Load8x8u OpcodeVec = 0x02
334 OpcodeVecV128Load16x4s OpcodeVec = 0x03
335 OpcodeVecV128Load16x4u OpcodeVec = 0x04
336 OpcodeVecV128Load32x2s OpcodeVec = 0x05
337 OpcodeVecV128Load32x2u OpcodeVec = 0x06
338 OpcodeVecV128Load8Splat OpcodeVec = 0x07
339 OpcodeVecV128Load16Splat OpcodeVec = 0x08
340 OpcodeVecV128Load32Splat OpcodeVec = 0x09
341 OpcodeVecV128Load64Splat OpcodeVec = 0x0a
342
343 OpcodeVecV128Load32zero OpcodeVec = 0x5c
344 OpcodeVecV128Load64zero OpcodeVec = 0x5d
345
346 OpcodeVecV128Store OpcodeVec = 0x0b
347 OpcodeVecV128Load8Lane OpcodeVec = 0x54
348 OpcodeVecV128Load16Lane OpcodeVec = 0x55
349 OpcodeVecV128Load32Lane OpcodeVec = 0x56
350 OpcodeVecV128Load64Lane OpcodeVec = 0x57
351 OpcodeVecV128Store8Lane OpcodeVec = 0x58
352 OpcodeVecV128Store16Lane OpcodeVec = 0x59
353 OpcodeVecV128Store32Lane OpcodeVec = 0x5a
354 OpcodeVecV128Store64Lane OpcodeVec = 0x5b
355
356
357 OpcodeVecV128Const OpcodeVec = 0x0c
358
359
360 OpcodeVecV128i8x16Shuffle OpcodeVec = 0x0d
361
362
363
364 OpcodeVecI8x16ExtractLaneS OpcodeVec = 0x15
365 OpcodeVecI8x16ExtractLaneU OpcodeVec = 0x16
366 OpcodeVecI8x16ReplaceLane OpcodeVec = 0x17
367 OpcodeVecI16x8ExtractLaneS OpcodeVec = 0x18
368 OpcodeVecI16x8ExtractLaneU OpcodeVec = 0x19
369 OpcodeVecI16x8ReplaceLane OpcodeVec = 0x1a
370 OpcodeVecI32x4ExtractLane OpcodeVec = 0x1b
371 OpcodeVecI32x4ReplaceLane OpcodeVec = 0x1c
372 OpcodeVecI64x2ExtractLane OpcodeVec = 0x1d
373 OpcodeVecI64x2ReplaceLane OpcodeVec = 0x1e
374 OpcodeVecF32x4ExtractLane OpcodeVec = 0x1f
375 OpcodeVecF32x4ReplaceLane OpcodeVec = 0x20
376 OpcodeVecF64x2ExtractLane OpcodeVec = 0x21
377 OpcodeVecF64x2ReplaceLane OpcodeVec = 0x22
378
379
380
381 OpcodeVecI8x16Swizzle OpcodeVec = 0x0e
382 OpcodeVecI8x16Splat OpcodeVec = 0x0f
383 OpcodeVecI16x8Splat OpcodeVec = 0x10
384 OpcodeVecI32x4Splat OpcodeVec = 0x11
385 OpcodeVecI64x2Splat OpcodeVec = 0x12
386 OpcodeVecF32x4Splat OpcodeVec = 0x13
387 OpcodeVecF64x2Splat OpcodeVec = 0x14
388
389
390
391 OpcodeVecI8x16Eq OpcodeVec = 0x23
392 OpcodeVecI8x16Ne OpcodeVec = 0x24
393 OpcodeVecI8x16LtS OpcodeVec = 0x25
394 OpcodeVecI8x16LtU OpcodeVec = 0x26
395 OpcodeVecI8x16GtS OpcodeVec = 0x27
396 OpcodeVecI8x16GtU OpcodeVec = 0x28
397 OpcodeVecI8x16LeS OpcodeVec = 0x29
398 OpcodeVecI8x16LeU OpcodeVec = 0x2a
399 OpcodeVecI8x16GeS OpcodeVec = 0x2b
400 OpcodeVecI8x16GeU OpcodeVec = 0x2c
401
402
403
404 OpcodeVecI16x8Eq OpcodeVec = 0x2d
405 OpcodeVecI16x8Ne OpcodeVec = 0x2e
406 OpcodeVecI16x8LtS OpcodeVec = 0x2f
407 OpcodeVecI16x8LtU OpcodeVec = 0x30
408 OpcodeVecI16x8GtS OpcodeVec = 0x31
409 OpcodeVecI16x8GtU OpcodeVec = 0x32
410 OpcodeVecI16x8LeS OpcodeVec = 0x33
411 OpcodeVecI16x8LeU OpcodeVec = 0x34
412 OpcodeVecI16x8GeS OpcodeVec = 0x35
413 OpcodeVecI16x8GeU OpcodeVec = 0x36
414
415
416
417 OpcodeVecI32x4Eq OpcodeVec = 0x37
418 OpcodeVecI32x4Ne OpcodeVec = 0x38
419 OpcodeVecI32x4LtS OpcodeVec = 0x39
420 OpcodeVecI32x4LtU OpcodeVec = 0x3a
421 OpcodeVecI32x4GtS OpcodeVec = 0x3b
422 OpcodeVecI32x4GtU OpcodeVec = 0x3c
423 OpcodeVecI32x4LeS OpcodeVec = 0x3d
424 OpcodeVecI32x4LeU OpcodeVec = 0x3e
425 OpcodeVecI32x4GeS OpcodeVec = 0x3f
426 OpcodeVecI32x4GeU OpcodeVec = 0x40
427
428
429
430 OpcodeVecI64x2Eq OpcodeVec = 0xd6
431 OpcodeVecI64x2Ne OpcodeVec = 0xd7
432 OpcodeVecI64x2LtS OpcodeVec = 0xd8
433 OpcodeVecI64x2GtS OpcodeVec = 0xd9
434 OpcodeVecI64x2LeS OpcodeVec = 0xda
435 OpcodeVecI64x2GeS OpcodeVec = 0xdb
436
437
438
439 OpcodeVecF32x4Eq OpcodeVec = 0x41
440 OpcodeVecF32x4Ne OpcodeVec = 0x42
441 OpcodeVecF32x4Lt OpcodeVec = 0x43
442 OpcodeVecF32x4Gt OpcodeVec = 0x44
443 OpcodeVecF32x4Le OpcodeVec = 0x45
444 OpcodeVecF32x4Ge OpcodeVec = 0x46
445
446
447
448 OpcodeVecF64x2Eq OpcodeVec = 0x47
449 OpcodeVecF64x2Ne OpcodeVec = 0x48
450 OpcodeVecF64x2Lt OpcodeVec = 0x49
451 OpcodeVecF64x2Gt OpcodeVec = 0x4a
452 OpcodeVecF64x2Le OpcodeVec = 0x4b
453 OpcodeVecF64x2Ge OpcodeVec = 0x4c
454
455
456
457 OpcodeVecV128Not OpcodeVec = 0x4d
458 OpcodeVecV128And OpcodeVec = 0x4e
459 OpcodeVecV128AndNot OpcodeVec = 0x4f
460 OpcodeVecV128Or OpcodeVec = 0x50
461 OpcodeVecV128Xor OpcodeVec = 0x51
462 OpcodeVecV128Bitselect OpcodeVec = 0x52
463 OpcodeVecV128AnyTrue OpcodeVec = 0x53
464
465
466
467 OpcodeVecI8x16Abs OpcodeVec = 0x60
468 OpcodeVecI8x16Neg OpcodeVec = 0x61
469 OpcodeVecI8x16Popcnt OpcodeVec = 0x62
470 OpcodeVecI8x16AllTrue OpcodeVec = 0x63
471 OpcodeVecI8x16BitMask OpcodeVec = 0x64
472 OpcodeVecI8x16NarrowI16x8S OpcodeVec = 0x65
473 OpcodeVecI8x16NarrowI16x8U OpcodeVec = 0x66
474
475 OpcodeVecI8x16Shl OpcodeVec = 0x6b
476 OpcodeVecI8x16ShrS OpcodeVec = 0x6c
477 OpcodeVecI8x16ShrU OpcodeVec = 0x6d
478 OpcodeVecI8x16Add OpcodeVec = 0x6e
479 OpcodeVecI8x16AddSatS OpcodeVec = 0x6f
480
481 OpcodeVecI8x16AddSatU OpcodeVec = 0x70
482 OpcodeVecI8x16Sub OpcodeVec = 0x71
483 OpcodeVecI8x16SubSatS OpcodeVec = 0x72
484 OpcodeVecI8x16SubSatU OpcodeVec = 0x73
485 OpcodeVecI8x16MinS OpcodeVec = 0x76
486 OpcodeVecI8x16MinU OpcodeVec = 0x77
487 OpcodeVecI8x16MaxS OpcodeVec = 0x78
488 OpcodeVecI8x16MaxU OpcodeVec = 0x79
489 OpcodeVecI8x16AvgrU OpcodeVec = 0x7b
490
491
492
493 OpcodeVecI16x8ExtaddPairwiseI8x16S OpcodeVec = 0x7c
494 OpcodeVecI16x8ExtaddPairwiseI8x16U OpcodeVec = 0x7d
495 OpcodeVecI16x8Abs OpcodeVec = 0x80
496 OpcodeVecI16x8Neg OpcodeVec = 0x81
497 OpcodeVecI16x8Q15mulrSatS OpcodeVec = 0x82
498 OpcodeVecI16x8AllTrue OpcodeVec = 0x83
499 OpcodeVecI16x8BitMask OpcodeVec = 0x84
500 OpcodeVecI16x8NarrowI32x4S OpcodeVec = 0x85
501 OpcodeVecI16x8NarrowI32x4U OpcodeVec = 0x86
502 OpcodeVecI16x8ExtendLowI8x16S OpcodeVec = 0x87
503 OpcodeVecI16x8ExtendHighI8x16S OpcodeVec = 0x88
504 OpcodeVecI16x8ExtendLowI8x16U OpcodeVec = 0x89
505 OpcodeVecI16x8ExtendHighI8x16U OpcodeVec = 0x8a
506 OpcodeVecI16x8Shl OpcodeVec = 0x8b
507 OpcodeVecI16x8ShrS OpcodeVec = 0x8c
508 OpcodeVecI16x8ShrU OpcodeVec = 0x8d
509 OpcodeVecI16x8Add OpcodeVec = 0x8e
510 OpcodeVecI16x8AddSatS OpcodeVec = 0x8f
511 OpcodeVecI16x8AddSatU OpcodeVec = 0x90
512 OpcodeVecI16x8Sub OpcodeVec = 0x91
513 OpcodeVecI16x8SubSatS OpcodeVec = 0x92
514 OpcodeVecI16x8SubSatU OpcodeVec = 0x93
515 OpcodeVecI16x8Mul OpcodeVec = 0x95
516 OpcodeVecI16x8MinS OpcodeVec = 0x96
517 OpcodeVecI16x8MinU OpcodeVec = 0x97
518 OpcodeVecI16x8MaxS OpcodeVec = 0x98
519 OpcodeVecI16x8MaxU OpcodeVec = 0x99
520 OpcodeVecI16x8AvgrU OpcodeVec = 0x9b
521 OpcodeVecI16x8ExtMulLowI8x16S OpcodeVec = 0x9c
522 OpcodeVecI16x8ExtMulHighI8x16S OpcodeVec = 0x9d
523 OpcodeVecI16x8ExtMulLowI8x16U OpcodeVec = 0x9e
524 OpcodeVecI16x8ExtMulHighI8x16U OpcodeVec = 0x9f
525
526
527
528 OpcodeVecI32x4ExtaddPairwiseI16x8S OpcodeVec = 0x7e
529 OpcodeVecI32x4ExtaddPairwiseI16x8U OpcodeVec = 0x7f
530 OpcodeVecI32x4Abs OpcodeVec = 0xa0
531 OpcodeVecI32x4Neg OpcodeVec = 0xa1
532 OpcodeVecI32x4AllTrue OpcodeVec = 0xa3
533 OpcodeVecI32x4BitMask OpcodeVec = 0xa4
534 OpcodeVecI32x4ExtendLowI16x8S OpcodeVec = 0xa7
535 OpcodeVecI32x4ExtendHighI16x8S OpcodeVec = 0xa8
536 OpcodeVecI32x4ExtendLowI16x8U OpcodeVec = 0xa9
537 OpcodeVecI32x4ExtendHighI16x8U OpcodeVec = 0xaa
538 OpcodeVecI32x4Shl OpcodeVec = 0xab
539 OpcodeVecI32x4ShrS OpcodeVec = 0xac
540 OpcodeVecI32x4ShrU OpcodeVec = 0xad
541 OpcodeVecI32x4Add OpcodeVec = 0xae
542 OpcodeVecI32x4Sub OpcodeVec = 0xb1
543 OpcodeVecI32x4Mul OpcodeVec = 0xb5
544 OpcodeVecI32x4MinS OpcodeVec = 0xb6
545 OpcodeVecI32x4MinU OpcodeVec = 0xb7
546 OpcodeVecI32x4MaxS OpcodeVec = 0xb8
547 OpcodeVecI32x4MaxU OpcodeVec = 0xb9
548 OpcodeVecI32x4DotI16x8S OpcodeVec = 0xba
549 OpcodeVecI32x4ExtMulLowI16x8S OpcodeVec = 0xbc
550 OpcodeVecI32x4ExtMulHighI16x8S OpcodeVec = 0xbd
551 OpcodeVecI32x4ExtMulLowI16x8U OpcodeVec = 0xbe
552 OpcodeVecI32x4ExtMulHighI16x8U OpcodeVec = 0xbf
553
554
555
556 OpcodeVecI64x2Abs OpcodeVec = 0xc0
557 OpcodeVecI64x2Neg OpcodeVec = 0xc1
558 OpcodeVecI64x2AllTrue OpcodeVec = 0xc3
559 OpcodeVecI64x2BitMask OpcodeVec = 0xc4
560 OpcodeVecI64x2ExtendLowI32x4S OpcodeVec = 0xc7
561 OpcodeVecI64x2ExtendHighI32x4S OpcodeVec = 0xc8
562 OpcodeVecI64x2ExtendLowI32x4U OpcodeVec = 0xc9
563 OpcodeVecI64x2ExtendHighI32x4U OpcodeVec = 0xca
564 OpcodeVecI64x2Shl OpcodeVec = 0xcb
565 OpcodeVecI64x2ShrS OpcodeVec = 0xcc
566 OpcodeVecI64x2ShrU OpcodeVec = 0xcd
567 OpcodeVecI64x2Add OpcodeVec = 0xce
568 OpcodeVecI64x2Sub OpcodeVec = 0xd1
569 OpcodeVecI64x2Mul OpcodeVec = 0xd5
570 OpcodeVecI64x2ExtMulLowI32x4S OpcodeVec = 0xdc
571 OpcodeVecI64x2ExtMulHighI32x4S OpcodeVec = 0xdd
572 OpcodeVecI64x2ExtMulLowI32x4U OpcodeVec = 0xde
573 OpcodeVecI64x2ExtMulHighI32x4U OpcodeVec = 0xdf
574
575
576
577 OpcodeVecF32x4Ceil OpcodeVec = 0x67
578 OpcodeVecF32x4Floor OpcodeVec = 0x68
579 OpcodeVecF32x4Trunc OpcodeVec = 0x69
580 OpcodeVecF32x4Nearest OpcodeVec = 0x6a
581 OpcodeVecF32x4Abs OpcodeVec = 0xe0
582 OpcodeVecF32x4Neg OpcodeVec = 0xe1
583 OpcodeVecF32x4Sqrt OpcodeVec = 0xe3
584 OpcodeVecF32x4Add OpcodeVec = 0xe4
585 OpcodeVecF32x4Sub OpcodeVec = 0xe5
586 OpcodeVecF32x4Mul OpcodeVec = 0xe6
587 OpcodeVecF32x4Div OpcodeVec = 0xe7
588 OpcodeVecF32x4Min OpcodeVec = 0xe8
589 OpcodeVecF32x4Max OpcodeVec = 0xe9
590 OpcodeVecF32x4Pmin OpcodeVec = 0xea
591 OpcodeVecF32x4Pmax OpcodeVec = 0xeb
592
593
594
595 OpcodeVecF64x2Ceil OpcodeVec = 0x74
596 OpcodeVecF64x2Floor OpcodeVec = 0x75
597 OpcodeVecF64x2Trunc OpcodeVec = 0x7a
598 OpcodeVecF64x2Nearest OpcodeVec = 0x94
599 OpcodeVecF64x2Abs OpcodeVec = 0xec
600 OpcodeVecF64x2Neg OpcodeVec = 0xed
601 OpcodeVecF64x2Sqrt OpcodeVec = 0xef
602 OpcodeVecF64x2Add OpcodeVec = 0xf0
603 OpcodeVecF64x2Sub OpcodeVec = 0xf1
604 OpcodeVecF64x2Mul OpcodeVec = 0xf2
605 OpcodeVecF64x2Div OpcodeVec = 0xf3
606 OpcodeVecF64x2Min OpcodeVec = 0xf4
607 OpcodeVecF64x2Max OpcodeVec = 0xf5
608 OpcodeVecF64x2Pmin OpcodeVec = 0xf6
609 OpcodeVecF64x2Pmax OpcodeVec = 0xf7
610
611
612
613 OpcodeVecI32x4TruncSatF32x4S OpcodeVec = 0xf8
614 OpcodeVecI32x4TruncSatF32x4U OpcodeVec = 0xf9
615 OpcodeVecF32x4ConvertI32x4S OpcodeVec = 0xfa
616 OpcodeVecF32x4ConvertI32x4U OpcodeVec = 0xfb
617 OpcodeVecI32x4TruncSatF64x2SZero OpcodeVec = 0xfc
618 OpcodeVecI32x4TruncSatF64x2UZero OpcodeVec = 0xfd
619 OpcodeVecF64x2ConvertLowI32x4S OpcodeVec = 0xfe
620 OpcodeVecF64x2ConvertLowI32x4U OpcodeVec = 0xff
621 OpcodeVecF32x4DemoteF64x2Zero OpcodeVec = 0x5e
622 OpcodeVecF64x2PromoteLowF32x4Zero OpcodeVec = 0x5f
623 )
624
625 const (
626 OpcodeUnreachableName = "unreachable"
627 OpcodeNopName = "nop"
628 OpcodeBlockName = "block"
629 OpcodeLoopName = "loop"
630 OpcodeIfName = "if"
631 OpcodeElseName = "else"
632 OpcodeEndName = "end"
633 OpcodeBrName = "br"
634 OpcodeBrIfName = "br_if"
635 OpcodeBrTableName = "br_table"
636 OpcodeReturnName = "return"
637 OpcodeCallName = "call"
638 OpcodeCallIndirectName = "call_indirect"
639 OpcodeDropName = "drop"
640 OpcodeSelectName = "select"
641 OpcodeTypedSelectName = "typed_select"
642 OpcodeLocalGetName = "local.get"
643 OpcodeLocalSetName = "local.set"
644 OpcodeLocalTeeName = "local.tee"
645 OpcodeGlobalGetName = "global.get"
646 OpcodeGlobalSetName = "global.set"
647 OpcodeI32LoadName = "i32.load"
648 OpcodeI64LoadName = "i64.load"
649 OpcodeF32LoadName = "f32.load"
650 OpcodeF64LoadName = "f64.load"
651 OpcodeI32Load8SName = "i32.load8_s"
652 OpcodeI32Load8UName = "i32.load8_u"
653 OpcodeI32Load16SName = "i32.load16_s"
654 OpcodeI32Load16UName = "i32.load16_u"
655 OpcodeI64Load8SName = "i64.load8_s"
656 OpcodeI64Load8UName = "i64.load8_u"
657 OpcodeI64Load16SName = "i64.load16_s"
658 OpcodeI64Load16UName = "i64.load16_u"
659 OpcodeI64Load32SName = "i64.load32_s"
660 OpcodeI64Load32UName = "i64.load32_u"
661 OpcodeI32StoreName = "i32.store"
662 OpcodeI64StoreName = "i64.store"
663 OpcodeF32StoreName = "f32.store"
664 OpcodeF64StoreName = "f64.store"
665 OpcodeI32Store8Name = "i32.store8"
666 OpcodeI32Store16Name = "i32.store16"
667 OpcodeI64Store8Name = "i64.store8"
668 OpcodeI64Store16Name = "i64.store16"
669 OpcodeI64Store32Name = "i64.store32"
670 OpcodeMemorySizeName = "memory.size"
671 OpcodeMemoryGrowName = "memory.grow"
672 OpcodeI32ConstName = "i32.const"
673 OpcodeI64ConstName = "i64.const"
674 OpcodeF32ConstName = "f32.const"
675 OpcodeF64ConstName = "f64.const"
676 OpcodeI32EqzName = "i32.eqz"
677 OpcodeI32EqName = "i32.eq"
678 OpcodeI32NeName = "i32.ne"
679 OpcodeI32LtSName = "i32.lt_s"
680 OpcodeI32LtUName = "i32.lt_u"
681 OpcodeI32GtSName = "i32.gt_s"
682 OpcodeI32GtUName = "i32.gt_u"
683 OpcodeI32LeSName = "i32.le_s"
684 OpcodeI32LeUName = "i32.le_u"
685 OpcodeI32GeSName = "i32.ge_s"
686 OpcodeI32GeUName = "i32.ge_u"
687 OpcodeI64EqzName = "i64.eqz"
688 OpcodeI64EqName = "i64.eq"
689 OpcodeI64NeName = "i64.ne"
690 OpcodeI64LtSName = "i64.lt_s"
691 OpcodeI64LtUName = "i64.lt_u"
692 OpcodeI64GtSName = "i64.gt_s"
693 OpcodeI64GtUName = "i64.gt_u"
694 OpcodeI64LeSName = "i64.le_s"
695 OpcodeI64LeUName = "i64.le_u"
696 OpcodeI64GeSName = "i64.ge_s"
697 OpcodeI64GeUName = "i64.ge_u"
698 OpcodeF32EqName = "f32.eq"
699 OpcodeF32NeName = "f32.ne"
700 OpcodeF32LtName = "f32.lt"
701 OpcodeF32GtName = "f32.gt"
702 OpcodeF32LeName = "f32.le"
703 OpcodeF32GeName = "f32.ge"
704 OpcodeF64EqName = "f64.eq"
705 OpcodeF64NeName = "f64.ne"
706 OpcodeF64LtName = "f64.lt"
707 OpcodeF64GtName = "f64.gt"
708 OpcodeF64LeName = "f64.le"
709 OpcodeF64GeName = "f64.ge"
710 OpcodeI32ClzName = "i32.clz"
711 OpcodeI32CtzName = "i32.ctz"
712 OpcodeI32PopcntName = "i32.popcnt"
713 OpcodeI32AddName = "i32.add"
714 OpcodeI32SubName = "i32.sub"
715 OpcodeI32MulName = "i32.mul"
716 OpcodeI32DivSName = "i32.div_s"
717 OpcodeI32DivUName = "i32.div_u"
718 OpcodeI32RemSName = "i32.rem_s"
719 OpcodeI32RemUName = "i32.rem_u"
720 OpcodeI32AndName = "i32.and"
721 OpcodeI32OrName = "i32.or"
722 OpcodeI32XorName = "i32.xor"
723 OpcodeI32ShlName = "i32.shl"
724 OpcodeI32ShrSName = "i32.shr_s"
725 OpcodeI32ShrUName = "i32.shr_u"
726 OpcodeI32RotlName = "i32.rotl"
727 OpcodeI32RotrName = "i32.rotr"
728 OpcodeI64ClzName = "i64.clz"
729 OpcodeI64CtzName = "i64.ctz"
730 OpcodeI64PopcntName = "i64.popcnt"
731 OpcodeI64AddName = "i64.add"
732 OpcodeI64SubName = "i64.sub"
733 OpcodeI64MulName = "i64.mul"
734 OpcodeI64DivSName = "i64.div_s"
735 OpcodeI64DivUName = "i64.div_u"
736 OpcodeI64RemSName = "i64.rem_s"
737 OpcodeI64RemUName = "i64.rem_u"
738 OpcodeI64AndName = "i64.and"
739 OpcodeI64OrName = "i64.or"
740 OpcodeI64XorName = "i64.xor"
741 OpcodeI64ShlName = "i64.shl"
742 OpcodeI64ShrSName = "i64.shr_s"
743 OpcodeI64ShrUName = "i64.shr_u"
744 OpcodeI64RotlName = "i64.rotl"
745 OpcodeI64RotrName = "i64.rotr"
746 OpcodeF32AbsName = "f32.abs"
747 OpcodeF32NegName = "f32.neg"
748 OpcodeF32CeilName = "f32.ceil"
749 OpcodeF32FloorName = "f32.floor"
750 OpcodeF32TruncName = "f32.trunc"
751 OpcodeF32NearestName = "f32.nearest"
752 OpcodeF32SqrtName = "f32.sqrt"
753 OpcodeF32AddName = "f32.add"
754 OpcodeF32SubName = "f32.sub"
755 OpcodeF32MulName = "f32.mul"
756 OpcodeF32DivName = "f32.div"
757 OpcodeF32MinName = "f32.min"
758 OpcodeF32MaxName = "f32.max"
759 OpcodeF32CopysignName = "f32.copysign"
760 OpcodeF64AbsName = "f64.abs"
761 OpcodeF64NegName = "f64.neg"
762 OpcodeF64CeilName = "f64.ceil"
763 OpcodeF64FloorName = "f64.floor"
764 OpcodeF64TruncName = "f64.trunc"
765 OpcodeF64NearestName = "f64.nearest"
766 OpcodeF64SqrtName = "f64.sqrt"
767 OpcodeF64AddName = "f64.add"
768 OpcodeF64SubName = "f64.sub"
769 OpcodeF64MulName = "f64.mul"
770 OpcodeF64DivName = "f64.div"
771 OpcodeF64MinName = "f64.min"
772 OpcodeF64MaxName = "f64.max"
773 OpcodeF64CopysignName = "f64.copysign"
774 OpcodeI32WrapI64Name = "i32.wrap_i64"
775 OpcodeI32TruncF32SName = "i32.trunc_f32_s"
776 OpcodeI32TruncF32UName = "i32.trunc_f32_u"
777 OpcodeI32TruncF64SName = "i32.trunc_f64_s"
778 OpcodeI32TruncF64UName = "i32.trunc_f64_u"
779 OpcodeI64ExtendI32SName = "i64.extend_i32_s"
780 OpcodeI64ExtendI32UName = "i64.extend_i32_u"
781 OpcodeI64TruncF32SName = "i64.trunc_f32_s"
782 OpcodeI64TruncF32UName = "i64.trunc_f32_u"
783 OpcodeI64TruncF64SName = "i64.trunc_f64_s"
784 OpcodeI64TruncF64UName = "i64.trunc_f64_u"
785 OpcodeF32ConvertI32SName = "f32.convert_i32_s"
786 OpcodeF32ConvertI32UName = "f32.convert_i32_u"
787 OpcodeF32ConvertI64SName = "f32.convert_i64_s"
788 OpcodeF32ConvertI64UName = "f32.convert_i64u"
789 OpcodeF32DemoteF64Name = "f32.demote_f64"
790 OpcodeF64ConvertI32SName = "f64.convert_i32_s"
791 OpcodeF64ConvertI32UName = "f64.convert_i32_u"
792 OpcodeF64ConvertI64SName = "f64.convert_i64_s"
793 OpcodeF64ConvertI64UName = "f64.convert_i64_u"
794 OpcodeF64PromoteF32Name = "f64.promote_f32"
795 OpcodeI32ReinterpretF32Name = "i32.reinterpret_f32"
796 OpcodeI64ReinterpretF64Name = "i64.reinterpret_f64"
797 OpcodeF32ReinterpretI32Name = "f32.reinterpret_i32"
798 OpcodeF64ReinterpretI64Name = "f64.reinterpret_i64"
799
800 OpcodeRefNullName = "ref.null"
801 OpcodeRefIsNullName = "ref.is_null"
802 OpcodeRefFuncName = "ref.func"
803
804 OpcodeTableGetName = "table.get"
805 OpcodeTableSetName = "table.set"
806
807
808
809 OpcodeI32Extend8SName = "i32.extend8_s"
810 OpcodeI32Extend16SName = "i32.extend16_s"
811 OpcodeI64Extend8SName = "i64.extend8_s"
812 OpcodeI64Extend16SName = "i64.extend16_s"
813 OpcodeI64Extend32SName = "i64.extend32_s"
814
815 OpcodeMiscPrefixName = "misc_prefix"
816 OpcodeVecPrefixName = "vector_prefix"
817 )
818
819 var instructionNames = [256]string{
820 OpcodeUnreachable: OpcodeUnreachableName,
821 OpcodeNop: OpcodeNopName,
822 OpcodeBlock: OpcodeBlockName,
823 OpcodeLoop: OpcodeLoopName,
824 OpcodeIf: OpcodeIfName,
825 OpcodeElse: OpcodeElseName,
826 OpcodeEnd: OpcodeEndName,
827 OpcodeBr: OpcodeBrName,
828 OpcodeBrIf: OpcodeBrIfName,
829 OpcodeBrTable: OpcodeBrTableName,
830 OpcodeReturn: OpcodeReturnName,
831 OpcodeCall: OpcodeCallName,
832 OpcodeCallIndirect: OpcodeCallIndirectName,
833 OpcodeDrop: OpcodeDropName,
834 OpcodeSelect: OpcodeSelectName,
835 OpcodeTypedSelect: OpcodeTypedSelectName,
836 OpcodeLocalGet: OpcodeLocalGetName,
837 OpcodeLocalSet: OpcodeLocalSetName,
838 OpcodeLocalTee: OpcodeLocalTeeName,
839 OpcodeGlobalGet: OpcodeGlobalGetName,
840 OpcodeGlobalSet: OpcodeGlobalSetName,
841 OpcodeI32Load: OpcodeI32LoadName,
842 OpcodeI64Load: OpcodeI64LoadName,
843 OpcodeF32Load: OpcodeF32LoadName,
844 OpcodeF64Load: OpcodeF64LoadName,
845 OpcodeI32Load8S: OpcodeI32Load8SName,
846 OpcodeI32Load8U: OpcodeI32Load8UName,
847 OpcodeI32Load16S: OpcodeI32Load16SName,
848 OpcodeI32Load16U: OpcodeI32Load16UName,
849 OpcodeI64Load8S: OpcodeI64Load8SName,
850 OpcodeI64Load8U: OpcodeI64Load8UName,
851 OpcodeI64Load16S: OpcodeI64Load16SName,
852 OpcodeI64Load16U: OpcodeI64Load16UName,
853 OpcodeI64Load32S: OpcodeI64Load32SName,
854 OpcodeI64Load32U: OpcodeI64Load32UName,
855 OpcodeI32Store: OpcodeI32StoreName,
856 OpcodeI64Store: OpcodeI64StoreName,
857 OpcodeF32Store: OpcodeF32StoreName,
858 OpcodeF64Store: OpcodeF64StoreName,
859 OpcodeI32Store8: OpcodeI32Store8Name,
860 OpcodeI32Store16: OpcodeI32Store16Name,
861 OpcodeI64Store8: OpcodeI64Store8Name,
862 OpcodeI64Store16: OpcodeI64Store16Name,
863 OpcodeI64Store32: OpcodeI64Store32Name,
864 OpcodeMemorySize: OpcodeMemorySizeName,
865 OpcodeMemoryGrow: OpcodeMemoryGrowName,
866 OpcodeI32Const: OpcodeI32ConstName,
867 OpcodeI64Const: OpcodeI64ConstName,
868 OpcodeF32Const: OpcodeF32ConstName,
869 OpcodeF64Const: OpcodeF64ConstName,
870 OpcodeI32Eqz: OpcodeI32EqzName,
871 OpcodeI32Eq: OpcodeI32EqName,
872 OpcodeI32Ne: OpcodeI32NeName,
873 OpcodeI32LtS: OpcodeI32LtSName,
874 OpcodeI32LtU: OpcodeI32LtUName,
875 OpcodeI32GtS: OpcodeI32GtSName,
876 OpcodeI32GtU: OpcodeI32GtUName,
877 OpcodeI32LeS: OpcodeI32LeSName,
878 OpcodeI32LeU: OpcodeI32LeUName,
879 OpcodeI32GeS: OpcodeI32GeSName,
880 OpcodeI32GeU: OpcodeI32GeUName,
881 OpcodeI64Eqz: OpcodeI64EqzName,
882 OpcodeI64Eq: OpcodeI64EqName,
883 OpcodeI64Ne: OpcodeI64NeName,
884 OpcodeI64LtS: OpcodeI64LtSName,
885 OpcodeI64LtU: OpcodeI64LtUName,
886 OpcodeI64GtS: OpcodeI64GtSName,
887 OpcodeI64GtU: OpcodeI64GtUName,
888 OpcodeI64LeS: OpcodeI64LeSName,
889 OpcodeI64LeU: OpcodeI64LeUName,
890 OpcodeI64GeS: OpcodeI64GeSName,
891 OpcodeI64GeU: OpcodeI64GeUName,
892 OpcodeF32Eq: OpcodeF32EqName,
893 OpcodeF32Ne: OpcodeF32NeName,
894 OpcodeF32Lt: OpcodeF32LtName,
895 OpcodeF32Gt: OpcodeF32GtName,
896 OpcodeF32Le: OpcodeF32LeName,
897 OpcodeF32Ge: OpcodeF32GeName,
898 OpcodeF64Eq: OpcodeF64EqName,
899 OpcodeF64Ne: OpcodeF64NeName,
900 OpcodeF64Lt: OpcodeF64LtName,
901 OpcodeF64Gt: OpcodeF64GtName,
902 OpcodeF64Le: OpcodeF64LeName,
903 OpcodeF64Ge: OpcodeF64GeName,
904 OpcodeI32Clz: OpcodeI32ClzName,
905 OpcodeI32Ctz: OpcodeI32CtzName,
906 OpcodeI32Popcnt: OpcodeI32PopcntName,
907 OpcodeI32Add: OpcodeI32AddName,
908 OpcodeI32Sub: OpcodeI32SubName,
909 OpcodeI32Mul: OpcodeI32MulName,
910 OpcodeI32DivS: OpcodeI32DivSName,
911 OpcodeI32DivU: OpcodeI32DivUName,
912 OpcodeI32RemS: OpcodeI32RemSName,
913 OpcodeI32RemU: OpcodeI32RemUName,
914 OpcodeI32And: OpcodeI32AndName,
915 OpcodeI32Or: OpcodeI32OrName,
916 OpcodeI32Xor: OpcodeI32XorName,
917 OpcodeI32Shl: OpcodeI32ShlName,
918 OpcodeI32ShrS: OpcodeI32ShrSName,
919 OpcodeI32ShrU: OpcodeI32ShrUName,
920 OpcodeI32Rotl: OpcodeI32RotlName,
921 OpcodeI32Rotr: OpcodeI32RotrName,
922 OpcodeI64Clz: OpcodeI64ClzName,
923 OpcodeI64Ctz: OpcodeI64CtzName,
924 OpcodeI64Popcnt: OpcodeI64PopcntName,
925 OpcodeI64Add: OpcodeI64AddName,
926 OpcodeI64Sub: OpcodeI64SubName,
927 OpcodeI64Mul: OpcodeI64MulName,
928 OpcodeI64DivS: OpcodeI64DivSName,
929 OpcodeI64DivU: OpcodeI64DivUName,
930 OpcodeI64RemS: OpcodeI64RemSName,
931 OpcodeI64RemU: OpcodeI64RemUName,
932 OpcodeI64And: OpcodeI64AndName,
933 OpcodeI64Or: OpcodeI64OrName,
934 OpcodeI64Xor: OpcodeI64XorName,
935 OpcodeI64Shl: OpcodeI64ShlName,
936 OpcodeI64ShrS: OpcodeI64ShrSName,
937 OpcodeI64ShrU: OpcodeI64ShrUName,
938 OpcodeI64Rotl: OpcodeI64RotlName,
939 OpcodeI64Rotr: OpcodeI64RotrName,
940 OpcodeF32Abs: OpcodeF32AbsName,
941 OpcodeF32Neg: OpcodeF32NegName,
942 OpcodeF32Ceil: OpcodeF32CeilName,
943 OpcodeF32Floor: OpcodeF32FloorName,
944 OpcodeF32Trunc: OpcodeF32TruncName,
945 OpcodeF32Nearest: OpcodeF32NearestName,
946 OpcodeF32Sqrt: OpcodeF32SqrtName,
947 OpcodeF32Add: OpcodeF32AddName,
948 OpcodeF32Sub: OpcodeF32SubName,
949 OpcodeF32Mul: OpcodeF32MulName,
950 OpcodeF32Div: OpcodeF32DivName,
951 OpcodeF32Min: OpcodeF32MinName,
952 OpcodeF32Max: OpcodeF32MaxName,
953 OpcodeF32Copysign: OpcodeF32CopysignName,
954 OpcodeF64Abs: OpcodeF64AbsName,
955 OpcodeF64Neg: OpcodeF64NegName,
956 OpcodeF64Ceil: OpcodeF64CeilName,
957 OpcodeF64Floor: OpcodeF64FloorName,
958 OpcodeF64Trunc: OpcodeF64TruncName,
959 OpcodeF64Nearest: OpcodeF64NearestName,
960 OpcodeF64Sqrt: OpcodeF64SqrtName,
961 OpcodeF64Add: OpcodeF64AddName,
962 OpcodeF64Sub: OpcodeF64SubName,
963 OpcodeF64Mul: OpcodeF64MulName,
964 OpcodeF64Div: OpcodeF64DivName,
965 OpcodeF64Min: OpcodeF64MinName,
966 OpcodeF64Max: OpcodeF64MaxName,
967 OpcodeF64Copysign: OpcodeF64CopysignName,
968 OpcodeI32WrapI64: OpcodeI32WrapI64Name,
969 OpcodeI32TruncF32S: OpcodeI32TruncF32SName,
970 OpcodeI32TruncF32U: OpcodeI32TruncF32UName,
971 OpcodeI32TruncF64S: OpcodeI32TruncF64SName,
972 OpcodeI32TruncF64U: OpcodeI32TruncF64UName,
973 OpcodeI64ExtendI32S: OpcodeI64ExtendI32SName,
974 OpcodeI64ExtendI32U: OpcodeI64ExtendI32UName,
975 OpcodeI64TruncF32S: OpcodeI64TruncF32SName,
976 OpcodeI64TruncF32U: OpcodeI64TruncF32UName,
977 OpcodeI64TruncF64S: OpcodeI64TruncF64SName,
978 OpcodeI64TruncF64U: OpcodeI64TruncF64UName,
979 OpcodeF32ConvertI32S: OpcodeF32ConvertI32SName,
980 OpcodeF32ConvertI32U: OpcodeF32ConvertI32UName,
981 OpcodeF32ConvertI64S: OpcodeF32ConvertI64SName,
982 OpcodeF32ConvertI64U: OpcodeF32ConvertI64UName,
983 OpcodeF32DemoteF64: OpcodeF32DemoteF64Name,
984 OpcodeF64ConvertI32S: OpcodeF64ConvertI32SName,
985 OpcodeF64ConvertI32U: OpcodeF64ConvertI32UName,
986 OpcodeF64ConvertI64S: OpcodeF64ConvertI64SName,
987 OpcodeF64ConvertI64U: OpcodeF64ConvertI64UName,
988 OpcodeF64PromoteF32: OpcodeF64PromoteF32Name,
989 OpcodeI32ReinterpretF32: OpcodeI32ReinterpretF32Name,
990 OpcodeI64ReinterpretF64: OpcodeI64ReinterpretF64Name,
991 OpcodeF32ReinterpretI32: OpcodeF32ReinterpretI32Name,
992 OpcodeF64ReinterpretI64: OpcodeF64ReinterpretI64Name,
993
994 OpcodeRefNull: OpcodeRefNullName,
995 OpcodeRefIsNull: OpcodeRefIsNullName,
996 OpcodeRefFunc: OpcodeRefFuncName,
997
998 OpcodeTableGet: OpcodeTableGetName,
999 OpcodeTableSet: OpcodeTableSetName,
1000
1001
1002
1003 OpcodeI32Extend8S: OpcodeI32Extend8SName,
1004 OpcodeI32Extend16S: OpcodeI32Extend16SName,
1005 OpcodeI64Extend8S: OpcodeI64Extend8SName,
1006 OpcodeI64Extend16S: OpcodeI64Extend16SName,
1007 OpcodeI64Extend32S: OpcodeI64Extend32SName,
1008
1009 OpcodeMiscPrefix: OpcodeMiscPrefixName,
1010 OpcodeVecPrefix: OpcodeVecPrefixName,
1011 }
1012
1013
1014
1015 func InstructionName(oc Opcode) string {
1016 return instructionNames[oc]
1017 }
1018
1019 const (
1020 OpcodeI32TruncSatF32SName = "i32.trunc_sat_f32_s"
1021 OpcodeI32TruncSatF32UName = "i32.trunc_sat_f32_u"
1022 OpcodeI32TruncSatF64SName = "i32.trunc_sat_f64_s"
1023 OpcodeI32TruncSatF64UName = "i32.trunc_sat_f64_u"
1024 OpcodeI64TruncSatF32SName = "i64.trunc_sat_f32_s"
1025 OpcodeI64TruncSatF32UName = "i64.trunc_sat_f32_u"
1026 OpcodeI64TruncSatF64SName = "i64.trunc_sat_f64_s"
1027 OpcodeI64TruncSatF64UName = "i64.trunc_sat_f64_u"
1028
1029 OpcodeMemoryInitName = "memory.init"
1030 OpcodeDataDropName = "data.drop"
1031 OpcodeMemoryCopyName = "memory.copy"
1032 OpcodeMemoryFillName = "memory.fill"
1033 OpcodeTableInitName = "table.init"
1034 OpcodeElemDropName = "elem.drop"
1035 OpcodeTableCopyName = "table.copy"
1036 OpcodeTableGrowName = "table.grow"
1037 OpcodeTableSizeName = "table.size"
1038 OpcodeTableFillName = "table.fill"
1039 )
1040
1041 var miscInstructionNames = [256]string{
1042 OpcodeMiscI32TruncSatF32S: OpcodeI32TruncSatF32SName,
1043 OpcodeMiscI32TruncSatF32U: OpcodeI32TruncSatF32UName,
1044 OpcodeMiscI32TruncSatF64S: OpcodeI32TruncSatF64SName,
1045 OpcodeMiscI32TruncSatF64U: OpcodeI32TruncSatF64UName,
1046 OpcodeMiscI64TruncSatF32S: OpcodeI64TruncSatF32SName,
1047 OpcodeMiscI64TruncSatF32U: OpcodeI64TruncSatF32UName,
1048 OpcodeMiscI64TruncSatF64S: OpcodeI64TruncSatF64SName,
1049 OpcodeMiscI64TruncSatF64U: OpcodeI64TruncSatF64UName,
1050
1051 OpcodeMiscMemoryInit: OpcodeMemoryInitName,
1052 OpcodeMiscDataDrop: OpcodeDataDropName,
1053 OpcodeMiscMemoryCopy: OpcodeMemoryCopyName,
1054 OpcodeMiscMemoryFill: OpcodeMemoryFillName,
1055 OpcodeMiscTableInit: OpcodeTableInitName,
1056 OpcodeMiscElemDrop: OpcodeElemDropName,
1057 OpcodeMiscTableCopy: OpcodeTableCopyName,
1058 OpcodeMiscTableGrow: OpcodeTableGrowName,
1059 OpcodeMiscTableSize: OpcodeTableSizeName,
1060 OpcodeMiscTableFill: OpcodeTableFillName,
1061 }
1062
1063
1064 func MiscInstructionName(oc OpcodeMisc) string {
1065 return miscInstructionNames[oc]
1066 }
1067
1068 const (
1069 OpcodeVecV128LoadName = "v128.load"
1070 OpcodeVecV128Load8x8SName = "v128.load8x8_s"
1071 OpcodeVecV128Load8x8UName = "v128.load8x8_u"
1072 OpcodeVecV128Load16x4SName = "v128.load16x4_s"
1073 OpcodeVecV128Load16x4UName = "v128.load16x4_u"
1074 OpcodeVecV128Load32x2SName = "v128.load32x2_s"
1075 OpcodeVecV128Load32x2UName = "v128.load32x2_u"
1076 OpcodeVecV128Load8SplatName = "v128.load8_splat"
1077 OpcodeVecV128Load16SplatName = "v128.load16_splat"
1078 OpcodeVecV128Load32SplatName = "v128.load32_splat"
1079 OpcodeVecV128Load64SplatName = "v128.load64_splat"
1080 OpcodeVecV128Load32zeroName = "v128.load32_zero"
1081 OpcodeVecV128Load64zeroName = "v128.load64_zero"
1082 OpcodeVecV128StoreName = "v128.store"
1083 OpcodeVecV128Load8LaneName = "v128.load8_lane"
1084 OpcodeVecV128Load16LaneName = "v128.load16_lane"
1085 OpcodeVecV128Load32LaneName = "v128.load32_lane"
1086 OpcodeVecV128Load64LaneName = "v128.load64_lane"
1087 OpcodeVecV128Store8LaneName = "v128.store8_lane"
1088 OpcodeVecV128Store16LaneName = "v128.store16_lane"
1089 OpcodeVecV128Store32LaneName = "v128.store32_lane"
1090 OpcodeVecV128Store64LaneName = "v128.store64_lane"
1091 OpcodeVecV128ConstName = "v128.const"
1092 OpcodeVecV128i8x16ShuffleName = "v128.shuffle"
1093 OpcodeVecI8x16ExtractLaneSName = "i8x16.extract_lane_s"
1094 OpcodeVecI8x16ExtractLaneUName = "i8x16.extract_lane_u"
1095 OpcodeVecI8x16ReplaceLaneName = "i8x16.replace_lane"
1096 OpcodeVecI16x8ExtractLaneSName = "i16x8.extract_lane_s"
1097 OpcodeVecI16x8ExtractLaneUName = "i16x8.extract_lane_u"
1098 OpcodeVecI16x8ReplaceLaneName = "i16x8.replace_lane"
1099 OpcodeVecI32x4ExtractLaneName = "i32x4.extract_lane"
1100 OpcodeVecI32x4ReplaceLaneName = "i32x4.replace_lane"
1101 OpcodeVecI64x2ExtractLaneName = "i64x2.extract_lane"
1102 OpcodeVecI64x2ReplaceLaneName = "i64x2.replace_lane"
1103 OpcodeVecF32x4ExtractLaneName = "f32x4.extract_lane"
1104 OpcodeVecF32x4ReplaceLaneName = "f32x4.replace_lane"
1105 OpcodeVecF64x2ExtractLaneName = "f64x2.extract_lane"
1106 OpcodeVecF64x2ReplaceLaneName = "f64x2.replace_lane"
1107 OpcodeVecI8x16SwizzleName = "i8x16.swizzle"
1108 OpcodeVecI8x16SplatName = "i8x16.splat"
1109 OpcodeVecI16x8SplatName = "i16x8.splat"
1110 OpcodeVecI32x4SplatName = "i32x4.splat"
1111 OpcodeVecI64x2SplatName = "i64x2.splat"
1112 OpcodeVecF32x4SplatName = "f32x4.splat"
1113 OpcodeVecF64x2SplatName = "f64x2.splat"
1114 OpcodeVecI8x16EqName = "i8x16.eq"
1115 OpcodeVecI8x16NeName = "i8x16.ne"
1116 OpcodeVecI8x16LtSName = "i8x16.lt_s"
1117 OpcodeVecI8x16LtUName = "i8x16.lt_u"
1118 OpcodeVecI8x16GtSName = "i8x16.gt_s"
1119 OpcodeVecI8x16GtUName = "i8x16.gt_u"
1120 OpcodeVecI8x16LeSName = "i8x16.le_s"
1121 OpcodeVecI8x16LeUName = "i8x16.le_u"
1122 OpcodeVecI8x16GeSName = "i8x16.ge_s"
1123 OpcodeVecI8x16GeUName = "i8x16.ge_u"
1124 OpcodeVecI16x8EqName = "i16x8.eq"
1125 OpcodeVecI16x8NeName = "i16x8.ne"
1126 OpcodeVecI16x8LtSName = "i16x8.lt_s"
1127 OpcodeVecI16x8LtUName = "i16x8.lt_u"
1128 OpcodeVecI16x8GtSName = "i16x8.gt_s"
1129 OpcodeVecI16x8GtUName = "i16x8.gt_u"
1130 OpcodeVecI16x8LeSName = "i16x8.le_s"
1131 OpcodeVecI16x8LeUName = "i16x8.le_u"
1132 OpcodeVecI16x8GeSName = "i16x8.ge_s"
1133 OpcodeVecI16x8GeUName = "i16x8.ge_u"
1134 OpcodeVecI32x4EqName = "i32x4.eq"
1135 OpcodeVecI32x4NeName = "i32x4.ne"
1136 OpcodeVecI32x4LtSName = "i32x4.lt_s"
1137 OpcodeVecI32x4LtUName = "i32x4.lt_u"
1138 OpcodeVecI32x4GtSName = "i32x4.gt_s"
1139 OpcodeVecI32x4GtUName = "i32x4.gt_u"
1140 OpcodeVecI32x4LeSName = "i32x4.le_s"
1141 OpcodeVecI32x4LeUName = "i32x4.le_u"
1142 OpcodeVecI32x4GeSName = "i32x4.ge_s"
1143 OpcodeVecI32x4GeUName = "i32x4.ge_u"
1144 OpcodeVecI64x2EqName = "i64x2.eq"
1145 OpcodeVecI64x2NeName = "i64x2.ne"
1146 OpcodeVecI64x2LtSName = "i64x2.lt"
1147 OpcodeVecI64x2GtSName = "i64x2.gt"
1148 OpcodeVecI64x2LeSName = "i64x2.le"
1149 OpcodeVecI64x2GeSName = "i64x2.ge"
1150 OpcodeVecF32x4EqName = "f32x4.eq"
1151 OpcodeVecF32x4NeName = "f32x4.ne"
1152 OpcodeVecF32x4LtName = "f32x4.lt"
1153 OpcodeVecF32x4GtName = "f32x4.gt"
1154 OpcodeVecF32x4LeName = "f32x4.le"
1155 OpcodeVecF32x4GeName = "f32x4.ge"
1156 OpcodeVecF64x2EqName = "f64x2.eq"
1157 OpcodeVecF64x2NeName = "f64x2.ne"
1158 OpcodeVecF64x2LtName = "f64x2.lt"
1159 OpcodeVecF64x2GtName = "f64x2.gt"
1160 OpcodeVecF64x2LeName = "f64x2.le"
1161 OpcodeVecF64x2GeName = "f64x2.ge"
1162 OpcodeVecV128NotName = "v128.not"
1163 OpcodeVecV128AndName = "v128.and"
1164 OpcodeVecV128AndNotName = "v128.andnot"
1165 OpcodeVecV128OrName = "v128.or"
1166 OpcodeVecV128XorName = "v128.xor"
1167 OpcodeVecV128BitselectName = "v128.bitselect"
1168 OpcodeVecV128AnyTrueName = "v128.any_true"
1169 OpcodeVecI8x16AbsName = "i8x16.abs"
1170 OpcodeVecI8x16NegName = "i8x16.neg"
1171 OpcodeVecI8x16PopcntName = "i8x16.popcnt"
1172 OpcodeVecI8x16AllTrueName = "i8x16.all_true"
1173 OpcodeVecI8x16BitMaskName = "i8x16.bitmask"
1174 OpcodeVecI8x16NarrowI16x8SName = "i8x16.narrow_i16x8_s"
1175 OpcodeVecI8x16NarrowI16x8UName = "i8x16.narrow_i16x8_u"
1176 OpcodeVecI8x16ShlName = "i8x16.shl"
1177 OpcodeVecI8x16ShrSName = "i8x16.shr_s"
1178 OpcodeVecI8x16ShrUName = "i8x16.shr_u"
1179 OpcodeVecI8x16AddName = "i8x16.add"
1180 OpcodeVecI8x16AddSatSName = "i8x16.add_sat_s"
1181 OpcodeVecI8x16AddSatUName = "i8x16.add_sat_u"
1182 OpcodeVecI8x16SubName = "i8x16.sub"
1183 OpcodeVecI8x16SubSatSName = "i8x16.sub_s"
1184 OpcodeVecI8x16SubSatUName = "i8x16.sub_u"
1185 OpcodeVecI8x16MinSName = "i8x16.min_s"
1186 OpcodeVecI8x16MinUName = "i8x16.min_u"
1187 OpcodeVecI8x16MaxSName = "i8x16.max_s"
1188 OpcodeVecI8x16MaxUName = "i8x16.max_u"
1189 OpcodeVecI8x16AvgrUName = "i8x16.avgr_u"
1190 OpcodeVecI16x8ExtaddPairwiseI8x16SName = "i16x8.extadd_pairwise_i8x16_s"
1191 OpcodeVecI16x8ExtaddPairwiseI8x16UName = "i16x8.extadd_pairwise_i8x16_u"
1192 OpcodeVecI16x8AbsName = "i16x8.abs"
1193 OpcodeVecI16x8NegName = "i16x8.neg"
1194 OpcodeVecI16x8Q15mulrSatSName = "i16x8.q15mulr_sat_s"
1195 OpcodeVecI16x8AllTrueName = "i16x8.all_true"
1196 OpcodeVecI16x8BitMaskName = "i16x8.bitmask"
1197 OpcodeVecI16x8NarrowI32x4SName = "i16x8.narrow_i32x4_s"
1198 OpcodeVecI16x8NarrowI32x4UName = "i16x8.narrow_i32x4_u"
1199 OpcodeVecI16x8ExtendLowI8x16SName = "i16x8.extend_low_i8x16_s"
1200 OpcodeVecI16x8ExtendHighI8x16SName = "i16x8.extend_high_i8x16_s"
1201 OpcodeVecI16x8ExtendLowI8x16UName = "i16x8.extend_low_i8x16_u"
1202 OpcodeVecI16x8ExtendHighI8x16UName = "i16x8.extend_high_i8x16_u"
1203 OpcodeVecI16x8ShlName = "i16x8.shl"
1204 OpcodeVecI16x8ShrSName = "i16x8.shr_s"
1205 OpcodeVecI16x8ShrUName = "i16x8.shr_u"
1206 OpcodeVecI16x8AddName = "i16x8.add"
1207 OpcodeVecI16x8AddSatSName = "i16x8.add_sat_s"
1208 OpcodeVecI16x8AddSatUName = "i16x8.add_sat_u"
1209 OpcodeVecI16x8SubName = "i16x8.sub"
1210 OpcodeVecI16x8SubSatSName = "i16x8.sub_sat_s"
1211 OpcodeVecI16x8SubSatUName = "i16x8.sub_sat_u"
1212 OpcodeVecI16x8MulName = "i16x8.mul"
1213 OpcodeVecI16x8MinSName = "i16x8.min_s"
1214 OpcodeVecI16x8MinUName = "i16x8.min_u"
1215 OpcodeVecI16x8MaxSName = "i16x8.max_s"
1216 OpcodeVecI16x8MaxUName = "i16x8.max_u"
1217 OpcodeVecI16x8AvgrUName = "i16x8.avgr_u"
1218 OpcodeVecI16x8ExtMulLowI8x16SName = "i16x8.extmul_low_i8x16_s"
1219 OpcodeVecI16x8ExtMulHighI8x16SName = "i16x8.extmul_high_i8x16_s"
1220 OpcodeVecI16x8ExtMulLowI8x16UName = "i16x8.extmul_low_i8x16_u"
1221 OpcodeVecI16x8ExtMulHighI8x16UName = "i16x8.extmul_high_i8x16_u"
1222 OpcodeVecI32x4ExtaddPairwiseI16x8SName = "i32x4.extadd_pairwise_i16x8_s"
1223 OpcodeVecI32x4ExtaddPairwiseI16x8UName = "i32x4.extadd_pairwise_i16x8_u"
1224 OpcodeVecI32x4AbsName = "i32x4.abs"
1225 OpcodeVecI32x4NegName = "i32x4.neg"
1226 OpcodeVecI32x4AllTrueName = "i32x4.all_true"
1227 OpcodeVecI32x4BitMaskName = "i32x4.bitmask"
1228 OpcodeVecI32x4ExtendLowI16x8SName = "i32x4.extend_low_i16x8_s"
1229 OpcodeVecI32x4ExtendHighI16x8SName = "i32x4.extend_high_i16x8_s"
1230 OpcodeVecI32x4ExtendLowI16x8UName = "i32x4.extend_low_i16x8_u"
1231 OpcodeVecI32x4ExtendHighI16x8UName = "i32x4.extend_high_i16x8_u"
1232 OpcodeVecI32x4ShlName = "i32x4.shl"
1233 OpcodeVecI32x4ShrSName = "i32x4.shr_s"
1234 OpcodeVecI32x4ShrUName = "i32x4.shr_u"
1235 OpcodeVecI32x4AddName = "i32x4.add"
1236 OpcodeVecI32x4SubName = "i32x4.sub"
1237 OpcodeVecI32x4MulName = "i32x4.mul"
1238 OpcodeVecI32x4MinSName = "i32x4.min_s"
1239 OpcodeVecI32x4MinUName = "i32x4.min_u"
1240 OpcodeVecI32x4MaxSName = "i32x4.max_s"
1241 OpcodeVecI32x4MaxUName = "i32x4.max_u"
1242 OpcodeVecI32x4DotI16x8SName = "i32x4.dot_i16x8_s"
1243 OpcodeVecI32x4ExtMulLowI16x8SName = "i32x4.extmul_low_i16x8_s"
1244 OpcodeVecI32x4ExtMulHighI16x8SName = "i32x4.extmul_high_i16x8_s"
1245 OpcodeVecI32x4ExtMulLowI16x8UName = "i32x4.extmul_low_i16x8_u"
1246 OpcodeVecI32x4ExtMulHighI16x8UName = "i32x4.extmul_high_i16x8_u"
1247 OpcodeVecI64x2AbsName = "i64x2.abs"
1248 OpcodeVecI64x2NegName = "i64x2.neg"
1249 OpcodeVecI64x2AllTrueName = "i64x2.all_true"
1250 OpcodeVecI64x2BitMaskName = "i64x2.bitmask"
1251 OpcodeVecI64x2ExtendLowI32x4SName = "i64x2.extend_low_i32x4_s"
1252 OpcodeVecI64x2ExtendHighI32x4SName = "i64x2.extend_high_i32x4_s"
1253 OpcodeVecI64x2ExtendLowI32x4UName = "i64x2.extend_low_i32x4_u"
1254 OpcodeVecI64x2ExtendHighI32x4UName = "i64x2.extend_high_i32x4_u"
1255 OpcodeVecI64x2ShlName = "i64x2.shl"
1256 OpcodeVecI64x2ShrSName = "i64x2.shr_s"
1257 OpcodeVecI64x2ShrUName = "i64x2.shr_u"
1258 OpcodeVecI64x2AddName = "i64x2.add"
1259 OpcodeVecI64x2SubName = "i64x2.sub"
1260 OpcodeVecI64x2MulName = "i64x2.mul"
1261 OpcodeVecI64x2ExtMulLowI32x4SName = "i64x2.extmul_low_i32x4_s"
1262 OpcodeVecI64x2ExtMulHighI32x4SName = "i64x2.extmul_high_i32x4_s"
1263 OpcodeVecI64x2ExtMulLowI32x4UName = "i64x2.extmul_low_i32x4_u"
1264 OpcodeVecI64x2ExtMulHighI32x4UName = "i64x2.extmul_high_i32x4_u"
1265 OpcodeVecF32x4CeilName = "f32x4.ceil"
1266 OpcodeVecF32x4FloorName = "f32x4.floor"
1267 OpcodeVecF32x4TruncName = "f32x4.trunc"
1268 OpcodeVecF32x4NearestName = "f32x4.nearest"
1269 OpcodeVecF32x4AbsName = "f32x4.abs"
1270 OpcodeVecF32x4NegName = "f32x4.neg"
1271 OpcodeVecF32x4SqrtName = "f32x4.sqrt"
1272 OpcodeVecF32x4AddName = "f32x4.add"
1273 OpcodeVecF32x4SubName = "f32x4.sub"
1274 OpcodeVecF32x4MulName = "f32x4.mul"
1275 OpcodeVecF32x4DivName = "f32x4.div"
1276 OpcodeVecF32x4MinName = "f32x4.min"
1277 OpcodeVecF32x4MaxName = "f32x4.max"
1278 OpcodeVecF32x4PminName = "f32x4.pmin"
1279 OpcodeVecF32x4PmaxName = "f32x4.pmax"
1280 OpcodeVecF64x2CeilName = "f64x2.ceil"
1281 OpcodeVecF64x2FloorName = "f64x2.floor"
1282 OpcodeVecF64x2TruncName = "f64x2.trunc"
1283 OpcodeVecF64x2NearestName = "f64x2.nearest"
1284 OpcodeVecF64x2AbsName = "f64x2.abs"
1285 OpcodeVecF64x2NegName = "f64x2.neg"
1286 OpcodeVecF64x2SqrtName = "f64x2.sqrt"
1287 OpcodeVecF64x2AddName = "f64x2.add"
1288 OpcodeVecF64x2SubName = "f64x2.sub"
1289 OpcodeVecF64x2MulName = "f64x2.mul"
1290 OpcodeVecF64x2DivName = "f64x2.div"
1291 OpcodeVecF64x2MinName = "f64x2.min"
1292 OpcodeVecF64x2MaxName = "f64x2.max"
1293 OpcodeVecF64x2PminName = "f64x2.pmin"
1294 OpcodeVecF64x2PmaxName = "f64x2.pmax"
1295 OpcodeVecI32x4TruncSatF32x4SName = "i32x4.trunc_sat_f32x4_s"
1296 OpcodeVecI32x4TruncSatF32x4UName = "i32x4.trunc_sat_f32x4_u"
1297 OpcodeVecF32x4ConvertI32x4SName = "f32x4.convert_i32x4_s"
1298 OpcodeVecF32x4ConvertI32x4UName = "f32x4.convert_i32x4_u"
1299 OpcodeVecI32x4TruncSatF64x2SZeroName = "i32x4.trunc_sat_f64x2_s_zero"
1300 OpcodeVecI32x4TruncSatF64x2UZeroName = "i32x4.trunc_sat_f64x2_u_zero"
1301 OpcodeVecF64x2ConvertLowI32x4SName = "f64x2.convert_low_i32x4_s"
1302 OpcodeVecF64x2ConvertLowI32x4UName = "f64x2.convert_low_i32x4_u"
1303 OpcodeVecF32x4DemoteF64x2ZeroName = "f32x4.demote_f64x2_zero"
1304 OpcodeVecF64x2PromoteLowF32x4ZeroName = "f64x2.promote_low_f32x4"
1305 )
1306
1307 var vectorInstructionName = map[OpcodeVec]string{
1308 OpcodeVecV128Load: OpcodeVecV128LoadName,
1309 OpcodeVecV128Load8x8s: OpcodeVecV128Load8x8SName,
1310 OpcodeVecV128Load8x8u: OpcodeVecV128Load8x8UName,
1311 OpcodeVecV128Load16x4s: OpcodeVecV128Load16x4SName,
1312 OpcodeVecV128Load16x4u: OpcodeVecV128Load16x4UName,
1313 OpcodeVecV128Load32x2s: OpcodeVecV128Load32x2SName,
1314 OpcodeVecV128Load32x2u: OpcodeVecV128Load32x2UName,
1315 OpcodeVecV128Load8Splat: OpcodeVecV128Load8SplatName,
1316 OpcodeVecV128Load16Splat: OpcodeVecV128Load16SplatName,
1317 OpcodeVecV128Load32Splat: OpcodeVecV128Load32SplatName,
1318 OpcodeVecV128Load64Splat: OpcodeVecV128Load64SplatName,
1319 OpcodeVecV128Load32zero: OpcodeVecV128Load32zeroName,
1320 OpcodeVecV128Load64zero: OpcodeVecV128Load64zeroName,
1321 OpcodeVecV128Store: OpcodeVecV128StoreName,
1322 OpcodeVecV128Load8Lane: OpcodeVecV128Load8LaneName,
1323 OpcodeVecV128Load16Lane: OpcodeVecV128Load16LaneName,
1324 OpcodeVecV128Load32Lane: OpcodeVecV128Load32LaneName,
1325 OpcodeVecV128Load64Lane: OpcodeVecV128Load64LaneName,
1326 OpcodeVecV128Store8Lane: OpcodeVecV128Store8LaneName,
1327 OpcodeVecV128Store16Lane: OpcodeVecV128Store16LaneName,
1328 OpcodeVecV128Store32Lane: OpcodeVecV128Store32LaneName,
1329 OpcodeVecV128Store64Lane: OpcodeVecV128Store64LaneName,
1330 OpcodeVecV128Const: OpcodeVecV128ConstName,
1331 OpcodeVecV128i8x16Shuffle: OpcodeVecV128i8x16ShuffleName,
1332 OpcodeVecI8x16ExtractLaneS: OpcodeVecI8x16ExtractLaneSName,
1333 OpcodeVecI8x16ExtractLaneU: OpcodeVecI8x16ExtractLaneUName,
1334 OpcodeVecI8x16ReplaceLane: OpcodeVecI8x16ReplaceLaneName,
1335 OpcodeVecI16x8ExtractLaneS: OpcodeVecI16x8ExtractLaneSName,
1336 OpcodeVecI16x8ExtractLaneU: OpcodeVecI16x8ExtractLaneUName,
1337 OpcodeVecI16x8ReplaceLane: OpcodeVecI16x8ReplaceLaneName,
1338 OpcodeVecI32x4ExtractLane: OpcodeVecI32x4ExtractLaneName,
1339 OpcodeVecI32x4ReplaceLane: OpcodeVecI32x4ReplaceLaneName,
1340 OpcodeVecI64x2ExtractLane: OpcodeVecI64x2ExtractLaneName,
1341 OpcodeVecI64x2ReplaceLane: OpcodeVecI64x2ReplaceLaneName,
1342 OpcodeVecF32x4ExtractLane: OpcodeVecF32x4ExtractLaneName,
1343 OpcodeVecF32x4ReplaceLane: OpcodeVecF32x4ReplaceLaneName,
1344 OpcodeVecF64x2ExtractLane: OpcodeVecF64x2ExtractLaneName,
1345 OpcodeVecF64x2ReplaceLane: OpcodeVecF64x2ReplaceLaneName,
1346 OpcodeVecI8x16Swizzle: OpcodeVecI8x16SwizzleName,
1347 OpcodeVecI8x16Splat: OpcodeVecI8x16SplatName,
1348 OpcodeVecI16x8Splat: OpcodeVecI16x8SplatName,
1349 OpcodeVecI32x4Splat: OpcodeVecI32x4SplatName,
1350 OpcodeVecI64x2Splat: OpcodeVecI64x2SplatName,
1351 OpcodeVecF32x4Splat: OpcodeVecF32x4SplatName,
1352 OpcodeVecF64x2Splat: OpcodeVecF64x2SplatName,
1353 OpcodeVecI8x16Eq: OpcodeVecI8x16EqName,
1354 OpcodeVecI8x16Ne: OpcodeVecI8x16NeName,
1355 OpcodeVecI8x16LtS: OpcodeVecI8x16LtSName,
1356 OpcodeVecI8x16LtU: OpcodeVecI8x16LtUName,
1357 OpcodeVecI8x16GtS: OpcodeVecI8x16GtSName,
1358 OpcodeVecI8x16GtU: OpcodeVecI8x16GtUName,
1359 OpcodeVecI8x16LeS: OpcodeVecI8x16LeSName,
1360 OpcodeVecI8x16LeU: OpcodeVecI8x16LeUName,
1361 OpcodeVecI8x16GeS: OpcodeVecI8x16GeSName,
1362 OpcodeVecI8x16GeU: OpcodeVecI8x16GeUName,
1363 OpcodeVecI16x8Eq: OpcodeVecI16x8EqName,
1364 OpcodeVecI16x8Ne: OpcodeVecI16x8NeName,
1365 OpcodeVecI16x8LtS: OpcodeVecI16x8LtSName,
1366 OpcodeVecI16x8LtU: OpcodeVecI16x8LtUName,
1367 OpcodeVecI16x8GtS: OpcodeVecI16x8GtSName,
1368 OpcodeVecI16x8GtU: OpcodeVecI16x8GtUName,
1369 OpcodeVecI16x8LeS: OpcodeVecI16x8LeSName,
1370 OpcodeVecI16x8LeU: OpcodeVecI16x8LeUName,
1371 OpcodeVecI16x8GeS: OpcodeVecI16x8GeSName,
1372 OpcodeVecI16x8GeU: OpcodeVecI16x8GeUName,
1373 OpcodeVecI32x4Eq: OpcodeVecI32x4EqName,
1374 OpcodeVecI32x4Ne: OpcodeVecI32x4NeName,
1375 OpcodeVecI32x4LtS: OpcodeVecI32x4LtSName,
1376 OpcodeVecI32x4LtU: OpcodeVecI32x4LtUName,
1377 OpcodeVecI32x4GtS: OpcodeVecI32x4GtSName,
1378 OpcodeVecI32x4GtU: OpcodeVecI32x4GtUName,
1379 OpcodeVecI32x4LeS: OpcodeVecI32x4LeSName,
1380 OpcodeVecI32x4LeU: OpcodeVecI32x4LeUName,
1381 OpcodeVecI32x4GeS: OpcodeVecI32x4GeSName,
1382 OpcodeVecI32x4GeU: OpcodeVecI32x4GeUName,
1383 OpcodeVecI64x2Eq: OpcodeVecI64x2EqName,
1384 OpcodeVecI64x2Ne: OpcodeVecI64x2NeName,
1385 OpcodeVecI64x2LtS: OpcodeVecI64x2LtSName,
1386 OpcodeVecI64x2GtS: OpcodeVecI64x2GtSName,
1387 OpcodeVecI64x2LeS: OpcodeVecI64x2LeSName,
1388 OpcodeVecI64x2GeS: OpcodeVecI64x2GeSName,
1389 OpcodeVecF32x4Eq: OpcodeVecF32x4EqName,
1390 OpcodeVecF32x4Ne: OpcodeVecF32x4NeName,
1391 OpcodeVecF32x4Lt: OpcodeVecF32x4LtName,
1392 OpcodeVecF32x4Gt: OpcodeVecF32x4GtName,
1393 OpcodeVecF32x4Le: OpcodeVecF32x4LeName,
1394 OpcodeVecF32x4Ge: OpcodeVecF32x4GeName,
1395 OpcodeVecF64x2Eq: OpcodeVecF64x2EqName,
1396 OpcodeVecF64x2Ne: OpcodeVecF64x2NeName,
1397 OpcodeVecF64x2Lt: OpcodeVecF64x2LtName,
1398 OpcodeVecF64x2Gt: OpcodeVecF64x2GtName,
1399 OpcodeVecF64x2Le: OpcodeVecF64x2LeName,
1400 OpcodeVecF64x2Ge: OpcodeVecF64x2GeName,
1401 OpcodeVecV128Not: OpcodeVecV128NotName,
1402 OpcodeVecV128And: OpcodeVecV128AndName,
1403 OpcodeVecV128AndNot: OpcodeVecV128AndNotName,
1404 OpcodeVecV128Or: OpcodeVecV128OrName,
1405 OpcodeVecV128Xor: OpcodeVecV128XorName,
1406 OpcodeVecV128Bitselect: OpcodeVecV128BitselectName,
1407 OpcodeVecV128AnyTrue: OpcodeVecV128AnyTrueName,
1408 OpcodeVecI8x16Abs: OpcodeVecI8x16AbsName,
1409 OpcodeVecI8x16Neg: OpcodeVecI8x16NegName,
1410 OpcodeVecI8x16Popcnt: OpcodeVecI8x16PopcntName,
1411 OpcodeVecI8x16AllTrue: OpcodeVecI8x16AllTrueName,
1412 OpcodeVecI8x16BitMask: OpcodeVecI8x16BitMaskName,
1413 OpcodeVecI8x16NarrowI16x8S: OpcodeVecI8x16NarrowI16x8SName,
1414 OpcodeVecI8x16NarrowI16x8U: OpcodeVecI8x16NarrowI16x8UName,
1415 OpcodeVecI8x16Shl: OpcodeVecI8x16ShlName,
1416 OpcodeVecI8x16ShrS: OpcodeVecI8x16ShrSName,
1417 OpcodeVecI8x16ShrU: OpcodeVecI8x16ShrUName,
1418 OpcodeVecI8x16Add: OpcodeVecI8x16AddName,
1419 OpcodeVecI8x16AddSatS: OpcodeVecI8x16AddSatSName,
1420 OpcodeVecI8x16AddSatU: OpcodeVecI8x16AddSatUName,
1421 OpcodeVecI8x16Sub: OpcodeVecI8x16SubName,
1422 OpcodeVecI8x16SubSatS: OpcodeVecI8x16SubSatSName,
1423 OpcodeVecI8x16SubSatU: OpcodeVecI8x16SubSatUName,
1424 OpcodeVecI8x16MinS: OpcodeVecI8x16MinSName,
1425 OpcodeVecI8x16MinU: OpcodeVecI8x16MinUName,
1426 OpcodeVecI8x16MaxS: OpcodeVecI8x16MaxSName,
1427 OpcodeVecI8x16MaxU: OpcodeVecI8x16MaxUName,
1428 OpcodeVecI8x16AvgrU: OpcodeVecI8x16AvgrUName,
1429 OpcodeVecI16x8ExtaddPairwiseI8x16S: OpcodeVecI16x8ExtaddPairwiseI8x16SName,
1430 OpcodeVecI16x8ExtaddPairwiseI8x16U: OpcodeVecI16x8ExtaddPairwiseI8x16UName,
1431 OpcodeVecI16x8Abs: OpcodeVecI16x8AbsName,
1432 OpcodeVecI16x8Neg: OpcodeVecI16x8NegName,
1433 OpcodeVecI16x8Q15mulrSatS: OpcodeVecI16x8Q15mulrSatSName,
1434 OpcodeVecI16x8AllTrue: OpcodeVecI16x8AllTrueName,
1435 OpcodeVecI16x8BitMask: OpcodeVecI16x8BitMaskName,
1436 OpcodeVecI16x8NarrowI32x4S: OpcodeVecI16x8NarrowI32x4SName,
1437 OpcodeVecI16x8NarrowI32x4U: OpcodeVecI16x8NarrowI32x4UName,
1438 OpcodeVecI16x8ExtendLowI8x16S: OpcodeVecI16x8ExtendLowI8x16SName,
1439 OpcodeVecI16x8ExtendHighI8x16S: OpcodeVecI16x8ExtendHighI8x16SName,
1440 OpcodeVecI16x8ExtendLowI8x16U: OpcodeVecI16x8ExtendLowI8x16UName,
1441 OpcodeVecI16x8ExtendHighI8x16U: OpcodeVecI16x8ExtendHighI8x16UName,
1442 OpcodeVecI16x8Shl: OpcodeVecI16x8ShlName,
1443 OpcodeVecI16x8ShrS: OpcodeVecI16x8ShrSName,
1444 OpcodeVecI16x8ShrU: OpcodeVecI16x8ShrUName,
1445 OpcodeVecI16x8Add: OpcodeVecI16x8AddName,
1446 OpcodeVecI16x8AddSatS: OpcodeVecI16x8AddSatSName,
1447 OpcodeVecI16x8AddSatU: OpcodeVecI16x8AddSatUName,
1448 OpcodeVecI16x8Sub: OpcodeVecI16x8SubName,
1449 OpcodeVecI16x8SubSatS: OpcodeVecI16x8SubSatSName,
1450 OpcodeVecI16x8SubSatU: OpcodeVecI16x8SubSatUName,
1451 OpcodeVecI16x8Mul: OpcodeVecI16x8MulName,
1452 OpcodeVecI16x8MinS: OpcodeVecI16x8MinSName,
1453 OpcodeVecI16x8MinU: OpcodeVecI16x8MinUName,
1454 OpcodeVecI16x8MaxS: OpcodeVecI16x8MaxSName,
1455 OpcodeVecI16x8MaxU: OpcodeVecI16x8MaxUName,
1456 OpcodeVecI16x8AvgrU: OpcodeVecI16x8AvgrUName,
1457 OpcodeVecI16x8ExtMulLowI8x16S: OpcodeVecI16x8ExtMulLowI8x16SName,
1458 OpcodeVecI16x8ExtMulHighI8x16S: OpcodeVecI16x8ExtMulHighI8x16SName,
1459 OpcodeVecI16x8ExtMulLowI8x16U: OpcodeVecI16x8ExtMulLowI8x16UName,
1460 OpcodeVecI16x8ExtMulHighI8x16U: OpcodeVecI16x8ExtMulHighI8x16UName,
1461 OpcodeVecI32x4ExtaddPairwiseI16x8S: OpcodeVecI32x4ExtaddPairwiseI16x8SName,
1462 OpcodeVecI32x4ExtaddPairwiseI16x8U: OpcodeVecI32x4ExtaddPairwiseI16x8UName,
1463 OpcodeVecI32x4Abs: OpcodeVecI32x4AbsName,
1464 OpcodeVecI32x4Neg: OpcodeVecI32x4NegName,
1465 OpcodeVecI32x4AllTrue: OpcodeVecI32x4AllTrueName,
1466 OpcodeVecI32x4BitMask: OpcodeVecI32x4BitMaskName,
1467 OpcodeVecI32x4ExtendLowI16x8S: OpcodeVecI32x4ExtendLowI16x8SName,
1468 OpcodeVecI32x4ExtendHighI16x8S: OpcodeVecI32x4ExtendHighI16x8SName,
1469 OpcodeVecI32x4ExtendLowI16x8U: OpcodeVecI32x4ExtendLowI16x8UName,
1470 OpcodeVecI32x4ExtendHighI16x8U: OpcodeVecI32x4ExtendHighI16x8UName,
1471 OpcodeVecI32x4Shl: OpcodeVecI32x4ShlName,
1472 OpcodeVecI32x4ShrS: OpcodeVecI32x4ShrSName,
1473 OpcodeVecI32x4ShrU: OpcodeVecI32x4ShrUName,
1474 OpcodeVecI32x4Add: OpcodeVecI32x4AddName,
1475 OpcodeVecI32x4Sub: OpcodeVecI32x4SubName,
1476 OpcodeVecI32x4Mul: OpcodeVecI32x4MulName,
1477 OpcodeVecI32x4MinS: OpcodeVecI32x4MinSName,
1478 OpcodeVecI32x4MinU: OpcodeVecI32x4MinUName,
1479 OpcodeVecI32x4MaxS: OpcodeVecI32x4MaxSName,
1480 OpcodeVecI32x4MaxU: OpcodeVecI32x4MaxUName,
1481 OpcodeVecI32x4DotI16x8S: OpcodeVecI32x4DotI16x8SName,
1482 OpcodeVecI32x4ExtMulLowI16x8S: OpcodeVecI32x4ExtMulLowI16x8SName,
1483 OpcodeVecI32x4ExtMulHighI16x8S: OpcodeVecI32x4ExtMulHighI16x8SName,
1484 OpcodeVecI32x4ExtMulLowI16x8U: OpcodeVecI32x4ExtMulLowI16x8UName,
1485 OpcodeVecI32x4ExtMulHighI16x8U: OpcodeVecI32x4ExtMulHighI16x8UName,
1486 OpcodeVecI64x2Abs: OpcodeVecI64x2AbsName,
1487 OpcodeVecI64x2Neg: OpcodeVecI64x2NegName,
1488 OpcodeVecI64x2AllTrue: OpcodeVecI64x2AllTrueName,
1489 OpcodeVecI64x2BitMask: OpcodeVecI64x2BitMaskName,
1490 OpcodeVecI64x2ExtendLowI32x4S: OpcodeVecI64x2ExtendLowI32x4SName,
1491 OpcodeVecI64x2ExtendHighI32x4S: OpcodeVecI64x2ExtendHighI32x4SName,
1492 OpcodeVecI64x2ExtendLowI32x4U: OpcodeVecI64x2ExtendLowI32x4UName,
1493 OpcodeVecI64x2ExtendHighI32x4U: OpcodeVecI64x2ExtendHighI32x4UName,
1494 OpcodeVecI64x2Shl: OpcodeVecI64x2ShlName,
1495 OpcodeVecI64x2ShrS: OpcodeVecI64x2ShrSName,
1496 OpcodeVecI64x2ShrU: OpcodeVecI64x2ShrUName,
1497 OpcodeVecI64x2Add: OpcodeVecI64x2AddName,
1498 OpcodeVecI64x2Sub: OpcodeVecI64x2SubName,
1499 OpcodeVecI64x2Mul: OpcodeVecI64x2MulName,
1500 OpcodeVecI64x2ExtMulLowI32x4S: OpcodeVecI64x2ExtMulLowI32x4SName,
1501 OpcodeVecI64x2ExtMulHighI32x4S: OpcodeVecI64x2ExtMulHighI32x4SName,
1502 OpcodeVecI64x2ExtMulLowI32x4U: OpcodeVecI64x2ExtMulLowI32x4UName,
1503 OpcodeVecI64x2ExtMulHighI32x4U: OpcodeVecI64x2ExtMulHighI32x4UName,
1504 OpcodeVecF32x4Ceil: OpcodeVecF32x4CeilName,
1505 OpcodeVecF32x4Floor: OpcodeVecF32x4FloorName,
1506 OpcodeVecF32x4Trunc: OpcodeVecF32x4TruncName,
1507 OpcodeVecF32x4Nearest: OpcodeVecF32x4NearestName,
1508 OpcodeVecF32x4Abs: OpcodeVecF32x4AbsName,
1509 OpcodeVecF32x4Neg: OpcodeVecF32x4NegName,
1510 OpcodeVecF32x4Sqrt: OpcodeVecF32x4SqrtName,
1511 OpcodeVecF32x4Add: OpcodeVecF32x4AddName,
1512 OpcodeVecF32x4Sub: OpcodeVecF32x4SubName,
1513 OpcodeVecF32x4Mul: OpcodeVecF32x4MulName,
1514 OpcodeVecF32x4Div: OpcodeVecF32x4DivName,
1515 OpcodeVecF32x4Min: OpcodeVecF32x4MinName,
1516 OpcodeVecF32x4Max: OpcodeVecF32x4MaxName,
1517 OpcodeVecF32x4Pmin: OpcodeVecF32x4PminName,
1518 OpcodeVecF32x4Pmax: OpcodeVecF32x4PmaxName,
1519 OpcodeVecF64x2Ceil: OpcodeVecF64x2CeilName,
1520 OpcodeVecF64x2Floor: OpcodeVecF64x2FloorName,
1521 OpcodeVecF64x2Trunc: OpcodeVecF64x2TruncName,
1522 OpcodeVecF64x2Nearest: OpcodeVecF64x2NearestName,
1523 OpcodeVecF64x2Abs: OpcodeVecF64x2AbsName,
1524 OpcodeVecF64x2Neg: OpcodeVecF64x2NegName,
1525 OpcodeVecF64x2Sqrt: OpcodeVecF64x2SqrtName,
1526 OpcodeVecF64x2Add: OpcodeVecF64x2AddName,
1527 OpcodeVecF64x2Sub: OpcodeVecF64x2SubName,
1528 OpcodeVecF64x2Mul: OpcodeVecF64x2MulName,
1529 OpcodeVecF64x2Div: OpcodeVecF64x2DivName,
1530 OpcodeVecF64x2Min: OpcodeVecF64x2MinName,
1531 OpcodeVecF64x2Max: OpcodeVecF64x2MaxName,
1532 OpcodeVecF64x2Pmin: OpcodeVecF64x2PminName,
1533 OpcodeVecF64x2Pmax: OpcodeVecF64x2PmaxName,
1534 OpcodeVecI32x4TruncSatF32x4S: OpcodeVecI32x4TruncSatF32x4SName,
1535 OpcodeVecI32x4TruncSatF32x4U: OpcodeVecI32x4TruncSatF32x4UName,
1536 OpcodeVecF32x4ConvertI32x4S: OpcodeVecF32x4ConvertI32x4SName,
1537 OpcodeVecF32x4ConvertI32x4U: OpcodeVecF32x4ConvertI32x4UName,
1538 OpcodeVecI32x4TruncSatF64x2SZero: OpcodeVecI32x4TruncSatF64x2SZeroName,
1539 OpcodeVecI32x4TruncSatF64x2UZero: OpcodeVecI32x4TruncSatF64x2UZeroName,
1540 OpcodeVecF64x2ConvertLowI32x4S: OpcodeVecF64x2ConvertLowI32x4SName,
1541 OpcodeVecF64x2ConvertLowI32x4U: OpcodeVecF64x2ConvertLowI32x4UName,
1542 OpcodeVecF32x4DemoteF64x2Zero: OpcodeVecF32x4DemoteF64x2ZeroName,
1543 OpcodeVecF64x2PromoteLowF32x4Zero: OpcodeVecF64x2PromoteLowF32x4ZeroName,
1544 }
1545
1546
1547 func VectorInstructionName(oc OpcodeVec) (ret string) {
1548 return vectorInstructionName[oc]
1549 }
1550
View as plain text