Bug Summary

File:build-llvm/lib/Target/AMDGPU/AMDGPUGenAsmMatcher.inc
Warning:line 14487, column 10
Excessive padding in 'struct (anonymous namespace)::MatchEntry' (5 padding bytes, where 1 is optimal). Optimal fields order: RequiredFeatures, Mnemonic, Opcode, ConvertFn, Classes, consider reordering the fields or adding explicit padding members

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name AMDGPUAsmParser.cpp -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-eagerly-assume -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=cplusplus -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -mrelocation-model pic -pic-level 2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -momit-leaf-frame-pointer -ffunction-sections -fdata-sections -resource-dir /usr/lib/llvm-7/lib/clang/7.0.0 -D _DEBUG -D _GNU_SOURCE -D __STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -I /build/llvm-toolchain-snapshot-7~svn329677/build-llvm/lib/Target/AMDGPU/AsmParser -I /build/llvm-toolchain-snapshot-7~svn329677/lib/Target/AMDGPU/AsmParser -I /build/llvm-toolchain-snapshot-7~svn329677/lib/Target/AMDGPU -I /build/llvm-toolchain-snapshot-7~svn329677/build-llvm/lib/Target/AMDGPU -I /build/llvm-toolchain-snapshot-7~svn329677/build-llvm/include -I /build/llvm-toolchain-snapshot-7~svn329677/include -U NDEBUG -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/x86_64-linux-gnu/c++/7.3.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/x86_64-linux-gnu/c++/7.3.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/backward -internal-isystem /usr/include/clang/7.0.0/include/ -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-7/lib/clang/7.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -Wno-maybe-uninitialized -Wno-comment -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /build/llvm-toolchain-snapshot-7~svn329677/build-llvm/lib/Target/AMDGPU/AsmParser -ferror-limit 19 -fmessage-length 0 -fvisibility-inlines-hidden -fobjc-runtime=gcc -fdiagnostics-show-option -vectorize-loops -vectorize-slp -analyzer-checker optin.performance.Padding -analyzer-output=html -analyzer-config stable-report-filename=true -o /tmp/scan-build-2018-04-11-031539-24776-1 -x c++ /build/llvm-toolchain-snapshot-7~svn329677/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Assembly Matcher Source Fragment *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9
10#ifdef GET_ASSEMBLER_HEADER
11#undef GET_ASSEMBLER_HEADER
12 // This should be included into the middle of the declaration of
13 // your subclasses implementation of MCTargetAsmParser.
14 uint64_t ComputeAvailableFeatures(const FeatureBitset& FB) const;
15 void convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
16 const OperandVector &Operands,
17 const SmallBitVector &OptionalOperandsMask);
18 void convertToMapAndConstraints(unsigned Kind,
19 const OperandVector &Operands) override;
20 unsigned MatchInstructionImpl(const OperandVector &Operands,
21 MCInst &Inst,
22 uint64_t &ErrorInfo,
23 bool matchingInlineAsm,
24 unsigned VariantID = 0);
25 OperandMatchResultTy MatchOperandParserImpl(
26 OperandVector &Operands,
27 StringRef Mnemonic,
28 bool ParseForAllFeatures = false);
29 OperandMatchResultTy tryCustomParseOperand(
30 OperandVector &Operands,
31 unsigned MCK);
32
33#endif // GET_ASSEMBLER_HEADER_INFO
34
35
36#ifdef GET_OPERAND_DIAGNOSTIC_TYPES
37#undef GET_OPERAND_DIAGNOSTIC_TYPES
38
39#endif // GET_OPERAND_DIAGNOSTIC_TYPES
40
41
42#ifdef GET_REGISTER_MATCHER
43#undef GET_REGISTER_MATCHER
44
45// Flags for subtarget features that participate in instruction matching.
46enum SubtargetFeatureFlag : uint32_t {
47 Feature_isSICI = (1ULL << 25),
48 Feature_isVI = (1ULL << 26),
49 Feature_isGFX9 = (1ULL << 23),
50 Feature_isCIVI = (1ULL << 21),
51 Feature_HasFlatAddressSpace = (1ULL << 6),
52 Feature_HasFlatGlobalInsts = (1ULL << 7),
53 Feature_HasFlatScratchInsts = (1ULL << 8),
54 Feature_HasD16LoadStore = (1ULL << 3),
55 Feature_HasUnpackedD16VMem = (1ULL << 16),
56 Feature_HasPackedD16VMem = (1ULL << 12),
57 Feature_HasDSAddTid = (1ULL << 5),
58 Feature_HasAddNoCarryInsts = (1ULL << 2),
59 Feature_NotHasAddNoCarryInsts = (1ULL << 19),
60 Feature_Has16BitInsts = (1ULL << 1),
61 Feature_HasVOP3PInsts = (1ULL << 18),
62 Feature_HasSDWA = (1ULL << 13),
63 Feature_HasSDWA9 = (1ULL << 14),
64 Feature_HasDPP = (1ULL << 4),
65 Feature_HasIntClamp = (1ULL << 9),
66 Feature_HasMadMixInsts = (1ULL << 10),
67 Feature_HasScalarAtomics = (1ULL << 15),
68 Feature_isCIOnly = (1ULL << 20),
69 Feature_isVIOnly = (1ULL << 27),
70 Feature_DisableInst = (1ULL << 0),
71 Feature_isGCN = (1ULL << 22),
72 Feature_isSI = (1ULL << 24),
73 Feature_HasVGPRIndexMode = (1ULL << 17),
74 Feature_HasMovrel = (1ULL << 11),
75 Feature_None = 0
76};
77
78#endif // GET_REGISTER_MATCHER
79
80
81#ifdef GET_SUBTARGET_FEATURE_NAME
82#undef GET_SUBTARGET_FEATURE_NAME
83
84// User-level names for subtarget features that participate in
85// instruction matching.
86static const char *getSubtargetFeatureName(uint64_t Val) {
87 switch(Val) {
88 case Feature_isSICI: return "";
89 case Feature_isVI: return "";
90 case Feature_isGFX9: return "";
91 case Feature_isCIVI: return "";
92 case Feature_HasFlatAddressSpace: return "";
93 case Feature_HasFlatGlobalInsts: return "";
94 case Feature_HasFlatScratchInsts: return "";
95 case Feature_HasD16LoadStore: return "";
96 case Feature_HasUnpackedD16VMem: return "";
97 case Feature_HasPackedD16VMem: return "";
98 case Feature_HasDSAddTid: return "";
99 case Feature_HasAddNoCarryInsts: return "";
100 case Feature_NotHasAddNoCarryInsts: return "";
101 case Feature_Has16BitInsts: return "";
102 case Feature_HasVOP3PInsts: return "";
103 case Feature_HasSDWA: return "";
104 case Feature_HasSDWA9: return "";
105 case Feature_HasDPP: return "";
106 case Feature_HasIntClamp: return "";
107 case Feature_HasMadMixInsts: return "";
108 case Feature_HasScalarAtomics: return "";
109 case Feature_isCIOnly: return "";
110 case Feature_isVIOnly: return "";
111 case Feature_DisableInst: return "";
112 case Feature_isGCN: return "";
113 case Feature_isSI: return "";
114 case Feature_HasVGPRIndexMode: return "";
115 case Feature_HasMovrel: return "";
116 default: return "(unknown)";
117 }
118}
119
120#endif // GET_SUBTARGET_FEATURE_NAME
121
122
123#ifdef GET_MATCHER_IMPLEMENTATION
124#undef GET_MATCHER_IMPLEMENTATION
125
126static void applyMnemonicAliases(StringRef &Mnemonic, uint64_t Features, unsigned VariantID) {
127 switch (VariantID) {
128 case 0:
129 switch (Mnemonic.size()) {
130 default: break;
131 case 9: // 1 string to match.
132 if (memcmp(Mnemonic.data()+0, "v_nop_e32", 9) != 0)
133 break;
134 Mnemonic = "v_nop"; // "v_nop_e32"
135 return;
136 case 10: // 1 string to match.
137 if (memcmp(Mnemonic.data()+0, "v_swap_b32", 10) != 0)
138 break;
139 Mnemonic = "v_swap_b32"; // "v_swap_b32"
140 return;
141 case 11: // 4 strings to match.
142 if (memcmp(Mnemonic.data()+0, "v_mad", 5) != 0)
143 break;
144 switch (Mnemonic[5]) {
145 default: break;
146 case 'a': // 2 strings to match.
147 if (memcmp(Mnemonic.data()+6, "k_f", 3) != 0)
148 break;
149 switch (Mnemonic[9]) {
150 default: break;
151 case '1': // 1 string to match.
152 if (Mnemonic[10] != '6')
153 break;
154 Mnemonic = "v_madak_f16"; // "v_madak_f16"
155 return;
156 case '3': // 1 string to match.
157 if (Mnemonic[10] != '2')
158 break;
159 Mnemonic = "v_madak_f32"; // "v_madak_f32"
160 return;
161 }
162 break;
163 case 'm': // 2 strings to match.
164 if (memcmp(Mnemonic.data()+6, "k_f", 3) != 0)
165 break;
166 switch (Mnemonic[9]) {
167 default: break;
168 case '1': // 1 string to match.
169 if (Mnemonic[10] != '6')
170 break;
171 Mnemonic = "v_madmk_f16"; // "v_madmk_f16"
172 return;
173 case '3': // 1 string to match.
174 if (Mnemonic[10] != '2')
175 break;
176 Mnemonic = "v_madmk_f32"; // "v_madmk_f32"
177 return;
178 }
179 break;
180 }
181 break;
182 case 12: // 1 string to match.
183 if (memcmp(Mnemonic.data()+0, "v_or_b32_e32", 12) != 0)
184 break;
185 Mnemonic = "v_or_b32"; // "v_or_b32_e32"
186 return;
187 case 13: // 46 strings to match.
188 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
189 break;
190 switch (Mnemonic[2]) {
191 default: break;
192 case 'a': // 6 strings to match.
193 switch (Mnemonic[3]) {
194 default: break;
195 case 'd': // 5 strings to match.
196 if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
197 break;
198 switch (Mnemonic[6]) {
199 default: break;
200 case 'f': // 2 strings to match.
201 switch (Mnemonic[7]) {
202 default: break;
203 case '1': // 1 string to match.
204 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
205 break;
206 Mnemonic = "v_add_f16"; // "v_add_f16_e32"
207 return;
208 case '3': // 1 string to match.
209 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
210 break;
211 Mnemonic = "v_add_f32"; // "v_add_f32_e32"
212 return;
213 }
214 break;
215 case 'i': // 1 string to match.
216 if (memcmp(Mnemonic.data()+7, "32_e32", 6) != 0)
217 break;
218 Mnemonic = "v_add_i32"; // "v_add_i32_e32"
219 return;
220 case 'u': // 2 strings to match.
221 switch (Mnemonic[7]) {
222 default: break;
223 case '1': // 1 string to match.
224 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
225 break;
226 Mnemonic = "v_add_u16"; // "v_add_u16_e32"
227 return;
228 case '3': // 1 string to match.
229 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
230 break;
231 Mnemonic = "v_add_u32"; // "v_add_u32_e32"
232 return;
233 }
234 break;
235 }
236 break;
237 case 'n': // 1 string to match.
238 if (memcmp(Mnemonic.data()+4, "d_b32_e32", 9) != 0)
239 break;
240 Mnemonic = "v_and_b32"; // "v_and_b32_e32"
241 return;
242 }
243 break;
244 case 'b': // 1 string to match.
245 if (memcmp(Mnemonic.data()+3, "fm_b32_e32", 10) != 0)
246 break;
247 Mnemonic = "v_bfm_b32"; // "v_bfm_b32_e32"
248 return;
249 case 'c': // 3 strings to match.
250 switch (Mnemonic[3]) {
251 default: break;
252 case 'l': // 1 string to match.
253 if (memcmp(Mnemonic.data()+4, "rexcp_e32", 9) != 0)
254 break;
255 Mnemonic = "v_clrexcp"; // "v_clrexcp_e32"
256 return;
257 case 'o': // 2 strings to match.
258 if (memcmp(Mnemonic.data()+4, "s_f", 3) != 0)
259 break;
260 switch (Mnemonic[7]) {
261 default: break;
262 case '1': // 1 string to match.
263 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
264 break;
265 Mnemonic = "v_cos_f16"; // "v_cos_f16_e32"
266 return;
267 case '3': // 1 string to match.
268 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
269 break;
270 Mnemonic = "v_cos_f32"; // "v_cos_f32_e32"
271 return;
272 }
273 break;
274 }
275 break;
276 case 'e': // 2 strings to match.
277 if (memcmp(Mnemonic.data()+3, "xp_f", 4) != 0)
278 break;
279 switch (Mnemonic[7]) {
280 default: break;
281 case '1': // 1 string to match.
282 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
283 break;
284 Mnemonic = "v_exp_f16"; // "v_exp_f16_e32"
285 return;
286 case '3': // 1 string to match.
287 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
288 break;
289 Mnemonic = "v_exp_f32"; // "v_exp_f32_e32"
290 return;
291 }
292 break;
293 case 'l': // 2 strings to match.
294 if (memcmp(Mnemonic.data()+3, "og_f", 4) != 0)
295 break;
296 switch (Mnemonic[7]) {
297 default: break;
298 case '1': // 1 string to match.
299 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
300 break;
301 Mnemonic = "v_log_f16"; // "v_log_f16_e32"
302 return;
303 case '3': // 1 string to match.
304 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
305 break;
306 Mnemonic = "v_log_f32"; // "v_log_f32_e32"
307 return;
308 }
309 break;
310 case 'm': // 17 strings to match.
311 switch (Mnemonic[3]) {
312 default: break;
313 case 'a': // 8 strings to match.
314 switch (Mnemonic[4]) {
315 default: break;
316 case 'c': // 2 strings to match.
317 if (memcmp(Mnemonic.data()+5, "_f", 2) != 0)
318 break;
319 switch (Mnemonic[7]) {
320 default: break;
321 case '1': // 1 string to match.
322 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
323 break;
324 Mnemonic = "v_mac_f16"; // "v_mac_f16_e32"
325 return;
326 case '3': // 1 string to match.
327 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
328 break;
329 Mnemonic = "v_mac_f32"; // "v_mac_f32_e32"
330 return;
331 }
332 break;
333 case 'x': // 6 strings to match.
334 if (Mnemonic[5] != '_')
335 break;
336 switch (Mnemonic[6]) {
337 default: break;
338 case 'f': // 2 strings to match.
339 switch (Mnemonic[7]) {
340 default: break;
341 case '1': // 1 string to match.
342 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
343 break;
344 Mnemonic = "v_max_f16"; // "v_max_f16_e32"
345 return;
346 case '3': // 1 string to match.
347 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
348 break;
349 Mnemonic = "v_max_f32"; // "v_max_f32_e32"
350 return;
351 }
352 break;
353 case 'i': // 2 strings to match.
354 switch (Mnemonic[7]) {
355 default: break;
356 case '1': // 1 string to match.
357 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
358 break;
359 Mnemonic = "v_max_i16"; // "v_max_i16_e32"
360 return;
361 case '3': // 1 string to match.
362 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
363 break;
364 Mnemonic = "v_max_i32"; // "v_max_i32_e32"
365 return;
366 }
367 break;
368 case 'u': // 2 strings to match.
369 switch (Mnemonic[7]) {
370 default: break;
371 case '1': // 1 string to match.
372 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
373 break;
374 Mnemonic = "v_max_u16"; // "v_max_u16_e32"
375 return;
376 case '3': // 1 string to match.
377 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
378 break;
379 Mnemonic = "v_max_u32"; // "v_max_u32_e32"
380 return;
381 }
382 break;
383 }
384 break;
385 }
386 break;
387 case 'i': // 6 strings to match.
388 if (memcmp(Mnemonic.data()+4, "n_", 2) != 0)
389 break;
390 switch (Mnemonic[6]) {
391 default: break;
392 case 'f': // 2 strings to match.
393 switch (Mnemonic[7]) {
394 default: break;
395 case '1': // 1 string to match.
396 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
397 break;
398 Mnemonic = "v_min_f16"; // "v_min_f16_e32"
399 return;
400 case '3': // 1 string to match.
401 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
402 break;
403 Mnemonic = "v_min_f32"; // "v_min_f32_e32"
404 return;
405 }
406 break;
407 case 'i': // 2 strings to match.
408 switch (Mnemonic[7]) {
409 default: break;
410 case '1': // 1 string to match.
411 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
412 break;
413 Mnemonic = "v_min_i16"; // "v_min_i16_e32"
414 return;
415 case '3': // 1 string to match.
416 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
417 break;
418 Mnemonic = "v_min_i32"; // "v_min_i32_e32"
419 return;
420 }
421 break;
422 case 'u': // 2 strings to match.
423 switch (Mnemonic[7]) {
424 default: break;
425 case '1': // 1 string to match.
426 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
427 break;
428 Mnemonic = "v_min_u16"; // "v_min_u16_e32"
429 return;
430 case '3': // 1 string to match.
431 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
432 break;
433 Mnemonic = "v_min_u32"; // "v_min_u32_e32"
434 return;
435 }
436 break;
437 }
438 break;
439 case 'o': // 1 string to match.
440 if (memcmp(Mnemonic.data()+4, "v_b32_e32", 9) != 0)
441 break;
442 Mnemonic = "v_mov_b32"; // "v_mov_b32_e32"
443 return;
444 case 'u': // 2 strings to match.
445 if (memcmp(Mnemonic.data()+4, "l_f", 3) != 0)
446 break;
447 switch (Mnemonic[7]) {
448 default: break;
449 case '1': // 1 string to match.
450 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
451 break;
452 Mnemonic = "v_mul_f16"; // "v_mul_f16_e32"
453 return;
454 case '3': // 1 string to match.
455 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
456 break;
457 Mnemonic = "v_mul_f32"; // "v_mul_f32_e32"
458 return;
459 }
460 break;
461 }
462 break;
463 case 'n': // 1 string to match.
464 if (memcmp(Mnemonic.data()+3, "ot_b32_e32", 10) != 0)
465 break;
466 Mnemonic = "v_not_b32"; // "v_not_b32_e32"
467 return;
468 case 'r': // 6 strings to match.
469 switch (Mnemonic[3]) {
470 default: break;
471 case 'c': // 3 strings to match.
472 if (memcmp(Mnemonic.data()+4, "p_f", 3) != 0)
473 break;
474 switch (Mnemonic[7]) {
475 default: break;
476 case '1': // 1 string to match.
477 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
478 break;
479 Mnemonic = "v_rcp_f16"; // "v_rcp_f16_e32"
480 return;
481 case '3': // 1 string to match.
482 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
483 break;
484 Mnemonic = "v_rcp_f32"; // "v_rcp_f32_e32"
485 return;
486 case '6': // 1 string to match.
487 if (memcmp(Mnemonic.data()+8, "4_e32", 5) != 0)
488 break;
489 Mnemonic = "v_rcp_f64"; // "v_rcp_f64_e32"
490 return;
491 }
492 break;
493 case 's': // 3 strings to match.
494 if (memcmp(Mnemonic.data()+4, "q_f", 3) != 0)
495 break;
496 switch (Mnemonic[7]) {
497 default: break;
498 case '1': // 1 string to match.
499 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
500 break;
501 Mnemonic = "v_rsq_f16"; // "v_rsq_f16_e32"
502 return;
503 case '3': // 1 string to match.
504 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
505 break;
506 Mnemonic = "v_rsq_f32"; // "v_rsq_f32_e32"
507 return;
508 case '6': // 1 string to match.
509 if (memcmp(Mnemonic.data()+8, "4_e32", 5) != 0)
510 break;
511 Mnemonic = "v_rsq_f64"; // "v_rsq_f64_e32"
512 return;
513 }
514 break;
515 }
516 break;
517 case 's': // 7 strings to match.
518 switch (Mnemonic[3]) {
519 default: break;
520 case 'i': // 2 strings to match.
521 if (memcmp(Mnemonic.data()+4, "n_f", 3) != 0)
522 break;
523 switch (Mnemonic[7]) {
524 default: break;
525 case '1': // 1 string to match.
526 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
527 break;
528 Mnemonic = "v_sin_f16"; // "v_sin_f16_e32"
529 return;
530 case '3': // 1 string to match.
531 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
532 break;
533 Mnemonic = "v_sin_f32"; // "v_sin_f32_e32"
534 return;
535 }
536 break;
537 case 'u': // 5 strings to match.
538 if (memcmp(Mnemonic.data()+4, "b_", 2) != 0)
539 break;
540 switch (Mnemonic[6]) {
541 default: break;
542 case 'f': // 2 strings to match.
543 switch (Mnemonic[7]) {
544 default: break;
545 case '1': // 1 string to match.
546 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
547 break;
548 Mnemonic = "v_sub_f16"; // "v_sub_f16_e32"
549 return;
550 case '3': // 1 string to match.
551 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
552 break;
553 Mnemonic = "v_sub_f32"; // "v_sub_f32_e32"
554 return;
555 }
556 break;
557 case 'i': // 1 string to match.
558 if (memcmp(Mnemonic.data()+7, "32_e32", 6) != 0)
559 break;
560 Mnemonic = "v_sub_i32"; // "v_sub_i32_e32"
561 return;
562 case 'u': // 2 strings to match.
563 switch (Mnemonic[7]) {
564 default: break;
565 case '1': // 1 string to match.
566 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
567 break;
568 Mnemonic = "v_sub_u16"; // "v_sub_u16_e32"
569 return;
570 case '3': // 1 string to match.
571 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
572 break;
573 Mnemonic = "v_sub_u32"; // "v_sub_u32_e32"
574 return;
575 }
576 break;
577 }
578 break;
579 }
580 break;
581 case 'x': // 1 string to match.
582 if (memcmp(Mnemonic.data()+3, "or_b32_e32", 10) != 0)
583 break;
584 Mnemonic = "v_xor_b32"; // "v_xor_b32_e32"
585 return;
586 }
587 break;
588 case 14: // 15 strings to match.
589 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
590 break;
591 switch (Mnemonic[2]) {
592 default: break;
593 case 'a': // 2 strings to match.
594 switch (Mnemonic[3]) {
595 default: break;
596 case 'd': // 1 string to match.
597 if (memcmp(Mnemonic.data()+4, "dc_u32_e32", 10) != 0)
598 break;
599 Mnemonic = "v_addc_u32"; // "v_addc_u32_e32"
600 return;
601 case 's': // 1 string to match.
602 if (memcmp(Mnemonic.data()+4, "hr_i32_e32", 10) != 0)
603 break;
604 Mnemonic = "v_ashr_i32"; // "v_ashr_i32_e32"
605 return;
606 }
607 break;
608 case 'c': // 3 strings to match.
609 if (memcmp(Mnemonic.data()+3, "eil_f", 5) != 0)
610 break;
611 switch (Mnemonic[8]) {
612 default: break;
613 case '1': // 1 string to match.
614 if (memcmp(Mnemonic.data()+9, "6_e32", 5) != 0)
615 break;
616 Mnemonic = "v_ceil_f16"; // "v_ceil_f16_e32"
617 return;
618 case '3': // 1 string to match.
619 if (memcmp(Mnemonic.data()+9, "2_e32", 5) != 0)
620 break;
621 Mnemonic = "v_ceil_f32"; // "v_ceil_f32_e32"
622 return;
623 case '6': // 1 string to match.
624 if (memcmp(Mnemonic.data()+9, "4_e32", 5) != 0)
625 break;
626 Mnemonic = "v_ceil_f64"; // "v_ceil_f64_e32"
627 return;
628 }
629 break;
630 case 'f': // 3 strings to match.
631 if (memcmp(Mnemonic.data()+3, "fb", 2) != 0)
632 break;
633 switch (Mnemonic[5]) {
634 default: break;
635 case 'h': // 2 strings to match.
636 if (Mnemonic[6] != '_')
637 break;
638 switch (Mnemonic[7]) {
639 default: break;
640 case 'i': // 1 string to match.
641 if (memcmp(Mnemonic.data()+8, "32_e32", 6) != 0)
642 break;
643 Mnemonic = "v_ffbh_i32"; // "v_ffbh_i32_e32"
644 return;
645 case 'u': // 1 string to match.
646 if (memcmp(Mnemonic.data()+8, "32_e32", 6) != 0)
647 break;
648 Mnemonic = "v_ffbh_u32"; // "v_ffbh_u32_e32"
649 return;
650 }
651 break;
652 case 'l': // 1 string to match.
653 if (memcmp(Mnemonic.data()+6, "_b32_e32", 8) != 0)
654 break;
655 Mnemonic = "v_ffbl_b32"; // "v_ffbl_b32_e32"
656 return;
657 }
658 break;
659 case 'l': // 2 strings to match.
660 if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
661 break;
662 switch (Mnemonic[5]) {
663 default: break;
664 case 'l': // 1 string to match.
665 if (memcmp(Mnemonic.data()+6, "_b32_e32", 8) != 0)
666 break;
667 Mnemonic = "v_lshl_b32"; // "v_lshl_b32_e32"
668 return;
669 case 'r': // 1 string to match.
670 if (memcmp(Mnemonic.data()+6, "_b32_e32", 8) != 0)
671 break;
672 Mnemonic = "v_lshr_b32"; // "v_lshr_b32_e32"
673 return;
674 }
675 break;
676 case 'r': // 1 string to match.
677 if (memcmp(Mnemonic.data()+3, "eadlane_b32", 11) != 0)
678 break;
679 Mnemonic = "v_readlane_b32"; // "v_readlane_b32"
680 return;
681 case 's': // 4 strings to match.
682 switch (Mnemonic[3]) {
683 default: break;
684 case 'q': // 3 strings to match.
685 if (memcmp(Mnemonic.data()+4, "rt_f", 4) != 0)
686 break;
687 switch (Mnemonic[8]) {
688 default: break;
689 case '1': // 1 string to match.
690 if (memcmp(Mnemonic.data()+9, "6_e32", 5) != 0)
691 break;
692 Mnemonic = "v_sqrt_f16"; // "v_sqrt_f16_e32"
693 return;
694 case '3': // 1 string to match.
695 if (memcmp(Mnemonic.data()+9, "2_e32", 5) != 0)
696 break;
697 Mnemonic = "v_sqrt_f32"; // "v_sqrt_f32_e32"
698 return;
699 case '6': // 1 string to match.
700 if (memcmp(Mnemonic.data()+9, "4_e32", 5) != 0)
701 break;
702 Mnemonic = "v_sqrt_f64"; // "v_sqrt_f64_e32"
703 return;
704 }
705 break;
706 case 'u': // 1 string to match.
707 if (memcmp(Mnemonic.data()+4, "bb_u32_e32", 10) != 0)
708 break;
709 Mnemonic = "v_subb_u32"; // "v_subb_u32_e32"
710 return;
711 }
712 break;
713 }
714 break;
715 case 15: // 16 strings to match.
716 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
717 break;
718 switch (Mnemonic[2]) {
719 default: break;
720 case 'b': // 1 string to match.
721 if (memcmp(Mnemonic.data()+3, "frev_b32_e32", 12) != 0)
722 break;
723 Mnemonic = "v_bfrev_b32"; // "v_bfrev_b32_e32"
724 return;
725 case 'f': // 6 strings to match.
726 switch (Mnemonic[3]) {
727 default: break;
728 case 'l': // 3 strings to match.
729 if (memcmp(Mnemonic.data()+4, "oor_f", 5) != 0)
730 break;
731 switch (Mnemonic[9]) {
732 default: break;
733 case '1': // 1 string to match.
734 if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
735 break;
736 Mnemonic = "v_floor_f16"; // "v_floor_f16_e32"
737 return;
738 case '3': // 1 string to match.
739 if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
740 break;
741 Mnemonic = "v_floor_f32"; // "v_floor_f32_e32"
742 return;
743 case '6': // 1 string to match.
744 if (memcmp(Mnemonic.data()+10, "4_e32", 5) != 0)
745 break;
746 Mnemonic = "v_floor_f64"; // "v_floor_f64_e32"
747 return;
748 }
749 break;
750 case 'r': // 3 strings to match.
751 if (memcmp(Mnemonic.data()+4, "act_f", 5) != 0)
752 break;
753 switch (Mnemonic[9]) {
754 default: break;
755 case '1': // 1 string to match.
756 if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
757 break;
758 Mnemonic = "v_fract_f16"; // "v_fract_f16_e32"
759 return;
760 case '3': // 1 string to match.
761 if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
762 break;
763 Mnemonic = "v_fract_f32"; // "v_fract_f32_e32"
764 return;
765 case '6': // 1 string to match.
766 if (memcmp(Mnemonic.data()+10, "4_e32", 5) != 0)
767 break;
768 Mnemonic = "v_fract_f64"; // "v_fract_f64_e32"
769 return;
770 }
771 break;
772 }
773 break;
774 case 'l': // 2 strings to match.
775 if (memcmp(Mnemonic.data()+3, "dexp_f", 6) != 0)
776 break;
777 switch (Mnemonic[9]) {
778 default: break;
779 case '1': // 1 string to match.
780 if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
781 break;
782 Mnemonic = "v_ldexp_f16"; // "v_ldexp_f16_e32"
783 return;
784 case '3': // 1 string to match.
785 if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
786 break;
787 Mnemonic = "v_ldexp_f32"; // "v_ldexp_f32_e32"
788 return;
789 }
790 break;
791 case 'r': // 3 strings to match.
792 if (memcmp(Mnemonic.data()+3, "ndne_f", 6) != 0)
793 break;
794 switch (Mnemonic[9]) {
795 default: break;
796 case '1': // 1 string to match.
797 if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
798 break;
799 Mnemonic = "v_rndne_f16"; // "v_rndne_f16_e32"
800 return;
801 case '3': // 1 string to match.
802 if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
803 break;
804 Mnemonic = "v_rndne_f32"; // "v_rndne_f32_e32"
805 return;
806 case '6': // 1 string to match.
807 if (memcmp(Mnemonic.data()+10, "4_e32", 5) != 0)
808 break;
809 Mnemonic = "v_rndne_f64"; // "v_rndne_f64_e32"
810 return;
811 }
812 break;
813 case 't': // 3 strings to match.
814 if (memcmp(Mnemonic.data()+3, "runc_f", 6) != 0)
815 break;
816 switch (Mnemonic[9]) {
817 default: break;
818 case '1': // 1 string to match.
819 if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
820 break;
821 Mnemonic = "v_trunc_f16"; // "v_trunc_f16_e32"
822 return;
823 case '3': // 1 string to match.
824 if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
825 break;
826 Mnemonic = "v_trunc_f32"; // "v_trunc_f32_e32"
827 return;
828 case '6': // 1 string to match.
829 if (memcmp(Mnemonic.data()+10, "4_e32", 5) != 0)
830 break;
831 Mnemonic = "v_trunc_f64"; // "v_trunc_f64_e32"
832 return;
833 }
834 break;
835 case 'w': // 1 string to match.
836 if (memcmp(Mnemonic.data()+3, "ritelane_b32", 12) != 0)
837 break;
838 Mnemonic = "v_writelane_b32"; // "v_writelane_b32"
839 return;
840 }
841 break;
842 case 16: // 6 strings to match.
843 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
844 break;
845 switch (Mnemonic[2]) {
846 default: break;
847 case 'm': // 1 string to match.
848 if (memcmp(Mnemonic.data()+3, "ul_lo_u16_e32", 13) != 0)
849 break;
850 Mnemonic = "v_mul_lo_u16"; // "v_mul_lo_u16_e32"
851 return;
852 case 's': // 5 strings to match.
853 if (memcmp(Mnemonic.data()+3, "ubrev_", 6) != 0)
854 break;
855 switch (Mnemonic[9]) {
856 default: break;
857 case 'f': // 2 strings to match.
858 switch (Mnemonic[10]) {
859 default: break;
860 case '1': // 1 string to match.
861 if (memcmp(Mnemonic.data()+11, "6_e32", 5) != 0)
862 break;
863 Mnemonic = "v_subrev_f16"; // "v_subrev_f16_e32"
864 return;
865 case '3': // 1 string to match.
866 if (memcmp(Mnemonic.data()+11, "2_e32", 5) != 0)
867 break;
868 Mnemonic = "v_subrev_f32"; // "v_subrev_f32_e32"
869 return;
870 }
871 break;
872 case 'i': // 1 string to match.
873 if (memcmp(Mnemonic.data()+10, "32_e32", 6) != 0)
874 break;
875 Mnemonic = "v_subrev_i32"; // "v_subrev_i32_e32"
876 return;
877 case 'u': // 2 strings to match.
878 switch (Mnemonic[10]) {
879 default: break;
880 case '1': // 1 string to match.
881 if (memcmp(Mnemonic.data()+11, "6_e32", 5) != 0)
882 break;
883 Mnemonic = "v_subrev_u16"; // "v_subrev_u16_e32"
884 return;
885 case '3': // 1 string to match.
886 if (memcmp(Mnemonic.data()+11, "2_e32", 5) != 0)
887 break;
888 Mnemonic = "v_subrev_u32"; // "v_subrev_u32_e32"
889 return;
890 }
891 break;
892 }
893 break;
894 }
895 break;
896 case 17: // 29 strings to match.
897 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
898 break;
899 switch (Mnemonic[2]) {
900 default: break;
901 case 'a': // 2 strings to match.
902 if (memcmp(Mnemonic.data()+3, "shrrev_i", 8) != 0)
903 break;
904 switch (Mnemonic[11]) {
905 default: break;
906 case '1': // 1 string to match.
907 if (memcmp(Mnemonic.data()+12, "6_e32", 5) != 0)
908 break;
909 Mnemonic = "v_ashrrev_i16"; // "v_ashrrev_i16_e32"
910 return;
911 case '3': // 1 string to match.
912 if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
913 break;
914 Mnemonic = "v_ashrrev_i32"; // "v_ashrrev_i32_e32"
915 return;
916 }
917 break;
918 case 'c': // 17 strings to match.
919 switch (Mnemonic[3]) {
920 default: break;
921 case 'n': // 1 string to match.
922 if (memcmp(Mnemonic.data()+4, "dmask_b32_e32", 13) != 0)
923 break;
924 Mnemonic = "v_cndmask_b32"; // "v_cndmask_b32_e32"
925 return;
926 case 'v': // 16 strings to match.
927 if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
928 break;
929 switch (Mnemonic[6]) {
930 default: break;
931 case 'f': // 10 strings to match.
932 switch (Mnemonic[7]) {
933 default: break;
934 case '1': // 3 strings to match.
935 if (memcmp(Mnemonic.data()+8, "6_", 2) != 0)
936 break;
937 switch (Mnemonic[10]) {
938 default: break;
939 case 'f': // 1 string to match.
940 if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
941 break;
942 Mnemonic = "v_cvt_f16_f32"; // "v_cvt_f16_f32_e32"
943 return;
944 case 'i': // 1 string to match.
945 if (memcmp(Mnemonic.data()+11, "16_e32", 6) != 0)
946 break;
947 Mnemonic = "v_cvt_f16_i16"; // "v_cvt_f16_i16_e32"
948 return;
949 case 'u': // 1 string to match.
950 if (memcmp(Mnemonic.data()+11, "16_e32", 6) != 0)
951 break;
952 Mnemonic = "v_cvt_f16_u16"; // "v_cvt_f16_u16_e32"
953 return;
954 }
955 break;
956 case '3': // 4 strings to match.
957 if (memcmp(Mnemonic.data()+8, "2_", 2) != 0)
958 break;
959 switch (Mnemonic[10]) {
960 default: break;
961 case 'f': // 2 strings to match.
962 switch (Mnemonic[11]) {
963 default: break;
964 case '1': // 1 string to match.
965 if (memcmp(Mnemonic.data()+12, "6_e32", 5) != 0)
966 break;
967 Mnemonic = "v_cvt_f32_f16"; // "v_cvt_f32_f16_e32"
968 return;
969 case '6': // 1 string to match.
970 if (memcmp(Mnemonic.data()+12, "4_e32", 5) != 0)
971 break;
972 Mnemonic = "v_cvt_f32_f64"; // "v_cvt_f32_f64_e32"
973 return;
974 }
975 break;
976 case 'i': // 1 string to match.
977 if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
978 break;
979 Mnemonic = "v_cvt_f32_i32"; // "v_cvt_f32_i32_e32"
980 return;
981 case 'u': // 1 string to match.
982 if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
983 break;
984 Mnemonic = "v_cvt_f32_u32"; // "v_cvt_f32_u32_e32"
985 return;
986 }
987 break;
988 case '6': // 3 strings to match.
989 if (memcmp(Mnemonic.data()+8, "4_", 2) != 0)
990 break;
991 switch (Mnemonic[10]) {
992 default: break;
993 case 'f': // 1 string to match.
994 if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
995 break;
996 Mnemonic = "v_cvt_f64_f32"; // "v_cvt_f64_f32_e32"
997 return;
998 case 'i': // 1 string to match.
999 if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
1000 break;
1001 Mnemonic = "v_cvt_f64_i32"; // "v_cvt_f64_i32_e32"
1002 return;
1003 case 'u': // 1 string to match.
1004 if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
1005 break;
1006 Mnemonic = "v_cvt_f64_u32"; // "v_cvt_f64_u32_e32"
1007 return;
1008 }
1009 break;
1010 }
1011 break;
1012 case 'i': // 3 strings to match.
1013 switch (Mnemonic[7]) {
1014 default: break;
1015 case '1': // 1 string to match.
1016 if (memcmp(Mnemonic.data()+8, "6_f16_e32", 9) != 0)
1017 break;
1018 Mnemonic = "v_cvt_i16_f16"; // "v_cvt_i16_f16_e32"
1019 return;
1020 case '3': // 2 strings to match.
1021 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
1022 break;
1023 switch (Mnemonic[11]) {
1024 default: break;
1025 case '3': // 1 string to match.
1026 if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
1027 break;
1028 Mnemonic = "v_cvt_i32_f32"; // "v_cvt_i32_f32_e32"
1029 return;
1030 case '6': // 1 string to match.
1031 if (memcmp(Mnemonic.data()+12, "4_e32", 5) != 0)
1032 break;
1033 Mnemonic = "v_cvt_i32_f64"; // "v_cvt_i32_f64_e32"
1034 return;
1035 }
1036 break;
1037 }
1038 break;
1039 case 'u': // 3 strings to match.
1040 switch (Mnemonic[7]) {
1041 default: break;
1042 case '1': // 1 string to match.
1043 if (memcmp(Mnemonic.data()+8, "6_f16_e32", 9) != 0)
1044 break;
1045 Mnemonic = "v_cvt_u16_f16"; // "v_cvt_u16_f16_e32"
1046 return;
1047 case '3': // 2 strings to match.
1048 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
1049 break;
1050 switch (Mnemonic[11]) {
1051 default: break;
1052 case '3': // 1 string to match.
1053 if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
1054 break;
1055 Mnemonic = "v_cvt_u32_f32"; // "v_cvt_u32_f32_e32"
1056 return;
1057 case '6': // 1 string to match.
1058 if (memcmp(Mnemonic.data()+12, "4_e32", 5) != 0)
1059 break;
1060 Mnemonic = "v_cvt_u32_f64"; // "v_cvt_u32_f64_e32"
1061 return;
1062 }
1063 break;
1064 }
1065 break;
1066 }
1067 break;
1068 }
1069 break;
1070 case 'l': // 4 strings to match.
1071 if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
1072 break;
1073 switch (Mnemonic[5]) {
1074 default: break;
1075 case 'l': // 2 strings to match.
1076 if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
1077 break;
1078 switch (Mnemonic[11]) {
1079 default: break;
1080 case '1': // 1 string to match.
1081 if (memcmp(Mnemonic.data()+12, "6_e32", 5) != 0)
1082 break;
1083 Mnemonic = "v_lshlrev_b16"; // "v_lshlrev_b16_e32"
1084 return;
1085 case '3': // 1 string to match.
1086 if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
1087 break;
1088 Mnemonic = "v_lshlrev_b32"; // "v_lshlrev_b32_e32"
1089 return;
1090 }
1091 break;
1092 case 'r': // 2 strings to match.
1093 if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
1094 break;
1095 switch (Mnemonic[11]) {
1096 default: break;
1097 case '1': // 1 string to match.
1098 if (memcmp(Mnemonic.data()+12, "6_e32", 5) != 0)
1099 break;
1100 Mnemonic = "v_lshrrev_b16"; // "v_lshrrev_b16_e32"
1101 return;
1102 case '3': // 1 string to match.
1103 if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
1104 break;
1105 Mnemonic = "v_lshrrev_b32"; // "v_lshrrev_b32_e32"
1106 return;
1107 }
1108 break;
1109 }
1110 break;
1111 case 'm': // 5 strings to match.
1112 switch (Mnemonic[3]) {
1113 default: break;
1114 case 'o': // 3 strings to match.
1115 if (Mnemonic[4] != 'v')
1116 break;
1117 switch (Mnemonic[5]) {
1118 default: break;
1119 case '_': // 1 string to match.
1120 if (memcmp(Mnemonic.data()+6, "fed_b32_e32", 11) != 0)
1121 break;
1122 Mnemonic = "v_mov_fed_b32"; // "v_mov_fed_b32_e32"
1123 return;
1124 case 'r': // 2 strings to match.
1125 if (memcmp(Mnemonic.data()+6, "el", 2) != 0)
1126 break;
1127 switch (Mnemonic[8]) {
1128 default: break;
1129 case 'd': // 1 string to match.
1130 if (memcmp(Mnemonic.data()+9, "_b32_e32", 8) != 0)
1131 break;
1132 Mnemonic = "v_movreld_b32"; // "v_movreld_b32_e32"
1133 return;
1134 case 's': // 1 string to match.
1135 if (memcmp(Mnemonic.data()+9, "_b32_e32", 8) != 0)
1136 break;
1137 Mnemonic = "v_movrels_b32"; // "v_movrels_b32_e32"
1138 return;
1139 }
1140 break;
1141 }
1142 break;
1143 case 'u': // 2 strings to match.
1144 if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
1145 break;
1146 switch (Mnemonic[6]) {
1147 default: break;
1148 case 'i': // 1 string to match.
1149 if (memcmp(Mnemonic.data()+7, "32_i24_e32", 10) != 0)
1150 break;
1151 Mnemonic = "v_mul_i32_i24"; // "v_mul_i32_i24_e32"
1152 return;
1153 case 'u': // 1 string to match.
1154 if (memcmp(Mnemonic.data()+7, "32_u24_e32", 10) != 0)
1155 break;
1156 Mnemonic = "v_mul_u32_u24"; // "v_mul_u32_u24_e32"
1157 return;
1158 }
1159 break;
1160 }
1161 break;
1162 case 's': // 1 string to match.
1163 if (memcmp(Mnemonic.data()+3, "ubbrev_u32_e32", 14) != 0)
1164 break;
1165 Mnemonic = "v_subbrev_u32"; // "v_subbrev_u32_e32"
1166 return;
1167 }
1168 break;
1169 case 18: // 2 strings to match.
1170 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
1171 break;
1172 switch (Mnemonic[2]) {
1173 default: break;
1174 case 'b': // 1 string to match.
1175 if (memcmp(Mnemonic.data()+3, "cnt_u32_b32_e32", 15) != 0)
1176 break;
1177 Mnemonic = "v_bcnt_u32_b32"; // "v_bcnt_u32_b32_e32"
1178 return;
1179 case 'm': // 1 string to match.
1180 if (memcmp(Mnemonic.data()+3, "ovrelsd_b32_e32", 15) != 0)
1181 break;
1182 Mnemonic = "v_movrelsd_b32"; // "v_movrelsd_b32_e32"
1183 return;
1184 }
1185 break;
1186 case 19: // 7 strings to match.
1187 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
1188 break;
1189 switch (Mnemonic[2]) {
1190 default: break;
1191 case 'l': // 1 string to match.
1192 if (memcmp(Mnemonic.data()+3, "og_clamp_f32_e32", 16) != 0)
1193 break;
1194 Mnemonic = "v_log_clamp_f32"; // "v_log_clamp_f32_e32"
1195 return;
1196 case 'r': // 5 strings to match.
1197 switch (Mnemonic[3]) {
1198 default: break;
1199 case 'c': // 3 strings to match.
1200 if (memcmp(Mnemonic.data()+4, "p_", 2) != 0)
1201 break;
1202 switch (Mnemonic[6]) {
1203 default: break;
1204 case 'c': // 2 strings to match.
1205 if (memcmp(Mnemonic.data()+7, "lamp_f", 6) != 0)
1206 break;
1207 switch (Mnemonic[13]) {
1208 default: break;
1209 case '3': // 1 string to match.
1210 if (memcmp(Mnemonic.data()+14, "2_e32", 5) != 0)
1211 break;
1212 Mnemonic = "v_rcp_clamp_f32"; // "v_rcp_clamp_f32_e32"
1213 return;
1214 case '6': // 1 string to match.
1215 if (memcmp(Mnemonic.data()+14, "4_e32", 5) != 0)
1216 break;
1217 Mnemonic = "v_rcp_clamp_f64"; // "v_rcp_clamp_f64_e32"
1218 return;
1219 }
1220 break;
1221 case 'i': // 1 string to match.
1222 if (memcmp(Mnemonic.data()+7, "flag_f32_e32", 12) != 0)
1223 break;
1224 Mnemonic = "v_rcp_iflag_f32"; // "v_rcp_iflag_f32_e32"
1225 return;
1226 }
1227 break;
1228 case 's': // 2 strings to match.
1229 if (memcmp(Mnemonic.data()+4, "q_clamp_f", 9) != 0)
1230 break;
1231 switch (Mnemonic[13]) {
1232 default: break;
1233 case '3': // 1 string to match.
1234 if (memcmp(Mnemonic.data()+14, "2_e32", 5) != 0)
1235 break;
1236 Mnemonic = "v_rsq_clamp_f32"; // "v_rsq_clamp_f32_e32"
1237 return;
1238 case '6': // 1 string to match.
1239 if (memcmp(Mnemonic.data()+14, "4_e32", 5) != 0)
1240 break;
1241 Mnemonic = "v_rsq_clamp_f64"; // "v_rsq_clamp_f64_e32"
1242 return;
1243 }
1244 break;
1245 }
1246 break;
1247 case 's': // 1 string to match.
1248 if (memcmp(Mnemonic.data()+3, "at_pk_u8_i16_e32", 16) != 0)
1249 break;
1250 Mnemonic = "v_sat_pk_u8_i16"; // "v_sat_pk_u8_i16_e32"
1251 return;
1252 }
1253 break;
1254 case 20: // 20 strings to match.
1255 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
1256 break;
1257 switch (Mnemonic[2]) {
1258 default: break;
1259 case 'c': // 7 strings to match.
1260 if (memcmp(Mnemonic.data()+3, "vt_", 3) != 0)
1261 break;
1262 switch (Mnemonic[6]) {
1263 default: break;
1264 case 'f': // 4 strings to match.
1265 if (memcmp(Mnemonic.data()+7, "32_ubyte", 8) != 0)
1266 break;
1267 switch (Mnemonic[15]) {
1268 default: break;
1269 case '0': // 1 string to match.
1270 if (memcmp(Mnemonic.data()+16, "_e32", 4) != 0)
1271 break;
1272 Mnemonic = "v_cvt_f32_ubyte0"; // "v_cvt_f32_ubyte0_e32"
1273 return;
1274 case '1': // 1 string to match.
1275 if (memcmp(Mnemonic.data()+16, "_e32", 4) != 0)
1276 break;
1277 Mnemonic = "v_cvt_f32_ubyte1"; // "v_cvt_f32_ubyte1_e32"
1278 return;
1279 case '2': // 1 string to match.
1280 if (memcmp(Mnemonic.data()+16, "_e32", 4) != 0)
1281 break;
1282 Mnemonic = "v_cvt_f32_ubyte2"; // "v_cvt_f32_ubyte2_e32"
1283 return;
1284 case '3': // 1 string to match.
1285 if (memcmp(Mnemonic.data()+16, "_e32", 4) != 0)
1286 break;
1287 Mnemonic = "v_cvt_f32_ubyte3"; // "v_cvt_f32_ubyte3_e32"
1288 return;
1289 }
1290 break;
1291 case 'o': // 1 string to match.
1292 if (memcmp(Mnemonic.data()+7, "ff_f32_i4_e32", 13) != 0)
1293 break;
1294 Mnemonic = "v_cvt_off_f32_i4"; // "v_cvt_off_f32_i4_e32"
1295 return;
1296 case 'p': // 2 strings to match.
1297 if (memcmp(Mnemonic.data()+7, "k_", 2) != 0)
1298 break;
1299 switch (Mnemonic[9]) {
1300 default: break;
1301 case 'i': // 1 string to match.
1302 if (memcmp(Mnemonic.data()+10, "16_i32_e32", 10) != 0)
1303 break;
1304 Mnemonic = "v_cvt_pk_i16_i32"; // "v_cvt_pk_i16_i32_e32"
1305 return;
1306 case 'u': // 1 string to match.
1307 if (memcmp(Mnemonic.data()+10, "16_u32_e32", 10) != 0)
1308 break;
1309 Mnemonic = "v_cvt_pk_u16_u32"; // "v_cvt_pk_u16_u32_e32"
1310 return;
1311 }
1312 break;
1313 }
1314 break;
1315 case 'e': // 1 string to match.
1316 if (memcmp(Mnemonic.data()+3, "xp_legacy_f32_e32", 17) != 0)
1317 break;
1318 Mnemonic = "v_exp_legacy_f32"; // "v_exp_legacy_f32_e32"
1319 return;
1320 case 'f': // 3 strings to match.
1321 if (memcmp(Mnemonic.data()+3, "rexp_mant_f", 11) != 0)
1322 break;
1323 switch (Mnemonic[14]) {
1324 default: break;
1325 case '1': // 1 string to match.
1326 if (memcmp(Mnemonic.data()+15, "6_e32", 5) != 0)
1327 break;
1328 Mnemonic = "v_frexp_mant_f16"; // "v_frexp_mant_f16_e32"
1329 return;
1330 case '3': // 1 string to match.
1331 if (memcmp(Mnemonic.data()+15, "2_e32", 5) != 0)
1332 break;
1333 Mnemonic = "v_frexp_mant_f32"; // "v_frexp_mant_f32_e32"
1334 return;
1335 case '6': // 1 string to match.
1336 if (memcmp(Mnemonic.data()+15, "4_e32", 5) != 0)
1337 break;
1338 Mnemonic = "v_frexp_mant_f64"; // "v_frexp_mant_f64_e32"
1339 return;
1340 }
1341 break;
1342 case 'l': // 1 string to match.
1343 if (memcmp(Mnemonic.data()+3, "og_legacy_f32_e32", 17) != 0)
1344 break;
1345 Mnemonic = "v_log_legacy_f32"; // "v_log_legacy_f32_e32"
1346 return;
1347 case 'm': // 6 strings to match.
1348 switch (Mnemonic[3]) {
1349 default: break;
1350 case 'a': // 2 strings to match.
1351 switch (Mnemonic[4]) {
1352 default: break;
1353 case 'c': // 1 string to match.
1354 if (memcmp(Mnemonic.data()+5, "_legacy_f32_e32", 15) != 0)
1355 break;
1356 Mnemonic = "v_mac_legacy_f32"; // "v_mac_legacy_f32_e32"
1357 return;
1358 case 'x': // 1 string to match.
1359 if (memcmp(Mnemonic.data()+5, "_legacy_f32_e32", 15) != 0)
1360 break;
1361 Mnemonic = "v_max_legacy_f32"; // "v_max_legacy_f32_e32"
1362 return;
1363 }
1364 break;
1365 case 'i': // 1 string to match.
1366 if (memcmp(Mnemonic.data()+4, "n_legacy_f32_e32", 16) != 0)
1367 break;
1368 Mnemonic = "v_min_legacy_f32"; // "v_min_legacy_f32_e32"
1369 return;
1370 case 'u': // 3 strings to match.
1371 if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
1372 break;
1373 switch (Mnemonic[6]) {
1374 default: break;
1375 case 'h': // 2 strings to match.
1376 if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
1377 break;
1378 switch (Mnemonic[9]) {
1379 default: break;
1380 case 'i': // 1 string to match.
1381 if (memcmp(Mnemonic.data()+10, "32_i24_e32", 10) != 0)
1382 break;
1383 Mnemonic = "v_mul_hi_i32_i24"; // "v_mul_hi_i32_i24_e32"
1384 return;
1385 case 'u': // 1 string to match.
1386 if (memcmp(Mnemonic.data()+10, "32_u24_e32", 10) != 0)
1387 break;
1388 Mnemonic = "v_mul_hi_u32_u24"; // "v_mul_hi_u32_u24_e32"
1389 return;
1390 }
1391 break;
1392 case 'l': // 1 string to match.
1393 if (memcmp(Mnemonic.data()+7, "egacy_f32_e32", 13) != 0)
1394 break;
1395 Mnemonic = "v_mul_legacy_f32"; // "v_mul_legacy_f32_e32"
1396 return;
1397 }
1398 break;
1399 }
1400 break;
1401 case 'r': // 2 strings to match.
1402 switch (Mnemonic[3]) {
1403 default: break;
1404 case 'c': // 1 string to match.
1405 if (memcmp(Mnemonic.data()+4, "p_legacy_f32_e32", 16) != 0)
1406 break;
1407 Mnemonic = "v_rcp_legacy_f32"; // "v_rcp_legacy_f32_e32"
1408 return;
1409 case 's': // 1 string to match.
1410 if (memcmp(Mnemonic.data()+4, "q_legacy_f32_e32", 16) != 0)
1411 break;
1412 Mnemonic = "v_rsq_legacy_f32"; // "v_rsq_legacy_f32_e32"
1413 return;
1414 }
1415 break;
1416 }
1417 break;
1418 case 21: // 2 strings to match.
1419 if (memcmp(Mnemonic.data()+0, "v_cvt_", 6) != 0)
1420 break;
1421 switch (Mnemonic[6]) {
1422 default: break;
1423 case 'f': // 1 string to match.
1424 if (memcmp(Mnemonic.data()+7, "lr_i32_f32_e32", 14) != 0)
1425 break;
1426 Mnemonic = "v_cvt_flr_i32_f32"; // "v_cvt_flr_i32_f32_e32"
1427 return;
1428 case 'r': // 1 string to match.
1429 if (memcmp(Mnemonic.data()+7, "pi_i32_f32_e32", 14) != 0)
1430 break;
1431 Mnemonic = "v_cvt_rpi_i32_f32"; // "v_cvt_rpi_i32_f32_e32"
1432 return;
1433 }
1434 break;
1435 case 22: // 4 strings to match.
1436 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
1437 break;
1438 switch (Mnemonic[2]) {
1439 default: break;
1440 case 'c': // 2 strings to match.
1441 if (memcmp(Mnemonic.data()+3, "vt_norm_", 8) != 0)
1442 break;
1443 switch (Mnemonic[11]) {
1444 default: break;
1445 case 'i': // 1 string to match.
1446 if (memcmp(Mnemonic.data()+12, "16_f16_e32", 10) != 0)
1447 break;
1448 Mnemonic = "v_cvt_norm_i16_f16"; // "v_cvt_norm_i16_f16_e32"
1449 return;
1450 case 'u': // 1 string to match.
1451 if (memcmp(Mnemonic.data()+12, "16_f16_e32", 10) != 0)
1452 break;
1453 Mnemonic = "v_cvt_norm_u16_f16"; // "v_cvt_norm_u16_f16_e32"
1454 return;
1455 }
1456 break;
1457 case 'm': // 2 strings to match.
1458 if (memcmp(Mnemonic.data()+3, "bcnt_", 5) != 0)
1459 break;
1460 switch (Mnemonic[8]) {
1461 default: break;
1462 case 'h': // 1 string to match.
1463 if (memcmp(Mnemonic.data()+9, "i_u32_b32_e32", 13) != 0)
1464 break;
1465 Mnemonic = "v_mbcnt_hi_u32_b32"; // "v_mbcnt_hi_u32_b32_e32"
1466 return;
1467 case 'l': // 1 string to match.
1468 if (memcmp(Mnemonic.data()+9, "o_u32_b32_e32", 13) != 0)
1469 break;
1470 Mnemonic = "v_mbcnt_lo_u32_b32"; // "v_mbcnt_lo_u32_b32_e32"
1471 return;
1472 }
1473 break;
1474 }
1475 break;
1476 case 23: // 4 strings to match.
1477 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
1478 break;
1479 switch (Mnemonic[2]) {
1480 default: break;
1481 case 'c': // 1 string to match.
1482 if (memcmp(Mnemonic.data()+3, "vt_pkrtz_f16_f32_e32", 20) != 0)
1483 break;
1484 Mnemonic = "v_cvt_pkrtz_f16_f32"; // "v_cvt_pkrtz_f16_f32_e32"
1485 return;
1486 case 'f': // 3 strings to match.
1487 if (memcmp(Mnemonic.data()+3, "rexp_exp_i", 10) != 0)
1488 break;
1489 switch (Mnemonic[13]) {
1490 default: break;
1491 case '1': // 1 string to match.
1492 if (memcmp(Mnemonic.data()+14, "6_f16_e32", 9) != 0)
1493 break;
1494 Mnemonic = "v_frexp_exp_i16_f16"; // "v_frexp_exp_i16_f16_e32"
1495 return;
1496 case '3': // 2 strings to match.
1497 if (memcmp(Mnemonic.data()+14, "2_f", 3) != 0)
1498 break;
1499 switch (Mnemonic[17]) {
1500 default: break;
1501 case '3': // 1 string to match.
1502 if (memcmp(Mnemonic.data()+18, "2_e32", 5) != 0)
1503 break;
1504 Mnemonic = "v_frexp_exp_i32_f32"; // "v_frexp_exp_i32_f32_e32"
1505 return;
1506 case '6': // 1 string to match.
1507 if (memcmp(Mnemonic.data()+18, "4_e32", 5) != 0)
1508 break;
1509 Mnemonic = "v_frexp_exp_i32_f64"; // "v_frexp_exp_i32_f64_e32"
1510 return;
1511 }
1512 break;
1513 }
1514 break;
1515 }
1516 break;
1517 case 24: // 3 strings to match.
1518 if (memcmp(Mnemonic.data()+0, "v_cvt_pk", 8) != 0)
1519 break;
1520 switch (Mnemonic[8]) {
1521 default: break;
1522 case 'a': // 1 string to match.
1523 if (memcmp(Mnemonic.data()+9, "ccum_u8_f32_e32", 15) != 0)
1524 break;
1525 Mnemonic = "v_cvt_pkaccum_u8_f32"; // "v_cvt_pkaccum_u8_f32_e32"
1526 return;
1527 case 'n': // 2 strings to match.
1528 if (memcmp(Mnemonic.data()+9, "orm_", 4) != 0)
1529 break;
1530 switch (Mnemonic[13]) {
1531 default: break;
1532 case 'i': // 1 string to match.
1533 if (memcmp(Mnemonic.data()+14, "16_f32_e32", 10) != 0)
1534 break;
1535 Mnemonic = "v_cvt_pknorm_i16_f32"; // "v_cvt_pknorm_i16_f32_e32"
1536 return;
1537 case 'u': // 1 string to match.
1538 if (memcmp(Mnemonic.data()+14, "16_f32_e32", 10) != 0)
1539 break;
1540 Mnemonic = "v_cvt_pknorm_u16_f32"; // "v_cvt_pknorm_u16_f32_e32"
1541 return;
1542 }
1543 break;
1544 }
1545 break;
1546 }
1547 break;
1548 case 1:
1549 switch (Mnemonic.size()) {
1550 default: break;
1551 case 9: // 1 string to match.
1552 if (memcmp(Mnemonic.data()+0, "v_nop_e64", 9) != 0)
1553 break;
1554 Mnemonic = "v_nop"; // "v_nop_e64"
1555 return;
1556 case 12: // 2 strings to match.
1557 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
1558 break;
1559 switch (Mnemonic[2]) {
1560 default: break;
1561 case 'o': // 1 string to match.
1562 if (memcmp(Mnemonic.data()+3, "r_b32_e64", 9) != 0)
1563 break;
1564 Mnemonic = "v_or_b32"; // "v_or_b32_e64"
1565 return;
1566 case 's': // 1 string to match.
1567 if (memcmp(Mnemonic.data()+3, "ad_u8_e64", 9) != 0)
1568 break;
1569 Mnemonic = "v_sad_u8"; // "v_sad_u8_e64"
1570 return;
1571 }
1572 break;
1573 case 13: // 68 strings to match.
1574 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
1575 break;
1576 switch (Mnemonic[2]) {
1577 default: break;
1578 case 'a': // 8 strings to match.
1579 switch (Mnemonic[3]) {
1580 default: break;
1581 case 'd': // 7 strings to match.
1582 if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
1583 break;
1584 switch (Mnemonic[6]) {
1585 default: break;
1586 case 'f': // 3 strings to match.
1587 switch (Mnemonic[7]) {
1588 default: break;
1589 case '1': // 1 string to match.
1590 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1591 break;
1592 Mnemonic = "v_add_f16"; // "v_add_f16_e64"
1593 return;
1594 case '3': // 1 string to match.
1595 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1596 break;
1597 Mnemonic = "v_add_f32"; // "v_add_f32_e64"
1598 return;
1599 case '6': // 1 string to match.
1600 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
1601 break;
1602 Mnemonic = "v_add_f64"; // "v_add_f64_e64"
1603 return;
1604 }
1605 break;
1606 case 'i': // 2 strings to match.
1607 switch (Mnemonic[7]) {
1608 default: break;
1609 case '1': // 1 string to match.
1610 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1611 break;
1612 Mnemonic = "v_add_i16"; // "v_add_i16_e64"
1613 return;
1614 case '3': // 1 string to match.
1615 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1616 break;
1617 Mnemonic = "v_add_i32"; // "v_add_i32_e64"
1618 return;
1619 }
1620 break;
1621 case 'u': // 2 strings to match.
1622 switch (Mnemonic[7]) {
1623 default: break;
1624 case '1': // 1 string to match.
1625 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1626 break;
1627 Mnemonic = "v_add_u16"; // "v_add_u16_e64"
1628 return;
1629 case '3': // 1 string to match.
1630 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1631 break;
1632 Mnemonic = "v_add_u32"; // "v_add_u32_e64"
1633 return;
1634 }
1635 break;
1636 }
1637 break;
1638 case 'n': // 1 string to match.
1639 if (memcmp(Mnemonic.data()+4, "d_b32_e64", 9) != 0)
1640 break;
1641 Mnemonic = "v_and_b32"; // "v_and_b32_e64"
1642 return;
1643 }
1644 break;
1645 case 'b': // 4 strings to match.
1646 if (Mnemonic[3] != 'f')
1647 break;
1648 switch (Mnemonic[4]) {
1649 default: break;
1650 case 'e': // 2 strings to match.
1651 if (Mnemonic[5] != '_')
1652 break;
1653 switch (Mnemonic[6]) {
1654 default: break;
1655 case 'i': // 1 string to match.
1656 if (memcmp(Mnemonic.data()+7, "32_e64", 6) != 0)
1657 break;
1658 Mnemonic = "v_bfe_i32"; // "v_bfe_i32_e64"
1659 return;
1660 case 'u': // 1 string to match.
1661 if (memcmp(Mnemonic.data()+7, "32_e64", 6) != 0)
1662 break;
1663 Mnemonic = "v_bfe_u32"; // "v_bfe_u32_e64"
1664 return;
1665 }
1666 break;
1667 case 'i': // 1 string to match.
1668 if (memcmp(Mnemonic.data()+5, "_b32_e64", 8) != 0)
1669 break;
1670 Mnemonic = "v_bfi_b32"; // "v_bfi_b32_e64"
1671 return;
1672 case 'm': // 1 string to match.
1673 if (memcmp(Mnemonic.data()+5, "_b32_e64", 8) != 0)
1674 break;
1675 Mnemonic = "v_bfm_b32"; // "v_bfm_b32_e64"
1676 return;
1677 }
1678 break;
1679 case 'c': // 3 strings to match.
1680 switch (Mnemonic[3]) {
1681 default: break;
1682 case 'l': // 1 string to match.
1683 if (memcmp(Mnemonic.data()+4, "rexcp_e64", 9) != 0)
1684 break;
1685 Mnemonic = "v_clrexcp"; // "v_clrexcp_e64"
1686 return;
1687 case 'o': // 2 strings to match.
1688 if (memcmp(Mnemonic.data()+4, "s_f", 3) != 0)
1689 break;
1690 switch (Mnemonic[7]) {
1691 default: break;
1692 case '1': // 1 string to match.
1693 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1694 break;
1695 Mnemonic = "v_cos_f16"; // "v_cos_f16_e64"
1696 return;
1697 case '3': // 1 string to match.
1698 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1699 break;
1700 Mnemonic = "v_cos_f32"; // "v_cos_f32_e64"
1701 return;
1702 }
1703 break;
1704 }
1705 break;
1706 case 'e': // 2 strings to match.
1707 if (memcmp(Mnemonic.data()+3, "xp_f", 4) != 0)
1708 break;
1709 switch (Mnemonic[7]) {
1710 default: break;
1711 case '1': // 1 string to match.
1712 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1713 break;
1714 Mnemonic = "v_exp_f16"; // "v_exp_f16_e64"
1715 return;
1716 case '3': // 1 string to match.
1717 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1718 break;
1719 Mnemonic = "v_exp_f32"; // "v_exp_f32_e64"
1720 return;
1721 }
1722 break;
1723 case 'f': // 3 strings to match.
1724 if (memcmp(Mnemonic.data()+3, "ma_f", 4) != 0)
1725 break;
1726 switch (Mnemonic[7]) {
1727 default: break;
1728 case '1': // 1 string to match.
1729 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1730 break;
1731 Mnemonic = "v_fma_f16"; // "v_fma_f16_e64"
1732 return;
1733 case '3': // 1 string to match.
1734 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1735 break;
1736 Mnemonic = "v_fma_f32"; // "v_fma_f32_e64"
1737 return;
1738 case '6': // 1 string to match.
1739 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
1740 break;
1741 Mnemonic = "v_fma_f64"; // "v_fma_f64_e64"
1742 return;
1743 }
1744 break;
1745 case 'l': // 3 strings to match.
1746 switch (Mnemonic[3]) {
1747 default: break;
1748 case 'e': // 1 string to match.
1749 if (memcmp(Mnemonic.data()+4, "rp_u8_e64", 9) != 0)
1750 break;
1751 Mnemonic = "v_lerp_u8"; // "v_lerp_u8_e64"
1752 return;
1753 case 'o': // 2 strings to match.
1754 if (memcmp(Mnemonic.data()+4, "g_f", 3) != 0)
1755 break;
1756 switch (Mnemonic[7]) {
1757 default: break;
1758 case '1': // 1 string to match.
1759 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1760 break;
1761 Mnemonic = "v_log_f16"; // "v_log_f16_e64"
1762 return;
1763 case '3': // 1 string to match.
1764 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1765 break;
1766 Mnemonic = "v_log_f32"; // "v_log_f32_e64"
1767 return;
1768 }
1769 break;
1770 }
1771 break;
1772 case 'm': // 25 strings to match.
1773 switch (Mnemonic[3]) {
1774 default: break;
1775 case 'a': // 13 strings to match.
1776 switch (Mnemonic[4]) {
1777 default: break;
1778 case 'c': // 2 strings to match.
1779 if (memcmp(Mnemonic.data()+5, "_f", 2) != 0)
1780 break;
1781 switch (Mnemonic[7]) {
1782 default: break;
1783 case '1': // 1 string to match.
1784 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1785 break;
1786 Mnemonic = "v_mac_f16"; // "v_mac_f16_e64"
1787 return;
1788 case '3': // 1 string to match.
1789 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1790 break;
1791 Mnemonic = "v_mac_f32"; // "v_mac_f32_e64"
1792 return;
1793 }
1794 break;
1795 case 'd': // 4 strings to match.
1796 if (Mnemonic[5] != '_')
1797 break;
1798 switch (Mnemonic[6]) {
1799 default: break;
1800 case 'f': // 2 strings to match.
1801 switch (Mnemonic[7]) {
1802 default: break;
1803 case '1': // 1 string to match.
1804 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1805 break;
1806 Mnemonic = "v_mad_f16"; // "v_mad_f16_e64"
1807 return;
1808 case '3': // 1 string to match.
1809 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1810 break;
1811 Mnemonic = "v_mad_f32"; // "v_mad_f32_e64"
1812 return;
1813 }
1814 break;
1815 case 'i': // 1 string to match.
1816 if (memcmp(Mnemonic.data()+7, "16_e64", 6) != 0)
1817 break;
1818 Mnemonic = "v_mad_i16"; // "v_mad_i16_e64"
1819 return;
1820 case 'u': // 1 string to match.
1821 if (memcmp(Mnemonic.data()+7, "16_e64", 6) != 0)
1822 break;
1823 Mnemonic = "v_mad_u16"; // "v_mad_u16_e64"
1824 return;
1825 }
1826 break;
1827 case 'x': // 7 strings to match.
1828 if (Mnemonic[5] != '_')
1829 break;
1830 switch (Mnemonic[6]) {
1831 default: break;
1832 case 'f': // 3 strings to match.
1833 switch (Mnemonic[7]) {
1834 default: break;
1835 case '1': // 1 string to match.
1836 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1837 break;
1838 Mnemonic = "v_max_f16"; // "v_max_f16_e64"
1839 return;
1840 case '3': // 1 string to match.
1841 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1842 break;
1843 Mnemonic = "v_max_f32"; // "v_max_f32_e64"
1844 return;
1845 case '6': // 1 string to match.
1846 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
1847 break;
1848 Mnemonic = "v_max_f64"; // "v_max_f64_e64"
1849 return;
1850 }
1851 break;
1852 case 'i': // 2 strings to match.
1853 switch (Mnemonic[7]) {
1854 default: break;
1855 case '1': // 1 string to match.
1856 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1857 break;
1858 Mnemonic = "v_max_i16"; // "v_max_i16_e64"
1859 return;
1860 case '3': // 1 string to match.
1861 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1862 break;
1863 Mnemonic = "v_max_i32"; // "v_max_i32_e64"
1864 return;
1865 }
1866 break;
1867 case 'u': // 2 strings to match.
1868 switch (Mnemonic[7]) {
1869 default: break;
1870 case '1': // 1 string to match.
1871 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1872 break;
1873 Mnemonic = "v_max_u16"; // "v_max_u16_e64"
1874 return;
1875 case '3': // 1 string to match.
1876 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1877 break;
1878 Mnemonic = "v_max_u32"; // "v_max_u32_e64"
1879 return;
1880 }
1881 break;
1882 }
1883 break;
1884 }
1885 break;
1886 case 'i': // 7 strings to match.
1887 if (memcmp(Mnemonic.data()+4, "n_", 2) != 0)
1888 break;
1889 switch (Mnemonic[6]) {
1890 default: break;
1891 case 'f': // 3 strings to match.
1892 switch (Mnemonic[7]) {
1893 default: break;
1894 case '1': // 1 string to match.
1895 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1896 break;
1897 Mnemonic = "v_min_f16"; // "v_min_f16_e64"
1898 return;
1899 case '3': // 1 string to match.
1900 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1901 break;
1902 Mnemonic = "v_min_f32"; // "v_min_f32_e64"
1903 return;
1904 case '6': // 1 string to match.
1905 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
1906 break;
1907 Mnemonic = "v_min_f64"; // "v_min_f64_e64"
1908 return;
1909 }
1910 break;
1911 case 'i': // 2 strings to match.
1912 switch (Mnemonic[7]) {
1913 default: break;
1914 case '1': // 1 string to match.
1915 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1916 break;
1917 Mnemonic = "v_min_i16"; // "v_min_i16_e64"
1918 return;
1919 case '3': // 1 string to match.
1920 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1921 break;
1922 Mnemonic = "v_min_i32"; // "v_min_i32_e64"
1923 return;
1924 }
1925 break;
1926 case 'u': // 2 strings to match.
1927 switch (Mnemonic[7]) {
1928 default: break;
1929 case '1': // 1 string to match.
1930 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1931 break;
1932 Mnemonic = "v_min_u16"; // "v_min_u16_e64"
1933 return;
1934 case '3': // 1 string to match.
1935 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1936 break;
1937 Mnemonic = "v_min_u32"; // "v_min_u32_e64"
1938 return;
1939 }
1940 break;
1941 }
1942 break;
1943 case 'o': // 1 string to match.
1944 if (memcmp(Mnemonic.data()+4, "v_b32_e64", 9) != 0)
1945 break;
1946 Mnemonic = "v_mov_b32"; // "v_mov_b32_e64"
1947 return;
1948 case 's': // 1 string to match.
1949 if (memcmp(Mnemonic.data()+4, "ad_u8_e64", 9) != 0)
1950 break;
1951 Mnemonic = "v_msad_u8"; // "v_msad_u8_e64"
1952 return;
1953 case 'u': // 3 strings to match.
1954 if (memcmp(Mnemonic.data()+4, "l_f", 3) != 0)
1955 break;
1956 switch (Mnemonic[7]) {
1957 default: break;
1958 case '1': // 1 string to match.
1959 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1960 break;
1961 Mnemonic = "v_mul_f16"; // "v_mul_f16_e64"
1962 return;
1963 case '3': // 1 string to match.
1964 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
1965 break;
1966 Mnemonic = "v_mul_f32"; // "v_mul_f32_e64"
1967 return;
1968 case '6': // 1 string to match.
1969 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
1970 break;
1971 Mnemonic = "v_mul_f64"; // "v_mul_f64_e64"
1972 return;
1973 }
1974 break;
1975 }
1976 break;
1977 case 'n': // 1 string to match.
1978 if (memcmp(Mnemonic.data()+3, "ot_b32_e64", 10) != 0)
1979 break;
1980 Mnemonic = "v_not_b32"; // "v_not_b32_e64"
1981 return;
1982 case 'o': // 1 string to match.
1983 if (memcmp(Mnemonic.data()+3, "r3_b32_e64", 10) != 0)
1984 break;
1985 Mnemonic = "v_or3_b32"; // "v_or3_b32_e64"
1986 return;
1987 case 'r': // 6 strings to match.
1988 switch (Mnemonic[3]) {
1989 default: break;
1990 case 'c': // 3 strings to match.
1991 if (memcmp(Mnemonic.data()+4, "p_f", 3) != 0)
1992 break;
1993 switch (Mnemonic[7]) {
1994 default: break;
1995 case '1': // 1 string to match.
1996 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
1997 break;
1998 Mnemonic = "v_rcp_f16"; // "v_rcp_f16_e64"
1999 return;
2000 case '3': // 1 string to match.
2001 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
2002 break;
2003 Mnemonic = "v_rcp_f32"; // "v_rcp_f32_e64"
2004 return;
2005 case '6': // 1 string to match.
2006 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
2007 break;
2008 Mnemonic = "v_rcp_f64"; // "v_rcp_f64_e64"
2009 return;
2010 }
2011 break;
2012 case 's': // 3 strings to match.
2013 if (memcmp(Mnemonic.data()+4, "q_f", 3) != 0)
2014 break;
2015 switch (Mnemonic[7]) {
2016 default: break;
2017 case '1': // 1 string to match.
2018 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
2019 break;
2020 Mnemonic = "v_rsq_f16"; // "v_rsq_f16_e64"
2021 return;
2022 case '3': // 1 string to match.
2023 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
2024 break;
2025 Mnemonic = "v_rsq_f32"; // "v_rsq_f32_e64"
2026 return;
2027 case '6': // 1 string to match.
2028 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
2029 break;
2030 Mnemonic = "v_rsq_f64"; // "v_rsq_f64_e64"
2031 return;
2032 }
2033 break;
2034 }
2035 break;
2036 case 's': // 10 strings to match.
2037 switch (Mnemonic[3]) {
2038 default: break;
2039 case 'a': // 2 strings to match.
2040 if (memcmp(Mnemonic.data()+4, "d_u", 3) != 0)
2041 break;
2042 switch (Mnemonic[7]) {
2043 default: break;
2044 case '1': // 1 string to match.
2045 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
2046 break;
2047 Mnemonic = "v_sad_u16"; // "v_sad_u16_e64"
2048 return;
2049 case '3': // 1 string to match.
2050 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
2051 break;
2052 Mnemonic = "v_sad_u32"; // "v_sad_u32_e64"
2053 return;
2054 }
2055 break;
2056 case 'i': // 2 strings to match.
2057 if (memcmp(Mnemonic.data()+4, "n_f", 3) != 0)
2058 break;
2059 switch (Mnemonic[7]) {
2060 default: break;
2061 case '1': // 1 string to match.
2062 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
2063 break;
2064 Mnemonic = "v_sin_f16"; // "v_sin_f16_e64"
2065 return;
2066 case '3': // 1 string to match.
2067 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
2068 break;
2069 Mnemonic = "v_sin_f32"; // "v_sin_f32_e64"
2070 return;
2071 }
2072 break;
2073 case 'u': // 6 strings to match.
2074 if (memcmp(Mnemonic.data()+4, "b_", 2) != 0)
2075 break;
2076 switch (Mnemonic[6]) {
2077 default: break;
2078 case 'f': // 2 strings to match.
2079 switch (Mnemonic[7]) {
2080 default: break;
2081 case '1': // 1 string to match.
2082 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
2083 break;
2084 Mnemonic = "v_sub_f16"; // "v_sub_f16_e64"
2085 return;
2086 case '3': // 1 string to match.
2087 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
2088 break;
2089 Mnemonic = "v_sub_f32"; // "v_sub_f32_e64"
2090 return;
2091 }
2092 break;
2093 case 'i': // 2 strings to match.
2094 switch (Mnemonic[7]) {
2095 default: break;
2096 case '1': // 1 string to match.
2097 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
2098 break;
2099 Mnemonic = "v_sub_i16"; // "v_sub_i16_e64"
2100 return;
2101 case '3': // 1 string to match.
2102 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
2103 break;
2104 Mnemonic = "v_sub_i32"; // "v_sub_i32_e64"
2105 return;
2106 }
2107 break;
2108 case 'u': // 2 strings to match.
2109 switch (Mnemonic[7]) {
2110 default: break;
2111 case '1': // 1 string to match.
2112 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
2113 break;
2114 Mnemonic = "v_sub_u16"; // "v_sub_u16_e64"
2115 return;
2116 case '3': // 1 string to match.
2117 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
2118 break;
2119 Mnemonic = "v_sub_u32"; // "v_sub_u32_e64"
2120 return;
2121 }
2122 break;
2123 }
2124 break;
2125 }
2126 break;
2127 case 'x': // 2 strings to match.
2128 switch (Mnemonic[3]) {
2129 default: break;
2130 case 'a': // 1 string to match.
2131 if (memcmp(Mnemonic.data()+4, "d_u32_e64", 9) != 0)
2132 break;
2133 Mnemonic = "v_xad_u32"; // "v_xad_u32_e64"
2134 return;
2135 case 'o': // 1 string to match.
2136 if (memcmp(Mnemonic.data()+4, "r_b32_e64", 9) != 0)
2137 break;
2138 Mnemonic = "v_xor_b32"; // "v_xor_b32_e64"
2139 return;
2140 }
2141 break;
2142 }
2143 break;
2144 case 14: // 37 strings to match.
2145 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
2146 break;
2147 switch (Mnemonic[2]) {
2148 default: break;
2149 case 'a': // 4 strings to match.
2150 switch (Mnemonic[3]) {
2151 default: break;
2152 case 'd': // 2 strings to match.
2153 if (Mnemonic[4] != 'd')
2154 break;
2155 switch (Mnemonic[5]) {
2156 default: break;
2157 case '3': // 1 string to match.
2158 if (memcmp(Mnemonic.data()+6, "_u32_e64", 8) != 0)
2159 break;
2160 Mnemonic = "v_add3_u32"; // "v_add3_u32_e64"
2161 return;
2162 case 'c': // 1 string to match.
2163 if (memcmp(Mnemonic.data()+6, "_u32_e64", 8) != 0)
2164 break;
2165 Mnemonic = "v_addc_u32"; // "v_addc_u32_e64"
2166 return;
2167 }
2168 break;
2169 case 's': // 2 strings to match.
2170 if (memcmp(Mnemonic.data()+4, "hr_i", 4) != 0)
2171 break;
2172 switch (Mnemonic[8]) {
2173 default: break;
2174 case '3': // 1 string to match.
2175 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2176 break;
2177 Mnemonic = "v_ashr_i32"; // "v_ashr_i32_e64"
2178 return;
2179 case '6': // 1 string to match.
2180 if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
2181 break;
2182 Mnemonic = "v_ashr_i64"; // "v_ashr_i64_e64"
2183 return;
2184 }
2185 break;
2186 }
2187 break;
2188 case 'c': // 3 strings to match.
2189 if (memcmp(Mnemonic.data()+3, "eil_f", 5) != 0)
2190 break;
2191 switch (Mnemonic[8]) {
2192 default: break;
2193 case '1': // 1 string to match.
2194 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2195 break;
2196 Mnemonic = "v_ceil_f16"; // "v_ceil_f16_e64"
2197 return;
2198 case '3': // 1 string to match.
2199 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2200 break;
2201 Mnemonic = "v_ceil_f32"; // "v_ceil_f32_e64"
2202 return;
2203 case '6': // 1 string to match.
2204 if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
2205 break;
2206 Mnemonic = "v_ceil_f64"; // "v_ceil_f64_e64"
2207 return;
2208 }
2209 break;
2210 case 'f': // 3 strings to match.
2211 if (memcmp(Mnemonic.data()+3, "fb", 2) != 0)
2212 break;
2213 switch (Mnemonic[5]) {
2214 default: break;
2215 case 'h': // 2 strings to match.
2216 if (Mnemonic[6] != '_')
2217 break;
2218 switch (Mnemonic[7]) {
2219 default: break;
2220 case 'i': // 1 string to match.
2221 if (memcmp(Mnemonic.data()+8, "32_e64", 6) != 0)
2222 break;
2223 Mnemonic = "v_ffbh_i32"; // "v_ffbh_i32_e64"
2224 return;
2225 case 'u': // 1 string to match.
2226 if (memcmp(Mnemonic.data()+8, "32_e64", 6) != 0)
2227 break;
2228 Mnemonic = "v_ffbh_u32"; // "v_ffbh_u32_e64"
2229 return;
2230 }
2231 break;
2232 case 'l': // 1 string to match.
2233 if (memcmp(Mnemonic.data()+6, "_b32_e64", 8) != 0)
2234 break;
2235 Mnemonic = "v_ffbl_b32"; // "v_ffbl_b32_e64"
2236 return;
2237 }
2238 break;
2239 case 'l': // 4 strings to match.
2240 if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
2241 break;
2242 switch (Mnemonic[5]) {
2243 default: break;
2244 case 'l': // 2 strings to match.
2245 if (memcmp(Mnemonic.data()+6, "_b", 2) != 0)
2246 break;
2247 switch (Mnemonic[8]) {
2248 default: break;
2249 case '3': // 1 string to match.
2250 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2251 break;
2252 Mnemonic = "v_lshl_b32"; // "v_lshl_b32_e64"
2253 return;
2254 case '6': // 1 string to match.
2255 if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
2256 break;
2257 Mnemonic = "v_lshl_b64"; // "v_lshl_b64_e64"
2258 return;
2259 }
2260 break;
2261 case 'r': // 2 strings to match.
2262 if (memcmp(Mnemonic.data()+6, "_b", 2) != 0)
2263 break;
2264 switch (Mnemonic[8]) {
2265 default: break;
2266 case '3': // 1 string to match.
2267 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2268 break;
2269 Mnemonic = "v_lshr_b32"; // "v_lshr_b32_e64"
2270 return;
2271 case '6': // 1 string to match.
2272 if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
2273 break;
2274 Mnemonic = "v_lshr_b64"; // "v_lshr_b64_e64"
2275 return;
2276 }
2277 break;
2278 }
2279 break;
2280 case 'm': // 18 strings to match.
2281 switch (Mnemonic[3]) {
2282 default: break;
2283 case 'a': // 6 strings to match.
2284 if (memcmp(Mnemonic.data()+4, "x3_", 3) != 0)
2285 break;
2286 switch (Mnemonic[7]) {
2287 default: break;
2288 case 'f': // 2 strings to match.
2289 switch (Mnemonic[8]) {
2290 default: break;
2291 case '1': // 1 string to match.
2292 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2293 break;
2294 Mnemonic = "v_max3_f16"; // "v_max3_f16_e64"
2295 return;
2296 case '3': // 1 string to match.
2297 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2298 break;
2299 Mnemonic = "v_max3_f32"; // "v_max3_f32_e64"
2300 return;
2301 }
2302 break;
2303 case 'i': // 2 strings to match.
2304 switch (Mnemonic[8]) {
2305 default: break;
2306 case '1': // 1 string to match.
2307 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2308 break;
2309 Mnemonic = "v_max3_i16"; // "v_max3_i16_e64"
2310 return;
2311 case '3': // 1 string to match.
2312 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2313 break;
2314 Mnemonic = "v_max3_i32"; // "v_max3_i32_e64"
2315 return;
2316 }
2317 break;
2318 case 'u': // 2 strings to match.
2319 switch (Mnemonic[8]) {
2320 default: break;
2321 case '1': // 1 string to match.
2322 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2323 break;
2324 Mnemonic = "v_max3_u16"; // "v_max3_u16_e64"
2325 return;
2326 case '3': // 1 string to match.
2327 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2328 break;
2329 Mnemonic = "v_max3_u32"; // "v_max3_u32_e64"
2330 return;
2331 }
2332 break;
2333 }
2334 break;
2335 case 'e': // 6 strings to match.
2336 if (memcmp(Mnemonic.data()+4, "d3_", 3) != 0)
2337 break;
2338 switch (Mnemonic[7]) {
2339 default: break;
2340 case 'f': // 2 strings to match.
2341 switch (Mnemonic[8]) {
2342 default: break;
2343 case '1': // 1 string to match.
2344 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2345 break;
2346 Mnemonic = "v_med3_f16"; // "v_med3_f16_e64"
2347 return;
2348 case '3': // 1 string to match.
2349 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2350 break;
2351 Mnemonic = "v_med3_f32"; // "v_med3_f32_e64"
2352 return;
2353 }
2354 break;
2355 case 'i': // 2 strings to match.
2356 switch (Mnemonic[8]) {
2357 default: break;
2358 case '1': // 1 string to match.
2359 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2360 break;
2361 Mnemonic = "v_med3_i16"; // "v_med3_i16_e64"
2362 return;
2363 case '3': // 1 string to match.
2364 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2365 break;
2366 Mnemonic = "v_med3_i32"; // "v_med3_i32_e64"
2367 return;
2368 }
2369 break;
2370 case 'u': // 2 strings to match.
2371 switch (Mnemonic[8]) {
2372 default: break;
2373 case '1': // 1 string to match.
2374 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2375 break;
2376 Mnemonic = "v_med3_u16"; // "v_med3_u16_e64"
2377 return;
2378 case '3': // 1 string to match.
2379 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2380 break;
2381 Mnemonic = "v_med3_u32"; // "v_med3_u32_e64"
2382 return;
2383 }
2384 break;
2385 }
2386 break;
2387 case 'i': // 6 strings to match.
2388 if (memcmp(Mnemonic.data()+4, "n3_", 3) != 0)
2389 break;
2390 switch (Mnemonic[7]) {
2391 default: break;
2392 case 'f': // 2 strings to match.
2393 switch (Mnemonic[8]) {
2394 default: break;
2395 case '1': // 1 string to match.
2396 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2397 break;
2398 Mnemonic = "v_min3_f16"; // "v_min3_f16_e64"
2399 return;
2400 case '3': // 1 string to match.
2401 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2402 break;
2403 Mnemonic = "v_min3_f32"; // "v_min3_f32_e64"
2404 return;
2405 }
2406 break;
2407 case 'i': // 2 strings to match.
2408 switch (Mnemonic[8]) {
2409 default: break;
2410 case '1': // 1 string to match.
2411 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2412 break;
2413 Mnemonic = "v_min3_i16"; // "v_min3_i16_e64"
2414 return;
2415 case '3': // 1 string to match.
2416 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2417 break;
2418 Mnemonic = "v_min3_i32"; // "v_min3_i32_e64"
2419 return;
2420 }
2421 break;
2422 case 'u': // 2 strings to match.
2423 switch (Mnemonic[8]) {
2424 default: break;
2425 case '1': // 1 string to match.
2426 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2427 break;
2428 Mnemonic = "v_min3_u16"; // "v_min3_u16_e64"
2429 return;
2430 case '3': // 1 string to match.
2431 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2432 break;
2433 Mnemonic = "v_min3_u32"; // "v_min3_u32_e64"
2434 return;
2435 }
2436 break;
2437 }
2438 break;
2439 }
2440 break;
2441 case 'p': // 1 string to match.
2442 if (memcmp(Mnemonic.data()+3, "erm_b32_e64", 11) != 0)
2443 break;
2444 Mnemonic = "v_perm_b32"; // "v_perm_b32_e64"
2445 return;
2446 case 's': // 4 strings to match.
2447 switch (Mnemonic[3]) {
2448 default: break;
2449 case 'q': // 3 strings to match.
2450 if (memcmp(Mnemonic.data()+4, "rt_f", 4) != 0)
2451 break;
2452 switch (Mnemonic[8]) {
2453 default: break;
2454 case '1': // 1 string to match.
2455 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
2456 break;
2457 Mnemonic = "v_sqrt_f16"; // "v_sqrt_f16_e64"
2458 return;
2459 case '3': // 1 string to match.
2460 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
2461 break;
2462 Mnemonic = "v_sqrt_f32"; // "v_sqrt_f32_e64"
2463 return;
2464 case '6': // 1 string to match.
2465 if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
2466 break;
2467 Mnemonic = "v_sqrt_f64"; // "v_sqrt_f64_e64"
2468 return;
2469 }
2470 break;
2471 case 'u': // 1 string to match.
2472 if (memcmp(Mnemonic.data()+4, "bb_u32_e64", 10) != 0)
2473 break;
2474 Mnemonic = "v_subb_u32"; // "v_subb_u32_e64"
2475 return;
2476 }
2477 break;
2478 }
2479 break;
2480 case 15: // 38 strings to match.
2481 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
2482 break;
2483 switch (Mnemonic[2]) {
2484 default: break;
2485 case 'b': // 1 string to match.
2486 if (memcmp(Mnemonic.data()+3, "frev_b32_e64", 12) != 0)
2487 break;
2488 Mnemonic = "v_bfrev_b32"; // "v_bfrev_b32_e64"
2489 return;
2490 case 'c': // 21 strings to match.
2491 if (memcmp(Mnemonic.data()+3, "mp_", 3) != 0)
2492 break;
2493 switch (Mnemonic[6]) {
2494 default: break;
2495 case 'f': // 9 strings to match.
2496 if (Mnemonic[7] != '_')
2497 break;
2498 switch (Mnemonic[8]) {
2499 default: break;
2500 case 'f': // 3 strings to match.
2501 switch (Mnemonic[9]) {
2502 default: break;
2503 case '1': // 1 string to match.
2504 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2505 break;
2506 Mnemonic = "v_cmp_f_f16"; // "v_cmp_f_f16_e64"
2507 return;
2508 case '3': // 1 string to match.
2509 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2510 break;
2511 Mnemonic = "v_cmp_f_f32"; // "v_cmp_f_f32_e64"
2512 return;
2513 case '6': // 1 string to match.
2514 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2515 break;
2516 Mnemonic = "v_cmp_f_f64"; // "v_cmp_f_f64_e64"
2517 return;
2518 }
2519 break;
2520 case 'i': // 3 strings to match.
2521 switch (Mnemonic[9]) {
2522 default: break;
2523 case '1': // 1 string to match.
2524 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2525 break;
2526 Mnemonic = "v_cmp_f_i16"; // "v_cmp_f_i16_e64"
2527 return;
2528 case '3': // 1 string to match.
2529 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2530 break;
2531 Mnemonic = "v_cmp_f_i32"; // "v_cmp_f_i32_e64"
2532 return;
2533 case '6': // 1 string to match.
2534 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2535 break;
2536 Mnemonic = "v_cmp_f_i64"; // "v_cmp_f_i64_e64"
2537 return;
2538 }
2539 break;
2540 case 'u': // 3 strings to match.
2541 switch (Mnemonic[9]) {
2542 default: break;
2543 case '1': // 1 string to match.
2544 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2545 break;
2546 Mnemonic = "v_cmp_f_u16"; // "v_cmp_f_u16_e64"
2547 return;
2548 case '3': // 1 string to match.
2549 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2550 break;
2551 Mnemonic = "v_cmp_f_u32"; // "v_cmp_f_u32_e64"
2552 return;
2553 case '6': // 1 string to match.
2554 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2555 break;
2556 Mnemonic = "v_cmp_f_u64"; // "v_cmp_f_u64_e64"
2557 return;
2558 }
2559 break;
2560 }
2561 break;
2562 case 'o': // 3 strings to match.
2563 if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
2564 break;
2565 switch (Mnemonic[9]) {
2566 default: break;
2567 case '1': // 1 string to match.
2568 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2569 break;
2570 Mnemonic = "v_cmp_o_f16"; // "v_cmp_o_f16_e64"
2571 return;
2572 case '3': // 1 string to match.
2573 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2574 break;
2575 Mnemonic = "v_cmp_o_f32"; // "v_cmp_o_f32_e64"
2576 return;
2577 case '6': // 1 string to match.
2578 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2579 break;
2580 Mnemonic = "v_cmp_o_f64"; // "v_cmp_o_f64_e64"
2581 return;
2582 }
2583 break;
2584 case 't': // 6 strings to match.
2585 if (Mnemonic[7] != '_')
2586 break;
2587 switch (Mnemonic[8]) {
2588 default: break;
2589 case 'i': // 3 strings to match.
2590 switch (Mnemonic[9]) {
2591 default: break;
2592 case '1': // 1 string to match.
2593 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2594 break;
2595 Mnemonic = "v_cmp_t_i16"; // "v_cmp_t_i16_e64"
2596 return;
2597 case '3': // 1 string to match.
2598 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2599 break;
2600 Mnemonic = "v_cmp_t_i32"; // "v_cmp_t_i32_e64"
2601 return;
2602 case '6': // 1 string to match.
2603 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2604 break;
2605 Mnemonic = "v_cmp_t_i64"; // "v_cmp_t_i64_e64"
2606 return;
2607 }
2608 break;
2609 case 'u': // 3 strings to match.
2610 switch (Mnemonic[9]) {
2611 default: break;
2612 case '1': // 1 string to match.
2613 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2614 break;
2615 Mnemonic = "v_cmp_t_u16"; // "v_cmp_t_u16_e64"
2616 return;
2617 case '3': // 1 string to match.
2618 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2619 break;
2620 Mnemonic = "v_cmp_t_u32"; // "v_cmp_t_u32_e64"
2621 return;
2622 case '6': // 1 string to match.
2623 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2624 break;
2625 Mnemonic = "v_cmp_t_u64"; // "v_cmp_t_u64_e64"
2626 return;
2627 }
2628 break;
2629 }
2630 break;
2631 case 'u': // 3 strings to match.
2632 if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
2633 break;
2634 switch (Mnemonic[9]) {
2635 default: break;
2636 case '1': // 1 string to match.
2637 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2638 break;
2639 Mnemonic = "v_cmp_u_f16"; // "v_cmp_u_f16_e64"
2640 return;
2641 case '3': // 1 string to match.
2642 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2643 break;
2644 Mnemonic = "v_cmp_u_f32"; // "v_cmp_u_f32_e64"
2645 return;
2646 case '6': // 1 string to match.
2647 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2648 break;
2649 Mnemonic = "v_cmp_u_f64"; // "v_cmp_u_f64_e64"
2650 return;
2651 }
2652 break;
2653 }
2654 break;
2655 case 'f': // 6 strings to match.
2656 switch (Mnemonic[3]) {
2657 default: break;
2658 case 'l': // 3 strings to match.
2659 if (memcmp(Mnemonic.data()+4, "oor_f", 5) != 0)
2660 break;
2661 switch (Mnemonic[9]) {
2662 default: break;
2663 case '1': // 1 string to match.
2664 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2665 break;
2666 Mnemonic = "v_floor_f16"; // "v_floor_f16_e64"
2667 return;
2668 case '3': // 1 string to match.
2669 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2670 break;
2671 Mnemonic = "v_floor_f32"; // "v_floor_f32_e64"
2672 return;
2673 case '6': // 1 string to match.
2674 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2675 break;
2676 Mnemonic = "v_floor_f64"; // "v_floor_f64_e64"
2677 return;
2678 }
2679 break;
2680 case 'r': // 3 strings to match.
2681 if (memcmp(Mnemonic.data()+4, "act_f", 5) != 0)
2682 break;
2683 switch (Mnemonic[9]) {
2684 default: break;
2685 case '1': // 1 string to match.
2686 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2687 break;
2688 Mnemonic = "v_fract_f16"; // "v_fract_f16_e64"
2689 return;
2690 case '3': // 1 string to match.
2691 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2692 break;
2693 Mnemonic = "v_fract_f32"; // "v_fract_f32_e64"
2694 return;
2695 case '6': // 1 string to match.
2696 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2697 break;
2698 Mnemonic = "v_fract_f64"; // "v_fract_f64_e64"
2699 return;
2700 }
2701 break;
2702 }
2703 break;
2704 case 'l': // 3 strings to match.
2705 if (memcmp(Mnemonic.data()+3, "dexp_f", 6) != 0)
2706 break;
2707 switch (Mnemonic[9]) {
2708 default: break;
2709 case '1': // 1 string to match.
2710 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2711 break;
2712 Mnemonic = "v_ldexp_f16"; // "v_ldexp_f16_e64"
2713 return;
2714 case '3': // 1 string to match.
2715 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2716 break;
2717 Mnemonic = "v_ldexp_f32"; // "v_ldexp_f32_e64"
2718 return;
2719 case '6': // 1 string to match.
2720 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2721 break;
2722 Mnemonic = "v_ldexp_f64"; // "v_ldexp_f64_e64"
2723 return;
2724 }
2725 break;
2726 case 'r': // 3 strings to match.
2727 if (memcmp(Mnemonic.data()+3, "ndne_f", 6) != 0)
2728 break;
2729 switch (Mnemonic[9]) {
2730 default: break;
2731 case '1': // 1 string to match.
2732 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2733 break;
2734 Mnemonic = "v_rndne_f16"; // "v_rndne_f16_e64"
2735 return;
2736 case '3': // 1 string to match.
2737 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2738 break;
2739 Mnemonic = "v_rndne_f32"; // "v_rndne_f32_e64"
2740 return;
2741 case '6': // 1 string to match.
2742 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2743 break;
2744 Mnemonic = "v_rndne_f64"; // "v_rndne_f64_e64"
2745 return;
2746 }
2747 break;
2748 case 's': // 1 string to match.
2749 if (memcmp(Mnemonic.data()+3, "ad_hi_u8_e64", 12) != 0)
2750 break;
2751 Mnemonic = "v_sad_hi_u8"; // "v_sad_hi_u8_e64"
2752 return;
2753 case 't': // 3 strings to match.
2754 if (memcmp(Mnemonic.data()+3, "runc_f", 6) != 0)
2755 break;
2756 switch (Mnemonic[9]) {
2757 default: break;
2758 case '1': // 1 string to match.
2759 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
2760 break;
2761 Mnemonic = "v_trunc_f16"; // "v_trunc_f16_e64"
2762 return;
2763 case '3': // 1 string to match.
2764 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
2765 break;
2766 Mnemonic = "v_trunc_f32"; // "v_trunc_f32_e64"
2767 return;
2768 case '6': // 1 string to match.
2769 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
2770 break;
2771 Mnemonic = "v_trunc_f64"; // "v_trunc_f64_e64"
2772 return;
2773 }
2774 break;
2775 }
2776 break;
2777 case 16: // 112 strings to match.
2778 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
2779 break;
2780 switch (Mnemonic[2]) {
2781 default: break;
2782 case 'a': // 1 string to match.
2783 if (memcmp(Mnemonic.data()+3, "nd_or_b32_e64", 13) != 0)
2784 break;
2785 Mnemonic = "v_and_or_b32"; // "v_and_or_b32_e64"
2786 return;
2787 case 'c': // 85 strings to match.
2788 switch (Mnemonic[3]) {
2789 default: break;
2790 case 'm': // 81 strings to match.
2791 if (Mnemonic[4] != 'p')
2792 break;
2793 switch (Mnemonic[5]) {
2794 default: break;
2795 case '_': // 54 strings to match.
2796 switch (Mnemonic[6]) {
2797 default: break;
2798 case 'e': // 9 strings to match.
2799 if (memcmp(Mnemonic.data()+7, "q_", 2) != 0)
2800 break;
2801 switch (Mnemonic[9]) {
2802 default: break;
2803 case 'f': // 3 strings to match.
2804 switch (Mnemonic[10]) {
2805 default: break;
2806 case '1': // 1 string to match.
2807 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2808 break;
2809 Mnemonic = "v_cmp_eq_f16"; // "v_cmp_eq_f16_e64"
2810 return;
2811 case '3': // 1 string to match.
2812 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2813 break;
2814 Mnemonic = "v_cmp_eq_f32"; // "v_cmp_eq_f32_e64"
2815 return;
2816 case '6': // 1 string to match.
2817 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2818 break;
2819 Mnemonic = "v_cmp_eq_f64"; // "v_cmp_eq_f64_e64"
2820 return;
2821 }
2822 break;
2823 case 'i': // 3 strings to match.
2824 switch (Mnemonic[10]) {
2825 default: break;
2826 case '1': // 1 string to match.
2827 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2828 break;
2829 Mnemonic = "v_cmp_eq_i16"; // "v_cmp_eq_i16_e64"
2830 return;
2831 case '3': // 1 string to match.
2832 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2833 break;
2834 Mnemonic = "v_cmp_eq_i32"; // "v_cmp_eq_i32_e64"
2835 return;
2836 case '6': // 1 string to match.
2837 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2838 break;
2839 Mnemonic = "v_cmp_eq_i64"; // "v_cmp_eq_i64_e64"
2840 return;
2841 }
2842 break;
2843 case 'u': // 3 strings to match.
2844 switch (Mnemonic[10]) {
2845 default: break;
2846 case '1': // 1 string to match.
2847 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2848 break;
2849 Mnemonic = "v_cmp_eq_u16"; // "v_cmp_eq_u16_e64"
2850 return;
2851 case '3': // 1 string to match.
2852 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2853 break;
2854 Mnemonic = "v_cmp_eq_u32"; // "v_cmp_eq_u32_e64"
2855 return;
2856 case '6': // 1 string to match.
2857 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2858 break;
2859 Mnemonic = "v_cmp_eq_u64"; // "v_cmp_eq_u64_e64"
2860 return;
2861 }
2862 break;
2863 }
2864 break;
2865 case 'g': // 18 strings to match.
2866 switch (Mnemonic[7]) {
2867 default: break;
2868 case 'e': // 9 strings to match.
2869 if (Mnemonic[8] != '_')
2870 break;
2871 switch (Mnemonic[9]) {
2872 default: break;
2873 case 'f': // 3 strings to match.
2874 switch (Mnemonic[10]) {
2875 default: break;
2876 case '1': // 1 string to match.
2877 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2878 break;
2879 Mnemonic = "v_cmp_ge_f16"; // "v_cmp_ge_f16_e64"
2880 return;
2881 case '3': // 1 string to match.
2882 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2883 break;
2884 Mnemonic = "v_cmp_ge_f32"; // "v_cmp_ge_f32_e64"
2885 return;
2886 case '6': // 1 string to match.
2887 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2888 break;
2889 Mnemonic = "v_cmp_ge_f64"; // "v_cmp_ge_f64_e64"
2890 return;
2891 }
2892 break;
2893 case 'i': // 3 strings to match.
2894 switch (Mnemonic[10]) {
2895 default: break;
2896 case '1': // 1 string to match.
2897 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2898 break;
2899 Mnemonic = "v_cmp_ge_i16"; // "v_cmp_ge_i16_e64"
2900 return;
2901 case '3': // 1 string to match.
2902 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2903 break;
2904 Mnemonic = "v_cmp_ge_i32"; // "v_cmp_ge_i32_e64"
2905 return;
2906 case '6': // 1 string to match.
2907 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2908 break;
2909 Mnemonic = "v_cmp_ge_i64"; // "v_cmp_ge_i64_e64"
2910 return;
2911 }
2912 break;
2913 case 'u': // 3 strings to match.
2914 switch (Mnemonic[10]) {
2915 default: break;
2916 case '1': // 1 string to match.
2917 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2918 break;
2919 Mnemonic = "v_cmp_ge_u16"; // "v_cmp_ge_u16_e64"
2920 return;
2921 case '3': // 1 string to match.
2922 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2923 break;
2924 Mnemonic = "v_cmp_ge_u32"; // "v_cmp_ge_u32_e64"
2925 return;
2926 case '6': // 1 string to match.
2927 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2928 break;
2929 Mnemonic = "v_cmp_ge_u64"; // "v_cmp_ge_u64_e64"
2930 return;
2931 }
2932 break;
2933 }
2934 break;
2935 case 't': // 9 strings to match.
2936 if (Mnemonic[8] != '_')
2937 break;
2938 switch (Mnemonic[9]) {
2939 default: break;
2940 case 'f': // 3 strings to match.
2941 switch (Mnemonic[10]) {
2942 default: break;
2943 case '1': // 1 string to match.
2944 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2945 break;
2946 Mnemonic = "v_cmp_gt_f16"; // "v_cmp_gt_f16_e64"
2947 return;
2948 case '3': // 1 string to match.
2949 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2950 break;
2951 Mnemonic = "v_cmp_gt_f32"; // "v_cmp_gt_f32_e64"
2952 return;
2953 case '6': // 1 string to match.
2954 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2955 break;
2956 Mnemonic = "v_cmp_gt_f64"; // "v_cmp_gt_f64_e64"
2957 return;
2958 }
2959 break;
2960 case 'i': // 3 strings to match.
2961 switch (Mnemonic[10]) {
2962 default: break;
2963 case '1': // 1 string to match.
2964 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2965 break;
2966 Mnemonic = "v_cmp_gt_i16"; // "v_cmp_gt_i16_e64"
2967 return;
2968 case '3': // 1 string to match.
2969 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2970 break;
2971 Mnemonic = "v_cmp_gt_i32"; // "v_cmp_gt_i32_e64"
2972 return;
2973 case '6': // 1 string to match.
2974 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2975 break;
2976 Mnemonic = "v_cmp_gt_i64"; // "v_cmp_gt_i64_e64"
2977 return;
2978 }
2979 break;
2980 case 'u': // 3 strings to match.
2981 switch (Mnemonic[10]) {
2982 default: break;
2983 case '1': // 1 string to match.
2984 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
2985 break;
2986 Mnemonic = "v_cmp_gt_u16"; // "v_cmp_gt_u16_e64"
2987 return;
2988 case '3': // 1 string to match.
2989 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
2990 break;
2991 Mnemonic = "v_cmp_gt_u32"; // "v_cmp_gt_u32_e64"
2992 return;
2993 case '6': // 1 string to match.
2994 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
2995 break;
2996 Mnemonic = "v_cmp_gt_u64"; // "v_cmp_gt_u64_e64"
2997 return;
2998 }
2999 break;
3000 }
3001 break;
3002 }
3003 break;
3004 case 'l': // 21 strings to match.
3005 switch (Mnemonic[7]) {
3006 default: break;
3007 case 'e': // 9 strings to match.
3008 if (Mnemonic[8] != '_')
3009 break;
3010 switch (Mnemonic[9]) {
3011 default: break;
3012 case 'f': // 3 strings to match.
3013 switch (Mnemonic[10]) {
3014 default: break;
3015 case '1': // 1 string to match.
3016 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3017 break;
3018 Mnemonic = "v_cmp_le_f16"; // "v_cmp_le_f16_e64"
3019 return;
3020 case '3': // 1 string to match.
3021 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3022 break;
3023 Mnemonic = "v_cmp_le_f32"; // "v_cmp_le_f32_e64"
3024 return;
3025 case '6': // 1 string to match.
3026 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3027 break;
3028 Mnemonic = "v_cmp_le_f64"; // "v_cmp_le_f64_e64"
3029 return;
3030 }
3031 break;
3032 case 'i': // 3 strings to match.
3033 switch (Mnemonic[10]) {
3034 default: break;
3035 case '1': // 1 string to match.
3036 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3037 break;
3038 Mnemonic = "v_cmp_le_i16"; // "v_cmp_le_i16_e64"
3039 return;
3040 case '3': // 1 string to match.
3041 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3042 break;
3043 Mnemonic = "v_cmp_le_i32"; // "v_cmp_le_i32_e64"
3044 return;
3045 case '6': // 1 string to match.
3046 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3047 break;
3048 Mnemonic = "v_cmp_le_i64"; // "v_cmp_le_i64_e64"
3049 return;
3050 }
3051 break;
3052 case 'u': // 3 strings to match.
3053 switch (Mnemonic[10]) {
3054 default: break;
3055 case '1': // 1 string to match.
3056 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3057 break;
3058 Mnemonic = "v_cmp_le_u16"; // "v_cmp_le_u16_e64"
3059 return;
3060 case '3': // 1 string to match.
3061 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3062 break;
3063 Mnemonic = "v_cmp_le_u32"; // "v_cmp_le_u32_e64"
3064 return;
3065 case '6': // 1 string to match.
3066 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3067 break;
3068 Mnemonic = "v_cmp_le_u64"; // "v_cmp_le_u64_e64"
3069 return;
3070 }
3071 break;
3072 }
3073 break;
3074 case 'g': // 3 strings to match.
3075 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
3076 break;
3077 switch (Mnemonic[10]) {
3078 default: break;
3079 case '1': // 1 string to match.
3080 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3081 break;
3082 Mnemonic = "v_cmp_lg_f16"; // "v_cmp_lg_f16_e64"
3083 return;
3084 case '3': // 1 string to match.
3085 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3086 break;
3087 Mnemonic = "v_cmp_lg_f32"; // "v_cmp_lg_f32_e64"
3088 return;
3089 case '6': // 1 string to match.
3090 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3091 break;
3092 Mnemonic = "v_cmp_lg_f64"; // "v_cmp_lg_f64_e64"
3093 return;
3094 }
3095 break;
3096 case 't': // 9 strings to match.
3097 if (Mnemonic[8] != '_')
3098 break;
3099 switch (Mnemonic[9]) {
3100 default: break;
3101 case 'f': // 3 strings to match.
3102 switch (Mnemonic[10]) {
3103 default: break;
3104 case '1': // 1 string to match.
3105 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3106 break;
3107 Mnemonic = "v_cmp_lt_f16"; // "v_cmp_lt_f16_e64"
3108 return;
3109 case '3': // 1 string to match.
3110 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3111 break;
3112 Mnemonic = "v_cmp_lt_f32"; // "v_cmp_lt_f32_e64"
3113 return;
3114 case '6': // 1 string to match.
3115 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3116 break;
3117 Mnemonic = "v_cmp_lt_f64"; // "v_cmp_lt_f64_e64"
3118 return;
3119 }
3120 break;
3121 case 'i': // 3 strings to match.
3122 switch (Mnemonic[10]) {
3123 default: break;
3124 case '1': // 1 string to match.
3125 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3126 break;
3127 Mnemonic = "v_cmp_lt_i16"; // "v_cmp_lt_i16_e64"
3128 return;
3129 case '3': // 1 string to match.
3130 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3131 break;
3132 Mnemonic = "v_cmp_lt_i32"; // "v_cmp_lt_i32_e64"
3133 return;
3134 case '6': // 1 string to match.
3135 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3136 break;
3137 Mnemonic = "v_cmp_lt_i64"; // "v_cmp_lt_i64_e64"
3138 return;
3139 }
3140 break;
3141 case 'u': // 3 strings to match.
3142 switch (Mnemonic[10]) {
3143 default: break;
3144 case '1': // 1 string to match.
3145 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3146 break;
3147 Mnemonic = "v_cmp_lt_u16"; // "v_cmp_lt_u16_e64"
3148 return;
3149 case '3': // 1 string to match.
3150 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3151 break;
3152 Mnemonic = "v_cmp_lt_u32"; // "v_cmp_lt_u32_e64"
3153 return;
3154 case '6': // 1 string to match.
3155 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3156 break;
3157 Mnemonic = "v_cmp_lt_u64"; // "v_cmp_lt_u64_e64"
3158 return;
3159 }
3160 break;
3161 }
3162 break;
3163 }
3164 break;
3165 case 'n': // 6 strings to match.
3166 if (memcmp(Mnemonic.data()+7, "e_", 2) != 0)
3167 break;
3168 switch (Mnemonic[9]) {
3169 default: break;
3170 case 'i': // 3 strings to match.
3171 switch (Mnemonic[10]) {
3172 default: break;
3173 case '1': // 1 string to match.
3174 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3175 break;
3176 Mnemonic = "v_cmp_ne_i16"; // "v_cmp_ne_i16_e64"
3177 return;
3178 case '3': // 1 string to match.
3179 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3180 break;
3181 Mnemonic = "v_cmp_ne_i32"; // "v_cmp_ne_i32_e64"
3182 return;
3183 case '6': // 1 string to match.
3184 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3185 break;
3186 Mnemonic = "v_cmp_ne_i64"; // "v_cmp_ne_i64_e64"
3187 return;
3188 }
3189 break;
3190 case 'u': // 3 strings to match.
3191 switch (Mnemonic[10]) {
3192 default: break;
3193 case '1': // 1 string to match.
3194 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3195 break;
3196 Mnemonic = "v_cmp_ne_u16"; // "v_cmp_ne_u16_e64"
3197 return;
3198 case '3': // 1 string to match.
3199 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3200 break;
3201 Mnemonic = "v_cmp_ne_u32"; // "v_cmp_ne_u32_e64"
3202 return;
3203 case '6': // 1 string to match.
3204 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3205 break;
3206 Mnemonic = "v_cmp_ne_u64"; // "v_cmp_ne_u64_e64"
3207 return;
3208 }
3209 break;
3210 }
3211 break;
3212 }
3213 break;
3214 case 's': // 6 strings to match.
3215 if (Mnemonic[6] != '_')
3216 break;
3217 switch (Mnemonic[7]) {
3218 default: break;
3219 case 'f': // 2 strings to match.
3220 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
3221 break;
3222 switch (Mnemonic[10]) {
3223 default: break;
3224 case '3': // 1 string to match.
3225 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3226 break;
3227 Mnemonic = "v_cmps_f_f32"; // "v_cmps_f_f32_e64"
3228 return;
3229 case '6': // 1 string to match.
3230 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3231 break;
3232 Mnemonic = "v_cmps_f_f64"; // "v_cmps_f_f64_e64"
3233 return;
3234 }
3235 break;
3236 case 'o': // 2 strings to match.
3237 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
3238 break;
3239 switch (Mnemonic[10]) {
3240 default: break;
3241 case '3': // 1 string to match.
3242 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3243 break;
3244 Mnemonic = "v_cmps_o_f32"; // "v_cmps_o_f32_e64"
3245 return;
3246 case '6': // 1 string to match.
3247 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3248 break;
3249 Mnemonic = "v_cmps_o_f64"; // "v_cmps_o_f64_e64"
3250 return;
3251 }
3252 break;
3253 case 'u': // 2 strings to match.
3254 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
3255 break;
3256 switch (Mnemonic[10]) {
3257 default: break;
3258 case '3': // 1 string to match.
3259 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3260 break;
3261 Mnemonic = "v_cmps_u_f32"; // "v_cmps_u_f32_e64"
3262 return;
3263 case '6': // 1 string to match.
3264 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3265 break;
3266 Mnemonic = "v_cmps_u_f64"; // "v_cmps_u_f64_e64"
3267 return;
3268 }
3269 break;
3270 }
3271 break;
3272 case 'x': // 21 strings to match.
3273 if (Mnemonic[6] != '_')
3274 break;
3275 switch (Mnemonic[7]) {
3276 default: break;
3277 case 'f': // 9 strings to match.
3278 if (Mnemonic[8] != '_')
3279 break;
3280 switch (Mnemonic[9]) {
3281 default: break;
3282 case 'f': // 3 strings to match.
3283 switch (Mnemonic[10]) {
3284 default: break;
3285 case '1': // 1 string to match.
3286 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3287 break;
3288 Mnemonic = "v_cmpx_f_f16"; // "v_cmpx_f_f16_e64"
3289 return;
3290 case '3': // 1 string to match.
3291 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3292 break;
3293 Mnemonic = "v_cmpx_f_f32"; // "v_cmpx_f_f32_e64"
3294 return;
3295 case '6': // 1 string to match.
3296 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3297 break;
3298 Mnemonic = "v_cmpx_f_f64"; // "v_cmpx_f_f64_e64"
3299 return;
3300 }
3301 break;
3302 case 'i': // 3 strings to match.
3303 switch (Mnemonic[10]) {
3304 default: break;
3305 case '1': // 1 string to match.
3306 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3307 break;
3308 Mnemonic = "v_cmpx_f_i16"; // "v_cmpx_f_i16_e64"
3309 return;
3310 case '3': // 1 string to match.
3311 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3312 break;
3313 Mnemonic = "v_cmpx_f_i32"; // "v_cmpx_f_i32_e64"
3314 return;
3315 case '6': // 1 string to match.
3316 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3317 break;
3318 Mnemonic = "v_cmpx_f_i64"; // "v_cmpx_f_i64_e64"
3319 return;
3320 }
3321 break;
3322 case 'u': // 3 strings to match.
3323 switch (Mnemonic[10]) {
3324 default: break;
3325 case '1': // 1 string to match.
3326 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3327 break;
3328 Mnemonic = "v_cmpx_f_u16"; // "v_cmpx_f_u16_e64"
3329 return;
3330 case '3': // 1 string to match.
3331 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3332 break;
3333 Mnemonic = "v_cmpx_f_u32"; // "v_cmpx_f_u32_e64"
3334 return;
3335 case '6': // 1 string to match.
3336 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3337 break;
3338 Mnemonic = "v_cmpx_f_u64"; // "v_cmpx_f_u64_e64"
3339 return;
3340 }
3341 break;
3342 }
3343 break;
3344 case 'o': // 3 strings to match.
3345 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
3346 break;
3347 switch (Mnemonic[10]) {
3348 default: break;
3349 case '1': // 1 string to match.
3350 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3351 break;
3352 Mnemonic = "v_cmpx_o_f16"; // "v_cmpx_o_f16_e64"
3353 return;
3354 case '3': // 1 string to match.
3355 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3356 break;
3357 Mnemonic = "v_cmpx_o_f32"; // "v_cmpx_o_f32_e64"
3358 return;
3359 case '6': // 1 string to match.
3360 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3361 break;
3362 Mnemonic = "v_cmpx_o_f64"; // "v_cmpx_o_f64_e64"
3363 return;
3364 }
3365 break;
3366 case 't': // 6 strings to match.
3367 if (Mnemonic[8] != '_')
3368 break;
3369 switch (Mnemonic[9]) {
3370 default: break;
3371 case 'i': // 3 strings to match.
3372 switch (Mnemonic[10]) {
3373 default: break;
3374 case '1': // 1 string to match.
3375 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3376 break;
3377 Mnemonic = "v_cmpx_t_i16"; // "v_cmpx_t_i16_e64"
3378 return;
3379 case '3': // 1 string to match.
3380 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3381 break;
3382 Mnemonic = "v_cmpx_t_i32"; // "v_cmpx_t_i32_e64"
3383 return;
3384 case '6': // 1 string to match.
3385 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3386 break;
3387 Mnemonic = "v_cmpx_t_i64"; // "v_cmpx_t_i64_e64"
3388 return;
3389 }
3390 break;
3391 case 'u': // 3 strings to match.
3392 switch (Mnemonic[10]) {
3393 default: break;
3394 case '1': // 1 string to match.
3395 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3396 break;
3397 Mnemonic = "v_cmpx_t_u16"; // "v_cmpx_t_u16_e64"
3398 return;
3399 case '3': // 1 string to match.
3400 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3401 break;
3402 Mnemonic = "v_cmpx_t_u32"; // "v_cmpx_t_u32_e64"
3403 return;
3404 case '6': // 1 string to match.
3405 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3406 break;
3407 Mnemonic = "v_cmpx_t_u64"; // "v_cmpx_t_u64_e64"
3408 return;
3409 }
3410 break;
3411 }
3412 break;
3413 case 'u': // 3 strings to match.
3414 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
3415 break;
3416 switch (Mnemonic[10]) {
3417 default: break;
3418 case '1': // 1 string to match.
3419 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3420 break;
3421 Mnemonic = "v_cmpx_u_f16"; // "v_cmpx_u_f16_e64"
3422 return;
3423 case '3': // 1 string to match.
3424 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3425 break;
3426 Mnemonic = "v_cmpx_u_f32"; // "v_cmpx_u_f32_e64"
3427 return;
3428 case '6': // 1 string to match.
3429 if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
3430 break;
3431 Mnemonic = "v_cmpx_u_f64"; // "v_cmpx_u_f64_e64"
3432 return;
3433 }
3434 break;
3435 }
3436 break;
3437 }
3438 break;
3439 case 'u': // 4 strings to match.
3440 if (memcmp(Mnemonic.data()+4, "be", 2) != 0)
3441 break;
3442 switch (Mnemonic[6]) {
3443 default: break;
3444 case 'i': // 1 string to match.
3445 if (memcmp(Mnemonic.data()+7, "d_f32_e64", 9) != 0)
3446 break;
3447 Mnemonic = "v_cubeid_f32"; // "v_cubeid_f32_e64"
3448 return;
3449 case 'm': // 1 string to match.
3450 if (memcmp(Mnemonic.data()+7, "a_f32_e64", 9) != 0)
3451 break;
3452 Mnemonic = "v_cubema_f32"; // "v_cubema_f32_e64"
3453 return;
3454 case 's': // 1 string to match.
3455 if (memcmp(Mnemonic.data()+7, "c_f32_e64", 9) != 0)
3456 break;
3457 Mnemonic = "v_cubesc_f32"; // "v_cubesc_f32_e64"
3458 return;
3459 case 't': // 1 string to match.
3460 if (memcmp(Mnemonic.data()+7, "c_f32_e64", 9) != 0)
3461 break;
3462 Mnemonic = "v_cubetc_f32"; // "v_cubetc_f32_e64"
3463 return;
3464 }
3465 break;
3466 }
3467 break;
3468 case 'm': // 6 strings to match.
3469 if (memcmp(Mnemonic.data()+3, "ul", 2) != 0)
3470 break;
3471 switch (Mnemonic[5]) {
3472 default: break;
3473 case '_': // 5 strings to match.
3474 switch (Mnemonic[6]) {
3475 default: break;
3476 case 'h': // 2 strings to match.
3477 if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
3478 break;
3479 switch (Mnemonic[9]) {
3480 default: break;
3481 case 'i': // 1 string to match.
3482 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
3483 break;
3484 Mnemonic = "v_mul_hi_i32"; // "v_mul_hi_i32_e64"
3485 return;
3486 case 'u': // 1 string to match.
3487 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
3488 break;
3489 Mnemonic = "v_mul_hi_u32"; // "v_mul_hi_u32_e64"
3490 return;
3491 }
3492 break;
3493 case 'l': // 3 strings to match.
3494 if (memcmp(Mnemonic.data()+7, "o_", 2) != 0)
3495 break;
3496 switch (Mnemonic[9]) {
3497 default: break;
3498 case 'i': // 1 string to match.
3499 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
3500 break;
3501 Mnemonic = "v_mul_lo_i32"; // "v_mul_lo_i32_e64"
3502 return;
3503 case 'u': // 2 strings to match.
3504 switch (Mnemonic[10]) {
3505 default: break;
3506 case '1': // 1 string to match.
3507 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3508 break;
3509 Mnemonic = "v_mul_lo_u16"; // "v_mul_lo_u16_e64"
3510 return;
3511 case '3': // 1 string to match.
3512 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3513 break;
3514 Mnemonic = "v_mul_lo_u32"; // "v_mul_lo_u32_e64"
3515 return;
3516 }
3517 break;
3518 }
3519 break;
3520 }
3521 break;
3522 case 'l': // 1 string to match.
3523 if (memcmp(Mnemonic.data()+6, "it_f32_e64", 10) != 0)
3524 break;
3525 Mnemonic = "v_mullit_f32"; // "v_mullit_f32_e64"
3526 return;
3527 }
3528 break;
3529 case 'p': // 15 strings to match.
3530 if (memcmp(Mnemonic.data()+3, "k_", 2) != 0)
3531 break;
3532 switch (Mnemonic[5]) {
3533 default: break;
3534 case 'a': // 3 strings to match.
3535 if (memcmp(Mnemonic.data()+6, "dd_", 3) != 0)
3536 break;
3537 switch (Mnemonic[9]) {
3538 default: break;
3539 case 'f': // 1 string to match.
3540 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3541 break;
3542 Mnemonic = "v_pk_add_f16"; // "v_pk_add_f16_e64"
3543 return;
3544 case 'i': // 1 string to match.
3545 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3546 break;
3547 Mnemonic = "v_pk_add_i16"; // "v_pk_add_i16_e64"
3548 return;
3549 case 'u': // 1 string to match.
3550 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3551 break;
3552 Mnemonic = "v_pk_add_u16"; // "v_pk_add_u16_e64"
3553 return;
3554 }
3555 break;
3556 case 'f': // 1 string to match.
3557 if (memcmp(Mnemonic.data()+6, "ma_f16_e64", 10) != 0)
3558 break;
3559 Mnemonic = "v_pk_fma_f16"; // "v_pk_fma_f16_e64"
3560 return;
3561 case 'm': // 9 strings to match.
3562 switch (Mnemonic[6]) {
3563 default: break;
3564 case 'a': // 5 strings to match.
3565 switch (Mnemonic[7]) {
3566 default: break;
3567 case 'd': // 2 strings to match.
3568 if (Mnemonic[8] != '_')
3569 break;
3570 switch (Mnemonic[9]) {
3571 default: break;
3572 case 'i': // 1 string to match.
3573 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3574 break;
3575 Mnemonic = "v_pk_mad_i16"; // "v_pk_mad_i16_e64"
3576 return;
3577 case 'u': // 1 string to match.
3578 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3579 break;
3580 Mnemonic = "v_pk_mad_u16"; // "v_pk_mad_u16_e64"
3581 return;
3582 }
3583 break;
3584 case 'x': // 3 strings to match.
3585 if (Mnemonic[8] != '_')
3586 break;
3587 switch (Mnemonic[9]) {
3588 default: break;
3589 case 'f': // 1 string to match.
3590 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3591 break;
3592 Mnemonic = "v_pk_max_f16"; // "v_pk_max_f16_e64"
3593 return;
3594 case 'i': // 1 string to match.
3595 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3596 break;
3597 Mnemonic = "v_pk_max_i16"; // "v_pk_max_i16_e64"
3598 return;
3599 case 'u': // 1 string to match.
3600 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3601 break;
3602 Mnemonic = "v_pk_max_u16"; // "v_pk_max_u16_e64"
3603 return;
3604 }
3605 break;
3606 }
3607 break;
3608 case 'i': // 3 strings to match.
3609 if (memcmp(Mnemonic.data()+7, "n_", 2) != 0)
3610 break;
3611 switch (Mnemonic[9]) {
3612 default: break;
3613 case 'f': // 1 string to match.
3614 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3615 break;
3616 Mnemonic = "v_pk_min_f16"; // "v_pk_min_f16_e64"
3617 return;
3618 case 'i': // 1 string to match.
3619 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3620 break;
3621 Mnemonic = "v_pk_min_i16"; // "v_pk_min_i16_e64"
3622 return;
3623 case 'u': // 1 string to match.
3624 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3625 break;
3626 Mnemonic = "v_pk_min_u16"; // "v_pk_min_u16_e64"
3627 return;
3628 }
3629 break;
3630 case 'u': // 1 string to match.
3631 if (memcmp(Mnemonic.data()+7, "l_f16_e64", 9) != 0)
3632 break;
3633 Mnemonic = "v_pk_mul_f16"; // "v_pk_mul_f16_e64"
3634 return;
3635 }
3636 break;
3637 case 's': // 2 strings to match.
3638 if (memcmp(Mnemonic.data()+6, "ub_", 3) != 0)
3639 break;
3640 switch (Mnemonic[9]) {
3641 default: break;
3642 case 'i': // 1 string to match.
3643 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3644 break;
3645 Mnemonic = "v_pk_sub_i16"; // "v_pk_sub_i16_e64"
3646 return;
3647 case 'u': // 1 string to match.
3648 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
3649 break;
3650 Mnemonic = "v_pk_sub_u16"; // "v_pk_sub_u16_e64"
3651 return;
3652 }
3653 break;
3654 }
3655 break;
3656 case 's': // 5 strings to match.
3657 if (memcmp(Mnemonic.data()+3, "ubrev_", 6) != 0)
3658 break;
3659 switch (Mnemonic[9]) {
3660 default: break;
3661 case 'f': // 2 strings to match.
3662 switch (Mnemonic[10]) {
3663 default: break;
3664 case '1': // 1 string to match.
3665 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3666 break;
3667 Mnemonic = "v_subrev_f16"; // "v_subrev_f16_e64"
3668 return;
3669 case '3': // 1 string to match.
3670 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3671 break;
3672 Mnemonic = "v_subrev_f32"; // "v_subrev_f32_e64"
3673 return;
3674 }
3675 break;
3676 case 'i': // 1 string to match.
3677 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
3678 break;
3679 Mnemonic = "v_subrev_i32"; // "v_subrev_i32_e64"
3680 return;
3681 case 'u': // 2 strings to match.
3682 switch (Mnemonic[10]) {
3683 default: break;
3684 case '1': // 1 string to match.
3685 if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
3686 break;
3687 Mnemonic = "v_subrev_u16"; // "v_subrev_u16_e64"
3688 return;
3689 case '3': // 1 string to match.
3690 if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
3691 break;
3692 Mnemonic = "v_subrev_u32"; // "v_subrev_u32_e64"
3693 return;
3694 }
3695 break;
3696 }
3697 break;
3698 }
3699 break;
3700 case 17: // 133 strings to match.
3701 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
3702 break;
3703 switch (Mnemonic[2]) {
3704 default: break;
3705 case 'a': // 3 strings to match.
3706 if (memcmp(Mnemonic.data()+3, "shrrev_i", 8) != 0)
3707 break;
3708 switch (Mnemonic[11]) {
3709 default: break;
3710 case '1': // 1 string to match.
3711 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
3712 break;
3713 Mnemonic = "v_ashrrev_i16"; // "v_ashrrev_i16_e64"
3714 return;
3715 case '3': // 1 string to match.
3716 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3717 break;
3718 Mnemonic = "v_ashrrev_i32"; // "v_ashrrev_i32_e64"
3719 return;
3720 case '6': // 1 string to match.
3721 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3722 break;
3723 Mnemonic = "v_ashrrev_i64"; // "v_ashrrev_i64_e64"
3724 return;
3725 }
3726 break;
3727 case 'c': // 110 strings to match.
3728 switch (Mnemonic[3]) {
3729 default: break;
3730 case 'm': // 93 strings to match.
3731 if (Mnemonic[4] != 'p')
3732 break;
3733 switch (Mnemonic[5]) {
3734 default: break;
3735 case '_': // 21 strings to match.
3736 switch (Mnemonic[6]) {
3737 default: break;
3738 case 'n': // 18 strings to match.
3739 switch (Mnemonic[7]) {
3740 default: break;
3741 case 'e': // 3 strings to match.
3742 if (memcmp(Mnemonic.data()+8, "q_f", 3) != 0)
3743 break;
3744 switch (Mnemonic[11]) {
3745 default: break;
3746 case '1': // 1 string to match.
3747 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
3748 break;
3749 Mnemonic = "v_cmp_neq_f16"; // "v_cmp_neq_f16_e64"
3750 return;
3751 case '3': // 1 string to match.
3752 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3753 break;
3754 Mnemonic = "v_cmp_neq_f32"; // "v_cmp_neq_f32_e64"
3755 return;
3756 case '6': // 1 string to match.
3757 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3758 break;
3759 Mnemonic = "v_cmp_neq_f64"; // "v_cmp_neq_f64_e64"
3760 return;
3761 }
3762 break;
3763 case 'g': // 6 strings to match.
3764 switch (Mnemonic[8]) {
3765 default: break;
3766 case 'e': // 3 strings to match.
3767 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3768 break;
3769 switch (Mnemonic[11]) {
3770 default: break;
3771 case '1': // 1 string to match.
3772 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
3773 break;
3774 Mnemonic = "v_cmp_nge_f16"; // "v_cmp_nge_f16_e64"
3775 return;
3776 case '3': // 1 string to match.
3777 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3778 break;
3779 Mnemonic = "v_cmp_nge_f32"; // "v_cmp_nge_f32_e64"
3780 return;
3781 case '6': // 1 string to match.
3782 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3783 break;
3784 Mnemonic = "v_cmp_nge_f64"; // "v_cmp_nge_f64_e64"
3785 return;
3786 }
3787 break;
3788 case 't': // 3 strings to match.
3789 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3790 break;
3791 switch (Mnemonic[11]) {
3792 default: break;
3793 case '1': // 1 string to match.
3794 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
3795 break;
3796 Mnemonic = "v_cmp_ngt_f16"; // "v_cmp_ngt_f16_e64"
3797 return;
3798 case '3': // 1 string to match.
3799 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3800 break;
3801 Mnemonic = "v_cmp_ngt_f32"; // "v_cmp_ngt_f32_e64"
3802 return;
3803 case '6': // 1 string to match.
3804 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3805 break;
3806 Mnemonic = "v_cmp_ngt_f64"; // "v_cmp_ngt_f64_e64"
3807 return;
3808 }
3809 break;
3810 }
3811 break;
3812 case 'l': // 9 strings to match.
3813 switch (Mnemonic[8]) {
3814 default: break;
3815 case 'e': // 3 strings to match.
3816 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3817 break;
3818 switch (Mnemonic[11]) {
3819 default: break;
3820 case '1': // 1 string to match.
3821 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
3822 break;
3823 Mnemonic = "v_cmp_nle_f16"; // "v_cmp_nle_f16_e64"
3824 return;
3825 case '3': // 1 string to match.
3826 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3827 break;
3828 Mnemonic = "v_cmp_nle_f32"; // "v_cmp_nle_f32_e64"
3829 return;
3830 case '6': // 1 string to match.
3831 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3832 break;
3833 Mnemonic = "v_cmp_nle_f64"; // "v_cmp_nle_f64_e64"
3834 return;
3835 }
3836 break;
3837 case 'g': // 3 strings to match.
3838 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3839 break;
3840 switch (Mnemonic[11]) {
3841 default: break;
3842 case '1': // 1 string to match.
3843 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
3844 break;
3845 Mnemonic = "v_cmp_nlg_f16"; // "v_cmp_nlg_f16_e64"
3846 return;
3847 case '3': // 1 string to match.
3848 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3849 break;
3850 Mnemonic = "v_cmp_nlg_f32"; // "v_cmp_nlg_f32_e64"
3851 return;
3852 case '6': // 1 string to match.
3853 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3854 break;
3855 Mnemonic = "v_cmp_nlg_f64"; // "v_cmp_nlg_f64_e64"
3856 return;
3857 }
3858 break;
3859 case 't': // 3 strings to match.
3860 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3861 break;
3862 switch (Mnemonic[11]) {
3863 default: break;
3864 case '1': // 1 string to match.
3865 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
3866 break;
3867 Mnemonic = "v_cmp_nlt_f16"; // "v_cmp_nlt_f16_e64"
3868 return;
3869 case '3': // 1 string to match.
3870 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3871 break;
3872 Mnemonic = "v_cmp_nlt_f32"; // "v_cmp_nlt_f32_e64"
3873 return;
3874 case '6': // 1 string to match.
3875 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3876 break;
3877 Mnemonic = "v_cmp_nlt_f64"; // "v_cmp_nlt_f64_e64"
3878 return;
3879 }
3880 break;
3881 }
3882 break;
3883 }
3884 break;
3885 case 't': // 3 strings to match.
3886 if (memcmp(Mnemonic.data()+7, "ru_f", 4) != 0)
3887 break;
3888 switch (Mnemonic[11]) {
3889 default: break;
3890 case '1': // 1 string to match.
3891 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
3892 break;
3893 Mnemonic = "v_cmp_tru_f16"; // "v_cmp_tru_f16_e64"
3894 return;
3895 case '3': // 1 string to match.
3896 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3897 break;
3898 Mnemonic = "v_cmp_tru_f32"; // "v_cmp_tru_f32_e64"
3899 return;
3900 case '6': // 1 string to match.
3901 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3902 break;
3903 Mnemonic = "v_cmp_tru_f64"; // "v_cmp_tru_f64_e64"
3904 return;
3905 }
3906 break;
3907 }
3908 break;
3909 case 's': // 18 strings to match.
3910 switch (Mnemonic[6]) {
3911 default: break;
3912 case '_': // 12 strings to match.
3913 switch (Mnemonic[7]) {
3914 default: break;
3915 case 'e': // 2 strings to match.
3916 if (memcmp(Mnemonic.data()+8, "q_f", 3) != 0)
3917 break;
3918 switch (Mnemonic[11]) {
3919 default: break;
3920 case '3': // 1 string to match.
3921 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3922 break;
3923 Mnemonic = "v_cmps_eq_f32"; // "v_cmps_eq_f32_e64"
3924 return;
3925 case '6': // 1 string to match.
3926 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3927 break;
3928 Mnemonic = "v_cmps_eq_f64"; // "v_cmps_eq_f64_e64"
3929 return;
3930 }
3931 break;
3932 case 'g': // 4 strings to match.
3933 switch (Mnemonic[8]) {
3934 default: break;
3935 case 'e': // 2 strings to match.
3936 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3937 break;
3938 switch (Mnemonic[11]) {
3939 default: break;
3940 case '3': // 1 string to match.
3941 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3942 break;
3943 Mnemonic = "v_cmps_ge_f32"; // "v_cmps_ge_f32_e64"
3944 return;
3945 case '6': // 1 string to match.
3946 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3947 break;
3948 Mnemonic = "v_cmps_ge_f64"; // "v_cmps_ge_f64_e64"
3949 return;
3950 }
3951 break;
3952 case 't': // 2 strings to match.
3953 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3954 break;
3955 switch (Mnemonic[11]) {
3956 default: break;
3957 case '3': // 1 string to match.
3958 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3959 break;
3960 Mnemonic = "v_cmps_gt_f32"; // "v_cmps_gt_f32_e64"
3961 return;
3962 case '6': // 1 string to match.
3963 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3964 break;
3965 Mnemonic = "v_cmps_gt_f64"; // "v_cmps_gt_f64_e64"
3966 return;
3967 }
3968 break;
3969 }
3970 break;
3971 case 'l': // 6 strings to match.
3972 switch (Mnemonic[8]) {
3973 default: break;
3974 case 'e': // 2 strings to match.
3975 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3976 break;
3977 switch (Mnemonic[11]) {
3978 default: break;
3979 case '3': // 1 string to match.
3980 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3981 break;
3982 Mnemonic = "v_cmps_le_f32"; // "v_cmps_le_f32_e64"
3983 return;
3984 case '6': // 1 string to match.
3985 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
3986 break;
3987 Mnemonic = "v_cmps_le_f64"; // "v_cmps_le_f64_e64"
3988 return;
3989 }
3990 break;
3991 case 'g': // 2 strings to match.
3992 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
3993 break;
3994 switch (Mnemonic[11]) {
3995 default: break;
3996 case '3': // 1 string to match.
3997 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
3998 break;
3999 Mnemonic = "v_cmps_lg_f32"; // "v_cmps_lg_f32_e64"
4000 return;
4001 case '6': // 1 string to match.
4002 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4003 break;
4004 Mnemonic = "v_cmps_lg_f64"; // "v_cmps_lg_f64_e64"
4005 return;
4006 }
4007 break;
4008 case 't': // 2 strings to match.
4009 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
4010 break;
4011 switch (Mnemonic[11]) {
4012 default: break;
4013 case '3': // 1 string to match.
4014 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4015 break;
4016 Mnemonic = "v_cmps_lt_f32"; // "v_cmps_lt_f32_e64"
4017 return;
4018 case '6': // 1 string to match.
4019 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4020 break;
4021 Mnemonic = "v_cmps_lt_f64"; // "v_cmps_lt_f64_e64"
4022 return;
4023 }
4024 break;
4025 }
4026 break;
4027 }
4028 break;
4029 case 'x': // 6 strings to match.
4030 if (Mnemonic[7] != '_')
4031 break;
4032 switch (Mnemonic[8]) {
4033 default: break;
4034 case 'f': // 2 strings to match.
4035 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
4036 break;
4037 switch (Mnemonic[11]) {
4038 default: break;
4039 case '3': // 1 string to match.
4040 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4041 break;
4042 Mnemonic = "v_cmpsx_f_f32"; // "v_cmpsx_f_f32_e64"
4043 return;
4044 case '6': // 1 string to match.
4045 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4046 break;
4047 Mnemonic = "v_cmpsx_f_f64"; // "v_cmpsx_f_f64_e64"
4048 return;
4049 }
4050 break;
4051 case 'o': // 2 strings to match.
4052 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
4053 break;
4054 switch (Mnemonic[11]) {
4055 default: break;
4056 case '3': // 1 string to match.
4057 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4058 break;
4059 Mnemonic = "v_cmpsx_o_f32"; // "v_cmpsx_o_f32_e64"
4060 return;
4061 case '6': // 1 string to match.
4062 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4063 break;
4064 Mnemonic = "v_cmpsx_o_f64"; // "v_cmpsx_o_f64_e64"
4065 return;
4066 }
4067 break;
4068 case 'u': // 2 strings to match.
4069 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
4070 break;
4071 switch (Mnemonic[11]) {
4072 default: break;
4073 case '3': // 1 string to match.
4074 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4075 break;
4076 Mnemonic = "v_cmpsx_u_f32"; // "v_cmpsx_u_f32_e64"
4077 return;
4078 case '6': // 1 string to match.
4079 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4080 break;
4081 Mnemonic = "v_cmpsx_u_f64"; // "v_cmpsx_u_f64_e64"
4082 return;
4083 }
4084 break;
4085 }
4086 break;
4087 }
4088 break;
4089 case 'x': // 54 strings to match.
4090 if (Mnemonic[6] != '_')
4091 break;
4092 switch (Mnemonic[7]) {
4093 default: break;
4094 case 'e': // 9 strings to match.
4095 if (memcmp(Mnemonic.data()+8, "q_", 2) != 0)
4096 break;
4097 switch (Mnemonic[10]) {
4098 default: break;
4099 case 'f': // 3 strings to match.
4100 switch (Mnemonic[11]) {
4101 default: break;
4102 case '1': // 1 string to match.
4103 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4104 break;
4105 Mnemonic = "v_cmpx_eq_f16"; // "v_cmpx_eq_f16_e64"
4106 return;
4107 case '3': // 1 string to match.
4108 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4109 break;
4110 Mnemonic = "v_cmpx_eq_f32"; // "v_cmpx_eq_f32_e64"
4111 return;
4112 case '6': // 1 string to match.
4113 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4114 break;
4115 Mnemonic = "v_cmpx_eq_f64"; // "v_cmpx_eq_f64_e64"
4116 return;
4117 }
4118 break;
4119 case 'i': // 3 strings to match.
4120 switch (Mnemonic[11]) {
4121 default: break;
4122 case '1': // 1 string to match.
4123 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4124 break;
4125 Mnemonic = "v_cmpx_eq_i16"; // "v_cmpx_eq_i16_e64"
4126 return;
4127 case '3': // 1 string to match.
4128 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4129 break;
4130 Mnemonic = "v_cmpx_eq_i32"; // "v_cmpx_eq_i32_e64"
4131 return;
4132 case '6': // 1 string to match.
4133 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4134 break;
4135 Mnemonic = "v_cmpx_eq_i64"; // "v_cmpx_eq_i64_e64"
4136 return;
4137 }
4138 break;
4139 case 'u': // 3 strings to match.
4140 switch (Mnemonic[11]) {
4141 default: break;
4142 case '1': // 1 string to match.
4143 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4144 break;
4145 Mnemonic = "v_cmpx_eq_u16"; // "v_cmpx_eq_u16_e64"
4146 return;
4147 case '3': // 1 string to match.
4148 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4149 break;
4150 Mnemonic = "v_cmpx_eq_u32"; // "v_cmpx_eq_u32_e64"
4151 return;
4152 case '6': // 1 string to match.
4153 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4154 break;
4155 Mnemonic = "v_cmpx_eq_u64"; // "v_cmpx_eq_u64_e64"
4156 return;
4157 }
4158 break;
4159 }
4160 break;
4161 case 'g': // 18 strings to match.
4162 switch (Mnemonic[8]) {
4163 default: break;
4164 case 'e': // 9 strings to match.
4165 if (Mnemonic[9] != '_')
4166 break;
4167 switch (Mnemonic[10]) {
4168 default: break;
4169 case 'f': // 3 strings to match.
4170 switch (Mnemonic[11]) {
4171 default: break;
4172 case '1': // 1 string to match.
4173 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4174 break;
4175 Mnemonic = "v_cmpx_ge_f16"; // "v_cmpx_ge_f16_e64"
4176 return;
4177 case '3': // 1 string to match.
4178 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4179 break;
4180 Mnemonic = "v_cmpx_ge_f32"; // "v_cmpx_ge_f32_e64"
4181 return;
4182 case '6': // 1 string to match.
4183 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4184 break;
4185 Mnemonic = "v_cmpx_ge_f64"; // "v_cmpx_ge_f64_e64"
4186 return;
4187 }
4188 break;
4189 case 'i': // 3 strings to match.
4190 switch (Mnemonic[11]) {
4191 default: break;
4192 case '1': // 1 string to match.
4193 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4194 break;
4195 Mnemonic = "v_cmpx_ge_i16"; // "v_cmpx_ge_i16_e64"
4196 return;
4197 case '3': // 1 string to match.
4198 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4199 break;
4200 Mnemonic = "v_cmpx_ge_i32"; // "v_cmpx_ge_i32_e64"
4201 return;
4202 case '6': // 1 string to match.
4203 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4204 break;
4205 Mnemonic = "v_cmpx_ge_i64"; // "v_cmpx_ge_i64_e64"
4206 return;
4207 }
4208 break;
4209 case 'u': // 3 strings to match.
4210 switch (Mnemonic[11]) {
4211 default: break;
4212 case '1': // 1 string to match.
4213 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4214 break;
4215 Mnemonic = "v_cmpx_ge_u16"; // "v_cmpx_ge_u16_e64"
4216 return;
4217 case '3': // 1 string to match.
4218 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4219 break;
4220 Mnemonic = "v_cmpx_ge_u32"; // "v_cmpx_ge_u32_e64"
4221 return;
4222 case '6': // 1 string to match.
4223 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4224 break;
4225 Mnemonic = "v_cmpx_ge_u64"; // "v_cmpx_ge_u64_e64"
4226 return;
4227 }
4228 break;
4229 }
4230 break;
4231 case 't': // 9 strings to match.
4232 if (Mnemonic[9] != '_')
4233 break;
4234 switch (Mnemonic[10]) {
4235 default: break;
4236 case 'f': // 3 strings to match.
4237 switch (Mnemonic[11]) {
4238 default: break;
4239 case '1': // 1 string to match.
4240 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4241 break;
4242 Mnemonic = "v_cmpx_gt_f16"; // "v_cmpx_gt_f16_e64"
4243 return;
4244 case '3': // 1 string to match.
4245 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4246 break;
4247 Mnemonic = "v_cmpx_gt_f32"; // "v_cmpx_gt_f32_e64"
4248 return;
4249 case '6': // 1 string to match.
4250 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4251 break;
4252 Mnemonic = "v_cmpx_gt_f64"; // "v_cmpx_gt_f64_e64"
4253 return;
4254 }
4255 break;
4256 case 'i': // 3 strings to match.
4257 switch (Mnemonic[11]) {
4258 default: break;
4259 case '1': // 1 string to match.
4260 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4261 break;
4262 Mnemonic = "v_cmpx_gt_i16"; // "v_cmpx_gt_i16_e64"
4263 return;
4264 case '3': // 1 string to match.
4265 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4266 break;
4267 Mnemonic = "v_cmpx_gt_i32"; // "v_cmpx_gt_i32_e64"
4268 return;
4269 case '6': // 1 string to match.
4270 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4271 break;
4272 Mnemonic = "v_cmpx_gt_i64"; // "v_cmpx_gt_i64_e64"
4273 return;
4274 }
4275 break;
4276 case 'u': // 3 strings to match.
4277 switch (Mnemonic[11]) {
4278 default: break;
4279 case '1': // 1 string to match.
4280 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4281 break;
4282 Mnemonic = "v_cmpx_gt_u16"; // "v_cmpx_gt_u16_e64"
4283 return;
4284 case '3': // 1 string to match.
4285 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4286 break;
4287 Mnemonic = "v_cmpx_gt_u32"; // "v_cmpx_gt_u32_e64"
4288 return;
4289 case '6': // 1 string to match.
4290 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4291 break;
4292 Mnemonic = "v_cmpx_gt_u64"; // "v_cmpx_gt_u64_e64"
4293 return;
4294 }
4295 break;
4296 }
4297 break;
4298 }
4299 break;
4300 case 'l': // 21 strings to match.
4301 switch (Mnemonic[8]) {
4302 default: break;
4303 case 'e': // 9 strings to match.
4304 if (Mnemonic[9] != '_')
4305 break;
4306 switch (Mnemonic[10]) {
4307 default: break;
4308 case 'f': // 3 strings to match.
4309 switch (Mnemonic[11]) {
4310 default: break;
4311 case '1': // 1 string to match.
4312 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4313 break;
4314 Mnemonic = "v_cmpx_le_f16"; // "v_cmpx_le_f16_e64"
4315 return;
4316 case '3': // 1 string to match.
4317 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4318 break;
4319 Mnemonic = "v_cmpx_le_f32"; // "v_cmpx_le_f32_e64"
4320 return;
4321 case '6': // 1 string to match.
4322 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4323 break;
4324 Mnemonic = "v_cmpx_le_f64"; // "v_cmpx_le_f64_e64"
4325 return;
4326 }
4327 break;
4328 case 'i': // 3 strings to match.
4329 switch (Mnemonic[11]) {
4330 default: break;
4331 case '1': // 1 string to match.
4332 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4333 break;
4334 Mnemonic = "v_cmpx_le_i16"; // "v_cmpx_le_i16_e64"
4335 return;
4336 case '3': // 1 string to match.
4337 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4338 break;
4339 Mnemonic = "v_cmpx_le_i32"; // "v_cmpx_le_i32_e64"
4340 return;
4341 case '6': // 1 string to match.
4342 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4343 break;
4344 Mnemonic = "v_cmpx_le_i64"; // "v_cmpx_le_i64_e64"
4345 return;
4346 }
4347 break;
4348 case 'u': // 3 strings to match.
4349 switch (Mnemonic[11]) {
4350 default: break;
4351 case '1': // 1 string to match.
4352 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4353 break;
4354 Mnemonic = "v_cmpx_le_u16"; // "v_cmpx_le_u16_e64"
4355 return;
4356 case '3': // 1 string to match.
4357 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4358 break;
4359 Mnemonic = "v_cmpx_le_u32"; // "v_cmpx_le_u32_e64"
4360 return;
4361 case '6': // 1 string to match.
4362 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4363 break;
4364 Mnemonic = "v_cmpx_le_u64"; // "v_cmpx_le_u64_e64"
4365 return;
4366 }
4367 break;
4368 }
4369 break;
4370 case 'g': // 3 strings to match.
4371 if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
4372 break;
4373 switch (Mnemonic[11]) {
4374 default: break;
4375 case '1': // 1 string to match.
4376 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4377 break;
4378 Mnemonic = "v_cmpx_lg_f16"; // "v_cmpx_lg_f16_e64"
4379 return;
4380 case '3': // 1 string to match.
4381 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4382 break;
4383 Mnemonic = "v_cmpx_lg_f32"; // "v_cmpx_lg_f32_e64"
4384 return;
4385 case '6': // 1 string to match.
4386 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4387 break;
4388 Mnemonic = "v_cmpx_lg_f64"; // "v_cmpx_lg_f64_e64"
4389 return;
4390 }
4391 break;
4392 case 't': // 9 strings to match.
4393 if (Mnemonic[9] != '_')
4394 break;
4395 switch (Mnemonic[10]) {
4396 default: break;
4397 case 'f': // 3 strings to match.
4398 switch (Mnemonic[11]) {
4399 default: break;
4400 case '1': // 1 string to match.
4401 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4402 break;
4403 Mnemonic = "v_cmpx_lt_f16"; // "v_cmpx_lt_f16_e64"
4404 return;
4405 case '3': // 1 string to match.
4406 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4407 break;
4408 Mnemonic = "v_cmpx_lt_f32"; // "v_cmpx_lt_f32_e64"
4409 return;
4410 case '6': // 1 string to match.
4411 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4412 break;
4413 Mnemonic = "v_cmpx_lt_f64"; // "v_cmpx_lt_f64_e64"
4414 return;
4415 }
4416 break;
4417 case 'i': // 3 strings to match.
4418 switch (Mnemonic[11]) {
4419 default: break;
4420 case '1': // 1 string to match.
4421 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4422 break;
4423 Mnemonic = "v_cmpx_lt_i16"; // "v_cmpx_lt_i16_e64"
4424 return;
4425 case '3': // 1 string to match.
4426 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4427 break;
4428 Mnemonic = "v_cmpx_lt_i32"; // "v_cmpx_lt_i32_e64"
4429 return;
4430 case '6': // 1 string to match.
4431 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4432 break;
4433 Mnemonic = "v_cmpx_lt_i64"; // "v_cmpx_lt_i64_e64"
4434 return;
4435 }
4436 break;
4437 case 'u': // 3 strings to match.
4438 switch (Mnemonic[11]) {
4439 default: break;
4440 case '1': // 1 string to match.
4441 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4442 break;
4443 Mnemonic = "v_cmpx_lt_u16"; // "v_cmpx_lt_u16_e64"
4444 return;
4445 case '3': // 1 string to match.
4446 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4447 break;
4448 Mnemonic = "v_cmpx_lt_u32"; // "v_cmpx_lt_u32_e64"
4449 return;
4450 case '6': // 1 string to match.
4451 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4452 break;
4453 Mnemonic = "v_cmpx_lt_u64"; // "v_cmpx_lt_u64_e64"
4454 return;
4455 }
4456 break;
4457 }
4458 break;
4459 }
4460 break;
4461 case 'n': // 6 strings to match.
4462 if (memcmp(Mnemonic.data()+8, "e_", 2) != 0)
4463 break;
4464 switch (Mnemonic[10]) {
4465 default: break;
4466 case 'i': // 3 strings to match.
4467 switch (Mnemonic[11]) {
4468 default: break;
4469 case '1': // 1 string to match.
4470 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4471 break;
4472 Mnemonic = "v_cmpx_ne_i16"; // "v_cmpx_ne_i16_e64"
4473 return;
4474 case '3': // 1 string to match.
4475 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4476 break;
4477 Mnemonic = "v_cmpx_ne_i32"; // "v_cmpx_ne_i32_e64"
4478 return;
4479 case '6': // 1 string to match.
4480 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4481 break;
4482 Mnemonic = "v_cmpx_ne_i64"; // "v_cmpx_ne_i64_e64"
4483 return;
4484 }
4485 break;
4486 case 'u': // 3 strings to match.
4487 switch (Mnemonic[11]) {
4488 default: break;
4489 case '1': // 1 string to match.
4490 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4491 break;
4492 Mnemonic = "v_cmpx_ne_u16"; // "v_cmpx_ne_u16_e64"
4493 return;
4494 case '3': // 1 string to match.
4495 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4496 break;
4497 Mnemonic = "v_cmpx_ne_u32"; // "v_cmpx_ne_u32_e64"
4498 return;
4499 case '6': // 1 string to match.
4500 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4501 break;
4502 Mnemonic = "v_cmpx_ne_u64"; // "v_cmpx_ne_u64_e64"
4503 return;
4504 }
4505 break;
4506 }
4507 break;
4508 }
4509 break;
4510 }
4511 break;
4512 case 'n': // 1 string to match.
4513 if (memcmp(Mnemonic.data()+4, "dmask_b32_e64", 13) != 0)
4514 break;
4515 Mnemonic = "v_cndmask_b32"; // "v_cndmask_b32_e64"
4516 return;
4517 case 'v': // 16 strings to match.
4518 if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
4519 break;
4520 switch (Mnemonic[6]) {
4521 default: break;
4522 case 'f': // 10 strings to match.
4523 switch (Mnemonic[7]) {
4524 default: break;
4525 case '1': // 3 strings to match.
4526 if (memcmp(Mnemonic.data()+8, "6_", 2) != 0)
4527 break;
4528 switch (Mnemonic[10]) {
4529 default: break;
4530 case 'f': // 1 string to match.
4531 if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
4532 break;
4533 Mnemonic = "v_cvt_f16_f32"; // "v_cvt_f16_f32_e64"
4534 return;
4535 case 'i': // 1 string to match.
4536 if (memcmp(Mnemonic.data()+11, "16_e64", 6) != 0)
4537 break;
4538 Mnemonic = "v_cvt_f16_i16"; // "v_cvt_f16_i16_e64"
4539 return;
4540 case 'u': // 1 string to match.
4541 if (memcmp(Mnemonic.data()+11, "16_e64", 6) != 0)
4542 break;
4543 Mnemonic = "v_cvt_f16_u16"; // "v_cvt_f16_u16_e64"
4544 return;
4545 }
4546 break;
4547 case '3': // 4 strings to match.
4548 if (memcmp(Mnemonic.data()+8, "2_", 2) != 0)
4549 break;
4550 switch (Mnemonic[10]) {
4551 default: break;
4552 case 'f': // 2 strings to match.
4553 switch (Mnemonic[11]) {
4554 default: break;
4555 case '1': // 1 string to match.
4556 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4557 break;
4558 Mnemonic = "v_cvt_f32_f16"; // "v_cvt_f32_f16_e64"
4559 return;
4560 case '6': // 1 string to match.
4561 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4562 break;
4563 Mnemonic = "v_cvt_f32_f64"; // "v_cvt_f32_f64_e64"
4564 return;
4565 }
4566 break;
4567 case 'i': // 1 string to match.
4568 if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
4569 break;
4570 Mnemonic = "v_cvt_f32_i32"; // "v_cvt_f32_i32_e64"
4571 return;
4572 case 'u': // 1 string to match.
4573 if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
4574 break;
4575 Mnemonic = "v_cvt_f32_u32"; // "v_cvt_f32_u32_e64"
4576 return;
4577 }
4578 break;
4579 case '6': // 3 strings to match.
4580 if (memcmp(Mnemonic.data()+8, "4_", 2) != 0)
4581 break;
4582 switch (Mnemonic[10]) {
4583 default: break;
4584 case 'f': // 1 string to match.
4585 if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
4586 break;
4587 Mnemonic = "v_cvt_f64_f32"; // "v_cvt_f64_f32_e64"
4588 return;
4589 case 'i': // 1 string to match.
4590 if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
4591 break;
4592 Mnemonic = "v_cvt_f64_i32"; // "v_cvt_f64_i32_e64"
4593 return;
4594 case 'u': // 1 string to match.
4595 if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
4596 break;
4597 Mnemonic = "v_cvt_f64_u32"; // "v_cvt_f64_u32_e64"
4598 return;
4599 }
4600 break;
4601 }
4602 break;
4603 case 'i': // 3 strings to match.
4604 switch (Mnemonic[7]) {
4605 default: break;
4606 case '1': // 1 string to match.
4607 if (memcmp(Mnemonic.data()+8, "6_f16_e64", 9) != 0)
4608 break;
4609 Mnemonic = "v_cvt_i16_f16"; // "v_cvt_i16_f16_e64"
4610 return;
4611 case '3': // 2 strings to match.
4612 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
4613 break;
4614 switch (Mnemonic[11]) {
4615 default: break;
4616 case '3': // 1 string to match.
4617 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4618 break;
4619 Mnemonic = "v_cvt_i32_f32"; // "v_cvt_i32_f32_e64"
4620 return;
4621 case '6': // 1 string to match.
4622 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4623 break;
4624 Mnemonic = "v_cvt_i32_f64"; // "v_cvt_i32_f64_e64"
4625 return;
4626 }
4627 break;
4628 }
4629 break;
4630 case 'u': // 3 strings to match.
4631 switch (Mnemonic[7]) {
4632 default: break;
4633 case '1': // 1 string to match.
4634 if (memcmp(Mnemonic.data()+8, "6_f16_e64", 9) != 0)
4635 break;
4636 Mnemonic = "v_cvt_u16_f16"; // "v_cvt_u16_f16_e64"
4637 return;
4638 case '3': // 2 strings to match.
4639 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
4640 break;
4641 switch (Mnemonic[11]) {
4642 default: break;
4643 case '3': // 1 string to match.
4644 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4645 break;
4646 Mnemonic = "v_cvt_u32_f32"; // "v_cvt_u32_f32_e64"
4647 return;
4648 case '6': // 1 string to match.
4649 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4650 break;
4651 Mnemonic = "v_cvt_u32_f64"; // "v_cvt_u32_f64_e64"
4652 return;
4653 }
4654 break;
4655 }
4656 break;
4657 }
4658 break;
4659 }
4660 break;
4661 case 'l': // 7 strings to match.
4662 if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
4663 break;
4664 switch (Mnemonic[5]) {
4665 default: break;
4666 case 'l': // 4 strings to match.
4667 switch (Mnemonic[6]) {
4668 default: break;
4669 case '_': // 1 string to match.
4670 if (memcmp(Mnemonic.data()+7, "or_b32_e64", 10) != 0)
4671 break;
4672 Mnemonic = "v_lshl_or_b32"; // "v_lshl_or_b32_e64"
4673 return;
4674 case 'r': // 3 strings to match.
4675 if (memcmp(Mnemonic.data()+7, "ev_b", 4) != 0)
4676 break;
4677 switch (Mnemonic[11]) {
4678 default: break;
4679 case '1': // 1 string to match.
4680 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4681 break;
4682 Mnemonic = "v_lshlrev_b16"; // "v_lshlrev_b16_e64"
4683 return;
4684 case '3': // 1 string to match.
4685 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4686 break;
4687 Mnemonic = "v_lshlrev_b32"; // "v_lshlrev_b32_e64"
4688 return;
4689 case '6': // 1 string to match.
4690 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4691 break;
4692 Mnemonic = "v_lshlrev_b64"; // "v_lshlrev_b64_e64"
4693 return;
4694 }
4695 break;
4696 }
4697 break;
4698 case 'r': // 3 strings to match.
4699 if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
4700 break;
4701 switch (Mnemonic[11]) {
4702 default: break;
4703 case '1': // 1 string to match.
4704 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4705 break;
4706 Mnemonic = "v_lshrrev_b16"; // "v_lshrrev_b16_e64"
4707 return;
4708 case '3': // 1 string to match.
4709 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
4710 break;
4711 Mnemonic = "v_lshrrev_b32"; // "v_lshrrev_b32_e64"
4712 return;
4713 case '6': // 1 string to match.
4714 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4715 break;
4716 Mnemonic = "v_lshrrev_b64"; // "v_lshrrev_b64_e64"
4717 return;
4718 }
4719 break;
4720 }
4721 break;
4722 case 'm': // 12 strings to match.
4723 switch (Mnemonic[3]) {
4724 default: break;
4725 case 'a': // 7 strings to match.
4726 if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
4727 break;
4728 switch (Mnemonic[6]) {
4729 default: break;
4730 case 'i': // 3 strings to match.
4731 switch (Mnemonic[7]) {
4732 default: break;
4733 case '3': // 2 strings to match.
4734 if (memcmp(Mnemonic.data()+8, "2_i", 3) != 0)
4735 break;
4736 switch (Mnemonic[11]) {
4737 default: break;
4738 case '1': // 1 string to match.
4739 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4740 break;
4741 Mnemonic = "v_mad_i32_i16"; // "v_mad_i32_i16_e64"
4742 return;
4743 case '2': // 1 string to match.
4744 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4745 break;
4746 Mnemonic = "v_mad_i32_i24"; // "v_mad_i32_i24_e64"
4747 return;
4748 }
4749 break;
4750 case '6': // 1 string to match.
4751 if (memcmp(Mnemonic.data()+8, "4_i32_e64", 9) != 0)
4752 break;
4753 Mnemonic = "v_mad_i64_i32"; // "v_mad_i64_i32_e64"
4754 return;
4755 }
4756 break;
4757 case 'm': // 1 string to match.
4758 if (memcmp(Mnemonic.data()+7, "ix_f32_e64", 10) != 0)
4759 break;
4760 Mnemonic = "v_mad_mix_f32"; // "v_mad_mix_f32_e64"
4761 return;
4762 case 'u': // 3 strings to match.
4763 switch (Mnemonic[7]) {
4764 default: break;
4765 case '3': // 2 strings to match.
4766 if (memcmp(Mnemonic.data()+8, "2_u", 3) != 0)
4767 break;
4768 switch (Mnemonic[11]) {
4769 default: break;
4770 case '1': // 1 string to match.
4771 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
4772 break;
4773 Mnemonic = "v_mad_u32_u16"; // "v_mad_u32_u16_e64"
4774 return;
4775 case '2': // 1 string to match.
4776 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
4777 break;
4778 Mnemonic = "v_mad_u32_u24"; // "v_mad_u32_u24_e64"
4779 return;
4780 }
4781 break;
4782 case '6': // 1 string to match.
4783 if (memcmp(Mnemonic.data()+8, "4_u32_e64", 9) != 0)
4784 break;
4785 Mnemonic = "v_mad_u64_u32"; // "v_mad_u64_u32_e64"
4786 return;
4787 }
4788 break;
4789 }
4790 break;
4791 case 'o': // 3 strings to match.
4792 if (Mnemonic[4] != 'v')
4793 break;
4794 switch (Mnemonic[5]) {
4795 default: break;
4796 case '_': // 1 string to match.
4797 if (memcmp(Mnemonic.data()+6, "fed_b32_e64", 11) != 0)
4798 break;
4799 Mnemonic = "v_mov_fed_b32"; // "v_mov_fed_b32_e64"
4800 return;
4801 case 'r': // 2 strings to match.
4802 if (memcmp(Mnemonic.data()+6, "el", 2) != 0)
4803 break;
4804 switch (Mnemonic[8]) {
4805 default: break;
4806 case 'd': // 1 string to match.
4807 if (memcmp(Mnemonic.data()+9, "_b32_e64", 8) != 0)
4808 break;
4809 Mnemonic = "v_movreld_b32"; // "v_movreld_b32_e64"
4810 return;
4811 case 's': // 1 string to match.
4812 if (memcmp(Mnemonic.data()+9, "_b32_e64", 8) != 0)
4813 break;
4814 Mnemonic = "v_movrels_b32"; // "v_movrels_b32_e64"
4815 return;
4816 }
4817 break;
4818 }
4819 break;
4820 case 'u': // 2 strings to match.
4821 if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
4822 break;
4823 switch (Mnemonic[6]) {
4824 default: break;
4825 case 'i': // 1 string to match.
4826 if (memcmp(Mnemonic.data()+7, "32_i24_e64", 10) != 0)
4827 break;
4828 Mnemonic = "v_mul_i32_i24"; // "v_mul_i32_i24_e64"
4829 return;
4830 case 'u': // 1 string to match.
4831 if (memcmp(Mnemonic.data()+7, "32_u24_e64", 10) != 0)
4832 break;
4833 Mnemonic = "v_mul_u32_u24"; // "v_mul_u32_u24_e64"
4834 return;
4835 }
4836 break;
4837 }
4838 break;
4839 case 's': // 1 string to match.
4840 if (memcmp(Mnemonic.data()+3, "ubbrev_u32_e64", 14) != 0)
4841 break;
4842 Mnemonic = "v_subbrev_u32"; // "v_subbrev_u32_e64"
4843 return;
4844 }
4845 break;
4846 case 18: // 62 strings to match.
4847 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
4848 break;
4849 switch (Mnemonic[2]) {
4850 default: break;
4851 case 'a': // 3 strings to match.
4852 switch (Mnemonic[3]) {
4853 default: break;
4854 case 'd': // 2 strings to match.
4855 if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
4856 break;
4857 switch (Mnemonic[6]) {
4858 default: break;
4859 case 'i': // 1 string to match.
4860 if (memcmp(Mnemonic.data()+7, "32_gfx9_e64", 11) != 0)
4861 break;
4862 Mnemonic = "v_add_i32_gfx9"; // "v_add_i32_gfx9_e64"
4863 return;
4864 case 'l': // 1 string to match.
4865 if (memcmp(Mnemonic.data()+7, "shl_u32_e64", 11) != 0)
4866 break;
4867 Mnemonic = "v_add_lshl_u32"; // "v_add_lshl_u32_e64"
4868 return;
4869 }
4870 break;
4871 case 'l': // 1 string to match.
4872 if (memcmp(Mnemonic.data()+4, "ignbit_b32_e64", 14) != 0)
4873 break;
4874 Mnemonic = "v_alignbit_b32"; // "v_alignbit_b32_e64"
4875 return;
4876 }
4877 break;
4878 case 'b': // 1 string to match.
4879 if (memcmp(Mnemonic.data()+3, "cnt_u32_b32_e64", 15) != 0)
4880 break;
4881 Mnemonic = "v_bcnt_u32_b32"; // "v_bcnt_u32_b32_e64"
4882 return;
4883 case 'c': // 47 strings to match.
4884 if (memcmp(Mnemonic.data()+3, "mp", 2) != 0)
4885 break;
4886 switch (Mnemonic[5]) {
4887 default: break;
4888 case 's': // 26 strings to match.
4889 switch (Mnemonic[6]) {
4890 default: break;
4891 case '_': // 14 strings to match.
4892 switch (Mnemonic[7]) {
4893 default: break;
4894 case 'n': // 12 strings to match.
4895 switch (Mnemonic[8]) {
4896 default: break;
4897 case 'e': // 2 strings to match.
4898 if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
4899 break;
4900 switch (Mnemonic[12]) {
4901 default: break;
4902 case '3': // 1 string to match.
4903 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
4904 break;
4905 Mnemonic = "v_cmps_neq_f32"; // "v_cmps_neq_f32_e64"
4906 return;
4907 case '6': // 1 string to match.
4908 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
4909 break;
4910 Mnemonic = "v_cmps_neq_f64"; // "v_cmps_neq_f64_e64"
4911 return;
4912 }
4913 break;
4914 case 'g': // 4 strings to match.
4915 switch (Mnemonic[9]) {
4916 default: break;
4917 case 'e': // 2 strings to match.
4918 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
4919 break;
4920 switch (Mnemonic[12]) {
4921 default: break;
4922 case '3': // 1 string to match.
4923 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
4924 break;
4925 Mnemonic = "v_cmps_nge_f32"; // "v_cmps_nge_f32_e64"
4926 return;
4927 case '6': // 1 string to match.
4928 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
4929 break;
4930 Mnemonic = "v_cmps_nge_f64"; // "v_cmps_nge_f64_e64"
4931 return;
4932 }
4933 break;
4934 case 't': // 2 strings to match.
4935 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
4936 break;
4937 switch (Mnemonic[12]) {
4938 default: break;
4939 case '3': // 1 string to match.
4940 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
4941 break;
4942 Mnemonic = "v_cmps_ngt_f32"; // "v_cmps_ngt_f32_e64"
4943 return;
4944 case '6': // 1 string to match.
4945 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
4946 break;
4947 Mnemonic = "v_cmps_ngt_f64"; // "v_cmps_ngt_f64_e64"
4948 return;
4949 }
4950 break;
4951 }
4952 break;
4953 case 'l': // 6 strings to match.
4954 switch (Mnemonic[9]) {
4955 default: break;
4956 case 'e': // 2 strings to match.
4957 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
4958 break;
4959 switch (Mnemonic[12]) {
4960 default: break;
4961 case '3': // 1 string to match.
4962 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
4963 break;
4964 Mnemonic = "v_cmps_nle_f32"; // "v_cmps_nle_f32_e64"
4965 return;
4966 case '6': // 1 string to match.
4967 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
4968 break;
4969 Mnemonic = "v_cmps_nle_f64"; // "v_cmps_nle_f64_e64"
4970 return;
4971 }
4972 break;
4973 case 'g': // 2 strings to match.
4974 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
4975 break;
4976 switch (Mnemonic[12]) {
4977 default: break;
4978 case '3': // 1 string to match.
4979 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
4980 break;
4981 Mnemonic = "v_cmps_nlg_f32"; // "v_cmps_nlg_f32_e64"
4982 return;
4983 case '6': // 1 string to match.
4984 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
4985 break;
4986 Mnemonic = "v_cmps_nlg_f64"; // "v_cmps_nlg_f64_e64"
4987 return;
4988 }
4989 break;
4990 case 't': // 2 strings to match.
4991 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
4992 break;
4993 switch (Mnemonic[12]) {
4994 default: break;
4995 case '3': // 1 string to match.
4996 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
4997 break;
4998 Mnemonic = "v_cmps_nlt_f32"; // "v_cmps_nlt_f32_e64"
4999 return;
5000 case '6': // 1 string to match.
5001 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5002 break;
5003 Mnemonic = "v_cmps_nlt_f64"; // "v_cmps_nlt_f64_e64"
5004 return;
5005 }
5006 break;
5007 }
5008 break;
5009 }
5010 break;
5011 case 't': // 2 strings to match.
5012 if (memcmp(Mnemonic.data()+8, "ru_f", 4) != 0)
5013 break;
5014 switch (Mnemonic[12]) {
5015 default: break;
5016 case '3': // 1 string to match.
5017 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5018 break;
5019 Mnemonic = "v_cmps_tru_f32"; // "v_cmps_tru_f32_e64"
5020 return;
5021 case '6': // 1 string to match.
5022 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5023 break;
5024 Mnemonic = "v_cmps_tru_f64"; // "v_cmps_tru_f64_e64"
5025 return;
5026 }
5027 break;
5028 }
5029 break;
5030 case 'x': // 12 strings to match.
5031 if (Mnemonic[7] != '_')
5032 break;
5033 switch (Mnemonic[8]) {
5034 default: break;
5035 case 'e': // 2 strings to match.
5036 if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
5037 break;
5038 switch (Mnemonic[12]) {
5039 default: break;
5040 case '3': // 1 string to match.
5041 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5042 break;
5043 Mnemonic = "v_cmpsx_eq_f32"; // "v_cmpsx_eq_f32_e64"
5044 return;
5045 case '6': // 1 string to match.
5046 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5047 break;
5048 Mnemonic = "v_cmpsx_eq_f64"; // "v_cmpsx_eq_f64_e64"
5049 return;
5050 }
5051 break;
5052 case 'g': // 4 strings to match.
5053 switch (Mnemonic[9]) {
5054 default: break;
5055 case 'e': // 2 strings to match.
5056 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5057 break;
5058 switch (Mnemonic[12]) {
5059 default: break;
5060 case '3': // 1 string to match.
5061 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5062 break;
5063 Mnemonic = "v_cmpsx_ge_f32"; // "v_cmpsx_ge_f32_e64"
5064 return;
5065 case '6': // 1 string to match.
5066 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5067 break;
5068 Mnemonic = "v_cmpsx_ge_f64"; // "v_cmpsx_ge_f64_e64"
5069 return;
5070 }
5071 break;
5072 case 't': // 2 strings to match.
5073 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5074 break;
5075 switch (Mnemonic[12]) {
5076 default: break;
5077 case '3': // 1 string to match.
5078 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5079 break;
5080 Mnemonic = "v_cmpsx_gt_f32"; // "v_cmpsx_gt_f32_e64"
5081 return;
5082 case '6': // 1 string to match.
5083 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5084 break;
5085 Mnemonic = "v_cmpsx_gt_f64"; // "v_cmpsx_gt_f64_e64"
5086 return;
5087 }
5088 break;
5089 }
5090 break;
5091 case 'l': // 6 strings to match.
5092 switch (Mnemonic[9]) {
5093 default: break;
5094 case 'e': // 2 strings to match.
5095 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5096 break;
5097 switch (Mnemonic[12]) {
5098 default: break;
5099 case '3': // 1 string to match.
5100 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5101 break;
5102 Mnemonic = "v_cmpsx_le_f32"; // "v_cmpsx_le_f32_e64"
5103 return;
5104 case '6': // 1 string to match.
5105 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5106 break;
5107 Mnemonic = "v_cmpsx_le_f64"; // "v_cmpsx_le_f64_e64"
5108 return;
5109 }
5110 break;
5111 case 'g': // 2 strings to match.
5112 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5113 break;
5114 switch (Mnemonic[12]) {
5115 default: break;
5116 case '3': // 1 string to match.
5117 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5118 break;
5119 Mnemonic = "v_cmpsx_lg_f32"; // "v_cmpsx_lg_f32_e64"
5120 return;
5121 case '6': // 1 string to match.
5122 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5123 break;
5124 Mnemonic = "v_cmpsx_lg_f64"; // "v_cmpsx_lg_f64_e64"
5125 return;
5126 }
5127 break;
5128 case 't': // 2 strings to match.
5129 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5130 break;
5131 switch (Mnemonic[12]) {
5132 default: break;
5133 case '3': // 1 string to match.
5134 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5135 break;
5136 Mnemonic = "v_cmpsx_lt_f32"; // "v_cmpsx_lt_f32_e64"
5137 return;
5138 case '6': // 1 string to match.
5139 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5140 break;
5141 Mnemonic = "v_cmpsx_lt_f64"; // "v_cmpsx_lt_f64_e64"
5142 return;
5143 }
5144 break;
5145 }
5146 break;
5147 }
5148 break;
5149 }
5150 break;
5151 case 'x': // 21 strings to match.
5152 if (Mnemonic[6] != '_')
5153 break;
5154 switch (Mnemonic[7]) {
5155 default: break;
5156 case 'n': // 18 strings to match.
5157 switch (Mnemonic[8]) {
5158 default: break;
5159 case 'e': // 3 strings to match.
5160 if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
5161 break;
5162 switch (Mnemonic[12]) {
5163 default: break;
5164 case '1': // 1 string to match.
5165 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
5166 break;
5167 Mnemonic = "v_cmpx_neq_f16"; // "v_cmpx_neq_f16_e64"
5168 return;
5169 case '3': // 1 string to match.
5170 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5171 break;
5172 Mnemonic = "v_cmpx_neq_f32"; // "v_cmpx_neq_f32_e64"
5173 return;
5174 case '6': // 1 string to match.
5175 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5176 break;
5177 Mnemonic = "v_cmpx_neq_f64"; // "v_cmpx_neq_f64_e64"
5178 return;
5179 }
5180 break;
5181 case 'g': // 6 strings to match.
5182 switch (Mnemonic[9]) {
5183 default: break;
5184 case 'e': // 3 strings to match.
5185 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5186 break;
5187 switch (Mnemonic[12]) {
5188 default: break;
5189 case '1': // 1 string to match.
5190 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
5191 break;
5192 Mnemonic = "v_cmpx_nge_f16"; // "v_cmpx_nge_f16_e64"
5193 return;
5194 case '3': // 1 string to match.
5195 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5196 break;
5197 Mnemonic = "v_cmpx_nge_f32"; // "v_cmpx_nge_f32_e64"
5198 return;
5199 case '6': // 1 string to match.
5200 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5201 break;
5202 Mnemonic = "v_cmpx_nge_f64"; // "v_cmpx_nge_f64_e64"
5203 return;
5204 }
5205 break;
5206 case 't': // 3 strings to match.
5207 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5208 break;
5209 switch (Mnemonic[12]) {
5210 default: break;
5211 case '1': // 1 string to match.
5212 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
5213 break;
5214 Mnemonic = "v_cmpx_ngt_f16"; // "v_cmpx_ngt_f16_e64"
5215 return;
5216 case '3': // 1 string to match.
5217 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5218 break;
5219 Mnemonic = "v_cmpx_ngt_f32"; // "v_cmpx_ngt_f32_e64"
5220 return;
5221 case '6': // 1 string to match.
5222 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5223 break;
5224 Mnemonic = "v_cmpx_ngt_f64"; // "v_cmpx_ngt_f64_e64"
5225 return;
5226 }
5227 break;
5228 }
5229 break;
5230 case 'l': // 9 strings to match.
5231 switch (Mnemonic[9]) {
5232 default: break;
5233 case 'e': // 3 strings to match.
5234 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5235 break;
5236 switch (Mnemonic[12]) {
5237 default: break;
5238 case '1': // 1 string to match.
5239 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
5240 break;
5241 Mnemonic = "v_cmpx_nle_f16"; // "v_cmpx_nle_f16_e64"
5242 return;
5243 case '3': // 1 string to match.
5244 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5245 break;
5246 Mnemonic = "v_cmpx_nle_f32"; // "v_cmpx_nle_f32_e64"
5247 return;
5248 case '6': // 1 string to match.
5249 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5250 break;
5251 Mnemonic = "v_cmpx_nle_f64"; // "v_cmpx_nle_f64_e64"
5252 return;
5253 }
5254 break;
5255 case 'g': // 3 strings to match.
5256 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5257 break;
5258 switch (Mnemonic[12]) {
5259 default: break;
5260 case '1': // 1 string to match.
5261 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
5262 break;
5263 Mnemonic = "v_cmpx_nlg_f16"; // "v_cmpx_nlg_f16_e64"
5264 return;
5265 case '3': // 1 string to match.
5266 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5267 break;
5268 Mnemonic = "v_cmpx_nlg_f32"; // "v_cmpx_nlg_f32_e64"
5269 return;
5270 case '6': // 1 string to match.
5271 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5272 break;
5273 Mnemonic = "v_cmpx_nlg_f64"; // "v_cmpx_nlg_f64_e64"
5274 return;
5275 }
5276 break;
5277 case 't': // 3 strings to match.
5278 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
5279 break;
5280 switch (Mnemonic[12]) {
5281 default: break;
5282 case '1': // 1 string to match.
5283 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
5284 break;
5285 Mnemonic = "v_cmpx_nlt_f16"; // "v_cmpx_nlt_f16_e64"
5286 return;
5287 case '3': // 1 string to match.
5288 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5289 break;
5290 Mnemonic = "v_cmpx_nlt_f32"; // "v_cmpx_nlt_f32_e64"
5291 return;
5292 case '6': // 1 string to match.
5293 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5294 break;
5295 Mnemonic = "v_cmpx_nlt_f64"; // "v_cmpx_nlt_f64_e64"
5296 return;
5297 }
5298 break;
5299 }
5300 break;
5301 }
5302 break;
5303 case 't': // 3 strings to match.
5304 if (memcmp(Mnemonic.data()+8, "ru_f", 4) != 0)
5305 break;
5306 switch (Mnemonic[12]) {
5307 default: break;
5308 case '1': // 1 string to match.
5309 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
5310 break;
5311 Mnemonic = "v_cmpx_tru_f16"; // "v_cmpx_tru_f16_e64"
5312 return;
5313 case '3': // 1 string to match.
5314 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5315 break;
5316 Mnemonic = "v_cmpx_tru_f32"; // "v_cmpx_tru_f32_e64"
5317 return;
5318 case '6': // 1 string to match.
5319 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5320 break;
5321 Mnemonic = "v_cmpx_tru_f64"; // "v_cmpx_tru_f64_e64"
5322 return;
5323 }
5324 break;
5325 }
5326 break;
5327 }
5328 break;
5329 case 'd': // 2 strings to match.
5330 if (memcmp(Mnemonic.data()+3, "iv_fmas_f", 9) != 0)
5331 break;
5332 switch (Mnemonic[12]) {
5333 default: break;
5334 case '3': // 1 string to match.
5335 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
5336 break;
5337 Mnemonic = "v_div_fmas_f32"; // "v_div_fmas_f32_e64"
5338 return;
5339 case '6': // 1 string to match.
5340 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
5341 break;
5342 Mnemonic = "v_div_fmas_f64"; // "v_div_fmas_f64_e64"
5343 return;
5344 }
5345 break;
5346 case 'f': // 1 string to match.
5347 if (memcmp(Mnemonic.data()+3, "ma_f16_gfx9_e64", 15) != 0)
5348 break;
5349 Mnemonic = "v_fma_f16_gfx9"; // "v_fma_f16_gfx9_e64"
5350 return;
5351 case 'l': // 1 string to match.
5352 if (memcmp(Mnemonic.data()+3, "shl_add_u32_e64", 15) != 0)
5353 break;
5354 Mnemonic = "v_lshl_add_u32"; // "v_lshl_add_u32_e64"
5355 return;
5356 case 'm': // 5 strings to match.
5357 switch (Mnemonic[3]) {
5358 default: break;
5359 case 'a': // 3 strings to match.
5360 if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
5361 break;
5362 switch (Mnemonic[6]) {
5363 default: break;
5364 case 'f': // 1 string to match.
5365 if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
5366 break;
5367 Mnemonic = "v_mad_f16_gfx9"; // "v_mad_f16_gfx9_e64"
5368 return;
5369 case 'i': // 1 string to match.
5370 if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
5371 break;
5372 Mnemonic = "v_mad_i16_gfx9"; // "v_mad_i16_gfx9_e64"
5373 return;
5374 case 'u': // 1 string to match.
5375 if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
5376 break;
5377 Mnemonic = "v_mad_u16_gfx9"; // "v_mad_u16_gfx9_e64"
5378 return;
5379 }
5380 break;
5381 case 'o': // 1 string to match.
5382 if (memcmp(Mnemonic.data()+4, "vrelsd_b32_e64", 14) != 0)
5383 break;
5384 Mnemonic = "v_movrelsd_b32"; // "v_movrelsd_b32_e64"
5385 return;
5386 case 'q': // 1 string to match.
5387 if (memcmp(Mnemonic.data()+4, "sad_u32_u8_e64", 14) != 0)
5388 break;
5389 Mnemonic = "v_mqsad_u32_u8"; // "v_mqsad_u32_u8_e64"
5390 return;
5391 }
5392 break;
5393 case 'p': // 1 string to match.
5394 if (memcmp(Mnemonic.data()+3, "ack_b32_f16_e64", 15) != 0)
5395 break;
5396 Mnemonic = "v_pack_b32_f16"; // "v_pack_b32_f16_e64"
5397 return;
5398 case 's': // 1 string to match.
5399 if (memcmp(Mnemonic.data()+3, "ub_i32_gfx9_e64", 15) != 0)
5400 break;
5401 Mnemonic = "v_sub_i32_gfx9"; // "v_sub_i32_gfx9_e64"
5402 return;
5403 }
5404 break;
5405 case 19: // 37 strings to match.
5406 if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
5407 break;
5408 switch (Mnemonic[2]) {
5409 default: break;
5410 case 'a': // 1 string to match.
5411 if (memcmp(Mnemonic.data()+3, "lignbyte_b32_e64", 16) != 0)
5412 break;
5413 Mnemonic = "v_alignbyte_b32"; // "v_alignbyte_b32_e64"
5414 return;
5415 case 'c': // 18 strings to match.
5416 switch (Mnemonic[3]) {
5417 default: break;
5418 case 'm': // 17 strings to match.
5419 if (Mnemonic[4] != 'p')
5420 break;
5421 switch (Mnemonic[5]) {
5422 default: break;