Bug Summary

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