/src/build/lib/Target/WebAssembly/WebAssemblyGenAsmMatcher.inc
Line | Count | Source (jump to first uncovered line) |
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 | 0 | unsigned VariantID = 0) { |
31 | 0 | FeatureBitset MissingFeatures; |
32 | 0 | return MatchInstructionImpl(Operands, Inst, ErrorInfo, MissingFeatures, |
33 | 0 | matchingInlineAsm, VariantID); |
34 | 0 | } |
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_HasSIMD128Bit = 9, |
51 | | Feature_HasRelaxedSIMDBit = 8, |
52 | | Feature_HasAtomicsBit = 0, |
53 | | Feature_HasMultivalueBit = 5, |
54 | | Feature_HasNontrappingFPToIntBit = 6, |
55 | | Feature_NotHasNontrappingFPToIntBit = 12, |
56 | | Feature_HasSignExtBit = 10, |
57 | | Feature_HasTailCallBit = 11, |
58 | | Feature_HasExceptionHandlingBit = 2, |
59 | | Feature_HasBulkMemoryBit = 1, |
60 | | Feature_HasReferenceTypesBit = 7, |
61 | | Feature_HasExtendedConstBit = 3, |
62 | | Feature_HasMultiMemoryBit = 4, |
63 | | }; |
64 | | |
65 | | #endif // GET_REGISTER_MATCHER |
66 | | |
67 | | |
68 | | #ifdef GET_SUBTARGET_FEATURE_NAME |
69 | | #undef GET_SUBTARGET_FEATURE_NAME |
70 | | |
71 | | // User-level names for subtarget features that participate in |
72 | | // instruction matching. |
73 | 0 | static const char *getSubtargetFeatureName(uint64_t Val) { |
74 | 0 | switch(Val) { |
75 | 0 | case Feature_HasSIMD128Bit: return "simd128"; |
76 | 0 | case Feature_HasRelaxedSIMDBit: return "relaxed-simd"; |
77 | 0 | case Feature_HasAtomicsBit: return "atomics"; |
78 | 0 | case Feature_HasMultivalueBit: return "multivalue"; |
79 | 0 | case Feature_HasNontrappingFPToIntBit: return "nontrapping-fptoint"; |
80 | 0 | case Feature_NotHasNontrappingFPToIntBit: return "nontrapping-fptoint"; |
81 | 0 | case Feature_HasSignExtBit: return "sign-ext"; |
82 | 0 | case Feature_HasTailCallBit: return "tail-call"; |
83 | 0 | case Feature_HasExceptionHandlingBit: return "exception-handling"; |
84 | 0 | case Feature_HasBulkMemoryBit: return "bulk-memory"; |
85 | 0 | case Feature_HasReferenceTypesBit: return "reference-types"; |
86 | 0 | case Feature_HasExtendedConstBit: return "extended-const"; |
87 | 0 | case Feature_HasMultiMemoryBit: return "multimemory"; |
88 | 0 | default: return "(unknown)"; |
89 | 0 | } |
90 | 0 | } |
91 | | |
92 | | #endif // GET_SUBTARGET_FEATURE_NAME |
93 | | |
94 | | |
95 | | #ifdef GET_MATCHER_IMPLEMENTATION |
96 | | #undef GET_MATCHER_IMPLEMENTATION |
97 | | |
98 | | static const uint8_t TiedAsmOperandTable[][3] = { /* empty */ {0, 0, 0} }; |
99 | | |
100 | | namespace { |
101 | | enum OperatorConversionKind { |
102 | | CVT_Done, |
103 | | CVT_Reg, |
104 | | CVT_Tied, |
105 | | CVT_imm_95_0, |
106 | | CVT_95_addImmOperands, |
107 | | CVT_95_addBrListOperands, |
108 | | CVT_95_addFPImmf32Operands, |
109 | | CVT_95_addFPImmf64Operands, |
110 | | CVT_NUM_CONVERTERS |
111 | | }; |
112 | | |
113 | | enum InstructionConversionKind { |
114 | | Convert__imm_95_0, |
115 | | Convert__Imm1_0, |
116 | | Convert__BrList1_0, |
117 | | Convert__Imm1_0__Imm1_1, |
118 | | Convert_NoOperands, |
119 | | Convert__imm_95_0__imm_95_0, |
120 | | Convert__FPImmf321_0, |
121 | | Convert__Imm1_1__Imm1_0, |
122 | | Convert__FPImmf641_0, |
123 | | 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, |
124 | | Convert__FPImmf641_0__FPImmf641_1, |
125 | | Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3, |
126 | | Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3, |
127 | | Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7, |
128 | | Convert__Imm1_1__Imm1_0__Imm1_2, |
129 | | CVT_NUM_SIGNATURES |
130 | | }; |
131 | | |
132 | | } // end anonymous namespace |
133 | | |
134 | | static const uint8_t ConversionTable[CVT_NUM_SIGNATURES][33] = { |
135 | | // Convert__imm_95_0 |
136 | | { CVT_imm_95_0, 0, CVT_Done }, |
137 | | // Convert__Imm1_0 |
138 | | { CVT_95_addImmOperands, 1, CVT_Done }, |
139 | | // Convert__BrList1_0 |
140 | | { CVT_95_addBrListOperands, 1, CVT_Done }, |
141 | | // Convert__Imm1_0__Imm1_1 |
142 | | { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_Done }, |
143 | | // Convert_NoOperands |
144 | | { CVT_Done }, |
145 | | // Convert__imm_95_0__imm_95_0 |
146 | | { CVT_imm_95_0, 0, CVT_imm_95_0, 0, CVT_Done }, |
147 | | // Convert__FPImmf321_0 |
148 | | { CVT_95_addFPImmf32Operands, 1, CVT_Done }, |
149 | | // Convert__Imm1_1__Imm1_0 |
150 | | { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_Done }, |
151 | | // Convert__FPImmf641_0 |
152 | | { CVT_95_addFPImmf64Operands, 1, CVT_Done }, |
153 | | // 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 |
154 | | { 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 }, |
155 | | // Convert__FPImmf641_0__FPImmf641_1 |
156 | | { CVT_95_addFPImmf64Operands, 1, CVT_95_addFPImmf64Operands, 2, CVT_Done }, |
157 | | // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3 |
158 | | { CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done }, |
159 | | // Convert__FPImmf321_0__FPImmf321_1__FPImmf321_2__FPImmf321_3 |
160 | | { CVT_95_addFPImmf32Operands, 1, CVT_95_addFPImmf32Operands, 2, CVT_95_addFPImmf32Operands, 3, CVT_95_addFPImmf32Operands, 4, CVT_Done }, |
161 | | // Convert__Imm1_0__Imm1_1__Imm1_2__Imm1_3__Imm1_4__Imm1_5__Imm1_6__Imm1_7 |
162 | | { 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 }, |
163 | | // Convert__Imm1_1__Imm1_0__Imm1_2 |
164 | | { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_95_addImmOperands, 3, CVT_Done }, |
165 | | }; |
166 | | |
167 | | void WebAssemblyAsmParser:: |
168 | | convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode, |
169 | 0 | const OperandVector &Operands) { |
170 | 0 | assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!"); |
171 | 0 | const uint8_t *Converter = ConversionTable[Kind]; |
172 | 0 | unsigned OpIdx; |
173 | 0 | Inst.setOpcode(Opcode); |
174 | 0 | for (const uint8_t *p = Converter; *p; p += 2) { |
175 | 0 | OpIdx = *(p + 1); |
176 | 0 | switch (*p) { |
177 | 0 | default: llvm_unreachable("invalid conversion entry!"); |
178 | 0 | case CVT_Reg: |
179 | 0 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addRegOperands(Inst, 1); |
180 | 0 | break; |
181 | 0 | case CVT_Tied: { |
182 | 0 | assert(OpIdx < (size_t)(std::end(TiedAsmOperandTable) - |
183 | 0 | std::begin(TiedAsmOperandTable)) && |
184 | 0 | "Tied operand not found"); |
185 | 0 | unsigned TiedResOpnd = TiedAsmOperandTable[OpIdx][0]; |
186 | 0 | if (TiedResOpnd != (uint8_t)-1) |
187 | 0 | Inst.addOperand(Inst.getOperand(TiedResOpnd)); |
188 | 0 | break; |
189 | 0 | } |
190 | 0 | case CVT_imm_95_0: |
191 | 0 | Inst.addOperand(MCOperand::createImm(0)); |
192 | 0 | break; |
193 | 0 | case CVT_95_addImmOperands: |
194 | 0 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addImmOperands(Inst, 1); |
195 | 0 | break; |
196 | 0 | case CVT_95_addBrListOperands: |
197 | 0 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addBrListOperands(Inst, 1); |
198 | 0 | break; |
199 | 0 | case CVT_95_addFPImmf32Operands: |
200 | 0 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addFPImmf32Operands(Inst, 1); |
201 | 0 | break; |
202 | 0 | case CVT_95_addFPImmf64Operands: |
203 | 0 | static_cast<WebAssemblyOperand &>(*Operands[OpIdx]).addFPImmf64Operands(Inst, 1); |
204 | 0 | break; |
205 | 0 | } |
206 | 0 | } |
207 | 0 | } |
208 | | |
209 | | void WebAssemblyAsmParser:: |
210 | | convertToMapAndConstraints(unsigned Kind, |
211 | 0 | const OperandVector &Operands) { |
212 | 0 | assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!"); |
213 | 0 | unsigned NumMCOperands = 0; |
214 | 0 | const uint8_t *Converter = ConversionTable[Kind]; |
215 | 0 | for (const uint8_t *p = Converter; *p; p += 2) { |
216 | 0 | switch (*p) { |
217 | 0 | default: llvm_unreachable("invalid conversion entry!"); |
218 | 0 | case CVT_Reg: |
219 | 0 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
220 | 0 | Operands[*(p + 1)]->setConstraint("r"); |
221 | 0 | ++NumMCOperands; |
222 | 0 | break; |
223 | 0 | case CVT_Tied: |
224 | 0 | ++NumMCOperands; |
225 | 0 | break; |
226 | 0 | case CVT_imm_95_0: |
227 | 0 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
228 | 0 | Operands[*(p + 1)]->setConstraint(""); |
229 | 0 | ++NumMCOperands; |
230 | 0 | break; |
231 | 0 | case CVT_95_addImmOperands: |
232 | 0 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
233 | 0 | Operands[*(p + 1)]->setConstraint("m"); |
234 | 0 | NumMCOperands += 1; |
235 | 0 | break; |
236 | 0 | case CVT_95_addBrListOperands: |
237 | 0 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
238 | 0 | Operands[*(p + 1)]->setConstraint("m"); |
239 | 0 | NumMCOperands += 1; |
240 | 0 | break; |
241 | 0 | case CVT_95_addFPImmf32Operands: |
242 | 0 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
243 | 0 | Operands[*(p + 1)]->setConstraint("m"); |
244 | 0 | NumMCOperands += 1; |
245 | 0 | break; |
246 | 0 | case CVT_95_addFPImmf64Operands: |
247 | 0 | Operands[*(p + 1)]->setMCOperandNum(NumMCOperands); |
248 | 0 | Operands[*(p + 1)]->setConstraint("m"); |
249 | 0 | NumMCOperands += 1; |
250 | 0 | break; |
251 | 0 | } |
252 | 0 | } |
253 | 0 | } |
254 | | |
255 | | namespace { |
256 | | |
257 | | /// MatchClassKind - The kinds of classes which participate in |
258 | | /// instruction matching. |
259 | | enum MatchClassKind { |
260 | | InvalidMatchClass = 0, |
261 | | OptionalMatchClass = 1, |
262 | | MCK_LAST_TOKEN = OptionalMatchClass, |
263 | | MCK_EXTERNREF, // register class 'EXTERNREF' |
264 | | MCK_F32, // register class 'F32' |
265 | | MCK_F64, // register class 'F64' |
266 | | MCK_FUNCREF, // register class 'FUNCREF' |
267 | | MCK_V128, // register class 'V128' |
268 | | MCK_I32, // register class 'I32' |
269 | | MCK_I64, // register class 'I64' |
270 | | MCK_LAST_REGISTER = MCK_I64, |
271 | | MCK_BrList, // user defined class 'BrListAsmOperand' |
272 | | MCK_Imm, // user defined class 'ImmAsmOperand' |
273 | | MCK_FPImmf32, // user defined class 'anonymous_7127' |
274 | | MCK_FPImmf64, // user defined class 'anonymous_7128' |
275 | | NumMatchClassKinds |
276 | | }; |
277 | | |
278 | | } // end anonymous namespace |
279 | | |
280 | 0 | static unsigned getDiagKindFromRegisterClass(MatchClassKind RegisterClass) { |
281 | 0 | return MCTargetAsmParser::Match_InvalidOperand; |
282 | 0 | } |
283 | | |
284 | 0 | static MatchClassKind matchTokenString(StringRef Name) { |
285 | 0 | return InvalidMatchClass; |
286 | 0 | } |
287 | | |
288 | | /// isSubclass - Compute whether \p A is a subclass of \p B. |
289 | 0 | static bool isSubclass(MatchClassKind A, MatchClassKind B) { |
290 | 0 | if (A == B) |
291 | 0 | return true; |
292 | | |
293 | 0 | return false; |
294 | 0 | } |
295 | | |
296 | 0 | static unsigned validateOperandClass(MCParsedAsmOperand &GOp, MatchClassKind Kind) { |
297 | 0 | WebAssemblyOperand &Operand = (WebAssemblyOperand &)GOp; |
298 | 0 | if (Kind == InvalidMatchClass) |
299 | 0 | return MCTargetAsmParser::Match_InvalidOperand; |
300 | | |
301 | 0 | if (Operand.isToken() && Kind <= MCK_LAST_TOKEN) |
302 | 0 | return isSubclass(matchTokenString(Operand.getToken()), Kind) ? |
303 | 0 | MCTargetAsmParser::Match_Success : |
304 | 0 | MCTargetAsmParser::Match_InvalidOperand; |
305 | | |
306 | 0 | switch (Kind) { |
307 | 0 | default: break; |
308 | | // 'BrList' class |
309 | 0 | case MCK_BrList: { |
310 | 0 | DiagnosticPredicate DP(Operand.isBrList()); |
311 | 0 | if (DP.isMatch()) |
312 | 0 | return MCTargetAsmParser::Match_Success; |
313 | 0 | break; |
314 | 0 | } |
315 | | // 'Imm' class |
316 | 0 | case MCK_Imm: { |
317 | 0 | DiagnosticPredicate DP(Operand.isImm()); |
318 | 0 | if (DP.isMatch()) |
319 | 0 | return MCTargetAsmParser::Match_Success; |
320 | 0 | break; |
321 | 0 | } |
322 | | // 'FPImmf32' class |
323 | 0 | case MCK_FPImmf32: { |
324 | 0 | DiagnosticPredicate DP(Operand.isFPImm()); |
325 | 0 | if (DP.isMatch()) |
326 | 0 | return MCTargetAsmParser::Match_Success; |
327 | 0 | break; |
328 | 0 | } |
329 | | // 'FPImmf64' class |
330 | 0 | case MCK_FPImmf64: { |
331 | 0 | DiagnosticPredicate DP(Operand.isFPImm()); |
332 | 0 | if (DP.isMatch()) |
333 | 0 | return MCTargetAsmParser::Match_Success; |
334 | 0 | break; |
335 | 0 | } |
336 | 0 | } // end switch (Kind) |
337 | | |
338 | 0 | if (Operand.isReg()) { |
339 | 0 | MatchClassKind OpKind; |
340 | 0 | switch (Operand.getReg()) { |
341 | 0 | default: OpKind = InvalidMatchClass; break; |
342 | 0 | case WebAssembly::FP32: OpKind = MCK_I32; break; |
343 | 0 | case WebAssembly::FP64: OpKind = MCK_I64; break; |
344 | 0 | case WebAssembly::SP32: OpKind = MCK_I32; break; |
345 | 0 | case WebAssembly::SP64: OpKind = MCK_I64; break; |
346 | 0 | case WebAssembly::I32_0: OpKind = MCK_I32; break; |
347 | 0 | case WebAssembly::I64_0: OpKind = MCK_I64; break; |
348 | 0 | case WebAssembly::F32_0: OpKind = MCK_F32; break; |
349 | 0 | case WebAssembly::F64_0: OpKind = MCK_F64; break; |
350 | 0 | case WebAssembly::V128_0: OpKind = MCK_V128; break; |
351 | 0 | case WebAssembly::FUNCREF_0: OpKind = MCK_FUNCREF; break; |
352 | 0 | case WebAssembly::EXTERNREF_0: OpKind = MCK_EXTERNREF; break; |
353 | 0 | } |
354 | 0 | return isSubclass(OpKind, Kind) ? (unsigned)MCTargetAsmParser::Match_Success : |
355 | 0 | getDiagKindFromRegisterClass(Kind); |
356 | 0 | } |
357 | | |
358 | 0 | if (Kind > MCK_LAST_TOKEN && Kind <= MCK_LAST_REGISTER) |
359 | 0 | return getDiagKindFromRegisterClass(Kind); |
360 | | |
361 | 0 | return MCTargetAsmParser::Match_InvalidOperand; |
362 | 0 | } |
363 | | |
364 | | #ifndef NDEBUG |
365 | 0 | const char *getMatchClassName(MatchClassKind Kind) { |
366 | 0 | switch (Kind) { |
367 | 0 | case InvalidMatchClass: return "InvalidMatchClass"; |
368 | 0 | case OptionalMatchClass: return "OptionalMatchClass"; |
369 | 0 | case MCK_EXTERNREF: return "MCK_EXTERNREF"; |
370 | 0 | case MCK_F32: return "MCK_F32"; |
371 | 0 | case MCK_F64: return "MCK_F64"; |
372 | 0 | case MCK_FUNCREF: return "MCK_FUNCREF"; |
373 | 0 | case MCK_V128: return "MCK_V128"; |
374 | 0 | case MCK_I32: return "MCK_I32"; |
375 | 0 | case MCK_I64: return "MCK_I64"; |
376 | 0 | case MCK_BrList: return "MCK_BrList"; |
377 | 0 | case MCK_Imm: return "MCK_Imm"; |
378 | 0 | case MCK_FPImmf32: return "MCK_FPImmf32"; |
379 | 0 | case MCK_FPImmf64: return "MCK_FPImmf64"; |
380 | 0 | case NumMatchClassKinds: return "NumMatchClassKinds"; |
381 | 0 | } |
382 | 0 | llvm_unreachable("unhandled MatchClassKind!"); |
383 | 0 | } |
384 | | |
385 | | #endif // NDEBUG |
386 | | FeatureBitset WebAssemblyAsmParser:: |
387 | 0 | ComputeAvailableFeatures(const FeatureBitset &FB) const { |
388 | 0 | FeatureBitset Features; |
389 | 0 | if (FB[WebAssembly::FeatureSIMD128]) |
390 | 0 | Features.set(Feature_HasSIMD128Bit); |
391 | 0 | if (FB[WebAssembly::FeatureRelaxedSIMD]) |
392 | 0 | Features.set(Feature_HasRelaxedSIMDBit); |
393 | 0 | if (FB[WebAssembly::FeatureAtomics]) |
394 | 0 | Features.set(Feature_HasAtomicsBit); |
395 | 0 | if (FB[WebAssembly::FeatureMultivalue]) |
396 | 0 | Features.set(Feature_HasMultivalueBit); |
397 | 0 | if (FB[WebAssembly::FeatureNontrappingFPToInt]) |
398 | 0 | Features.set(Feature_HasNontrappingFPToIntBit); |
399 | 0 | if (!FB[WebAssembly::FeatureNontrappingFPToInt]) |
400 | 0 | Features.set(Feature_NotHasNontrappingFPToIntBit); |
401 | 0 | if (FB[WebAssembly::FeatureSignExt]) |
402 | 0 | Features.set(Feature_HasSignExtBit); |
403 | 0 | if (FB[WebAssembly::FeatureTailCall]) |
404 | 0 | Features.set(Feature_HasTailCallBit); |
405 | 0 | if (FB[WebAssembly::FeatureExceptionHandling]) |
406 | 0 | Features.set(Feature_HasExceptionHandlingBit); |
407 | 0 | if (FB[WebAssembly::FeatureBulkMemory]) |
408 | 0 | Features.set(Feature_HasBulkMemoryBit); |
409 | 0 | if (FB[WebAssembly::FeatureReferenceTypes]) |
410 | 0 | Features.set(Feature_HasReferenceTypesBit); |
411 | 0 | if (FB[WebAssembly::FeatureExtendedConst]) |
412 | 0 | Features.set(Feature_HasExtendedConstBit); |
413 | 0 | if (FB[WebAssembly::FeatureMultiMemory]) |
414 | 0 | Features.set(Feature_HasMultiMemoryBit); |
415 | 0 | return Features; |
416 | 0 | } |
417 | | |
418 | | static bool checkAsmTiedOperandConstraints(const WebAssemblyAsmParser&AsmParser, |
419 | | unsigned Kind, |
420 | | const OperandVector &Operands, |
421 | 0 | uint64_t &ErrorInfo) { |
422 | 0 | assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!"); |
423 | 0 | const uint8_t *Converter = ConversionTable[Kind]; |
424 | 0 | for (const uint8_t *p = Converter; *p; p += 2) { |
425 | 0 | switch (*p) { |
426 | 0 | case CVT_Tied: { |
427 | 0 | unsigned OpIdx = *(p + 1); |
428 | 0 | assert(OpIdx < (size_t)(std::end(TiedAsmOperandTable) - |
429 | 0 | std::begin(TiedAsmOperandTable)) && |
430 | 0 | "Tied operand not found"); |
431 | 0 | unsigned OpndNum1 = TiedAsmOperandTable[OpIdx][1]; |
432 | 0 | unsigned OpndNum2 = TiedAsmOperandTable[OpIdx][2]; |
433 | 0 | if (OpndNum1 != OpndNum2) { |
434 | 0 | auto &SrcOp1 = Operands[OpndNum1]; |
435 | 0 | auto &SrcOp2 = Operands[OpndNum2]; |
436 | 0 | if (!AsmParser.areEqualRegs(*SrcOp1, *SrcOp2)) { |
437 | 0 | ErrorInfo = OpndNum2; |
438 | 0 | return false; |
439 | 0 | } |
440 | 0 | } |
441 | 0 | break; |
442 | 0 | } |
443 | 0 | default: |
444 | 0 | break; |
445 | 0 | } |
446 | 0 | } |
447 | 0 | return true; |
448 | 0 | } |
449 | | |
450 | | static const char MnemonicTable[] = |
451 | | "\014atomic.fence\005block\002br\005br_if\010br_table\004call\015call_in" |
452 | | "direct\013call_params\014call_results\005catch\tcatch_all\010catchret\n" |
453 | | "cleanupret\016compiler_fence\tdata.drop\010delegate\004drop\004else\003" |
454 | | "end\tend_block\014end_function\006end_if\010end_loop\007end_try\020exte" |
455 | | "rnref.select\007f32.abs\007f32.add\010f32.ceil\tf32.const\021f32.conver" |
456 | | "t_i32_s\021f32.convert_i32_u\021f32.convert_i64_s\021f32.convert_i64_u\014" |
457 | | "f32.copysign\016f32.demote_f64\007f32.div\006f32.eq\tf32.floor\006f32.g" |
458 | | "e\006f32.gt\006f32.le\010f32.load\006f32.lt\007f32.max\007f32.min\007f3" |
459 | | "2.mul\006f32.ne\013f32.nearest\007f32.neg\023f32.reinterpret_i32\nf32.s" |
460 | | "elect\010f32.sqrt\tf32.store\007f32.sub\tf32.trunc\tf32x4.abs\tf32x4.ad" |
461 | | "d\nf32x4.ceil\025f32x4.convert_i32x4_s\025f32x4.convert_i32x4_u\027f32x" |
462 | | "4.demote_f64x2_zero\tf32x4.div\010f32x4.eq\022f32x4.extract_lane\013f32" |
463 | | "x4.floor\010f32x4.ge\010f32x4.gt\010f32x4.le\010f32x4.lt\tf32x4.max\tf3" |
464 | | "2x4.min\tf32x4.mul\010f32x4.ne\015f32x4.nearest\tf32x4.neg\nf32x4.pmax\n" |
465 | | "f32x4.pmin f32x4.relaxed_dot_bf16x8_add_f32\022f32x4.relaxed_madd\021f3" |
466 | | "2x4.relaxed_max\021f32x4.relaxed_min\023f32x4.relaxed_nmadd\022f32x4.re" |
467 | | "place_lane\013f32x4.splat\nf32x4.sqrt\tf32x4.sub\013f32x4.trunc\007f64." |
468 | | "abs\007f64.add\010f64.ceil\tf64.const\021f64.convert_i32_s\021f64.conve" |
469 | | "rt_i32_u\021f64.convert_i64_s\021f64.convert_i64_u\014f64.copysign\007f" |
470 | | "64.div\006f64.eq\tf64.floor\006f64.ge\006f64.gt\006f64.le\010f64.load\006" |
471 | | "f64.lt\007f64.max\007f64.min\007f64.mul\006f64.ne\013f64.nearest\007f64" |
472 | | ".neg\017f64.promote_f32\023f64.reinterpret_i64\nf64.select\010f64.sqrt\t" |
473 | | "f64.store\007f64.sub\tf64.trunc\tf64x2.abs\tf64x2.add\nf64x2.ceil\031f6" |
474 | | "4x2.convert_low_i32x4_s\031f64x2.convert_low_i32x4_u\tf64x2.div\010f64x" |
475 | | "2.eq\022f64x2.extract_lane\013f64x2.floor\010f64x2.ge\010f64x2.gt\010f6" |
476 | | "4x2.le\010f64x2.lt\tf64x2.max\tf64x2.min\tf64x2.mul\010f64x2.ne\015f64x" |
477 | | "2.nearest\tf64x2.neg\nf64x2.pmax\nf64x2.pmin\027f64x2.promote_low_f32x4" |
478 | | "\022f64x2.relaxed_madd\021f64x2.relaxed_max\021f64x2.relaxed_min\023f64" |
479 | | "x2.relaxed_nmadd\022f64x2.replace_lane\013f64x2.splat\nf64x2.sqrt\tf64x" |
480 | | "2.sub\013f64x2.trunc\016funcref.select\nglobal.get\nglobal.set\ti16x8.a" |
481 | | "bs\ti16x8.add\017i16x8.add_sat_s\017i16x8.add_sat_u\016i16x8.all_true\014" |
482 | | "i16x8.avgr_u\015i16x8.bitmask\010i16x8.eq\035i16x8.extadd_pairwise_i8x1" |
483 | | "6_s\035i16x8.extadd_pairwise_i8x16_u\031i16x8.extend_high_i8x16_s\031i1" |
484 | | "6x8.extend_high_i8x16_u\030i16x8.extend_low_i8x16_s\030i16x8.extend_low" |
485 | | "_i8x16_u\031i16x8.extmul_high_i8x16_s\031i16x8.extmul_high_i8x16_u\030i" |
486 | | "16x8.extmul_low_i8x16_s\030i16x8.extmul_low_i8x16_u\024i16x8.extract_la" |
487 | | "ne_s\024i16x8.extract_lane_u\ni16x8.ge_s\ni16x8.ge_u\ni16x8.gt_s\ni16x8" |
488 | | ".gt_u\ni16x8.le_s\ni16x8.le_u\017i16x8.load8x8_s\017i16x8.load8x8_u\ni1" |
489 | | "6x8.lt_s\ni16x8.lt_u\013i16x8.max_s\013i16x8.max_u\013i16x8.min_s\013i1" |
490 | | "6x8.min_u\ti16x8.mul\024i16x8.narrow_i32x4_s\024i16x8.narrow_i32x4_u\010" |
491 | | "i16x8.ne\ti16x8.neg\023i16x8.q15mulr_sat_s\037i16x8.relaxed_dot_i8x16_i" |
492 | | "7x16_s\030i16x8.relaxed_laneselect\027i16x8.relaxed_q15mulr_s\022i16x8." |
493 | | "replace_lane\ti16x8.shl\013i16x8.shr_s\013i16x8.shr_u\013i16x8.splat\ti" |
494 | | "16x8.sub\017i16x8.sub_sat_s\017i16x8.sub_sat_u\007i32.add\007i32.and\017" |
495 | | "i32.atomic.load\023i32.atomic.load16_u\022i32.atomic.load8_u\022i32.ato" |
496 | | "mic.rmw.add\022i32.atomic.rmw.and\026i32.atomic.rmw.cmpxchg\021i32.atom" |
497 | | "ic.rmw.or\022i32.atomic.rmw.sub\023i32.atomic.rmw.xchg\022i32.atomic.rm" |
498 | | "w.xor\026i32.atomic.rmw16.add_u\026i32.atomic.rmw16.and_u\032i32.atomic" |
499 | | ".rmw16.cmpxchg_u\025i32.atomic.rmw16.or_u\026i32.atomic.rmw16.sub_u\027" |
500 | | "i32.atomic.rmw16.xchg_u\026i32.atomic.rmw16.xor_u\025i32.atomic.rmw8.ad" |
501 | | "d_u\025i32.atomic.rmw8.and_u\031i32.atomic.rmw8.cmpxchg_u\024i32.atomic" |
502 | | ".rmw8.or_u\025i32.atomic.rmw8.sub_u\026i32.atomic.rmw8.xchg_u\025i32.at" |
503 | | "omic.rmw8.xor_u\020i32.atomic.store\022i32.atomic.store16\021i32.atomic" |
504 | | ".store8\007i32.clz\ti32.const\007i32.ctz\ti32.div_s\ti32.div_u\006i32.e" |
505 | | "q\007i32.eqz\016i32.extend16_s\015i32.extend8_s\010i32.ge_s\010i32.ge_u" |
506 | | "\010i32.gt_s\010i32.gt_u\010i32.le_s\010i32.le_u\010i32.load\014i32.loa" |
507 | | "d16_s\014i32.load16_u\013i32.load8_s\013i32.load8_u\010i32.lt_s\010i32." |
508 | | "lt_u\007i32.mul\006i32.ne\006i32.or\ni32.popcnt\023i32.reinterpret_f32\t" |
509 | | "i32.rem_s\ti32.rem_u\010i32.rotl\010i32.rotr\ni32.select\007i32.shl\ti3" |
510 | | "2.shr_s\ti32.shr_u\ti32.store\013i32.store16\ni32.store8\007i32.sub\017" |
511 | | "i32.trunc_f32_s\017i32.trunc_f32_u\017i32.trunc_f64_s\017i32.trunc_f64_" |
512 | | "u\023i32.trunc_sat_f32_s\023i32.trunc_sat_f32_u\023i32.trunc_sat_f64_s\023" |
513 | | "i32.trunc_sat_f64_u\014i32.wrap_i64\007i32.xor\ti32x4.abs\ti32x4.add\016" |
514 | | "i32x4.all_true\015i32x4.bitmask\021i32x4.dot_i16x8_s\010i32x4.eq\035i32" |
515 | | "x4.extadd_pairwise_i16x8_s\035i32x4.extadd_pairwise_i16x8_u\031i32x4.ex" |
516 | | "tend_high_i16x8_s\031i32x4.extend_high_i16x8_u\030i32x4.extend_low_i16x" |
517 | | "8_s\030i32x4.extend_low_i16x8_u\031i32x4.extmul_high_i16x8_s\031i32x4.e" |
518 | | "xtmul_high_i16x8_u\030i32x4.extmul_low_i16x8_s\030i32x4.extmul_low_i16x" |
519 | | "8_u\022i32x4.extract_lane\ni32x4.ge_s\ni32x4.ge_u\ni32x4.gt_s\ni32x4.gt" |
520 | | "_u\ni32x4.le_s\ni32x4.le_u\020i32x4.load16x4_s\020i32x4.load16x4_u\ni32" |
521 | | "x4.lt_s\ni32x4.lt_u\013i32x4.max_s\013i32x4.max_u\013i32x4.min_s\013i32" |
522 | | "x4.min_u\ti32x4.mul\010i32x4.ne\ti32x4.neg#i32x4.relaxed_dot_i8x16_i7x1" |
523 | | "6_add_s\030i32x4.relaxed_laneselect\033i32x4.relaxed_trunc_f32x4_s\033i" |
524 | | "32x4.relaxed_trunc_f32x4_u i32x4.relaxed_trunc_f64x2_s_zero i32x4.relax" |
525 | | "ed_trunc_f64x2_u_zero\022i32x4.replace_lane\ti32x4.shl\013i32x4.shr_s\013" |
526 | | "i32x4.shr_u\013i32x4.splat\ti32x4.sub\027i32x4.trunc_sat_f32x4_s\027i32" |
527 | | "x4.trunc_sat_f32x4_u\034i32x4.trunc_sat_f64x2_s_zero\034i32x4.trunc_sat" |
528 | | "_f64x2_u_zero\007i64.add\007i64.and\017i64.atomic.load\023i64.atomic.lo" |
529 | | "ad16_u\023i64.atomic.load32_u\022i64.atomic.load8_u\022i64.atomic.rmw.a" |
530 | | "dd\022i64.atomic.rmw.and\026i64.atomic.rmw.cmpxchg\021i64.atomic.rmw.or" |
531 | | "\022i64.atomic.rmw.sub\023i64.atomic.rmw.xchg\022i64.atomic.rmw.xor\026" |
532 | | "i64.atomic.rmw16.add_u\026i64.atomic.rmw16.and_u\032i64.atomic.rmw16.cm" |
533 | | "pxchg_u\025i64.atomic.rmw16.or_u\026i64.atomic.rmw16.sub_u\027i64.atomi" |
534 | | "c.rmw16.xchg_u\026i64.atomic.rmw16.xor_u\026i64.atomic.rmw32.add_u\026i" |
535 | | "64.atomic.rmw32.and_u\032i64.atomic.rmw32.cmpxchg_u\025i64.atomic.rmw32" |
536 | | ".or_u\026i64.atomic.rmw32.sub_u\027i64.atomic.rmw32.xchg_u\026i64.atomi" |
537 | | "c.rmw32.xor_u\025i64.atomic.rmw8.add_u\025i64.atomic.rmw8.and_u\031i64." |
538 | | "atomic.rmw8.cmpxchg_u\024i64.atomic.rmw8.or_u\025i64.atomic.rmw8.sub_u\026" |
539 | | "i64.atomic.rmw8.xchg_u\025i64.atomic.rmw8.xor_u\020i64.atomic.store\022" |
540 | | "i64.atomic.store16\022i64.atomic.store32\021i64.atomic.store8\007i64.cl" |
541 | | "z\ti64.const\007i64.ctz\ti64.div_s\ti64.div_u\006i64.eq\007i64.eqz\016i" |
542 | | "64.extend16_s\016i64.extend32_s\015i64.extend8_s\020i64.extend_i32_s\020" |
543 | | "i64.extend_i32_u\010i64.ge_s\010i64.ge_u\010i64.gt_s\010i64.gt_u\010i64" |
544 | | ".le_s\010i64.le_u\010i64.load\014i64.load16_s\014i64.load16_u\014i64.lo" |
545 | | "ad32_s\014i64.load32_u\013i64.load8_s\013i64.load8_u\010i64.lt_s\010i64" |
546 | | ".lt_u\007i64.mul\006i64.ne\006i64.or\ni64.popcnt\023i64.reinterpret_f64" |
547 | | "\ti64.rem_s\ti64.rem_u\010i64.rotl\010i64.rotr\ni64.select\007i64.shl\t" |
548 | | "i64.shr_s\ti64.shr_u\ti64.store\013i64.store16\013i64.store32\ni64.stor" |
549 | | "e8\007i64.sub\017i64.trunc_f32_s\017i64.trunc_f32_u\017i64.trunc_f64_s\017" |
550 | | "i64.trunc_f64_u\023i64.trunc_sat_f32_s\023i64.trunc_sat_f32_u\023i64.tr" |
551 | | "unc_sat_f64_s\023i64.trunc_sat_f64_u\007i64.xor\ti64x2.abs\ti64x2.add\016" |
552 | | "i64x2.all_true\015i64x2.bitmask\010i64x2.eq\031i64x2.extend_high_i32x4_" |
553 | | "s\031i64x2.extend_high_i32x4_u\030i64x2.extend_low_i32x4_s\030i64x2.ext" |
554 | | "end_low_i32x4_u\031i64x2.extmul_high_i32x4_s\031i64x2.extmul_high_i32x4" |
555 | | "_u\030i64x2.extmul_low_i32x4_s\030i64x2.extmul_low_i32x4_u\022i64x2.ext" |
556 | | "ract_lane\ni64x2.ge_s\ni64x2.gt_s\ni64x2.le_s\020i64x2.load32x2_s\020i6" |
557 | | "4x2.load32x2_u\ni64x2.lt_s\ti64x2.mul\010i64x2.ne\ti64x2.neg\030i64x2.r" |
558 | | "elaxed_laneselect\022i64x2.replace_lane\ti64x2.shl\013i64x2.shr_s\013i6" |
559 | | "4x2.shr_u\013i64x2.splat\ti64x2.sub\ti8x16.abs\ti8x16.add\017i8x16.add_" |
560 | | "sat_s\017i8x16.add_sat_u\016i8x16.all_true\014i8x16.avgr_u\015i8x16.bit" |
561 | | "mask\010i8x16.eq\024i8x16.extract_lane_s\024i8x16.extract_lane_u\ni8x16" |
562 | | ".ge_s\ni8x16.ge_u\ni8x16.gt_s\ni8x16.gt_u\ni8x16.le_s\ni8x16.le_u\ni8x1" |
563 | | "6.lt_s\ni8x16.lt_u\013i8x16.max_s\013i8x16.max_u\013i8x16.min_s\013i8x1" |
564 | | "6.min_u\024i8x16.narrow_i16x8_s\024i8x16.narrow_i16x8_u\010i8x16.ne\ti8" |
565 | | "x16.neg\014i8x16.popcnt\030i8x16.relaxed_laneselect\025i8x16.relaxed_sw" |
566 | | "izzle\022i8x16.replace_lane\ti8x16.shl\013i8x16.shr_s\013i8x16.shr_u\015" |
567 | | "i8x16.shuffle\013i8x16.splat\ti8x16.sub\017i8x16.sub_sat_s\017i8x16.sub" |
568 | | "_sat_u\015i8x16.swizzle\002if\tlocal.get\tlocal.set\tlocal.tee\004loop\024" |
569 | | "memory.atomic.notify\024memory.atomic.wait32\024memory.atomic.wait64\013" |
570 | | "memory.copy\013memory.fill\013memory.grow\013memory.init\013memory.size" |
571 | | "\003nop\013ref.is_null\017ref.null_extern\015ref.null_func\007rethrow\006" |
572 | | "return\013return_call\024return_call_indirect\023return_call_results\nt" |
573 | | "able.copy\ntable.fill\ttable.get\ntable.grow\ttable.set\ntable.size\005" |
574 | | "throw\003try\013unreachable\010v128.and\013v128.andnot\015v128.any_true" |
575 | | "\016v128.bitselect\nv128.const\tv128.load\020v128.load16_lane\021v128.l" |
576 | | "oad16_splat\020v128.load32_lane\021v128.load32_splat\020v128.load32_zer" |
577 | | "o\020v128.load64_lane\021v128.load64_splat\020v128.load64_zero\017v128." |
578 | | "load8_lane\020v128.load8_splat\010v128.not\007v128.or\013v128.select\nv" |
579 | | "128.store\021v128.store16_lane\021v128.store32_lane\021v128.store64_lan" |
580 | | "e\020v128.store8_lane\010v128.xor"; |
581 | | |
582 | | // Feature bitsets. |
583 | | enum : uint8_t { |
584 | | AMFBS_None, |
585 | | AMFBS_HasAtomics, |
586 | | AMFBS_HasBulkMemory, |
587 | | AMFBS_HasExceptionHandling, |
588 | | AMFBS_HasNontrappingFPToInt, |
589 | | AMFBS_HasReferenceTypes, |
590 | | AMFBS_HasRelaxedSIMD, |
591 | | AMFBS_HasSIMD128, |
592 | | AMFBS_HasSignExt, |
593 | | AMFBS_HasTailCall, |
594 | | }; |
595 | | |
596 | | static constexpr FeatureBitset FeatureBitsets[] = { |
597 | | {}, // AMFBS_None |
598 | | {Feature_HasAtomicsBit, }, |
599 | | {Feature_HasBulkMemoryBit, }, |
600 | | {Feature_HasExceptionHandlingBit, }, |
601 | | {Feature_HasNontrappingFPToIntBit, }, |
602 | | {Feature_HasReferenceTypesBit, }, |
603 | | {Feature_HasRelaxedSIMDBit, }, |
604 | | {Feature_HasSIMD128Bit, }, |
605 | | {Feature_HasSignExtBit, }, |
606 | | {Feature_HasTailCallBit, }, |
607 | | }; |
608 | | |
609 | | namespace { |
610 | | struct MatchEntry { |
611 | | uint16_t Mnemonic; |
612 | | uint16_t Opcode; |
613 | | uint8_t ConvertFn; |
614 | | uint8_t RequiredFeaturesIdx; |
615 | | uint8_t Classes[16]; |
616 | 0 | StringRef getMnemonic() const { |
617 | 0 | return StringRef(MnemonicTable + Mnemonic + 1, |
618 | 0 | MnemonicTable[Mnemonic]); |
619 | 0 | } |
620 | | }; |
621 | | |
622 | | // Predicate for searching for an opcode. |
623 | | struct LessOpcode { |
624 | 0 | bool operator()(const MatchEntry &LHS, StringRef RHS) { |
625 | 0 | return LHS.getMnemonic() < RHS; |
626 | 0 | } |
627 | 0 | bool operator()(StringRef LHS, const MatchEntry &RHS) { |
628 | 0 | return LHS < RHS.getMnemonic(); |
629 | 0 | } |
630 | 0 | bool operator()(const MatchEntry &LHS, const MatchEntry &RHS) { |
631 | 0 | return LHS.getMnemonic() < RHS.getMnemonic(); |
632 | 0 | } |
633 | | }; |
634 | | } // end anonymous namespace |
635 | | |
636 | | static const MatchEntry MatchTable0[] = { |
637 | | { 0 /* atomic.fence */, WebAssembly::ATOMIC_FENCE_S, Convert__imm_95_0, AMFBS_HasAtomics, { }, }, |
638 | | { 13 /* block */, WebAssembly::BLOCK_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
639 | | { 19 /* br */, WebAssembly::BR_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
640 | | { 22 /* br_if */, WebAssembly::BR_IF_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
641 | | { 28 /* br_table */, WebAssembly::BR_TABLE_I32_S, Convert__BrList1_0, AMFBS_None, { MCK_BrList }, }, |
642 | | { 28 /* br_table */, WebAssembly::BR_TABLE_I64_S, Convert__BrList1_0, AMFBS_None, { MCK_BrList }, }, |
643 | | { 37 /* call */, WebAssembly::CALL_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
644 | | { 42 /* call_indirect */, WebAssembly::CALL_INDIRECT_S, Convert__Imm1_0__Imm1_1, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
645 | | { 56 /* call_params */, WebAssembly::CALL_PARAMS_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
646 | | { 68 /* call_results */, WebAssembly::CALL_RESULTS_S, Convert_NoOperands, AMFBS_None, { }, }, |
647 | | { 81 /* catch */, WebAssembly::CATCH_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
648 | | { 87 /* catch_all */, WebAssembly::CATCH_ALL_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, }, |
649 | | { 97 /* catchret */, WebAssembly::CATCHRET_S, Convert__imm_95_0__imm_95_0, AMFBS_HasExceptionHandling, { }, }, |
650 | | { 106 /* cleanupret */, WebAssembly::CLEANUPRET_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, }, |
651 | | { 117 /* compiler_fence */, WebAssembly::COMPILER_FENCE_S, Convert_NoOperands, AMFBS_HasAtomics, { }, }, |
652 | | { 132 /* data.drop */, WebAssembly::anonymous_7959DATA_DROP_S, Convert__Imm1_0, AMFBS_HasBulkMemory, { MCK_Imm }, }, |
653 | | { 132 /* data.drop */, WebAssembly::anonymous_7960DATA_DROP_S, Convert__Imm1_0, AMFBS_HasBulkMemory, { MCK_Imm }, }, |
654 | | { 142 /* delegate */, WebAssembly::DELEGATE_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
655 | | { 151 /* drop */, WebAssembly::DROP_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
656 | | { 151 /* drop */, WebAssembly::DROP_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
657 | | { 151 /* drop */, WebAssembly::DROP_V128_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
658 | | { 151 /* drop */, WebAssembly::DROP_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
659 | | { 151 /* drop */, WebAssembly::DROP_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
660 | | { 151 /* drop */, WebAssembly::DROP_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
661 | | { 151 /* drop */, WebAssembly::DROP_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
662 | | { 156 /* else */, WebAssembly::ELSE_S, Convert_NoOperands, AMFBS_None, { }, }, |
663 | | { 161 /* end */, WebAssembly::END_S, Convert_NoOperands, AMFBS_None, { }, }, |
664 | | { 165 /* end_block */, WebAssembly::END_BLOCK_S, Convert_NoOperands, AMFBS_None, { }, }, |
665 | | { 175 /* end_function */, WebAssembly::END_FUNCTION_S, Convert_NoOperands, AMFBS_None, { }, }, |
666 | | { 188 /* end_if */, WebAssembly::END_IF_S, Convert_NoOperands, AMFBS_None, { }, }, |
667 | | { 195 /* end_loop */, WebAssembly::END_LOOP_S, Convert_NoOperands, AMFBS_None, { }, }, |
668 | | { 204 /* end_try */, WebAssembly::END_TRY_S, Convert_NoOperands, AMFBS_HasExceptionHandling, { }, }, |
669 | | { 212 /* externref.select */, WebAssembly::SELECT_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
670 | | { 229 /* f32.abs */, WebAssembly::ABS_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
671 | | { 237 /* f32.add */, WebAssembly::ADD_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
672 | | { 245 /* f32.ceil */, WebAssembly::CEIL_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
673 | | { 254 /* f32.const */, WebAssembly::CONST_F32_S, Convert__FPImmf321_0, AMFBS_None, { MCK_FPImmf32 }, }, |
674 | | { 264 /* f32.convert_i32_s */, WebAssembly::F32_CONVERT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
675 | | { 282 /* f32.convert_i32_u */, WebAssembly::F32_CONVERT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
676 | | { 300 /* f32.convert_i64_s */, WebAssembly::F32_CONVERT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
677 | | { 318 /* f32.convert_i64_u */, WebAssembly::F32_CONVERT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
678 | | { 336 /* f32.copysign */, WebAssembly::COPYSIGN_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
679 | | { 349 /* f32.demote_f64 */, WebAssembly::F32_DEMOTE_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
680 | | { 364 /* f32.div */, WebAssembly::DIV_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
681 | | { 372 /* f32.eq */, WebAssembly::EQ_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
682 | | { 379 /* f32.floor */, WebAssembly::FLOOR_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
683 | | { 389 /* f32.ge */, WebAssembly::GE_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
684 | | { 396 /* f32.gt */, WebAssembly::GT_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
685 | | { 403 /* f32.le */, WebAssembly::LE_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
686 | | { 410 /* f32.load */, WebAssembly::LOAD_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
687 | | { 410 /* f32.load */, WebAssembly::LOAD_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
688 | | { 419 /* f32.lt */, WebAssembly::LT_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
689 | | { 426 /* f32.max */, WebAssembly::MAX_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
690 | | { 434 /* f32.min */, WebAssembly::MIN_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
691 | | { 442 /* f32.mul */, WebAssembly::MUL_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
692 | | { 450 /* f32.ne */, WebAssembly::NE_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
693 | | { 457 /* f32.nearest */, WebAssembly::NEAREST_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
694 | | { 469 /* f32.neg */, WebAssembly::NEG_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
695 | | { 477 /* f32.reinterpret_i32 */, WebAssembly::F32_REINTERPRET_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
696 | | { 497 /* f32.select */, WebAssembly::SELECT_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
697 | | { 508 /* f32.sqrt */, WebAssembly::SQRT_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
698 | | { 517 /* f32.store */, WebAssembly::STORE_F32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
699 | | { 517 /* f32.store */, WebAssembly::STORE_F32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
700 | | { 527 /* f32.sub */, WebAssembly::SUB_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
701 | | { 535 /* f32.trunc */, WebAssembly::TRUNC_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
702 | | { 545 /* f32x4.abs */, WebAssembly::ABS_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
703 | | { 555 /* f32x4.add */, WebAssembly::ADD_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
704 | | { 565 /* f32x4.ceil */, WebAssembly::CEIL_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
705 | | { 576 /* f32x4.convert_i32x4_s */, WebAssembly::sint_to_fp_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
706 | | { 598 /* f32x4.convert_i32x4_u */, WebAssembly::uint_to_fp_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
707 | | { 620 /* f32x4.demote_f64x2_zero */, WebAssembly::demote_zero_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
708 | | { 644 /* f32x4.div */, WebAssembly::DIV_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
709 | | { 654 /* f32x4.eq */, WebAssembly::EQ_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
710 | | { 663 /* f32x4.extract_lane */, WebAssembly::EXTRACT_LANE_F32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
711 | | { 682 /* f32x4.floor */, WebAssembly::FLOOR_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
712 | | { 694 /* f32x4.ge */, WebAssembly::GE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
713 | | { 703 /* f32x4.gt */, WebAssembly::GT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
714 | | { 712 /* f32x4.le */, WebAssembly::LE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
715 | | { 721 /* f32x4.lt */, WebAssembly::LT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
716 | | { 730 /* f32x4.max */, WebAssembly::MAX_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
717 | | { 740 /* f32x4.min */, WebAssembly::MIN_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
718 | | { 750 /* f32x4.mul */, WebAssembly::MUL_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
719 | | { 760 /* f32x4.ne */, WebAssembly::NE_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
720 | | { 769 /* f32x4.nearest */, WebAssembly::NEAREST_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
721 | | { 783 /* f32x4.neg */, WebAssembly::NEG_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
722 | | { 793 /* f32x4.pmax */, WebAssembly::PMAX_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
723 | | { 804 /* f32x4.pmin */, WebAssembly::PMIN_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
724 | | { 815 /* f32x4.relaxed_dot_bf16x8_add_f32 */, WebAssembly::RELAXED_DOT_BFLOAT_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
725 | | { 848 /* f32x4.relaxed_madd */, WebAssembly::MADD_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
726 | | { 867 /* f32x4.relaxed_max */, WebAssembly::SIMD_RELAXED_FMAX_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
727 | | { 885 /* f32x4.relaxed_min */, WebAssembly::SIMD_RELAXED_FMIN_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
728 | | { 903 /* f32x4.relaxed_nmadd */, WebAssembly::NMADD_F32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
729 | | { 923 /* f32x4.replace_lane */, WebAssembly::REPLACE_LANE_F32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
730 | | { 942 /* f32x4.splat */, WebAssembly::SPLAT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
731 | | { 954 /* f32x4.sqrt */, WebAssembly::SQRT_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
732 | | { 965 /* f32x4.sub */, WebAssembly::SUB_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
733 | | { 975 /* f32x4.trunc */, WebAssembly::TRUNC_F32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
734 | | { 987 /* f64.abs */, WebAssembly::ABS_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
735 | | { 995 /* f64.add */, WebAssembly::ADD_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
736 | | { 1003 /* f64.ceil */, WebAssembly::CEIL_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
737 | | { 1012 /* f64.const */, WebAssembly::CONST_F64_S, Convert__FPImmf641_0, AMFBS_None, { MCK_FPImmf64 }, }, |
738 | | { 1022 /* f64.convert_i32_s */, WebAssembly::F64_CONVERT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
739 | | { 1040 /* f64.convert_i32_u */, WebAssembly::F64_CONVERT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
740 | | { 1058 /* f64.convert_i64_s */, WebAssembly::F64_CONVERT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
741 | | { 1076 /* f64.convert_i64_u */, WebAssembly::F64_CONVERT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
742 | | { 1094 /* f64.copysign */, WebAssembly::COPYSIGN_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
743 | | { 1107 /* f64.div */, WebAssembly::DIV_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
744 | | { 1115 /* f64.eq */, WebAssembly::EQ_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
745 | | { 1122 /* f64.floor */, WebAssembly::FLOOR_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
746 | | { 1132 /* f64.ge */, WebAssembly::GE_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
747 | | { 1139 /* f64.gt */, WebAssembly::GT_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
748 | | { 1146 /* f64.le */, WebAssembly::LE_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
749 | | { 1153 /* f64.load */, WebAssembly::LOAD_F64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
750 | | { 1153 /* f64.load */, WebAssembly::LOAD_F64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
751 | | { 1162 /* f64.lt */, WebAssembly::LT_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
752 | | { 1169 /* f64.max */, WebAssembly::MAX_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
753 | | { 1177 /* f64.min */, WebAssembly::MIN_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
754 | | { 1185 /* f64.mul */, WebAssembly::MUL_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
755 | | { 1193 /* f64.ne */, WebAssembly::NE_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
756 | | { 1200 /* f64.nearest */, WebAssembly::NEAREST_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
757 | | { 1212 /* f64.neg */, WebAssembly::NEG_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
758 | | { 1220 /* f64.promote_f32 */, WebAssembly::F64_PROMOTE_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
759 | | { 1236 /* f64.reinterpret_i64 */, WebAssembly::F64_REINTERPRET_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
760 | | { 1256 /* f64.select */, WebAssembly::SELECT_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
761 | | { 1267 /* f64.sqrt */, WebAssembly::SQRT_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
762 | | { 1276 /* f64.store */, WebAssembly::STORE_F64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
763 | | { 1276 /* f64.store */, WebAssembly::STORE_F64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
764 | | { 1286 /* f64.sub */, WebAssembly::SUB_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
765 | | { 1294 /* f64.trunc */, WebAssembly::TRUNC_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
766 | | { 1304 /* f64x2.abs */, WebAssembly::ABS_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
767 | | { 1314 /* f64x2.add */, WebAssembly::ADD_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
768 | | { 1324 /* f64x2.ceil */, WebAssembly::CEIL_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
769 | | { 1335 /* f64x2.convert_low_i32x4_s */, WebAssembly::convert_low_s_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
770 | | { 1361 /* f64x2.convert_low_i32x4_u */, WebAssembly::convert_low_u_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
771 | | { 1387 /* f64x2.div */, WebAssembly::DIV_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
772 | | { 1397 /* f64x2.eq */, WebAssembly::EQ_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
773 | | { 1406 /* f64x2.extract_lane */, WebAssembly::EXTRACT_LANE_F64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
774 | | { 1425 /* f64x2.floor */, WebAssembly::FLOOR_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
775 | | { 1437 /* f64x2.ge */, WebAssembly::GE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
776 | | { 1446 /* f64x2.gt */, WebAssembly::GT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
777 | | { 1455 /* f64x2.le */, WebAssembly::LE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
778 | | { 1464 /* f64x2.lt */, WebAssembly::LT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
779 | | { 1473 /* f64x2.max */, WebAssembly::MAX_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
780 | | { 1483 /* f64x2.min */, WebAssembly::MIN_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
781 | | { 1493 /* f64x2.mul */, WebAssembly::MUL_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
782 | | { 1503 /* f64x2.ne */, WebAssembly::NE_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
783 | | { 1512 /* f64x2.nearest */, WebAssembly::NEAREST_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
784 | | { 1526 /* f64x2.neg */, WebAssembly::NEG_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
785 | | { 1536 /* f64x2.pmax */, WebAssembly::PMAX_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
786 | | { 1547 /* f64x2.pmin */, WebAssembly::PMIN_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
787 | | { 1558 /* f64x2.promote_low_f32x4 */, WebAssembly::promote_low_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
788 | | { 1582 /* f64x2.relaxed_madd */, WebAssembly::MADD_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
789 | | { 1601 /* f64x2.relaxed_max */, WebAssembly::SIMD_RELAXED_FMAX_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
790 | | { 1619 /* f64x2.relaxed_min */, WebAssembly::SIMD_RELAXED_FMIN_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
791 | | { 1637 /* f64x2.relaxed_nmadd */, WebAssembly::NMADD_F64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
792 | | { 1657 /* f64x2.replace_lane */, WebAssembly::REPLACE_LANE_F64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
793 | | { 1676 /* f64x2.splat */, WebAssembly::SPLAT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
794 | | { 1688 /* f64x2.sqrt */, WebAssembly::SQRT_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
795 | | { 1699 /* f64x2.sub */, WebAssembly::SUB_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
796 | | { 1709 /* f64x2.trunc */, WebAssembly::TRUNC_F64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
797 | | { 1721 /* funcref.select */, WebAssembly::SELECT_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
798 | | { 1736 /* global.get */, WebAssembly::GLOBAL_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
799 | | { 1736 /* global.get */, WebAssembly::GLOBAL_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
800 | | { 1736 /* global.get */, WebAssembly::GLOBAL_GET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
801 | | { 1736 /* global.get */, WebAssembly::GLOBAL_GET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
802 | | { 1736 /* global.get */, WebAssembly::GLOBAL_GET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
803 | | { 1736 /* global.get */, WebAssembly::GLOBAL_GET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
804 | | { 1736 /* global.get */, WebAssembly::GLOBAL_GET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
805 | | { 1747 /* global.set */, WebAssembly::GLOBAL_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
806 | | { 1747 /* global.set */, WebAssembly::GLOBAL_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
807 | | { 1747 /* global.set */, WebAssembly::GLOBAL_SET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
808 | | { 1747 /* global.set */, WebAssembly::GLOBAL_SET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
809 | | { 1747 /* global.set */, WebAssembly::GLOBAL_SET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
810 | | { 1747 /* global.set */, WebAssembly::GLOBAL_SET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
811 | | { 1747 /* global.set */, WebAssembly::GLOBAL_SET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
812 | | { 1758 /* i16x8.abs */, WebAssembly::ABS_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
813 | | { 1768 /* i16x8.add */, WebAssembly::ADD_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
814 | | { 1778 /* i16x8.add_sat_s */, WebAssembly::ADD_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
815 | | { 1794 /* i16x8.add_sat_u */, WebAssembly::ADD_SAT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
816 | | { 1810 /* i16x8.all_true */, WebAssembly::ALLTRUE_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
817 | | { 1825 /* i16x8.avgr_u */, WebAssembly::AVGR_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
818 | | { 1838 /* i16x8.bitmask */, WebAssembly::BITMASK_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
819 | | { 1852 /* i16x8.eq */, WebAssembly::EQ_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
820 | | { 1861 /* i16x8.extadd_pairwise_i8x16_s */, WebAssembly::int_wasm_extadd_pairwise_signed_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
821 | | { 1891 /* i16x8.extadd_pairwise_i8x16_u */, WebAssembly::int_wasm_extadd_pairwise_unsigned_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
822 | | { 1921 /* i16x8.extend_high_i8x16_s */, WebAssembly::extend_high_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
823 | | { 1947 /* i16x8.extend_high_i8x16_u */, WebAssembly::extend_high_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
824 | | { 1973 /* i16x8.extend_low_i8x16_s */, WebAssembly::extend_low_s_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
825 | | { 1998 /* i16x8.extend_low_i8x16_u */, WebAssembly::extend_low_u_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
826 | | { 2023 /* i16x8.extmul_high_i8x16_s */, WebAssembly::EXTMUL_HIGH_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
827 | | { 2049 /* i16x8.extmul_high_i8x16_u */, WebAssembly::EXTMUL_HIGH_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
828 | | { 2075 /* i16x8.extmul_low_i8x16_s */, WebAssembly::EXTMUL_LOW_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
829 | | { 2100 /* i16x8.extmul_low_i8x16_u */, WebAssembly::EXTMUL_LOW_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
830 | | { 2125 /* i16x8.extract_lane_s */, WebAssembly::EXTRACT_LANE_I16x8_s_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
831 | | { 2146 /* i16x8.extract_lane_u */, WebAssembly::EXTRACT_LANE_I16x8_u_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
832 | | { 2167 /* i16x8.ge_s */, WebAssembly::GE_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
833 | | { 2178 /* i16x8.ge_u */, WebAssembly::GE_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
834 | | { 2189 /* i16x8.gt_s */, WebAssembly::GT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
835 | | { 2200 /* i16x8.gt_u */, WebAssembly::GT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
836 | | { 2211 /* i16x8.le_s */, WebAssembly::LE_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
837 | | { 2222 /* i16x8.le_u */, WebAssembly::LE_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
838 | | { 2233 /* i16x8.load8x8_s */, WebAssembly::LOAD_EXTEND_S_I16x8_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
839 | | { 2233 /* i16x8.load8x8_s */, WebAssembly::LOAD_EXTEND_S_I16x8_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
840 | | { 2249 /* i16x8.load8x8_u */, WebAssembly::LOAD_EXTEND_U_I16x8_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
841 | | { 2249 /* i16x8.load8x8_u */, WebAssembly::LOAD_EXTEND_U_I16x8_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
842 | | { 2265 /* i16x8.lt_s */, WebAssembly::LT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
843 | | { 2276 /* i16x8.lt_u */, WebAssembly::LT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
844 | | { 2287 /* i16x8.max_s */, WebAssembly::MAX_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
845 | | { 2299 /* i16x8.max_u */, WebAssembly::MAX_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
846 | | { 2311 /* i16x8.min_s */, WebAssembly::MIN_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
847 | | { 2323 /* i16x8.min_u */, WebAssembly::MIN_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
848 | | { 2335 /* i16x8.mul */, WebAssembly::MUL_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
849 | | { 2345 /* i16x8.narrow_i32x4_s */, WebAssembly::NARROW_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
850 | | { 2366 /* i16x8.narrow_i32x4_u */, WebAssembly::NARROW_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
851 | | { 2387 /* i16x8.ne */, WebAssembly::NE_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
852 | | { 2396 /* i16x8.neg */, WebAssembly::NEG_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
853 | | { 2406 /* i16x8.q15mulr_sat_s */, WebAssembly::Q15MULR_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
854 | | { 2426 /* i16x8.relaxed_dot_i8x16_i7x16_s */, WebAssembly::RELAXED_DOT_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
855 | | { 2458 /* i16x8.relaxed_laneselect */, WebAssembly::LANESELECT_I16x8_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
856 | | { 2483 /* i16x8.relaxed_q15mulr_s */, WebAssembly::RELAXED_Q15MULR_S_I16x8_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
857 | | { 2507 /* i16x8.replace_lane */, WebAssembly::REPLACE_LANE_I16x8_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
858 | | { 2526 /* i16x8.shl */, WebAssembly::SHL_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
859 | | { 2536 /* i16x8.shr_s */, WebAssembly::SHR_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
860 | | { 2548 /* i16x8.shr_u */, WebAssembly::SHR_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
861 | | { 2560 /* i16x8.splat */, WebAssembly::SPLAT_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
862 | | { 2572 /* i16x8.sub */, WebAssembly::SUB_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
863 | | { 2582 /* i16x8.sub_sat_s */, WebAssembly::SUB_SAT_S_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
864 | | { 2598 /* i16x8.sub_sat_u */, WebAssembly::SUB_SAT_U_I16x8_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
865 | | { 2614 /* i32.add */, WebAssembly::ADD_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
866 | | { 2622 /* i32.and */, WebAssembly::AND_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
867 | | { 2630 /* i32.atomic.load */, WebAssembly::ATOMIC_LOAD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
868 | | { 2630 /* i32.atomic.load */, WebAssembly::ATOMIC_LOAD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
869 | | { 2646 /* i32.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
870 | | { 2646 /* i32.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
871 | | { 2666 /* i32.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
872 | | { 2666 /* i32.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
873 | | { 2685 /* i32.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
874 | | { 2685 /* i32.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
875 | | { 2704 /* i32.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
876 | | { 2704 /* i32.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
877 | | { 2723 /* i32.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
878 | | { 2723 /* i32.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
879 | | { 2746 /* i32.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
880 | | { 2746 /* i32.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
881 | | { 2764 /* i32.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
882 | | { 2764 /* i32.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
883 | | { 2783 /* i32.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
884 | | { 2783 /* i32.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
885 | | { 2803 /* i32.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
886 | | { 2803 /* i32.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
887 | | { 2822 /* i32.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
888 | | { 2822 /* i32.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
889 | | { 2845 /* i32.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
890 | | { 2845 /* i32.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
891 | | { 2868 /* i32.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
892 | | { 2868 /* i32.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
893 | | { 2895 /* i32.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
894 | | { 2895 /* i32.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
895 | | { 2917 /* i32.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
896 | | { 2917 /* i32.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
897 | | { 2940 /* i32.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
898 | | { 2940 /* i32.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
899 | | { 2964 /* i32.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
900 | | { 2964 /* i32.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
901 | | { 2987 /* i32.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
902 | | { 2987 /* i32.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
903 | | { 3009 /* i32.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
904 | | { 3009 /* i32.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
905 | | { 3031 /* i32.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
906 | | { 3031 /* i32.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
907 | | { 3057 /* i32.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
908 | | { 3057 /* i32.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
909 | | { 3078 /* i32.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
910 | | { 3078 /* i32.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
911 | | { 3100 /* i32.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
912 | | { 3100 /* i32.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
913 | | { 3123 /* i32.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
914 | | { 3123 /* i32.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
915 | | { 3145 /* i32.atomic.store */, WebAssembly::ATOMIC_STORE_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
916 | | { 3145 /* i32.atomic.store */, WebAssembly::ATOMIC_STORE_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
917 | | { 3162 /* i32.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
918 | | { 3162 /* i32.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
919 | | { 3181 /* i32.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
920 | | { 3181 /* i32.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
921 | | { 3199 /* i32.clz */, WebAssembly::CLZ_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
922 | | { 3207 /* i32.const */, WebAssembly::CONST_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
923 | | { 3217 /* i32.ctz */, WebAssembly::CTZ_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
924 | | { 3225 /* i32.div_s */, WebAssembly::DIV_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
925 | | { 3235 /* i32.div_u */, WebAssembly::DIV_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
926 | | { 3245 /* i32.eq */, WebAssembly::EQ_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
927 | | { 3252 /* i32.eqz */, WebAssembly::EQZ_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
928 | | { 3260 /* i32.extend16_s */, WebAssembly::I32_EXTEND16_S_I32_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
929 | | { 3275 /* i32.extend8_s */, WebAssembly::I32_EXTEND8_S_I32_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
930 | | { 3289 /* i32.ge_s */, WebAssembly::GE_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
931 | | { 3298 /* i32.ge_u */, WebAssembly::GE_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
932 | | { 3307 /* i32.gt_s */, WebAssembly::GT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
933 | | { 3316 /* i32.gt_u */, WebAssembly::GT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
934 | | { 3325 /* i32.le_s */, WebAssembly::LE_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
935 | | { 3334 /* i32.le_u */, WebAssembly::LE_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
936 | | { 3343 /* i32.load */, WebAssembly::LOAD_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
937 | | { 3343 /* i32.load */, WebAssembly::LOAD_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
938 | | { 3352 /* i32.load16_s */, WebAssembly::LOAD16_S_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
939 | | { 3352 /* i32.load16_s */, WebAssembly::LOAD16_S_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
940 | | { 3365 /* i32.load16_u */, WebAssembly::LOAD16_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
941 | | { 3365 /* i32.load16_u */, WebAssembly::LOAD16_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
942 | | { 3378 /* i32.load8_s */, WebAssembly::LOAD8_S_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
943 | | { 3378 /* i32.load8_s */, WebAssembly::LOAD8_S_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
944 | | { 3390 /* i32.load8_u */, WebAssembly::LOAD8_U_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
945 | | { 3390 /* i32.load8_u */, WebAssembly::LOAD8_U_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
946 | | { 3402 /* i32.lt_s */, WebAssembly::LT_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
947 | | { 3411 /* i32.lt_u */, WebAssembly::LT_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
948 | | { 3420 /* i32.mul */, WebAssembly::MUL_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
949 | | { 3428 /* i32.ne */, WebAssembly::NE_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
950 | | { 3435 /* i32.or */, WebAssembly::OR_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
951 | | { 3442 /* i32.popcnt */, WebAssembly::POPCNT_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
952 | | { 3453 /* i32.reinterpret_f32 */, WebAssembly::I32_REINTERPRET_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
953 | | { 3473 /* i32.rem_s */, WebAssembly::REM_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
954 | | { 3483 /* i32.rem_u */, WebAssembly::REM_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
955 | | { 3493 /* i32.rotl */, WebAssembly::ROTL_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
956 | | { 3502 /* i32.rotr */, WebAssembly::ROTR_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
957 | | { 3511 /* i32.select */, WebAssembly::SELECT_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
958 | | { 3522 /* i32.shl */, WebAssembly::SHL_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
959 | | { 3530 /* i32.shr_s */, WebAssembly::SHR_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
960 | | { 3540 /* i32.shr_u */, WebAssembly::SHR_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
961 | | { 3550 /* i32.store */, WebAssembly::STORE_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
962 | | { 3550 /* i32.store */, WebAssembly::STORE_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
963 | | { 3560 /* i32.store16 */, WebAssembly::STORE16_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
964 | | { 3560 /* i32.store16 */, WebAssembly::STORE16_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
965 | | { 3572 /* i32.store8 */, WebAssembly::STORE8_I32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
966 | | { 3572 /* i32.store8 */, WebAssembly::STORE8_I32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
967 | | { 3583 /* i32.sub */, WebAssembly::SUB_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
968 | | { 3591 /* i32.trunc_f32_s */, WebAssembly::I32_TRUNC_S_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
969 | | { 3607 /* i32.trunc_f32_u */, WebAssembly::I32_TRUNC_U_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
970 | | { 3623 /* i32.trunc_f64_s */, WebAssembly::I32_TRUNC_S_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
971 | | { 3639 /* i32.trunc_f64_u */, WebAssembly::I32_TRUNC_U_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
972 | | { 3655 /* i32.trunc_sat_f32_s */, WebAssembly::I32_TRUNC_S_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
973 | | { 3675 /* i32.trunc_sat_f32_u */, WebAssembly::I32_TRUNC_U_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
974 | | { 3695 /* i32.trunc_sat_f64_s */, WebAssembly::I32_TRUNC_S_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
975 | | { 3715 /* i32.trunc_sat_f64_u */, WebAssembly::I32_TRUNC_U_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
976 | | { 3735 /* i32.wrap_i64 */, WebAssembly::I32_WRAP_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
977 | | { 3748 /* i32.xor */, WebAssembly::XOR_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
978 | | { 3756 /* i32x4.abs */, WebAssembly::ABS_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
979 | | { 3766 /* i32x4.add */, WebAssembly::ADD_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
980 | | { 3776 /* i32x4.all_true */, WebAssembly::ALLTRUE_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
981 | | { 3791 /* i32x4.bitmask */, WebAssembly::BITMASK_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
982 | | { 3805 /* i32x4.dot_i16x8_s */, WebAssembly::DOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
983 | | { 3823 /* i32x4.eq */, WebAssembly::EQ_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
984 | | { 3832 /* i32x4.extadd_pairwise_i16x8_s */, WebAssembly::int_wasm_extadd_pairwise_signed_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
985 | | { 3862 /* i32x4.extadd_pairwise_i16x8_u */, WebAssembly::int_wasm_extadd_pairwise_unsigned_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
986 | | { 3892 /* i32x4.extend_high_i16x8_s */, WebAssembly::extend_high_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
987 | | { 3918 /* i32x4.extend_high_i16x8_u */, WebAssembly::extend_high_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
988 | | { 3944 /* i32x4.extend_low_i16x8_s */, WebAssembly::extend_low_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
989 | | { 3969 /* i32x4.extend_low_i16x8_u */, WebAssembly::extend_low_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
990 | | { 3994 /* i32x4.extmul_high_i16x8_s */, WebAssembly::EXTMUL_HIGH_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
991 | | { 4020 /* i32x4.extmul_high_i16x8_u */, WebAssembly::EXTMUL_HIGH_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
992 | | { 4046 /* i32x4.extmul_low_i16x8_s */, WebAssembly::EXTMUL_LOW_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
993 | | { 4071 /* i32x4.extmul_low_i16x8_u */, WebAssembly::EXTMUL_LOW_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
994 | | { 4096 /* i32x4.extract_lane */, WebAssembly::EXTRACT_LANE_I32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
995 | | { 4115 /* i32x4.ge_s */, WebAssembly::GE_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
996 | | { 4126 /* i32x4.ge_u */, WebAssembly::GE_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
997 | | { 4137 /* i32x4.gt_s */, WebAssembly::GT_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
998 | | { 4148 /* i32x4.gt_u */, WebAssembly::GT_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
999 | | { 4159 /* i32x4.le_s */, WebAssembly::LE_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1000 | | { 4170 /* i32x4.le_u */, WebAssembly::LE_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1001 | | { 4181 /* i32x4.load16x4_s */, WebAssembly::LOAD_EXTEND_S_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1002 | | { 4181 /* i32x4.load16x4_s */, WebAssembly::LOAD_EXTEND_S_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1003 | | { 4198 /* i32x4.load16x4_u */, WebAssembly::LOAD_EXTEND_U_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1004 | | { 4198 /* i32x4.load16x4_u */, WebAssembly::LOAD_EXTEND_U_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1005 | | { 4215 /* i32x4.lt_s */, WebAssembly::LT_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1006 | | { 4226 /* i32x4.lt_u */, WebAssembly::LT_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1007 | | { 4237 /* i32x4.max_s */, WebAssembly::MAX_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1008 | | { 4249 /* i32x4.max_u */, WebAssembly::MAX_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1009 | | { 4261 /* i32x4.min_s */, WebAssembly::MIN_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1010 | | { 4273 /* i32x4.min_u */, WebAssembly::MIN_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1011 | | { 4285 /* i32x4.mul */, WebAssembly::MUL_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1012 | | { 4295 /* i32x4.ne */, WebAssembly::NE_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1013 | | { 4304 /* i32x4.neg */, WebAssembly::NEG_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1014 | | { 4314 /* i32x4.relaxed_dot_i8x16_i7x16_add_s */, WebAssembly::RELAXED_DOT_ADD_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1015 | | { 4350 /* i32x4.relaxed_laneselect */, WebAssembly::LANESELECT_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1016 | | { 4375 /* i32x4.relaxed_trunc_f32x4_s */, WebAssembly::int_wasm_relaxed_trunc_signed_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1017 | | { 4403 /* i32x4.relaxed_trunc_f32x4_u */, WebAssembly::int_wasm_relaxed_trunc_unsigned_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1018 | | { 4431 /* i32x4.relaxed_trunc_f64x2_s_zero */, WebAssembly::int_wasm_relaxed_trunc_signed_zero_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1019 | | { 4464 /* i32x4.relaxed_trunc_f64x2_u_zero */, WebAssembly::int_wasm_relaxed_trunc_unsigned_zero_I32x4_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1020 | | { 4497 /* i32x4.replace_lane */, WebAssembly::REPLACE_LANE_I32x4_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1021 | | { 4516 /* i32x4.shl */, WebAssembly::SHL_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1022 | | { 4526 /* i32x4.shr_s */, WebAssembly::SHR_S_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1023 | | { 4538 /* i32x4.shr_u */, WebAssembly::SHR_U_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1024 | | { 4550 /* i32x4.splat */, WebAssembly::SPLAT_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1025 | | { 4562 /* i32x4.sub */, WebAssembly::SUB_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1026 | | { 4572 /* i32x4.trunc_sat_f32x4_s */, WebAssembly::fp_to_sint_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1027 | | { 4596 /* i32x4.trunc_sat_f32x4_u */, WebAssembly::fp_to_uint_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1028 | | { 4620 /* i32x4.trunc_sat_f64x2_s_zero */, WebAssembly::trunc_sat_zero_s_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1029 | | { 4649 /* i32x4.trunc_sat_f64x2_u_zero */, WebAssembly::trunc_sat_zero_u_I32x4_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1030 | | { 4678 /* i64.add */, WebAssembly::ADD_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1031 | | { 4686 /* i64.and */, WebAssembly::AND_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1032 | | { 4694 /* i64.atomic.load */, WebAssembly::ATOMIC_LOAD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1033 | | { 4694 /* i64.atomic.load */, WebAssembly::ATOMIC_LOAD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1034 | | { 4710 /* i64.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1035 | | { 4710 /* i64.atomic.load16_u */, WebAssembly::ATOMIC_LOAD16_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1036 | | { 4730 /* i64.atomic.load32_u */, WebAssembly::ATOMIC_LOAD32_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1037 | | { 4730 /* i64.atomic.load32_u */, WebAssembly::ATOMIC_LOAD32_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1038 | | { 4750 /* i64.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1039 | | { 4750 /* i64.atomic.load8_u */, WebAssembly::ATOMIC_LOAD8_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1040 | | { 4769 /* i64.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1041 | | { 4769 /* i64.atomic.rmw.add */, WebAssembly::ATOMIC_RMW_ADD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1042 | | { 4788 /* i64.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1043 | | { 4788 /* i64.atomic.rmw.and */, WebAssembly::ATOMIC_RMW_AND_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1044 | | { 4807 /* i64.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1045 | | { 4807 /* i64.atomic.rmw.cmpxchg */, WebAssembly::ATOMIC_RMW_CMPXCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1046 | | { 4830 /* i64.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1047 | | { 4830 /* i64.atomic.rmw.or */, WebAssembly::ATOMIC_RMW_OR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1048 | | { 4848 /* i64.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1049 | | { 4848 /* i64.atomic.rmw.sub */, WebAssembly::ATOMIC_RMW_SUB_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1050 | | { 4867 /* i64.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1051 | | { 4867 /* i64.atomic.rmw.xchg */, WebAssembly::ATOMIC_RMW_XCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1052 | | { 4887 /* i64.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1053 | | { 4887 /* i64.atomic.rmw.xor */, WebAssembly::ATOMIC_RMW_XOR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1054 | | { 4906 /* i64.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1055 | | { 4906 /* i64.atomic.rmw16.add_u */, WebAssembly::ATOMIC_RMW16_U_ADD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1056 | | { 4929 /* i64.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1057 | | { 4929 /* i64.atomic.rmw16.and_u */, WebAssembly::ATOMIC_RMW16_U_AND_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1058 | | { 4952 /* i64.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1059 | | { 4952 /* i64.atomic.rmw16.cmpxchg_u */, WebAssembly::ATOMIC_RMW16_U_CMPXCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1060 | | { 4979 /* i64.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1061 | | { 4979 /* i64.atomic.rmw16.or_u */, WebAssembly::ATOMIC_RMW16_U_OR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1062 | | { 5001 /* i64.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1063 | | { 5001 /* i64.atomic.rmw16.sub_u */, WebAssembly::ATOMIC_RMW16_U_SUB_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1064 | | { 5024 /* i64.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1065 | | { 5024 /* i64.atomic.rmw16.xchg_u */, WebAssembly::ATOMIC_RMW16_U_XCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1066 | | { 5048 /* i64.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1067 | | { 5048 /* i64.atomic.rmw16.xor_u */, WebAssembly::ATOMIC_RMW16_U_XOR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1068 | | { 5071 /* i64.atomic.rmw32.add_u */, WebAssembly::ATOMIC_RMW32_U_ADD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1069 | | { 5071 /* i64.atomic.rmw32.add_u */, WebAssembly::ATOMIC_RMW32_U_ADD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1070 | | { 5094 /* i64.atomic.rmw32.and_u */, WebAssembly::ATOMIC_RMW32_U_AND_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1071 | | { 5094 /* i64.atomic.rmw32.and_u */, WebAssembly::ATOMIC_RMW32_U_AND_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1072 | | { 5117 /* i64.atomic.rmw32.cmpxchg_u */, WebAssembly::ATOMIC_RMW32_U_CMPXCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1073 | | { 5117 /* i64.atomic.rmw32.cmpxchg_u */, WebAssembly::ATOMIC_RMW32_U_CMPXCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1074 | | { 5144 /* i64.atomic.rmw32.or_u */, WebAssembly::ATOMIC_RMW32_U_OR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1075 | | { 5144 /* i64.atomic.rmw32.or_u */, WebAssembly::ATOMIC_RMW32_U_OR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1076 | | { 5166 /* i64.atomic.rmw32.sub_u */, WebAssembly::ATOMIC_RMW32_U_SUB_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1077 | | { 5166 /* i64.atomic.rmw32.sub_u */, WebAssembly::ATOMIC_RMW32_U_SUB_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1078 | | { 5189 /* i64.atomic.rmw32.xchg_u */, WebAssembly::ATOMIC_RMW32_U_XCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1079 | | { 5189 /* i64.atomic.rmw32.xchg_u */, WebAssembly::ATOMIC_RMW32_U_XCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1080 | | { 5213 /* i64.atomic.rmw32.xor_u */, WebAssembly::ATOMIC_RMW32_U_XOR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1081 | | { 5213 /* i64.atomic.rmw32.xor_u */, WebAssembly::ATOMIC_RMW32_U_XOR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1082 | | { 5236 /* i64.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1083 | | { 5236 /* i64.atomic.rmw8.add_u */, WebAssembly::ATOMIC_RMW8_U_ADD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1084 | | { 5258 /* i64.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1085 | | { 5258 /* i64.atomic.rmw8.and_u */, WebAssembly::ATOMIC_RMW8_U_AND_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1086 | | { 5280 /* i64.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1087 | | { 5280 /* i64.atomic.rmw8.cmpxchg_u */, WebAssembly::ATOMIC_RMW8_U_CMPXCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1088 | | { 5306 /* i64.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1089 | | { 5306 /* i64.atomic.rmw8.or_u */, WebAssembly::ATOMIC_RMW8_U_OR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1090 | | { 5327 /* i64.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1091 | | { 5327 /* i64.atomic.rmw8.sub_u */, WebAssembly::ATOMIC_RMW8_U_SUB_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1092 | | { 5349 /* i64.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1093 | | { 5349 /* i64.atomic.rmw8.xchg_u */, WebAssembly::ATOMIC_RMW8_U_XCHG_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1094 | | { 5372 /* i64.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1095 | | { 5372 /* i64.atomic.rmw8.xor_u */, WebAssembly::ATOMIC_RMW8_U_XOR_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1096 | | { 5394 /* i64.atomic.store */, WebAssembly::ATOMIC_STORE_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1097 | | { 5394 /* i64.atomic.store */, WebAssembly::ATOMIC_STORE_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1098 | | { 5411 /* i64.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1099 | | { 5411 /* i64.atomic.store16 */, WebAssembly::ATOMIC_STORE16_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1100 | | { 5430 /* i64.atomic.store32 */, WebAssembly::ATOMIC_STORE32_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1101 | | { 5430 /* i64.atomic.store32 */, WebAssembly::ATOMIC_STORE32_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1102 | | { 5449 /* i64.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1103 | | { 5449 /* i64.atomic.store8 */, WebAssembly::ATOMIC_STORE8_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1104 | | { 5467 /* i64.clz */, WebAssembly::CLZ_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1105 | | { 5475 /* i64.const */, WebAssembly::CONST_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1106 | | { 5485 /* i64.ctz */, WebAssembly::CTZ_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1107 | | { 5493 /* i64.div_s */, WebAssembly::DIV_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1108 | | { 5503 /* i64.div_u */, WebAssembly::DIV_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1109 | | { 5513 /* i64.eq */, WebAssembly::EQ_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1110 | | { 5520 /* i64.eqz */, WebAssembly::EQZ_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1111 | | { 5528 /* i64.extend16_s */, WebAssembly::I64_EXTEND16_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
1112 | | { 5543 /* i64.extend32_s */, WebAssembly::I64_EXTEND32_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
1113 | | { 5558 /* i64.extend8_s */, WebAssembly::I64_EXTEND8_S_I64_S, Convert_NoOperands, AMFBS_HasSignExt, { }, }, |
1114 | | { 5572 /* i64.extend_i32_s */, WebAssembly::I64_EXTEND_S_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1115 | | { 5589 /* i64.extend_i32_u */, WebAssembly::I64_EXTEND_U_I32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1116 | | { 5606 /* i64.ge_s */, WebAssembly::GE_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1117 | | { 5615 /* i64.ge_u */, WebAssembly::GE_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1118 | | { 5624 /* i64.gt_s */, WebAssembly::GT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1119 | | { 5633 /* i64.gt_u */, WebAssembly::GT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1120 | | { 5642 /* i64.le_s */, WebAssembly::LE_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1121 | | { 5651 /* i64.le_u */, WebAssembly::LE_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1122 | | { 5660 /* i64.load */, WebAssembly::LOAD_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1123 | | { 5660 /* i64.load */, WebAssembly::LOAD_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1124 | | { 5669 /* i64.load16_s */, WebAssembly::LOAD16_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1125 | | { 5669 /* i64.load16_s */, WebAssembly::LOAD16_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1126 | | { 5682 /* i64.load16_u */, WebAssembly::LOAD16_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1127 | | { 5682 /* i64.load16_u */, WebAssembly::LOAD16_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1128 | | { 5695 /* i64.load32_s */, WebAssembly::LOAD32_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1129 | | { 5695 /* i64.load32_s */, WebAssembly::LOAD32_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1130 | | { 5708 /* i64.load32_u */, WebAssembly::LOAD32_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1131 | | { 5708 /* i64.load32_u */, WebAssembly::LOAD32_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1132 | | { 5721 /* i64.load8_s */, WebAssembly::LOAD8_S_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1133 | | { 5721 /* i64.load8_s */, WebAssembly::LOAD8_S_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1134 | | { 5733 /* i64.load8_u */, WebAssembly::LOAD8_U_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1135 | | { 5733 /* i64.load8_u */, WebAssembly::LOAD8_U_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1136 | | { 5745 /* i64.lt_s */, WebAssembly::LT_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1137 | | { 5754 /* i64.lt_u */, WebAssembly::LT_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1138 | | { 5763 /* i64.mul */, WebAssembly::MUL_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1139 | | { 5771 /* i64.ne */, WebAssembly::NE_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1140 | | { 5778 /* i64.or */, WebAssembly::OR_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1141 | | { 5785 /* i64.popcnt */, WebAssembly::POPCNT_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1142 | | { 5796 /* i64.reinterpret_f64 */, WebAssembly::I64_REINTERPRET_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1143 | | { 5816 /* i64.rem_s */, WebAssembly::REM_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1144 | | { 5826 /* i64.rem_u */, WebAssembly::REM_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1145 | | { 5836 /* i64.rotl */, WebAssembly::ROTL_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1146 | | { 5845 /* i64.rotr */, WebAssembly::ROTR_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1147 | | { 5854 /* i64.select */, WebAssembly::SELECT_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1148 | | { 5865 /* i64.shl */, WebAssembly::SHL_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1149 | | { 5873 /* i64.shr_s */, WebAssembly::SHR_S_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1150 | | { 5883 /* i64.shr_u */, WebAssembly::SHR_U_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1151 | | { 5893 /* i64.store */, WebAssembly::STORE_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1152 | | { 5893 /* i64.store */, WebAssembly::STORE_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1153 | | { 5903 /* i64.store16 */, WebAssembly::STORE16_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1154 | | { 5903 /* i64.store16 */, WebAssembly::STORE16_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1155 | | { 5915 /* i64.store32 */, WebAssembly::STORE32_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1156 | | { 5915 /* i64.store32 */, WebAssembly::STORE32_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1157 | | { 5927 /* i64.store8 */, WebAssembly::STORE8_I64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1158 | | { 5927 /* i64.store8 */, WebAssembly::STORE8_I64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_None, { MCK_Imm, MCK_Imm }, }, |
1159 | | { 5938 /* i64.sub */, WebAssembly::SUB_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1160 | | { 5946 /* i64.trunc_f32_s */, WebAssembly::I64_TRUNC_S_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1161 | | { 5962 /* i64.trunc_f32_u */, WebAssembly::I64_TRUNC_U_F32_S, Convert_NoOperands, AMFBS_None, { }, }, |
1162 | | { 5978 /* i64.trunc_f64_s */, WebAssembly::I64_TRUNC_S_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1163 | | { 5994 /* i64.trunc_f64_u */, WebAssembly::I64_TRUNC_U_F64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1164 | | { 6010 /* i64.trunc_sat_f32_s */, WebAssembly::I64_TRUNC_S_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1165 | | { 6030 /* i64.trunc_sat_f32_u */, WebAssembly::I64_TRUNC_U_SAT_F32_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1166 | | { 6050 /* i64.trunc_sat_f64_s */, WebAssembly::I64_TRUNC_S_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1167 | | { 6070 /* i64.trunc_sat_f64_u */, WebAssembly::I64_TRUNC_U_SAT_F64_S, Convert_NoOperands, AMFBS_HasNontrappingFPToInt, { }, }, |
1168 | | { 6090 /* i64.xor */, WebAssembly::XOR_I64_S, Convert_NoOperands, AMFBS_None, { }, }, |
1169 | | { 6098 /* i64x2.abs */, WebAssembly::ABS_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1170 | | { 6108 /* i64x2.add */, WebAssembly::ADD_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1171 | | { 6118 /* i64x2.all_true */, WebAssembly::ALLTRUE_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1172 | | { 6133 /* i64x2.bitmask */, WebAssembly::BITMASK_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1173 | | { 6147 /* i64x2.eq */, WebAssembly::EQ_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1174 | | { 6156 /* i64x2.extend_high_i32x4_s */, WebAssembly::extend_high_s_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1175 | | { 6182 /* i64x2.extend_high_i32x4_u */, WebAssembly::extend_high_u_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1176 | | { 6208 /* i64x2.extend_low_i32x4_s */, WebAssembly::extend_low_s_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1177 | | { 6233 /* i64x2.extend_low_i32x4_u */, WebAssembly::extend_low_u_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1178 | | { 6258 /* i64x2.extmul_high_i32x4_s */, WebAssembly::EXTMUL_HIGH_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1179 | | { 6284 /* i64x2.extmul_high_i32x4_u */, WebAssembly::EXTMUL_HIGH_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1180 | | { 6310 /* i64x2.extmul_low_i32x4_s */, WebAssembly::EXTMUL_LOW_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1181 | | { 6335 /* i64x2.extmul_low_i32x4_u */, WebAssembly::EXTMUL_LOW_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1182 | | { 6360 /* i64x2.extract_lane */, WebAssembly::EXTRACT_LANE_I64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1183 | | { 6379 /* i64x2.ge_s */, WebAssembly::GE_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1184 | | { 6390 /* i64x2.gt_s */, WebAssembly::GT_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1185 | | { 6401 /* i64x2.le_s */, WebAssembly::LE_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1186 | | { 6412 /* i64x2.load32x2_s */, WebAssembly::LOAD_EXTEND_S_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1187 | | { 6412 /* i64x2.load32x2_s */, WebAssembly::LOAD_EXTEND_S_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1188 | | { 6429 /* i64x2.load32x2_u */, WebAssembly::LOAD_EXTEND_U_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1189 | | { 6429 /* i64x2.load32x2_u */, WebAssembly::LOAD_EXTEND_U_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1190 | | { 6446 /* i64x2.lt_s */, WebAssembly::LT_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1191 | | { 6457 /* i64x2.mul */, WebAssembly::MUL_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1192 | | { 6467 /* i64x2.ne */, WebAssembly::NE_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1193 | | { 6476 /* i64x2.neg */, WebAssembly::NEG_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1194 | | { 6486 /* i64x2.relaxed_laneselect */, WebAssembly::LANESELECT_I64x2_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1195 | | { 6511 /* i64x2.replace_lane */, WebAssembly::REPLACE_LANE_I64x2_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1196 | | { 6530 /* i64x2.shl */, WebAssembly::SHL_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1197 | | { 6540 /* i64x2.shr_s */, WebAssembly::SHR_S_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1198 | | { 6552 /* i64x2.shr_u */, WebAssembly::SHR_U_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1199 | | { 6564 /* i64x2.splat */, WebAssembly::SPLAT_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1200 | | { 6576 /* i64x2.sub */, WebAssembly::SUB_I64x2_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1201 | | { 6586 /* i8x16.abs */, WebAssembly::ABS_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1202 | | { 6596 /* i8x16.add */, WebAssembly::ADD_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1203 | | { 6606 /* i8x16.add_sat_s */, WebAssembly::ADD_SAT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1204 | | { 6622 /* i8x16.add_sat_u */, WebAssembly::ADD_SAT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1205 | | { 6638 /* i8x16.all_true */, WebAssembly::ALLTRUE_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1206 | | { 6653 /* i8x16.avgr_u */, WebAssembly::AVGR_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1207 | | { 6666 /* i8x16.bitmask */, WebAssembly::BITMASK_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1208 | | { 6680 /* i8x16.eq */, WebAssembly::EQ_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1209 | | { 6689 /* i8x16.extract_lane_s */, WebAssembly::EXTRACT_LANE_I8x16_s_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1210 | | { 6710 /* i8x16.extract_lane_u */, WebAssembly::EXTRACT_LANE_I8x16_u_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1211 | | { 6731 /* i8x16.ge_s */, WebAssembly::GE_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1212 | | { 6742 /* i8x16.ge_u */, WebAssembly::GE_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1213 | | { 6753 /* i8x16.gt_s */, WebAssembly::GT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1214 | | { 6764 /* i8x16.gt_u */, WebAssembly::GT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1215 | | { 6775 /* i8x16.le_s */, WebAssembly::LE_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1216 | | { 6786 /* i8x16.le_u */, WebAssembly::LE_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1217 | | { 6797 /* i8x16.lt_s */, WebAssembly::LT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1218 | | { 6808 /* i8x16.lt_u */, WebAssembly::LT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1219 | | { 6819 /* i8x16.max_s */, WebAssembly::MAX_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1220 | | { 6831 /* i8x16.max_u */, WebAssembly::MAX_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1221 | | { 6843 /* i8x16.min_s */, WebAssembly::MIN_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1222 | | { 6855 /* i8x16.min_u */, WebAssembly::MIN_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1223 | | { 6867 /* i8x16.narrow_i16x8_s */, WebAssembly::NARROW_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1224 | | { 6888 /* i8x16.narrow_i16x8_u */, WebAssembly::NARROW_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1225 | | { 6909 /* i8x16.ne */, WebAssembly::NE_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1226 | | { 6918 /* i8x16.neg */, WebAssembly::NEG_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1227 | | { 6928 /* i8x16.popcnt */, WebAssembly::POPCNT_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1228 | | { 6941 /* i8x16.relaxed_laneselect */, WebAssembly::LANESELECT_I8x16_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1229 | | { 6966 /* i8x16.relaxed_swizzle */, WebAssembly::RELAXED_SWIZZLE_S, Convert_NoOperands, AMFBS_HasRelaxedSIMD, { }, }, |
1230 | | { 6988 /* i8x16.replace_lane */, WebAssembly::REPLACE_LANE_I8x16_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1231 | | { 7007 /* i8x16.shl */, WebAssembly::SHL_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1232 | | { 7017 /* i8x16.shr_s */, WebAssembly::SHR_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1233 | | { 7029 /* i8x16.shr_u */, WebAssembly::SHR_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1234 | | { 7041 /* 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 }, }, |
1235 | | { 7055 /* i8x16.splat */, WebAssembly::SPLAT_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1236 | | { 7067 /* i8x16.sub */, WebAssembly::SUB_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1237 | | { 7077 /* i8x16.sub_sat_s */, WebAssembly::SUB_SAT_S_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1238 | | { 7093 /* i8x16.sub_sat_u */, WebAssembly::SUB_SAT_U_I8x16_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1239 | | { 7109 /* i8x16.swizzle */, WebAssembly::SWIZZLE_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1240 | | { 7123 /* if */, WebAssembly::IF_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1241 | | { 7126 /* local.get */, WebAssembly::LOCAL_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1242 | | { 7126 /* local.get */, WebAssembly::LOCAL_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1243 | | { 7126 /* local.get */, WebAssembly::LOCAL_GET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1244 | | { 7126 /* local.get */, WebAssembly::LOCAL_GET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1245 | | { 7126 /* local.get */, WebAssembly::LOCAL_GET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1246 | | { 7126 /* local.get */, WebAssembly::LOCAL_GET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1247 | | { 7126 /* local.get */, WebAssembly::LOCAL_GET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1248 | | { 7136 /* local.set */, WebAssembly::LOCAL_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1249 | | { 7136 /* local.set */, WebAssembly::LOCAL_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1250 | | { 7136 /* local.set */, WebAssembly::LOCAL_SET_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1251 | | { 7136 /* local.set */, WebAssembly::LOCAL_SET_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1252 | | { 7136 /* local.set */, WebAssembly::LOCAL_SET_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1253 | | { 7136 /* local.set */, WebAssembly::LOCAL_SET_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1254 | | { 7136 /* local.set */, WebAssembly::LOCAL_SET_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1255 | | { 7146 /* local.tee */, WebAssembly::LOCAL_TEE_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1256 | | { 7146 /* local.tee */, WebAssembly::LOCAL_TEE_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1257 | | { 7146 /* local.tee */, WebAssembly::LOCAL_TEE_V128_S, Convert__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm }, }, |
1258 | | { 7146 /* local.tee */, WebAssembly::LOCAL_TEE_F32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1259 | | { 7146 /* local.tee */, WebAssembly::LOCAL_TEE_F64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1260 | | { 7146 /* local.tee */, WebAssembly::LOCAL_TEE_I32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1261 | | { 7146 /* local.tee */, WebAssembly::LOCAL_TEE_I64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1262 | | { 7156 /* loop */, WebAssembly::LOOP_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1263 | | { 7161 /* memory.atomic.notify */, WebAssembly::MEMORY_ATOMIC_NOTIFY_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1264 | | { 7161 /* memory.atomic.notify */, WebAssembly::MEMORY_ATOMIC_NOTIFY_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1265 | | { 7182 /* memory.atomic.wait32 */, WebAssembly::MEMORY_ATOMIC_WAIT32_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1266 | | { 7182 /* memory.atomic.wait32 */, WebAssembly::MEMORY_ATOMIC_WAIT32_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1267 | | { 7203 /* memory.atomic.wait64 */, WebAssembly::MEMORY_ATOMIC_WAIT64_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1268 | | { 7203 /* memory.atomic.wait64 */, WebAssembly::MEMORY_ATOMIC_WAIT64_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasAtomics, { MCK_Imm, MCK_Imm }, }, |
1269 | | { 7224 /* memory.copy */, WebAssembly::anonymous_7959MEMORY_COPY_A32_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemory, { MCK_Imm, MCK_Imm }, }, |
1270 | | { 7224 /* memory.copy */, WebAssembly::anonymous_7960MEMORY_COPY_A64_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemory, { MCK_Imm, MCK_Imm }, }, |
1271 | | { 7236 /* memory.fill */, WebAssembly::anonymous_7959MEMORY_FILL_A32_S, Convert__Imm1_0, AMFBS_HasBulkMemory, { MCK_Imm }, }, |
1272 | | { 7236 /* memory.fill */, WebAssembly::anonymous_7960MEMORY_FILL_A64_S, Convert__Imm1_0, AMFBS_HasBulkMemory, { MCK_Imm }, }, |
1273 | | { 7248 /* memory.grow */, WebAssembly::anonymous_7277MEMORY_GROW_A32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1274 | | { 7248 /* memory.grow */, WebAssembly::anonymous_7278MEMORY_GROW_A64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1275 | | { 7260 /* memory.init */, WebAssembly::anonymous_7959MEMORY_INIT_A32_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemory, { MCK_Imm, MCK_Imm }, }, |
1276 | | { 7260 /* memory.init */, WebAssembly::anonymous_7960MEMORY_INIT_A64_S, Convert__Imm1_0__Imm1_1, AMFBS_HasBulkMemory, { MCK_Imm, MCK_Imm }, }, |
1277 | | { 7272 /* memory.size */, WebAssembly::anonymous_7277MEMORY_SIZE_A32_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1278 | | { 7272 /* memory.size */, WebAssembly::anonymous_7278MEMORY_SIZE_A64_S, Convert__Imm1_0, AMFBS_None, { MCK_Imm }, }, |
1279 | | { 7284 /* nop */, WebAssembly::NOP_S, Convert_NoOperands, AMFBS_None, { }, }, |
1280 | | { 7288 /* ref.is_null */, WebAssembly::REF_IS_NULL_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1281 | | { 7288 /* ref.is_null */, WebAssembly::REF_IS_NULL_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1282 | | { 7300 /* ref.null_extern */, WebAssembly::REF_NULL_EXTERNREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1283 | | { 7316 /* ref.null_func */, WebAssembly::REF_NULL_FUNCREF_S, Convert_NoOperands, AMFBS_HasReferenceTypes, { }, }, |
1284 | | { 7330 /* rethrow */, WebAssembly::RETHROW_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
1285 | | { 7338 /* return */, WebAssembly::RETURN_S, Convert_NoOperands, AMFBS_None, { }, }, |
1286 | | { 7345 /* return_call */, WebAssembly::RET_CALL_S, Convert__Imm1_0, AMFBS_HasTailCall, { MCK_Imm }, }, |
1287 | | { 7357 /* return_call_indirect */, WebAssembly::RET_CALL_INDIRECT_S, Convert__Imm1_0__Imm1_1, AMFBS_HasTailCall, { MCK_Imm, MCK_Imm }, }, |
1288 | | { 7378 /* return_call_results */, WebAssembly::RET_CALL_RESULTS_S, Convert_NoOperands, AMFBS_None, { }, }, |
1289 | | { 7398 /* table.copy */, WebAssembly::TABLE_COPY_S, Convert__Imm1_0__Imm1_1, AMFBS_HasReferenceTypes, { MCK_Imm, MCK_Imm }, }, |
1290 | | { 7409 /* table.fill */, WebAssembly::TABLE_FILL_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1291 | | { 7409 /* table.fill */, WebAssembly::TABLE_FILL_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1292 | | { 7420 /* table.get */, WebAssembly::TABLE_GET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1293 | | { 7420 /* table.get */, WebAssembly::TABLE_GET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1294 | | { 7430 /* table.grow */, WebAssembly::TABLE_GROW_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1295 | | { 7430 /* table.grow */, WebAssembly::TABLE_GROW_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1296 | | { 7441 /* table.set */, WebAssembly::TABLE_SET_EXTERNREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1297 | | { 7441 /* table.set */, WebAssembly::TABLE_SET_FUNCREF_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1298 | | { 7451 /* table.size */, WebAssembly::TABLE_SIZE_S, Convert__Imm1_0, AMFBS_HasReferenceTypes, { MCK_Imm }, }, |
1299 | | { 7462 /* throw */, WebAssembly::THROW_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
1300 | | { 7468 /* try */, WebAssembly::TRY_S, Convert__Imm1_0, AMFBS_HasExceptionHandling, { MCK_Imm }, }, |
1301 | | { 7472 /* unreachable */, WebAssembly::DEBUG_UNREACHABLE_S, Convert_NoOperands, AMFBS_None, { }, }, |
1302 | | { 7472 /* unreachable */, WebAssembly::UNREACHABLE_S, Convert_NoOperands, AMFBS_None, { }, }, |
1303 | | { 7484 /* v128.and */, WebAssembly::AND_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1304 | | { 7493 /* v128.andnot */, WebAssembly::ANDNOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1305 | | { 7505 /* v128.any_true */, WebAssembly::ANYTRUE_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1306 | | { 7519 /* v128.bitselect */, WebAssembly::BITSELECT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1307 | | { 7534 /* v128.const */, WebAssembly::CONST_V128_I64x2_S, Convert__Imm1_0__Imm1_1, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1308 | | { 7534 /* v128.const */, WebAssembly::CONST_V128_F64x2_S, Convert__FPImmf641_0__FPImmf641_1, AMFBS_HasSIMD128, { MCK_FPImmf64, MCK_FPImmf64 }, }, |
1309 | | { 7534 /* 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 }, }, |
1310 | | { 7534 /* 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 }, }, |
1311 | | { 7534 /* 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 }, }, |
1312 | | { 7534 /* 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 }, }, |
1313 | | { 7545 /* v128.load */, WebAssembly::LOAD_V128_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1314 | | { 7545 /* v128.load */, WebAssembly::LOAD_V128_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1315 | | { 7555 /* v128.load16_lane */, WebAssembly::LOAD_LANE_I16x8_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1316 | | { 7555 /* v128.load16_lane */, WebAssembly::LOAD_LANE_I16x8_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1317 | | { 7572 /* v128.load16_splat */, WebAssembly::LOAD16_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1318 | | { 7572 /* v128.load16_splat */, WebAssembly::LOAD16_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1319 | | { 7590 /* v128.load32_lane */, WebAssembly::LOAD_LANE_I32x4_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1320 | | { 7590 /* v128.load32_lane */, WebAssembly::LOAD_LANE_I32x4_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1321 | | { 7607 /* v128.load32_splat */, WebAssembly::LOAD32_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1322 | | { 7607 /* v128.load32_splat */, WebAssembly::LOAD32_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1323 | | { 7625 /* v128.load32_zero */, WebAssembly::LOAD_ZERO_I32x4_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1324 | | { 7625 /* v128.load32_zero */, WebAssembly::LOAD_ZERO_I32x4_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1325 | | { 7642 /* v128.load64_lane */, WebAssembly::LOAD_LANE_I64x2_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1326 | | { 7642 /* v128.load64_lane */, WebAssembly::LOAD_LANE_I64x2_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1327 | | { 7659 /* v128.load64_splat */, WebAssembly::LOAD64_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1328 | | { 7659 /* v128.load64_splat */, WebAssembly::LOAD64_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1329 | | { 7677 /* v128.load64_zero */, WebAssembly::LOAD_ZERO_I64x2_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1330 | | { 7677 /* v128.load64_zero */, WebAssembly::LOAD_ZERO_I64x2_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1331 | | { 7694 /* v128.load8_lane */, WebAssembly::LOAD_LANE_I8x16_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1332 | | { 7694 /* v128.load8_lane */, WebAssembly::LOAD_LANE_I8x16_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1333 | | { 7710 /* v128.load8_splat */, WebAssembly::LOAD8_SPLAT_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1334 | | { 7710 /* v128.load8_splat */, WebAssembly::LOAD8_SPLAT_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1335 | | { 7727 /* v128.not */, WebAssembly::NOT_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1336 | | { 7736 /* v128.or */, WebAssembly::OR_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1337 | | { 7744 /* v128.select */, WebAssembly::SELECT_V128_S, Convert_NoOperands, AMFBS_None, { }, }, |
1338 | | { 7756 /* v128.store */, WebAssembly::STORE_V128_A32_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1339 | | { 7756 /* v128.store */, WebAssembly::STORE_V128_A64_S, Convert__Imm1_1__Imm1_0, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm }, }, |
1340 | | { 7767 /* v128.store16_lane */, WebAssembly::STORE_LANE_I16x8_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1341 | | { 7767 /* v128.store16_lane */, WebAssembly::STORE_LANE_I16x8_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1342 | | { 7785 /* v128.store32_lane */, WebAssembly::STORE_LANE_I32x4_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1343 | | { 7785 /* v128.store32_lane */, WebAssembly::STORE_LANE_I32x4_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1344 | | { 7803 /* v128.store64_lane */, WebAssembly::STORE_LANE_I64x2_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1345 | | { 7803 /* v128.store64_lane */, WebAssembly::STORE_LANE_I64x2_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1346 | | { 7821 /* v128.store8_lane */, WebAssembly::STORE_LANE_I8x16_A32_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1347 | | { 7821 /* v128.store8_lane */, WebAssembly::STORE_LANE_I8x16_A64_S, Convert__Imm1_1__Imm1_0__Imm1_2, AMFBS_HasSIMD128, { MCK_Imm, MCK_Imm, MCK_Imm }, }, |
1348 | | { 7838 /* v128.xor */, WebAssembly::XOR_S, Convert_NoOperands, AMFBS_HasSIMD128, { }, }, |
1349 | | }; |
1350 | | |
1351 | | #include "llvm/Support/Debug.h" |
1352 | | #include "llvm/Support/Format.h" |
1353 | | |
1354 | | unsigned WebAssemblyAsmParser:: |
1355 | | MatchInstructionImpl(const OperandVector &Operands, |
1356 | | MCInst &Inst, |
1357 | | uint64_t &ErrorInfo, |
1358 | | FeatureBitset &MissingFeatures, |
1359 | 0 | bool matchingInlineAsm, unsigned VariantID) { |
1360 | | // Eliminate obvious mismatches. |
1361 | 0 | if (Operands.size() > 17) { |
1362 | 0 | ErrorInfo = 17; |
1363 | 0 | return Match_InvalidOperand; |
1364 | 0 | } |
1365 | | |
1366 | | // Get the current feature set. |
1367 | 0 | const FeatureBitset &AvailableFeatures = getAvailableFeatures(); |
1368 | | |
1369 | | // Get the instruction mnemonic, which is the first token. |
1370 | 0 | StringRef Mnemonic = ((WebAssemblyOperand &)*Operands[0]).getToken(); |
1371 | | |
1372 | | // Some state to try to produce better error messages. |
1373 | 0 | bool HadMatchOtherThanFeatures = false; |
1374 | 0 | bool HadMatchOtherThanPredicate = false; |
1375 | 0 | unsigned RetCode = Match_InvalidOperand; |
1376 | 0 | MissingFeatures.set(); |
1377 | | // Set ErrorInfo to the operand that mismatches if it is |
1378 | | // wrong for all instances of the instruction. |
1379 | 0 | ErrorInfo = ~0ULL; |
1380 | | // Find the appropriate table for this asm variant. |
1381 | 0 | const MatchEntry *Start, *End; |
1382 | 0 | switch (VariantID) { |
1383 | 0 | default: llvm_unreachable("invalid variant!"); |
1384 | 0 | case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break; |
1385 | 0 | } |
1386 | | // Search the table. |
1387 | 0 | auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode()); |
1388 | |
|
1389 | 0 | DEBUG_WITH_TYPE("asm-matcher", dbgs() << "AsmMatcher: found " << |
1390 | 0 | std::distance(MnemonicRange.first, MnemonicRange.second) << |
1391 | 0 | " encodings with mnemonic '" << Mnemonic << "'\n"); |
1392 | | |
1393 | | // Return a more specific error code if no mnemonics match. |
1394 | 0 | if (MnemonicRange.first == MnemonicRange.second) |
1395 | 0 | return Match_MnemonicFail; |
1396 | | |
1397 | 0 | for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second; |
1398 | 0 | it != ie; ++it) { |
1399 | 0 | const FeatureBitset &RequiredFeatures = FeatureBitsets[it->RequiredFeaturesIdx]; |
1400 | 0 | bool HasRequiredFeatures = |
1401 | 0 | (AvailableFeatures & RequiredFeatures) == RequiredFeatures; |
1402 | 0 | DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Trying to match opcode " |
1403 | 0 | << MII.getName(it->Opcode) << "\n"); |
1404 | | // equal_range guarantees that instruction mnemonic matches. |
1405 | 0 | assert(Mnemonic == it->getMnemonic()); |
1406 | 0 | bool OperandsValid = true; |
1407 | 0 | for (unsigned FormalIdx = 0, ActualIdx = 1; FormalIdx != 16; ++FormalIdx) { |
1408 | 0 | auto Formal = static_cast<MatchClassKind>(it->Classes[FormalIdx]); |
1409 | 0 | DEBUG_WITH_TYPE("asm-matcher", |
1410 | 0 | dbgs() << " Matching formal operand class " << getMatchClassName(Formal) |
1411 | 0 | << " against actual operand at index " << ActualIdx); |
1412 | 0 | if (ActualIdx < Operands.size()) |
1413 | 0 | DEBUG_WITH_TYPE("asm-matcher", dbgs() << " ("; |
1414 | 0 | Operands[ActualIdx]->print(dbgs()); dbgs() << "): "); |
1415 | 0 | else |
1416 | 0 | DEBUG_WITH_TYPE("asm-matcher", dbgs() << ": "); |
1417 | 0 | if (ActualIdx >= Operands.size()) { |
1418 | 0 | DEBUG_WITH_TYPE("asm-matcher", dbgs() << "actual operand index out of range\n"); |
1419 | 0 | if (Formal == InvalidMatchClass) { |
1420 | 0 | break; |
1421 | 0 | } |
1422 | 0 | if (isSubclass(Formal, OptionalMatchClass)) { |
1423 | 0 | continue; |
1424 | 0 | } |
1425 | 0 | OperandsValid = false; |
1426 | 0 | ErrorInfo = ActualIdx; |
1427 | 0 | break; |
1428 | 0 | } |
1429 | 0 | MCParsedAsmOperand &Actual = *Operands[ActualIdx]; |
1430 | 0 | unsigned Diag = validateOperandClass(Actual, Formal); |
1431 | 0 | if (Diag == Match_Success) { |
1432 | 0 | DEBUG_WITH_TYPE("asm-matcher", |
1433 | 0 | dbgs() << "match success using generic matcher\n"); |
1434 | 0 | ++ActualIdx; |
1435 | 0 | continue; |
1436 | 0 | } |
1437 | | // If the generic handler indicates an invalid operand |
1438 | | // failure, check for a special case. |
1439 | 0 | if (Diag != Match_Success) { |
1440 | 0 | unsigned TargetDiag = validateTargetOperandClass(Actual, Formal); |
1441 | 0 | if (TargetDiag == Match_Success) { |
1442 | 0 | DEBUG_WITH_TYPE("asm-matcher", |
1443 | 0 | dbgs() << "match success using target matcher\n"); |
1444 | 0 | ++ActualIdx; |
1445 | 0 | continue; |
1446 | 0 | } |
1447 | | // If the target matcher returned a specific error code use |
1448 | | // that, else use the one from the generic matcher. |
1449 | 0 | if (TargetDiag != Match_InvalidOperand && HasRequiredFeatures) |
1450 | 0 | Diag = TargetDiag; |
1451 | 0 | } |
1452 | | // If current formal operand wasn't matched and it is optional |
1453 | | // then try to match next formal operand |
1454 | 0 | if (Diag == Match_InvalidOperand && isSubclass(Formal, OptionalMatchClass)) { |
1455 | 0 | DEBUG_WITH_TYPE("asm-matcher", dbgs() << "ignoring optional operand\n"); |
1456 | 0 | continue; |
1457 | 0 | } |
1458 | | // If this operand is broken for all of the instances of this |
1459 | | // mnemonic, keep track of it so we can report loc info. |
1460 | | // If we already had a match that only failed due to a |
1461 | | // target predicate, that diagnostic is preferred. |
1462 | 0 | if (!HadMatchOtherThanPredicate && |
1463 | 0 | (it == MnemonicRange.first || ErrorInfo <= ActualIdx)) { |
1464 | 0 | if (HasRequiredFeatures && (ErrorInfo != ActualIdx || Diag != Match_InvalidOperand)) |
1465 | 0 | RetCode = Diag; |
1466 | 0 | ErrorInfo = ActualIdx; |
1467 | 0 | } |
1468 | | // Otherwise, just reject this instance of the mnemonic. |
1469 | 0 | OperandsValid = false; |
1470 | 0 | break; |
1471 | 0 | } |
1472 | |
|
1473 | 0 | if (!OperandsValid) { |
1474 | 0 | DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Opcode result: multiple " |
1475 | 0 | "operand mismatches, ignoring " |
1476 | 0 | "this opcode\n"); |
1477 | 0 | continue; |
1478 | 0 | } |
1479 | 0 | if (!HasRequiredFeatures) { |
1480 | 0 | HadMatchOtherThanFeatures = true; |
1481 | 0 | FeatureBitset NewMissingFeatures = RequiredFeatures & ~AvailableFeatures; |
1482 | 0 | DEBUG_WITH_TYPE("asm-matcher", dbgs() << "Missing target features:"; |
1483 | 0 | for (unsigned I = 0, E = NewMissingFeatures.size(); I != E; ++I) |
1484 | 0 | if (NewMissingFeatures[I]) |
1485 | 0 | dbgs() << ' ' << I; |
1486 | 0 | dbgs() << "\n"); |
1487 | 0 | if (NewMissingFeatures.count() <= |
1488 | 0 | MissingFeatures.count()) |
1489 | 0 | MissingFeatures = NewMissingFeatures; |
1490 | 0 | continue; |
1491 | 0 | } |
1492 | | |
1493 | 0 | Inst.clear(); |
1494 | |
|
1495 | 0 | Inst.setOpcode(it->Opcode); |
1496 | | // We have a potential match but have not rendered the operands. |
1497 | | // Check the target predicate to handle any context sensitive |
1498 | | // constraints. |
1499 | | // For example, Ties that are referenced multiple times must be |
1500 | | // checked here to ensure the input is the same for each match |
1501 | | // constraints. If we leave it any later the ties will have been |
1502 | | // canonicalized |
1503 | 0 | unsigned MatchResult; |
1504 | 0 | if ((MatchResult = checkEarlyTargetMatchPredicate(Inst, Operands)) != Match_Success) { |
1505 | 0 | Inst.clear(); |
1506 | 0 | DEBUG_WITH_TYPE( |
1507 | 0 | "asm-matcher", |
1508 | 0 | dbgs() << "Early target match predicate failed with diag code " |
1509 | 0 | << MatchResult << "\n"); |
1510 | 0 | RetCode = MatchResult; |
1511 | 0 | HadMatchOtherThanPredicate = true; |
1512 | 0 | continue; |
1513 | 0 | } |
1514 | | |
1515 | 0 | if (matchingInlineAsm) { |
1516 | 0 | convertToMapAndConstraints(it->ConvertFn, Operands); |
1517 | 0 | if (!checkAsmTiedOperandConstraints(*this, it->ConvertFn, Operands, ErrorInfo)) |
1518 | 0 | return Match_InvalidTiedOperand; |
1519 | | |
1520 | 0 | return Match_Success; |
1521 | 0 | } |
1522 | | |
1523 | | // We have selected a definite instruction, convert the parsed |
1524 | | // operands into the appropriate MCInst. |
1525 | 0 | convertToMCInst(it->ConvertFn, Inst, it->Opcode, Operands); |
1526 | | |
1527 | | // We have a potential match. Check the target predicate to |
1528 | | // handle any context sensitive constraints. |
1529 | 0 | if ((MatchResult = checkTargetMatchPredicate(Inst)) != Match_Success) { |
1530 | 0 | DEBUG_WITH_TYPE("asm-matcher", |
1531 | 0 | dbgs() << "Target match predicate failed with diag code " |
1532 | 0 | << MatchResult << "\n"); |
1533 | 0 | Inst.clear(); |
1534 | 0 | RetCode = MatchResult; |
1535 | 0 | HadMatchOtherThanPredicate = true; |
1536 | 0 | continue; |
1537 | 0 | } |
1538 | | |
1539 | 0 | if (!checkAsmTiedOperandConstraints(*this, it->ConvertFn, Operands, ErrorInfo)) |
1540 | 0 | return Match_InvalidTiedOperand; |
1541 | | |
1542 | 0 | DEBUG_WITH_TYPE( |
1543 | 0 | "asm-matcher", |
1544 | 0 | dbgs() << "Opcode result: complete match, selecting this opcode\n"); |
1545 | 0 | return Match_Success; |
1546 | 0 | } |
1547 | | |
1548 | | // Okay, we had no match. Try to return a useful error code. |
1549 | 0 | if (HadMatchOtherThanPredicate || !HadMatchOtherThanFeatures) |
1550 | 0 | return RetCode; |
1551 | | |
1552 | 0 | ErrorInfo = 0; |
1553 | 0 | return Match_MissingFeature; |
1554 | 0 | } |
1555 | | |
1556 | | #endif // GET_MATCHER_IMPLEMENTATION |
1557 | | |
1558 | | |
1559 | | #ifdef GET_MNEMONIC_SPELL_CHECKER |
1560 | | #undef GET_MNEMONIC_SPELL_CHECKER |
1561 | | |
1562 | | static std::string WebAssemblyMnemonicSpellCheck(StringRef S, const FeatureBitset &FBS, unsigned VariantID) { |
1563 | | const unsigned MaxEditDist = 2; |
1564 | | std::vector<StringRef> Candidates; |
1565 | | StringRef Prev = ""; |
1566 | | |
1567 | | // Find the appropriate table for this asm variant. |
1568 | | const MatchEntry *Start, *End; |
1569 | | switch (VariantID) { |
1570 | | default: llvm_unreachable("invalid variant!"); |
1571 | | case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break; |
1572 | | } |
1573 | | |
1574 | | for (auto I = Start; I < End; I++) { |
1575 | | // Ignore unsupported instructions. |
1576 | | const FeatureBitset &RequiredFeatures = FeatureBitsets[I->RequiredFeaturesIdx]; |
1577 | | if ((FBS & RequiredFeatures) != RequiredFeatures) |
1578 | | continue; |
1579 | | |
1580 | | StringRef T = I->getMnemonic(); |
1581 | | // Avoid recomputing the edit distance for the same string. |
1582 | | if (T.equals(Prev)) |
1583 | | continue; |
1584 | | |
1585 | | Prev = T; |
1586 | | unsigned Dist = S.edit_distance(T, false, MaxEditDist); |
1587 | | if (Dist <= MaxEditDist) |
1588 | | Candidates.push_back(T); |
1589 | | } |
1590 | | |
1591 | | if (Candidates.empty()) |
1592 | | return ""; |
1593 | | |
1594 | | std::string Res = ", did you mean: "; |
1595 | | unsigned i = 0; |
1596 | | for (; i < Candidates.size() - 1; i++) |
1597 | | Res += Candidates[i].str() + ", "; |
1598 | | return Res + Candidates[i].str() + "?"; |
1599 | | } |
1600 | | |
1601 | | #endif // GET_MNEMONIC_SPELL_CHECKER |
1602 | | |
1603 | | |
1604 | | #ifdef GET_MNEMONIC_CHECKER |
1605 | | #undef GET_MNEMONIC_CHECKER |
1606 | | |
1607 | | static bool WebAssemblyCheckMnemonic(StringRef Mnemonic, |
1608 | | const FeatureBitset &AvailableFeatures, |
1609 | | unsigned VariantID) { |
1610 | | // Find the appropriate table for this asm variant. |
1611 | | const MatchEntry *Start, *End; |
1612 | | switch (VariantID) { |
1613 | | default: llvm_unreachable("invalid variant!"); |
1614 | | case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break; |
1615 | | } |
1616 | | |
1617 | | // Search the table. |
1618 | | auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode()); |
1619 | | |
1620 | | if (MnemonicRange.first == MnemonicRange.second) |
1621 | | return false; |
1622 | | |
1623 | | for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second; |
1624 | | it != ie; ++it) { |
1625 | | const FeatureBitset &RequiredFeatures = |
1626 | | FeatureBitsets[it->RequiredFeaturesIdx]; |
1627 | | if ((AvailableFeatures & RequiredFeatures) == RequiredFeatures) |
1628 | | return true; |
1629 | | } |
1630 | | return false; |
1631 | | } |
1632 | | |
1633 | | #endif // GET_MNEMONIC_CHECKER |
1634 | | |