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. |
49 | enum 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_HasMultiMemoryBit = 7, |
58 | Feature_HasMultivalueBit = 8, |
59 | Feature_HasMutableGlobalsBit = 9, |
60 | Feature_HasNontrappingFPToIntBit = 10, |
61 | Feature_NotHasNontrappingFPToIntBit = 17, |
62 | Feature_HasReferenceTypesBit = 11, |
63 | Feature_HasRelaxedSIMDBit = 12, |
64 | Feature_HasSignExtBit = 14, |
65 | Feature_HasSIMD128Bit = 13, |
66 | Feature_HasTailCallBit = 15, |
67 | Feature_HasWideArithmeticBit = 16, |
68 | }; |
69 | |
70 | #endif // GET_REGISTER_MATCHER |
71 | |
72 | |
73 | #ifdef GET_SUBTARGET_FEATURE_NAME |
74 | #undef GET_SUBTARGET_FEATURE_NAME |
75 | |
76 | // User-level names for subtarget features that participate in |
77 | // instruction matching. |
78 | static const char *getSubtargetFeatureName(uint64_t Val) { |
79 | switch(Val) { |
80 | case Feature_HasAtomicsBit: return "atomics" ; |
81 | case Feature_HasBulkMemoryBit: return "bulk-memory" ; |
82 | case Feature_HasBulkMemoryOptBit: return "bulk-memory-opt" ; |
83 | case Feature_HasCallIndirectOverlongBit: return "call-indirect-overlong" ; |
84 | case Feature_HasExceptionHandlingBit: return "exception-handling" ; |
85 | case Feature_HasExtendedConstBit: return "extended-const" ; |
86 | case Feature_HasFP16Bit: return "fp16" ; |
87 | case Feature_HasMultiMemoryBit: return "multimemory" ; |
88 | case Feature_HasMultivalueBit: return "multivalue" ; |
89 | case Feature_HasMutableGlobalsBit: return "mutable-globals" ; |
90 | case Feature_HasNontrappingFPToIntBit: return "nontrapping-fptoint" ; |
91 | case Feature_NotHasNontrappingFPToIntBit: return "nontrapping-fptoint" ; |
92 | case Feature_HasReferenceTypesBit: return "reference-types" ; |
93 | case Feature_HasRelaxedSIMDBit: return "relaxed-simd" ; |
94 | case Feature_HasSignExtBit: return "sign-ext" ; |
95 | case Feature_HasSIMD128Bit: return "simd128" ; |
96 | case Feature_HasTailCallBit: return "tail-call" ; |
97 | case Feature_HasWideArithmeticBit: return "wide-arithmetic" ; |
98 | default: return "(unknown)" ; |
99 | } |
100 | } |
101 | |
102 | #endif // GET_SUBTARGET_FEATURE_NAME |
103 | |
104 | |
105 | #ifdef GET_MATCHER_IMPLEMENTATION |
106 | #undef GET_MATCHER_IMPLEMENTATION |
107 | |
108 | static const uint8_t TiedAsmOperandTable[][3] = { /* empty */ {0, 0, 0} }; |
109 | |
110 | namespace { |
111 | enum OperatorConversionKind { |
112 | CVT_Done, |
113 | CVT_Reg, |
114 | CVT_Tied, |
115 | CVT_imm_95_0, |
116 | CVT_95_addImmOperands, |
117 | CVT_95_addBrListOperands, |
118 | CVT_95_addFPImmf32Operands, |
119 | CVT_95_addFPImmf64Operands, |
120 | CVT_95_addCatchListOperands, |
121 | CVT_NUM_CONVERTERS |
122 | }; |
123 | |
124 | enum InstructionConversionKind { |
125 | Convert__imm_95_0, |
126 | Convert__Imm1_0, |
127 | Convert__BrList1_0, |
128 | Convert__Imm1_0__Imm1_1, |
129 | Convert_NoOperands, |
130 | Convert__imm_95_0__imm_95_0, |
131 | Convert__FPImmf321_0, |
132 | Convert__Imm1_1__Imm1_0, |
133 | Convert__FPImmf641_0, |
134 | 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, |
135 | Convert__Imm1_0__CatchList1_1, |
136 | Convert__FPImmf641_0__FPImmf641_1, |
137 | Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3, |
138 | Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3, |
139 | Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7, |
140 | Convert__Imm1_1__Imm1_0__Imm1_2, |
141 | CVT_NUM_SIGNATURES |
142 | }; |
143 | |
144 | } // end anonymous namespace |
145 | |
146 | static const uint8_t ConversionTable[CVT_NUM_SIGNATURES][33] = { |
147 | // Convert__imm_95_0 |
148 | { CVT_imm_95_0, 0, CVT_Done }, |
149 | // Convert__Imm1_0 |
150 | { CVT_95_addImmOperands, 1, CVT_Done }, |
151 | // Convert__BrList1_0 |
152 | { CVT_95_addBrListOperands, 1, CVT_Done }, |
153 | // Convert__Imm1_0__Imm1_1 |
154 | { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_Done }, |
155 | // Convert_NoOperands |
156 | { CVT_Done }, |
157 | // Convert__imm_95_0__imm_95_0 |
158 | { CVT_imm_95_0, 0, CVT_imm_95_0, 0, CVT_Done }, |
159 | // Convert__FPImmf321_0 |
160 | { CVT_95_addFPImmf32Operands, 1, CVT_Done }, |
161 | // Convert__Imm1_1__Imm1_0 |
162 | { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_Done }, |
163 | // Convert__FPImmf641_0 |
164 | { CVT_95_addFPImmf64Operands, 1, CVT_Done }, |
165 | // 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 |
166 | { 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 }, |
167 | // Convert__Imm1_0__CatchList1_1 |
168 | { CVT_95_addImmOperands, 1, CVT_95_addCatchListOperands, 2, CVT_Done }, |
169 | // Convert__FPImmf641_0__FPImmf641_1 |
170 | { CVT_95_addFPImmf64Operands, 1, CVT_95_addFPImmf64Operands, 2, CVT_Done }, |
171 | // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3 |
172 | { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done }, |
173 | // Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3 |
174 | { CVT_95_addFPImmf32Operands, 1, CVT_95_addFPImmf32Operands, 2, CVT_95_addFPImmf32Operands, 3, CVT_95_addFPImmf32Operands, 4, CVT_Done }, |
175 | // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7 |
176 | { 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 }, |
177 | // Convert__Imm1_1__Imm1_0__Imm1_2 |
178 | { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 3, CVT_Done }, |
179 | }; |
180 | |
181 | void WebAssemblyAsmParser:: |
182 | convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode, |
183 | const OperandVector &Operands) { |
184 | assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!" ); |
185 | const uint8_t *Converter = ConversionTable[Kind]; |
186 | Inst.setOpcode(Opcode); |
187 | for (const uint8_t *p = Converter; *p; p += 2) { |
188 | unsigned OpIdx = *(p + 1); |
189 | switch (*p) { |
190 | default: llvm_unreachable("invalid conversion entry!" ); |
191 | case CVT_Reg: |
192 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addRegOperands(Inst, 1); |
193 | break; |
194 | case CVT_Tied: { |
195 | assert(*(p + 1) < (size_t)(std::end(TiedAsmOperandTable) - |
196 | std::begin(TiedAsmOperandTable)) && |
197 | "Tied operand not found" ); |
198 | unsigned TiedResOpnd = TiedAsmOperandTable[*(p + 1)][0]; |
199 | if (TiedResOpnd != (uint8_t)-1) |
200 | Inst.addOperand(Inst.getOperand(TiedResOpnd)); |
201 | break; |
202 | } |
203 | case CVT_imm_95_0: |
204 | Inst.addOperand(MCOperand::createImm(0)); |
205 | break; |
206 | case CVT_95_addImmOperands: |
207 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addImmOperands(Inst, 1); |
208 | break; |
209 | case CVT_95_addBrListOperands: |
210 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addBrListOperands(Inst, 1); |
211 | break; |
212 | case CVT_95_addFPImmf32Operands: |
213 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addFPImmf32Operands(Inst, 1); |
214 | break; |
215 | case CVT_95_addFPImmf64Operands: |
216 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addFPImmf64Operands(Inst, 1); |
217 | break; |
218 | case CVT_95_addCatchListOperands: |
219 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addCatchListOperands(Inst, 1); |
220 | break; |
221 | } |
222 | } |
223 | } |
224 | |
225 | void WebAssemblyAsmParser:: |
226 | convertToMapAndConstraints(unsigned Kind, |
227 | const OperandVector &Operands) { |
228 | assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!" ); |
229 | unsigned NumMCOperands = 0; |
230 | const uint8_t *Converter = ConversionTable[Kind]; |
231 | for (const uint8_t *p = Converter; *p; p += 2) { |
232 | switch (*p) { |
233 | default: llvm_unreachable("invalid conversion entry!" ); |
234 | case CVT_Reg: |
235 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
236 | Operands[*(p + 1)]->setConstraint("r" ); |
237 | ++NumMCOperands; |
238 | break; |
239 | case CVT_Tied: |
240 | ++NumMCOperands; |
241 | break; |
242 | case CVT_imm_95_0: |
243 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
244 | Operands[*(p + 1)]->setConstraint("" ); |
245 | ++NumMCOperands; |
246 | break; |
247 | case CVT_95_addImmOperands: |
248 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
249 | Operands[*(p + 1)]->setConstraint("m" ); |
250 | NumMCOperands += 1; |
251 | break; |
252 | case CVT_95_addBrListOperands: |
253 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
254 | Operands[*(p + 1)]->setConstraint("m" ); |
255 | NumMCOperands += 1; |
256 | break; |
257 | case CVT_95_addFPImmf32Operands: |
258 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
259 | Operands[*(p + 1)]->setConstraint("m" ); |
260 | NumMCOperands += 1; |
261 | break; |
262 | case CVT_95_addFPImmf64Operands: |
263 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
264 | Operands[*(p + 1)]->setConstraint("m" ); |
265 | NumMCOperands += 1; |
266 | break; |
267 | case CVT_95_addCatchListOperands: |
268 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
269 | Operands[*(p + 1)]->setConstraint("m" ); |
270 | NumMCOperands += 1; |
271 | break; |
272 | } |
273 | } |
274 | } |
275 | |
276 | namespace { |
277 | |
278 | /// MatchClassKind - The kinds of classes which participate in |
279 | /// instruction matching. |
280 | enum MatchClassKind { |
281 | InvalidMatchClass = 0, |
282 | OptionalMatchClass = 1, |
283 | MCK_LAST_TOKEN = OptionalMatchClass, |
284 | MCK_EXNREF, // register class 'EXNREF' |
285 | MCK_EXTERNREF, // register class 'EXTERNREF' |
286 | MCK_F32, // register class 'F32' |
287 | MCK_F64, // register class 'F64' |
288 | MCK_FUNCREF, // register class 'FUNCREF' |
289 | MCK_V128, // register class 'V128' |
290 | MCK_I32, // register class 'I32' |
291 | MCK_I64, // register class 'I64' |
292 | MCK_LAST_REGISTER = MCK_I64, |
293 | MCK_BrList, // user defined class 'BrListAsmOperand' |
294 | MCK_CatchList, // user defined class 'CatchListAsmOperand' |
295 | MCK_Imm, // user defined class 'ImmAsmOperand' |
296 | MCK_FPImmf32, // user defined class 'anonymous_8654' |
297 | MCK_FPImmf64, // user defined class 'anonymous_8655' |
298 | NumMatchClassKinds |
299 | }; |
300 | |
301 | } // end anonymous namespace |
302 | |
303 | static unsigned getDiagKindFromRegisterClass(MatchClassKind RegisterClass) { |
304 | return MCTargetAsmParser::Match_InvalidOperand; |
305 | } |
306 | |
307 | static MatchClassKind matchTokenString(StringRef Name) { |
308 | return InvalidMatchClass; |
309 | } |
310 | |
311 | /// isSubclass - Compute whether \p A is a subclass of \p B. |
312 | static bool isSubclass(MatchClassKind A, MatchClassKind B) { |
313 | if (A == B) |
314 | return true; |
315 | |
316 | [[maybe_unused]] static constexpr struct { |
317 | uint32_t Offset; |
318 | uint16_t Start; |
319 | uint16_t Length; |
320 | } Table[] = { |
321 | {0, 0, 0}, |
322 | {0, 0, 0}, |
323 | {0, 0, 0}, |
324 | {0, 0, 0}, |
325 | {0, 0, 0}, |
326 | {0, 0, 0}, |
327 | {0, 0, 0}, |
328 | {0, 0, 0}, |
329 | {0, 0, 0}, |
330 | {0, 0, 0}, |
331 | {0, 0, 0}, |
332 | {0, 0, 0}, |
333 | {0, 0, 0}, |
334 | {0, 0, 0}, |
335 | {0, 0, 0}, |
336 | }; |
337 | |
338 | return false; |
339 | } |
340 | |
341 | static unsigned validateOperandClass(MCParsedAsmOperand &GOp, MatchClassKind Kind) { |
342 | WebAssemblyOperand &Operand = (WebAssemblyOperand &)GOp; |
343 | if (Kind == InvalidMatchClass) |
344 | return MCTargetAsmParser::Match_InvalidOperand; |
345 | |
346 | if (Operand.isToken() && Kind <= MCK_LAST_TOKEN) |
347 | return isSubclass(matchTokenString(Operand.getToken()), Kind) ? |
348 | MCTargetAsmParser::Match_Success : |
349 | MCTargetAsmParser::Match_InvalidOperand; |
350 | |
351 | switch (Kind) { |
352 | default: break; |
353 | case MCK_BrList: { |
354 | DiagnosticPredicate DP(Operand.isBrList()); |
355 | if (DP.isMatch()) |
356 | return MCTargetAsmParser::Match_Success; |
357 | break; |
358 | } |
359 | case MCK_CatchList: { |
360 | DiagnosticPredicate DP(Operand.isCatchList()); |
361 | if (DP.isMatch()) |
362 | return MCTargetAsmParser::Match_Success; |
363 | break; |
364 | } |
365 | case MCK_Imm: { |
366 | DiagnosticPredicate DP(Operand.isImm()); |
367 | if (DP.isMatch()) |
368 | return MCTargetAsmParser::Match_Success; |
369 | break; |
370 | } |
371 | case MCK_FPImmf32: { |
372 | DiagnosticPredicate DP(Operand.isFPImm()); |
373 | if (DP.isMatch()) |
374 | return MCTargetAsmParser::Match_Success; |
375 | break; |
376 | } |
377 | case MCK_FPImmf64: { |
378 | DiagnosticPredicate DP(Operand.isFPImm()); |
379 | if (DP.isMatch()) |
380 | return MCTargetAsmParser::Match_Success; |
381 | break; |
382 | } |
383 | } // end switch (Kind) |
384 | |
385 | if (Operand.isReg()) { |
386 | static constexpr uint16_t Table[WebAssembly::NUM_TARGET_REGS] = { |
387 | InvalidMatchClass, |
388 | InvalidMatchClass, |
389 | InvalidMatchClass, |
390 | MCK_EXNREF, |
391 | MCK_EXTERNREF, |
392 | MCK_I32, |
393 | MCK_I64, |
394 | MCK_FUNCREF, |
395 | MCK_I32, |
396 | MCK_I64, |
397 | MCK_F32, |
398 | MCK_F64, |
399 | MCK_I32, |
400 | MCK_I64, |
401 | MCK_V128, |
402 | }; |
403 | |
404 | MCRegister Reg = Operand.getReg(); |
405 | MatchClassKind OpKind = Reg.isPhysical() ? (MatchClassKind)Table[Reg.id()] : InvalidMatchClass; |
406 | return isSubclass(OpKind, Kind) ? (unsigned)MCTargetAsmParser::Match_Success : |
407 | getDiagKindFromRegisterClass(Kind); |
408 | } |
409 | |
410 | if (Kind > MCK_LAST_TOKEN && Kind <= MCK_LAST_REGISTER) |
411 | return getDiagKindFromRegisterClass(Kind); |
412 | |
413 | return MCTargetAsmParser::Match_InvalidOperand; |
414 | } |
415 | |
416 | #ifndef NDEBUG |
417 | const char *getMatchClassName(MatchClassKind Kind) { |
418 | switch (Kind) { |
419 | case InvalidMatchClass: return "InvalidMatchClass" ; |
420 | case OptionalMatchClass: return "OptionalMatchClass" ; |
421 | case MCK_EXNREF: return "MCK_EXNREF" ; |
422 | case MCK_EXTERNREF: return "MCK_EXTERNREF" ; |
423 | case MCK_F32: return "MCK_F32" ; |
424 | case MCK_F64: return "MCK_F64" ; |
425 | case MCK_FUNCREF: return "MCK_FUNCREF" ; |
426 | case MCK_V128: return "MCK_V128" ; |
427 | case MCK_I32: return "MCK_I32" ; |
428 | case MCK_I64: return "MCK_I64" ; |
429 | case MCK_BrList: return "MCK_BrList" ; |
430 | case MCK_CatchList: return "MCK_CatchList" ; |
431 | case MCK_Imm: return "MCK_Imm" ; |
432 | case MCK_FPImmf32: return "MCK_FPImmf32" ; |
433 | case MCK_FPImmf64: return "MCK_FPImmf64" ; |
434 | case NumMatchClassKinds: return "NumMatchClassKinds" ; |
435 | } |
436 | llvm_unreachable("unhandled MatchClassKind!" ); |
437 | } |
438 | |
439 | #endif // NDEBUG |
440 | FeatureBitset WebAssemblyAsmParser:: |
441 | ComputeAvailableFeatures(const FeatureBitset &FB) const { |
442 | FeatureBitset Features; |
443 | if (FB[WebAssembly::FeatureAtomics]) |
444 | Features.set(Feature_HasAtomicsBit); |
445 | if (FB[WebAssembly::FeatureBulkMemory]) |
446 | Features.set(Feature_HasBulkMemoryBit); |
447 | if (FB[WebAssembly::FeatureBulkMemoryOpt]) |
448 | Features.set(Feature_HasBulkMemoryOptBit); |
449 | if (FB[WebAssembly::FeatureCallIndirectOverlong]) |
450 | Features.set(Feature_HasCallIndirectOverlongBit); |
451 | if (FB[WebAssembly::FeatureExceptionHandling]) |
452 | Features.set(Feature_HasExceptionHandlingBit); |
453 | if (FB[WebAssembly::FeatureExtendedConst]) |
454 | Features.set(Feature_HasExtendedConstBit); |
455 | if (FB[WebAssembly::FeatureFP16]) |
456 | Features.set(Feature_HasFP16Bit); |
457 | if (FB[WebAssembly::FeatureMultiMemory]) |
458 | Features.set(Feature_HasMultiMemoryBit); |
459 | if (FB[WebAssembly::FeatureMultivalue]) |
460 | Features.set(Feature_HasMultivalueBit); |
461 | if (FB[WebAssembly::FeatureMutableGlobals]) |
462 | Features.set(Feature_HasMutableGlobalsBit); |
463 | if (FB[WebAssembly::FeatureNontrappingFPToInt]) |
464 | Features.set(Feature_HasNontrappingFPToIntBit); |
465 | if (!FB[WebAssembly::FeatureNontrappingFPToInt]) |
466 | Features.set(Feature_NotHasNontrappingFPToIntBit); |
467 | if (FB[WebAssembly::FeatureReferenceTypes]) |
468 | Features.set(Feature_HasReferenceTypesBit); |
469 | if (FB[WebAssembly::FeatureRelaxedSIMD]) |
470 | Features.set(Feature_HasRelaxedSIMDBit); |
471 | if (FB[WebAssembly::FeatureSignExt]) |
472 | Features.set(Feature_HasSignExtBit); |
473 | if (FB[WebAssembly::FeatureSIMD128] || FB[WebAssembly::FeatureRelaxedSIMD]) |
474 | Features.set(Feature_HasSIMD128Bit); |
475 | if (FB[WebAssembly::FeatureTailCall]) |
476 | Features.set(Feature_HasTailCallBit); |
477 | if (FB[WebAssembly::FeatureWideArithmetic]) |
478 | Features.set(Feature_HasWideArithmeticBit); |
479 | return Features; |
480 | } |
481 | |
482 | static bool checkAsmTiedOperandConstraints(const WebAssemblyAsmParser&AsmParser, |
483 | unsigned Kind, const OperandVector &Operands, |
484 | uint64_t &ErrorInfo) { |
485 | assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!" ); |
486 | const uint8_t *Converter = ConversionTable[Kind]; |
487 | for (const uint8_t *p = Converter; *p; p += 2) { |
488 | switch (*p) { |
489 | case CVT_Tied: { |
490 | unsigned OpIdx = *(p + 1); |
491 | assert(OpIdx < (size_t)(std::end(TiedAsmOperandTable) - |
492 | std::begin(TiedAsmOperandTable)) && |
493 | "Tied operand not found" ); |
494 | unsigned OpndNum1 = TiedAsmOperandTable[OpIdx][1]; |
495 | unsigned OpndNum2 = TiedAsmOperandTable[OpIdx][2]; |
496 | if (OpndNum1 != OpndNum2) { |
497 | auto &SrcOp1 = Operands[OpndNum1]; |
498 | auto &SrcOp2 = Operands[OpndNum2]; |
499 | if (!AsmParser.areEqualRegs(*SrcOp1, *SrcOp2)) { |
500 | ErrorInfo = OpndNum2; |
501 | return false; |
502 | } |
503 | } |
504 | break; |
505 | } |
506 | default: |
507 | break; |
508 | } |
509 | } |
510 | return true; |
511 | } |
512 | |
513 | static const char MnemonicTable[] = |
514 | "\000\014atomic.fence\005block\002br\005br_if\010br_table\004call\015cal" |
515 | "l_indirect\013call_params\014call_results\005catch\tcatch_all\010catchr" |
516 | "et\ncleanupret\016compiler_fence\tdata.drop\010delegate\004drop\004else" |
517 | "\003end\tend_block\014end_function\006end_if\010end_loop\007end_try\015" |
518 | "end_try_table\015exnref.select\020externref.select\tf16x8.abs\tf16x8.ad" |
519 | "d\nf16x8.ceil\025f16x8.convert_i16x8_s\025f16x8.convert_i16x8_u\tf16x8." |
520 | "div\010f16x8.eq\022f16x8.extract_lane\013f16x8.floor\010f16x8.ge\010f16" |
521 | "x8.gt\010f16x8.le\010f16x8.lt\tf16x8.max\tf16x8.min\tf16x8.mul\010f16x8" |
522 | ".ne\015f16x8.nearest\tf16x8.neg\nf16x8.pmax\nf16x8.pmin\022f16x8.relaxe" |
523 | "d_madd\023f16x8.relaxed_nmadd\022f16x8.replace_lane\013f16x8.splat\nf16" |
524 | "x8.sqrt\tf16x8.sub\013f16x8.trunc\007f32.abs\007f32.add\010f32.ceil\tf3" |
525 | "2.const\021f32.convert_i32_s\021f32.convert_i32_u\021f32.convert_i64_s\021" |
526 | "f32.convert_i64_u\014f32.copysign\016f32.demote_f64\007f32.div\006f32.e" |
527 | "q\tf32.floor\006f32.ge\006f32.gt\006f32.le\010f32.load\014f32.load_f16\006" |
528 | "f32.lt\007f32.max\007f32.min\007f32.mul\006f32.ne\013f32.nearest\007f32" |
529 | ".neg\023f32.reinterpret_i32\nf32.select\010f32.sqrt\tf32.store\015f32.s" |
530 | "tore_f16\007f32.sub\tf32.trunc\tf32x4.abs\tf32x4.add\nf32x4.ceil\025f32" |
531 | "x4.convert_i32x4_s\025f32x4.convert_i32x4_u\027f32x4.demote_f64x2_zero\t" |
532 | "f32x4.div\010f32x4.eq\022f32x4.extract_lane\013f32x4.floor\010f32x4.ge\010" |
533 | "f32x4.gt\010f32x4.le\010f32x4.lt\tf32x4.max\tf32x4.min\tf32x4.mul\010f3" |
534 | "2x4.ne\015f32x4.nearest\tf32x4.neg\nf32x4.pmax\nf32x4.pmin f32x4.relaxe" |
535 | "d_dot_bf16x8_add_f32\022f32x4.relaxed_madd\021f32x4.relaxed_max\021f32x" |
536 | "4.relaxed_min\023f32x4.relaxed_nmadd\022f32x4.replace_lane\013f32x4.spl" |
537 | "at\nf32x4.sqrt\tf32x4.sub\013f32x4.trunc\007f64.abs\007f64.add\010f64.c" |
538 | "eil\tf64.const\021f64.convert_i32_s\021f64.convert_i32_u\021f64.convert" |
539 | "_i64_s\021f64.convert_i64_u\014f64.copysign\007f64.div\006f64.eq\tf64.f" |
540 | "loor\006f64.ge\006f64.gt\006f64.le\010f64.load\006f64.lt\007f64.max\007" |
541 | "f64.min\007f64.mul\006f64.ne\013f64.nearest\007f64.neg\017f64.promote_f" |
542 | "32\023f64.reinterpret_i64\nf64.select\010f64.sqrt\tf64.store\007f64.sub" |
543 | "\tf64.trunc\tf64x2.abs\tf64x2.add\nf64x2.ceil\031f64x2.convert_low_i32x" |
544 | "4_s\031f64x2.convert_low_i32x4_u\tf64x2.div\010f64x2.eq\022f64x2.extrac" |
545 | "t_lane\013f64x2.floor\010f64x2.ge\010f64x2.gt\010f64x2.le\010f64x2.lt\t" |
546 | "f64x2.max\tf64x2.min\tf64x2.mul\010f64x2.ne\015f64x2.nearest\tf64x2.neg" |
547 | "\nf64x2.pmax\nf64x2.pmin\027f64x2.promote_low_f32x4\022f64x2.relaxed_ma" |
548 | "dd\021f64x2.relaxed_max\021f64x2.relaxed_min\023f64x2.relaxed_nmadd\022" |
549 | "f64x2.replace_lane\013f64x2.splat\nf64x2.sqrt\tf64x2.sub\013f64x2.trunc" |
550 | "\016funcref.select\nglobal.get\nglobal.set\ti16x8.abs\ti16x8.add\017i16" |
551 | "x8.add_sat_s\017i16x8.add_sat_u\016i16x8.all_true\014i16x8.avgr_u\015i1" |
552 | "6x8.bitmask\010i16x8.eq\035i16x8.extadd_pairwise_i8x16_s\035i16x8.extad" |
553 | "d_pairwise_i8x16_u\031i16x8.extend_high_i8x16_s\031i16x8.extend_high_i8" |
554 | "x16_u\030i16x8.extend_low_i8x16_s\030i16x8.extend_low_i8x16_u\031i16x8." |
555 | "extmul_high_i8x16_s\031i16x8.extmul_high_i8x16_u\030i16x8.extmul_low_i8" |
556 | "x16_s\030i16x8.extmul_low_i8x16_u\024i16x8.extract_lane_s\024i16x8.extr" |
557 | "act_lane_u\ni16x8.ge_s\ni16x8.ge_u\ni16x8.gt_s\ni16x8.gt_u\ni16x8.le_s\n" |
558 | "i16x8.le_u\017i16x8.load8x8_s\017i16x8.load8x8_u\ni16x8.lt_s\ni16x8.lt_" |
559 | "u\013i16x8.max_s\013i16x8.max_u\013i16x8.min_s\013i16x8.min_u\ti16x8.mu" |
560 | "l\024i16x8.narrow_i32x4_s\024i16x8.narrow_i32x4_u\010i16x8.ne\ti16x8.ne" |
561 | "g\023i16x8.q15mulr_sat_s\037i16x8.relaxed_dot_i8x16_i7x16_s\030i16x8.re" |
562 | "laxed_laneselect\027i16x8.relaxed_q15mulr_s\022i16x8.replace_lane\ti16x" |
563 | "8.shl\013i16x8.shr_s\013i16x8.shr_u\013i16x8.splat\ti16x8.sub\017i16x8." |
564 | "sub_sat_s\017i16x8.sub_sat_u\027i16x8.trunc_sat_f16x8_s\027i16x8.trunc_" |
565 | "sat_f16x8_u\007i32.add\007i32.and\017i32.atomic.load\023i32.atomic.load" |
566 | "16_u\022i32.atomic.load8_u\022i32.atomic.rmw.add\022i32.atomic.rmw.and\026" |
567 | "i32.atomic.rmw.cmpxchg\021i32.atomic.rmw.or\022i32.atomic.rmw.sub\023i3" |
568 | "2.atomic.rmw.xchg\022i32.atomic.rmw.xor\026i32.atomic.rmw16.add_u\026i3" |
569 | "2.atomic.rmw16.and_u\032i32.atomic.rmw16.cmpxchg_u\025i32.atomic.rmw16." |
570 | "or_u\026i32.atomic.rmw16.sub_u\027i32.atomic.rmw16.xchg_u\026i32.atomic" |
571 | ".rmw16.xor_u\025i32.atomic.rmw8.add_u\025i32.atomic.rmw8.and_u\031i32.a" |
572 | "tomic.rmw8.cmpxchg_u\024i32.atomic.rmw8.or_u\025i32.atomic.rmw8.sub_u\026" |
573 | "i32.atomic.rmw8.xchg_u\025i32.atomic.rmw8.xor_u\020i32.atomic.store\022" |
574 | "i32.atomic.store16\021i32.atomic.store8\007i32.clz\ti32.const\007i32.ct" |
575 | "z\ti32.div_s\ti32.div_u\006i32.eq\007i32.eqz\016i32.extend16_s\015i32.e" |
576 | "xtend8_s\010i32.ge_s\010i32.ge_u\010i32.gt_s\010i32.gt_u\010i32.le_s\010" |
577 | "i32.le_u\010i32.load\014i32.load16_s\014i32.load16_u\013i32.load8_s\013" |
578 | "i32.load8_u\010i32.lt_s\010i32.lt_u\007i32.mul\006i32.ne\006i32.or\ni32" |
579 | ".popcnt\023i32.reinterpret_f32\ti32.rem_s\ti32.rem_u\010i32.rotl\010i32" |
580 | ".rotr\ni32.select\007i32.shl\ti32.shr_s\ti32.shr_u\ti32.store\013i32.st" |
581 | "ore16\ni32.store8\007i32.sub\017i32.trunc_f32_s\017i32.trunc_f32_u\017i" |
582 | "32.trunc_f64_s\017i32.trunc_f64_u\023i32.trunc_sat_f32_s\023i32.trunc_s" |
583 | "at_f32_u\023i32.trunc_sat_f64_s\023i32.trunc_sat_f64_u\014i32.wrap_i64\007" |
584 | "i32.xor\ti32x4.abs\ti32x4.add\016i32x4.all_true\015i32x4.bitmask\021i32" |
585 | "x4.dot_i16x8_s\010i32x4.eq\035i32x4.extadd_pairwise_i16x8_s\035i32x4.ex" |
586 | "tadd_pairwise_i16x8_u\031i32x4.extend_high_i16x8_s\031i32x4.extend_high" |
587 | "_i16x8_u\030i32x4.extend_low_i16x8_s\030i32x4.extend_low_i16x8_u\031i32" |
588 | "x4.extmul_high_i16x8_s\031i32x4.extmul_high_i16x8_u\030i32x4.extmul_low" |
589 | "_i16x8_s\030i32x4.extmul_low_i16x8_u\022i32x4.extract_lane\ni32x4.ge_s\n" |
590 | "i32x4.ge_u\ni32x4.gt_s\ni32x4.gt_u\ni32x4.le_s\ni32x4.le_u\020i32x4.loa" |
591 | "d16x4_s\020i32x4.load16x4_u\ni32x4.lt_s\ni32x4.lt_u\013i32x4.max_s\013i" |
592 | "32x4.max_u\013i32x4.min_s\013i32x4.min_u\ti32x4.mul\010i32x4.ne\ti32x4." |
593 | "neg#i32x4.relaxed_dot_i8x16_i7x16_add_s\030i32x4.relaxed_laneselect\033" |
594 | "i32x4.relaxed_trunc_f32x4_s\033i32x4.relaxed_trunc_f32x4_u i32x4.relaxe" |
595 | "d_trunc_f64x2_s_zero i32x4.relaxed_trunc_f64x2_u_zero\022i32x4.replace_" |
596 | "lane\ti32x4.shl\013i32x4.shr_s\013i32x4.shr_u\013i32x4.splat\ti32x4.sub" |
597 | "\027i32x4.trunc_sat_f32x4_s\027i32x4.trunc_sat_f32x4_u\034i32x4.trunc_s" |
598 | "at_f64x2_s_zero\034i32x4.trunc_sat_f64x2_u_zero\007i64.add\ni64.add128\007" |
599 | "i64.and\017i64.atomic.load\023i64.atomic.load16_u\023i64.atomic.load32_" |
600 | "u\022i64.atomic.load8_u\022i64.atomic.rmw.add\022i64.atomic.rmw.and\026" |
601 | "i64.atomic.rmw.cmpxchg\021i64.atomic.rmw.or\022i64.atomic.rmw.sub\023i6" |
602 | "4.atomic.rmw.xchg\022i64.atomic.rmw.xor\026i64.atomic.rmw16.add_u\026i6" |
603 | "4.atomic.rmw16.and_u\032i64.atomic.rmw16.cmpxchg_u\025i64.atomic.rmw16." |
604 | "or_u\026i64.atomic.rmw16.sub_u\027i64.atomic.rmw16.xchg_u\026i64.atomic" |
605 | ".rmw16.xor_u\026i64.atomic.rmw32.add_u\026i64.atomic.rmw32.and_u\032i64" |
606 | ".atomic.rmw32.cmpxchg_u\025i64.atomic.rmw32.or_u\026i64.atomic.rmw32.su" |
607 | "b_u\027i64.atomic.rmw32.xchg_u\026i64.atomic.rmw32.xor_u\025i64.atomic." |
608 | "rmw8.add_u\025i64.atomic.rmw8.and_u\031i64.atomic.rmw8.cmpxchg_u\024i64" |
609 | ".atomic.rmw8.or_u\025i64.atomic.rmw8.sub_u\026i64.atomic.rmw8.xchg_u\025" |
610 | "i64.atomic.rmw8.xor_u\020i64.atomic.store\022i64.atomic.store16\022i64." |
611 | "atomic.store32\021i64.atomic.store8\007i64.clz\ti64.const\007i64.ctz\ti" |
612 | "64.div_s\ti64.div_u\006i64.eq\007i64.eqz\016i64.extend16_s\016i64.exten" |
613 | "d32_s\015i64.extend8_s\020i64.extend_i32_s\020i64.extend_i32_u\010i64.g" |
614 | "e_s\010i64.ge_u\010i64.gt_s\010i64.gt_u\010i64.le_s\010i64.le_u\010i64." |
615 | "load\014i64.load16_s\014i64.load16_u\014i64.load32_s\014i64.load32_u\013" |
616 | "i64.load8_s\013i64.load8_u\010i64.lt_s\010i64.lt_u\007i64.mul\016i64.mu" |
617 | "l_wide_s\016i64.mul_wide_u\006i64.ne\006i64.or\ni64.popcnt\023i64.reint" |
618 | "erpret_f64\ti64.rem_s\ti64.rem_u\010i64.rotl\010i64.rotr\ni64.select\007" |
619 | "i64.shl\ti64.shr_s\ti64.shr_u\ti64.store\013i64.store16\013i64.store32\n" |
620 | "i64.store8\007i64.sub\ni64.sub128\017i64.trunc_f32_s\017i64.trunc_f32_u" |
621 | "\017i64.trunc_f64_s\017i64.trunc_f64_u\023i64.trunc_sat_f32_s\023i64.tr" |
622 | "unc_sat_f32_u\023i64.trunc_sat_f64_s\023i64.trunc_sat_f64_u\007i64.xor\t" |
623 | "i64x2.abs\ti64x2.add\016i64x2.all_true\015i64x2.bitmask\010i64x2.eq\031" |
624 | "i64x2.extend_high_i32x4_s\031i64x2.extend_high_i32x4_u\030i64x2.extend_" |
625 | "low_i32x4_s\030i64x2.extend_low_i32x4_u\031i64x2.extmul_high_i32x4_s\031" |
626 | "i64x2.extmul_high_i32x4_u\030i64x2.extmul_low_i32x4_s\030i64x2.extmul_l" |
627 | "ow_i32x4_u\022i64x2.extract_lane\ni64x2.ge_s\ni64x2.gt_s\ni64x2.le_s\020" |
628 | "i64x2.load32x2_s\020i64x2.load32x2_u\ni64x2.lt_s\ti64x2.mul\010i64x2.ne" |
629 | "\ti64x2.neg\030i64x2.relaxed_laneselect\022i64x2.replace_lane\ti64x2.sh" |
630 | "l\013i64x2.shr_s\013i64x2.shr_u\013i64x2.splat\ti64x2.sub\ti8x16.abs\ti" |
631 | "8x16.add\017i8x16.add_sat_s\017i8x16.add_sat_u\016i8x16.all_true\014i8x" |
632 | "16.avgr_u\015i8x16.bitmask\010i8x16.eq\024i8x16.extract_lane_s\024i8x16" |
633 | ".extract_lane_u\ni8x16.ge_s\ni8x16.ge_u\ni8x16.gt_s\ni8x16.gt_u\ni8x16." |
634 | "le_s\ni8x16.le_u\ni8x16.lt_s\ni8x16.lt_u\013i8x16.max_s\013i8x16.max_u\013" |
635 | "i8x16.min_s\013i8x16.min_u\024i8x16.narrow_i16x8_s\024i8x16.narrow_i16x" |
636 | "8_u\010i8x16.ne\ti8x16.neg\014i8x16.popcnt\030i8x16.relaxed_laneselect\025" |
637 | "i8x16.relaxed_swizzle\022i8x16.replace_lane\ti8x16.shl\013i8x16.shr_s\013" |
638 | "i8x16.shr_u\015i8x16.shuffle\013i8x16.splat\ti8x16.sub\017i8x16.sub_sat" |
639 | "_s\017i8x16.sub_sat_u\015i8x16.swizzle\002if\tlocal.get\tlocal.set\tloc" |
640 | "al.tee\004loop\024memory.atomic.notify\024memory.atomic.wait32\024memor" |
641 | "y.atomic.wait64\013memory.copy\013memory.fill\013memory.grow\013memory." |
642 | "init\013memory.size\003nop\013ref.is_null\014ref.null_exn\017ref.null_e" |
643 | "xtern\015ref.null_func\007rethrow\006return\013return_call\024return_ca" |
644 | "ll_indirect\023return_call_results\ntable.copy\ntable.fill\ttable.get\n" |
645 | "table.grow\ttable.set\ntable.size\005throw\tthrow_ref\003try\ttry_table" |
646 | "\013unreachable\010v128.and\013v128.andnot\015v128.any_true\016v128.bit" |
647 | "select\nv128.const\tv128.load\020v128.load16_lane\021v128.load16_splat\020" |
648 | "v128.load32_lane\021v128.load32_splat\020v128.load32_zero\020v128.load6" |
649 | "4_lane\021v128.load64_splat\020v128.load64_zero\017v128.load8_lane\020v" |
650 | "128.load8_splat\010v128.not\007v128.or\013v128.select\nv128.store\021v1" |
651 | "28.store16_lane\021v128.store32_lane\021v128.store64_lane\020v128.store" |
652 | "8_lane\010v128.xor" ; |
653 | |
654 | // Feature bitsets. |
655 | enum : uint8_t { |
656 | AMFBS_None, |
657 | AMFBS_HasAtomics, |
658 | AMFBS_HasBulkMemoryOpt, |
659 | AMFBS_HasExceptionHandling, |
660 | AMFBS_HasFP16, |
661 | AMFBS_HasNontrappingFPToInt, |
662 | AMFBS_HasReferenceTypes, |
663 | AMFBS_HasRelaxedSIMD, |
664 | AMFBS_HasSIMD128, |
665 | AMFBS_HasSignExt, |
666 | AMFBS_HasTailCall, |
667 | AMFBS_HasWideArithmetic, |
668 | AMFBS_HasReferenceTypes_HasExceptionHandling, |
669 | AMFBS_HasSIMD128_HasFP16, |
670 | AMFBS_HasSIMD128_HasRelaxedSIMD, |
671 | }; |
672 | |
673 | static constexpr FeatureBitset FeatureBitsets[] = { |
674 | {}, // AMFBS_None |
675 | {Feature_HasAtomicsBit, }, |
676 | {Feature_HasBulkMemoryOptBit, }, |
677 | {Feature_HasExceptionHandlingBit, }, |
678 | {Feature_HasFP16Bit, }, |
679 | {Feature_HasNontrappingFPToIntBit, }, |
680 | {Feature_HasReferenceTypesBit, }, |
681 | {Feature_HasRelaxedSIMDBit, }, |
682 | {Feature_HasSIMD128Bit, }, |
683 | {Feature_HasSignExtBit, }, |
684 | {Feature_HasTailCallBit, }, |
685 | {Feature_HasWideArithmeticBit, }, |
686 | {Feature_HasReferenceTypesBit, Feature_HasExceptionHandlingBit, }, |
687 | {Feature_HasSIMD128Bit, Feature_HasFP16Bit, }, |
688 | {Feature_HasSIMD128Bit, Feature_HasRelaxedSIMDBit, }, |
689 | }; |
690 | |
691 | namespace { |
692 | struct MatchEntry { |
693 | uint16_t Mnemonic; |
694 | uint16_t Opcode; |
695 | uint8_t ConvertFn; |
696 | uint8_t RequiredFeaturesIdx; |
697 | uint8_t Classes[16]; |
698 | StringRef getMnemonic() const { |
699 | return StringRef(MnemonicTable + Mnemonic + 1, |
700 | MnemonicTable[Mnemonic]); |
701 | } |
702 | }; |
703 | |
704 | // Predicate for searching for an opcode. |
705 | struct LessOpcode { |
706 | bool operator()(const MatchEntry &LHS, StringRef RHS) { |
707 | return LHS.getMnemonic() < RHS; |
708 | } |
709 | bool operator()(StringRef LHS, const MatchEntry &RHS) { |
710 | return LHS < RHS.getMnemonic(); |
711 | } |
712 | bool operator()(const MatchEntry &LHS, const MatchEntry &RHS) { |
713 | return LHS.getMnemonic() < RHS.getMnemonic(); |
714 | } |
715 | }; |
716 | } // end anonymous namespace |
717 | |
718 | static const MatchEntry MatchTable0[] = { |
719 | { 1 /* atomic.fence */, WebAssembly::ATOMIC_FENCE_S, Convert__imm_95_0, AMFBS_HasAtomics, { }, }, |
720 | { 14 /* block */, WebAssembly::BLOCK_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
721 | { 20 /* br */, WebAssembly::BR_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
722 | { 23 /* br_if */, WebAssembly::BR_IF_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
723 | { 29 /* br_table */, WebAssembly::BR_TABLE_I32_S, Convert__BrList1_0, AMFBS_None, { MCK_BrList }, }, |
724 | { 29 /* br_table */, WebAssembly::BR_TABLE_I64_S, Convert__BrList1_0, AMFBS_None, { MCK_BrList }, }, |
725 | { 38 /* call */, WebAssembly::CALL_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
726 | { 43 /* call_indirect */, WebAssembly::CALL_INDIRECT_S, Convert__Imm1_0__Imm1_1, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
727 | { 57 /* call_params */, WebAssembly::CALL_PARAMS_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
728 | { 69 /* call_results */, WebAssembly::CALL_RESULTS_S, Convert_NoOperands, AMFBS_None, { }, }, |
729 | { 82 /* catch */, WebAssembly::CATCH_LEGACY_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
730 | { 88 /* catch_all */, WebAssembly::CATCH_ALL_LEGACY_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, }, |
731 | { 98 /* catchret */, WebAssembly::CATCHRET_S, Convert__imm_95_0__imm_95_0, AMFBS_HasExceptionHandling, { }, }, |
732 | { 107 /* cleanupret */, WebAssembly::CLEANUPRET_S, Convert__imm_95_0, AMFBS_HasExceptionHandling, { }, }, |
733 | { 118 /* compiler_fence */, WebAssembly::COMPILER_FENCE_S, Convert_NoOperands, AMFBS_HasAtomics, { }, }, |
734 | { 133 /* data.drop */, WebAssembly::DATA_DROP_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, }, |
735 | { 143 /* delegate */, WebAssembly::DELEGATE_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
736 | { 152 /* drop */, WebAssembly::DROP_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes_HasExceptionHandling, { }, }, |
737 | { 152 /* drop */, WebAssembly::DROP_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
738 | { 152 /* drop */, WebAssembly::DROP_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
739 | { 152 /* drop */, WebAssembly::DROP_V128_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
740 | { 152 /* drop */, WebAssembly::DROP_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
741 | { 152 /* drop */, WebAssembly::DROP_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
742 | { 152 /* drop */, WebAssembly::DROP_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
743 | { 152 /* drop */, WebAssembly::DROP_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
744 | { 157 /* else */, WebAssembly::ELSE_S, Convert_NoOperands, AMFBS_None, { }, }, |
745 | { 162 /* end */, WebAssembly::END_S, Convert_NoOperands, AMFBS_None, { }, }, |
746 | { 166 /* end_block */, WebAssembly::END_BLOCK_S, Convert_NoOperands, AMFBS_None, { }, }, |
747 | { 176 /* end_function */, WebAssembly::END_FUNCTION_S, Convert_NoOperands, AMFBS_None, { }, }, |
748 | { 189 /* end_if */, WebAssembly::END_IF_S, Convert_NoOperands, AMFBS_None, { }, }, |
749 | { 196 /* end_loop */, WebAssembly::END_LOOP_S, Convert_NoOperands, AMFBS_None, { }, }, |
750 | { 205 /* end_try */, WebAssembly::END_TRY_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, }, |
751 | { 213 /* end_try_table */, WebAssembly::END_TRY_TABLE_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, }, |
752 | { 227 /* exnref.select */, WebAssembly::SELECT_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
753 | { 241 /* externref.select */, WebAssembly::SELECT_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
754 | { 258 /* f16x8.abs */, WebAssembly::ABS_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
755 | { 268 /* f16x8.add */, WebAssembly::ADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
756 | { 278 /* f16x8.ceil */, WebAssembly::CEIL_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
757 | { 289 /* f16x8.convert_i16x8_s */, WebAssembly::sint_to_fp_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
758 | { 311 /* f16x8.convert_i16x8_u */, WebAssembly::uint_to_fp_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
759 | { 333 /* f16x8.div */, WebAssembly::DIV_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
760 | { 343 /* f16x8.eq */, WebAssembly::EQ_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
761 | { 352 /* f16x8.extract_lane */, WebAssembly::EXTRACT_LANE_F16x8_S, Convert__Imm1_0, AMFBS_HasFP16, { MCK_Imm }, }, |
762 | { 371 /* f16x8.floor */, WebAssembly::FLOOR_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
763 | { 383 /* f16x8.ge */, WebAssembly::GE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
764 | { 392 /* f16x8.gt */, WebAssembly::GT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
765 | { 401 /* f16x8.le */, WebAssembly::LE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
766 | { 410 /* f16x8.lt */, WebAssembly::LT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
767 | { 419 /* f16x8.max */, WebAssembly::MAX_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
768 | { 429 /* f16x8.min */, WebAssembly::MIN_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
769 | { 439 /* f16x8.mul */, WebAssembly::MUL_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
770 | { 449 /* f16x8.ne */, WebAssembly::NE_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
771 | { 458 /* f16x8.nearest */, WebAssembly::NEAREST_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
772 | { 472 /* f16x8.neg */, WebAssembly::NEG_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
773 | { 482 /* f16x8.pmax */, WebAssembly::PMAX_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
774 | { 493 /* f16x8.pmin */, WebAssembly::PMIN_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
775 | { 504 /* f16x8.relaxed_madd */, WebAssembly::MADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
776 | { 523 /* f16x8.relaxed_nmadd */, WebAssembly::NMADD_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
777 | { 543 /* f16x8.replace_lane */, WebAssembly::REPLACE_LANE_F16x8_S, Convert__Imm1_0, AMFBS_HasFP16, { MCK_Imm }, }, |
778 | { 562 /* f16x8.splat */, WebAssembly::SPLAT_F16x8_S, Convert_NoOperands, AMFBS_HasFP16, { }, }, |
779 | { 574 /* f16x8.sqrt */, WebAssembly::SQRT_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
780 | { 585 /* f16x8.sub */, WebAssembly::SUB_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
781 | { 595 /* f16x8.trunc */, WebAssembly::TRUNC_F16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
782 | { 607 /* f32.abs */, WebAssembly::ABS_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
783 | { 615 /* f32.add */, WebAssembly::ADD_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
784 | { 623 /* f32.ceil */, WebAssembly::CEIL_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
785 | { 632 /* f32.const */, WebAssembly::CONST_F32_S, Convert__FPImmf321_0, AMFBS_None, { MCK_FPImmf32 }, }, |
786 | { 642 /* f32.convert_i32_s */, WebAssembly::F32_CONVERT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
787 | { 660 /* f32.convert_i32_u */, WebAssembly::F32_CONVERT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
788 | { 678 /* f32.convert_i64_s */, WebAssembly::F32_CONVERT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
789 | { 696 /* f32.convert_i64_u */, WebAssembly::F32_CONVERT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
790 | { 714 /* f32.copysign */, WebAssembly::COPYSIGN_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
791 | { 727 /* f32.demote_f64 */, WebAssembly::F32_DEMOTE_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
792 | { 742 /* f32.div */, WebAssembly::DIV_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
793 | { 750 /* f32.eq */, WebAssembly::EQ_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
794 | { 757 /* f32.floor */, WebAssembly::FLOOR_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
795 | { 767 /* f32.ge */, WebAssembly::GE_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
796 | { 774 /* f32.gt */, WebAssembly::GT_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
797 | { 781 /* f32.le */, WebAssembly::LE_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
798 | { 788 /* f32.load */, WebAssembly::LOAD_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
799 | { 788 /* f32.load */, WebAssembly::LOAD_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
800 | { 797 /* f32.load_f16 */, WebAssembly::LOAD_F16_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, }, |
801 | { 797 /* f32.load_f16 */, WebAssembly::LOAD_F16_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, }, |
802 | { 810 /* f32.lt */, WebAssembly::LT_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
803 | { 817 /* f32.max */, WebAssembly::MAX_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
804 | { 825 /* f32.min */, WebAssembly::MIN_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
805 | { 833 /* f32.mul */, WebAssembly::MUL_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
806 | { 841 /* f32.ne */, WebAssembly::NE_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
807 | { 848 /* f32.nearest */, WebAssembly::NEAREST_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
808 | { 860 /* f32.neg */, WebAssembly::NEG_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
809 | { 868 /* f32.reinterpret_i32 */, WebAssembly::F32_REINTERPRET_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
810 | { 888 /* f32.select */, WebAssembly::SELECT_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
811 | { 899 /* f32.sqrt */, WebAssembly::SQRT_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
812 | { 908 /* f32.store */, WebAssembly::STORE_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
813 | { 908 /* f32.store */, WebAssembly::STORE_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
814 | { 918 /* f32.store_f16 */, WebAssembly::STORE_F16_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, }, |
815 | { 918 /* f32.store_f16 */, WebAssembly::STORE_F16_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasFP16, { MCK_Imm, MCK_Imm }, }, |
816 | { 932 /* f32.sub */, WebAssembly::SUB_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
817 | { 940 /* f32.trunc */, WebAssembly::TRUNC_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
818 | { 950 /* f32x4.abs */, WebAssembly::ABS_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
819 | { 960 /* f32x4.add */, WebAssembly::ADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
820 | { 970 /* f32x4.ceil */, WebAssembly::CEIL_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
821 | { 981 /* f32x4.convert_i32x4_s */, WebAssembly::sint_to_fp_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
822 | { 1003 /* f32x4.convert_i32x4_u */, WebAssembly::uint_to_fp_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
823 | { 1025 /* f32x4.demote_f64x2_zero */, WebAssembly::demote_zero_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
824 | { 1049 /* f32x4.div */, WebAssembly::DIV_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
825 | { 1059 /* f32x4.eq */, WebAssembly::EQ_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
826 | { 1068 /* f32x4.extract_lane */, WebAssembly::EXTRACT_LANE_F32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
827 | { 1087 /* f32x4.floor */, WebAssembly::FLOOR_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
828 | { 1099 /* f32x4.ge */, WebAssembly::GE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
829 | { 1108 /* f32x4.gt */, WebAssembly::GT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
830 | { 1117 /* f32x4.le */, WebAssembly::LE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
831 | { 1126 /* f32x4.lt */, WebAssembly::LT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
832 | { 1135 /* f32x4.max */, WebAssembly::MAX_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
833 | { 1145 /* f32x4.min */, WebAssembly::MIN_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
834 | { 1155 /* f32x4.mul */, WebAssembly::MUL_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
835 | { 1165 /* f32x4.ne */, WebAssembly::NE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
836 | { 1174 /* f32x4.nearest */, WebAssembly::NEAREST_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
837 | { 1188 /* f32x4.neg */, WebAssembly::NEG_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
838 | { 1198 /* f32x4.pmax */, WebAssembly::PMAX_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
839 | { 1209 /* f32x4.pmin */, WebAssembly::PMIN_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
840 | { 1220 /* f32x4.relaxed_dot_bf16x8_add_f32 */, WebAssembly::RELAXED_DOT_BFLOAT_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
841 | { 1253 /* f32x4.relaxed_madd */, WebAssembly::MADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, }, |
842 | { 1272 /* f32x4.relaxed_max */, WebAssembly::SIMD_RELAXED_FMAX_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
843 | { 1290 /* f32x4.relaxed_min */, WebAssembly::SIMD_RELAXED_FMIN_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
844 | { 1308 /* f32x4.relaxed_nmadd */, WebAssembly::NMADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, }, |
845 | { 1328 /* f32x4.replace_lane */, WebAssembly::REPLACE_LANE_F32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
846 | { 1347 /* f32x4.splat */, WebAssembly::SPLAT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
847 | { 1359 /* f32x4.sqrt */, WebAssembly::SQRT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
848 | { 1370 /* f32x4.sub */, WebAssembly::SUB_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
849 | { 1380 /* f32x4.trunc */, WebAssembly::TRUNC_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
850 | { 1392 /* f64.abs */, WebAssembly::ABS_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
851 | { 1400 /* f64.add */, WebAssembly::ADD_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
852 | { 1408 /* f64.ceil */, WebAssembly::CEIL_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
853 | { 1417 /* f64.const */, WebAssembly::CONST_F64_S, Convert__FPImmf641_0, AMFBS_None, { MCK_FPImmf64 }, }, |
854 | { 1427 /* f64.convert_i32_s */, WebAssembly::F64_CONVERT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
855 | { 1445 /* f64.convert_i32_u */, WebAssembly::F64_CONVERT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
856 | { 1463 /* f64.convert_i64_s */, WebAssembly::F64_CONVERT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
857 | { 1481 /* f64.convert_i64_u */, WebAssembly::F64_CONVERT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
858 | { 1499 /* f64.copysign */, WebAssembly::COPYSIGN_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
859 | { 1512 /* f64.div */, WebAssembly::DIV_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
860 | { 1520 /* f64.eq */, WebAssembly::EQ_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
861 | { 1527 /* f64.floor */, WebAssembly::FLOOR_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
862 | { 1537 /* f64.ge */, WebAssembly::GE_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
863 | { 1544 /* f64.gt */, WebAssembly::GT_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
864 | { 1551 /* f64.le */, WebAssembly::LE_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
865 | { 1558 /* f64.load */, WebAssembly::LOAD_F64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
866 | { 1558 /* f64.load */, WebAssembly::LOAD_F64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
867 | { 1567 /* f64.lt */, WebAssembly::LT_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
868 | { 1574 /* f64.max */, WebAssembly::MAX_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
869 | { 1582 /* f64.min */, WebAssembly::MIN_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
870 | { 1590 /* f64.mul */, WebAssembly::MUL_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
871 | { 1598 /* f64.ne */, WebAssembly::NE_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
872 | { 1605 /* f64.nearest */, WebAssembly::NEAREST_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
873 | { 1617 /* f64.neg */, WebAssembly::NEG_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
874 | { 1625 /* f64.promote_f32 */, WebAssembly::F64_PROMOTE_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
875 | { 1641 /* f64.reinterpret_i64 */, WebAssembly::F64_REINTERPRET_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
876 | { 1661 /* f64.select */, WebAssembly::SELECT_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
877 | { 1672 /* f64.sqrt */, WebAssembly::SQRT_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
878 | { 1681 /* f64.store */, WebAssembly::STORE_F64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
879 | { 1681 /* f64.store */, WebAssembly::STORE_F64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
880 | { 1691 /* f64.sub */, WebAssembly::SUB_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
881 | { 1699 /* f64.trunc */, WebAssembly::TRUNC_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
882 | { 1709 /* f64x2.abs */, WebAssembly::ABS_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
883 | { 1719 /* f64x2.add */, WebAssembly::ADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
884 | { 1729 /* f64x2.ceil */, WebAssembly::CEIL_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
885 | { 1740 /* f64x2.convert_low_i32x4_s */, WebAssembly::convert_low_s_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
886 | { 1766 /* f64x2.convert_low_i32x4_u */, WebAssembly::convert_low_u_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
887 | { 1792 /* f64x2.div */, WebAssembly::DIV_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
888 | { 1802 /* f64x2.eq */, WebAssembly::EQ_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
889 | { 1811 /* f64x2.extract_lane */, WebAssembly::EXTRACT_LANE_F64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
890 | { 1830 /* f64x2.floor */, WebAssembly::FLOOR_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
891 | { 1842 /* f64x2.ge */, WebAssembly::GE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
892 | { 1851 /* f64x2.gt */, WebAssembly::GT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
893 | { 1860 /* f64x2.le */, WebAssembly::LE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
894 | { 1869 /* f64x2.lt */, WebAssembly::LT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
895 | { 1878 /* f64x2.max */, WebAssembly::MAX_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
896 | { 1888 /* f64x2.min */, WebAssembly::MIN_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
897 | { 1898 /* f64x2.mul */, WebAssembly::MUL_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
898 | { 1908 /* f64x2.ne */, WebAssembly::NE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
899 | { 1917 /* f64x2.nearest */, WebAssembly::NEAREST_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
900 | { 1931 /* f64x2.neg */, WebAssembly::NEG_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
901 | { 1941 /* f64x2.pmax */, WebAssembly::PMAX_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
902 | { 1952 /* f64x2.pmin */, WebAssembly::PMIN_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
903 | { 1963 /* f64x2.promote_low_f32x4 */, WebAssembly::promote_low_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
904 | { 1987 /* f64x2.relaxed_madd */, WebAssembly::MADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, }, |
905 | { 2006 /* f64x2.relaxed_max */, WebAssembly::SIMD_RELAXED_FMAX_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
906 | { 2024 /* f64x2.relaxed_min */, WebAssembly::SIMD_RELAXED_FMIN_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
907 | { 2042 /* f64x2.relaxed_nmadd */, WebAssembly::NMADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128_HasRelaxedSIMD, { }, }, |
908 | { 2062 /* f64x2.replace_lane */, WebAssembly::REPLACE_LANE_F64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
909 | { 2081 /* f64x2.splat */, WebAssembly::SPLAT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
910 | { 2093 /* f64x2.sqrt */, WebAssembly::SQRT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
911 | { 2104 /* f64x2.sub */, WebAssembly::SUB_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
912 | { 2114 /* f64x2.trunc */, WebAssembly::TRUNC_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
913 | { 2126 /* funcref.select */, WebAssembly::SELECT_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
914 | { 2141 /* global.get */, WebAssembly::GLOBAL_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
915 | { 2141 /* global.get */, WebAssembly::GLOBAL_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
916 | { 2141 /* global.get */, WebAssembly::GLOBAL_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
917 | { 2141 /* global.get */, WebAssembly::GLOBAL_GET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
918 | { 2141 /* global.get */, WebAssembly::GLOBAL_GET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
919 | { 2141 /* global.get */, WebAssembly::GLOBAL_GET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
920 | { 2141 /* global.get */, WebAssembly::GLOBAL_GET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
921 | { 2141 /* global.get */, WebAssembly::GLOBAL_GET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
922 | { 2152 /* global.set */, WebAssembly::GLOBAL_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
923 | { 2152 /* global.set */, WebAssembly::GLOBAL_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
924 | { 2152 /* global.set */, WebAssembly::GLOBAL_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
925 | { 2152 /* global.set */, WebAssembly::GLOBAL_SET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
926 | { 2152 /* global.set */, WebAssembly::GLOBAL_SET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
927 | { 2152 /* global.set */, WebAssembly::GLOBAL_SET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
928 | { 2152 /* global.set */, WebAssembly::GLOBAL_SET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
929 | { 2152 /* global.set */, WebAssembly::GLOBAL_SET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
930 | { 2163 /* i16x8.abs */, WebAssembly::ABS_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
931 | { 2173 /* i16x8.add */, WebAssembly::ADD_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
932 | { 2183 /* i16x8.add_sat_s */, WebAssembly::ADD_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
933 | { 2199 /* i16x8.add_sat_u */, WebAssembly::ADD_SAT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
934 | { 2215 /* i16x8.all_true */, WebAssembly::ALLTRUE_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
935 | { 2230 /* i16x8.avgr_u */, WebAssembly::AVGR_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
936 | { 2243 /* i16x8.bitmask */, WebAssembly::BITMASK_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
937 | { 2257 /* i16x8.eq */, WebAssembly::EQ_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
938 | { 2266 /* i16x8.extadd_pairwise_i8x16_s */, WebAssembly::int_wasm_extadd_pairwise_signed_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
939 | { 2296 /* i16x8.extadd_pairwise_i8x16_u */, WebAssembly::int_wasm_extadd_pairwise_unsigned_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
940 | { 2326 /* i16x8.extend_high_i8x16_s */, WebAssembly::extend_high_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
941 | { 2352 /* i16x8.extend_high_i8x16_u */, WebAssembly::extend_high_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
942 | { 2378 /* i16x8.extend_low_i8x16_s */, WebAssembly::extend_low_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
943 | { 2403 /* i16x8.extend_low_i8x16_u */, WebAssembly::extend_low_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
944 | { 2428 /* i16x8.extmul_high_i8x16_s */, WebAssembly::EXTMUL_HIGH_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
945 | { 2454 /* i16x8.extmul_high_i8x16_u */, WebAssembly::EXTMUL_HIGH_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
946 | { 2480 /* i16x8.extmul_low_i8x16_s */, WebAssembly::EXTMUL_LOW_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
947 | { 2505 /* i16x8.extmul_low_i8x16_u */, WebAssembly::EXTMUL_LOW_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
948 | { 2530 /* i16x8.extract_lane_s */, WebAssembly::EXTRACT_LANE_I16x8_s_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
949 | { 2551 /* i16x8.extract_lane_u */, WebAssembly::EXTRACT_LANE_I16x8_u_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
950 | { 2572 /* i16x8.ge_s */, WebAssembly::GE_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
951 | { 2583 /* i16x8.ge_u */, WebAssembly::GE_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
952 | { 2594 /* i16x8.gt_s */, WebAssembly::GT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
953 | { 2605 /* i16x8.gt_u */, WebAssembly::GT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
954 | { 2616 /* i16x8.le_s */, WebAssembly::LE_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
955 | { 2627 /* i16x8.le_u */, WebAssembly::LE_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
956 | { 2638 /* i16x8.load8x8_s */, WebAssembly::LOAD_EXTEND_S_I16x8_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
957 | { 2638 /* i16x8.load8x8_s */, WebAssembly::LOAD_EXTEND_S_I16x8_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
958 | { 2654 /* i16x8.load8x8_u */, WebAssembly::LOAD_EXTEND_U_I16x8_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
959 | { 2654 /* i16x8.load8x8_u */, WebAssembly::LOAD_EXTEND_U_I16x8_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
960 | { 2670 /* i16x8.lt_s */, WebAssembly::LT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
961 | { 2681 /* i16x8.lt_u */, WebAssembly::LT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
962 | { 2692 /* i16x8.max_s */, WebAssembly::MAX_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
963 | { 2704 /* i16x8.max_u */, WebAssembly::MAX_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
964 | { 2716 /* i16x8.min_s */, WebAssembly::MIN_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
965 | { 2728 /* i16x8.min_u */, WebAssembly::MIN_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
966 | { 2740 /* i16x8.mul */, WebAssembly::MUL_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
967 | { 2750 /* i16x8.narrow_i32x4_s */, WebAssembly::NARROW_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
968 | { 2771 /* i16x8.narrow_i32x4_u */, WebAssembly::NARROW_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
969 | { 2792 /* i16x8.ne */, WebAssembly::NE_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
970 | { 2801 /* i16x8.neg */, WebAssembly::NEG_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
971 | { 2811 /* i16x8.q15mulr_sat_s */, WebAssembly::Q15MULR_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
972 | { 2831 /* i16x8.relaxed_dot_i8x16_i7x16_s */, WebAssembly::RELAXED_DOT_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
973 | { 2863 /* i16x8.relaxed_laneselect */, WebAssembly::LANESELECT_I16x8_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
974 | { 2888 /* i16x8.relaxed_q15mulr_s */, WebAssembly::RELAXED_Q15MULR_S_I16x8_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
975 | { 2912 /* i16x8.replace_lane */, WebAssembly::REPLACE_LANE_I16x8_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
976 | { 2931 /* i16x8.shl */, WebAssembly::SHL_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
977 | { 2941 /* i16x8.shr_s */, WebAssembly::SHR_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
978 | { 2953 /* i16x8.shr_u */, WebAssembly::SHR_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
979 | { 2965 /* i16x8.splat */, WebAssembly::SPLAT_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
980 | { 2977 /* i16x8.sub */, WebAssembly::SUB_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
981 | { 2987 /* i16x8.sub_sat_s */, WebAssembly::SUB_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
982 | { 3003 /* i16x8.sub_sat_u */, WebAssembly::SUB_SAT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
983 | { 3019 /* i16x8.trunc_sat_f16x8_s */, WebAssembly::fp_to_sint_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
984 | { 3043 /* i16x8.trunc_sat_f16x8_u */, WebAssembly::fp_to_uint_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128_HasFP16, { }, }, |
985 | { 3067 /* i32.add */, WebAssembly::ADD_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
986 | { 3075 /* i32.and */, WebAssembly::AND_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
987 | { 3083 /* i32.atomic.load */, WebAssembly::ATOMIC_LOAD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
988 | { 3083 /* i32.atomic.load */, WebAssembly::ATOMIC_LOAD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
989 | { 3099 /* i32.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
990 | { 3099 /* i32.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
991 | { 3119 /* i32.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
992 | { 3119 /* i32.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
993 | { 3138 /* i32.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
994 | { 3138 /* i32.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
995 | { 3157 /* i32.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
996 | { 3157 /* i32.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
997 | { 3176 /* i32.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
998 | { 3176 /* i32.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
999 | { 3199 /* i32.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1000 | { 3199 /* i32.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1001 | { 3217 /* i32.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1002 | { 3217 /* i32.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1003 | { 3236 /* i32.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1004 | { 3236 /* i32.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1005 | { 3256 /* i32.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1006 | { 3256 /* i32.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1007 | { 3275 /* i32.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1008 | { 3275 /* i32.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1009 | { 3298 /* i32.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1010 | { 3298 /* i32.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1011 | { 3321 /* i32.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1012 | { 3321 /* i32.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1013 | { 3348 /* i32.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1014 | { 3348 /* i32.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1015 | { 3370 /* i32.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1016 | { 3370 /* i32.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1017 | { 3393 /* i32.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1018 | { 3393 /* i32.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1019 | { 3417 /* i32.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1020 | { 3417 /* i32.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1021 | { 3440 /* i32.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1022 | { 3440 /* i32.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1023 | { 3462 /* i32.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1024 | { 3462 /* i32.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1025 | { 3484 /* i32.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1026 | { 3484 /* i32.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1027 | { 3510 /* i32.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1028 | { 3510 /* i32.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1029 | { 3531 /* i32.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1030 | { 3531 /* i32.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1031 | { 3553 /* i32.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1032 | { 3553 /* i32.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1033 | { 3576 /* i32.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1034 | { 3576 /* i32.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1035 | { 3598 /* i32.atomic.store */, WebAssembly::ATOMIC_STORE_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1036 | { 3598 /* i32.atomic.store */, WebAssembly::ATOMIC_STORE_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1037 | { 3615 /* i32.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1038 | { 3615 /* i32.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1039 | { 3634 /* i32.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1040 | { 3634 /* i32.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1041 | { 3652 /* i32.clz */, WebAssembly::CLZ_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1042 | { 3660 /* i32.const */, WebAssembly::CONST_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1043 | { 3670 /* i32.ctz */, WebAssembly::CTZ_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1044 | { 3678 /* i32.div_s */, WebAssembly::DIV_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1045 | { 3688 /* i32.div_u */, WebAssembly::DIV_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1046 | { 3698 /* i32.eq */, WebAssembly::EQ_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1047 | { 3705 /* i32.eqz */, WebAssembly::EQZ_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1048 | { 3713 /* i32.extend16_s */, WebAssembly::I32_EXTEND16_S_I32_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
1049 | { 3728 /* i32.extend8_s */, WebAssembly::I32_EXTEND8_S_I32_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
1050 | { 3742 /* i32.ge_s */, WebAssembly::GE_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1051 | { 3751 /* i32.ge_u */, WebAssembly::GE_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1052 | { 3760 /* i32.gt_s */, WebAssembly::GT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1053 | { 3769 /* i32.gt_u */, WebAssembly::GT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1054 | { 3778 /* i32.le_s */, WebAssembly::LE_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1055 | { 3787 /* i32.le_u */, WebAssembly::LE_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1056 | { 3796 /* i32.load */, WebAssembly::LOAD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1057 | { 3796 /* i32.load */, WebAssembly::LOAD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1058 | { 3805 /* i32.load16_s */, WebAssembly::LOAD16_S_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1059 | { 3805 /* i32.load16_s */, WebAssembly::LOAD16_S_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1060 | { 3818 /* i32.load16_u */, WebAssembly::LOAD16_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1061 | { 3818 /* i32.load16_u */, WebAssembly::LOAD16_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1062 | { 3831 /* i32.load8_s */, WebAssembly::LOAD8_S_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1063 | { 3831 /* i32.load8_s */, WebAssembly::LOAD8_S_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1064 | { 3843 /* i32.load8_u */, WebAssembly::LOAD8_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1065 | { 3843 /* i32.load8_u */, WebAssembly::LOAD8_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1066 | { 3855 /* i32.lt_s */, WebAssembly::LT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1067 | { 3864 /* i32.lt_u */, WebAssembly::LT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1068 | { 3873 /* i32.mul */, WebAssembly::MUL_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1069 | { 3881 /* i32.ne */, WebAssembly::NE_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1070 | { 3888 /* i32.or */, WebAssembly::OR_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1071 | { 3895 /* i32.popcnt */, WebAssembly::POPCNT_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1072 | { 3906 /* i32.reinterpret_f32 */, WebAssembly::I32_REINTERPRET_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1073 | { 3926 /* i32.rem_s */, WebAssembly::REM_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1074 | { 3936 /* i32.rem_u */, WebAssembly::REM_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1075 | { 3946 /* i32.rotl */, WebAssembly::ROTL_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1076 | { 3955 /* i32.rotr */, WebAssembly::ROTR_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1077 | { 3964 /* i32.select */, WebAssembly::SELECT_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1078 | { 3975 /* i32.shl */, WebAssembly::SHL_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1079 | { 3983 /* i32.shr_s */, WebAssembly::SHR_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1080 | { 3993 /* i32.shr_u */, WebAssembly::SHR_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1081 | { 4003 /* i32.store */, WebAssembly::STORE_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1082 | { 4003 /* i32.store */, WebAssembly::STORE_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1083 | { 4013 /* i32.store16 */, WebAssembly::STORE16_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1084 | { 4013 /* i32.store16 */, WebAssembly::STORE16_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1085 | { 4025 /* i32.store8 */, WebAssembly::STORE8_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1086 | { 4025 /* i32.store8 */, WebAssembly::STORE8_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1087 | { 4036 /* i32.sub */, WebAssembly::SUB_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1088 | { 4044 /* i32.trunc_f32_s */, WebAssembly::I32_TRUNC_S_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1089 | { 4060 /* i32.trunc_f32_u */, WebAssembly::I32_TRUNC_U_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1090 | { 4076 /* i32.trunc_f64_s */, WebAssembly::I32_TRUNC_S_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1091 | { 4092 /* i32.trunc_f64_u */, WebAssembly::I32_TRUNC_U_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1092 | { 4108 /* i32.trunc_sat_f32_s */, WebAssembly::I32_TRUNC_S_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1093 | { 4128 /* i32.trunc_sat_f32_u */, WebAssembly::I32_TRUNC_U_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1094 | { 4148 /* i32.trunc_sat_f64_s */, WebAssembly::I32_TRUNC_S_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1095 | { 4168 /* i32.trunc_sat_f64_u */, WebAssembly::I32_TRUNC_U_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1096 | { 4188 /* i32.wrap_i64 */, WebAssembly::I32_WRAP_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1097 | { 4201 /* i32.xor */, WebAssembly::XOR_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1098 | { 4209 /* i32x4.abs */, WebAssembly::ABS_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1099 | { 4219 /* i32x4.add */, WebAssembly::ADD_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1100 | { 4229 /* i32x4.all_true */, WebAssembly::ALLTRUE_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1101 | { 4244 /* i32x4.bitmask */, WebAssembly::BITMASK_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1102 | { 4258 /* i32x4.dot_i16x8_s */, WebAssembly::DOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1103 | { 4276 /* i32x4.eq */, WebAssembly::EQ_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1104 | { 4285 /* i32x4.extadd_pairwise_i16x8_s */, WebAssembly::int_wasm_extadd_pairwise_signed_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1105 | { 4315 /* i32x4.extadd_pairwise_i16x8_u */, WebAssembly::int_wasm_extadd_pairwise_unsigned_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1106 | { 4345 /* i32x4.extend_high_i16x8_s */, WebAssembly::extend_high_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1107 | { 4371 /* i32x4.extend_high_i16x8_u */, WebAssembly::extend_high_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1108 | { 4397 /* i32x4.extend_low_i16x8_s */, WebAssembly::extend_low_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1109 | { 4422 /* i32x4.extend_low_i16x8_u */, WebAssembly::extend_low_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1110 | { 4447 /* i32x4.extmul_high_i16x8_s */, WebAssembly::EXTMUL_HIGH_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1111 | { 4473 /* i32x4.extmul_high_i16x8_u */, WebAssembly::EXTMUL_HIGH_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1112 | { 4499 /* i32x4.extmul_low_i16x8_s */, WebAssembly::EXTMUL_LOW_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1113 | { 4524 /* i32x4.extmul_low_i16x8_u */, WebAssembly::EXTMUL_LOW_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1114 | { 4549 /* i32x4.extract_lane */, WebAssembly::EXTRACT_LANE_I32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1115 | { 4568 /* i32x4.ge_s */, WebAssembly::GE_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1116 | { 4579 /* i32x4.ge_u */, WebAssembly::GE_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1117 | { 4590 /* i32x4.gt_s */, WebAssembly::GT_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1118 | { 4601 /* i32x4.gt_u */, WebAssembly::GT_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1119 | { 4612 /* i32x4.le_s */, WebAssembly::LE_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1120 | { 4623 /* i32x4.le_u */, WebAssembly::LE_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1121 | { 4634 /* i32x4.load16x4_s */, WebAssembly::LOAD_EXTEND_S_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1122 | { 4634 /* i32x4.load16x4_s */, WebAssembly::LOAD_EXTEND_S_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1123 | { 4651 /* i32x4.load16x4_u */, WebAssembly::LOAD_EXTEND_U_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1124 | { 4651 /* i32x4.load16x4_u */, WebAssembly::LOAD_EXTEND_U_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1125 | { 4668 /* i32x4.lt_s */, WebAssembly::LT_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1126 | { 4679 /* i32x4.lt_u */, WebAssembly::LT_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1127 | { 4690 /* i32x4.max_s */, WebAssembly::MAX_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1128 | { 4702 /* i32x4.max_u */, WebAssembly::MAX_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1129 | { 4714 /* i32x4.min_s */, WebAssembly::MIN_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1130 | { 4726 /* i32x4.min_u */, WebAssembly::MIN_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1131 | { 4738 /* i32x4.mul */, WebAssembly::MUL_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1132 | { 4748 /* i32x4.ne */, WebAssembly::NE_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1133 | { 4757 /* i32x4.neg */, WebAssembly::NEG_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1134 | { 4767 /* i32x4.relaxed_dot_i8x16_i7x16_add_s */, WebAssembly::RELAXED_DOT_ADD_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1135 | { 4803 /* i32x4.relaxed_laneselect */, WebAssembly::LANESELECT_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1136 | { 4828 /* i32x4.relaxed_trunc_f32x4_s */, WebAssembly::int_wasm_relaxed_trunc_signed_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1137 | { 4856 /* i32x4.relaxed_trunc_f32x4_u */, WebAssembly::int_wasm_relaxed_trunc_unsigned_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1138 | { 4884 /* i32x4.relaxed_trunc_f64x2_s_zero */, WebAssembly::int_wasm_relaxed_trunc_signed_zero_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1139 | { 4917 /* i32x4.relaxed_trunc_f64x2_u_zero */, WebAssembly::int_wasm_relaxed_trunc_unsigned_zero_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1140 | { 4950 /* i32x4.replace_lane */, WebAssembly::REPLACE_LANE_I32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1141 | { 4969 /* i32x4.shl */, WebAssembly::SHL_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1142 | { 4979 /* i32x4.shr_s */, WebAssembly::SHR_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1143 | { 4991 /* i32x4.shr_u */, WebAssembly::SHR_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1144 | { 5003 /* i32x4.splat */, WebAssembly::SPLAT_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1145 | { 5015 /* i32x4.sub */, WebAssembly::SUB_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1146 | { 5025 /* i32x4.trunc_sat_f32x4_s */, WebAssembly::fp_to_sint_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1147 | { 5049 /* i32x4.trunc_sat_f32x4_u */, WebAssembly::fp_to_uint_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1148 | { 5073 /* i32x4.trunc_sat_f64x2_s_zero */, WebAssembly::trunc_sat_zero_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1149 | { 5102 /* i32x4.trunc_sat_f64x2_u_zero */, WebAssembly::trunc_sat_zero_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1150 | { 5131 /* i64.add */, WebAssembly::ADD_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1151 | { 5139 /* i64.add128 */, WebAssembly::I64_ADD128_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, }, |
1152 | { 5150 /* i64.and */, WebAssembly::AND_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1153 | { 5158 /* i64.atomic.load */, WebAssembly::ATOMIC_LOAD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1154 | { 5158 /* i64.atomic.load */, WebAssembly::ATOMIC_LOAD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1155 | { 5174 /* i64.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1156 | { 5174 /* i64.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1157 | { 5194 /* i64.atomic.load32_u */, WebAssembly::ATOMIC_LOAD32_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1158 | { 5194 /* i64.atomic.load32_u */, WebAssembly::ATOMIC_LOAD32_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1159 | { 5214 /* i64.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1160 | { 5214 /* i64.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1161 | { 5233 /* i64.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1162 | { 5233 /* i64.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1163 | { 5252 /* i64.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1164 | { 5252 /* i64.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1165 | { 5271 /* i64.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1166 | { 5271 /* i64.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1167 | { 5294 /* i64.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1168 | { 5294 /* i64.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1169 | { 5312 /* i64.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1170 | { 5312 /* i64.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1171 | { 5331 /* i64.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1172 | { 5331 /* i64.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1173 | { 5351 /* i64.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1174 | { 5351 /* i64.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1175 | { 5370 /* i64.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1176 | { 5370 /* i64.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1177 | { 5393 /* i64.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1178 | { 5393 /* i64.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1179 | { 5416 /* i64.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1180 | { 5416 /* i64.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1181 | { 5443 /* i64.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1182 | { 5443 /* i64.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1183 | { 5465 /* i64.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1184 | { 5465 /* i64.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1185 | { 5488 /* i64.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1186 | { 5488 /* i64.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1187 | { 5512 /* i64.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1188 | { 5512 /* i64.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1189 | { 5535 /* i64.atomic.rmw32.add_u */, WebAssembly::ATOMIC_RMW32_U_ADD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1190 | { 5535 /* i64.atomic.rmw32.add_u */, WebAssembly::ATOMIC_RMW32_U_ADD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1191 | { 5558 /* i64.atomic.rmw32.and_u */, WebAssembly::ATOMIC_RMW32_U_AND_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1192 | { 5558 /* i64.atomic.rmw32.and_u */, WebAssembly::ATOMIC_RMW32_U_AND_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1193 | { 5581 /* i64.atomic.rmw32.cmpxchg_u */, WebAssembly::ATOMIC_RMW32_U_CMPXCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1194 | { 5581 /* i64.atomic.rmw32.cmpxchg_u */, WebAssembly::ATOMIC_RMW32_U_CMPXCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1195 | { 5608 /* i64.atomic.rmw32.or_u */, WebAssembly::ATOMIC_RMW32_U_OR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1196 | { 5608 /* i64.atomic.rmw32.or_u */, WebAssembly::ATOMIC_RMW32_U_OR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1197 | { 5630 /* i64.atomic.rmw32.sub_u */, WebAssembly::ATOMIC_RMW32_U_SUB_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1198 | { 5630 /* i64.atomic.rmw32.sub_u */, WebAssembly::ATOMIC_RMW32_U_SUB_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1199 | { 5653 /* i64.atomic.rmw32.xchg_u */, WebAssembly::ATOMIC_RMW32_U_XCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1200 | { 5653 /* i64.atomic.rmw32.xchg_u */, WebAssembly::ATOMIC_RMW32_U_XCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1201 | { 5677 /* i64.atomic.rmw32.xor_u */, WebAssembly::ATOMIC_RMW32_U_XOR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1202 | { 5677 /* i64.atomic.rmw32.xor_u */, WebAssembly::ATOMIC_RMW32_U_XOR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1203 | { 5700 /* i64.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1204 | { 5700 /* i64.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1205 | { 5722 /* i64.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1206 | { 5722 /* i64.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1207 | { 5744 /* i64.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1208 | { 5744 /* i64.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1209 | { 5770 /* i64.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1210 | { 5770 /* i64.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1211 | { 5791 /* i64.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1212 | { 5791 /* i64.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1213 | { 5813 /* i64.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1214 | { 5813 /* i64.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1215 | { 5836 /* i64.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1216 | { 5836 /* i64.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1217 | { 5858 /* i64.atomic.store */, WebAssembly::ATOMIC_STORE_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1218 | { 5858 /* i64.atomic.store */, WebAssembly::ATOMIC_STORE_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1219 | { 5875 /* i64.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1220 | { 5875 /* i64.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1221 | { 5894 /* i64.atomic.store32 */, WebAssembly::ATOMIC_STORE32_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1222 | { 5894 /* i64.atomic.store32 */, WebAssembly::ATOMIC_STORE32_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1223 | { 5913 /* i64.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1224 | { 5913 /* i64.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1225 | { 5931 /* i64.clz */, WebAssembly::CLZ_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1226 | { 5939 /* i64.const */, WebAssembly::CONST_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1227 | { 5949 /* i64.ctz */, WebAssembly::CTZ_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1228 | { 5957 /* i64.div_s */, WebAssembly::DIV_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1229 | { 5967 /* i64.div_u */, WebAssembly::DIV_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1230 | { 5977 /* i64.eq */, WebAssembly::EQ_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1231 | { 5984 /* i64.eqz */, WebAssembly::EQZ_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1232 | { 5992 /* i64.extend16_s */, WebAssembly::I64_EXTEND16_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
1233 | { 6007 /* i64.extend32_s */, WebAssembly::I64_EXTEND32_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
1234 | { 6022 /* i64.extend8_s */, WebAssembly::I64_EXTEND8_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
1235 | { 6036 /* i64.extend_i32_s */, WebAssembly::I64_EXTEND_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1236 | { 6053 /* i64.extend_i32_u */, WebAssembly::I64_EXTEND_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1237 | { 6070 /* i64.ge_s */, WebAssembly::GE_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1238 | { 6079 /* i64.ge_u */, WebAssembly::GE_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1239 | { 6088 /* i64.gt_s */, WebAssembly::GT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1240 | { 6097 /* i64.gt_u */, WebAssembly::GT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1241 | { 6106 /* i64.le_s */, WebAssembly::LE_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1242 | { 6115 /* i64.le_u */, WebAssembly::LE_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1243 | { 6124 /* i64.load */, WebAssembly::LOAD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1244 | { 6124 /* i64.load */, WebAssembly::LOAD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1245 | { 6133 /* i64.load16_s */, WebAssembly::LOAD16_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1246 | { 6133 /* i64.load16_s */, WebAssembly::LOAD16_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1247 | { 6146 /* i64.load16_u */, WebAssembly::LOAD16_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1248 | { 6146 /* i64.load16_u */, WebAssembly::LOAD16_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1249 | { 6159 /* i64.load32_s */, WebAssembly::LOAD32_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1250 | { 6159 /* i64.load32_s */, WebAssembly::LOAD32_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1251 | { 6172 /* i64.load32_u */, WebAssembly::LOAD32_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1252 | { 6172 /* i64.load32_u */, WebAssembly::LOAD32_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1253 | { 6185 /* i64.load8_s */, WebAssembly::LOAD8_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1254 | { 6185 /* i64.load8_s */, WebAssembly::LOAD8_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1255 | { 6197 /* i64.load8_u */, WebAssembly::LOAD8_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1256 | { 6197 /* i64.load8_u */, WebAssembly::LOAD8_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1257 | { 6209 /* i64.lt_s */, WebAssembly::LT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1258 | { 6218 /* i64.lt_u */, WebAssembly::LT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1259 | { 6227 /* i64.mul */, WebAssembly::MUL_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1260 | { 6235 /* i64.mul_wide_s */, WebAssembly::I64_MUL_WIDE_S_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, }, |
1261 | { 6250 /* i64.mul_wide_u */, WebAssembly::I64_MUL_WIDE_U_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, }, |
1262 | { 6265 /* i64.ne */, WebAssembly::NE_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1263 | { 6272 /* i64.or */, WebAssembly::OR_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1264 | { 6279 /* i64.popcnt */, WebAssembly::POPCNT_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1265 | { 6290 /* i64.reinterpret_f64 */, WebAssembly::I64_REINTERPRET_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1266 | { 6310 /* i64.rem_s */, WebAssembly::REM_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1267 | { 6320 /* i64.rem_u */, WebAssembly::REM_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1268 | { 6330 /* i64.rotl */, WebAssembly::ROTL_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1269 | { 6339 /* i64.rotr */, WebAssembly::ROTR_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1270 | { 6348 /* i64.select */, WebAssembly::SELECT_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1271 | { 6359 /* i64.shl */, WebAssembly::SHL_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1272 | { 6367 /* i64.shr_s */, WebAssembly::SHR_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1273 | { 6377 /* i64.shr_u */, WebAssembly::SHR_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1274 | { 6387 /* i64.store */, WebAssembly::STORE_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1275 | { 6387 /* i64.store */, WebAssembly::STORE_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1276 | { 6397 /* i64.store16 */, WebAssembly::STORE16_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1277 | { 6397 /* i64.store16 */, WebAssembly::STORE16_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1278 | { 6409 /* i64.store32 */, WebAssembly::STORE32_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1279 | { 6409 /* i64.store32 */, WebAssembly::STORE32_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1280 | { 6421 /* i64.store8 */, WebAssembly::STORE8_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1281 | { 6421 /* i64.store8 */, WebAssembly::STORE8_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1282 | { 6432 /* i64.sub */, WebAssembly::SUB_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1283 | { 6440 /* i64.sub128 */, WebAssembly::I64_SUB128_S, Convert_NoOperands, AMFBS_HasWideArithmetic, { }, }, |
1284 | { 6451 /* i64.trunc_f32_s */, WebAssembly::I64_TRUNC_S_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1285 | { 6467 /* i64.trunc_f32_u */, WebAssembly::I64_TRUNC_U_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1286 | { 6483 /* i64.trunc_f64_s */, WebAssembly::I64_TRUNC_S_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1287 | { 6499 /* i64.trunc_f64_u */, WebAssembly::I64_TRUNC_U_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1288 | { 6515 /* i64.trunc_sat_f32_s */, WebAssembly::I64_TRUNC_S_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1289 | { 6535 /* i64.trunc_sat_f32_u */, WebAssembly::I64_TRUNC_U_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1290 | { 6555 /* i64.trunc_sat_f64_s */, WebAssembly::I64_TRUNC_S_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1291 | { 6575 /* i64.trunc_sat_f64_u */, WebAssembly::I64_TRUNC_U_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1292 | { 6595 /* i64.xor */, WebAssembly::XOR_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1293 | { 6603 /* i64x2.abs */, WebAssembly::ABS_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1294 | { 6613 /* i64x2.add */, WebAssembly::ADD_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1295 | { 6623 /* i64x2.all_true */, WebAssembly::ALLTRUE_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1296 | { 6638 /* i64x2.bitmask */, WebAssembly::BITMASK_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1297 | { 6652 /* i64x2.eq */, WebAssembly::EQ_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1298 | { 6661 /* i64x2.extend_high_i32x4_s */, WebAssembly::extend_high_s_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1299 | { 6687 /* i64x2.extend_high_i32x4_u */, WebAssembly::extend_high_u_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1300 | { 6713 /* i64x2.extend_low_i32x4_s */, WebAssembly::extend_low_s_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1301 | { 6738 /* i64x2.extend_low_i32x4_u */, WebAssembly::extend_low_u_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1302 | { 6763 /* i64x2.extmul_high_i32x4_s */, WebAssembly::EXTMUL_HIGH_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1303 | { 6789 /* i64x2.extmul_high_i32x4_u */, WebAssembly::EXTMUL_HIGH_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1304 | { 6815 /* i64x2.extmul_low_i32x4_s */, WebAssembly::EXTMUL_LOW_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1305 | { 6840 /* i64x2.extmul_low_i32x4_u */, WebAssembly::EXTMUL_LOW_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1306 | { 6865 /* i64x2.extract_lane */, WebAssembly::EXTRACT_LANE_I64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1307 | { 6884 /* i64x2.ge_s */, WebAssembly::GE_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1308 | { 6895 /* i64x2.gt_s */, WebAssembly::GT_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1309 | { 6906 /* i64x2.le_s */, WebAssembly::LE_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1310 | { 6917 /* i64x2.load32x2_s */, WebAssembly::LOAD_EXTEND_S_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1311 | { 6917 /* i64x2.load32x2_s */, WebAssembly::LOAD_EXTEND_S_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1312 | { 6934 /* i64x2.load32x2_u */, WebAssembly::LOAD_EXTEND_U_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1313 | { 6934 /* i64x2.load32x2_u */, WebAssembly::LOAD_EXTEND_U_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1314 | { 6951 /* i64x2.lt_s */, WebAssembly::LT_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1315 | { 6962 /* i64x2.mul */, WebAssembly::MUL_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1316 | { 6972 /* i64x2.ne */, WebAssembly::NE_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1317 | { 6981 /* i64x2.neg */, WebAssembly::NEG_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1318 | { 6991 /* i64x2.relaxed_laneselect */, WebAssembly::LANESELECT_I64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1319 | { 7016 /* i64x2.replace_lane */, WebAssembly::REPLACE_LANE_I64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1320 | { 7035 /* i64x2.shl */, WebAssembly::SHL_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1321 | { 7045 /* i64x2.shr_s */, WebAssembly::SHR_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1322 | { 7057 /* i64x2.shr_u */, WebAssembly::SHR_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1323 | { 7069 /* i64x2.splat */, WebAssembly::SPLAT_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1324 | { 7081 /* i64x2.sub */, WebAssembly::SUB_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1325 | { 7091 /* i8x16.abs */, WebAssembly::ABS_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1326 | { 7101 /* i8x16.add */, WebAssembly::ADD_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1327 | { 7111 /* i8x16.add_sat_s */, WebAssembly::ADD_SAT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1328 | { 7127 /* i8x16.add_sat_u */, WebAssembly::ADD_SAT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1329 | { 7143 /* i8x16.all_true */, WebAssembly::ALLTRUE_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1330 | { 7158 /* i8x16.avgr_u */, WebAssembly::AVGR_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1331 | { 7171 /* i8x16.bitmask */, WebAssembly::BITMASK_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1332 | { 7185 /* i8x16.eq */, WebAssembly::EQ_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1333 | { 7194 /* i8x16.extract_lane_s */, WebAssembly::EXTRACT_LANE_I8x16_s_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1334 | { 7215 /* i8x16.extract_lane_u */, WebAssembly::EXTRACT_LANE_I8x16_u_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1335 | { 7236 /* i8x16.ge_s */, WebAssembly::GE_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1336 | { 7247 /* i8x16.ge_u */, WebAssembly::GE_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1337 | { 7258 /* i8x16.gt_s */, WebAssembly::GT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1338 | { 7269 /* i8x16.gt_u */, WebAssembly::GT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1339 | { 7280 /* i8x16.le_s */, WebAssembly::LE_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1340 | { 7291 /* i8x16.le_u */, WebAssembly::LE_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1341 | { 7302 /* i8x16.lt_s */, WebAssembly::LT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1342 | { 7313 /* i8x16.lt_u */, WebAssembly::LT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1343 | { 7324 /* i8x16.max_s */, WebAssembly::MAX_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1344 | { 7336 /* i8x16.max_u */, WebAssembly::MAX_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1345 | { 7348 /* i8x16.min_s */, WebAssembly::MIN_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1346 | { 7360 /* i8x16.min_u */, WebAssembly::MIN_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1347 | { 7372 /* i8x16.narrow_i16x8_s */, WebAssembly::NARROW_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1348 | { 7393 /* i8x16.narrow_i16x8_u */, WebAssembly::NARROW_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1349 | { 7414 /* i8x16.ne */, WebAssembly::NE_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1350 | { 7423 /* i8x16.neg */, WebAssembly::NEG_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1351 | { 7433 /* i8x16.popcnt */, WebAssembly::POPCNT_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1352 | { 7446 /* i8x16.relaxed_laneselect */, WebAssembly::LANESELECT_I8x16_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1353 | { 7471 /* i8x16.relaxed_swizzle */, WebAssembly::RELAXED_SWIZZLE_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1354 | { 7493 /* i8x16.replace_lane */, WebAssembly::REPLACE_LANE_I8x16_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1355 | { 7512 /* i8x16.shl */, WebAssembly::SHL_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1356 | { 7522 /* i8x16.shr_s */, WebAssembly::SHR_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1357 | { 7534 /* i8x16.shr_u */, WebAssembly::SHR_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1358 | { 7546 /* 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 }, }, |
1359 | { 7560 /* i8x16.splat */, WebAssembly::SPLAT_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1360 | { 7572 /* i8x16.sub */, WebAssembly::SUB_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1361 | { 7582 /* i8x16.sub_sat_s */, WebAssembly::SUB_SAT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1362 | { 7598 /* i8x16.sub_sat_u */, WebAssembly::SUB_SAT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1363 | { 7614 /* i8x16.swizzle */, WebAssembly::SWIZZLE_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1364 | { 7628 /* if */, WebAssembly::IF_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1365 | { 7631 /* local.get */, WebAssembly::LOCAL_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
1366 | { 7631 /* local.get */, WebAssembly::LOCAL_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1367 | { 7631 /* local.get */, WebAssembly::LOCAL_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1368 | { 7631 /* local.get */, WebAssembly::LOCAL_GET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1369 | { 7631 /* local.get */, WebAssembly::LOCAL_GET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1370 | { 7631 /* local.get */, WebAssembly::LOCAL_GET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1371 | { 7631 /* local.get */, WebAssembly::LOCAL_GET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1372 | { 7631 /* local.get */, WebAssembly::LOCAL_GET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1373 | { 7641 /* local.set */, WebAssembly::LOCAL_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
1374 | { 7641 /* local.set */, WebAssembly::LOCAL_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1375 | { 7641 /* local.set */, WebAssembly::LOCAL_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1376 | { 7641 /* local.set */, WebAssembly::LOCAL_SET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1377 | { 7641 /* local.set */, WebAssembly::LOCAL_SET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1378 | { 7641 /* local.set */, WebAssembly::LOCAL_SET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1379 | { 7641 /* local.set */, WebAssembly::LOCAL_SET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1380 | { 7641 /* local.set */, WebAssembly::LOCAL_SET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1381 | { 7651 /* local.tee */, WebAssembly::LOCAL_TEE_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
1382 | { 7651 /* local.tee */, WebAssembly::LOCAL_TEE_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1383 | { 7651 /* local.tee */, WebAssembly::LOCAL_TEE_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1384 | { 7651 /* local.tee */, WebAssembly::LOCAL_TEE_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1385 | { 7651 /* local.tee */, WebAssembly::LOCAL_TEE_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1386 | { 7651 /* local.tee */, WebAssembly::LOCAL_TEE_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1387 | { 7651 /* local.tee */, WebAssembly::LOCAL_TEE_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1388 | { 7651 /* local.tee */, WebAssembly::LOCAL_TEE_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1389 | { 7661 /* loop */, WebAssembly::LOOP_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1390 | { 7666 /* memory.atomic.notify */, WebAssembly::MEMORY_ATOMIC_NOTIFY_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1391 | { 7666 /* memory.atomic.notify */, WebAssembly::MEMORY_ATOMIC_NOTIFY_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1392 | { 7687 /* memory.atomic.wait32 */, WebAssembly::MEMORY_ATOMIC_WAIT32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1393 | { 7687 /* memory.atomic.wait32 */, WebAssembly::MEMORY_ATOMIC_WAIT32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1394 | { 7708 /* memory.atomic.wait64 */, WebAssembly::MEMORY_ATOMIC_WAIT64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1395 | { 7708 /* memory.atomic.wait64 */, WebAssembly::MEMORY_ATOMIC_WAIT64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1396 | { 7729 /* memory.copy */, WebAssembly::MEMORY_COPY_A32_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, }, |
1397 | { 7729 /* memory.copy */, WebAssembly::MEMORY_COPY_A64_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, }, |
1398 | { 7741 /* memory.fill */, WebAssembly::MEMORY_FILL_A32_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, }, |
1399 | { 7741 /* memory.fill */, WebAssembly::MEMORY_FILL_A64_S, Convert__Imm1_0, AMFBS_HasBulkMemoryOpt, { MCK_Imm }, }, |
1400 | { 7753 /* memory.grow */, WebAssembly::anonymous_8818MEMORY_GROW_A32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1401 | { 7753 /* memory.grow */, WebAssembly::anonymous_8819MEMORY_GROW_A64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1402 | { 7765 /* memory.init */, WebAssembly::MEMORY_INIT_A32_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, }, |
1403 | { 7765 /* memory.init */, WebAssembly::MEMORY_INIT_A64_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemoryOpt, { MCK_Imm, MCK_Imm }, }, |
1404 | { 7777 /* memory.size */, WebAssembly::anonymous_8818MEMORY_SIZE_A32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1405 | { 7777 /* memory.size */, WebAssembly::anonymous_8819MEMORY_SIZE_A64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1406 | { 7789 /* nop */, WebAssembly::NOP_S, Convert_NoOperands, AMFBS_None, { }, }, |
1407 | { 7793 /* ref.is_null */, WebAssembly::REF_IS_NULL_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1408 | { 7793 /* ref.is_null */, WebAssembly::REF_IS_NULL_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1409 | { 7793 /* ref.is_null */, WebAssembly::REF_IS_NULL_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1410 | { 7805 /* ref.null_exn */, WebAssembly::REF_NULL_EXNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1411 | { 7818 /* ref.null_extern */, WebAssembly::REF_NULL_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1412 | { 7834 /* ref.null_func */, WebAssembly::REF_NULL_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1413 | { 7848 /* rethrow */, WebAssembly::RETHROW_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
1414 | { 7856 /* return */, WebAssembly::RETURN_S, Convert_NoOperands, AMFBS_None, { }, }, |
1415 | { 7863 /* return_call */, WebAssembly::RET_CALL_S, Convert__Imm1_0, AMFBS_HasTailCall, { MCK_Imm }, }, |
1416 | { 7875 /* return_call_indirect */, WebAssembly::RET_CALL_INDIRECT_S, Convert__Imm1_0__Imm1_1, AMFBS_HasTailCall, { MCK_Imm, MCK_Imm }, }, |
1417 | { 7896 /* return_call_results */, WebAssembly::RET_CALL_RESULTS_S, Convert_NoOperands, AMFBS_None, { }, }, |
1418 | { 7916 /* table.copy */, WebAssembly::TABLE_COPY_S, Convert__Imm1_0__Imm1_1, AMFBS_HasReferenceTypes, { MCK_Imm, MCK_Imm }, }, |
1419 | { 7927 /* table.fill */, WebAssembly::TABLE_FILL_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
1420 | { 7927 /* table.fill */, WebAssembly::TABLE_FILL_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1421 | { 7927 /* table.fill */, WebAssembly::TABLE_FILL_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1422 | { 7938 /* table.get */, WebAssembly::TABLE_GET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
1423 | { 7938 /* table.get */, WebAssembly::TABLE_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1424 | { 7938 /* table.get */, WebAssembly::TABLE_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1425 | { 7948 /* table.grow */, WebAssembly::TABLE_GROW_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
1426 | { 7948 /* table.grow */, WebAssembly::TABLE_GROW_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1427 | { 7948 /* table.grow */, WebAssembly::TABLE_GROW_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1428 | { 7959 /* table.set */, WebAssembly::TABLE_SET_EXNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes_HasExceptionHandling, { MCK_Imm }, }, |
1429 | { 7959 /* table.set */, WebAssembly::TABLE_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1430 | { 7959 /* table.set */, WebAssembly::TABLE_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1431 | { 7969 /* table.size */, WebAssembly::TABLE_SIZE_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1432 | { 7980 /* throw */, WebAssembly::THROW_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
1433 | { 7986 /* throw_ref */, WebAssembly::THROW_REF_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, }, |
1434 | { 7996 /* try */, WebAssembly::TRY_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
1435 | { 8000 /* try_table */, WebAssembly::TRY_TABLE_S, Convert__Imm1_0__CatchList1_1, AMFBS_HasExceptionHandling, { MCK_Imm, MCK_CatchList }, }, |
1436 | { 8010 /* unreachable */, WebAssembly::DEBUG_UNREACHABLE_S, Convert_NoOperands, AMFBS_None, { }, }, |
1437 | { 8010 /* unreachable */, WebAssembly::UNREACHABLE_S, Convert_NoOperands, AMFBS_None, { }, }, |
1438 | { 8022 /* v128.and */, WebAssembly::AND_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1439 | { 8031 /* v128.andnot */, WebAssembly::ANDNOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1440 | { 8043 /* v128.any_true */, WebAssembly::ANYTRUE_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1441 | { 8057 /* v128.bitselect */, WebAssembly::BITSELECT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1442 | { 8072 /* v128.const */, WebAssembly::CONST_V128_I64x2_S, Convert__Imm1_0__Imm1_1, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1443 | { 8072 /* v128.const */, WebAssembly::CONST_V128_F64x2_S, Convert__FPImmf641_0__FPImmf641_1, AMFBS_HasSIMD128, { MCK_FPImmf64, MCK_FPImmf64 }, }, |
1444 | { 8072 /* 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 }, }, |
1445 | { 8072 /* 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 }, }, |
1446 | { 8072 /* 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 }, }, |
1447 | { 8072 /* 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 }, }, |
1448 | { 8083 /* v128.load */, WebAssembly::LOAD_V128_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1449 | { 8083 /* v128.load */, WebAssembly::LOAD_V128_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1450 | { 8093 /* v128.load16_lane */, WebAssembly::LOAD_LANE_16_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1451 | { 8093 /* v128.load16_lane */, WebAssembly::LOAD_LANE_16_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1452 | { 8110 /* v128.load16_splat */, WebAssembly::LOAD16_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1453 | { 8110 /* v128.load16_splat */, WebAssembly::LOAD16_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1454 | { 8128 /* v128.load32_lane */, WebAssembly::LOAD_LANE_32_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1455 | { 8128 /* v128.load32_lane */, WebAssembly::LOAD_LANE_32_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1456 | { 8145 /* v128.load32_splat */, WebAssembly::LOAD32_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1457 | { 8145 /* v128.load32_splat */, WebAssembly::LOAD32_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1458 | { 8163 /* v128.load32_zero */, WebAssembly::LOAD_ZERO_32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1459 | { 8163 /* v128.load32_zero */, WebAssembly::LOAD_ZERO_32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1460 | { 8180 /* v128.load64_lane */, WebAssembly::LOAD_LANE_64_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1461 | { 8180 /* v128.load64_lane */, WebAssembly::LOAD_LANE_64_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1462 | { 8197 /* v128.load64_splat */, WebAssembly::LOAD64_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1463 | { 8197 /* v128.load64_splat */, WebAssembly::LOAD64_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1464 | { 8215 /* v128.load64_zero */, WebAssembly::LOAD_ZERO_64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1465 | { 8215 /* v128.load64_zero */, WebAssembly::LOAD_ZERO_64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1466 | { 8232 /* v128.load8_lane */, WebAssembly::LOAD_LANE_8_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1467 | { 8232 /* v128.load8_lane */, WebAssembly::LOAD_LANE_8_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1468 | { 8248 /* v128.load8_splat */, WebAssembly::LOAD8_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1469 | { 8248 /* v128.load8_splat */, WebAssembly::LOAD8_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1470 | { 8265 /* v128.not */, WebAssembly::NOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1471 | { 8274 /* v128.or */, WebAssembly::OR_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1472 | { 8282 /* v128.select */, WebAssembly::SELECT_V128_S, Convert_NoOperands, AMFBS_None, { }, }, |
1473 | { 8294 /* v128.store */, WebAssembly::STORE_V128_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1474 | { 8294 /* v128.store */, WebAssembly::STORE_V128_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1475 | { 8305 /* v128.store16_lane */, WebAssembly::STORE_LANE_I16x8_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1476 | { 8305 /* v128.store16_lane */, WebAssembly::STORE_LANE_I16x8_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1477 | { 8323 /* v128.store32_lane */, WebAssembly::STORE_LANE_I32x4_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1478 | { 8323 /* v128.store32_lane */, WebAssembly::STORE_LANE_I32x4_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1479 | { 8341 /* v128.store64_lane */, WebAssembly::STORE_LANE_I64x2_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1480 | { 8341 /* v128.store64_lane */, WebAssembly::STORE_LANE_I64x2_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1481 | { 8359 /* v128.store8_lane */, WebAssembly::STORE_LANE_I8x16_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1482 | { 8359 /* v128.store8_lane */, WebAssembly::STORE_LANE_I8x16_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1483 | { 8376 /* v128.xor */, WebAssembly::XOR_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1484 | }; |
1485 | |
1486 | #include "llvm/Support/Debug.h" |
1487 | #include "llvm/Support/Format.h" |
1488 | |
1489 | unsigned WebAssemblyAsmParser:: |
1490 | MatchInstructionImpl(const OperandVector &Operands, |
1491 | MCInst &Inst, |
1492 | uint64_t &ErrorInfo, |
1493 | FeatureBitset &MissingFeatures, |
1494 | bool matchingInlineAsm, unsigned VariantID) { |
1495 | // Eliminate obvious mismatches. |
1496 | if (Operands.size() > 17) { |
1497 | ErrorInfo = 17; |
1498 | return Match_InvalidOperand; |
1499 | } |
1500 | |
1501 | // Get the current feature set. |
1502 | const FeatureBitset &AvailableFeatures = getAvailableFeatures(); |
1503 | |
1504 | // Get the instruction mnemonic, which is the first token. |
1505 | StringRef Mnemonic = ((WebAssemblyOperand &)*Operands[0]).getToken(); |
1506 | |
1507 | // Some state to try to produce better error messages. |
1508 | bool HadMatchOtherThanFeatures = false; |
1509 | bool HadMatchOtherThanPredicate = false; |
1510 | unsigned RetCode = Match_InvalidOperand; |
1511 | MissingFeatures.set(); |
1512 | // Set ErrorInfo to the operand that mismatches if it is |
1513 | // wrong for all instances of the instruction. |
1514 | ErrorInfo = ~0ULL; |
1515 | // Find the appropriate table for this asm variant. |
1516 | const MatchEntry *Start, *End; |
1517 | switch (VariantID) { |
1518 | default: llvm_unreachable("invalid variant!" ); |
1519 | case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break; |
1520 | } |
1521 | // Search the table. |
1522 | auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode()); |
1523 | |
1524 | DEBUG_WITH_TYPE("asm-matcher" , dbgs() << "AsmMatcher: found " << |
1525 | std::distance(MnemonicRange.first, MnemonicRange.second) << |
1526 | " encodings with mnemonic '" << Mnemonic << "'\n" ); |
1527 | |
1528 | // Return a more specific error code if no mnemonics match. |
1529 | if (MnemonicRange.first == MnemonicRange.second) |
1530 | return Match_MnemonicFail; |
1531 | |
1532 | for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second; |
1533 | it != ie; ++it) { |
1534 | const FeatureBitset &RequiredFeatures = FeatureBitsets[it->RequiredFeaturesIdx]; |
1535 | bool HasRequiredFeatures = |
1536 | (AvailableFeatures & RequiredFeatures) == RequiredFeatures; |
1537 | DEBUG_WITH_TYPE("asm-matcher" , dbgs() << "Trying to match opcode " |
1538 | << MII.getName(it->Opcode) << "\n" ); |
1539 | // equal_range guarantees that instruction mnemonic matches. |
1540 | assert(Mnemonic == it->getMnemonic()); |
1541 | bool OperandsValid = true; |
1542 | for (unsigned FormalIdx = 0, ActualIdx = 1; FormalIdx != 16; ++FormalIdx) { |
1543 | auto Formal = static_cast<MatchClassKind>(it->Classes[FormalIdx]); |
1544 | DEBUG_WITH_TYPE("asm-matcher" , |
1545 | dbgs() << " Matching formal operand class " << getMatchClassName(Formal) |
1546 | << " against actual operand at index " << ActualIdx); |
1547 | if (ActualIdx < Operands.size()) |
1548 | DEBUG_WITH_TYPE("asm-matcher" , dbgs() << " (" ; |
1549 | Operands[ActualIdx]->print(dbgs(), *getContext().getAsmInfo()); dbgs() << "): " ); |
1550 | else |
1551 | DEBUG_WITH_TYPE("asm-matcher" , dbgs() << ": " ); |
1552 | if (ActualIdx >= Operands.size()) { |
1553 | DEBUG_WITH_TYPE("asm-matcher" , dbgs() << "actual operand index out of range\n" ); |
1554 | if (Formal == InvalidMatchClass) { |
1555 | break; |
1556 | } |
1557 | if (isSubclass(Formal, OptionalMatchClass)) { |
1558 | continue; |
1559 | } |
1560 | OperandsValid = false; |
1561 | ErrorInfo = ActualIdx; |
1562 | break; |
1563 | } |
1564 | MCParsedAsmOperand &Actual = *Operands[ActualIdx]; |
1565 | unsigned Diag = validateOperandClass(Actual, Formal); |
1566 | if (Diag == Match_Success) { |
1567 | DEBUG_WITH_TYPE("asm-matcher" , |
1568 | dbgs() << "match success using generic matcher\n" ); |
1569 | ++ActualIdx; |
1570 | continue; |
1571 | } |
1572 | // If the generic handler indicates an invalid operand |
1573 | // failure, check for a special case. |
1574 | if (Diag != Match_Success) { |
1575 | unsigned TargetDiag = validateTargetOperandClass(Actual, Formal); |
1576 | if (TargetDiag == Match_Success) { |
1577 | DEBUG_WITH_TYPE("asm-matcher" , |
1578 | dbgs() << "match success using target matcher\n" ); |
1579 | ++ActualIdx; |
1580 | continue; |
1581 | } |
1582 | // If the target matcher returned a specific error code use |
1583 | // that, else use the one from the generic matcher. |
1584 | if (TargetDiag != Match_InvalidOperand && HasRequiredFeatures) |
1585 | Diag = TargetDiag; |
1586 | } |
1587 | // If current formal operand wasn't matched and it is optional |
1588 | // then try to match next formal operand |
1589 | if (Diag == Match_InvalidOperand && isSubclass(Formal, OptionalMatchClass)) { |
1590 | DEBUG_WITH_TYPE("asm-matcher" , dbgs() << "ignoring optional operand\n" ); |
1591 | continue; |
1592 | } |
1593 | // If this operand is broken for all of the instances of this |
1594 | // mnemonic, keep track of it so we can report loc info. |
1595 | // If we already had a match that only failed due to a |
1596 | // target predicate, that diagnostic is preferred. |
1597 | if (!HadMatchOtherThanPredicate && |
1598 | (it == MnemonicRange.first || ErrorInfo <= ActualIdx)) { |
1599 | if (HasRequiredFeatures && (ErrorInfo != ActualIdx || Diag != Match_InvalidOperand)) |
1600 | RetCode = Diag; |
1601 | ErrorInfo = ActualIdx; |
1602 | } |
1603 | // Otherwise, just reject this instance of the mnemonic. |
1604 | OperandsValid = false; |
1605 | break; |
1606 | } |
1607 | |
1608 | if (!OperandsValid) { |
1609 | DEBUG_WITH_TYPE("asm-matcher" , dbgs() << "Opcode result: multiple " |
1610 | "operand mismatches, ignoring " |
1611 | "this opcode\n" ); |
1612 | continue; |
1613 | } |
1614 | if (!HasRequiredFeatures) { |
1615 | HadMatchOtherThanFeatures = true; |
1616 | FeatureBitset NewMissingFeatures = RequiredFeatures & ~AvailableFeatures; |
1617 | DEBUG_WITH_TYPE("asm-matcher" , dbgs() << "Missing target features:" ; |
1618 | for (unsigned I = 0, E = NewMissingFeatures.size(); I != E; ++I) |
1619 | if (NewMissingFeatures[I]) |
1620 | dbgs() << ' ' << I; |
1621 | dbgs() << "\n" ); |
1622 | if (NewMissingFeatures.count() <= |
1623 | MissingFeatures.count()) |
1624 | MissingFeatures = NewMissingFeatures; |
1625 | continue; |
1626 | } |
1627 | |
1628 | Inst.clear(); |
1629 | |
1630 | Inst.setOpcode(it->Opcode); |
1631 | // We have a potential match but have not rendered the operands. |
1632 | // Check the target predicate to handle any context sensitive |
1633 | // constraints. |
1634 | // For example, Ties that are referenced multiple times must be |
1635 | // checked here to ensure the input is the same for each match |
1636 | // constraints. If we leave it any later the ties will have been |
1637 | // canonicalized |
1638 | unsigned MatchResult; |
1639 | if ((MatchResult = checkEarlyTargetMatchPredicate(Inst, Operands)) != Match_Success) { |
1640 | Inst.clear(); |
1641 | DEBUG_WITH_TYPE( |
1642 | "asm-matcher" , |
1643 | dbgs() << "Early target match predicate failed with diag code " |
1644 | << MatchResult << "\n" ); |
1645 | RetCode = MatchResult; |
1646 | HadMatchOtherThanPredicate = true; |
1647 | continue; |
1648 | } |
1649 | |
1650 | if (matchingInlineAsm) { |
1651 | convertToMapAndConstraints(it->ConvertFn, Operands); |
1652 | if (!checkAsmTiedOperandConstraints(*this, it->ConvertFn, Operands, |
1653 | ErrorInfo)) |
1654 | return Match_InvalidTiedOperand; |
1655 | |
1656 | return Match_Success; |
1657 | } |
1658 | |
1659 | // We have selected a definite instruction, convert the parsed |
1660 | // operands into the appropriate MCInst. |
1661 | convertToMCInst(it->ConvertFn, Inst, it->Opcode, Operands); |
1662 | |
1663 | // We have a potential match. Check the target predicate to |
1664 | // handle any context sensitive constraints. |
1665 | if ((MatchResult = checkTargetMatchPredicate(Inst)) != Match_Success) { |
1666 | DEBUG_WITH_TYPE("asm-matcher" , |
1667 | dbgs() << "Target match predicate failed with diag code " |
1668 | << MatchResult << "\n" ); |
1669 | Inst.clear(); |
1670 | RetCode = MatchResult; |
1671 | HadMatchOtherThanPredicate = true; |
1672 | continue; |
1673 | } |
1674 | |
1675 | if (!checkAsmTiedOperandConstraints(*this, it->ConvertFn, Operands, |
1676 | ErrorInfo)) |
1677 | return Match_InvalidTiedOperand; |
1678 | |
1679 | DEBUG_WITH_TYPE( |
1680 | "asm-matcher" , |
1681 | dbgs() << "Opcode result: complete match, selecting this opcode\n" ); |
1682 | return Match_Success; |
1683 | } |
1684 | |
1685 | // Okay, we had no match. Try to return a useful error code. |
1686 | if (HadMatchOtherThanPredicate || !HadMatchOtherThanFeatures) |
1687 | return RetCode; |
1688 | |
1689 | ErrorInfo = 0; |
1690 | return Match_MissingFeature; |
1691 | } |
1692 | |
1693 | #endif // GET_MATCHER_IMPLEMENTATION |
1694 | |
1695 | |
1696 | #ifdef GET_MNEMONIC_SPELL_CHECKER |
1697 | #undef GET_MNEMONIC_SPELL_CHECKER |
1698 | |
1699 | static std::string WebAssemblyMnemonicSpellCheck(StringRef S, const FeatureBitset &FBS, unsigned VariantID) { |
1700 | const unsigned MaxEditDist = 2; |
1701 | std::vector<StringRef> Candidates; |
1702 | StringRef Prev = "" ; |
1703 | |
1704 | // Find the appropriate table for this asm variant. |
1705 | const MatchEntry *Start, *End; |
1706 | switch (VariantID) { |
1707 | default: llvm_unreachable("invalid variant!" ); |
1708 | case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break; |
1709 | } |
1710 | |
1711 | for (auto I = Start; I < End; I++) { |
1712 | // Ignore unsupported instructions. |
1713 | const FeatureBitset &RequiredFeatures = FeatureBitsets[I->RequiredFeaturesIdx]; |
1714 | if ((FBS & RequiredFeatures) != RequiredFeatures) |
1715 | continue; |
1716 | |
1717 | StringRef T = I->getMnemonic(); |
1718 | // Avoid recomputing the edit distance for the same string. |
1719 | if (T == Prev) |
1720 | continue; |
1721 | |
1722 | Prev = T; |
1723 | unsigned Dist = S.edit_distance(T, false, MaxEditDist); |
1724 | if (Dist <= MaxEditDist) |
1725 | Candidates.push_back(T); |
1726 | } |
1727 | |
1728 | if (Candidates.empty()) |
1729 | return "" ; |
1730 | |
1731 | std::string Res = ", did you mean: " ; |
1732 | unsigned i = 0; |
1733 | for (; i < Candidates.size() - 1; i++) |
1734 | Res += Candidates[i].str() + ", " ; |
1735 | return Res + Candidates[i].str() + "?" ; |
1736 | } |
1737 | |
1738 | #endif // GET_MNEMONIC_SPELL_CHECKER |
1739 | |
1740 | |
1741 | #ifdef GET_MNEMONIC_CHECKER |
1742 | #undef GET_MNEMONIC_CHECKER |
1743 | |
1744 | static bool WebAssemblyCheckMnemonic(StringRef Mnemonic, |
1745 | const FeatureBitset &AvailableFeatures, |
1746 | unsigned VariantID) { |
1747 | // Find the appropriate table for this asm variant. |
1748 | const MatchEntry *Start, *End; |
1749 | switch (VariantID) { |
1750 | default: llvm_unreachable("invalid variant!" ); |
1751 | case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break; |
1752 | } |
1753 | |
1754 | // Search the table. |
1755 | auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode()); |
1756 | |
1757 | if (MnemonicRange.first == MnemonicRange.second) |
1758 | return false; |
1759 | |
1760 | for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second; |
1761 | it != ie; ++it) { |
1762 | const FeatureBitset &RequiredFeatures = |
1763 | FeatureBitsets[it->RequiredFeaturesIdx]; |
1764 | if ((AvailableFeatures & RequiredFeatures) == RequiredFeatures) |
1765 | return true; |
1766 | } |
1767 | return false; |
1768 | } |
1769 | |
1770 | #endif // GET_MNEMONIC_CHECKER |
1771 | |
1772 | |