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_addTypeListOperands,
125 CVT_95_addCatchListOperands,
126 CVT_NUM_CONVERTERS
127};
128
129enum InstructionConversionKind {
130 Convert__Imm1_0,
131 Convert__BrList1_0,
132 Convert__Imm1_0__Imm1_1,
133 Convert_NoOperands,
134 Convert__imm_95_0__imm_95_0,
135 Convert__imm_95_0,
136 Convert__FPImmf321_0,
137 Convert__Imm1_1__Imm1_0,
138 Convert__FPImmf641_0,
139 Convert__Imm1_0__Imm1_2__Imm1_1,
140 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,
141 Convert__TypeList1_0,
142 Convert__Imm1_0__CatchList1_1,
143 Convert__FPImmf641_0__FPImmf641_1,
144 Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3,
145 Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3,
146 Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7,
147 Convert__Imm1_1__Imm1_0__Imm1_2,
148 CVT_NUM_SIGNATURES
149};
150
151} // end anonymous namespace
152
153static const uint8_t ConversionTable[CVT_NUM_SIGNATURES][33] = {
154 // Convert__Imm1_0
155 { CVT_95_addImmOperands, 1, CVT_Done },
156 // Convert__BrList1_0
157 { CVT_95_addBrListOperands, 1, CVT_Done },
158 // Convert__Imm1_0__Imm1_1
159 { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_Done },
160 // Convert_NoOperands
161 { CVT_Done },
162 // Convert__imm_95_0__imm_95_0
163 { CVT_imm_95_0, 0, CVT_imm_95_0, 0, CVT_Done },
164 // Convert__imm_95_0
165 { CVT_imm_95_0, 0, CVT_Done },
166 // Convert__FPImmf321_0
167 { CVT_95_addFPImmf32Operands, 1, CVT_Done },
168 // Convert__Imm1_1__Imm1_0
169 { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_Done },
170 // Convert__FPImmf641_0
171 { CVT_95_addFPImmf64Operands, 1, CVT_Done },
172 // Convert__Imm1_0__Imm1_2__Imm1_1
173 { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 2, CVT_Done },
174 // 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
175 { 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 },
176 // Convert__TypeList1_0
177 { CVT_95_addTypeListOperands, 1, CVT_Done },
178 // Convert__Imm1_0__CatchList1_1
179 { CVT_95_addImmOperands, 1, CVT_95_addCatchListOperands, 2, CVT_Done },
180 // Convert__FPImmf641_0__FPImmf641_1
181 { CVT_95_addFPImmf64Operands, 1, CVT_95_addFPImmf64Operands, 2, CVT_Done },
182 // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3
183 { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done },
184 // Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3
185 { CVT_95_addFPImmf32Operands, 1, CVT_95_addFPImmf32Operands, 2, CVT_95_addFPImmf32Operands, 3, CVT_95_addFPImmf32Operands, 4, CVT_Done },
186 // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7
187 { 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 },
188 // Convert__Imm1_1__Imm1_0__Imm1_2
189 { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 3, CVT_Done },
190};
191
192void WebAssemblyAsmParser::
193convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
194 const OperandVector &Operands) {
195 assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
196 const uint8_t *Converter = ConversionTable[Kind];
197 Inst.setOpcode(Opcode);
198 for (const uint8_t *p = Converter; *p; p += 2) {
199 unsigned OpIdx = *(p + 1);
200 switch (*p) {
201 default: llvm_unreachable("invalid conversion entry!");
202 case CVT_Reg:
203 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addRegOperands(Inst, 1);
204 break;
205 case CVT_Tied: {
206 assert(*(p + 1) < (size_t)(std::end(TiedAsmOperandTable) -
207 std::begin(TiedAsmOperandTable)) &&
208 "Tied operand not found");
209 unsigned TiedResOpnd = TiedAsmOperandTable[*(p + 1)][0];
210 if (TiedResOpnd != (uint8_t)-1)
211 Inst.addOperand(Inst.getOperand(TiedResOpnd));
212 break;
213 }
214 case CVT_95_addImmOperands:
215 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addImmOperands(Inst, 1);
216 break;
217 case CVT_95_addBrListOperands:
218 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addBrListOperands(Inst, 1);
219 break;
220 case CVT_imm_95_0:
221 Inst.addOperand(MCOperand::createImm(0));
222 break;
223 case CVT_95_addFPImmf32Operands:
224 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addFPImmf32Operands(Inst, 1);
225 break;
226 case CVT_95_addFPImmf64Operands:
227 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addFPImmf64Operands(Inst, 1);
228 break;
229 case CVT_95_addTypeListOperands:
230 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addTypeListOperands(Inst, 1);
231 break;
232 case CVT_95_addCatchListOperands:
233 static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addCatchListOperands(Inst, 1);
234 break;
235 }
236 }
237}
238
239void WebAssemblyAsmParser::
240convertToMapAndConstraints(unsigned Kind,
241 const OperandVector &Operands) {
242 assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
243 unsigned NumMCOperands = 0;
244 const uint8_t *Converter = ConversionTable[Kind];
245 for (const uint8_t *p = Converter; *p; p += 2) {
246 switch (*p) {
247 default: llvm_unreachable("invalid conversion entry!");
248 case CVT_Reg:
249 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
250 Operands[*(p + 1)]->setConstraint("r");
251 ++NumMCOperands;
252 break;
253 case CVT_Tied:
254 ++NumMCOperands;
255 break;
256 case CVT_95_addImmOperands:
257 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
258 Operands[*(p + 1)]->setConstraint("m");
259 NumMCOperands += 1;
260 break;
261 case CVT_95_addBrListOperands:
262 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
263 Operands[*(p + 1)]->setConstraint("m");
264 NumMCOperands += 1;
265 break;
266 case CVT_imm_95_0:
267 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
268 Operands[*(p + 1)]->setConstraint("");
269 ++NumMCOperands;
270 break;
271 case CVT_95_addFPImmf32Operands:
272 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
273 Operands[*(p + 1)]->setConstraint("m");
274 NumMCOperands += 1;
275 break;
276 case CVT_95_addFPImmf64Operands:
277 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
278 Operands[*(p + 1)]->setConstraint("m");
279 NumMCOperands += 1;
280 break;
281 case CVT_95_addTypeListOperands:
282 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
283 Operands[*(p + 1)]->setConstraint("m");
284 NumMCOperands += 1;
285 break;
286 case CVT_95_addCatchListOperands:
287 Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);
288 Operands[*(p + 1)]->setConstraint("m");
289 NumMCOperands += 1;
290 break;
291 }
292 }
293}
294
295namespace {
296
297/// MatchClassKind - The kinds of classes which participate in
298/// instruction matching.
299enum MatchClassKind {
300 InvalidMatchClass = 0,
301 OptionalMatchClass = 1,
302 MCK_LAST_TOKEN = OptionalMatchClass,
303 MCK_EXNREF, // register class 'EXNREF'
304 MCK_EXTERNREF, // register class 'EXTERNREF'
305 MCK_F32, // register class 'F32'
306 MCK_F64, // register class 'F64'
307 MCK_FUNCREF, // register class 'FUNCREF'
308 MCK_V128, // register class 'V128'
309 MCK_I32, // register class 'I32'
310 MCK_I64, // register class 'I64'
311 MCK_LAST_REGISTER = MCK_I64,
312 MCK_RegByHwMode_wasm_ptr_rc, // register class by hwmode
313 MCK_LAST_REGCLASS_BY_HWMODE = MCK_RegByHwMode_wasm_ptr_rc,
314 MCK_BrList, // user defined class 'BrListAsmOperand'
315 MCK_CatchList, // user defined class 'CatchListAsmOperand'
316 MCK_Imm, // user defined class 'ImmAsmOperand'
317 MCK_TypeList, // user defined class 'TypeListAsmOperand'
318 MCK_FPImmf32, // user defined class 'anonymous_13825'
319 MCK_FPImmf64, // user defined class 'anonymous_13826'
320 NumMatchClassKinds
321};
322
323} // end anonymous namespace
324
325static unsigned getDiagKindFromRegisterClass(MatchClassKind RegisterClass) {
326 return MCTargetAsmParser::Match_InvalidOperand;
327}
328
329static MatchClassKind matchTokenString(StringRef Name) {
330 return InvalidMatchClass;
331}
332
333/// isSubclass - Compute whether \p A is a subclass of \p B.
334static bool isSubclass(MatchClassKind A, MatchClassKind B) {
335 if (A == B)
336 return true;
337
338 [[maybe_unused]] static constexpr struct {
339 uint32_t Offset;
340 uint16_t Start;
341 uint16_t Length;
342 } Table[] = {
343 {0, 0, 0},
344 {0, 0, 0},
345 {0, 0, 0},
346 {0, 0, 0},
347 {0, 0, 0},
348 {0, 0, 0},
349 {0, 0, 0},
350 {0, 0, 0},
351 {0, 0, 0},
352 {0, 0, 0},
353 {0, 0, 0},
354 {0, 0, 0},
355 {0, 0, 0},
356 {0, 0, 0},
357 {0, 0, 0},
358 {0, 0, 0},
359 {0, 0, 0},
360 };
361
362 return false;
363}
364
365static unsigned validateOperandClass(MCParsedAsmOperand &GOp, MatchClassKind Kind, const MCSubtargetInfo &STI) {
366 WebAssemblyOperand &Operand = (WebAssemblyOperand &)GOp;
367 if (Kind == InvalidMatchClass)
368 return MCTargetAsmParser::Match_InvalidOperand;
369
370 if (Operand.isToken() && Kind <= MCK_LAST_TOKEN)
371 return isSubclass(matchTokenString(Operand.getToken()), Kind) ?
372 MCTargetAsmParser::Match_Success :
373 MCTargetAsmParser::Match_InvalidOperand;
374
375 switch (Kind) {
376 default: break;
377 case MCK_BrList: {
378 DiagnosticPredicate DP(Operand.isBrList());
379 if (DP.isMatch())
380 return MCTargetAsmParser::Match_Success;
381 break;
382 }
383 case MCK_CatchList: {
384 DiagnosticPredicate DP(Operand.isCatchList());
385 if (DP.isMatch())
386 return MCTargetAsmParser::Match_Success;
387 break;
388 }
389 case MCK_Imm: {
390 DiagnosticPredicate DP(Operand.isImm());
391 if (DP.isMatch())
392 return MCTargetAsmParser::Match_Success;
393 break;
394 }
395 case MCK_TypeList: {
396 DiagnosticPredicate DP(Operand.isTypeList());
397 if (DP.isMatch())
398 return MCTargetAsmParser::Match_Success;
399 break;
400 }
401 case MCK_FPImmf32: {
402 DiagnosticPredicate DP(Operand.isFPImm());
403 if (DP.isMatch())
404 return MCTargetAsmParser::Match_Success;
405 break;
406 }
407 case MCK_FPImmf64: {
408 DiagnosticPredicate DP(Operand.isFPImm());
409 if (DP.isMatch())
410 return MCTargetAsmParser::Match_Success;
411 break;
412 }
413 } // end switch (Kind)
414
415 if (Operand.isReg() && Kind > MCK_LAST_REGISTER && Kind <= MCK_LAST_REGCLASS_BY_HWMODE) {
416 static constexpr MatchClassKind RegClassByHwModeMatchTable[2][1] = {
417 { // DefaultMode
418 MCK_I32, // wasm_ptr_rc
419 },
420 { // WASM64
421 MCK_I64, // wasm_ptr_rc
422 },
423 };
424
425 static_assert(MCK_LAST_REGCLASS_BY_HWMODE - MCK_LAST_REGISTER == 1);
426 const unsigned HwMode = STI.getHwMode(MCSubtargetInfo::HwMode_RegInfo);
427 Kind = RegClassByHwModeMatchTable[HwMode][Kind - (MCK_LAST_REGISTER + 1)];
428 }
429
430 if (Operand.isReg()) {
431 static constexpr uint16_t Table[WebAssembly::NUM_TARGET_REGS] = {
432 InvalidMatchClass,
433 InvalidMatchClass,
434 InvalidMatchClass,
435 MCK_EXNREF,
436 MCK_EXTERNREF,
437 MCK_I32,
438 MCK_I64,
439 MCK_FUNCREF,
440 MCK_I32,
441 MCK_I64,
442 MCK_F32,
443 MCK_F64,
444 MCK_I32,
445 MCK_I64,
446 MCK_V128,
447 };
448
449 MCRegister Reg = Operand.getReg();
450 MatchClassKind OpKind = Reg.isPhysical() ? (MatchClassKind)Table[Reg.id()] : InvalidMatchClass;
451 return isSubclass(OpKind, Kind) ? (unsigned)MCTargetAsmParser::Match_Success :
452 getDiagKindFromRegisterClass(Kind);
453 }
454
455 if (Kind > MCK_LAST_TOKEN && Kind <= MCK_LAST_REGISTER)
456 return getDiagKindFromRegisterClass(Kind);
457
458 return MCTargetAsmParser::Match_InvalidOperand;
459}
460
461#ifndef NDEBUG
462const char *getMatchClassName(MatchClassKind Kind) {
463 switch (Kind) {
464 case InvalidMatchClass: return "InvalidMatchClass";
465 case OptionalMatchClass: return "OptionalMatchClass";
466 case MCK_EXNREF: return "MCK_EXNREF";
467 case MCK_EXTERNREF: return "MCK_EXTERNREF";
468 case MCK_F32: return "MCK_F32";
469 case MCK_F64: return "MCK_F64";
470 case MCK_FUNCREF: return "MCK_FUNCREF";
471 case MCK_V128: return "MCK_V128";
472 case MCK_I32: return "MCK_I32";
473 case MCK_I64: return "MCK_I64";
474 case MCK_RegByHwMode_wasm_ptr_rc: return "MCK_RegByHwMode_wasm_ptr_rc";
475 case MCK_BrList: return "MCK_BrList";
476 case MCK_CatchList: return "MCK_CatchList";
477 case MCK_Imm: return "MCK_Imm";
478 case MCK_TypeList: return "MCK_TypeList";
479 case MCK_FPImmf32: return "MCK_FPImmf32";
480 case MCK_FPImmf64: return "MCK_FPImmf64";
481 case NumMatchClassKinds: return "NumMatchClassKinds";
482 }
483 llvm_unreachable("unhandled MatchClassKind!");
484}
485
486#endif // NDEBUG
487FeatureBitset WebAssemblyAsmParser::
488ComputeAvailableFeatures(const FeatureBitset &FB) const {
489 FeatureBitset Features;
490 if (FB[WebAssembly::FeatureAtomics])
491 Features.set(Feature_HasAtomicsBit);
492 if (FB[WebAssembly::FeatureBulkMemory])
493 Features.set(Feature_HasBulkMemoryBit);
494 if (FB[WebAssembly::FeatureBulkMemoryOpt])
495 Features.set(Feature_HasBulkMemoryOptBit);
496 if (FB[WebAssembly::FeatureCallIndirectOverlong])
497 Features.set(Feature_HasCallIndirectOverlongBit);
498 if (FB[WebAssembly::FeatureExceptionHandling])
499 Features.set(Feature_HasExceptionHandlingBit);
500 if (FB[WebAssembly::FeatureExtendedConst])
501 Features.set(Feature_HasExtendedConstBit);
502 if (FB[WebAssembly::FeatureFP16])
503 Features.set(Feature_HasFP16Bit);
504 if (FB[WebAssembly::FeatureGC])
505 Features.set(Feature_HasGCBit);
506 if (FB[WebAssembly::FeatureMultiMemory])
507 Features.set(Feature_HasMultiMemoryBit);
508 if (FB[WebAssembly::FeatureMultivalue])
509 Features.set(Feature_HasMultivalueBit);
510 if (FB[WebAssembly::FeatureMutableGlobals])
511 Features.set(Feature_HasMutableGlobalsBit);
512 if (FB[WebAssembly::FeatureNontrappingFPToInt])
513 Features.set(Feature_HasNontrappingFPToIntBit);
514 if (!FB[WebAssembly::FeatureNontrappingFPToInt])
515 Features.set(Feature_NotHasNontrappingFPToIntBit);
516 if (FB[WebAssembly::FeatureReferenceTypes])
517 Features.set(Feature_HasReferenceTypesBit);
518 if (FB[WebAssembly::FeatureRelaxedAtomics])
519 Features.set(Feature_HasRelaxedAtomicsBit);
520 if (FB[WebAssembly::FeatureRelaxedSIMD])
521 Features.set(Feature_HasRelaxedSIMDBit);
522 if (FB[WebAssembly::FeatureSignExt])
523 Features.set(Feature_HasSignExtBit);
524 if (FB[WebAssembly::FeatureSIMD128] || FB[WebAssembly::FeatureRelaxedSIMD])
525 Features.set(Feature_HasSIMD128Bit);
526 if (FB[WebAssembly::FeatureTailCall])
527 Features.set(Feature_HasTailCallBit);
528 if (FB[WebAssembly::FeatureWideArithmetic])
529 Features.set(Feature_HasWideArithmeticBit);
530 return Features;
531}
532
533static bool checkAsmTiedOperandConstraints(const WebAssemblyAsmParser&AsmParser,
534 unsigned Kind, const OperandVector &Operands,
535 uint64_t &ErrorInfo) {
536 assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
537 const uint8_t *Converter = ConversionTable[Kind];
538 for (const uint8_t *p = Converter; *p; p += 2) {
539 switch (*p) {
540 case CVT_Tied: {
541 unsigned OpIdx = *(p + 1);
542 assert(OpIdx < (size_t)(std::end(TiedAsmOperandTable) -
543 std::begin(TiedAsmOperandTable)) &&
544 "Tied operand not found");
545 unsigned OpndNum1 = TiedAsmOperandTable[OpIdx][1];
546 unsigned OpndNum2 = TiedAsmOperandTable[OpIdx][2];
547 if (OpndNum1 != OpndNum2) {
548 auto &SrcOp1 = Operands[OpndNum1];
549 auto &SrcOp2 = Operands[OpndNum2];
550 if (!AsmParser.areEqualRegs(*SrcOp1, *SrcOp2)) {
551 ErrorInfo = OpndNum2;
552 return false;
553 }
554 }
555 break;
556 }
557 default:
558 break;
559 }
560 }
561 return true;
562}
563
564static const char MnemonicTable[] =
565 "\014atomic.fence\005block\002br\005br_if\010br_table\004call\015call_in"
566 "direct\013call_params\010call_ref\014call_results\005catch\tcatch_all\010"
567 "catchret\ncleanupret\016compiler_fence\tdata.drop\010delegate\004drop\004"
568 "else\003end\tend_block\014end_function\006end_if\010end_loop\007end_try"
569 "\015end_try_table\015exnref.select\020externref.select\tf16x8.abs\tf16x"
570 "8.add\nf16x8.ceil\025f16x8.convert_i16x8_s\025f16x8.convert_i16x8_u\027"
571 "f16x8.demote_f32x4_zero\tf16x8.div\010f16x8.eq\022f16x8.extract_lane\013"
572 "f16x8.floor\010f16x8.ge\010f16x8.gt\010f16x8.le\010f16x8.lt\nf16x8.madd"
573 "\tf16x8.max\tf16x8.min\tf16x8.mul\010f16x8.ne\015f16x8.nearest\tf16x8.n"
574 "eg\013f16x8.nmadd\nf16x8.pmax\nf16x8.pmin\022f16x8.replace_lane\013f16x"
575 "8.splat\nf16x8.sqrt\tf16x8.sub\013f16x8.trunc\007f32.abs\007f32.add\010"
576 "f32.ceil\tf32.const\021f32.convert_i32_s\021f32.convert_i32_u\021f32.co"
577 "nvert_i64_s\021f32.convert_i64_u\014f32.copysign\016f32.demote_f64\007f"
578 "32.div\006f32.eq\tf32.floor\006f32.ge\006f32.gt\006f32.le\010f32.load\014"
579 "f32.load_f16\006f32.lt\007f32.max\007f32.min\007f32.mul\006f32.ne\013f3"
580 "2.nearest\007f32.neg\023f32.reinterpret_i32\nf32.select\010f32.sqrt\tf3"
581 "2.store\015f32.store_f16\007f32.sub\tf32.trunc\tf32x4.abs\tf32x4.add\nf"
582 "32x4.ceil\025f32x4.convert_i32x4_s\025f32x4.convert_i32x4_u\027f32x4.de"
583 "mote_f64x2_zero\tf32x4.div\010f32x4.eq\022f32x4.extract_lane\013f32x4.f"
584 "loor\010f32x4.ge\010f32x4.gt\010f32x4.le\010f32x4.lt\tf32x4.max\tf32x4."
585 "min\tf32x4.mul\010f32x4.ne\015f32x4.nearest\tf32x4.neg\nf32x4.pmax\nf32"
586 "x4.pmin\027f32x4.promote_low_f16x8 f32x4.relaxed_dot_bf16x8_add_f32\022"
587 "f32x4.relaxed_madd\021f32x4.relaxed_max\021f32x4.relaxed_min\023f32x4.r"
588 "elaxed_nmadd\022f32x4.replace_lane\013f32x4.splat\nf32x4.sqrt\tf32x4.su"
589 "b\013f32x4.trunc\007f64.abs\007f64.add\010f64.ceil\tf64.const\021f64.co"
590 "nvert_i32_s\021f64.convert_i32_u\021f64.convert_i64_s\021f64.convert_i6"
591 "4_u\014f64.copysign\007f64.div\006f64.eq\tf64.floor\006f64.ge\006f64.gt"
592 "\006f64.le\010f64.load\006f64.lt\007f64.max\007f64.min\007f64.mul\006f6"
593 "4.ne\013f64.nearest\007f64.neg\017f64.promote_f32\023f64.reinterpret_i6"
594 "4\nf64.select\010f64.sqrt\tf64.store\007f64.sub\tf64.trunc\tf64x2.abs\t"
595 "f64x2.add\nf64x2.ceil\031f64x2.convert_low_i32x4_s\031f64x2.convert_low"
596 "_i32x4_u\tf64x2.div\010f64x2.eq\022f64x2.extract_lane\013f64x2.floor\010"
597 "f64x2.ge\010f64x2.gt\010f64x2.le\010f64x2.lt\tf64x2.max\tf64x2.min\tf64"
598 "x2.mul\010f64x2.ne\015f64x2.nearest\tf64x2.neg\nf64x2.pmax\nf64x2.pmin\027"
599 "f64x2.promote_low_f32x4\022f64x2.relaxed_madd\021f64x2.relaxed_max\021f"
600 "64x2.relaxed_min\023f64x2.relaxed_nmadd\022f64x2.replace_lane\013f64x2."
601 "splat\nf64x2.sqrt\tf64x2.sub\013f64x2.trunc\016funcref.select\nglobal.g"
602 "et\nglobal.set\ti16x8.abs\ti16x8.add\017i16x8.add_sat_s\017i16x8.add_sa"
603 "t_u\016i16x8.all_true\014i16x8.avgr_u\015i16x8.bitmask\010i16x8.eq\035i"
604 "16x8.extadd_pairwise_i8x16_s\035i16x8.extadd_pairwise_i8x16_u\031i16x8."
605 "extend_high_i8x16_s\031i16x8.extend_high_i8x16_u\030i16x8.extend_low_i8"
606 "x16_s\030i16x8.extend_low_i8x16_u\031i16x8.extmul_high_i8x16_s\031i16x8"
607 ".extmul_high_i8x16_u\030i16x8.extmul_low_i8x16_s\030i16x8.extmul_low_i8"
608 "x16_u\024i16x8.extract_lane_s\024i16x8.extract_lane_u\ni16x8.ge_s\ni16x"
609 "8.ge_u\ni16x8.gt_s\ni16x8.gt_u\ni16x8.le_s\ni16x8.le_u\017i16x8.load8x8"
610 "_s\017i16x8.load8x8_u\ni16x8.lt_s\ni16x8.lt_u\013i16x8.max_s\013i16x8.m"
611 "ax_u\013i16x8.min_s\013i16x8.min_u\ti16x8.mul\024i16x8.narrow_i32x4_s\024"
612 "i16x8.narrow_i32x4_u\010i16x8.ne\ti16x8.neg\023i16x8.q15mulr_sat_s\037i"
613 "16x8.relaxed_dot_i8x16_i7x16_s\030i16x8.relaxed_laneselect\027i16x8.rel"
614 "axed_q15mulr_s\022i16x8.replace_lane\ti16x8.shl\013i16x8.shr_s\013i16x8"
615 ".shr_u\013i16x8.splat\ti16x8.sub\017i16x8.sub_sat_s\017i16x8.sub_sat_u\027"
616 "i16x8.trunc_sat_f16x8_s\027i16x8.trunc_sat_f16x8_u\007i32.add\007i32.an"
617 "d\017i32.atomic.load\023i32.atomic.load16_u\022i32.atomic.load8_u\022i3"
618 "2.atomic.rmw.add\022i32.atomic.rmw.and\026i32.atomic.rmw.cmpxchg\021i32"
619 ".atomic.rmw.or\022i32.atomic.rmw.sub\023i32.atomic.rmw.xchg\022i32.atom"
620 "ic.rmw.xor\026i32.atomic.rmw16.add_u\026i32.atomic.rmw16.and_u\032i32.a"
621 "tomic.rmw16.cmpxchg_u\025i32.atomic.rmw16.or_u\026i32.atomic.rmw16.sub_"
622 "u\027i32.atomic.rmw16.xchg_u\026i32.atomic.rmw16.xor_u\025i32.atomic.rm"
623 "w8.add_u\025i32.atomic.rmw8.and_u\031i32.atomic.rmw8.cmpxchg_u\024i32.a"
624 "tomic.rmw8.or_u\025i32.atomic.rmw8.sub_u\026i32.atomic.rmw8.xchg_u\025i"
625 "32.atomic.rmw8.xor_u\020i32.atomic.store\022i32.atomic.store16\021i32.a"
626 "tomic.store8\007i32.clz\ti32.const\007i32.ctz\ti32.div_s\ti32.div_u\006"
627 "i32.eq\007i32.eqz\016i32.extend16_s\015i32.extend8_s\010i32.ge_s\010i32"
628 ".ge_u\010i32.gt_s\010i32.gt_u\010i32.le_s\010i32.le_u\010i32.load\014i3"
629 "2.load16_s\014i32.load16_u\013i32.load8_s\013i32.load8_u\010i32.lt_s\010"
630 "i32.lt_u\007i32.mul\006i32.ne\006i32.or\ni32.popcnt\023i32.reinterpret_"
631 "f32\ti32.rem_s\ti32.rem_u\010i32.rotl\010i32.rotr\ni32.select\007i32.sh"
632 "l\ti32.shr_s\ti32.shr_u\ti32.store\013i32.store16\ni32.store8\007i32.su"
633 "b\017i32.trunc_f32_s\017i32.trunc_f32_u\017i32.trunc_f64_s\017i32.trunc"
634 "_f64_u\023i32.trunc_sat_f32_s\023i32.trunc_sat_f32_u\023i32.trunc_sat_f"
635 "64_s\023i32.trunc_sat_f64_u\014i32.wrap_i64\007i32.xor\ti32x4.abs\ti32x"
636 "4.add\016i32x4.all_true\015i32x4.bitmask\021i32x4.dot_i16x8_s\010i32x4."
637 "eq\035i32x4.extadd_pairwise_i16x8_s\035i32x4.extadd_pairwise_i16x8_u\031"
638 "i32x4.extend_high_i16x8_s\031i32x4.extend_high_i16x8_u\030i32x4.extend_"
639 "low_i16x8_s\030i32x4.extend_low_i16x8_u\031i32x4.extmul_high_i16x8_s\031"
640 "i32x4.extmul_high_i16x8_u\030i32x4.extmul_low_i16x8_s\030i32x4.extmul_l"
641 "ow_i16x8_u\022i32x4.extract_lane\ni32x4.ge_s\ni32x4.ge_u\ni32x4.gt_s\ni"
642 "32x4.gt_u\ni32x4.le_s\ni32x4.le_u\020i32x4.load16x4_s\020i32x4.load16x4"
643 "_u\ni32x4.lt_s\ni32x4.lt_u\013i32x4.max_s\013i32x4.max_u\013i32x4.min_s"
644 "\013i32x4.min_u\ti32x4.mul\010i32x4.ne\ti32x4.neg#i32x4.relaxed_dot_i8x"
645 "16_i7x16_add_s\030i32x4.relaxed_laneselect\033i32x4.relaxed_trunc_f32x4"
646 "_s\033i32x4.relaxed_trunc_f32x4_u i32x4.relaxed_trunc_f64x2_s_zero i32x"
647 "4.relaxed_trunc_f64x2_u_zero\022i32x4.replace_lane\ti32x4.shl\013i32x4."
648 "shr_s\013i32x4.shr_u\013i32x4.splat\ti32x4.sub\027i32x4.trunc_sat_f32x4"
649 "_s\027i32x4.trunc_sat_f32x4_u\034i32x4.trunc_sat_f64x2_s_zero\034i32x4."
650 "trunc_sat_f64x2_u_zero\007i64.add\ni64.add128\007i64.and\017i64.atomic."
651 "load\023i64.atomic.load16_u\023i64.atomic.load32_u\022i64.atomic.load8_"
652 "u\022i64.atomic.rmw.add\022i64.atomic.rmw.and\026i64.atomic.rmw.cmpxchg"
653 "\021i64.atomic.rmw.or\022i64.atomic.rmw.sub\023i64.atomic.rmw.xchg\022i"
654 "64.atomic.rmw.xor\026i64.atomic.rmw16.add_u\026i64.atomic.rmw16.and_u\032"
655 "i64.atomic.rmw16.cmpxchg_u\025i64.atomic.rmw16.or_u\026i64.atomic.rmw16"
656 ".sub_u\027i64.atomic.rmw16.xchg_u\026i64.atomic.rmw16.xor_u\026i64.atom"
657 "ic.rmw32.add_u\026i64.atomic.rmw32.and_u\032i64.atomic.rmw32.cmpxchg_u\025"
658 "i64.atomic.rmw32.or_u\026i64.atomic.rmw32.sub_u\027i64.atomic.rmw32.xch"
659 "g_u\026i64.atomic.rmw32.xor_u\025i64.atomic.rmw8.add_u\025i64.atomic.rm"
660 "w8.and_u\031i64.atomic.rmw8.cmpxchg_u\024i64.atomic.rmw8.or_u\025i64.at"
661 "omic.rmw8.sub_u\026i64.atomic.rmw8.xchg_u\025i64.atomic.rmw8.xor_u\020i"
662 "64.atomic.store\022i64.atomic.store16\022i64.atomic.store32\021i64.atom"
663 "ic.store8\007i64.clz\ti64.const\007i64.ctz\ti64.div_s\ti64.div_u\006i64"
664 ".eq\007i64.eqz\016i64.extend16_s\016i64.extend32_s\015i64.extend8_s\020"
665 "i64.extend_i32_s\020i64.extend_i32_u\010i64.ge_s\010i64.ge_u\010i64.gt_"
666 "s\010i64.gt_u\010i64.le_s\010i64.le_u\010i64.load\014i64.load16_s\014i6"
667 "4.load16_u\014i64.load32_s\014i64.load32_u\013i64.load8_s\013i64.load8_"
668 "u\010i64.lt_s\010i64.lt_u\007i64.mul\016i64.mul_wide_s\016i64.mul_wide_"
669 "u\006i64.ne\006i64.or\ni64.popcnt\023i64.reinterpret_f64\ti64.rem_s\ti6"
670 "4.rem_u\010i64.rotl\010i64.rotr\ni64.select\007i64.shl\ti64.shr_s\ti64."
671 "shr_u\ti64.store\013i64.store16\013i64.store32\ni64.store8\007i64.sub\n"
672 "i64.sub128\017i64.trunc_f32_s\017i64.trunc_f32_u\017i64.trunc_f64_s\017"
673 "i64.trunc_f64_u\023i64.trunc_sat_f32_s\023i64.trunc_sat_f32_u\023i64.tr"
674 "unc_sat_f64_s\023i64.trunc_sat_f64_u\007i64.xor\ti64x2.abs\ti64x2.add\016"
675 "i64x2.all_true\015i64x2.bitmask\010i64x2.eq\031i64x2.extend_high_i32x4_"
676 "s\031i64x2.extend_high_i32x4_u\030i64x2.extend_low_i32x4_s\030i64x2.ext"
677 "end_low_i32x4_u\031i64x2.extmul_high_i32x4_s\031i64x2.extmul_high_i32x4"
678 "_u\030i64x2.extmul_low_i32x4_s\030i64x2.extmul_low_i32x4_u\022i64x2.ext"
679 "ract_lane\ni64x2.ge_s\ni64x2.gt_s\ni64x2.le_s\020i64x2.load32x2_s\020i6"
680 "4x2.load32x2_u\ni64x2.lt_s\ti64x2.mul\010i64x2.ne\ti64x2.neg\030i64x2.r"
681 "elaxed_laneselect\022i64x2.replace_lane\ti64x2.shl\013i64x2.shr_s\013i6"
682 "4x2.shr_u\013i64x2.splat\ti64x2.sub\ti8x16.abs\ti8x16.add\017i8x16.add_"
683 "sat_s\017i8x16.add_sat_u\016i8x16.all_true\014i8x16.avgr_u\015i8x16.bit"
684 "mask\010i8x16.eq\024i8x16.extract_lane_s\024i8x16.extract_lane_u\ni8x16"
685 ".ge_s\ni8x16.ge_u\ni8x16.gt_s\ni8x16.gt_u\ni8x16.le_s\ni8x16.le_u\ni8x1"
686 "6.lt_s\ni8x16.lt_u\013i8x16.max_s\013i8x16.max_u\013i8x16.min_s\013i8x1"
687 "6.min_u\024i8x16.narrow_i16x8_s\024i8x16.narrow_i16x8_u\010i8x16.ne\ti8"
688 "x16.neg\014i8x16.popcnt\030i8x16.relaxed_laneselect\025i8x16.relaxed_sw"
689 "izzle\022i8x16.replace_lane\ti8x16.shl\013i8x16.shr_s\013i8x16.shr_u\015"
690 "i8x16.shuffle\013i8x16.splat\ti8x16.sub\017i8x16.sub_sat_s\017i8x16.sub"
691 "_sat_u\015i8x16.swizzle\002if\tlocal.get\tlocal.set\tlocal.tee\004loop\024"
692 "memory.atomic.notify\024memory.atomic.wait32\024memory.atomic.wait64\013"
693 "memory.copy\013memory.fill\013memory.grow\013memory.init\013memory.size"
694 "\003nop\010ref.cast\010ref.func\013ref.is_null\014ref.null_exn\017ref.n"
695 "ull_extern\015ref.null_func\010ref.test\007rethrow\006return\013return_"
696 "call\024return_call_indirect\017return_call_ref\023return_call_results\006"
697 "select\ntable.copy\ntable.fill\ttable.get\ntable.grow\ttable.set\ntable"
698 ".size\005throw\tthrow_ref\003try\ttry_table\013unreachable\010v128.and\013"
699 "v128.andnot\015v128.any_true\016v128.bitselect\nv128.const\tv128.load\020"
700 "v128.load16_lane\021v128.load16_splat\020v128.load32_lane\021v128.load3"
701 "2_splat\020v128.load32_zero\020v128.load64_lane\021v128.load64_splat\020"
702 "v128.load64_zero\017v128.load8_lane\020v128.load8_splat\010v128.not\007"
703 "v128.or\013v128.select\nv128.store\021v128.store16_lane\021v128.store32"
704 "_lane\021v128.store64_lane\020v128.store8_lane\010v128.xor";
705
706// Feature bitsets.
707enum : uint8_t {
708 AMFBS_None,
709 AMFBS_HasAtomics,
710 AMFBS_HasBulkMemoryOpt,
711 AMFBS_HasExceptionHandling,
712 AMFBS_HasFP16,
713 AMFBS_HasGC,
714 AMFBS_HasNontrappingFPToInt,
715 AMFBS_HasReferenceTypes,
716 AMFBS_HasRelaxedSIMD,
717 AMFBS_HasSIMD128,
718 AMFBS_HasSignExt,
719 AMFBS_HasTailCall,
720 AMFBS_HasWideArithmetic,
721 AMFBS_HasReferenceTypes_HasExceptionHandling,
722 AMFBS_HasSIMD128_HasFP16,
723 AMFBS_HasSIMD128_HasRelaxedSIMD,
724 AMFBS_HasTailCall_HasGC,
725};
726
727static constexpr FeatureBitset FeatureBitsets[] = {
728 {}, // AMFBS_None
729 {Feature_HasAtomicsBit, }, // AMFBS_HasAtomics
730 {Feature_HasBulkMemoryOptBit, }, // AMFBS_HasBulkMemoryOpt
731 {Feature_HasExceptionHandlingBit, }, // AMFBS_HasExceptionHandling
732 {Feature_HasFP16Bit, }, // AMFBS_HasFP16
733 {Feature_HasGCBit, }, // AMFBS_HasGC
734 {Feature_HasNontrappingFPToIntBit, }, // AMFBS_HasNontrappingFPToInt
735 {Feature_HasReferenceTypesBit, }, // AMFBS_HasReferenceTypes
736 {Feature_HasRelaxedSIMDBit, }, // AMFBS_HasRelaxedSIMD
737 {Feature_HasSIMD128Bit, }, // AMFBS_HasSIMD128
738 {Feature_HasSignExtBit, }, // AMFBS_HasSignExt
739 {Feature_HasTailCallBit, }, // AMFBS_HasTailCall
740 {Feature_HasWideArithmeticBit, }, // AMFBS_HasWideArithmetic
741 {Feature_HasReferenceTypesBit, Feature_HasExceptionHandlingBit, }, // AMFBS_HasReferenceTypes_HasExceptionHandling
742 {Feature_HasSIMD128Bit, Feature_HasFP16Bit, }, // AMFBS_HasSIMD128_HasFP16
743 {Feature_HasSIMD128Bit, Feature_HasRelaxedSIMDBit, }, // AMFBS_HasSIMD128_HasRelaxedSIMD
744 {Feature_HasTailCallBit, Feature_HasGCBit, }, // AMFBS_HasTailCall_HasGC
745};
746
747namespace {
748 struct MatchEntry {
749 uint16_t Mnemonic;
750 uint32_t Opcode;
751 uint8_t ConvertFn;
752 uint8_t RequiredFeaturesIdx;
753 uint8_t Classes[16];
754 StringRef getMnemonic() const {
755 return StringRef(MnemonicTable + Mnemonic + 1,
756 MnemonicTable[Mnemonic]);
757 }
758 };
759
760 // Predicate for searching for an opcode.
761 struct LessOpcode {
762 bool operator()(const MatchEntry &LHS, StringRef RHS) {
763 return LHS.getMnemonic() < RHS;
764 }
765 bool operator()(StringRef LHS, const MatchEntry &RHS) {
766 return LHS < RHS.getMnemonic();
767 }
768 bool operator()(const MatchEntry &LHS, const MatchEntry &RHS) {
769 return LHS.getMnemonic() < RHS.getMnemonic();
770 }
771 };
772} // end anonymous namespace
773
774static const MatchEntry MatchTable0[] = {
775 { 0 /* atomic.fence */, WebAssembly::ATOMIC_FENCE_S, Convert__Imm1_0, AMFBS_HasAtomics, { MCK_Imm }, },
776 { 13 /* block */, WebAssembly::BLOCK_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
777 { 19 /* br */, WebAssembly::BR_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
778 { 22 /* br_if */, WebAssembly::BR_IF_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
779 { 28 /* br_table */, WebAssembly::BR_TABLE_I32_S, Convert__BrList1_0, AMFBS_None, { MCK_BrList }, },
780 { 28 /* br_table */, WebAssembly::BR_TABLE_I64_S, Convert__BrList1_0, AMFBS_None, { MCK_BrList }, },
781 { 37 /* call */, WebAssembly::CALL_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
782 { 42 /* call_indirect */, WebAssembly::CALL_INDIRECT_S, Convert__Imm1_0__Imm1_1, AMFBS_None, { MCK_Imm, MCK_Imm }, },
783 { 56 /* call_params */, WebAssembly::CALL_PARAMS_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
784 { 68 /* call_ref */, WebAssembly::CALL_REF_S, Convert__Imm1_0, AMFBS_HasGC, { MCK_Imm }, },
785 { 77 /* call_results */, WebAssembly::CALL_RESULTS_S, Convert_NoOperands, AMFBS_None, { }, },
786 { 90 /* catch */, WebAssembly::CATCH_LEGACY_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
787 { 96 /* catch_all */, WebAssembly::CATCH_ALL_LEGACY_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, },
788 { 106 /* catchret */, WebAssembly::CATCHRET_S, Convert__imm_95_0__imm_95_0, AMFBS_HasExceptionHandling, { }, },
789 { 115 /* cleanupret */, WebAssembly::CLEANUPRET_S, Convert__imm_95_0, AMFBS_HasExceptionHandling, { }, },
790 { 126 /* compiler_fence */, WebAssembly::COMPILER_FENCE_S, Convert_NoOperands, AMFBS_HasAtomics, { }, },
791 { 141 /* data.drop */, WebAssembly::DATA_DROP_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, },
792 { 151 /* delegate */, WebAssembly::DELEGATE_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
793 { 160 /* drop */, WebAssembly::DROP_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes_HasExceptionHandling, { }, },
794 { 160 /* drop */, WebAssembly::DROP_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
795 { 160 /* drop */, WebAssembly::DROP_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
796 { 160 /* drop */, WebAssembly::DROP_V128_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
797 { 160 /* drop */, WebAssembly::DROP_F32_S, Convert_NoOperands, AMFBS_None, { }, },
798 { 160 /* drop */, WebAssembly::DROP_F64_S, Convert_NoOperands, AMFBS_None, { }, },
799 { 160 /* drop */, WebAssembly::DROP_I32_S, Convert_NoOperands, AMFBS_None, { }, },
800 { 160 /* drop */, WebAssembly::DROP_I64_S, Convert_NoOperands, AMFBS_None, { }, },
801 { 165 /* else */, WebAssembly::ELSE_S, Convert_NoOperands, AMFBS_None, { }, },
802 { 170 /* end */, WebAssembly::END_S, Convert_NoOperands, AMFBS_None, { }, },
803 { 174 /* end_block */, WebAssembly::END_BLOCK_S, Convert_NoOperands, AMFBS_None, { }, },
804 { 184 /* end_function */, WebAssembly::END_FUNCTION_S, Convert_NoOperands, AMFBS_None, { }, },
805 { 197 /* end_if */, WebAssembly::END_IF_S, Convert_NoOperands, AMFBS_None, { }, },
806 { 204 /* end_loop */, WebAssembly::END_LOOP_S, Convert_NoOperands, AMFBS_None, { }, },
807 { 213 /* end_try */, WebAssembly::END_TRY_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, },
808 { 221 /* end_try_table */, WebAssembly::END_TRY_TABLE_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, },
809 { 235 /* exnref.select */, WebAssembly::SELECT_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
810 { 249 /* externref.select */, WebAssembly::SELECT_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
811 { 266 /* f16x8.abs */, WebAssembly::ABS_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
812 { 276 /* f16x8.add */, WebAssembly::ADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
813 { 286 /* f16x8.ceil */, WebAssembly::CEIL_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
814 { 297 /* f16x8.convert_i16x8_s */, WebAssembly::sint_to_fp_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
815 { 319 /* f16x8.convert_i16x8_u */, WebAssembly::uint_to_fp_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
816 { 341 /* f16x8.demote_f32x4_zero */, WebAssembly::demote_zero_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
817 { 365 /* f16x8.div */, WebAssembly::DIV_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
818 { 375 /* f16x8.eq */, WebAssembly::EQ_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
819 { 384 /* f16x8.extract_lane */, WebAssembly::EXTRACT_LANE_F16x8_S, Convert__Imm1_0, AMFBS_HasFP16, { MCK_Imm }, },
820 { 403 /* f16x8.floor */, WebAssembly::FLOOR_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
821 { 415 /* f16x8.ge */, WebAssembly::GE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
822 { 424 /* f16x8.gt */, WebAssembly::GT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
823 { 433 /* f16x8.le */, WebAssembly::LE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
824 { 442 /* f16x8.lt */, WebAssembly::LT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
825 { 451 /* f16x8.madd */, WebAssembly::MADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
826 { 462 /* f16x8.max */, WebAssembly::MAX_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
827 { 472 /* f16x8.min */, WebAssembly::MIN_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
828 { 482 /* f16x8.mul */, WebAssembly::MUL_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
829 { 492 /* f16x8.ne */, WebAssembly::NE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
830 { 501 /* f16x8.nearest */, WebAssembly::NEAREST_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
831 { 515 /* f16x8.neg */, WebAssembly::NEG_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
832 { 525 /* f16x8.nmadd */, WebAssembly::NMADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
833 { 537 /* f16x8.pmax */, WebAssembly::PMAX_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
834 { 548 /* f16x8.pmin */, WebAssembly::PMIN_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
835 { 559 /* f16x8.replace_lane */, WebAssembly::REPLACE_LANE_F16x8_S, Convert__Imm1_0, AMFBS_HasFP16, { MCK_Imm }, },
836 { 578 /* f16x8.splat */, WebAssembly::SPLAT_F16x8_S, Convert_NoOperands, AMFBS_HasFP16, { }, },
837 { 590 /* f16x8.sqrt */, WebAssembly::SQRT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
838 { 601 /* f16x8.sub */, WebAssembly::SUB_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
839 { 611 /* f16x8.trunc */, WebAssembly::TRUNC_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
840 { 623 /* f32.abs */, WebAssembly::ABS_F32_S, Convert_NoOperands, AMFBS_None, { }, },
841 { 631 /* f32.add */, WebAssembly::ADD_F32_S, Convert_NoOperands, AMFBS_None, { }, },
842 { 639 /* f32.ceil */, WebAssembly::CEIL_F32_S, Convert_NoOperands, AMFBS_None, { }, },
843 { 648 /* f32.const */, WebAssembly::CONST_F32_S, Convert__FPImmf321_0, AMFBS_None, { MCK_FPImmf32 }, },
844 { 658 /* f32.convert_i32_s */, WebAssembly::F32_CONVERT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
845 { 676 /* f32.convert_i32_u */, WebAssembly::F32_CONVERT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
846 { 694 /* f32.convert_i64_s */, WebAssembly::F32_CONVERT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
847 { 712 /* f32.convert_i64_u */, WebAssembly::F32_CONVERT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
848 { 730 /* f32.copysign */, WebAssembly::COPYSIGN_F32_S, Convert_NoOperands, AMFBS_None, { }, },
849 { 743 /* f32.demote_f64 */, WebAssembly::F32_DEMOTE_F64_S, Convert_NoOperands, AMFBS_None, { }, },
850 { 758 /* f32.div */, WebAssembly::DIV_F32_S, Convert_NoOperands, AMFBS_None, { }, },
851 { 766 /* f32.eq */, WebAssembly::EQ_F32_S, Convert_NoOperands, AMFBS_None, { }, },
852 { 773 /* f32.floor */, WebAssembly::FLOOR_F32_S, Convert_NoOperands, AMFBS_None, { }, },
853 { 783 /* f32.ge */, WebAssembly::GE_F32_S, Convert_NoOperands, AMFBS_None, { }, },
854 { 790 /* f32.gt */, WebAssembly::GT_F32_S, Convert_NoOperands, AMFBS_None, { }, },
855 { 797 /* f32.le */, WebAssembly::LE_F32_S, Convert_NoOperands, AMFBS_None, { }, },
856 { 804 /* f32.load */, WebAssembly::LOAD_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
857 { 804 /* f32.load */, WebAssembly::LOAD_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
858 { 813 /* f32.load_f16 */, WebAssembly::LOAD_F16_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, },
859 { 813 /* f32.load_f16 */, WebAssembly::LOAD_F16_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, },
860 { 826 /* f32.lt */, WebAssembly::LT_F32_S, Convert_NoOperands, AMFBS_None, { }, },
861 { 833 /* f32.max */, WebAssembly::MAX_F32_S, Convert_NoOperands, AMFBS_None, { }, },
862 { 841 /* f32.min */, WebAssembly::MIN_F32_S, Convert_NoOperands, AMFBS_None, { }, },
863 { 849 /* f32.mul */, WebAssembly::MUL_F32_S, Convert_NoOperands, AMFBS_None, { }, },
864 { 857 /* f32.ne */, WebAssembly::NE_F32_S, Convert_NoOperands, AMFBS_None, { }, },
865 { 864 /* f32.nearest */, WebAssembly::NEAREST_F32_S, Convert_NoOperands, AMFBS_None, { }, },
866 { 876 /* f32.neg */, WebAssembly::NEG_F32_S, Convert_NoOperands, AMFBS_None, { }, },
867 { 884 /* f32.reinterpret_i32 */, WebAssembly::F32_REINTERPRET_I32_S, Convert_NoOperands, AMFBS_None, { }, },
868 { 904 /* f32.select */, WebAssembly::SELECT_F32_S, Convert_NoOperands, AMFBS_None, { }, },
869 { 915 /* f32.sqrt */, WebAssembly::SQRT_F32_S, Convert_NoOperands, AMFBS_None, { }, },
870 { 924 /* f32.store */, WebAssembly::STORE_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
871 { 924 /* f32.store */, WebAssembly::STORE_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
872 { 934 /* f32.store_f16 */, WebAssembly::STORE_F16_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, },
873 { 934 /* f32.store_f16 */, WebAssembly::STORE_F16_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, },
874 { 948 /* f32.sub */, WebAssembly::SUB_F32_S, Convert_NoOperands, AMFBS_None, { }, },
875 { 956 /* f32.trunc */, WebAssembly::TRUNC_F32_S, Convert_NoOperands, AMFBS_None, { }, },
876 { 966 /* f32x4.abs */, WebAssembly::ABS_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
877 { 976 /* f32x4.add */, WebAssembly::ADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
878 { 986 /* f32x4.ceil */, WebAssembly::CEIL_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
879 { 997 /* f32x4.convert_i32x4_s */, WebAssembly::sint_to_fp_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
880 { 1019 /* f32x4.convert_i32x4_u */, WebAssembly::uint_to_fp_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
881 { 1041 /* f32x4.demote_f64x2_zero */, WebAssembly::demote_zero_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
882 { 1065 /* f32x4.div */, WebAssembly::DIV_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
883 { 1075 /* f32x4.eq */, WebAssembly::EQ_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
884 { 1084 /* f32x4.extract_lane */, WebAssembly::EXTRACT_LANE_F32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
885 { 1103 /* f32x4.floor */, WebAssembly::FLOOR_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
886 { 1115 /* f32x4.ge */, WebAssembly::GE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
887 { 1124 /* f32x4.gt */, WebAssembly::GT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
888 { 1133 /* f32x4.le */, WebAssembly::LE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
889 { 1142 /* f32x4.lt */, WebAssembly::LT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
890 { 1151 /* f32x4.max */, WebAssembly::MAX_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
891 { 1161 /* f32x4.min */, WebAssembly::MIN_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
892 { 1171 /* f32x4.mul */, WebAssembly::MUL_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
893 { 1181 /* f32x4.ne */, WebAssembly::NE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
894 { 1190 /* f32x4.nearest */, WebAssembly::NEAREST_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
895 { 1204 /* f32x4.neg */, WebAssembly::NEG_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
896 { 1214 /* f32x4.pmax */, WebAssembly::PMAX_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
897 { 1225 /* f32x4.pmin */, WebAssembly::PMIN_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
898 { 1236 /* f32x4.promote_low_f16x8 */, WebAssembly::promote_low_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
899 { 1260 /* f32x4.relaxed_dot_bf16x8_add_f32 */, WebAssembly::RELAXED_DOT_BFLOAT_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
900 { 1293 /* f32x4.relaxed_madd */, WebAssembly::MADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, },
901 { 1312 /* f32x4.relaxed_max */, WebAssembly::SIMD_RELAXED_FMAX_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
902 { 1330 /* f32x4.relaxed_min */, WebAssembly::SIMD_RELAXED_FMIN_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
903 { 1348 /* f32x4.relaxed_nmadd */, WebAssembly::NMADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, },
904 { 1368 /* f32x4.replace_lane */, WebAssembly::REPLACE_LANE_F32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
905 { 1387 /* f32x4.splat */, WebAssembly::SPLAT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
906 { 1399 /* f32x4.sqrt */, WebAssembly::SQRT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
907 { 1410 /* f32x4.sub */, WebAssembly::SUB_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
908 { 1420 /* f32x4.trunc */, WebAssembly::TRUNC_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
909 { 1432 /* f64.abs */, WebAssembly::ABS_F64_S, Convert_NoOperands, AMFBS_None, { }, },
910 { 1440 /* f64.add */, WebAssembly::ADD_F64_S, Convert_NoOperands, AMFBS_None, { }, },
911 { 1448 /* f64.ceil */, WebAssembly::CEIL_F64_S, Convert_NoOperands, AMFBS_None, { }, },
912 { 1457 /* f64.const */, WebAssembly::CONST_F64_S, Convert__FPImmf641_0, AMFBS_None, { MCK_FPImmf64 }, },
913 { 1467 /* f64.convert_i32_s */, WebAssembly::F64_CONVERT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
914 { 1485 /* f64.convert_i32_u */, WebAssembly::F64_CONVERT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
915 { 1503 /* f64.convert_i64_s */, WebAssembly::F64_CONVERT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
916 { 1521 /* f64.convert_i64_u */, WebAssembly::F64_CONVERT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
917 { 1539 /* f64.copysign */, WebAssembly::COPYSIGN_F64_S, Convert_NoOperands, AMFBS_None, { }, },
918 { 1552 /* f64.div */, WebAssembly::DIV_F64_S, Convert_NoOperands, AMFBS_None, { }, },
919 { 1560 /* f64.eq */, WebAssembly::EQ_F64_S, Convert_NoOperands, AMFBS_None, { }, },
920 { 1567 /* f64.floor */, WebAssembly::FLOOR_F64_S, Convert_NoOperands, AMFBS_None, { }, },
921 { 1577 /* f64.ge */, WebAssembly::GE_F64_S, Convert_NoOperands, AMFBS_None, { }, },
922 { 1584 /* f64.gt */, WebAssembly::GT_F64_S, Convert_NoOperands, AMFBS_None, { }, },
923 { 1591 /* f64.le */, WebAssembly::LE_F64_S, Convert_NoOperands, AMFBS_None, { }, },
924 { 1598 /* f64.load */, WebAssembly::LOAD_F64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
925 { 1598 /* f64.load */, WebAssembly::LOAD_F64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
926 { 1607 /* f64.lt */, WebAssembly::LT_F64_S, Convert_NoOperands, AMFBS_None, { }, },
927 { 1614 /* f64.max */, WebAssembly::MAX_F64_S, Convert_NoOperands, AMFBS_None, { }, },
928 { 1622 /* f64.min */, WebAssembly::MIN_F64_S, Convert_NoOperands, AMFBS_None, { }, },
929 { 1630 /* f64.mul */, WebAssembly::MUL_F64_S, Convert_NoOperands, AMFBS_None, { }, },
930 { 1638 /* f64.ne */, WebAssembly::NE_F64_S, Convert_NoOperands, AMFBS_None, { }, },
931 { 1645 /* f64.nearest */, WebAssembly::NEAREST_F64_S, Convert_NoOperands, AMFBS_None, { }, },
932 { 1657 /* f64.neg */, WebAssembly::NEG_F64_S, Convert_NoOperands, AMFBS_None, { }, },
933 { 1665 /* f64.promote_f32 */, WebAssembly::F64_PROMOTE_F32_S, Convert_NoOperands, AMFBS_None, { }, },
934 { 1681 /* f64.reinterpret_i64 */, WebAssembly::F64_REINTERPRET_I64_S, Convert_NoOperands, AMFBS_None, { }, },
935 { 1701 /* f64.select */, WebAssembly::SELECT_F64_S, Convert_NoOperands, AMFBS_None, { }, },
936 { 1712 /* f64.sqrt */, WebAssembly::SQRT_F64_S, Convert_NoOperands, AMFBS_None, { }, },
937 { 1721 /* f64.store */, WebAssembly::STORE_F64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
938 { 1721 /* f64.store */, WebAssembly::STORE_F64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
939 { 1731 /* f64.sub */, WebAssembly::SUB_F64_S, Convert_NoOperands, AMFBS_None, { }, },
940 { 1739 /* f64.trunc */, WebAssembly::TRUNC_F64_S, Convert_NoOperands, AMFBS_None, { }, },
941 { 1749 /* f64x2.abs */, WebAssembly::ABS_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
942 { 1759 /* f64x2.add */, WebAssembly::ADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
943 { 1769 /* f64x2.ceil */, WebAssembly::CEIL_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
944 { 1780 /* f64x2.convert_low_i32x4_s */, WebAssembly::convert_low_s_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
945 { 1806 /* f64x2.convert_low_i32x4_u */, WebAssembly::convert_low_u_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
946 { 1832 /* f64x2.div */, WebAssembly::DIV_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
947 { 1842 /* f64x2.eq */, WebAssembly::EQ_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
948 { 1851 /* f64x2.extract_lane */, WebAssembly::EXTRACT_LANE_F64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
949 { 1870 /* f64x2.floor */, WebAssembly::FLOOR_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
950 { 1882 /* f64x2.ge */, WebAssembly::GE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
951 { 1891 /* f64x2.gt */, WebAssembly::GT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
952 { 1900 /* f64x2.le */, WebAssembly::LE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
953 { 1909 /* f64x2.lt */, WebAssembly::LT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
954 { 1918 /* f64x2.max */, WebAssembly::MAX_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
955 { 1928 /* f64x2.min */, WebAssembly::MIN_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
956 { 1938 /* f64x2.mul */, WebAssembly::MUL_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
957 { 1948 /* f64x2.ne */, WebAssembly::NE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
958 { 1957 /* f64x2.nearest */, WebAssembly::NEAREST_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
959 { 1971 /* f64x2.neg */, WebAssembly::NEG_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
960 { 1981 /* f64x2.pmax */, WebAssembly::PMAX_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
961 { 1992 /* f64x2.pmin */, WebAssembly::PMIN_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
962 { 2003 /* f64x2.promote_low_f32x4 */, WebAssembly::promote_low_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
963 { 2027 /* f64x2.relaxed_madd */, WebAssembly::MADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, },
964 { 2046 /* f64x2.relaxed_max */, WebAssembly::SIMD_RELAXED_FMAX_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
965 { 2064 /* f64x2.relaxed_min */, WebAssembly::SIMD_RELAXED_FMIN_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
966 { 2082 /* f64x2.relaxed_nmadd */, WebAssembly::NMADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, },
967 { 2102 /* f64x2.replace_lane */, WebAssembly::REPLACE_LANE_F64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
968 { 2121 /* f64x2.splat */, WebAssembly::SPLAT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
969 { 2133 /* f64x2.sqrt */, WebAssembly::SQRT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
970 { 2144 /* f64x2.sub */, WebAssembly::SUB_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
971 { 2154 /* f64x2.trunc */, WebAssembly::TRUNC_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
972 { 2166 /* funcref.select */, WebAssembly::SELECT_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
973 { 2181 /* global.get */, WebAssembly::GLOBAL_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
974 { 2181 /* global.get */, WebAssembly::GLOBAL_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
975 { 2181 /* global.get */, WebAssembly::GLOBAL_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
976 { 2181 /* global.get */, WebAssembly::GLOBAL_GET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
977 { 2181 /* global.get */, WebAssembly::GLOBAL_GET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
978 { 2181 /* global.get */, WebAssembly::GLOBAL_GET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
979 { 2181 /* global.get */, WebAssembly::GLOBAL_GET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
980 { 2181 /* global.get */, WebAssembly::GLOBAL_GET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
981 { 2192 /* global.set */, WebAssembly::GLOBAL_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
982 { 2192 /* global.set */, WebAssembly::GLOBAL_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
983 { 2192 /* global.set */, WebAssembly::GLOBAL_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
984 { 2192 /* global.set */, WebAssembly::GLOBAL_SET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
985 { 2192 /* global.set */, WebAssembly::GLOBAL_SET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
986 { 2192 /* global.set */, WebAssembly::GLOBAL_SET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
987 { 2192 /* global.set */, WebAssembly::GLOBAL_SET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
988 { 2192 /* global.set */, WebAssembly::GLOBAL_SET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
989 { 2203 /* i16x8.abs */, WebAssembly::ABS_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
990 { 2213 /* i16x8.add */, WebAssembly::ADD_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
991 { 2223 /* i16x8.add_sat_s */, WebAssembly::ADD_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
992 { 2239 /* i16x8.add_sat_u */, WebAssembly::ADD_SAT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
993 { 2255 /* i16x8.all_true */, WebAssembly::ALLTRUE_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
994 { 2270 /* i16x8.avgr_u */, WebAssembly::AVGR_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
995 { 2283 /* i16x8.bitmask */, WebAssembly::BITMASK_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
996 { 2297 /* i16x8.eq */, WebAssembly::EQ_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
997 { 2306 /* i16x8.extadd_pairwise_i8x16_s */, WebAssembly::extadd_pairwise_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
998 { 2336 /* i16x8.extadd_pairwise_i8x16_u */, WebAssembly::extadd_pairwise_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
999 { 2366 /* i16x8.extend_high_i8x16_s */, WebAssembly::extend_high_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1000 { 2392 /* i16x8.extend_high_i8x16_u */, WebAssembly::extend_high_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1001 { 2418 /* i16x8.extend_low_i8x16_s */, WebAssembly::extend_low_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1002 { 2443 /* i16x8.extend_low_i8x16_u */, WebAssembly::extend_low_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1003 { 2468 /* i16x8.extmul_high_i8x16_s */, WebAssembly::EXTMUL_HIGH_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1004 { 2494 /* i16x8.extmul_high_i8x16_u */, WebAssembly::EXTMUL_HIGH_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1005 { 2520 /* i16x8.extmul_low_i8x16_s */, WebAssembly::EXTMUL_LOW_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1006 { 2545 /* i16x8.extmul_low_i8x16_u */, WebAssembly::EXTMUL_LOW_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1007 { 2570 /* i16x8.extract_lane_s */, WebAssembly::EXTRACT_LANE_I16x8_s_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1008 { 2591 /* i16x8.extract_lane_u */, WebAssembly::EXTRACT_LANE_I16x8_u_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1009 { 2612 /* i16x8.ge_s */, WebAssembly::GE_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1010 { 2623 /* i16x8.ge_u */, WebAssembly::GE_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1011 { 2634 /* i16x8.gt_s */, WebAssembly::GT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1012 { 2645 /* i16x8.gt_u */, WebAssembly::GT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1013 { 2656 /* i16x8.le_s */, WebAssembly::LE_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1014 { 2667 /* i16x8.le_u */, WebAssembly::LE_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1015 { 2678 /* i16x8.load8x8_s */, WebAssembly::LOAD_EXTEND_S_I16x8_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1016 { 2678 /* i16x8.load8x8_s */, WebAssembly::LOAD_EXTEND_S_I16x8_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1017 { 2694 /* i16x8.load8x8_u */, WebAssembly::LOAD_EXTEND_U_I16x8_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1018 { 2694 /* i16x8.load8x8_u */, WebAssembly::LOAD_EXTEND_U_I16x8_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1019 { 2710 /* i16x8.lt_s */, WebAssembly::LT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1020 { 2721 /* i16x8.lt_u */, WebAssembly::LT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1021 { 2732 /* i16x8.max_s */, WebAssembly::MAX_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1022 { 2744 /* i16x8.max_u */, WebAssembly::MAX_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1023 { 2756 /* i16x8.min_s */, WebAssembly::MIN_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1024 { 2768 /* i16x8.min_u */, WebAssembly::MIN_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1025 { 2780 /* i16x8.mul */, WebAssembly::MUL_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1026 { 2790 /* i16x8.narrow_i32x4_s */, WebAssembly::NARROW_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1027 { 2811 /* i16x8.narrow_i32x4_u */, WebAssembly::NARROW_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1028 { 2832 /* i16x8.ne */, WebAssembly::NE_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1029 { 2841 /* i16x8.neg */, WebAssembly::NEG_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1030 { 2851 /* i16x8.q15mulr_sat_s */, WebAssembly::Q15MULR_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1031 { 2871 /* i16x8.relaxed_dot_i8x16_i7x16_s */, WebAssembly::RELAXED_DOT_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1032 { 2903 /* i16x8.relaxed_laneselect */, WebAssembly::LANESELECT_I16x8_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1033 { 2928 /* i16x8.relaxed_q15mulr_s */, WebAssembly::RELAXED_Q15MULR_S_I16x8_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1034 { 2952 /* i16x8.replace_lane */, WebAssembly::REPLACE_LANE_I16x8_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1035 { 2971 /* i16x8.shl */, WebAssembly::SHL_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1036 { 2981 /* i16x8.shr_s */, WebAssembly::SHR_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1037 { 2993 /* i16x8.shr_u */, WebAssembly::SHR_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1038 { 3005 /* i16x8.splat */, WebAssembly::SPLAT_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1039 { 3017 /* i16x8.sub */, WebAssembly::SUB_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1040 { 3027 /* i16x8.sub_sat_s */, WebAssembly::SUB_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1041 { 3043 /* i16x8.sub_sat_u */, WebAssembly::SUB_SAT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1042 { 3059 /* i16x8.trunc_sat_f16x8_s */, WebAssembly::fp_to_sint_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
1043 { 3083 /* i16x8.trunc_sat_f16x8_u */, WebAssembly::fp_to_uint_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, },
1044 { 3107 /* i32.add */, WebAssembly::ADD_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1045 { 3115 /* i32.and */, WebAssembly::AND_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1046 { 3123 /* i32.atomic.load */, WebAssembly::ATOMIC_LOAD_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1047 { 3123 /* i32.atomic.load */, WebAssembly::ATOMIC_LOAD_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1048 { 3139 /* 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 }, },
1049 { 3139 /* 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 }, },
1050 { 3159 /* 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 }, },
1051 { 3159 /* 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 }, },
1052 { 3178 /* 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 }, },
1053 { 3178 /* 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 }, },
1054 { 3197 /* 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 }, },
1055 { 3197 /* 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 }, },
1056 { 3216 /* 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 }, },
1057 { 3216 /* 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 }, },
1058 { 3239 /* 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 }, },
1059 { 3239 /* 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 }, },
1060 { 3257 /* 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 }, },
1061 { 3257 /* 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 }, },
1062 { 3276 /* 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 }, },
1063 { 3276 /* 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 }, },
1064 { 3296 /* 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 }, },
1065 { 3296 /* 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 }, },
1066 { 3315 /* 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 }, },
1067 { 3315 /* 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 }, },
1068 { 3338 /* 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 }, },
1069 { 3338 /* 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 }, },
1070 { 3361 /* 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 }, },
1071 { 3361 /* 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 }, },
1072 { 3388 /* 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 }, },
1073 { 3388 /* 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 }, },
1074 { 3410 /* 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 }, },
1075 { 3410 /* 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 }, },
1076 { 3433 /* 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 }, },
1077 { 3433 /* 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 }, },
1078 { 3457 /* 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 }, },
1079 { 3457 /* 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 }, },
1080 { 3480 /* 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 }, },
1081 { 3480 /* 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 }, },
1082 { 3502 /* 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 }, },
1083 { 3502 /* 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 }, },
1084 { 3524 /* 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 }, },
1085 { 3524 /* 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 }, },
1086 { 3550 /* 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 }, },
1087 { 3550 /* 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 }, },
1088 { 3571 /* 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 }, },
1089 { 3571 /* 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 }, },
1090 { 3593 /* 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 }, },
1091 { 3593 /* 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 }, },
1092 { 3616 /* 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 }, },
1093 { 3616 /* 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 }, },
1094 { 3638 /* i32.atomic.store */, WebAssembly::ATOMIC_STORE_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1095 { 3638 /* i32.atomic.store */, WebAssembly::ATOMIC_STORE_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1096 { 3655 /* i32.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1097 { 3655 /* i32.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1098 { 3674 /* i32.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1099 { 3674 /* i32.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1100 { 3692 /* i32.clz */, WebAssembly::CLZ_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1101 { 3700 /* i32.const */, WebAssembly::CONST_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1102 { 3710 /* i32.ctz */, WebAssembly::CTZ_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1103 { 3718 /* i32.div_s */, WebAssembly::DIV_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1104 { 3728 /* i32.div_u */, WebAssembly::DIV_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1105 { 3738 /* i32.eq */, WebAssembly::EQ_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1106 { 3745 /* i32.eqz */, WebAssembly::EQZ_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1107 { 3753 /* i32.extend16_s */, WebAssembly::I32_EXTEND16_S_I32_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1108 { 3768 /* i32.extend8_s */, WebAssembly::I32_EXTEND8_S_I32_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1109 { 3782 /* i32.ge_s */, WebAssembly::GE_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1110 { 3791 /* i32.ge_u */, WebAssembly::GE_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1111 { 3800 /* i32.gt_s */, WebAssembly::GT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1112 { 3809 /* i32.gt_u */, WebAssembly::GT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1113 { 3818 /* i32.le_s */, WebAssembly::LE_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1114 { 3827 /* i32.le_u */, WebAssembly::LE_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1115 { 3836 /* i32.load */, WebAssembly::LOAD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1116 { 3836 /* i32.load */, WebAssembly::LOAD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1117 { 3845 /* i32.load16_s */, WebAssembly::LOAD16_S_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1118 { 3845 /* i32.load16_s */, WebAssembly::LOAD16_S_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1119 { 3858 /* i32.load16_u */, WebAssembly::LOAD16_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1120 { 3858 /* i32.load16_u */, WebAssembly::LOAD16_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1121 { 3871 /* i32.load8_s */, WebAssembly::LOAD8_S_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1122 { 3871 /* i32.load8_s */, WebAssembly::LOAD8_S_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1123 { 3883 /* i32.load8_u */, WebAssembly::LOAD8_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1124 { 3883 /* i32.load8_u */, WebAssembly::LOAD8_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1125 { 3895 /* i32.lt_s */, WebAssembly::LT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1126 { 3904 /* i32.lt_u */, WebAssembly::LT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1127 { 3913 /* i32.mul */, WebAssembly::MUL_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1128 { 3921 /* i32.ne */, WebAssembly::NE_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1129 { 3928 /* i32.or */, WebAssembly::OR_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1130 { 3935 /* i32.popcnt */, WebAssembly::POPCNT_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1131 { 3946 /* i32.reinterpret_f32 */, WebAssembly::I32_REINTERPRET_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1132 { 3966 /* i32.rem_s */, WebAssembly::REM_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1133 { 3976 /* i32.rem_u */, WebAssembly::REM_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1134 { 3986 /* i32.rotl */, WebAssembly::ROTL_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1135 { 3995 /* i32.rotr */, WebAssembly::ROTR_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1136 { 4004 /* i32.select */, WebAssembly::SELECT_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1137 { 4015 /* i32.shl */, WebAssembly::SHL_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1138 { 4023 /* i32.shr_s */, WebAssembly::SHR_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1139 { 4033 /* i32.shr_u */, WebAssembly::SHR_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1140 { 4043 /* i32.store */, WebAssembly::STORE_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1141 { 4043 /* i32.store */, WebAssembly::STORE_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1142 { 4053 /* i32.store16 */, WebAssembly::STORE16_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1143 { 4053 /* i32.store16 */, WebAssembly::STORE16_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1144 { 4065 /* i32.store8 */, WebAssembly::STORE8_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1145 { 4065 /* i32.store8 */, WebAssembly::STORE8_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1146 { 4076 /* i32.sub */, WebAssembly::SUB_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1147 { 4084 /* i32.trunc_f32_s */, WebAssembly::I32_TRUNC_S_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1148 { 4100 /* i32.trunc_f32_u */, WebAssembly::I32_TRUNC_U_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1149 { 4116 /* i32.trunc_f64_s */, WebAssembly::I32_TRUNC_S_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1150 { 4132 /* i32.trunc_f64_u */, WebAssembly::I32_TRUNC_U_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1151 { 4148 /* i32.trunc_sat_f32_s */, WebAssembly::I32_TRUNC_S_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1152 { 4168 /* i32.trunc_sat_f32_u */, WebAssembly::I32_TRUNC_U_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1153 { 4188 /* i32.trunc_sat_f64_s */, WebAssembly::I32_TRUNC_S_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1154 { 4208 /* i32.trunc_sat_f64_u */, WebAssembly::I32_TRUNC_U_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1155 { 4228 /* i32.wrap_i64 */, WebAssembly::I32_WRAP_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1156 { 4241 /* i32.xor */, WebAssembly::XOR_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1157 { 4249 /* i32x4.abs */, WebAssembly::ABS_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1158 { 4259 /* i32x4.add */, WebAssembly::ADD_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1159 { 4269 /* i32x4.all_true */, WebAssembly::ALLTRUE_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1160 { 4284 /* i32x4.bitmask */, WebAssembly::BITMASK_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1161 { 4298 /* i32x4.dot_i16x8_s */, WebAssembly::DOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1162 { 4316 /* i32x4.eq */, WebAssembly::EQ_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1163 { 4325 /* i32x4.extadd_pairwise_i16x8_s */, WebAssembly::extadd_pairwise_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1164 { 4355 /* i32x4.extadd_pairwise_i16x8_u */, WebAssembly::extadd_pairwise_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1165 { 4385 /* i32x4.extend_high_i16x8_s */, WebAssembly::extend_high_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1166 { 4411 /* i32x4.extend_high_i16x8_u */, WebAssembly::extend_high_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1167 { 4437 /* i32x4.extend_low_i16x8_s */, WebAssembly::extend_low_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1168 { 4462 /* i32x4.extend_low_i16x8_u */, WebAssembly::extend_low_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1169 { 4487 /* i32x4.extmul_high_i16x8_s */, WebAssembly::EXTMUL_HIGH_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1170 { 4513 /* i32x4.extmul_high_i16x8_u */, WebAssembly::EXTMUL_HIGH_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1171 { 4539 /* i32x4.extmul_low_i16x8_s */, WebAssembly::EXTMUL_LOW_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1172 { 4564 /* i32x4.extmul_low_i16x8_u */, WebAssembly::EXTMUL_LOW_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1173 { 4589 /* i32x4.extract_lane */, WebAssembly::EXTRACT_LANE_I32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1174 { 4608 /* i32x4.ge_s */, WebAssembly::GE_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1175 { 4619 /* i32x4.ge_u */, WebAssembly::GE_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1176 { 4630 /* i32x4.gt_s */, WebAssembly::GT_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1177 { 4641 /* i32x4.gt_u */, WebAssembly::GT_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1178 { 4652 /* i32x4.le_s */, WebAssembly::LE_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1179 { 4663 /* i32x4.le_u */, WebAssembly::LE_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1180 { 4674 /* i32x4.load16x4_s */, WebAssembly::LOAD_EXTEND_S_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1181 { 4674 /* i32x4.load16x4_s */, WebAssembly::LOAD_EXTEND_S_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1182 { 4691 /* i32x4.load16x4_u */, WebAssembly::LOAD_EXTEND_U_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1183 { 4691 /* i32x4.load16x4_u */, WebAssembly::LOAD_EXTEND_U_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1184 { 4708 /* i32x4.lt_s */, WebAssembly::LT_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1185 { 4719 /* i32x4.lt_u */, WebAssembly::LT_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1186 { 4730 /* i32x4.max_s */, WebAssembly::MAX_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1187 { 4742 /* i32x4.max_u */, WebAssembly::MAX_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1188 { 4754 /* i32x4.min_s */, WebAssembly::MIN_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1189 { 4766 /* i32x4.min_u */, WebAssembly::MIN_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1190 { 4778 /* i32x4.mul */, WebAssembly::MUL_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1191 { 4788 /* i32x4.ne */, WebAssembly::NE_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1192 { 4797 /* i32x4.neg */, WebAssembly::NEG_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1193 { 4807 /* i32x4.relaxed_dot_i8x16_i7x16_add_s */, WebAssembly::RELAXED_DOT_ADD_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1194 { 4843 /* i32x4.relaxed_laneselect */, WebAssembly::LANESELECT_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1195 { 4868 /* i32x4.relaxed_trunc_f32x4_s */, WebAssembly::int_wasm_relaxed_trunc_signed_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1196 { 4896 /* i32x4.relaxed_trunc_f32x4_u */, WebAssembly::int_wasm_relaxed_trunc_unsigned_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1197 { 4924 /* i32x4.relaxed_trunc_f64x2_s_zero */, WebAssembly::int_wasm_relaxed_trunc_signed_zero_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1198 { 4957 /* i32x4.relaxed_trunc_f64x2_u_zero */, WebAssembly::int_wasm_relaxed_trunc_unsigned_zero_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1199 { 4990 /* i32x4.replace_lane */, WebAssembly::REPLACE_LANE_I32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1200 { 5009 /* i32x4.shl */, WebAssembly::SHL_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1201 { 5019 /* i32x4.shr_s */, WebAssembly::SHR_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1202 { 5031 /* i32x4.shr_u */, WebAssembly::SHR_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1203 { 5043 /* i32x4.splat */, WebAssembly::SPLAT_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1204 { 5055 /* i32x4.sub */, WebAssembly::SUB_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1205 { 5065 /* i32x4.trunc_sat_f32x4_s */, WebAssembly::fp_to_sint_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1206 { 5089 /* i32x4.trunc_sat_f32x4_u */, WebAssembly::fp_to_uint_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1207 { 5113 /* i32x4.trunc_sat_f64x2_s_zero */, WebAssembly::trunc_sat_zero_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1208 { 5142 /* i32x4.trunc_sat_f64x2_u_zero */, WebAssembly::trunc_sat_zero_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1209 { 5171 /* i64.add */, WebAssembly::ADD_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1210 { 5179 /* i64.add128 */, WebAssembly::I64_ADD128_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, },
1211 { 5190 /* i64.and */, WebAssembly::AND_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1212 { 5198 /* i64.atomic.load */, WebAssembly::ATOMIC_LOAD_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1213 { 5198 /* i64.atomic.load */, WebAssembly::ATOMIC_LOAD_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1214 { 5214 /* 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 }, },
1215 { 5214 /* 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 }, },
1216 { 5234 /* 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 }, },
1217 { 5234 /* 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 }, },
1218 { 5254 /* 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 }, },
1219 { 5254 /* 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 }, },
1220 { 5273 /* 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 }, },
1221 { 5273 /* 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 }, },
1222 { 5292 /* 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 }, },
1223 { 5292 /* 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 }, },
1224 { 5311 /* 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 }, },
1225 { 5311 /* 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 }, },
1226 { 5334 /* 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 }, },
1227 { 5334 /* 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 }, },
1228 { 5352 /* 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 }, },
1229 { 5352 /* 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 }, },
1230 { 5371 /* 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 }, },
1231 { 5371 /* 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 }, },
1232 { 5391 /* 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 }, },
1233 { 5391 /* 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 }, },
1234 { 5410 /* 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 }, },
1235 { 5410 /* 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 }, },
1236 { 5433 /* 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 }, },
1237 { 5433 /* 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 }, },
1238 { 5456 /* 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 }, },
1239 { 5456 /* 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 }, },
1240 { 5483 /* 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 }, },
1241 { 5483 /* 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 }, },
1242 { 5505 /* 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 }, },
1243 { 5505 /* 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 }, },
1244 { 5528 /* 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 }, },
1245 { 5528 /* 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 }, },
1246 { 5552 /* 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 }, },
1247 { 5552 /* 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 }, },
1248 { 5575 /* 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 }, },
1249 { 5575 /* 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 }, },
1250 { 5598 /* 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 }, },
1251 { 5598 /* 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 }, },
1252 { 5621 /* 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 }, },
1253 { 5621 /* 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 }, },
1254 { 5648 /* 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 }, },
1255 { 5648 /* 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 }, },
1256 { 5670 /* 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 }, },
1257 { 5670 /* 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 }, },
1258 { 5693 /* 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 }, },
1259 { 5693 /* 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 }, },
1260 { 5717 /* 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 }, },
1261 { 5717 /* 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 }, },
1262 { 5740 /* 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 }, },
1263 { 5740 /* 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 }, },
1264 { 5762 /* 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 }, },
1265 { 5762 /* 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 }, },
1266 { 5784 /* 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 }, },
1267 { 5784 /* 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 }, },
1268 { 5810 /* 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 }, },
1269 { 5810 /* 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 }, },
1270 { 5831 /* 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 }, },
1271 { 5831 /* 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 }, },
1272 { 5853 /* 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 }, },
1273 { 5853 /* 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 }, },
1274 { 5876 /* 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 }, },
1275 { 5876 /* 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 }, },
1276 { 5898 /* i64.atomic.store */, WebAssembly::ATOMIC_STORE_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1277 { 5898 /* i64.atomic.store */, WebAssembly::ATOMIC_STORE_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1278 { 5915 /* i64.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1279 { 5915 /* i64.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1280 { 5934 /* i64.atomic.store32 */, WebAssembly::ATOMIC_STORE32_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1281 { 5934 /* i64.atomic.store32 */, WebAssembly::ATOMIC_STORE32_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1282 { 5953 /* i64.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1283 { 5953 /* i64.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1284 { 5971 /* i64.clz */, WebAssembly::CLZ_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1285 { 5979 /* i64.const */, WebAssembly::CONST_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1286 { 5989 /* i64.ctz */, WebAssembly::CTZ_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1287 { 5997 /* i64.div_s */, WebAssembly::DIV_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1288 { 6007 /* i64.div_u */, WebAssembly::DIV_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1289 { 6017 /* i64.eq */, WebAssembly::EQ_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1290 { 6024 /* i64.eqz */, WebAssembly::EQZ_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1291 { 6032 /* i64.extend16_s */, WebAssembly::I64_EXTEND16_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1292 { 6047 /* i64.extend32_s */, WebAssembly::I64_EXTEND32_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1293 { 6062 /* i64.extend8_s */, WebAssembly::I64_EXTEND8_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, },
1294 { 6076 /* i64.extend_i32_s */, WebAssembly::I64_EXTEND_S_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1295 { 6093 /* i64.extend_i32_u */, WebAssembly::I64_EXTEND_U_I32_S, Convert_NoOperands, AMFBS_None, { }, },
1296 { 6110 /* i64.ge_s */, WebAssembly::GE_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1297 { 6119 /* i64.ge_u */, WebAssembly::GE_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1298 { 6128 /* i64.gt_s */, WebAssembly::GT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1299 { 6137 /* i64.gt_u */, WebAssembly::GT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1300 { 6146 /* i64.le_s */, WebAssembly::LE_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1301 { 6155 /* i64.le_u */, WebAssembly::LE_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1302 { 6164 /* i64.load */, WebAssembly::LOAD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1303 { 6164 /* i64.load */, WebAssembly::LOAD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1304 { 6173 /* i64.load16_s */, WebAssembly::LOAD16_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1305 { 6173 /* i64.load16_s */, WebAssembly::LOAD16_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1306 { 6186 /* i64.load16_u */, WebAssembly::LOAD16_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1307 { 6186 /* i64.load16_u */, WebAssembly::LOAD16_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1308 { 6199 /* i64.load32_s */, WebAssembly::LOAD32_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1309 { 6199 /* i64.load32_s */, WebAssembly::LOAD32_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1310 { 6212 /* i64.load32_u */, WebAssembly::LOAD32_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1311 { 6212 /* i64.load32_u */, WebAssembly::LOAD32_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1312 { 6225 /* i64.load8_s */, WebAssembly::LOAD8_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1313 { 6225 /* i64.load8_s */, WebAssembly::LOAD8_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1314 { 6237 /* i64.load8_u */, WebAssembly::LOAD8_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1315 { 6237 /* i64.load8_u */, WebAssembly::LOAD8_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1316 { 6249 /* i64.lt_s */, WebAssembly::LT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1317 { 6258 /* i64.lt_u */, WebAssembly::LT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1318 { 6267 /* i64.mul */, WebAssembly::MUL_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1319 { 6275 /* i64.mul_wide_s */, WebAssembly::I64_MUL_WIDE_S_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, },
1320 { 6290 /* i64.mul_wide_u */, WebAssembly::I64_MUL_WIDE_U_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, },
1321 { 6305 /* i64.ne */, WebAssembly::NE_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1322 { 6312 /* i64.or */, WebAssembly::OR_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1323 { 6319 /* i64.popcnt */, WebAssembly::POPCNT_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1324 { 6330 /* i64.reinterpret_f64 */, WebAssembly::I64_REINTERPRET_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1325 { 6350 /* i64.rem_s */, WebAssembly::REM_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1326 { 6360 /* i64.rem_u */, WebAssembly::REM_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1327 { 6370 /* i64.rotl */, WebAssembly::ROTL_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1328 { 6379 /* i64.rotr */, WebAssembly::ROTR_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1329 { 6388 /* i64.select */, WebAssembly::SELECT_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1330 { 6399 /* i64.shl */, WebAssembly::SHL_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1331 { 6407 /* i64.shr_s */, WebAssembly::SHR_S_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1332 { 6417 /* i64.shr_u */, WebAssembly::SHR_U_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1333 { 6427 /* i64.store */, WebAssembly::STORE_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1334 { 6427 /* i64.store */, WebAssembly::STORE_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1335 { 6437 /* i64.store16 */, WebAssembly::STORE16_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1336 { 6437 /* i64.store16 */, WebAssembly::STORE16_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1337 { 6449 /* i64.store32 */, WebAssembly::STORE32_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1338 { 6449 /* i64.store32 */, WebAssembly::STORE32_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1339 { 6461 /* i64.store8 */, WebAssembly::STORE8_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1340 { 6461 /* i64.store8 */, WebAssembly::STORE8_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, },
1341 { 6472 /* i64.sub */, WebAssembly::SUB_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1342 { 6480 /* i64.sub128 */, WebAssembly::I64_SUB128_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, },
1343 { 6491 /* i64.trunc_f32_s */, WebAssembly::I64_TRUNC_S_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1344 { 6507 /* i64.trunc_f32_u */, WebAssembly::I64_TRUNC_U_F32_S, Convert_NoOperands, AMFBS_None, { }, },
1345 { 6523 /* i64.trunc_f64_s */, WebAssembly::I64_TRUNC_S_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1346 { 6539 /* i64.trunc_f64_u */, WebAssembly::I64_TRUNC_U_F64_S, Convert_NoOperands, AMFBS_None, { }, },
1347 { 6555 /* i64.trunc_sat_f32_s */, WebAssembly::I64_TRUNC_S_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1348 { 6575 /* i64.trunc_sat_f32_u */, WebAssembly::I64_TRUNC_U_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1349 { 6595 /* i64.trunc_sat_f64_s */, WebAssembly::I64_TRUNC_S_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1350 { 6615 /* i64.trunc_sat_f64_u */, WebAssembly::I64_TRUNC_U_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, },
1351 { 6635 /* i64.xor */, WebAssembly::XOR_I64_S, Convert_NoOperands, AMFBS_None, { }, },
1352 { 6643 /* i64x2.abs */, WebAssembly::ABS_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1353 { 6653 /* i64x2.add */, WebAssembly::ADD_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1354 { 6663 /* i64x2.all_true */, WebAssembly::ALLTRUE_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1355 { 6678 /* i64x2.bitmask */, WebAssembly::BITMASK_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1356 { 6692 /* i64x2.eq */, WebAssembly::EQ_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1357 { 6701 /* i64x2.extend_high_i32x4_s */, WebAssembly::extend_high_s_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1358 { 6727 /* i64x2.extend_high_i32x4_u */, WebAssembly::extend_high_u_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1359 { 6753 /* i64x2.extend_low_i32x4_s */, WebAssembly::extend_low_s_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1360 { 6778 /* i64x2.extend_low_i32x4_u */, WebAssembly::extend_low_u_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1361 { 6803 /* i64x2.extmul_high_i32x4_s */, WebAssembly::EXTMUL_HIGH_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1362 { 6829 /* i64x2.extmul_high_i32x4_u */, WebAssembly::EXTMUL_HIGH_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1363 { 6855 /* i64x2.extmul_low_i32x4_s */, WebAssembly::EXTMUL_LOW_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1364 { 6880 /* i64x2.extmul_low_i32x4_u */, WebAssembly::EXTMUL_LOW_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1365 { 6905 /* i64x2.extract_lane */, WebAssembly::EXTRACT_LANE_I64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1366 { 6924 /* i64x2.ge_s */, WebAssembly::GE_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1367 { 6935 /* i64x2.gt_s */, WebAssembly::GT_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1368 { 6946 /* i64x2.le_s */, WebAssembly::LE_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1369 { 6957 /* i64x2.load32x2_s */, WebAssembly::LOAD_EXTEND_S_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1370 { 6957 /* i64x2.load32x2_s */, WebAssembly::LOAD_EXTEND_S_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1371 { 6974 /* i64x2.load32x2_u */, WebAssembly::LOAD_EXTEND_U_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1372 { 6974 /* i64x2.load32x2_u */, WebAssembly::LOAD_EXTEND_U_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1373 { 6991 /* i64x2.lt_s */, WebAssembly::LT_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1374 { 7002 /* i64x2.mul */, WebAssembly::MUL_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1375 { 7012 /* i64x2.ne */, WebAssembly::NE_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1376 { 7021 /* i64x2.neg */, WebAssembly::NEG_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1377 { 7031 /* i64x2.relaxed_laneselect */, WebAssembly::LANESELECT_I64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1378 { 7056 /* i64x2.replace_lane */, WebAssembly::REPLACE_LANE_I64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1379 { 7075 /* i64x2.shl */, WebAssembly::SHL_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1380 { 7085 /* i64x2.shr_s */, WebAssembly::SHR_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1381 { 7097 /* i64x2.shr_u */, WebAssembly::SHR_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1382 { 7109 /* i64x2.splat */, WebAssembly::SPLAT_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1383 { 7121 /* i64x2.sub */, WebAssembly::SUB_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1384 { 7131 /* i8x16.abs */, WebAssembly::ABS_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1385 { 7141 /* i8x16.add */, WebAssembly::ADD_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1386 { 7151 /* i8x16.add_sat_s */, WebAssembly::ADD_SAT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1387 { 7167 /* i8x16.add_sat_u */, WebAssembly::ADD_SAT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1388 { 7183 /* i8x16.all_true */, WebAssembly::ALLTRUE_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1389 { 7198 /* i8x16.avgr_u */, WebAssembly::AVGR_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1390 { 7211 /* i8x16.bitmask */, WebAssembly::BITMASK_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1391 { 7225 /* i8x16.eq */, WebAssembly::EQ_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1392 { 7234 /* i8x16.extract_lane_s */, WebAssembly::EXTRACT_LANE_I8x16_s_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1393 { 7255 /* i8x16.extract_lane_u */, WebAssembly::EXTRACT_LANE_I8x16_u_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1394 { 7276 /* i8x16.ge_s */, WebAssembly::GE_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1395 { 7287 /* i8x16.ge_u */, WebAssembly::GE_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1396 { 7298 /* i8x16.gt_s */, WebAssembly::GT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1397 { 7309 /* i8x16.gt_u */, WebAssembly::GT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1398 { 7320 /* i8x16.le_s */, WebAssembly::LE_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1399 { 7331 /* i8x16.le_u */, WebAssembly::LE_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1400 { 7342 /* i8x16.lt_s */, WebAssembly::LT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1401 { 7353 /* i8x16.lt_u */, WebAssembly::LT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1402 { 7364 /* i8x16.max_s */, WebAssembly::MAX_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1403 { 7376 /* i8x16.max_u */, WebAssembly::MAX_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1404 { 7388 /* i8x16.min_s */, WebAssembly::MIN_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1405 { 7400 /* i8x16.min_u */, WebAssembly::MIN_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1406 { 7412 /* i8x16.narrow_i16x8_s */, WebAssembly::NARROW_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1407 { 7433 /* i8x16.narrow_i16x8_u */, WebAssembly::NARROW_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1408 { 7454 /* i8x16.ne */, WebAssembly::NE_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1409 { 7463 /* i8x16.neg */, WebAssembly::NEG_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1410 { 7473 /* i8x16.popcnt */, WebAssembly::POPCNT_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1411 { 7486 /* i8x16.relaxed_laneselect */, WebAssembly::LANESELECT_I8x16_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1412 { 7511 /* i8x16.relaxed_swizzle */, WebAssembly::RELAXED_SWIZZLE_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, },
1413 { 7533 /* i8x16.replace_lane */, WebAssembly::REPLACE_LANE_I8x16_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1414 { 7552 /* i8x16.shl */, WebAssembly::SHL_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1415 { 7562 /* i8x16.shr_s */, WebAssembly::SHR_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1416 { 7574 /* i8x16.shr_u */, WebAssembly::SHR_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1417 { 7586 /* 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 }, },
1418 { 7600 /* i8x16.splat */, WebAssembly::SPLAT_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1419 { 7612 /* i8x16.sub */, WebAssembly::SUB_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1420 { 7622 /* i8x16.sub_sat_s */, WebAssembly::SUB_SAT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1421 { 7638 /* i8x16.sub_sat_u */, WebAssembly::SUB_SAT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1422 { 7654 /* i8x16.swizzle */, WebAssembly::SWIZZLE_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1423 { 7668 /* if */, WebAssembly::IF_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1424 { 7671 /* local.get */, WebAssembly::LOCAL_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1425 { 7671 /* local.get */, WebAssembly::LOCAL_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1426 { 7671 /* local.get */, WebAssembly::LOCAL_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1427 { 7671 /* local.get */, WebAssembly::LOCAL_GET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1428 { 7671 /* local.get */, WebAssembly::LOCAL_GET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1429 { 7671 /* local.get */, WebAssembly::LOCAL_GET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1430 { 7671 /* local.get */, WebAssembly::LOCAL_GET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1431 { 7671 /* local.get */, WebAssembly::LOCAL_GET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1432 { 7681 /* local.set */, WebAssembly::LOCAL_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1433 { 7681 /* local.set */, WebAssembly::LOCAL_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1434 { 7681 /* local.set */, WebAssembly::LOCAL_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1435 { 7681 /* local.set */, WebAssembly::LOCAL_SET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1436 { 7681 /* local.set */, WebAssembly::LOCAL_SET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1437 { 7681 /* local.set */, WebAssembly::LOCAL_SET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1438 { 7681 /* local.set */, WebAssembly::LOCAL_SET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1439 { 7681 /* local.set */, WebAssembly::LOCAL_SET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1440 { 7691 /* local.tee */, WebAssembly::LOCAL_TEE_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1441 { 7691 /* local.tee */, WebAssembly::LOCAL_TEE_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1442 { 7691 /* local.tee */, WebAssembly::LOCAL_TEE_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1443 { 7691 /* local.tee */, WebAssembly::LOCAL_TEE_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, },
1444 { 7691 /* local.tee */, WebAssembly::LOCAL_TEE_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1445 { 7691 /* local.tee */, WebAssembly::LOCAL_TEE_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1446 { 7691 /* local.tee */, WebAssembly::LOCAL_TEE_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1447 { 7691 /* local.tee */, WebAssembly::LOCAL_TEE_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1448 { 7701 /* loop */, WebAssembly::LOOP_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1449 { 7706 /* memory.atomic.notify */, WebAssembly::MEMORY_ATOMIC_NOTIFY_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1450 { 7706 /* memory.atomic.notify */, WebAssembly::MEMORY_ATOMIC_NOTIFY_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1451 { 7727 /* memory.atomic.wait32 */, WebAssembly::MEMORY_ATOMIC_WAIT32_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1452 { 7727 /* memory.atomic.wait32 */, WebAssembly::MEMORY_ATOMIC_WAIT32_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1453 { 7748 /* memory.atomic.wait64 */, WebAssembly::MEMORY_ATOMIC_WAIT64_A32_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1454 { 7748 /* memory.atomic.wait64 */, WebAssembly::MEMORY_ATOMIC_WAIT64_A64_S, Convert__Imm1_0__Imm1_2__Imm1_1, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1455 { 7769 /* memory.copy */, WebAssembly::MEMORY_COPY_A32_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, },
1456 { 7769 /* memory.copy */, WebAssembly::MEMORY_COPY_A64_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, },
1457 { 7781 /* memory.fill */, WebAssembly::MEMORY_FILL_A32_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, },
1458 { 7781 /* memory.fill */, WebAssembly::MEMORY_FILL_A64_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, },
1459 { 7793 /* memory.grow */, WebAssembly::anonymous_13995MEMORY_GROW_A32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1460 { 7793 /* memory.grow */, WebAssembly::anonymous_13996MEMORY_GROW_A64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1461 { 7805 /* memory.init */, WebAssembly::MEMORY_INIT_A32_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, },
1462 { 7805 /* memory.init */, WebAssembly::MEMORY_INIT_A64_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, },
1463 { 7817 /* memory.size */, WebAssembly::anonymous_13995MEMORY_SIZE_A32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1464 { 7817 /* memory.size */, WebAssembly::anonymous_13996MEMORY_SIZE_A64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, },
1465 { 7829 /* nop */, WebAssembly::NOP_S, Convert_NoOperands, AMFBS_None, { }, },
1466 { 7833 /* ref.cast */, WebAssembly::REF_CAST_FUNCREF_S, Convert__Imm1_0, AMFBS_HasGC, { MCK_Imm }, },
1467 { 7842 /* ref.func */, WebAssembly::REF_FUNC_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1468 { 7851 /* ref.is_null */, WebAssembly::REF_IS_NULL_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1469 { 7851 /* ref.is_null */, WebAssembly::REF_IS_NULL_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1470 { 7851 /* ref.is_null */, WebAssembly::REF_IS_NULL_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1471 { 7863 /* ref.null_exn */, WebAssembly::REF_NULL_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1472 { 7876 /* ref.null_extern */, WebAssembly::REF_NULL_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1473 { 7892 /* ref.null_func */, WebAssembly::REF_NULL_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, },
1474 { 7906 /* ref.test */, WebAssembly::REF_TEST_FUNCREF_S, Convert__Imm1_0, AMFBS_HasGC, { MCK_Imm }, },
1475 { 7915 /* rethrow */, WebAssembly::RETHROW_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
1476 { 7923 /* return */, WebAssembly::RETURN_S, Convert_NoOperands, AMFBS_None, { }, },
1477 { 7930 /* return_call */, WebAssembly::RET_CALL_S, Convert__Imm1_0, AMFBS_HasTailCall, { MCK_Imm }, },
1478 { 7942 /* return_call_indirect */, WebAssembly::RET_CALL_INDIRECT_S, Convert__Imm1_0__Imm1_1, AMFBS_HasTailCall, { MCK_Imm, MCK_Imm }, },
1479 { 7963 /* return_call_ref */, WebAssembly::RET_CALL_REF_S, Convert__Imm1_0, AMFBS_HasTailCall_HasGC, { MCK_Imm }, },
1480 { 7979 /* return_call_results */, WebAssembly::RET_CALL_RESULTS_S, Convert_NoOperands, AMFBS_None, { }, },
1481 { 7999 /* select */, WebAssembly::SELECT_T_S, Convert__TypeList1_0, AMFBS_HasReferenceTypes, { MCK_TypeList }, },
1482 { 8006 /* table.copy */, WebAssembly::TABLE_COPY_S, Convert__Imm1_0__Imm1_1, AMFBS_HasReferenceTypes, { MCK_Imm, MCK_Imm }, },
1483 { 8017 /* table.fill */, WebAssembly::TABLE_FILL_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1484 { 8017 /* table.fill */, WebAssembly::TABLE_FILL_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1485 { 8017 /* table.fill */, WebAssembly::TABLE_FILL_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1486 { 8028 /* table.get */, WebAssembly::TABLE_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1487 { 8028 /* table.get */, WebAssembly::TABLE_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1488 { 8028 /* table.get */, WebAssembly::TABLE_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1489 { 8038 /* table.grow */, WebAssembly::TABLE_GROW_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1490 { 8038 /* table.grow */, WebAssembly::TABLE_GROW_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1491 { 8038 /* table.grow */, WebAssembly::TABLE_GROW_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1492 { 8049 /* table.set */, WebAssembly::TABLE_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, },
1493 { 8049 /* table.set */, WebAssembly::TABLE_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1494 { 8049 /* table.set */, WebAssembly::TABLE_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1495 { 8059 /* table.size */, WebAssembly::TABLE_SIZE_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, },
1496 { 8070 /* throw */, WebAssembly::THROW_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
1497 { 8076 /* throw_ref */, WebAssembly::THROW_REF_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, },
1498 { 8086 /* try */, WebAssembly::TRY_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, },
1499 { 8090 /* try_table */, WebAssembly::TRY_TABLE_S, Convert__Imm1_0__CatchList1_1, AMFBS_HasExceptionHandling, { MCK_Imm, MCK_CatchList }, },
1500 { 8100 /* unreachable */, WebAssembly::DEBUG_UNREACHABLE_S, Convert_NoOperands, AMFBS_None, { }, },
1501 { 8100 /* unreachable */, WebAssembly::UNREACHABLE_S, Convert_NoOperands, AMFBS_None, { }, },
1502 { 8112 /* v128.and */, WebAssembly::AND_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1503 { 8121 /* v128.andnot */, WebAssembly::ANDNOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1504 { 8133 /* v128.any_true */, WebAssembly::ANYTRUE_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1505 { 8147 /* v128.bitselect */, WebAssembly::BITSELECT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1506 { 8162 /* v128.const */, WebAssembly::CONST_V128_I64x2_S, Convert__Imm1_0__Imm1_1, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1507 { 8162 /* v128.const */, WebAssembly::CONST_V128_F64x2_S, Convert__FPImmf641_0__FPImmf641_1, AMFBS_HasSIMD128, { MCK_FPImmf64, MCK_FPImmf64 }, },
1508 { 8162 /* 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 }, },
1509 { 8162 /* 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 }, },
1510 { 8162 /* 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 }, },
1511 { 8162 /* 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 }, },
1512 { 8173 /* v128.load */, WebAssembly::LOAD_V128_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1513 { 8173 /* v128.load */, WebAssembly::LOAD_V128_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1514 { 8183 /* v128.load16_lane */, WebAssembly::LOAD_LANE_16_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1515 { 8183 /* v128.load16_lane */, WebAssembly::LOAD_LANE_16_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1516 { 8200 /* v128.load16_splat */, WebAssembly::LOAD16_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1517 { 8200 /* v128.load16_splat */, WebAssembly::LOAD16_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1518 { 8218 /* v128.load32_lane */, WebAssembly::LOAD_LANE_32_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1519 { 8218 /* v128.load32_lane */, WebAssembly::LOAD_LANE_32_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1520 { 8235 /* v128.load32_splat */, WebAssembly::LOAD32_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1521 { 8235 /* v128.load32_splat */, WebAssembly::LOAD32_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1522 { 8253 /* v128.load32_zero */, WebAssembly::LOAD_ZERO_32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1523 { 8253 /* v128.load32_zero */, WebAssembly::LOAD_ZERO_32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1524 { 8270 /* v128.load64_lane */, WebAssembly::LOAD_LANE_64_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1525 { 8270 /* v128.load64_lane */, WebAssembly::LOAD_LANE_64_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1526 { 8287 /* v128.load64_splat */, WebAssembly::LOAD64_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1527 { 8287 /* v128.load64_splat */, WebAssembly::LOAD64_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1528 { 8305 /* v128.load64_zero */, WebAssembly::LOAD_ZERO_64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1529 { 8305 /* v128.load64_zero */, WebAssembly::LOAD_ZERO_64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1530 { 8322 /* v128.load8_lane */, WebAssembly::LOAD_LANE_8_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1531 { 8322 /* v128.load8_lane */, WebAssembly::LOAD_LANE_8_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1532 { 8338 /* v128.load8_splat */, WebAssembly::LOAD8_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1533 { 8338 /* v128.load8_splat */, WebAssembly::LOAD8_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1534 { 8355 /* v128.not */, WebAssembly::NOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1535 { 8364 /* v128.or */, WebAssembly::OR_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1536 { 8372 /* v128.select */, WebAssembly::SELECT_V128_S, Convert_NoOperands, AMFBS_None, { }, },
1537 { 8384 /* v128.store */, WebAssembly::STORE_V128_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1538 { 8384 /* v128.store */, WebAssembly::STORE_V128_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, },
1539 { 8395 /* v128.store16_lane */, WebAssembly::STORE_LANE_I16x8_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1540 { 8395 /* v128.store16_lane */, WebAssembly::STORE_LANE_I16x8_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1541 { 8413 /* v128.store32_lane */, WebAssembly::STORE_LANE_I32x4_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1542 { 8413 /* v128.store32_lane */, WebAssembly::STORE_LANE_I32x4_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1543 { 8431 /* v128.store64_lane */, WebAssembly::STORE_LANE_I64x2_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1544 { 8431 /* v128.store64_lane */, WebAssembly::STORE_LANE_I64x2_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1545 { 8449 /* v128.store8_lane */, WebAssembly::STORE_LANE_I8x16_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1546 { 8449 /* v128.store8_lane */, WebAssembly::STORE_LANE_I8x16_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, },
1547 { 8466 /* v128.xor */, WebAssembly::XOR_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, },
1548};
1549
1550#include "llvm/Support/Debug.h"
1551#include "llvm/Support/Format.h"
1552
1553unsigned WebAssemblyAsmParser::
1554MatchInstructionImpl(const OperandVector &Operands,
1555 MCInst &Inst,
1556 uint64_t &ErrorInfo,
1557 FeatureBitset &MissingFeatures,
1558 bool matchingInlineAsm, unsigned VariantID) {
1559 // Eliminate obvious mismatches.
1560 if (Operands.size() > 17) {
1561 ErrorInfo = 17;
1562 return Match_InvalidOperand;
1563 }
1564
1565 // Get the current feature set.
1566 const FeatureBitset &AvailableFeatures = getAvailableFeatures();
1567
1568 // Get the instruction mnemonic, which is the first token.
1569 StringRef Mnemonic = ((WebAssemblyOperand &)*Operands[0]).getToken();
1570
1571 // Some state to try to produce better error messages.
1572 bool HadMatchOtherThanFeatures = false;
1573 bool HadMatchOtherThanPredicate = false;
1574 unsigned RetCode = Match_InvalidOperand;
1575 MissingFeatures.set();
1576 // Set ErrorInfo to the operand that mismatches if it is
1577 // wrong for all instances of the instruction.
1578 ErrorInfo = ~0ULL;
1579 // Find the appropriate table for this asm variant.
1580 const MatchEntry *Start, *End;
1581 switch (VariantID) {
1582 default: llvm_unreachable("invalid variant!");
1583 case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break;
1584 }
1585 // Search the table.
1586 auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode());
1587
1588 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "AsmMatcher: found " <<
1589 std::distance(MnemonicRange.first, MnemonicRange.second) <<
1590 " encodings with mnemonic '" << Mnemonic << "'\n");
1591
1592 // Return a more specific error code if no mnemonics match.
1593 if (MnemonicRange.first == MnemonicRange.second)
1594 return Match_MnemonicFail;
1595
1596 for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second;
1597 it != ie; ++it) {
1598 const FeatureBitset &RequiredFeatures = FeatureBitsets[it->RequiredFeaturesIdx];
1599 bool HasRequiredFeatures =
1600 (AvailableFeatures & RequiredFeatures) == RequiredFeatures;
1601 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Trying to match opcode "
1602 << MII.getName(it->Opcode) << "\n");
1603 // equal_range guarantees that instruction mnemonic matches.
1604 assert(Mnemonic == it->getMnemonic());
1605 bool OperandsValid = true;
1606 for (unsigned FormalIdx = 0, ActualIdx = 1; FormalIdx != 16; ++FormalIdx) {
1607 auto Formal = static_cast<MatchClassKind>(it->Classes[FormalIdx]);
1608 DEBUG_WITH_TYPE("asm-matcher",
1609 dbgs() << " Matching formal operand class " << getMatchClassName(Formal)
1610 << " against actual operand at index " << ActualIdx);
1611 if (ActualIdx < Operands.size())
1612 DEBUG_WITH_TYPE("asm-matcher", dbgs() << " (";
1613 Operands[ActualIdx]->print(dbgs(), getContext().getAsmInfo()); dbgs() << "): ");
1614 else
1615 DEBUG_WITH_TYPE("asm-matcher", dbgs() << ": ");
1616 if (ActualIdx >= Operands.size()) {
1617 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "actual operand index out of range\n");
1618 if (Formal == InvalidMatchClass) {
1619 break;
1620 }
1621 if (isSubclass(Formal, OptionalMatchClass)) {
1622 continue;
1623 }
1624 OperandsValid = false;
1625 ErrorInfo = ActualIdx;
1626 break;
1627 }
1628 MCParsedAsmOperand &Actual = *Operands[ActualIdx];
1629 unsigned Diag = validateOperandClass(Actual, Formal, *STI);
1630 if (Diag == Match_Success) {
1631 DEBUG_WITH_TYPE("asm-matcher",
1632 dbgs() << "match success using generic matcher\n");
1633 ++ActualIdx;
1634 continue;
1635 }
1636 // If the generic handler indicates an invalid operand
1637 // failure, check for a special case.
1638 if (Diag != Match_Success) {
1639 unsigned TargetDiag = validateTargetOperandClass(Actual, Formal);
1640 if (TargetDiag == Match_Success) {
1641 DEBUG_WITH_TYPE("asm-matcher",
1642 dbgs() << "match success using target matcher\n");
1643 ++ActualIdx;
1644 continue;
1645 }
1646 // If the target matcher returned a specific error code use
1647 // that, else use the one from the generic matcher.
1648 if (TargetDiag != Match_InvalidOperand && HasRequiredFeatures)
1649 Diag = TargetDiag;
1650 }
1651 // If current formal operand wasn't matched and it is optional
1652 // then try to match next formal operand
1653 if (Diag == Match_InvalidOperand && isSubclass(Formal, OptionalMatchClass)) {
1654 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "ignoring optional operand\n");
1655 continue;
1656 }
1657 // If this operand is broken for all of the instances of this
1658 // mnemonic, keep track of it so we can report loc info.
1659 // If we already had a match that only failed due to a
1660 // target predicate, that diagnostic is preferred.
1661 if (!HadMatchOtherThanPredicate &&
1662 (it == MnemonicRange.first || ErrorInfo <= ActualIdx)) {
1663 if (HasRequiredFeatures && (ErrorInfo != ActualIdx || Diag != Match_InvalidOperand))
1664 RetCode = Diag;
1665 ErrorInfo = ActualIdx;
1666 }
1667 // Otherwise, just reject this instance of the mnemonic.
1668 OperandsValid = false;
1669 break;
1670 }
1671
1672 if (!OperandsValid) {
1673 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Opcode result: multiple "
1674 "operand mismatches, ignoring "
1675 "this opcode\n");
1676 continue;
1677 }
1678 if (!HasRequiredFeatures) {
1679 HadMatchOtherThanFeatures = true;
1680 FeatureBitset NewMissingFeatures = RequiredFeatures & ~AvailableFeatures;
1681 DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Missing target features:";
1682 for (unsigned I = 0, E = NewMissingFeatures.size(); I != E; ++I)
1683 if (NewMissingFeatures[I])
1684 dbgs() << ' ' << I;
1685 dbgs() << "\n");
1686 if (NewMissingFeatures.count() <=
1687 MissingFeatures.count())
1688 MissingFeatures = NewMissingFeatures;
1689 continue;
1690 }
1691
1692 Inst.clear();
1693
1694 Inst.setOpcode(it->Opcode);
1695 // We have a potential match but have not rendered the operands.
1696 // Check the target predicate to handle any context sensitive
1697 // constraints.
1698 // For example, Ties that are referenced multiple times must be
1699 // checked here to ensure the input is the same for each match
1700 // constraints. If we leave it any later the ties will have been
1701 // canonicalized
1702 unsigned MatchResult;
1703 if ((MatchResult = checkEarlyTargetMatchPredicate(Inst, Operands)) != Match_Success) {
1704 Inst.clear();
1705 DEBUG_WITH_TYPE(
1706 "asm-matcher",
1707 dbgs() << "Early target match predicate failed with diag code "
1708 << MatchResult << "\n");
1709 RetCode = MatchResult;
1710 HadMatchOtherThanPredicate = true;
1711 continue;
1712 }
1713
1714 if (matchingInlineAsm) {
1715 convertToMapAndConstraints(it->ConvertFn, Operands);
1716 if (!checkAsmTiedOperandConstraints(*this, it->ConvertFn, Operands,
1717 ErrorInfo))
1718 return Match_InvalidTiedOperand;
1719
1720 return Match_Success;
1721 }
1722
1723 // We have selected a definite instruction, convert the parsed
1724 // operands into the appropriate MCInst.
1725 convertToMCInst(it->ConvertFn, Inst, it->Opcode, Operands);
1726
1727 // We have a potential match. Check the target predicate to
1728 // handle any context sensitive constraints.
1729 if ((MatchResult = checkTargetMatchPredicate(Inst)) != Match_Success) {
1730 DEBUG_WITH_TYPE("asm-matcher",
1731 dbgs() << "Target match predicate failed with diag code "
1732 << MatchResult << "\n");
1733 Inst.clear();
1734 RetCode = MatchResult;
1735 HadMatchOtherThanPredicate = true;
1736 continue;
1737 }
1738
1739 if (!checkAsmTiedOperandConstraints(*this, it->ConvertFn, Operands,
1740 ErrorInfo))
1741 return Match_InvalidTiedOperand;
1742
1743 DEBUG_WITH_TYPE(
1744 "asm-matcher",
1745 dbgs() << "Opcode result: complete match, selecting this opcode\n");
1746 return Match_Success;
1747 }
1748
1749 // Okay, we had no match. Try to return a useful error code.
1750 if (HadMatchOtherThanPredicate || !HadMatchOtherThanFeatures)
1751 return RetCode;
1752
1753 ErrorInfo = 0;
1754 return Match_MissingFeature;
1755}
1756
1757#endif // GET_MATCHER_IMPLEMENTATION
1758
1759
1760#ifdef GET_MNEMONIC_SPELL_CHECKER
1761#undef GET_MNEMONIC_SPELL_CHECKER
1762
1763static std::string WebAssemblyMnemonicSpellCheck(StringRef S, const FeatureBitset &FBS, unsigned VariantID) {
1764 const unsigned MaxEditDist = 2;
1765 std::vector<StringRef> Candidates;
1766 StringRef Prev = "";
1767
1768 // Find the appropriate table for this asm variant.
1769 const MatchEntry *Start, *End;
1770 switch (VariantID) {
1771 default: llvm_unreachable("invalid variant!");
1772 case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break;
1773 }
1774
1775 for (auto I = Start; I < End; I++) {
1776 // Ignore unsupported instructions.
1777 const FeatureBitset &RequiredFeatures = FeatureBitsets[I->RequiredFeaturesIdx];
1778 if ((FBS & RequiredFeatures) != RequiredFeatures)
1779 continue;
1780
1781 StringRef T = I->getMnemonic();
1782 // Avoid recomputing the edit distance for the same string.
1783 if (T == Prev)
1784 continue;
1785
1786 Prev = T;
1787 unsigned Dist = S.edit_distance(T, false, MaxEditDist);
1788 if (Dist <= MaxEditDist)
1789 Candidates.push_back(T);
1790 }
1791
1792 if (Candidates.empty())
1793 return "";
1794
1795 std::string Res = ", did you mean: ";
1796 unsigned i = 0;
1797 for (; i < Candidates.size() - 1; i++)
1798 Res += Candidates[i].str() + ", ";
1799 return Res + Candidates[i].str() + "?";
1800}
1801
1802#endif // GET_MNEMONIC_SPELL_CHECKER
1803
1804
1805#ifdef GET_MNEMONIC_CHECKER
1806#undef GET_MNEMONIC_CHECKER
1807
1808static bool WebAssemblyCheckMnemonic(StringRef Mnemonic,
1809 const FeatureBitset &AvailableFeatures,
1810 unsigned VariantID) {
1811 // Find the appropriate table for this asm variant.
1812 const MatchEntry *Start, *End;
1813 switch (VariantID) {
1814 default: llvm_unreachable("invalid variant!");
1815 case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break;
1816 }
1817
1818 // Search the table.
1819 auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode());
1820
1821 if (MnemonicRange.first == MnemonicRange.second)
1822 return false;
1823
1824 for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second;
1825 it != ie; ++it) {
1826 const FeatureBitset &RequiredFeatures =
1827 FeatureBitsets[it->RequiredFeaturesIdx];
1828 if ((AvailableFeatures & RequiredFeatures) == RequiredFeatures)
1829 return true;
1830 }
1831 return false;
1832}
1833
1834#endif // GET_MNEMONIC_CHECKER
1835
1836