1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Assembly Matcher Source Fragment *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* From: WebAssembly.td *|
7|* *|
8\*===----------------------------------------------------------------------===*/
9
10
11#ifdef GET_ASSEMBLER_HEADER
12#undef GET_ASSEMBLER_HEADER
13 // This should be included into the middle of the declaration of
14 // your subclasses implementation of MCTargetAsmParser.
15 FeatureBitset ComputeAvailableFeatures(const FeatureBitset &FB) const;
16 void convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
17 const OperandVector &Operands);
18 void convertToMapAndConstraints(unsigned Kind,
19 const OperandVector &Operands) override;
20 unsigned MatchInstructionImpl(const OperandVector &Operands,
21 MCInst &Inst,
22 uint64_t &ErrorInfo,
23 FeatureBitset &MissingFeatures,
24 bool matchingInlineAsm,
25 unsigned VariantID = 0);
26 unsigned MatchInstructionImpl(const OperandVector &Operands,
27 MCInst &Inst,
28 uint64_t &ErrorInfo,
29 bool matchingInlineAsm,
30 unsigned VariantID = 0) {
31 FeatureBitset MissingFeatures;
32 return MatchInstructionImpl(Operands, Inst, ErrorInfo, MissingFeatures,
33 matchingInlineAsm, VariantID);
34 }
35
36#endif // GET_ASSEMBLER_HEADER
37
38
39#ifdef GET_OPERAND_DIAGNOSTIC_TYPES
40#undef GET_OPERAND_DIAGNOSTIC_TYPES
41
42#endif // GET_OPERAND_DIAGNOSTIC_TYPES
43
44
45#ifdef GET_REGISTER_MATCHER
46#undef GET_REGISTER_MATCHER
47
48// Bits for subtarget features that participate in instruction matching.
49enum SubtargetFeatureBits : uint8_t {
50 Feature_HasAtomicsBit = 0,
51 Feature_HasBulkMemoryBit = 1,
52 Feature_HasBulkMemoryOptBit = 2,
53 Feature_HasCallIndirectOverlongBit = 3,
54 Feature_HasExceptionHandlingBit = 4,
55 Feature_HasExtendedConstBit = 5,
56 Feature_HasFP16Bit = 6,
57 Feature_HasGCBit = 7,
58 Feature_HasMultiMemoryBit = 8,
59 Feature_HasMultivalueBit = 9,
60 Feature_HasMutableGlobalsBit = 10,
61 Feature_HasNontrappingFPToIntBit = 11,
62 Feature_NotHasNontrappingFPToIntBit = 19,
63 Feature_HasReferenceTypesBit = 12,
64 Feature_HasRelaxedAtomicsBit = 13,
65 Feature_HasRelaxedSIMDBit = 14,
66 Feature_HasSignExtBit = 16,
67 Feature_HasSIMD128Bit = 15,
68 Feature_HasTailCallBit = 17,
69 Feature_HasWideArithmeticBit = 18,
70};
71
72#endif // GET_REGISTER_MATCHER
73
74
75#ifdef GET_SUBTARGET_FEATURE_NAME
76#undef GET_SUBTARGET_FEATURE_NAME
77
78// User-level names for subtarget features that participate in
79// instruction matching.
80static const char *getSubtargetFeatureName(uint64_t Val) {
81 switch(Val) {
82 case Feature_HasAtomicsBit: return "atomics";
83 case Feature_HasBulkMemoryBit: return "bulk-memory";
84 case Feature_HasBulkMemoryOptBit: return "bulk-memory-opt";
85 case Feature_HasCallIndirectOverlongBit: return "call-indirect-overlong";
86 case Feature_HasExceptionHandlingBit: return "exception-handling";
87 case Feature_HasExtendedConstBit: return "extended-const";
88 case Feature_HasFP16Bit: return "fp16";
89 case Feature_HasGCBit: return "gc";
90 case Feature_HasMultiMemoryBit: return "multimemory";
91 case Feature_HasMultivalueBit: return "multivalue";
92 case Feature_HasMutableGlobalsBit: return "mutable-globals";
93 case Feature_HasNontrappingFPToIntBit: return "nontrapping-fptoint";
94 case Feature_NotHasNontrappingFPToIntBit: return "nontrapping-fptoint";
95 case Feature_HasReferenceTypesBit: return "reference-types";
96 case Feature_HasRelaxedAtomicsBit: return "relaxed-atomics";
97 case Feature_HasRelaxedSIMDBit: return "relaxed-simd";
98 case Feature_HasSignExtBit: return "sign-ext";
99 case Feature_HasSIMD128Bit: return "simd128";
100 case Feature_HasTailCallBit: return "tail-call";
101 case Feature_HasWideArithmeticBit: return "wide-arithmetic";
102 default: return "(unknown)";
103 }
104}
105
106#endif // GET_SUBTARGET_FEATURE_NAME
107
108
109#ifdef GET_MATCHER_IMPLEMENTATION
110#undef GET_MATCHER_IMPLEMENTATION
111
112static const uint8_t TiedAsmOperandTable[][3] = { /* empty */ {0, 0, 0} };
113
114namespace {
115enum OperatorConversionKind {
116 CVT_Done,
117 CVT_Reg,
118 CVT_Tied,
119 CVT_95_addImmOperands,
120 CVT_95_addBrListOperands,
121 CVT_imm_95_0,
122 CVT_95_addFPImmf32Operands,
123 CVT_95_addFPImmf64Operands,
124 CVT_95_addCatchListOperands,
125 CVT_NUM_CONVERTERS
126};
127
128enum InstructionConversionKind {
129 Convert__Imm1_0,
130 Convert__BrList1_0,
131 Convert__Imm1_0__Imm1_1,
132 Convert_NoOperands,
133 Convert__imm_95_0__imm_95_0,
134 Convert__imm_95_0,
135 Convert__FPImmf321_0,
136 Convert__Imm1_1__Imm1_0,
137 Convert__FPImmf641_0,
138 Convert__Imm1_0__Imm1_2__Imm1_1,
139 Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7__Imm1_8__Imm1_9__Imm1_10__Imm1_11__Imm1_12__Imm1_13__Imm1_14__Imm1_15,
140 Convert__Imm1_0__CatchList1_1,
141 Convert__FPImmf641_0__FPImmf641_1,
142 Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3,
143 Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3,
144 Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7,
145 Convert__Imm1_1__Imm1_0__Imm1_2,
146 CVT_NUM_SIGNATURES
147};
148
149} // end anonymous namespace
150
151static const uint8_t ConversionTable[CVT_NUM_SIGNATURES][33] = {
152 // Convert__Imm1_0
153 { CVT_95_addImmOperands, 1, CVT_Done },
154 // Convert__BrList1_0
155 { CVT_95_addBrListOperands, 1, CVT_Done },
156 // Convert__Imm1_0__Imm1_1
157 { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_Done },
158 // Convert_NoOperands
159 { CVT_Done },
160 // Convert__imm_95_0__imm_95_0
161 { CVT_imm_95_0, 0, CVT_imm_95_0, 0, CVT_Done },
162 // Convert__imm_95_0
163 { CVT_imm_95_0, 0, CVT_Done },
164 // Convert__FPImmf321_0
165 { CVT_95_addFPImmf32Operands, 1, CVT_Done },
166 // Convert__Imm1_1__Imm1_0
167 { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_Done },
168 // Convert__FPImmf641_0
169 { CVT_95_addFPImmf64Operands, 1, CVT_Done },
170 // Convert__Imm1_0__Imm1_2__Imm1_1
171 { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 2, CVT_Done },
172 // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7__Imm1_8__Imm1_9__Imm1_10__Imm1_11__Imm1_12__Imm1_13__Imm1_14__Imm1_15
173 { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_95_addImmOperands, 5, CVT_95_addImmOperands, 6, CVT_95_addImmOperands, 7, CVT_95_addImmOperands, 8, CVT_95_addImmOperands, 9, CVT_95_addImmOperands, 10, CVT_95_addImmOperands, 11, CVT_95_addImmOperands, 12, CVT_95_addImmOperands, 13, CVT_95_addImmOperands, 14, CVT_95_addImmOperands, 15, CVT_95_addImmOperands, 16, CVT_Done },
174 // Convert__Imm1_0__CatchList1_1
175 { CVT_95_addImmOperands, 1, CVT_95_addCatchListOperands, 2, CVT_Done },
176 // Convert__FPImmf641_0__FPImmf641_1
177 { CVT_95_addFPImmf64Operands, 1, CVT_95_addFPImmf64Operands, 2, CVT_Done },
178 // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3
179 { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done },
180 // Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3
181 { CVT_95_addFPImmf32Operands, 1, CVT_95_addFPImmf32Operands, 2, CVT_95_addFPImmf32Operands, 3, CVT_95_addFPImmf32Operands, 4, CVT_Done },
182 // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7
183 { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_95_addImmOperands, 5, CVT_95_addImmOperands, 6, CVT_95_addImmOperands, 7, CVT_95_addImmOperands, 8, CVT_Done },
184 // Convert__Imm1_1__Imm1_0__Imm1_2
185 { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 3, CVT_Done },
186};
187
188void WebAssemblyAsmParser::
189convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
190 const OperandVector &Operands) {
191 assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
192 const uint8_t *Converter = ConversionTable[Kind];
193 Inst.setOpcode(Opcode);
194 for (const uint8_t *p = Converter; *p; p += 2) {
195 unsigned OpIdx = *(p + 1);
196 switch (*p) {
197 default: llvm_unreachable("invalid conversion entry!");
198 case CVT_Reg:
199 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addRegOperands(Inst, 1);
200 break;
201 case CVT_Tied: {
202 assert(*(p + 1) < (size_t)(std::end(TiedAsmOperandTable) -
203 std::begin(TiedAsmOperandTable)) &&
204 "Tied operand not found");
205 unsigned TiedResOpnd = TiedAsmOperandTable[*(p + 1)][0];
206 if (TiedResOpnd != (uint8_t)-1)
207 Inst.addOperand(Inst.getOperand(TiedResOpnd));
208 break;
209 }
210 case CVT_95_addImmOperands:
211 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addImmOperands(Inst, 1);
212 break;
213 case CVT_95_addBrListOperands:
214 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addBrListOperands(Inst, 1);
215 break;
216 case CVT_imm_95_0:
217 Inst.addOperand(MCOperand::createImm(0));
218 break;
219 case CVT_95_addFPImmf32Operands:
220 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addFPImmf32Operands(Inst, 1);
221 break;
222 case CVT_95_addFPImmf64Operands:
223 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addFPImmf64Operands(Inst, 1);
224 break;
225 case CVT_95_addCatchListOperands:
226 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addCatchListOperands(Inst, 1);
227 break;
228 }
229 }
230}
231
232void WebAssemblyAsmParser::
233convertToMapAndConstraints(unsigned Kind,
234 const OperandVector &Operands) {
235 assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
236 unsigned NumMCOperands = 0;
237 const uint8_t *Converter = ConversionTable[Kind];
238 for (const uint8_t *p = Converter; *p; p += 2) {
239 switch (*p) {
240 default: llvm_unreachable("invalid conversion entry!");
241 case CVT_Reg:
242 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
243 Operands[*(p + 1)]->setConstraint("r");
244 ++NumMCOperands;
245 break;
246 case CVT_Tied:
247 ++NumMCOperands;
248 break;
249 case CVT_95_addImmOperands:
250 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
251 Operands[*(p + 1)]->setConstraint("m");
252 NumMCOperands += 1;
253 break;
254 case CVT_95_addBrListOperands:
255 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
256 Operands[*(p + 1)]->setConstraint("m");
257 NumMCOperands += 1;
258 break;
259 case CVT_imm_95_0:
260 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
261 Operands[*(p + 1)]->setConstraint("");
262 ++NumMCOperands;
263 break;
264 case CVT_95_addFPImmf32Operands:
265 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
266 Operands[*(p + 1)]->setConstraint("m");
267 NumMCOperands += 1;
268 break;
269 case CVT_95_addFPImmf64Operands:
270 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
271 Operands[*(p + 1)]->setConstraint("m");
272 NumMCOperands += 1;
273 break;
274 case CVT_95_addCatchListOperands:
275 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
276 Operands[*(p + 1)]->setConstraint("m");
277 NumMCOperands += 1;
278 break;
279 }
280 }
281}
282
283namespace {
284
285/// MatchClassKind - The kinds of classes which participate in
286/// instruction matching.
287enum MatchClassKind {
288 InvalidMatchClass = 0,
289 OptionalMatchClass = 1,
290 MCK_LAST_TOKEN = OptionalMatchClass,
291 MCK_EXNREF, // register class 'EXNREF'
292 MCK_EXTERNREF, // register class 'EXTERNREF'
293 MCK_F32, // register class 'F32'
294 MCK_F64, // register class 'F64'
295 MCK_FUNCREF, // register class 'FUNCREF'
296 MCK_V128, // register class 'V128'
297 MCK_I32, // register class 'I32'
298 MCK_I64, // register class 'I64'
299 MCK_LAST_REGISTER = MCK_I64,
300 MCK_RegByHwMode_wasm_ptr_rc, // register class by hwmode
301 MCK_LAST_REGCLASS_BY_HWMODE = MCK_RegByHwMode_wasm_ptr_rc,
302 MCK_BrList, // user defined class 'BrListAsmOperand'
303 MCK_CatchList, // user defined class 'CatchListAsmOperand'
304 MCK_Imm, // user defined class 'ImmAsmOperand'
305 MCK_FPImmf32, // user defined class 'anonymous_14612'
306 MCK_FPImmf64, // user defined class 'anonymous_14613'
307 NumMatchClassKinds
308};
309
310} // end anonymous namespace
311
312static unsigned getDiagKindFromRegisterClass(MatchClassKind RegisterClass) {
313 return MCTargetAsmParser::Match_InvalidOperand;
314}
315
316static MatchClassKind matchTokenString(StringRef Name) {
317 return InvalidMatchClass;
318}
319
320/// isSubclass - Compute whether \p A is a subclass of \p B.
321static bool isSubclass(MatchClassKind A, MatchClassKind B) {
322 if (A == B)
323 return true;
324
325 [[maybe_unused]] static constexpr struct {
326 uint32_t Offset;
327 uint16_t Start;
328 uint16_t Length;
329 } Table[] = {
330 {0, 0, 0},
331 {0, 0, 0},
332 {0, 0, 0},
333 {0, 0, 0},
334 {0, 0, 0},
335 {0, 0, 0},
336 {0, 0, 0},
337 {0, 0, 0},
338 {0, 0, 0},
339 {0, 0, 0},
340 {0, 0, 0},
341 {0, 0, 0},
342 {0, 0, 0},
343 {0, 0, 0},
344 {0, 0, 0},
345 {0, 0, 0},
346 };
347
348 return false;
349}
350
351static unsigned validateOperandClass(MCParsedAsmOperand &GOp, MatchClassKind Kind, const MCSubtargetInfo &STI) {
352 WebAssemblyOperand &Operand = (WebAssemblyOperand &)GOp;
353 if (Kind == InvalidMatchClass)
354 return MCTargetAsmParser::Match_InvalidOperand;
355
356 if (Operand.isToken() && Kind <= MCK_LAST_TOKEN)
357 return isSubclass(matchTokenString(Operand.getToken()), Kind) ?
358 MCTargetAsmParser::Match_Success :
359 MCTargetAsmParser::Match_InvalidOperand;
360
361 switch (Kind) {
362 default: break;
363 case MCK_BrList: {
364 DiagnosticPredicate DP(Operand.isBrList());
365 if (DP.isMatch())
366 return MCTargetAsmParser::Match_Success;
367 break;
368 }
369 case MCK_CatchList: {
370 DiagnosticPredicate DP(Operand.isCatchList());
371 if (DP.isMatch())
372 return MCTargetAsmParser::Match_Success;
373 break;
374 }
375 case MCK_Imm: {
376 DiagnosticPredicate DP(Operand.isImm());
377 if (DP.isMatch())
378 return MCTargetAsmParser::Match_Success;
379 break;
380 }
381 case MCK_FPImmf32: {
382 DiagnosticPredicate DP(Operand.isFPImm());
383 if (DP.isMatch())
384 return MCTargetAsmParser::Match_Success;
385 break;
386 }
387 case MCK_FPImmf64: {
388 DiagnosticPredicate DP(Operand.isFPImm());
389 if (DP.isMatch())
390 return MCTargetAsmParser::Match_Success;
391 break;
392 }
393 } // end switch (Kind)
394
395 if (Operand.isReg() && Kind > MCK_LAST_REGISTER && Kind <= MCK_LAST_REGCLASS_BY_HWMODE) {
396 static constexpr MatchClassKind RegClassByHwModeMatchTable[2][1] = {
397 { // DefaultMode
398 MCK_I32, // wasm_ptr_rc
399 },
400 { // WASM64
401 MCK_I64, // wasm_ptr_rc
402 },
403 };
404
405 static_assert(MCK_LAST_REGCLASS_BY_HWMODE - MCK_LAST_REGISTER == 1);
406 const unsigned HwMode = STI.getHwMode(MCSubtargetInfo::HwMode_RegInfo);
407Kind = RegClassByHwModeMatchTable[HwMode][Kind - (MCK_LAST_REGISTER + 1)];
408 }
409
410 if (Operand.isReg()) {
411 static constexpr uint16_t Table[WebAssembly::NUM_TARGET_REGS] = {
412 InvalidMatchClass,
413 InvalidMatchClass,
414 InvalidMatchClass,
415 MCK_EXNREF,
416 MCK_EXTERNREF,
417 MCK_I32,
418 MCK_I64,
419 MCK_FUNCREF,
420 MCK_I32,
421 MCK_I64,
422 MCK_F32,
423 MCK_F64,
424 MCK_I32,
425 MCK_I64,
426 MCK_V128,
427 };
428
429 MCRegister Reg = Operand.getReg();
430 MatchClassKind OpKind = Reg.isPhysical() ? (MatchClassKind)Table[Reg.id()] : InvalidMatchClass;
431 return isSubclass(OpKind, Kind) ? (unsigned)MCTargetAsmParser::Match_Success :
432 getDiagKindFromRegisterClass(Kind);
433 }
434
435 if (Kind > MCK_LAST_TOKEN && Kind <= MCK_LAST_REGISTER)
436 return getDiagKindFromRegisterClass(Kind);
437
438 return MCTargetAsmParser::Match_InvalidOperand;
439}
440
441#ifndef NDEBUG
442const char *getMatchClassName(MatchClassKind Kind) {
443 switch (Kind) {
444 case InvalidMatchClass: return "InvalidMatchClass";
445 case OptionalMatchClass: return "OptionalMatchClass";
446 case MCK_EXNREF: return "MCK_EXNREF";
447 case MCK_EXTERNREF: return "MCK_EXTERNREF";
448 case MCK_F32: return "MCK_F32";
449 case MCK_F64: return "MCK_F64";
450 case MCK_FUNCREF: return "MCK_FUNCREF";
451 case MCK_V128: return "MCK_V128";
452 case MCK_I32: return "MCK_I32";
453 case MCK_I64: return "MCK_I64";
454 case MCK_RegByHwMode_wasm_ptr_rc: return "MCK_RegByHwMode_wasm_ptr_rc";
455 case MCK_BrList: return "MCK_BrList";
456 case MCK_CatchList: return "MCK_CatchList";
457 case MCK_Imm: return "MCK_Imm";
458 case MCK_FPImmf32: return "MCK_FPImmf32";
459 case MCK_FPImmf64: return "MCK_FPImmf64";
460 case NumMatchClassKinds: return "NumMatchClassKinds";
461 }
462 llvm_unreachable("unhandled MatchClassKind!");
463}
464
465#endif // NDEBUG
466FeatureBitset WebAssemblyAsmParser::
467ComputeAvailableFeatures(const FeatureBitset &FB) const {
468 FeatureBitset Features;
469 if (FB[WebAssembly::FeatureAtomics])
470 Features.set(Feature_HasAtomicsBit);
471 if (FB[WebAssembly::FeatureBulkMemory])
472 Features.set(Feature_HasBulkMemoryBit);
473 if (FB[WebAssembly::FeatureBulkMemoryOpt])
474 Features.set(Feature_HasBulkMemoryOptBit);
475 if (FB[WebAssembly::FeatureCallIndirectOverlong])
476 Features.set(Feature_HasCallIndirectOverlongBit);
477 if (FB[WebAssembly::FeatureExceptionHandling])
478 Features.set(Feature_HasExceptionHandlingBit);
479 if (FB[WebAssembly::FeatureExtendedConst])
480 Features.set(Feature_HasExtendedConstBit);
481 if (FB[WebAssembly::FeatureFP16])
482 Features.set(Feature_HasFP16Bit);
483 if (FB[WebAssembly::FeatureGC])
484 Features.set(Feature_HasGCBit);
485 if (FB[WebAssembly::FeatureMultiMemory])
486 Features.set(Feature_HasMultiMemoryBit);
487 if (FB[WebAssembly::FeatureMultivalue])
488 Features.set(Feature_HasMultivalueBit);
489 if (FB[WebAssembly::FeatureMutableGlobals])
490 Features.set(Feature_HasMutableGlobalsBit);
491 if (FB[WebAssembly::FeatureNontrappingFPToInt])
492 Features.set(Feature_HasNontrappingFPToIntBit);
493 if (!FB[WebAssembly::FeatureNontrappingFPToInt])
494 Features.set(Feature_NotHasNontrappingFPToIntBit);
495 if (FB[WebAssembly::FeatureReferenceTypes])
496 Features.set(Feature_HasReferenceTypesBit);
497 if (FB[WebAssembly::FeatureRelaxedAtomics])
498 Features.set(Feature_HasRelaxedAtomicsBit);
499 if (FB[WebAssembly::FeatureRelaxedSIMD])
500 Features.set(Feature_HasRelaxedSIMDBit);
501 if (FB[WebAssembly::FeatureSignExt])
502 Features.set(Feature_HasSignExtBit);
503 if (FB[WebAssembly::FeatureSIMD128] || FB[WebAssembly::FeatureRelaxedSIMD])
504 Features.set(Feature_HasSIMD128Bit);
505 if (FB[WebAssembly::FeatureTailCall])
506 Features.set(Feature_HasTailCallBit);
507 if (FB[WebAssembly::FeatureWideArithmetic])
508 Features.set(Feature_HasWideArithmeticBit);
509 return Features;
510}
511
512static bool checkAsmTiedOperandConstraints(const WebAssemblyAsmParser&AsmParser,
513 unsigned Kind, const OperandVector &Operands,
514 uint64_t &ErrorInfo) {
515 assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
516 const uint8_t *Converter = ConversionTable[Kind];
517 for (const uint8_t *p = Converter; *p; p += 2) {
518 switch (*p) {
519 case CVT_Tied: {
520 unsigned OpIdx = *(p + 1);
521 assert(OpIdx < (size_t)(std::end(TiedAsmOperandTable) -
522 std::begin(TiedAsmOperandTable)) &&
523 "Tied operand not found");
524 unsigned OpndNum1 = TiedAsmOperandTable[OpIdx][1];
525 unsigned OpndNum2 = TiedAsmOperandTable[OpIdx][2];
526 if (OpndNum1 != OpndNum2) {
527 auto &SrcOp1 = Operands[OpndNum1];
528 auto &SrcOp2 = Operands[OpndNum2];
529 if (!AsmParser.areEqualRegs(*SrcOp1, *SrcOp2)) {
530 ErrorInfo = OpndNum2;
531 return false;
532 }
533 }
534 break;
535 }
536 default:
537 break;
538 }
539 }
540 return true;
541}
542
543static const char MnemonicTable[] =
544 "\014atomic.fence\005block\002br\005br_if\010br_table\004call\015call_in"
545 "direct\013call_params\014call_results\005catch\tcatch_all\010catchret\n"
546 "cleanupret\016compiler_fence\tdata.drop\010delegate\004drop\004else\003"
547 "end\tend_block\014end_function\006end_if\010end_loop\007end_try\015end_"
548 "try_table\015exnref.select\020externref.select\tf16x8.abs\tf16x8.add\nf"
549 "16x8.ceil\025f16x8.convert_i16x8_s\025f16x8.convert_i16x8_u\tf16x8.div\010"
550 "f16x8.eq\022f16x8.extract_lane\013f16x8.floor\010f16x8.ge\010f16x8.gt\010"
551 "f16x8.le\010f16x8.lt\nf16x8.madd\tf16x8.max\tf16x8.min\tf16x8.mul\010f1"
552 "6x8.ne\015f16x8.nearest\tf16x8.neg\013f16x8.nmadd\nf16x8.pmax\nf16x8.pm"
553 "in\022f16x8.replace_lane\013f16x8.splat\nf16x8.sqrt\tf16x8.sub\013f16x8"
554 ".trunc\007f32.abs\007f32.add\010f32.ceil\tf32.const\021f32.convert_i32_"
555 "s\021f32.convert_i32_u\021f32.convert_i64_s\021f32.convert_i64_u\014f32"
556 ".copysign\016f32.demote_f64\007f32.div\006f32.eq\tf32.floor\006f32.ge\006"
557 "f32.gt\006f32.le\010f32.load\014f32.load_f16\006f32.lt\007f32.max\007f3"
558 "2.min\007f32.mul\006f32.ne\013f32.nearest\007f32.neg\023f32.reinterpret"
559 "_i32\nf32.select\010f32.sqrt\tf32.store\015f32.store_f16\007f32.sub\tf3"
560 "2.trunc\tf32x4.abs\tf32x4.add\nf32x4.ceil\025f32x4.convert_i32x4_s\025f"
561 "32x4.convert_i32x4_u\027f32x4.demote_f64x2_zero\tf32x4.div\010f32x4.eq\022"
562 "f32x4.extract_lane\013f32x4.floor\010f32x4.ge\010f32x4.gt\010f32x4.le\010"
563 "f32x4.lt\tf32x4.max\tf32x4.min\tf32x4.mul\010f32x4.ne\015f32x4.nearest\t"
564 "f32x4.neg\nf32x4.pmax\nf32x4.pmin f32x4.relaxed_dot_bf16x8_add_f32\022f"
565 "32x4.relaxed_madd\021f32x4.relaxed_max\021f32x4.relaxed_min\023f32x4.re"
566 "laxed_nmadd\022f32x4.replace_lane\013f32x4.splat\nf32x4.sqrt\tf32x4.sub"
567 "\013f32x4.trunc\007f64.abs\007f64.add\010f64.ceil\tf64.const\021f64.con"
568 "vert_i32_s\021f64.convert_i32_u\021f64.convert_i64_s\021f64.convert_i64"
569 "_u\014f64.copysign\007f64.div\006f64.eq\tf64.floor\006f64.ge\006f64.gt\006"
570 "f64.le\010f64.load\006f64.lt\007f64.max\007f64.min\007f64.mul\006f64.ne"
571 "\013f64.nearest\007f64.neg\017f64.promote_f32\023f64.reinterpret_i64\nf"
572 "64.select\010f64.sqrt\tf64.store\007f64.sub\tf64.trunc\tf64x2.abs\tf64x"
573 "2.add\nf64x2.ceil\031f64x2.convert_low_i32x4_s\031f64x2.convert_low_i32"
574 "x4_u\tf64x2.div\010f64x2.eq\022f64x2.extract_lane\013f64x2.floor\010f64"
575 "x2.ge\010f64x2.gt\010f64x2.le\010f64x2.lt\tf64x2.max\tf64x2.min\tf64x2."
576 "mul\010f64x2.ne\015f64x2.nearest\tf64x2.neg\nf64x2.pmax\nf64x2.pmin\027"
577 "f64x2.promote_low_f32x4\022f64x2.relaxed_madd\021f64x2.relaxed_max\021f"
578 "64x2.relaxed_min\023f64x2.relaxed_nmadd\022f64x2.replace_lane\013f64x2."
579 "splat\nf64x2.sqrt\tf64x2.sub\013f64x2.trunc\016funcref.select\nglobal.g"
580 "et\nglobal.set\ti16x8.abs\ti16x8.add\017i16x8.add_sat_s\017i16x8.add_sa"
581 "t_u\016i16x8.all_true\014i16x8.avgr_u\015i16x8.bitmask\010i16x8.eq\035i"
582 "16x8.extadd_pairwise_i8x16_s\035i16x8.extadd_pairwise_i8x16_u\031i16x8."
583 "extend_high_i8x16_s\031i16x8.extend_high_i8x16_u\030i16x8.extend_low_i8"
584 "x16_s\030i16x8.extend_low_i8x16_u\031i16x8.extmul_high_i8x16_s\031i16x8"
585 ".extmul_high_i8x16_u\030i16x8.extmul_low_i8x16_s\030i16x8.extmul_low_i8"
586 "x16_u\024i16x8.extract_lane_s\024i16x8.extract_lane_u\ni16x8.ge_s\ni16x"
587 "8.ge_u\ni16x8.gt_s\ni16x8.gt_u\ni16x8.le_s\ni16x8.le_u\017i16x8.load8x8"
588 "_s\017i16x8.load8x8_u\ni16x8.lt_s\ni16x8.lt_u\013i16x8.max_s\013i16x8.m"
589 "ax_u\013i16x8.min_s\013i16x8.min_u\ti16x8.mul\024i16x8.narrow_i32x4_s\024"
590 "i16x8.narrow_i32x4_u\010i16x8.ne\ti16x8.neg\023i16x8.q15mulr_sat_s\037i"
591 "16x8.relaxed_dot_i8x16_i7x16_s\030i16x8.relaxed_laneselect\027i16x8.rel"
592 "axed_q15mulr_s\022i16x8.replace_lane\ti16x8.shl\013i16x8.shr_s\013i16x8"
593 ".shr_u\013i16x8.splat\ti16x8.sub\017i16x8.sub_sat_s\017i16x8.sub_sat_u\027"
594 "i16x8.trunc_sat_f16x8_s\027i16x8.trunc_sat_f16x8_u\007i32.add\007i32.an"
595 "d\017i32.atomic.load\023i32.atomic.load16_u\022i32.atomic.load8_u\022i3"
596 "2.atomic.rmw.add\022i32.atomic.rmw.and\026i32.atomic.rmw.cmpxchg\021i32"
597 ".atomic.rmw.or\022i32.atomic.rmw.sub\023i32.atomic.rmw.xchg\022i32.atom"
598 "ic.rmw.xor\026i32.atomic.rmw16.add_u\026i32.atomic.rmw16.and_u\032i32.a"
599 "tomic.rmw16.cmpxchg_u\025i32.atomic.rmw16.or_u\026i32.atomic.rmw16.sub_"
600 "u\027i32.atomic.rmw16.xchg_u\026i32.atomic.rmw16.xor_u\025i32.atomic.rm"
601 "w8.add_u\025i32.atomic.rmw8.and_u\031i32.atomic.rmw8.cmpxchg_u\024i32.a"
602 "tomic.rmw8.or_u\025i32.atomic.rmw8.sub_u\026i32.atomic.rmw8.xchg_u\025i"
603 "32.atomic.rmw8.xor_u\020i32.atomic.store\022i32.atomic.store16\021i32.a"
604 "tomic.store8\007i32.clz\ti32.const\007i32.ctz\ti32.div_s\ti32.div_u\006"
605 "i32.eq\007i32.eqz\016i32.extend16_s\015i32.extend8_s\010i32.ge_s\010i32"
606 ".ge_u\010i32.gt_s\010i32.gt_u\010i32.le_s\010i32.le_u\010i32.load\014i3"
607 "2.load16_s\014i32.load16_u\013i32.load8_s\013i32.load8_u\010i32.lt_s\010"
608 "i32.lt_u\007i32.mul\006i32.ne\006i32.or\ni32.popcnt\023i32.reinterpret_"
609 "f32\ti32.rem_s\ti32.rem_u\010i32.rotl\010i32.rotr\ni32.select\007i32.sh"
610 "l\ti32.shr_s\ti32.shr_u\ti32.store\013i32.store16\ni32.store8\007i32.su"
611 "b\017i32.trunc_f32_s\017i32.trunc_f32_u\017i32.trunc_f64_s\017i32.trunc"
612 "_f64_u\023i32.trunc_sat_f32_s\023i32.trunc_sat_f32_u\023i32.trunc_sat_f"
613 "64_s\023i32.trunc_sat_f64_u\014i32.wrap_i64\007i32.xor\ti32x4.abs\ti32x"
614 "4.add\016i32x4.all_true\015i32x4.bitmask\021i32x4.dot_i16x8_s\010i32x4."
615 "eq\035i32x4.extadd_pairwise_i16x8_s\035i32x4.extadd_pairwise_i16x8_u\031"
616 "i32x4.extend_high_i16x8_s\031i32x4.extend_high_i16x8_u\030i32x4.extend_"
617 "low_i16x8_s\030i32x4.extend_low_i16x8_u\031i32x4.extmul_high_i16x8_s\031"
618 "i32x4.extmul_high_i16x8_u\030i32x4.extmul_low_i16x8_s\030i32x4.extmul_l"
619 "ow_i16x8_u\022i32x4.extract_lane\ni32x4.ge_s\ni32x4.ge_u\ni32x4.gt_s\ni"
620 "32x4.gt_u\ni32x4.le_s\ni32x4.le_u\020i32x4.load16x4_s\020i32x4.load16x4"
621 "_u\ni32x4.lt_s\ni32x4.lt_u\013i32x4.max_s\013i32x4.max_u\013i32x4.min_s"
622 "\013i32x4.min_u\ti32x4.mul\010i32x4.ne\ti32x4.neg#i32x4.relaxed_dot_i8x"
623 "16_i7x16_add_s\030i32x4.relaxed_laneselect\033i32x4.relaxed_trunc_f32x4"
624 "_s\033i32x4.relaxed_trunc_f32x4_u i32x4.relaxed_trunc_f64x2_s_zero i32x"
625 "4.relaxed_trunc_f64x2_u_zero\022i32x4.replace_lane\ti32x4.shl\013i32x4."
626 "shr_s\013i32x4.shr_u\013i32x4.splat\ti32x4.sub\027i32x4.trunc_sat_f32x4"
627 "_s\027i32x4.trunc_sat_f32x4_u\034i32x4.trunc_sat_f64x2_s_zero\034i32x4."
628 "trunc_sat_f64x2_u_zero\007i64.add\ni64.add128\007i64.and\017i64.atomic."
629 "load\023i64.atomic.load16_u\023i64.atomic.load32_u\022i64.atomic.load8_"
630 "u\022i64.atomic.rmw.add\022i64.atomic.rmw.and\026i64.atomic.rmw.cmpxchg"
631 "\021i64.atomic.rmw.or\022i64.atomic.rmw.sub\023i64.atomic.rmw.xchg\022i"
632 "64.atomic.rmw.xor\026i64.atomic.rmw16.add_u\026i64.atomic.rmw16.and_u\032"
633 "i64.atomic.rmw16.cmpxchg_u\025i64.atomic.rmw16.or_u\026i64.atomic.rmw16"
634 ".sub_u\027i64.atomic.rmw16.xchg_u\026i64.atomic.rmw16.xor_u\026i64.atom"
635 "ic.rmw32.add_u\026i64.atomic.rmw32.and_u\032i64.atomic.rmw32.cmpxchg_u\025"
636 "i64.atomic.rmw32.or_u\026i64.atomic.rmw32.sub_u\027i64.atomic.rmw32.xch"
637 "g_u\026i64.atomic.rmw32.xor_u\025i64.atomic.rmw8.add_u\025i64.atomic.rm"
638 "w8.and_u\031i64.atomic.rmw8.cmpxchg_u\024i64.atomic.rmw8.or_u\025i64.at"
639 "omic.rmw8.sub_u\026i64.atomic.rmw8.xchg_u\025i64.atomic.rmw8.xor_u\020i"
640 "64.atomic.store\022i64.atomic.store16\022i64.atomic.store32\021i64.atom"
641 "ic.store8\007i64.clz\ti64.const\007i64.ctz\ti64.div_s\ti64.div_u\006i64"
642 ".eq\007i64.eqz\016i64.extend16_s\016i64.extend32_s\015i64.extend8_s\020"
643 "i64.extend_i32_s\020i64.extend_i32_u\010i64.ge_s\010i64.ge_u\010i64.gt_"
644 "s\010i64.gt_u\010i64.le_s\010i64.le_u\010i64.load\014i64.load16_s\014i6"
645 "4.load16_u\014i64.load32_s\014i64.load32_u\013i64.load8_s\013i64.load8_"
646 "u\010i64.lt_s\010i64.lt_u\007i64.mul\016i64.mul_wide_s\016i64.mul_wide_"
647 "u\006i64.ne\006i64.or\ni64.popcnt\023i64.reinterpret_f64\ti64.rem_s\ti6"
648 "4.rem_u\010i64.rotl\010i64.rotr\ni64.select\007i64.shl\ti64.shr_s\ti64."
649 "shr_u\ti64.store\013i64.store16\013i64.store32\ni64.store8\007i64.sub\n"
650 "i64.sub128\017i64.trunc_f32_s\017i64.trunc_f32_u\017i64.trunc_f64_s\017"
651 "i64.trunc_f64_u\023i64.trunc_sat_f32_s\023i64.trunc_sat_f32_u\023i64.tr"
652 "unc_sat_f64_s\023i64.trunc_sat_f64_u\007i64.xor\ti64x2.abs\ti64x2.add\016"
653 "i64x2.all_true\015i64x2.bitmask\010i64x2.eq\031i64x2.extend_high_i32x4_"
654 "s\031i64x2.extend_high_i32x4_u\030i64x2.extend_low_i32x4_s\030i64x2.ext"
655 "end_low_i32x4_u\031i64x2.extmul_high_i32x4_s\031i64x2.extmul_high_i32x4"
656 "_u\030i64x2.extmul_low_i32x4_s\030i64x2.extmul_low_i32x4_u\022i64x2.ext"
657 "ract_lane\ni64x2.ge_s\ni64x2.gt_s\ni64x2.le_s\020i64x2.load32x2_s\020i6"
658 "4x2.load32x2_u\ni64x2.lt_s\ti64x2.mul\010i64x2.ne\ti64x2.neg\030i64x2.r"
659 "elaxed_laneselect\022i64x2.replace_lane\ti64x2.shl\013i64x2.shr_s\013i6"
660 "4x2.shr_u\013i64x2.splat\ti64x2.sub\ti8x16.abs\ti8x16.add\017i8x16.add_"
661 "sat_s\017i8x16.add_sat_u\016i8x16.all_true\014i8x16.avgr_u\015i8x16.bit"
662 "mask\010i8x16.eq\024i8x16.extract_lane_s\024i8x16.extract_lane_u\ni8x16"
663 ".ge_s\ni8x16.ge_u\ni8x16.gt_s\ni8x16.gt_u\ni8x16.le_s\ni8x16.le_u\ni8x1"
664 "6.lt_s\ni8x16.lt_u\013i8x16.max_s\013i8x16.max_u\013i8x16.min_s\013i8x1"
665 "6.min_u\024i8x16.narrow_i16x8_s\024i8x16.narrow_i16x8_u\010i8x16.ne\ti8"
666 "x16.neg\014i8x16.popcnt\030i8x16.relaxed_laneselect\025i8x16.relaxed_sw"
667 "izzle\022i8x16.replace_lane\ti8x16.shl\013i8x16.shr_s\013i8x16.shr_u\015"
668 "i8x16.shuffle\013i8x16.splat\ti8x16.sub\017i8x16.sub_sat_s\017i8x16.sub"
669 "_sat_u\015i8x16.swizzle\002if\tlocal.get\tlocal.set\tlocal.tee\004loop\024"
670 "memory.atomic.notify\024memory.atomic.wait32\024memory.atomic.wait64\013"
671 "memory.copy\013memory.fill\013memory.grow\013memory.init\013memory.size"
672 "\003nop\010ref.func\013ref.is_null\014ref.null_exn\017ref.null_extern\015"
673 "ref.null_func\010ref.test\007rethrow\006return\013return_call\024return"
674 "_call_indirect\023return_call_results\ntable.copy\ntable.fill\ttable.ge"
675 "t\ntable.grow\ttable.set\ntable.size\005throw\tthrow_ref\003try\ttry_ta"
676 "ble\013unreachable\010v128.and\013v128.andnot\015v128.any_true\016v128."
677 "bitselect\nv128.const\tv128.load\020v128.load16_lane\021v128.load16_spl"
678 "at\020v128.load32_lane\021v128.load32_splat\020v128.load32_zero\020v128"
679 ".load64_lane\021v128.load64_splat\020v128.load64_zero\017v128.load8_lan"
680 "e\020v128.load8_splat\010v128.not\007v128.or\013v128.select\nv128.store"
681 "\021v128.store16_lane\021v128.store32_lane\021v128.store64_lane\020v128"
682 ".store8_lane\010v128.xor";
683
684// Feature bitsets.
685enum : uint8_t {
686 AMFBS_None,
687 AMFBS_HasAtomics,
688 AMFBS_HasBulkMemoryOpt,
689 AMFBS_HasExceptionHandling,
690 AMFBS_HasFP16,
691 AMFBS_HasGC,
692 AMFBS_HasNontrappingFPToInt,
693 AMFBS_HasReferenceTypes,
694 AMFBS_HasRelaxedSIMD,
695 AMFBS_HasSIMD128,
696 AMFBS_HasSignExt,
697 AMFBS_HasTailCall,
698 AMFBS_HasWideArithmetic,
699 AMFBS_HasReferenceTypes_HasExceptionHandling,
700 AMFBS_HasSIMD128_HasFP16,
701 AMFBS_HasSIMD128_HasRelaxedSIMD,
702};
703
704static constexpr FeatureBitset FeatureBitsets[] = {
705 {}, // AMFBS_None
706 {Feature_HasAtomicsBit, },
707 {Feature_HasBulkMemoryOptBit, },
708 {Feature_HasExceptionHandlingBit, },
709 {Feature_HasFP16Bit, },
710 {Feature_HasGCBit, },
711 {Feature_HasNontrappingFPToIntBit, },
712 {Feature_HasReferenceTypesBit, },
713 {Feature_HasRelaxedSIMDBit, },
714 {Feature_HasSIMD128Bit, },
715 {Feature_HasSignExtBit, },
716 {Feature_HasTailCallBit, },
717 {Feature_HasWideArithmeticBit, },
718 {Feature_HasReferenceTypesBit, Feature_HasExceptionHandlingBit, },
719 {Feature_HasSIMD128Bit, Feature_HasFP16Bit, },
720 {Feature_HasSIMD128Bit, Feature_HasRelaxedSIMDBit, },
721};
722
723namespace {
724 struct MatchEntry {
725 uint16_t Mnemonic;
726 uint32_t Opcode;
727 uint8_t ConvertFn;
728 uint8_t RequiredFeaturesIdx;
729 uint8_t Classes[16];
730 StringRef getMnemonic() const {
731 return StringRef(MnemonicTable + Mnemonic + 1,
732 MnemonicTable[Mnemonic]);
733 }
734 };
735
736 // Predicate for searching for an opcode.
737 struct LessOpcode {
738 bool operator()(const MatchEntry &LHS, StringRef RHS) {
739 return LHS.getMnemonic() < RHS;
740 }
741 bool operator()(StringRef LHS, const MatchEntry &RHS) {
742 return LHS < RHS.getMnemonic();
743 }
744 bool operator()(const MatchEntry &LHS, const MatchEntry &RHS) {
745 return LHS.getMnemonic() < RHS.getMnemonic();
746 }
747 };
748} // end anonymous namespace
749
750static const MatchEntry MatchTable0[] = {
751 { 0 /* atomic.fence */, WebAssembly::ATOMIC_FENCE_S, Convert__Imm1_0, AMFBS_HasAtomics, { MCK_Imm }, },
752 { 13 /* block */, WebAssembly::BLOCK_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
753 { 19 /* br */, WebAssembly::BR_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
754 { 22 /* br_if */, WebAssembly::BR_IF_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
755 { 28 /* br_table */, WebAssembly::BR_TABLE_I32_S, Convert__BrList1_0, AMFBS_None, { MCK_BrList }, },
756 { 28 /* br_table */, WebAssembly::BR_TABLE_I64_S, Convert__BrList1_0, AMFBS_None, { MCK_BrList }, },
757 { 37 /* call */, WebAssembly::CALL_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
758 { 42 /* call_indirect */, WebAssembly::CALL_INDIRECT_S, Convert__Imm1_0__Imm1_1, AMFBS_None, { MCK_Imm, MCK_Imm }, },
759 { 56 /* call_params */, WebAssembly::CALL_PARAMS_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
760 { 68 /* call_results */, WebAssembly::CALL_RESULTS_S, Convert_NoOperands, AMFBS_None, { }, },
761 { 81 /* catch */, WebAssembly::CATCH_LEGACY_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
762 { 87 /* catch_all */, WebAssembly::CATCH_ALL_LEGACY_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, },
763 { 97 /* catchret */, WebAssembly::CATCHRET_S, Convert__imm_95_0__imm_95_0, AMFBS_HasExceptionHandling, { }, },
764 { 106 /* cleanupret */, WebAssembly::CLEANUPRET_S, Convert__imm_95_0, AMFBS_HasExceptionHandling, { }, },
765 { 117 /* compiler_fence */, WebAssembly::COMPILER_FENCE_S, Convert_NoOperands, AMFBS_HasAtomics, { }, },
766 { 132 /* data.drop */, WebAssembly::DATA_DROP_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, },
767 { 142 /* delegate */, WebAssembly::DELEGATE_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
768 { 151 /* drop */, WebAssembly::DROP_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes_HasExceptionHandling, { }, },
769 { 151 /* drop */, WebAssembly::DROP_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
770 { 151 /* drop */, WebAssembly::DROP_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
771 { 151 /* drop */, WebAssembly::DROP_V128_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
772 { 151 /* drop */, WebAssembly::DROP_F32_S, Convert_NoOperands, AMFBS_None, { }, },
773 { 151 /* drop */, WebAssembly::DROP_F64_S, Convert_NoOperands, AMFBS_None, { }, },
774 { 151 /* drop */, WebAssembly::DROP_I32_S, Convert_NoOperands, AMFBS_None, { }, },
775 { 151 /* drop */, WebAssembly::DROP_I64_S, Convert_NoOperands, AMFBS_None, { }, },
776 { 156 /* else */, WebAssembly::ELSE_S, Convert_NoOperands, AMFBS_None, { }, },
777 { 161 /* end */, WebAssembly::END_S, Convert_NoOperands, AMFBS_None, { }, },
778 { 165 /* end_block */, WebAssembly::END_BLOCK_S, Convert_NoOperands, AMFBS_None, { }, },
779 { 175 /* end_function */, WebAssembly::END_FUNCTION_S, Convert_NoOperands, AMFBS_None, { }, },
780 { 188 /* end_if */, WebAssembly::END_IF_S, Convert_NoOperands, AMFBS_None, { }, },
781 { 195 /* end_loop */, WebAssembly::END_LOOP_S, Convert_NoOperands, AMFBS_None, { }, },
782 { 204 /* end_try */, WebAssembly::END_TRY_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, },
783 { 212 /* end_try_table */, WebAssembly::END_TRY_TABLE_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, },
784 { 226 /* exnref.select */, WebAssembly::SELECT_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
785 { 240 /* externref.select */, WebAssembly::SELECT_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
786 { 257 /* f16x8.abs */, WebAssembly::ABS_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
787 { 267 /* f16x8.add */, WebAssembly::ADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
788 { 277 /* f16x8.ceil */, WebAssembly::CEIL_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
789 { 288 /* f16x8.convert_i16x8_s */, WebAssembly::sint_to_fp_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
790 { 310 /* f16x8.convert_i16x8_u */, WebAssembly::uint_to_fp_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
791 { 332 /* f16x8.div */, WebAssembly::DIV_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
792 { 342 /* f16x8.eq */, WebAssembly::EQ_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
793 { 351 /* f16x8.extract_lane */, WebAssembly::EXTRACT_LANE_F16x8_S, Convert__Imm1_0, AMFBS_HasFP16, { MCK_Imm }, },
794 { 370 /* f16x8.floor */, WebAssembly::FLOOR_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
795 { 382 /* f16x8.ge */, WebAssembly::GE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
796 { 391 /* f16x8.gt */, WebAssembly::GT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
797 { 400 /* f16x8.le */, WebAssembly::LE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
798 { 409 /* f16x8.lt */, WebAssembly::LT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
799 { 418 /* f16x8.madd */, WebAssembly::MADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
800 { 429 /* f16x8.max */, WebAssembly::MAX_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
801 { 439 /* f16x8.min */, WebAssembly::MIN_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
802 { 449 /* f16x8.mul */, WebAssembly::MUL_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
803 { 459 /* f16x8.ne */, WebAssembly::NE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
804 { 468 /* f16x8.nearest */, WebAssembly::NEAREST_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
805 { 482 /* f16x8.neg */, WebAssembly::NEG_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
806 { 492 /* f16x8.nmadd */, WebAssembly::NMADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
807 { 504 /* f16x8.pmax */, WebAssembly::PMAX_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
808 { 515 /* f16x8.pmin */, WebAssembly::PMIN_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
809 { 526 /* f16x8.replace_lane */, WebAssembly::REPLACE_LANE_F16x8_S, Convert__Imm1_0, AMFBS_HasFP16, { MCK_Imm }, },
810 { 545 /* f16x8.splat */, WebAssembly::SPLAT_F16x8_S, Convert_NoOperands, AMFBS_HasFP16, { }, },
811 { 557 /* f16x8.sqrt */, WebAssembly::SQRT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
812 { 568 /* f16x8.sub */, WebAssembly::SUB_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
813 { 578 /* f16x8.trunc */, WebAssembly::TRUNC_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
814 { 590 /* f32.abs */, WebAssembly::ABS_F32_S, Convert_NoOperands, AMFBS_None, { }, },
815 { 598 /* f32.add */, WebAssembly::ADD_F32_S, Convert_NoOperands, AMFBS_None, { }, },
816 { 606 /* f32.ceil */, WebAssembly::CEIL_F32_S, Convert_NoOperands, AMFBS_None, { }, },
817 { 615 /* f32.const */, WebAssembly::CONST_F32_S, Convert__FPImmf321_0, AMFBS_None, { MCK_FPImmf32 }, },
818 { 625 /* f32.convert_i32_s */, WebAssembly::F32_CONVERT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
819 { 643 /* f32.convert_i32_u */, WebAssembly::F32_CONVERT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
820 { 661 /* f32.convert_i64_s */, WebAssembly::F32_CONVERT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
821 { 679 /* f32.convert_i64_u */, WebAssembly::F32_CONVERT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
822 { 697 /* f32.copysign */, WebAssembly::COPYSIGN_F32_S, Convert_NoOperands, AMFBS_None, { }, },
823 { 710 /* f32.demote_f64 */, WebAssembly::F32_DEMOTE_F64_S, Convert_NoOperands, AMFBS_None, { }, },
824 { 725 /* f32.div */, WebAssembly::DIV_F32_S, Convert_NoOperands, AMFBS_None, { }, },
825 { 733 /* f32.eq */, WebAssembly::EQ_F32_S, Convert_NoOperands, AMFBS_None, { }, },
826 { 740 /* f32.floor */, WebAssembly::FLOOR_F32_S, Convert_NoOperands, AMFBS_None, { }, },
827 { 750 /* f32.ge */, WebAssembly::GE_F32_S, Convert_NoOperands, AMFBS_None, { }, },
828 { 757 /* f32.gt */, WebAssembly::GT_F32_S, Convert_NoOperands, AMFBS_None, { }, },
829 { 764 /* f32.le */, WebAssembly::LE_F32_S, Convert_NoOperands, AMFBS_None, { }, },
830 { 771 /* f32.load */, WebAssembly::LOAD_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
831 { 771 /* f32.load */, WebAssembly::LOAD_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
832 { 780 /* f32.load_f16 */, WebAssembly::LOAD_F16_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, },
833 { 780 /* f32.load_f16 */, WebAssembly::LOAD_F16_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, },
834 { 793 /* f32.lt */, WebAssembly::LT_F32_S, Convert_NoOperands, AMFBS_None, { }, },
835 { 800 /* f32.max */, WebAssembly::MAX_F32_S, Convert_NoOperands, AMFBS_None, { }, },
836 { 808 /* f32.min */, WebAssembly::MIN_F32_S, Convert_NoOperands, AMFBS_None, { }, },
837 { 816 /* f32.mul */, WebAssembly::MUL_F32_S, Convert_NoOperands, AMFBS_None, { }, },
838 { 824 /* f32.ne */, WebAssembly::NE_F32_S, Convert_NoOperands, AMFBS_None, { }, },
839 { 831 /* f32.nearest */, WebAssembly::NEAREST_F32_S, Convert_NoOperands, AMFBS_None, { }, },
840 { 843 /* f32.neg */, WebAssembly::NEG_F32_S, Convert_NoOperands, AMFBS_None, { }, },
841 { 851 /* f32.reinterpret_i32 */, WebAssembly::F32_REINTERPRET_I32_S, Convert_NoOperands, AMFBS_None, { }, },
842 { 871 /* f32.select */, WebAssembly::SELECT_F32_S, Convert_NoOperands, AMFBS_None, { }, },
843 { 882 /* f32.sqrt */, WebAssembly::SQRT_F32_S, Convert_NoOperands, AMFBS_None, { }, },
844 { 891 /* f32.store */, WebAssembly::STORE_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
845 { 891 /* f32.store */, WebAssembly::STORE_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
846 { 901 /* f32.store_f16 */, WebAssembly::STORE_F16_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, },
847 { 901 /* f32.store_f16 */, WebAssembly::STORE_F16_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, },
848 { 915 /* f32.sub */, WebAssembly::SUB_F32_S, Convert_NoOperands, AMFBS_None, { }, },
849 { 923 /* f32.trunc */, WebAssembly::TRUNC_F32_S, Convert_NoOperands, AMFBS_None, { }, },
850 { 933 /* f32x4.abs */, WebAssembly::ABS_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
851 { 943 /* f32x4.add */, WebAssembly::ADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
852 { 953 /* f32x4.ceil */, WebAssembly::CEIL_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
853 { 964 /* f32x4.convert_i32x4_s */, WebAssembly::sint_to_fp_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
854 { 986 /* f32x4.convert_i32x4_u */, WebAssembly::uint_to_fp_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
855 { 1008 /* f32x4.demote_f64x2_zero */, WebAssembly::demote_zero_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
856 { 1032 /* f32x4.div */, WebAssembly::DIV_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
857 { 1042 /* f32x4.eq */, WebAssembly::EQ_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
858 { 1051 /* f32x4.extract_lane */, WebAssembly::EXTRACT_LANE_F32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
859 { 1070 /* f32x4.floor */, WebAssembly::FLOOR_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
860 { 1082 /* f32x4.ge */, WebAssembly::GE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
861 { 1091 /* f32x4.gt */, WebAssembly::GT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
862 { 1100 /* f32x4.le */, WebAssembly::LE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
863 { 1109 /* f32x4.lt */, WebAssembly::LT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
864 { 1118 /* f32x4.max */, WebAssembly::MAX_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
865 { 1128 /* f32x4.min */, WebAssembly::MIN_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
866 { 1138 /* f32x4.mul */, WebAssembly::MUL_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
867 { 1148 /* f32x4.ne */, WebAssembly::NE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
868 { 1157 /* f32x4.nearest */, WebAssembly::NEAREST_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
869 { 1171 /* f32x4.neg */, WebAssembly::NEG_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
870 { 1181 /* f32x4.pmax */, WebAssembly::PMAX_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
871 { 1192 /* f32x4.pmin */, WebAssembly::PMIN_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
872 { 1203 /* f32x4.relaxed_dot_bf16x8_add_f32 */, WebAssembly::RELAXED_DOT_BFLOAT_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
873 { 1236 /* f32x4.relaxed_madd */, WebAssembly::MADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, },
874 { 1255 /* f32x4.relaxed_max */, WebAssembly::SIMD_RELAXED_FMAX_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
875 { 1273 /* f32x4.relaxed_min */, WebAssembly::SIMD_RELAXED_FMIN_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
876 { 1291 /* f32x4.relaxed_nmadd */, WebAssembly::NMADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, },
877 { 1311 /* f32x4.replace_lane */, WebAssembly::REPLACE_LANE_F32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
878 { 1330 /* f32x4.splat */, WebAssembly::SPLAT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
879 { 1342 /* f32x4.sqrt */, WebAssembly::SQRT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
880 { 1353 /* f32x4.sub */, WebAssembly::SUB_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
881 { 1363 /* f32x4.trunc */, WebAssembly::TRUNC_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
882 { 1375 /* f64.abs */, WebAssembly::ABS_F64_S, Convert_NoOperands, AMFBS_None, { }, },
883 { 1383 /* f64.add */, WebAssembly::ADD_F64_S, Convert_NoOperands, AMFBS_None, { }, },
884 { 1391 /* f64.ceil */, WebAssembly::CEIL_F64_S, Convert_NoOperands, AMFBS_None, { }, },
885 { 1400 /* f64.const */, WebAssembly::CONST_F64_S, Convert__FPImmf641_0, AMFBS_None, { MCK_FPImmf64 }, },
886 { 1410 /* f64.convert_i32_s */, WebAssembly::F64_CONVERT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
887 { 1428 /* f64.convert_i32_u */, WebAssembly::F64_CONVERT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
888 { 1446 /* f64.convert_i64_s */, WebAssembly::F64_CONVERT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
889 { 1464 /* f64.convert_i64_u */, WebAssembly::F64_CONVERT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
890 { 1482 /* f64.copysign */, WebAssembly::COPYSIGN_F64_S, Convert_NoOperands, AMFBS_None, { }, },
891 { 1495 /* f64.div */, WebAssembly::DIV_F64_S, Convert_NoOperands, AMFBS_None, { }, },
892 { 1503 /* f64.eq */, WebAssembly::EQ_F64_S, Convert_NoOperands, AMFBS_None, { }, },
893 { 1510 /* f64.floor */, WebAssembly::FLOOR_F64_S, Convert_NoOperands, AMFBS_None, { }, },
894 { 1520 /* f64.ge */, WebAssembly::GE_F64_S, Convert_NoOperands, AMFBS_None, { }, },
895 { 1527 /* f64.gt */, WebAssembly::GT_F64_S, Convert_NoOperands, AMFBS_None, { }, },
896 { 1534 /* f64.le */, WebAssembly::LE_F64_S, Convert_NoOperands, AMFBS_None, { }, },
897 { 1541 /* f64.load */, WebAssembly::LOAD_F64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
898 { 1541 /* f64.load */, WebAssembly::LOAD_F64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
899 { 1550 /* f64.lt */, WebAssembly::LT_F64_S, Convert_NoOperands, AMFBS_None, { }, },
900 { 1557 /* f64.max */, WebAssembly::MAX_F64_S, Convert_NoOperands, AMFBS_None, { }, },
901 { 1565 /* f64.min */, WebAssembly::MIN_F64_S, Convert_NoOperands, AMFBS_None, { }, },
902 { 1573 /* f64.mul */, WebAssembly::MUL_F64_S, Convert_NoOperands, AMFBS_None, { }, },
903 { 1581 /* f64.ne */, WebAssembly::NE_F64_S, Convert_NoOperands, AMFBS_None, { }, },
904 { 1588 /* f64.nearest */, WebAssembly::NEAREST_F64_S, Convert_NoOperands, AMFBS_None, { }, },
905 { 1600 /* f64.neg */, WebAssembly::NEG_F64_S, Convert_NoOperands, AMFBS_None, { }, },
906 { 1608 /* f64.promote_f32 */, WebAssembly::F64_PROMOTE_F32_S, Convert_NoOperands, AMFBS_None, { }, },
907 { 1624 /* f64.reinterpret_i64 */, WebAssembly::F64_REINTERPRET_I64_S, Convert_NoOperands, AMFBS_None, { }, },
908 { 1644 /* f64.select */, WebAssembly::SELECT_F64_S, Convert_NoOperands, AMFBS_None, { }, },
909 { 1655 /* f64.sqrt */, WebAssembly::SQRT_F64_S, Convert_NoOperands, AMFBS_None, { }, },
910 { 1664 /* f64.store */, WebAssembly::STORE_F64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
911 { 1664 /* f64.store */, WebAssembly::STORE_F64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
912 { 1674 /* f64.sub */, WebAssembly::SUB_F64_S, Convert_NoOperands, AMFBS_None, { }, },
913 { 1682 /* f64.trunc */, WebAssembly::TRUNC_F64_S, Convert_NoOperands, AMFBS_None, { }, },
914 { 1692 /* f64x2.abs */, WebAssembly::ABS_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
915 { 1702 /* f64x2.add */, WebAssembly::ADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
916 { 1712 /* f64x2.ceil */, WebAssembly::CEIL_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
917 { 1723 /* f64x2.convert_low_i32x4_s */, WebAssembly::convert_low_s_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
918 { 1749 /* f64x2.convert_low_i32x4_u */, WebAssembly::convert_low_u_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
919 { 1775 /* f64x2.div */, WebAssembly::DIV_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
920 { 1785 /* f64x2.eq */, WebAssembly::EQ_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
921 { 1794 /* f64x2.extract_lane */, WebAssembly::EXTRACT_LANE_F64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
922 { 1813 /* f64x2.floor */, WebAssembly::FLOOR_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
923 { 1825 /* f64x2.ge */, WebAssembly::GE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
924 { 1834 /* f64x2.gt */, WebAssembly::GT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
925 { 1843 /* f64x2.le */, WebAssembly::LE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
926 { 1852 /* f64x2.lt */, WebAssembly::LT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
927 { 1861 /* f64x2.max */, WebAssembly::MAX_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
928 { 1871 /* f64x2.min */, WebAssembly::MIN_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
929 { 1881 /* f64x2.mul */, WebAssembly::MUL_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
930 { 1891 /* f64x2.ne */, WebAssembly::NE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
931 { 1900 /* f64x2.nearest */, WebAssembly::NEAREST_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
932 { 1914 /* f64x2.neg */, WebAssembly::NEG_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
933 { 1924 /* f64x2.pmax */, WebAssembly::PMAX_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
934 { 1935 /* f64x2.pmin */, WebAssembly::PMIN_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
935 { 1946 /* f64x2.promote_low_f32x4 */, WebAssembly::promote_low_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
936 { 1970 /* f64x2.relaxed_madd */, WebAssembly::MADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, },
937 { 1989 /* f64x2.relaxed_max */, WebAssembly::SIMD_RELAXED_FMAX_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
938 { 2007 /* f64x2.relaxed_min */, WebAssembly::SIMD_RELAXED_FMIN_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
939 { 2025 /* f64x2.relaxed_nmadd */, WebAssembly::NMADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, },
940 { 2045 /* f64x2.replace_lane */, WebAssembly::REPLACE_LANE_F64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
941 { 2064 /* f64x2.splat */, WebAssembly::SPLAT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
942 { 2076 /* f64x2.sqrt */, WebAssembly::SQRT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
943 { 2087 /* f64x2.sub */, WebAssembly::SUB_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
944 { 2097 /* f64x2.trunc */, WebAssembly::TRUNC_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
945 { 2109 /* funcref.select */, WebAssembly::SELECT_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
946 { 2124 /* global.get */, WebAssembly::GLOBAL_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
947 { 2124 /* global.get */, WebAssembly::GLOBAL_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
948 { 2124 /* global.get */, WebAssembly::GLOBAL_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
949 { 2124 /* global.get */, WebAssembly::GLOBAL_GET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
950 { 2124 /* global.get */, WebAssembly::GLOBAL_GET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
951 { 2124 /* global.get */, WebAssembly::GLOBAL_GET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
952 { 2124 /* global.get */, WebAssembly::GLOBAL_GET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
953 { 2124 /* global.get */, WebAssembly::GLOBAL_GET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
954 { 2135 /* global.set */, WebAssembly::GLOBAL_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
955 { 2135 /* global.set */, WebAssembly::GLOBAL_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
956 { 2135 /* global.set */, WebAssembly::GLOBAL_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
957 { 2135 /* global.set */, WebAssembly::GLOBAL_SET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
958 { 2135 /* global.set */, WebAssembly::GLOBAL_SET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
959 { 2135 /* global.set */, WebAssembly::GLOBAL_SET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
960 { 2135 /* global.set */, WebAssembly::GLOBAL_SET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
961 { 2135 /* global.set */, WebAssembly::GLOBAL_SET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
962 { 2146 /* i16x8.abs */, WebAssembly::ABS_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
963 { 2156 /* i16x8.add */, WebAssembly::ADD_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
964 { 2166 /* i16x8.add_sat_s */, WebAssembly::ADD_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
965 { 2182 /* i16x8.add_sat_u */, WebAssembly::ADD_SAT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
966 { 2198 /* i16x8.all_true */, WebAssembly::ALLTRUE_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
967 { 2213 /* i16x8.avgr_u */, WebAssembly::AVGR_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
968 { 2226 /* i16x8.bitmask */, WebAssembly::BITMASK_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
969 { 2240 /* i16x8.eq */, WebAssembly::EQ_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
970 { 2249 /* i16x8.extadd_pairwise_i8x16_s */, WebAssembly::extadd_pairwise_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
971 { 2279 /* i16x8.extadd_pairwise_i8x16_u */, WebAssembly::extadd_pairwise_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
972 { 2309 /* i16x8.extend_high_i8x16_s */, WebAssembly::extend_high_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
973 { 2335 /* i16x8.extend_high_i8x16_u */, WebAssembly::extend_high_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
974 { 2361 /* i16x8.extend_low_i8x16_s */, WebAssembly::extend_low_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
975 { 2386 /* i16x8.extend_low_i8x16_u */, WebAssembly::extend_low_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
976 { 2411 /* i16x8.extmul_high_i8x16_s */, WebAssembly::EXTMUL_HIGH_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
977 { 2437 /* i16x8.extmul_high_i8x16_u */, WebAssembly::EXTMUL_HIGH_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
978 { 2463 /* i16x8.extmul_low_i8x16_s */, WebAssembly::EXTMUL_LOW_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
979 { 2488 /* i16x8.extmul_low_i8x16_u */, WebAssembly::EXTMUL_LOW_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
980 { 2513 /* i16x8.extract_lane_s */, WebAssembly::EXTRACT_LANE_I16x8_s_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
981 { 2534 /* i16x8.extract_lane_u */, WebAssembly::EXTRACT_LANE_I16x8_u_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
982 { 2555 /* i16x8.ge_s */, WebAssembly::GE_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
983 { 2566 /* i16x8.ge_u */, WebAssembly::GE_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
984 { 2577 /* i16x8.gt_s */, WebAssembly::GT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
985 { 2588 /* i16x8.gt_u */, WebAssembly::GT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
986 { 2599 /* i16x8.le_s */, WebAssembly::LE_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
987 { 2610 /* i16x8.le_u */, WebAssembly::LE_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
988 { 2621 /* i16x8.load8x8_s */, WebAssembly::LOAD_EXTEND_S_I16x8_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
989 { 2621 /* i16x8.load8x8_s */, WebAssembly::LOAD_EXTEND_S_I16x8_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
990 { 2637 /* i16x8.load8x8_u */, WebAssembly::LOAD_EXTEND_U_I16x8_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
991 { 2637 /* i16x8.load8x8_u */, WebAssembly::LOAD_EXTEND_U_I16x8_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
992 { 2653 /* i16x8.lt_s */, WebAssembly::LT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
993 { 2664 /* i16x8.lt_u */, WebAssembly::LT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
994 { 2675 /* i16x8.max_s */, WebAssembly::MAX_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
995 { 2687 /* i16x8.max_u */, WebAssembly::MAX_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
996 { 2699 /* i16x8.min_s */, WebAssembly::MIN_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
997 { 2711 /* i16x8.min_u */, WebAssembly::MIN_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
998 { 2723 /* i16x8.mul */, WebAssembly::MUL_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
999 { 2733 /* i16x8.narrow_i32x4_s */, WebAssembly::NARROW_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1000 { 2754 /* i16x8.narrow_i32x4_u */, WebAssembly::NARROW_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1001 { 2775 /* i16x8.ne */, WebAssembly::NE_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1002 { 2784 /* i16x8.neg */, WebAssembly::NEG_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1003 { 2794 /* i16x8.q15mulr_sat_s */, WebAssembly::Q15MULR_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1004 { 2814 /* i16x8.relaxed_dot_i8x16_i7x16_s */, WebAssembly::RELAXED_DOT_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1005 { 2846 /* i16x8.relaxed_laneselect */, WebAssembly::LANESELECT_I16x8_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1006 { 2871 /* i16x8.relaxed_q15mulr_s */, WebAssembly::RELAXED_Q15MULR_S_I16x8_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1007 { 2895 /* i16x8.replace_lane */, WebAssembly::REPLACE_LANE_I16x8_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1008 { 2914 /* i16x8.shl */, WebAssembly::SHL_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1009 { 2924 /* i16x8.shr_s */, WebAssembly::SHR_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1010 { 2936 /* i16x8.shr_u */, WebAssembly::SHR_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1011 { 2948 /* i16x8.splat */, WebAssembly::SPLAT_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1012 { 2960 /* i16x8.sub */, WebAssembly::SUB_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1013 { 2970 /* i16x8.sub_sat_s */, WebAssembly::SUB_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1014 { 2986 /* i16x8.sub_sat_u */, WebAssembly::SUB_SAT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1015 { 3002 /* i16x8.trunc_sat_f16x8_s */, WebAssembly::fp_to_sint_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
1016 { 3026 /* i16x8.trunc_sat_f16x8_u */, WebAssembly::fp_to_uint_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
1017 { 3050 /* i32.add */, WebAssembly::ADD_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1018 { 3058 /* i32.and */, WebAssembly::AND_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1019 { 3066 /* i32.atomic.load */, WebAssembly::ATOMIC_LOAD_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1020 { 3066 /* i32.atomic.load */, WebAssembly::ATOMIC_LOAD_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1021 { 3082 /* i32.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1022 { 3082 /* i32.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1023 { 3102 /* i32.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1024 { 3102 /* i32.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1025 { 3121 /* i32.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1026 { 3121 /* i32.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1027 { 3140 /* i32.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1028 { 3140 /* i32.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1029 { 3159 /* i32.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1030 { 3159 /* i32.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1031 { 3182 /* i32.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1032 { 3182 /* i32.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1033 { 3200 /* i32.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1034 { 3200 /* i32.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1035 { 3219 /* i32.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1036 { 3219 /* i32.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1037 { 3239 /* i32.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1038 { 3239 /* i32.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1039 { 3258 /* i32.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1040 { 3258 /* i32.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1041 { 3281 /* i32.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1042 { 3281 /* i32.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1043 { 3304 /* i32.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1044 { 3304 /* i32.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1045 { 3331 /* i32.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1046 { 3331 /* i32.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1047 { 3353 /* i32.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1048 { 3353 /* i32.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1049 { 3376 /* i32.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1050 { 3376 /* i32.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1051 { 3400 /* i32.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1052 { 3400 /* i32.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1053 { 3423 /* i32.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1054 { 3423 /* i32.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1055 { 3445 /* i32.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1056 { 3445 /* i32.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1057 { 3467 /* i32.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1058 { 3467 /* i32.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1059 { 3493 /* i32.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1060 { 3493 /* i32.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1061 { 3514 /* i32.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1062 { 3514 /* i32.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1063 { 3536 /* i32.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1064 { 3536 /* i32.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1065 { 3559 /* i32.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1066 { 3559 /* i32.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1067 { 3581 /* i32.atomic.store */, WebAssembly::ATOMIC_STORE_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1068 { 3581 /* i32.atomic.store */, WebAssembly::ATOMIC_STORE_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1069 { 3598 /* i32.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1070 { 3598 /* i32.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1071 { 3617 /* i32.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1072 { 3617 /* i32.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1073 { 3635 /* i32.clz */, WebAssembly::CLZ_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1074 { 3643 /* i32.const */, WebAssembly::CONST_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1075 { 3653 /* i32.ctz */, WebAssembly::CTZ_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1076 { 3661 /* i32.div_s */, WebAssembly::DIV_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1077 { 3671 /* i32.div_u */, WebAssembly::DIV_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1078 { 3681 /* i32.eq */, WebAssembly::EQ_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1079 { 3688 /* i32.eqz */, WebAssembly::EQZ_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1080 { 3696 /* i32.extend16_s */, WebAssembly::I32_EXTEND16_S_I32_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1081 { 3711 /* i32.extend8_s */, WebAssembly::I32_EXTEND8_S_I32_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1082 { 3725 /* i32.ge_s */, WebAssembly::GE_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1083 { 3734 /* i32.ge_u */, WebAssembly::GE_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1084 { 3743 /* i32.gt_s */, WebAssembly::GT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1085 { 3752 /* i32.gt_u */, WebAssembly::GT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1086 { 3761 /* i32.le_s */, WebAssembly::LE_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1087 { 3770 /* i32.le_u */, WebAssembly::LE_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1088 { 3779 /* i32.load */, WebAssembly::LOAD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1089 { 3779 /* i32.load */, WebAssembly::LOAD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1090 { 3788 /* i32.load16_s */, WebAssembly::LOAD16_S_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1091 { 3788 /* i32.load16_s */, WebAssembly::LOAD16_S_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1092 { 3801 /* i32.load16_u */, WebAssembly::LOAD16_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1093 { 3801 /* i32.load16_u */, WebAssembly::LOAD16_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1094 { 3814 /* i32.load8_s */, WebAssembly::LOAD8_S_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1095 { 3814 /* i32.load8_s */, WebAssembly::LOAD8_S_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1096 { 3826 /* i32.load8_u */, WebAssembly::LOAD8_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1097 { 3826 /* i32.load8_u */, WebAssembly::LOAD8_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1098 { 3838 /* i32.lt_s */, WebAssembly::LT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1099 { 3847 /* i32.lt_u */, WebAssembly::LT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1100 { 3856 /* i32.mul */, WebAssembly::MUL_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1101 { 3864 /* i32.ne */, WebAssembly::NE_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1102 { 3871 /* i32.or */, WebAssembly::OR_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1103 { 3878 /* i32.popcnt */, WebAssembly::POPCNT_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1104 { 3889 /* i32.reinterpret_f32 */, WebAssembly::I32_REINTERPRET_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1105 { 3909 /* i32.rem_s */, WebAssembly::REM_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1106 { 3919 /* i32.rem_u */, WebAssembly::REM_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1107 { 3929 /* i32.rotl */, WebAssembly::ROTL_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1108 { 3938 /* i32.rotr */, WebAssembly::ROTR_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1109 { 3947 /* i32.select */, WebAssembly::SELECT_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1110 { 3958 /* i32.shl */, WebAssembly::SHL_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1111 { 3966 /* i32.shr_s */, WebAssembly::SHR_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1112 { 3976 /* i32.shr_u */, WebAssembly::SHR_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1113 { 3986 /* i32.store */, WebAssembly::STORE_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1114 { 3986 /* i32.store */, WebAssembly::STORE_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1115 { 3996 /* i32.store16 */, WebAssembly::STORE16_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1116 { 3996 /* i32.store16 */, WebAssembly::STORE16_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1117 { 4008 /* i32.store8 */, WebAssembly::STORE8_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1118 { 4008 /* i32.store8 */, WebAssembly::STORE8_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1119 { 4019 /* i32.sub */, WebAssembly::SUB_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1120 { 4027 /* i32.trunc_f32_s */, WebAssembly::I32_TRUNC_S_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1121 { 4043 /* i32.trunc_f32_u */, WebAssembly::I32_TRUNC_U_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1122 { 4059 /* i32.trunc_f64_s */, WebAssembly::I32_TRUNC_S_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1123 { 4075 /* i32.trunc_f64_u */, WebAssembly::I32_TRUNC_U_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1124 { 4091 /* i32.trunc_sat_f32_s */, WebAssembly::I32_TRUNC_S_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1125 { 4111 /* i32.trunc_sat_f32_u */, WebAssembly::I32_TRUNC_U_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1126 { 4131 /* i32.trunc_sat_f64_s */, WebAssembly::I32_TRUNC_S_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1127 { 4151 /* i32.trunc_sat_f64_u */, WebAssembly::I32_TRUNC_U_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1128 { 4171 /* i32.wrap_i64 */, WebAssembly::I32_WRAP_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1129 { 4184 /* i32.xor */, WebAssembly::XOR_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1130 { 4192 /* i32x4.abs */, WebAssembly::ABS_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1131 { 4202 /* i32x4.add */, WebAssembly::ADD_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1132 { 4212 /* i32x4.all_true */, WebAssembly::ALLTRUE_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1133 { 4227 /* i32x4.bitmask */, WebAssembly::BITMASK_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1134 { 4241 /* i32x4.dot_i16x8_s */, WebAssembly::DOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1135 { 4259 /* i32x4.eq */, WebAssembly::EQ_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1136 { 4268 /* i32x4.extadd_pairwise_i16x8_s */, WebAssembly::extadd_pairwise_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1137 { 4298 /* i32x4.extadd_pairwise_i16x8_u */, WebAssembly::extadd_pairwise_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1138 { 4328 /* i32x4.extend_high_i16x8_s */, WebAssembly::extend_high_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1139 { 4354 /* i32x4.extend_high_i16x8_u */, WebAssembly::extend_high_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1140 { 4380 /* i32x4.extend_low_i16x8_s */, WebAssembly::extend_low_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1141 { 4405 /* i32x4.extend_low_i16x8_u */, WebAssembly::extend_low_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1142 { 4430 /* i32x4.extmul_high_i16x8_s */, WebAssembly::EXTMUL_HIGH_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1143 { 4456 /* i32x4.extmul_high_i16x8_u */, WebAssembly::EXTMUL_HIGH_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1144 { 4482 /* i32x4.extmul_low_i16x8_s */, WebAssembly::EXTMUL_LOW_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1145 { 4507 /* i32x4.extmul_low_i16x8_u */, WebAssembly::EXTMUL_LOW_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1146 { 4532 /* i32x4.extract_lane */, WebAssembly::EXTRACT_LANE_I32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1147 { 4551 /* i32x4.ge_s */, WebAssembly::GE_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1148 { 4562 /* i32x4.ge_u */, WebAssembly::GE_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1149 { 4573 /* i32x4.gt_s */, WebAssembly::GT_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1150 { 4584 /* i32x4.gt_u */, WebAssembly::GT_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1151 { 4595 /* i32x4.le_s */, WebAssembly::LE_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1152 { 4606 /* i32x4.le_u */, WebAssembly::LE_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1153 { 4617 /* i32x4.load16x4_s */, WebAssembly::LOAD_EXTEND_S_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1154 { 4617 /* i32x4.load16x4_s */, WebAssembly::LOAD_EXTEND_S_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1155 { 4634 /* i32x4.load16x4_u */, WebAssembly::LOAD_EXTEND_U_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1156 { 4634 /* i32x4.load16x4_u */, WebAssembly::LOAD_EXTEND_U_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1157 { 4651 /* i32x4.lt_s */, WebAssembly::LT_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1158 { 4662 /* i32x4.lt_u */, WebAssembly::LT_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1159 { 4673 /* i32x4.max_s */, WebAssembly::MAX_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1160 { 4685 /* i32x4.max_u */, WebAssembly::MAX_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1161 { 4697 /* i32x4.min_s */, WebAssembly::MIN_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1162 { 4709 /* i32x4.min_u */, WebAssembly::MIN_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1163 { 4721 /* i32x4.mul */, WebAssembly::MUL_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1164 { 4731 /* i32x4.ne */, WebAssembly::NE_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1165 { 4740 /* i32x4.neg */, WebAssembly::NEG_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1166 { 4750 /* i32x4.relaxed_dot_i8x16_i7x16_add_s */, WebAssembly::RELAXED_DOT_ADD_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1167 { 4786 /* i32x4.relaxed_laneselect */, WebAssembly::LANESELECT_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1168 { 4811 /* i32x4.relaxed_trunc_f32x4_s */, WebAssembly::int_wasm_relaxed_trunc_signed_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1169 { 4839 /* i32x4.relaxed_trunc_f32x4_u */, WebAssembly::int_wasm_relaxed_trunc_unsigned_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1170 { 4867 /* i32x4.relaxed_trunc_f64x2_s_zero */, WebAssembly::int_wasm_relaxed_trunc_signed_zero_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1171 { 4900 /* i32x4.relaxed_trunc_f64x2_u_zero */, WebAssembly::int_wasm_relaxed_trunc_unsigned_zero_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1172 { 4933 /* i32x4.replace_lane */, WebAssembly::REPLACE_LANE_I32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1173 { 4952 /* i32x4.shl */, WebAssembly::SHL_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1174 { 4962 /* i32x4.shr_s */, WebAssembly::SHR_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1175 { 4974 /* i32x4.shr_u */, WebAssembly::SHR_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1176 { 4986 /* i32x4.splat */, WebAssembly::SPLAT_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1177 { 4998 /* i32x4.sub */, WebAssembly::SUB_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1178 { 5008 /* i32x4.trunc_sat_f32x4_s */, WebAssembly::fp_to_sint_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1179 { 5032 /* i32x4.trunc_sat_f32x4_u */, WebAssembly::fp_to_uint_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1180 { 5056 /* i32x4.trunc_sat_f64x2_s_zero */, WebAssembly::trunc_sat_zero_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1181 { 5085 /* i32x4.trunc_sat_f64x2_u_zero */, WebAssembly::trunc_sat_zero_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1182 { 5114 /* i64.add */, WebAssembly::ADD_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1183 { 5122 /* i64.add128 */, WebAssembly::I64_ADD128_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, },
1184 { 5133 /* i64.and */, WebAssembly::AND_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1185 { 5141 /* i64.atomic.load */, WebAssembly::ATOMIC_LOAD_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1186 { 5141 /* i64.atomic.load */, WebAssembly::ATOMIC_LOAD_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1187 { 5157 /* i64.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1188 { 5157 /* i64.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1189 { 5177 /* i64.atomic.load32_u */, WebAssembly::ATOMIC_LOAD32_U_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1190 { 5177 /* i64.atomic.load32_u */, WebAssembly::ATOMIC_LOAD32_U_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1191 { 5197 /* i64.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1192 { 5197 /* i64.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1193 { 5216 /* i64.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1194 { 5216 /* i64.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1195 { 5235 /* i64.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1196 { 5235 /* i64.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1197 { 5254 /* i64.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1198 { 5254 /* i64.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1199 { 5277 /* i64.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1200 { 5277 /* i64.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1201 { 5295 /* i64.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1202 { 5295 /* i64.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1203 { 5314 /* i64.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1204 { 5314 /* i64.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1205 { 5334 /* i64.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1206 { 5334 /* i64.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1207 { 5353 /* i64.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1208 { 5353 /* i64.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1209 { 5376 /* i64.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1210 { 5376 /* i64.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1211 { 5399 /* i64.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1212 { 5399 /* i64.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1213 { 5426 /* i64.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1214 { 5426 /* i64.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1215 { 5448 /* i64.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1216 { 5448 /* i64.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1217 { 5471 /* i64.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1218 { 5471 /* i64.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1219 { 5495 /* i64.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1220 { 5495 /* i64.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1221 { 5518 /* i64.atomic.rmw32.add_u */, WebAssembly::ATOMIC_RMW32_U_ADD_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1222 { 5518 /* i64.atomic.rmw32.add_u */, WebAssembly::ATOMIC_RMW32_U_ADD_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1223 { 5541 /* i64.atomic.rmw32.and_u */, WebAssembly::ATOMIC_RMW32_U_AND_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1224 { 5541 /* i64.atomic.rmw32.and_u */, WebAssembly::ATOMIC_RMW32_U_AND_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1225 { 5564 /* i64.atomic.rmw32.cmpxchg_u */, WebAssembly::ATOMIC_RMW32_U_CMPXCHG_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1226 { 5564 /* i64.atomic.rmw32.cmpxchg_u */, WebAssembly::ATOMIC_RMW32_U_CMPXCHG_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1227 { 5591 /* i64.atomic.rmw32.or_u */, WebAssembly::ATOMIC_RMW32_U_OR_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1228 { 5591 /* i64.atomic.rmw32.or_u */, WebAssembly::ATOMIC_RMW32_U_OR_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1229 { 5613 /* i64.atomic.rmw32.sub_u */, WebAssembly::ATOMIC_RMW32_U_SUB_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1230 { 5613 /* i64.atomic.rmw32.sub_u */, WebAssembly::ATOMIC_RMW32_U_SUB_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1231 { 5636 /* i64.atomic.rmw32.xchg_u */, WebAssembly::ATOMIC_RMW32_U_XCHG_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1232 { 5636 /* i64.atomic.rmw32.xchg_u */, WebAssembly::ATOMIC_RMW32_U_XCHG_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1233 { 5660 /* i64.atomic.rmw32.xor_u */, WebAssembly::ATOMIC_RMW32_U_XOR_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1234 { 5660 /* i64.atomic.rmw32.xor_u */, WebAssembly::ATOMIC_RMW32_U_XOR_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1235 { 5683 /* i64.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1236 { 5683 /* i64.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1237 { 5705 /* i64.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1238 { 5705 /* i64.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1239 { 5727 /* i64.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1240 { 5727 /* i64.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1241 { 5753 /* i64.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1242 { 5753 /* i64.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1243 { 5774 /* i64.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1244 { 5774 /* i64.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1245 { 5796 /* i64.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1246 { 5796 /* i64.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1247 { 5819 /* i64.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1248 { 5819 /* i64.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1249 { 5841 /* i64.atomic.store */, WebAssembly::ATOMIC_STORE_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1250 { 5841 /* i64.atomic.store */, WebAssembly::ATOMIC_STORE_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1251 { 5858 /* i64.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1252 { 5858 /* i64.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1253 { 5877 /* i64.atomic.store32 */, WebAssembly::ATOMIC_STORE32_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1254 { 5877 /* i64.atomic.store32 */, WebAssembly::ATOMIC_STORE32_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1255 { 5896 /* i64.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1256 { 5896 /* i64.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1257 { 5914 /* i64.clz */, WebAssembly::CLZ_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1258 { 5922 /* i64.const */, WebAssembly::CONST_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1259 { 5932 /* i64.ctz */, WebAssembly::CTZ_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1260 { 5940 /* i64.div_s */, WebAssembly::DIV_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1261 { 5950 /* i64.div_u */, WebAssembly::DIV_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1262 { 5960 /* i64.eq */, WebAssembly::EQ_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1263 { 5967 /* i64.eqz */, WebAssembly::EQZ_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1264 { 5975 /* i64.extend16_s */, WebAssembly::I64_EXTEND16_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1265 { 5990 /* i64.extend32_s */, WebAssembly::I64_EXTEND32_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1266 { 6005 /* i64.extend8_s */, WebAssembly::I64_EXTEND8_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1267 { 6019 /* i64.extend_i32_s */, WebAssembly::I64_EXTEND_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1268 { 6036 /* i64.extend_i32_u */, WebAssembly::I64_EXTEND_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1269 { 6053 /* i64.ge_s */, WebAssembly::GE_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1270 { 6062 /* i64.ge_u */, WebAssembly::GE_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1271 { 6071 /* i64.gt_s */, WebAssembly::GT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1272 { 6080 /* i64.gt_u */, WebAssembly::GT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1273 { 6089 /* i64.le_s */, WebAssembly::LE_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1274 { 6098 /* i64.le_u */, WebAssembly::LE_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1275 { 6107 /* i64.load */, WebAssembly::LOAD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1276 { 6107 /* i64.load */, WebAssembly::LOAD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1277 { 6116 /* i64.load16_s */, WebAssembly::LOAD16_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1278 { 6116 /* i64.load16_s */, WebAssembly::LOAD16_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1279 { 6129 /* i64.load16_u */, WebAssembly::LOAD16_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1280 { 6129 /* i64.load16_u */, WebAssembly::LOAD16_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1281 { 6142 /* i64.load32_s */, WebAssembly::LOAD32_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1282 { 6142 /* i64.load32_s */, WebAssembly::LOAD32_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1283 { 6155 /* i64.load32_u */, WebAssembly::LOAD32_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1284 { 6155 /* i64.load32_u */, WebAssembly::LOAD32_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1285 { 6168 /* i64.load8_s */, WebAssembly::LOAD8_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1286 { 6168 /* i64.load8_s */, WebAssembly::LOAD8_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1287 { 6180 /* i64.load8_u */, WebAssembly::LOAD8_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1288 { 6180 /* i64.load8_u */, WebAssembly::LOAD8_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1289 { 6192 /* i64.lt_s */, WebAssembly::LT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1290 { 6201 /* i64.lt_u */, WebAssembly::LT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1291 { 6210 /* i64.mul */, WebAssembly::MUL_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1292 { 6218 /* i64.mul_wide_s */, WebAssembly::I64_MUL_WIDE_S_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, },
1293 { 6233 /* i64.mul_wide_u */, WebAssembly::I64_MUL_WIDE_U_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, },
1294 { 6248 /* i64.ne */, WebAssembly::NE_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1295 { 6255 /* i64.or */, WebAssembly::OR_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1296 { 6262 /* i64.popcnt */, WebAssembly::POPCNT_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1297 { 6273 /* i64.reinterpret_f64 */, WebAssembly::I64_REINTERPRET_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1298 { 6293 /* i64.rem_s */, WebAssembly::REM_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1299 { 6303 /* i64.rem_u */, WebAssembly::REM_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1300 { 6313 /* i64.rotl */, WebAssembly::ROTL_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1301 { 6322 /* i64.rotr */, WebAssembly::ROTR_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1302 { 6331 /* i64.select */, WebAssembly::SELECT_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1303 { 6342 /* i64.shl */, WebAssembly::SHL_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1304 { 6350 /* i64.shr_s */, WebAssembly::SHR_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1305 { 6360 /* i64.shr_u */, WebAssembly::SHR_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1306 { 6370 /* i64.store */, WebAssembly::STORE_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1307 { 6370 /* i64.store */, WebAssembly::STORE_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1308 { 6380 /* i64.store16 */, WebAssembly::STORE16_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1309 { 6380 /* i64.store16 */, WebAssembly::STORE16_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1310 { 6392 /* i64.store32 */, WebAssembly::STORE32_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1311 { 6392 /* i64.store32 */, WebAssembly::STORE32_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1312 { 6404 /* i64.store8 */, WebAssembly::STORE8_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1313 { 6404 /* i64.store8 */, WebAssembly::STORE8_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1314 { 6415 /* i64.sub */, WebAssembly::SUB_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1315 { 6423 /* i64.sub128 */, WebAssembly::I64_SUB128_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, },
1316 { 6434 /* i64.trunc_f32_s */, WebAssembly::I64_TRUNC_S_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1317 { 6450 /* i64.trunc_f32_u */, WebAssembly::I64_TRUNC_U_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1318 { 6466 /* i64.trunc_f64_s */, WebAssembly::I64_TRUNC_S_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1319 { 6482 /* i64.trunc_f64_u */, WebAssembly::I64_TRUNC_U_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1320 { 6498 /* i64.trunc_sat_f32_s */, WebAssembly::I64_TRUNC_S_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1321 { 6518 /* i64.trunc_sat_f32_u */, WebAssembly::I64_TRUNC_U_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1322 { 6538 /* i64.trunc_sat_f64_s */, WebAssembly::I64_TRUNC_S_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1323 { 6558 /* i64.trunc_sat_f64_u */, WebAssembly::I64_TRUNC_U_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1324 { 6578 /* i64.xor */, WebAssembly::XOR_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1325 { 6586 /* i64x2.abs */, WebAssembly::ABS_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1326 { 6596 /* i64x2.add */, WebAssembly::ADD_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1327 { 6606 /* i64x2.all_true */, WebAssembly::ALLTRUE_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1328 { 6621 /* i64x2.bitmask */, WebAssembly::BITMASK_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1329 { 6635 /* i64x2.eq */, WebAssembly::EQ_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1330 { 6644 /* i64x2.extend_high_i32x4_s */, WebAssembly::extend_high_s_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1331 { 6670 /* i64x2.extend_high_i32x4_u */, WebAssembly::extend_high_u_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1332 { 6696 /* i64x2.extend_low_i32x4_s */, WebAssembly::extend_low_s_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1333 { 6721 /* i64x2.extend_low_i32x4_u */, WebAssembly::extend_low_u_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1334 { 6746 /* i64x2.extmul_high_i32x4_s */, WebAssembly::EXTMUL_HIGH_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1335 { 6772 /* i64x2.extmul_high_i32x4_u */, WebAssembly::EXTMUL_HIGH_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1336 { 6798 /* i64x2.extmul_low_i32x4_s */, WebAssembly::EXTMUL_LOW_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1337 { 6823 /* i64x2.extmul_low_i32x4_u */, WebAssembly::EXTMUL_LOW_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1338 { 6848 /* i64x2.extract_lane */, WebAssembly::EXTRACT_LANE_I64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1339 { 6867 /* i64x2.ge_s */, WebAssembly::GE_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1340 { 6878 /* i64x2.gt_s */, WebAssembly::GT_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1341 { 6889 /* i64x2.le_s */, WebAssembly::LE_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1342 { 6900 /* i64x2.load32x2_s */, WebAssembly::LOAD_EXTEND_S_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1343 { 6900 /* i64x2.load32x2_s */, WebAssembly::LOAD_EXTEND_S_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1344 { 6917 /* i64x2.load32x2_u */, WebAssembly::LOAD_EXTEND_U_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1345 { 6917 /* i64x2.load32x2_u */, WebAssembly::LOAD_EXTEND_U_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1346 { 6934 /* i64x2.lt_s */, WebAssembly::LT_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1347 { 6945 /* i64x2.mul */, WebAssembly::MUL_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1348 { 6955 /* i64x2.ne */, WebAssembly::NE_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1349 { 6964 /* i64x2.neg */, WebAssembly::NEG_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1350 { 6974 /* i64x2.relaxed_laneselect */, WebAssembly::LANESELECT_I64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1351 { 6999 /* i64x2.replace_lane */, WebAssembly::REPLACE_LANE_I64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1352 { 7018 /* i64x2.shl */, WebAssembly::SHL_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1353 { 7028 /* i64x2.shr_s */, WebAssembly::SHR_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1354 { 7040 /* i64x2.shr_u */, WebAssembly::SHR_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1355 { 7052 /* i64x2.splat */, WebAssembly::SPLAT_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1356 { 7064 /* i64x2.sub */, WebAssembly::SUB_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1357 { 7074 /* i8x16.abs */, WebAssembly::ABS_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1358 { 7084 /* i8x16.add */, WebAssembly::ADD_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1359 { 7094 /* i8x16.add_sat_s */, WebAssembly::ADD_SAT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1360 { 7110 /* i8x16.add_sat_u */, WebAssembly::ADD_SAT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1361 { 7126 /* i8x16.all_true */, WebAssembly::ALLTRUE_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1362 { 7141 /* i8x16.avgr_u */, WebAssembly::AVGR_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1363 { 7154 /* i8x16.bitmask */, WebAssembly::BITMASK_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1364 { 7168 /* i8x16.eq */, WebAssembly::EQ_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1365 { 7177 /* i8x16.extract_lane_s */, WebAssembly::EXTRACT_LANE_I8x16_s_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1366 { 7198 /* i8x16.extract_lane_u */, WebAssembly::EXTRACT_LANE_I8x16_u_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1367 { 7219 /* i8x16.ge_s */, WebAssembly::GE_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1368 { 7230 /* i8x16.ge_u */, WebAssembly::GE_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1369 { 7241 /* i8x16.gt_s */, WebAssembly::GT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1370 { 7252 /* i8x16.gt_u */, WebAssembly::GT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1371 { 7263 /* i8x16.le_s */, WebAssembly::LE_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1372 { 7274 /* i8x16.le_u */, WebAssembly::LE_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1373 { 7285 /* i8x16.lt_s */, WebAssembly::LT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1374 { 7296 /* i8x16.lt_u */, WebAssembly::LT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1375 { 7307 /* i8x16.max_s */, WebAssembly::MAX_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1376 { 7319 /* i8x16.max_u */, WebAssembly::MAX_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1377 { 7331 /* i8x16.min_s */, WebAssembly::MIN_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1378 { 7343 /* i8x16.min_u */, WebAssembly::MIN_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1379 { 7355 /* i8x16.narrow_i16x8_s */, WebAssembly::NARROW_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1380 { 7376 /* i8x16.narrow_i16x8_u */, WebAssembly::NARROW_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1381 { 7397 /* i8x16.ne */, WebAssembly::NE_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1382 { 7406 /* i8x16.neg */, WebAssembly::NEG_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1383 { 7416 /* i8x16.popcnt */, WebAssembly::POPCNT_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1384 { 7429 /* i8x16.relaxed_laneselect */, WebAssembly::LANESELECT_I8x16_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1385 { 7454 /* i8x16.relaxed_swizzle */, WebAssembly::RELAXED_SWIZZLE_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1386 { 7476 /* i8x16.replace_lane */, WebAssembly::REPLACE_LANE_I8x16_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1387 { 7495 /* i8x16.shl */, WebAssembly::SHL_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1388 { 7505 /* i8x16.shr_s */, WebAssembly::SHR_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1389 { 7517 /* i8x16.shr_u */, WebAssembly::SHR_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1390 { 7529 /* i8x16.shuffle */, WebAssembly::SHUFFLE_S, Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7__Imm1_8__Imm1_9__Imm1_10__Imm1_11__Imm1_12__Imm1_13__Imm1_14__Imm1_15, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm }, },
1391 { 7543 /* i8x16.splat */, WebAssembly::SPLAT_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1392 { 7555 /* i8x16.sub */, WebAssembly::SUB_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1393 { 7565 /* i8x16.sub_sat_s */, WebAssembly::SUB_SAT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1394 { 7581 /* i8x16.sub_sat_u */, WebAssembly::SUB_SAT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1395 { 7597 /* i8x16.swizzle */, WebAssembly::SWIZZLE_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1396 { 7611 /* if */, WebAssembly::IF_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1397 { 7614 /* local.get */, WebAssembly::LOCAL_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1398 { 7614 /* local.get */, WebAssembly::LOCAL_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1399 { 7614 /* local.get */, WebAssembly::LOCAL_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1400 { 7614 /* local.get */, WebAssembly::LOCAL_GET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1401 { 7614 /* local.get */, WebAssembly::LOCAL_GET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1402 { 7614 /* local.get */, WebAssembly::LOCAL_GET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1403 { 7614 /* local.get */, WebAssembly::LOCAL_GET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1404 { 7614 /* local.get */, WebAssembly::LOCAL_GET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1405 { 7624 /* local.set */, WebAssembly::LOCAL_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1406 { 7624 /* local.set */, WebAssembly::LOCAL_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1407 { 7624 /* local.set */, WebAssembly::LOCAL_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1408 { 7624 /* local.set */, WebAssembly::LOCAL_SET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1409 { 7624 /* local.set */, WebAssembly::LOCAL_SET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1410 { 7624 /* local.set */, WebAssembly::LOCAL_SET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1411 { 7624 /* local.set */, WebAssembly::LOCAL_SET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1412 { 7624 /* local.set */, WebAssembly::LOCAL_SET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1413 { 7634 /* local.tee */, WebAssembly::LOCAL_TEE_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1414 { 7634 /* local.tee */, WebAssembly::LOCAL_TEE_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1415 { 7634 /* local.tee */, WebAssembly::LOCAL_TEE_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1416 { 7634 /* local.tee */, WebAssembly::LOCAL_TEE_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1417 { 7634 /* local.tee */, WebAssembly::LOCAL_TEE_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1418 { 7634 /* local.tee */, WebAssembly::LOCAL_TEE_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1419 { 7634 /* local.tee */, WebAssembly::LOCAL_TEE_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1420 { 7634 /* local.tee */, WebAssembly::LOCAL_TEE_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1421 { 7644 /* loop */, WebAssembly::LOOP_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1422 { 7649 /* memory.atomic.notify */, WebAssembly::MEMORY_ATOMIC_NOTIFY_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1423 { 7649 /* memory.atomic.notify */, WebAssembly::MEMORY_ATOMIC_NOTIFY_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1424 { 7670 /* memory.atomic.wait32 */, WebAssembly::MEMORY_ATOMIC_WAIT32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1425 { 7670 /* memory.atomic.wait32 */, WebAssembly::MEMORY_ATOMIC_WAIT32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1426 { 7691 /* memory.atomic.wait64 */, WebAssembly::MEMORY_ATOMIC_WAIT64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1427 { 7691 /* memory.atomic.wait64 */, WebAssembly::MEMORY_ATOMIC_WAIT64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1428 { 7712 /* memory.copy */, WebAssembly::MEMORY_COPY_A32_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, },
1429 { 7712 /* memory.copy */, WebAssembly::MEMORY_COPY_A64_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, },
1430 { 7724 /* memory.fill */, WebAssembly::MEMORY_FILL_A32_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, },
1431 { 7724 /* memory.fill */, WebAssembly::MEMORY_FILL_A64_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, },
1432 { 7736 /* memory.grow */, WebAssembly::anonymous_14776MEMORY_GROW_A32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1433 { 7736 /* memory.grow */, WebAssembly::anonymous_14777MEMORY_GROW_A64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1434 { 7748 /* memory.init */, WebAssembly::MEMORY_INIT_A32_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, },
1435 { 7748 /* memory.init */, WebAssembly::MEMORY_INIT_A64_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, },
1436 { 7760 /* memory.size */, WebAssembly::anonymous_14776MEMORY_SIZE_A32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1437 { 7760 /* memory.size */, WebAssembly::anonymous_14777MEMORY_SIZE_A64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1438 { 7772 /* nop */, WebAssembly::NOP_S, Convert_NoOperands, AMFBS_None, { }, },
1439 { 7776 /* ref.func */, WebAssembly::REF_FUNC_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1440 { 7785 /* ref.is_null */, WebAssembly::REF_IS_NULL_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1441 { 7785 /* ref.is_null */, WebAssembly::REF_IS_NULL_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1442 { 7785 /* ref.is_null */, WebAssembly::REF_IS_NULL_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1443 { 7797 /* ref.null_exn */, WebAssembly::REF_NULL_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1444 { 7810 /* ref.null_extern */, WebAssembly::REF_NULL_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1445 { 7826 /* ref.null_func */, WebAssembly::REF_NULL_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1446 { 7840 /* ref.test */, WebAssembly::REF_TEST_FUNCREF_S, Convert__Imm1_0, AMFBS_HasGC, { MCK_Imm }, },
1447 { 7849 /* rethrow */, WebAssembly::RETHROW_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
1448 { 7857 /* return */, WebAssembly::RETURN_S, Convert_NoOperands, AMFBS_None, { }, },
1449 { 7864 /* return_call */, WebAssembly::RET_CALL_S, Convert__Imm1_0, AMFBS_HasTailCall, { MCK_Imm }, },
1450 { 7876 /* return_call_indirect */, WebAssembly::RET_CALL_INDIRECT_S, Convert__Imm1_0__Imm1_1, AMFBS_HasTailCall, { MCK_Imm, MCK_Imm }, },
1451 { 7897 /* return_call_results */, WebAssembly::RET_CALL_RESULTS_S, Convert_NoOperands, AMFBS_None, { }, },
1452 { 7917 /* table.copy */, WebAssembly::TABLE_COPY_S, Convert__Imm1_0__Imm1_1, AMFBS_HasReferenceTypes, { MCK_Imm, MCK_Imm }, },
1453 { 7928 /* table.fill */, WebAssembly::TABLE_FILL_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1454 { 7928 /* table.fill */, WebAssembly::TABLE_FILL_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1455 { 7928 /* table.fill */, WebAssembly::TABLE_FILL_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1456 { 7939 /* table.get */, WebAssembly::TABLE_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1457 { 7939 /* table.get */, WebAssembly::TABLE_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1458 { 7939 /* table.get */, WebAssembly::TABLE_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1459 { 7949 /* table.grow */, WebAssembly::TABLE_GROW_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1460 { 7949 /* table.grow */, WebAssembly::TABLE_GROW_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1461 { 7949 /* table.grow */, WebAssembly::TABLE_GROW_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1462 { 7960 /* table.set */, WebAssembly::TABLE_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1463 { 7960 /* table.set */, WebAssembly::TABLE_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1464 { 7960 /* table.set */, WebAssembly::TABLE_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1465 { 7970 /* table.size */, WebAssembly::TABLE_SIZE_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1466 { 7981 /* throw */, WebAssembly::THROW_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
1467 { 7987 /* throw_ref */, WebAssembly::THROW_REF_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, },
1468 { 7997 /* try */, WebAssembly::TRY_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
1469 { 8001 /* try_table */, WebAssembly::TRY_TABLE_S, Convert__Imm1_0__CatchList1_1, AMFBS_HasExceptionHandling, { MCK_Imm, MCK_CatchList }, },
1470 { 8011 /* unreachable */, WebAssembly::DEBUG_UNREACHABLE_S, Convert_NoOperands, AMFBS_None, { }, },
1471 { 8011 /* unreachable */, WebAssembly::UNREACHABLE_S, Convert_NoOperands, AMFBS_None, { }, },
1472 { 8023 /* v128.and */, WebAssembly::AND_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1473 { 8032 /* v128.andnot */, WebAssembly::ANDNOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1474 { 8044 /* v128.any_true */, WebAssembly::ANYTRUE_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1475 { 8058 /* v128.bitselect */, WebAssembly::BITSELECT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1476 { 8073 /* v128.const */, WebAssembly::CONST_V128_I64x2_S, Convert__Imm1_0__Imm1_1, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1477 { 8073 /* v128.const */, WebAssembly::CONST_V128_F64x2_S, Convert__FPImmf641_0__FPImmf641_1, AMFBS_HasSIMD128, { MCK_FPImmf64, MCK_FPImmf64 }, },
1478 { 8073 /* v128.const */, WebAssembly::CONST_V128_I32x4_S, Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm }, },
1479 { 8073 /* v128.const */, WebAssembly::CONST_V128_F32x4_S, Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3, AMFBS_HasSIMD128, { MCK_FPImmf32, MCK_FPImmf32, MCK_FPImmf32, MCK_FPImmf32 }, },
1480 { 8073 /* v128.const */, WebAssembly::CONST_V128_I16x8_S, Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm }, },
1481 { 8073 /* v128.const */, WebAssembly::CONST_V128_I8x16_S, Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7__Imm1_8__Imm1_9__Imm1_10__Imm1_11__Imm1_12__Imm1_13__Imm1_14__Imm1_15, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm, MCK_Imm }, },
1482 { 8084 /* v128.load */, WebAssembly::LOAD_V128_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1483 { 8084 /* v128.load */, WebAssembly::LOAD_V128_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1484 { 8094 /* v128.load16_lane */, WebAssembly::LOAD_LANE_16_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1485 { 8094 /* v128.load16_lane */, WebAssembly::LOAD_LANE_16_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1486 { 8111 /* v128.load16_splat */, WebAssembly::LOAD16_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1487 { 8111 /* v128.load16_splat */, WebAssembly::LOAD16_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1488 { 8129 /* v128.load32_lane */, WebAssembly::LOAD_LANE_32_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1489 { 8129 /* v128.load32_lane */, WebAssembly::LOAD_LANE_32_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1490 { 8146 /* v128.load32_splat */, WebAssembly::LOAD32_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1491 { 8146 /* v128.load32_splat */, WebAssembly::LOAD32_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1492 { 8164 /* v128.load32_zero */, WebAssembly::LOAD_ZERO_32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1493 { 8164 /* v128.load32_zero */, WebAssembly::LOAD_ZERO_32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1494 { 8181 /* v128.load64_lane */, WebAssembly::LOAD_LANE_64_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1495 { 8181 /* v128.load64_lane */, WebAssembly::LOAD_LANE_64_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1496 { 8198 /* v128.load64_splat */, WebAssembly::LOAD64_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1497 { 8198 /* v128.load64_splat */, WebAssembly::LOAD64_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1498 { 8216 /* v128.load64_zero */, WebAssembly::LOAD_ZERO_64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1499 { 8216 /* v128.load64_zero */, WebAssembly::LOAD_ZERO_64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1500 { 8233 /* v128.load8_lane */, WebAssembly::LOAD_LANE_8_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1501 { 8233 /* v128.load8_lane */, WebAssembly::LOAD_LANE_8_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1502 { 8249 /* v128.load8_splat */, WebAssembly::LOAD8_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1503 { 8249 /* v128.load8_splat */, WebAssembly::LOAD8_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1504 { 8266 /* v128.not */, WebAssembly::NOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1505 { 8275 /* v128.or */, WebAssembly::OR_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1506 { 8283 /* v128.select */, WebAssembly::SELECT_V128_S, Convert_NoOperands, AMFBS_None, { }, },
1507 { 8295 /* v128.store */, WebAssembly::STORE_V128_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1508 { 8295 /* v128.store */, WebAssembly::STORE_V128_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1509 { 8306 /* v128.store16_lane */, WebAssembly::STORE_LANE_I16x8_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1510 { 8306 /* v128.store16_lane */, WebAssembly::STORE_LANE_I16x8_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1511 { 8324 /* v128.store32_lane */, WebAssembly::STORE_LANE_I32x4_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1512 { 8324 /* v128.store32_lane */, WebAssembly::STORE_LANE_I32x4_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1513 { 8342 /* v128.store64_lane */, WebAssembly::STORE_LANE_I64x2_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1514 { 8342 /* v128.store64_lane */, WebAssembly::STORE_LANE_I64x2_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1515 { 8360 /* v128.store8_lane */, WebAssembly::STORE_LANE_I8x16_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1516 { 8360 /* v128.store8_lane */, WebAssembly::STORE_LANE_I8x16_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1517 { 8377 /* v128.xor */, WebAssembly::XOR_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1518};
1519
1520#include "llvm/Support/Debug.h"
1521#include "llvm/Support/Format.h"
1522
1523unsigned WebAssemblyAsmParser::
1524MatchInstructionImpl(const OperandVector &Operands,
1525 MCInst &Inst,
1526 uint64_t &ErrorInfo,
1527 FeatureBitset &MissingFeatures,
1528 bool matchingInlineAsm, unsigned VariantID) {
1529 // Eliminate obvious mismatches.
1530 if (Operands.size() > 17) {
1531 ErrorInfo = 17;
1532 return Match_InvalidOperand;
1533 }
1534
1535 // Get the current feature set.
1536 const FeatureBitset &AvailableFeatures = getAvailableFeatures();
1537
1538 // Get the instruction mnemonic, which is the first token.
1539 StringRef Mnemonic = ((WebAssemblyOperand &)*Operands[0]).getToken();
1540
1541 // Some state to try to produce better error messages.
1542 bool HadMatchOtherThanFeatures = false;
1543 bool HadMatchOtherThanPredicate = false;
1544 unsigned RetCode = Match_InvalidOperand;
1545 MissingFeatures.set();
1546 // Set ErrorInfo to the operand that mismatches if it is
1547 // wrong for all instances of the instruction.
1548 ErrorInfo = ~0ULL;
1549 // Find the appropriate table for this asm variant.
1550 const MatchEntry *Start, *End;
1551 switch (VariantID) {
1552 default: llvm_unreachable("invalid variant!");
1553 case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break;
1554 }
1555 // Search the table.
1556 auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode());
1557
1558 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "AsmMatcher: found " <<
1559 std::distance(MnemonicRange.first, MnemonicRange.second) <<
1560 " encodings with mnemonic '" << Mnemonic << "'\n");
1561
1562 // Return a more specific error code if no mnemonics match.
1563 if (MnemonicRange.first == MnemonicRange.second)
1564 return Match_MnemonicFail;
1565
1566 for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second;
1567 it != ie; ++it) {
1568 const FeatureBitset &RequiredFeatures = FeatureBitsets[it->RequiredFeaturesIdx];
1569 bool HasRequiredFeatures =
1570 (AvailableFeatures & RequiredFeatures) == RequiredFeatures;
1571 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Trying to match opcode "
1572 << MII.getName(it->Opcode) << "\n");
1573 // equal_range guarantees that instruction mnemonic matches.
1574 assert(Mnemonic == it->getMnemonic());
1575 bool OperandsValid = true;
1576 for (unsigned FormalIdx = 0, ActualIdx = 1; FormalIdx != 16; ++FormalIdx) {
1577 auto Formal = static_cast<MatchClassKind>(it->Classes[FormalIdx]);
1578 DEBUG_WITH_TYPE("asm-matcher",
1579 dbgs() << " Matching formal operand class " << getMatchClassName(Formal)
1580 << " against actual operand at index " << ActualIdx);
1581 if (ActualIdx < Operands.size())
1582 DEBUG_WITH_TYPE("asm-matcher", dbgs() << " (";
1583 Operands[ActualIdx]->print(dbgs(), *getContext().getAsmInfo()); dbgs() << "): ");
1584 else
1585 DEBUG_WITH_TYPE("asm-matcher", dbgs() << ": ");
1586 if (ActualIdx >= Operands.size()) {
1587 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "actual operand index out of range\n");
1588 if (Formal == InvalidMatchClass) {
1589 break;
1590 }
1591 if (isSubclass(Formal, OptionalMatchClass)) {
1592 continue;
1593 }
1594 OperandsValid = false;
1595 ErrorInfo = ActualIdx;
1596 break;
1597 }
1598 MCParsedAsmOperand &Actual = *Operands[ActualIdx];
1599 unsigned Diag = validateOperandClass(Actual, Formal, *STI);
1600 if (Diag == Match_Success) {
1601 DEBUG_WITH_TYPE("asm-matcher",
1602 dbgs() << "match success using generic matcher\n");
1603 ++ActualIdx;
1604 continue;
1605 }
1606 // If the generic handler indicates an invalid operand
1607 // failure, check for a special case.
1608 if (Diag != Match_Success) {
1609 unsigned TargetDiag = validateTargetOperandClass(Actual, Formal);
1610 if (TargetDiag == Match_Success) {
1611 DEBUG_WITH_TYPE("asm-matcher",
1612 dbgs() << "match success using target matcher\n");
1613 ++ActualIdx;
1614 continue;
1615 }
1616 // If the target matcher returned a specific error code use
1617 // that, else use the one from the generic matcher.
1618 if (TargetDiag != Match_InvalidOperand && HasRequiredFeatures)
1619 Diag = TargetDiag;
1620 }
1621 // If current formal operand wasn't matched and it is optional
1622 // then try to match next formal operand
1623 if (Diag == Match_InvalidOperand && isSubclass(Formal, OptionalMatchClass)) {
1624 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "ignoring optional operand\n");
1625 continue;
1626 }
1627 // If this operand is broken for all of the instances of this
1628 // mnemonic, keep track of it so we can report loc info.
1629 // If we already had a match that only failed due to a
1630 // target predicate, that diagnostic is preferred.
1631 if (!HadMatchOtherThanPredicate &&
1632 (it == MnemonicRange.first || ErrorInfo <= ActualIdx)) {
1633 if (HasRequiredFeatures && (ErrorInfo != ActualIdx || Diag != Match_InvalidOperand))
1634 RetCode = Diag;
1635 ErrorInfo = ActualIdx;
1636 }
1637 // Otherwise, just reject this instance of the mnemonic.
1638 OperandsValid = false;
1639 break;
1640 }
1641
1642 if (!OperandsValid) {
1643 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Opcode result: multiple "
1644 "operand mismatches, ignoring "
1645 "this opcode\n");
1646 continue;
1647 }
1648 if (!HasRequiredFeatures) {
1649 HadMatchOtherThanFeatures = true;
1650 FeatureBitset NewMissingFeatures = RequiredFeatures & ~AvailableFeatures;
1651 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Missing target features:";
1652 for (unsigned I = 0, E = NewMissingFeatures.size(); I != E; ++I)
1653 if (NewMissingFeatures[I])
1654 dbgs() << ' ' << I;
1655 dbgs() << "\n");
1656 if (NewMissingFeatures.count() <=
1657 MissingFeatures.count())
1658 MissingFeatures = NewMissingFeatures;
1659 continue;
1660 }
1661
1662 Inst.clear();
1663
1664 Inst.setOpcode(it->Opcode);
1665 // We have a potential match but have not rendered the operands.
1666 // Check the target predicate to handle any context sensitive
1667 // constraints.
1668 // For example, Ties that are referenced multiple times must be
1669 // checked here to ensure the input is the same for each match
1670 // constraints. If we leave it any later the ties will have been
1671 // canonicalized
1672 unsigned MatchResult;
1673 if ((MatchResult = checkEarlyTargetMatchPredicate(Inst, Operands)) != Match_Success) {
1674 Inst.clear();
1675 DEBUG_WITH_TYPE(
1676 "asm-matcher",
1677 dbgs() << "Early target match predicate failed with diag code "
1678 << MatchResult << "\n");
1679 RetCode = MatchResult;
1680 HadMatchOtherThanPredicate = true;
1681 continue;
1682 }
1683
1684 if (matchingInlineAsm) {
1685 convertToMapAndConstraints(it->ConvertFn, Operands);
1686 if (!checkAsmTiedOperandConstraints(*this, it->ConvertFn, Operands,
1687 ErrorInfo))
1688 return Match_InvalidTiedOperand;
1689
1690 return Match_Success;
1691 }
1692
1693 // We have selected a definite instruction, convert the parsed
1694 // operands into the appropriate MCInst.
1695 convertToMCInst(it->ConvertFn, Inst, it->Opcode, Operands);
1696
1697 // We have a potential match. Check the target predicate to
1698 // handle any context sensitive constraints.
1699 if ((MatchResult = checkTargetMatchPredicate(Inst)) != Match_Success) {
1700 DEBUG_WITH_TYPE("asm-matcher",
1701 dbgs() << "Target match predicate failed with diag code "
1702 << MatchResult << "\n");
1703 Inst.clear();
1704 RetCode = MatchResult;
1705 HadMatchOtherThanPredicate = true;
1706 continue;
1707 }
1708
1709 if (!checkAsmTiedOperandConstraints(*this, it->ConvertFn, Operands,
1710 ErrorInfo))
1711 return Match_InvalidTiedOperand;
1712
1713 DEBUG_WITH_TYPE(
1714 "asm-matcher",
1715 dbgs() << "Opcode result: complete match, selecting this opcode\n");
1716 return Match_Success;
1717 }
1718
1719 // Okay, we had no match. Try to return a useful error code.
1720 if (HadMatchOtherThanPredicate || !HadMatchOtherThanFeatures)
1721 return RetCode;
1722
1723 ErrorInfo = 0;
1724 return Match_MissingFeature;
1725}
1726
1727#endif // GET_MATCHER_IMPLEMENTATION
1728
1729
1730#ifdef GET_MNEMONIC_SPELL_CHECKER
1731#undef GET_MNEMONIC_SPELL_CHECKER
1732
1733static std::string WebAssemblyMnemonicSpellCheck(StringRef S, const FeatureBitset &FBS, unsigned VariantID) {
1734 const unsigned MaxEditDist = 2;
1735 std::vector<StringRef> Candidates;
1736 StringRef Prev = "";
1737
1738 // Find the appropriate table for this asm variant.
1739 const MatchEntry *Start, *End;
1740 switch (VariantID) {
1741 default: llvm_unreachable("invalid variant!");
1742 case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break;
1743 }
1744
1745 for (auto I = Start; I < End; I++) {
1746 // Ignore unsupported instructions.
1747 const FeatureBitset &RequiredFeatures = FeatureBitsets[I->RequiredFeaturesIdx];
1748 if ((FBS & RequiredFeatures) != RequiredFeatures)
1749 continue;
1750
1751 StringRef T = I->getMnemonic();
1752 // Avoid recomputing the edit distance for the same string.
1753 if (T == Prev)
1754 continue;
1755
1756 Prev = T;
1757 unsigned Dist = S.edit_distance(T, false, MaxEditDist);
1758 if (Dist <= MaxEditDist)
1759 Candidates.push_back(T);
1760 }
1761
1762 if (Candidates.empty())
1763 return "";
1764
1765 std::string Res = ", did you mean: ";
1766 unsigned i = 0;
1767 for (; i < Candidates.size() - 1; i++)
1768 Res += Candidates[i].str() + ", ";
1769 return Res + Candidates[i].str() + "?";
1770}
1771
1772#endif // GET_MNEMONIC_SPELL_CHECKER
1773
1774
1775#ifdef GET_MNEMONIC_CHECKER
1776#undef GET_MNEMONIC_CHECKER
1777
1778static bool WebAssemblyCheckMnemonic(StringRef Mnemonic,
1779 const FeatureBitset &AvailableFeatures,
1780 unsigned VariantID) {
1781 // Find the appropriate table for this asm variant.
1782 const MatchEntry *Start, *End;
1783 switch (VariantID) {
1784 default: llvm_unreachable("invalid variant!");
1785 case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break;
1786 }
1787
1788 // Search the table.
1789 auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode());
1790
1791 if (MnemonicRange.first == MnemonicRange.second)
1792 return false;
1793
1794 for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second;
1795 it != ie; ++it) {
1796 const FeatureBitset &RequiredFeatures =
1797 FeatureBitsets[it->RequiredFeaturesIdx];
1798 if ((AvailableFeatures & RequiredFeatures) == RequiredFeatures)
1799 return true;
1800 }
1801 return false;
1802}
1803
1804#endif // GET_MNEMONIC_CHECKER
1805
1806