LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/AMDGPU - AMDGPUGenAsmMatcher.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 673 4491 15.0 %
Date: 2018-09-23 13:06:45 Functions: 10 19 52.6 %
Legend: Lines: hit not hit

          Line data    Source code
       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.
      46             : enum SubtargetFeatureFlag : uint64_t {
      47             :   Feature_isSICI = (1ULL << 30),
      48             :   Feature_isVI = (1ULL << 31),
      49             :   Feature_isGFX9 = (1ULL << 28),
      50             :   Feature_isCIVI = (1ULL << 26),
      51             :   Feature_HasFlatAddressSpace = (1ULL << 8),
      52             :   Feature_HasFlatGlobalInsts = (1ULL << 9),
      53             :   Feature_HasFlatScratchInsts = (1ULL << 10),
      54             :   Feature_HasD16LoadStore = (1ULL << 4),
      55             :   Feature_HasUnpackedD16VMem = (1ULL << 20),
      56             :   Feature_HasPackedD16VMem = (1ULL << 15),
      57             :   Feature_D16PreservesUnusedBits = (1ULL << 0),
      58             :   Feature_HasDSAddTid = (1ULL << 7),
      59             :   Feature_HasAddNoCarryInsts = (1ULL << 3),
      60             :   Feature_NotHasAddNoCarryInsts = (1ULL << 23),
      61             :   Feature_Has16BitInsts = (1ULL << 2),
      62             :   Feature_HasVOP3PInsts = (1ULL << 22),
      63             :   Feature_NotHasVOP3PInsts = (1ULL << 24),
      64             :   Feature_HasSDWA = (1ULL << 17),
      65             :   Feature_HasSDWA9 = (1ULL << 18),
      66             :   Feature_HasDPP = (1ULL << 6),
      67             :   Feature_HasR128A16 = (1ULL << 16),
      68             :   Feature_HasIntClamp = (1ULL << 12),
      69             :   Feature_HasMadMixInsts = (1ULL << 13),
      70             :   Feature_HasScalarAtomics = (1ULL << 19),
      71             :   Feature_HasVGPRIndexMode = (1ULL << 21),
      72             :   Feature_HasMovrel = (1ULL << 14),
      73             :   Feature_HasFmaMixInsts = (1ULL << 11),
      74             :   Feature_HasDLInsts = (1ULL << 5),
      75             :   Feature_isCIOnly = (1ULL << 25),
      76             :   Feature_isVIOnly = (1ULL << 32),
      77             :   Feature_DisableInst = (1ULL << 1),
      78             :   Feature_isGCN = (1ULL << 27),
      79             :   Feature_isSI = (1ULL << 29),
      80             :   Feature_None = 0
      81             : };
      82             : 
      83             : #endif // GET_REGISTER_MATCHER
      84             : 
      85             : 
      86             : #ifdef GET_SUBTARGET_FEATURE_NAME
      87             : #undef GET_SUBTARGET_FEATURE_NAME
      88             : 
      89             : // User-level names for subtarget features that participate in
      90             : // instruction matching.
      91             : static const char *getSubtargetFeatureName(uint64_t Val) {
      92             :   switch(Val) {
      93             :   case Feature_isSICI: return "";
      94             :   case Feature_isVI: return "";
      95             :   case Feature_isGFX9: return "";
      96             :   case Feature_isCIVI: return "";
      97             :   case Feature_HasFlatAddressSpace: return "";
      98             :   case Feature_HasFlatGlobalInsts: return "";
      99             :   case Feature_HasFlatScratchInsts: return "";
     100             :   case Feature_HasD16LoadStore: return "";
     101             :   case Feature_HasUnpackedD16VMem: return "";
     102             :   case Feature_HasPackedD16VMem: return "";
     103             :   case Feature_D16PreservesUnusedBits: return "";
     104             :   case Feature_HasDSAddTid: return "";
     105             :   case Feature_HasAddNoCarryInsts: return "";
     106             :   case Feature_NotHasAddNoCarryInsts: return "";
     107             :   case Feature_Has16BitInsts: return "";
     108             :   case Feature_HasVOP3PInsts: return "";
     109             :   case Feature_NotHasVOP3PInsts: return "";
     110             :   case Feature_HasSDWA: return "";
     111             :   case Feature_HasSDWA9: return "";
     112             :   case Feature_HasDPP: return "";
     113             :   case Feature_HasR128A16: return "";
     114             :   case Feature_HasIntClamp: return "";
     115             :   case Feature_HasMadMixInsts: return "";
     116             :   case Feature_HasScalarAtomics: return "";
     117             :   case Feature_HasVGPRIndexMode: return "";
     118             :   case Feature_HasMovrel: return "";
     119             :   case Feature_HasFmaMixInsts: return "";
     120             :   case Feature_HasDLInsts: return "";
     121             :   case Feature_isCIOnly: return "";
     122             :   case Feature_isVIOnly: return "";
     123             :   case Feature_DisableInst: return "";
     124             :   case Feature_isGCN: return "";
     125             :   case Feature_isSI: return "";
     126             :   default: return "(unknown)";
     127             :   }
     128             : }
     129             : 
     130             : #endif // GET_SUBTARGET_FEATURE_NAME
     131             : 
     132             : 
     133             : #ifdef GET_MATCHER_IMPLEMENTATION
     134             : #undef GET_MATCHER_IMPLEMENTATION
     135             : 
     136      216633 : static void applyMnemonicAliases(StringRef &Mnemonic, uint64_t Features, unsigned VariantID) {
     137      216633 :   switch (VariantID) {
     138             :     case 0:
     139             :       switch (Mnemonic.size()) {
     140             :       default: break;
     141             :       case 9:    // 1 string to match.
     142       14496 :         if (memcmp(Mnemonic.data()+0, "v_nop_e32", 9) != 0)
     143             :           break;
     144           0 :         Mnemonic = "v_nop";    // "v_nop_e32"
     145           0 :         return;
     146             :       case 10:   // 1 string to match.
     147        9017 :         if (memcmp(Mnemonic.data()+0, "v_swap_b32", 10) != 0)
     148             :           break;
     149          29 :         Mnemonic = "v_swap_b32";       // "v_swap_b32"
     150          29 :         return;
     151             :       case 11:   // 2 strings to match.
     152        5021 :         if (memcmp(Mnemonic.data()+0, "v_mad", 5) != 0)
     153             :           break;
     154             :         switch (Mnemonic[5]) {
     155             :         default: break;
     156             :         case 'a':        // 1 string to match.
     157          93 :           if (memcmp(Mnemonic.data()+6, "k_f16", 5) != 0)
     158             :             break;
     159          35 :           Mnemonic = "v_madak_f16";    // "v_madak_f16"
     160          35 :           return;
     161             :         case 'm':        // 1 string to match.
     162          83 :           if (memcmp(Mnemonic.data()+6, "k_f16", 5) != 0)
     163             :             break;
     164          39 :           Mnemonic = "v_madmk_f16";    // "v_madmk_f16"
     165          39 :           return;
     166             :         }
     167             :         break;
     168             :       case 12:   // 1 string to match.
     169       11824 :         if (memcmp(Mnemonic.data()+0, "v_or_b32_e32", 12) != 0)
     170             :           break;
     171           0 :         if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_or_b32_e32"
     172           0 :           Mnemonic = "v_or_b32";
     173             :         return;
     174             :       case 13:   // 46 strings to match.
     175       13990 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
     176             :           break;
     177             :         switch (Mnemonic[2]) {
     178             :         default: break;
     179         304 :         case 'a':        // 6 strings to match.
     180             :           switch (Mnemonic[3]) {
     181             :           default: break;
     182             :           case 'd':      // 5 strings to match.
     183          18 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
     184             :               break;
     185             :             switch (Mnemonic[6]) {
     186             :             default: break;
     187           0 :             case 'f':    // 2 strings to match.
     188             :               switch (Mnemonic[7]) {
     189             :               default: break;
     190             :               case '1':  // 1 string to match.
     191           0 :                 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     192             :                   break;
     193           0 :                 Mnemonic = "v_add_f16";        // "v_add_f16_e32"
     194           0 :                 return;
     195             :               case '3':  // 1 string to match.
     196           0 :                 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     197             :                   break;
     198           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_f32_e32"
     199           0 :                   Mnemonic = "v_add_f32";
     200             :                 return;
     201             :               }
     202             :               break;
     203             :             case 'i':    // 1 string to match.
     204           0 :               if (memcmp(Mnemonic.data()+7, "32_e32", 6) != 0)
     205             :                 break;
     206           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_add_i32_e32"
     207           0 :                 Mnemonic = "v_add_i32";
     208             :               return;
     209           0 :             case 'u':    // 2 strings to match.
     210             :               switch (Mnemonic[7]) {
     211             :               default: break;
     212             :               case '1':  // 1 string to match.
     213           0 :                 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     214             :                   break;
     215           0 :                 Mnemonic = "v_add_u16";        // "v_add_u16_e32"
     216           0 :                 return;
     217             :               case '3':  // 1 string to match.
     218           0 :                 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     219             :                   break;
     220           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_u32_e32"
     221           0 :                   Mnemonic = "v_add_u32";
     222             :                 return;
     223             :               }
     224             :               break;
     225             :             }
     226             :             break;
     227             :           case 'n':      // 1 string to match.
     228           0 :             if (memcmp(Mnemonic.data()+4, "d_b32_e32", 9) != 0)
     229             :               break;
     230           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_and_b32_e32"
     231           0 :               Mnemonic = "v_and_b32";
     232             :             return;
     233             :           }
     234             :           break;
     235             :         case 'b':        // 1 string to match.
     236           0 :           if (memcmp(Mnemonic.data()+3, "fm_b32_e32", 10) != 0)
     237             :             break;
     238           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_bfm_b32_e32"
     239           0 :             Mnemonic = "v_bfm_b32";
     240             :           return;
     241        7160 :         case 'c':        // 3 strings to match.
     242             :           switch (Mnemonic[3]) {
     243             :           default: break;
     244             :           case 'l':      // 1 string to match.
     245           0 :             if (memcmp(Mnemonic.data()+4, "rexcp_e32", 9) != 0)
     246             :               break;
     247           0 :             Mnemonic = "v_clrexcp";    // "v_clrexcp_e32"
     248           0 :             return;
     249             :           case 'o':      // 2 strings to match.
     250           0 :             if (memcmp(Mnemonic.data()+4, "s_f", 3) != 0)
     251             :               break;
     252             :             switch (Mnemonic[7]) {
     253             :             default: break;
     254             :             case '1':    // 1 string to match.
     255           0 :               if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     256             :                 break;
     257           0 :               Mnemonic = "v_cos_f16";  // "v_cos_f16_e32"
     258           0 :               return;
     259             :             case '3':    // 1 string to match.
     260           0 :               if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     261             :                 break;
     262           0 :               Mnemonic = "v_cos_f32";  // "v_cos_f32_e32"
     263           0 :               return;
     264             :             }
     265             :             break;
     266             :           }
     267             :           break;
     268             :         case 'e':        // 2 strings to match.
     269           0 :           if (memcmp(Mnemonic.data()+3, "xp_f", 4) != 0)
     270             :             break;
     271             :           switch (Mnemonic[7]) {
     272             :           default: break;
     273             :           case '1':      // 1 string to match.
     274           0 :             if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     275             :               break;
     276           0 :             Mnemonic = "v_exp_f16";    // "v_exp_f16_e32"
     277           0 :             return;
     278             :           case '3':      // 1 string to match.
     279           0 :             if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     280             :               break;
     281           0 :             Mnemonic = "v_exp_f32";    // "v_exp_f32_e32"
     282           0 :             return;
     283             :           }
     284             :           break;
     285             :         case 'l':        // 2 strings to match.
     286         666 :           if (memcmp(Mnemonic.data()+3, "og_f", 4) != 0)
     287             :             break;
     288             :           switch (Mnemonic[7]) {
     289             :           default: break;
     290             :           case '1':      // 1 string to match.
     291           0 :             if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     292             :               break;
     293           0 :             Mnemonic = "v_log_f16";    // "v_log_f16_e32"
     294           0 :             return;
     295             :           case '3':      // 1 string to match.
     296           0 :             if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     297             :               break;
     298           0 :             Mnemonic = "v_log_f32";    // "v_log_f32_e32"
     299           0 :             return;
     300             :           }
     301             :           break;
     302        1734 :         case 'm':        // 17 strings to match.
     303             :           switch (Mnemonic[3]) {
     304             :           default: break;
     305        1258 :           case 'a':      // 8 strings to match.
     306             :             switch (Mnemonic[4]) {
     307             :             default: break;
     308             :             case 'c':    // 2 strings to match.
     309           0 :               if (memcmp(Mnemonic.data()+5, "_f", 2) != 0)
     310             :                 break;
     311             :               switch (Mnemonic[7]) {
     312             :               default: break;
     313             :               case '1':  // 1 string to match.
     314           0 :                 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     315             :                   break;
     316           0 :                 Mnemonic = "v_mac_f16";        // "v_mac_f16_e32"
     317           0 :                 return;
     318             :               case '3':  // 1 string to match.
     319           0 :                 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     320             :                   break;
     321           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mac_f32_e32"
     322           0 :                   Mnemonic = "v_mac_f32";
     323             :                 return;
     324             :               }
     325             :               break;
     326           0 :             case 'x':    // 6 strings to match.
     327           0 :               if (Mnemonic[5] != '_')
     328             :                 break;
     329             :               switch (Mnemonic[6]) {
     330             :               default: break;
     331           0 :               case 'f':  // 2 strings to match.
     332             :                 switch (Mnemonic[7]) {
     333             :                 default: break;
     334             :                 case '1':        // 1 string to match.
     335           0 :                   if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     336             :                     break;
     337           0 :                   Mnemonic = "v_max_f16";      // "v_max_f16_e32"
     338           0 :                   return;
     339             :                 case '3':        // 1 string to match.
     340           0 :                   if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     341             :                     break;
     342           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_f32_e32"
     343           0 :                     Mnemonic = "v_max_f32";
     344             :                   return;
     345             :                 }
     346             :                 break;
     347           0 :               case 'i':  // 2 strings to match.
     348             :                 switch (Mnemonic[7]) {
     349             :                 default: break;
     350             :                 case '1':        // 1 string to match.
     351           0 :                   if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     352             :                     break;
     353           0 :                   Mnemonic = "v_max_i16";      // "v_max_i16_e32"
     354           0 :                   return;
     355             :                 case '3':        // 1 string to match.
     356           0 :                   if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     357             :                     break;
     358           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_i32_e32"
     359           0 :                     Mnemonic = "v_max_i32";
     360             :                   return;
     361             :                 }
     362             :                 break;
     363           0 :               case 'u':  // 2 strings to match.
     364             :                 switch (Mnemonic[7]) {
     365             :                 default: break;
     366             :                 case '1':        // 1 string to match.
     367           0 :                   if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     368             :                     break;
     369           0 :                   Mnemonic = "v_max_u16";      // "v_max_u16_e32"
     370           0 :                   return;
     371             :                 case '3':        // 1 string to match.
     372           0 :                   if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     373             :                     break;
     374           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_u32_e32"
     375           0 :                     Mnemonic = "v_max_u32";
     376             :                   return;
     377             :                 }
     378             :                 break;
     379             :               }
     380             :               break;
     381             :             }
     382             :             break;
     383             :           case 'i':      // 6 strings to match.
     384           0 :             if (memcmp(Mnemonic.data()+4, "n_", 2) != 0)
     385             :               break;
     386             :             switch (Mnemonic[6]) {
     387             :             default: break;
     388           0 :             case 'f':    // 2 strings to match.
     389             :               switch (Mnemonic[7]) {
     390             :               default: break;
     391             :               case '1':  // 1 string to match.
     392           0 :                 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     393             :                   break;
     394           0 :                 Mnemonic = "v_min_f16";        // "v_min_f16_e32"
     395           0 :                 return;
     396             :               case '3':  // 1 string to match.
     397           0 :                 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     398             :                   break;
     399           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_f32_e32"
     400           0 :                   Mnemonic = "v_min_f32";
     401             :                 return;
     402             :               }
     403             :               break;
     404           0 :             case 'i':    // 2 strings to match.
     405             :               switch (Mnemonic[7]) {
     406             :               default: break;
     407             :               case '1':  // 1 string to match.
     408           0 :                 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     409             :                   break;
     410           0 :                 Mnemonic = "v_min_i16";        // "v_min_i16_e32"
     411           0 :                 return;
     412             :               case '3':  // 1 string to match.
     413           0 :                 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     414             :                   break;
     415           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_i32_e32"
     416           0 :                   Mnemonic = "v_min_i32";
     417             :                 return;
     418             :               }
     419             :               break;
     420           0 :             case 'u':    // 2 strings to match.
     421             :               switch (Mnemonic[7]) {
     422             :               default: break;
     423             :               case '1':  // 1 string to match.
     424           0 :                 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     425             :                   break;
     426           0 :                 Mnemonic = "v_min_u16";        // "v_min_u16_e32"
     427           0 :                 return;
     428             :               case '3':  // 1 string to match.
     429           0 :                 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     430             :                   break;
     431           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_u32_e32"
     432           0 :                   Mnemonic = "v_min_u32";
     433             :                 return;
     434             :               }
     435             :               break;
     436             :             }
     437             :             break;
     438             :           case 'o':      // 1 string to match.
     439         164 :             if (memcmp(Mnemonic.data()+4, "v_b32_e32", 9) != 0)
     440             :               break;
     441           0 :             Mnemonic = "v_mov_b32";    // "v_mov_b32_e32"
     442           0 :             return;
     443             :           case 'u':      // 2 strings to match.
     444         312 :             if (memcmp(Mnemonic.data()+4, "l_f", 3) != 0)
     445             :               break;
     446             :             switch (Mnemonic[7]) {
     447             :             default: break;
     448             :             case '1':    // 1 string to match.
     449           0 :               if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     450             :                 break;
     451           0 :               Mnemonic = "v_mul_f16";  // "v_mul_f16_e32"
     452           0 :               return;
     453             :             case '3':    // 1 string to match.
     454           0 :               if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     455             :                 break;
     456           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_f32_e32"
     457           0 :                 Mnemonic = "v_mul_f32";
     458             :               return;
     459             :             }
     460             :             break;
     461             :           }
     462             :           break;
     463             :         case 'n':        // 1 string to match.
     464           0 :           if (memcmp(Mnemonic.data()+3, "ot_b32_e32", 10) != 0)
     465             :             break;
     466           0 :           Mnemonic = "v_not_b32";      // "v_not_b32_e32"
     467           0 :           return;
     468           0 :         case 'r':        // 6 strings to match.
     469             :           switch (Mnemonic[3]) {
     470             :           default: break;
     471             :           case 'c':      // 3 strings to match.
     472           0 :             if (memcmp(Mnemonic.data()+4, "p_f", 3) != 0)
     473             :               break;
     474             :             switch (Mnemonic[7]) {
     475             :             default: break;
     476             :             case '1':    // 1 string to match.
     477           0 :               if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     478             :                 break;
     479           0 :               Mnemonic = "v_rcp_f16";  // "v_rcp_f16_e32"
     480           0 :               return;
     481             :             case '3':    // 1 string to match.
     482           0 :               if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     483             :                 break;
     484           0 :               Mnemonic = "v_rcp_f32";  // "v_rcp_f32_e32"
     485           0 :               return;
     486             :             case '6':    // 1 string to match.
     487           0 :               if (memcmp(Mnemonic.data()+8, "4_e32", 5) != 0)
     488             :                 break;
     489           0 :               Mnemonic = "v_rcp_f64";  // "v_rcp_f64_e32"
     490           0 :               return;
     491             :             }
     492             :             break;
     493             :           case 's':      // 3 strings to match.
     494           0 :             if (memcmp(Mnemonic.data()+4, "q_f", 3) != 0)
     495             :               break;
     496             :             switch (Mnemonic[7]) {
     497             :             default: break;
     498             :             case '1':    // 1 string to match.
     499           0 :               if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     500             :                 break;
     501           0 :               Mnemonic = "v_rsq_f16";  // "v_rsq_f16_e32"
     502           0 :               return;
     503             :             case '3':    // 1 string to match.
     504           0 :               if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     505             :                 break;
     506           0 :               Mnemonic = "v_rsq_f32";  // "v_rsq_f32_e32"
     507           0 :               return;
     508             :             case '6':    // 1 string to match.
     509           0 :               if (memcmp(Mnemonic.data()+8, "4_e32", 5) != 0)
     510             :                 break;
     511           0 :               Mnemonic = "v_rsq_f64";  // "v_rsq_f64_e32"
     512           0 :               return;
     513             :             }
     514             :             break;
     515             :           }
     516             :           break;
     517          52 :         case 's':        // 7 strings to match.
     518             :           switch (Mnemonic[3]) {
     519             :           default: break;
     520             :           case 'i':      // 2 strings to match.
     521           0 :             if (memcmp(Mnemonic.data()+4, "n_f", 3) != 0)
     522             :               break;
     523             :             switch (Mnemonic[7]) {
     524             :             default: break;
     525             :             case '1':    // 1 string to match.
     526           0 :               if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     527             :                 break;
     528           0 :               Mnemonic = "v_sin_f16";  // "v_sin_f16_e32"
     529           0 :               return;
     530             :             case '3':    // 1 string to match.
     531           0 :               if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     532             :                 break;
     533           0 :               Mnemonic = "v_sin_f32";  // "v_sin_f32_e32"
     534           0 :               return;
     535             :             }
     536             :             break;
     537             :           case 'u':      // 5 strings to match.
     538          52 :             if (memcmp(Mnemonic.data()+4, "b_", 2) != 0)
     539             :               break;
     540             :             switch (Mnemonic[6]) {
     541             :             default: break;
     542           0 :             case 'f':    // 2 strings to match.
     543             :               switch (Mnemonic[7]) {
     544             :               default: break;
     545             :               case '1':  // 1 string to match.
     546           0 :                 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     547             :                   break;
     548           0 :                 Mnemonic = "v_sub_f16";        // "v_sub_f16_e32"
     549           0 :                 return;
     550             :               case '3':  // 1 string to match.
     551           0 :                 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     552             :                   break;
     553           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_f32_e32"
     554           0 :                   Mnemonic = "v_sub_f32";
     555             :                 return;
     556             :               }
     557             :               break;
     558             :             case 'i':    // 1 string to match.
     559           0 :               if (memcmp(Mnemonic.data()+7, "32_e32", 6) != 0)
     560             :                 break;
     561           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_sub_i32_e32"
     562           0 :                 Mnemonic = "v_sub_i32";
     563             :               return;
     564           0 :             case 'u':    // 2 strings to match.
     565             :               switch (Mnemonic[7]) {
     566             :               default: break;
     567             :               case '1':  // 1 string to match.
     568           0 :                 if (memcmp(Mnemonic.data()+8, "6_e32", 5) != 0)
     569             :                   break;
     570           0 :                 Mnemonic = "v_sub_u16";        // "v_sub_u16_e32"
     571           0 :                 return;
     572             :               case '3':  // 1 string to match.
     573           0 :                 if (memcmp(Mnemonic.data()+8, "2_e32", 5) != 0)
     574             :                   break;
     575           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_u32_e32"
     576           0 :                   Mnemonic = "v_sub_u32";
     577             :                 return;
     578             :               }
     579             :               break;
     580             :             }
     581             :             break;
     582             :           }
     583             :           break;
     584             :         case 'x':        // 1 string to match.
     585           0 :           if (memcmp(Mnemonic.data()+3, "or_b32_e32", 10) != 0)
     586             :             break;
     587           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_xor_b32_e32"
     588           0 :             Mnemonic = "v_xor_b32";
     589             :           return;
     590             :         }
     591             :         break;
     592             :       case 14:   // 16 strings to match.
     593        6128 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
     594             :           break;
     595             :         switch (Mnemonic[2]) {
     596             :         default: break;
     597         274 :         case 'a':        // 2 strings to match.
     598             :           switch (Mnemonic[3]) {
     599             :           default: break;
     600             :           case 'd':      // 1 string to match.
     601          92 :             if (memcmp(Mnemonic.data()+4, "dc_u32_e32", 10) != 0)
     602             :               break;
     603           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_addc_u32_e32"
     604           0 :               Mnemonic = "v_addc_u32";
     605             :             return;
     606             :           case 's':      // 1 string to match.
     607           0 :             if (memcmp(Mnemonic.data()+4, "hr_i32_e32", 10) != 0)
     608             :               break;
     609           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_ashr_i32_e32"
     610           0 :               Mnemonic = "v_ashr_i32";
     611             :             return;
     612             :           }
     613             :           break;
     614             :         case 'c':        // 3 strings to match.
     615        2003 :           if (memcmp(Mnemonic.data()+3, "eil_f", 5) != 0)
     616             :             break;
     617             :           switch (Mnemonic[8]) {
     618             :           default: break;
     619             :           case '1':      // 1 string to match.
     620           0 :             if (memcmp(Mnemonic.data()+9, "6_e32", 5) != 0)
     621             :               break;
     622           0 :             Mnemonic = "v_ceil_f16";   // "v_ceil_f16_e32"
     623           0 :             return;
     624             :           case '3':      // 1 string to match.
     625           0 :             if (memcmp(Mnemonic.data()+9, "2_e32", 5) != 0)
     626             :               break;
     627           0 :             Mnemonic = "v_ceil_f32";   // "v_ceil_f32_e32"
     628           0 :             return;
     629             :           case '6':      // 1 string to match.
     630           0 :             if (memcmp(Mnemonic.data()+9, "4_e32", 5) != 0)
     631             :               break;
     632           0 :             Mnemonic = "v_ceil_f64";   // "v_ceil_f64_e32"
     633           0 :             return;
     634             :           }
     635             :           break;
     636           0 :         case 'f':        // 4 strings to match.
     637             :           switch (Mnemonic[3]) {
     638             :           default: break;
     639           0 :           case 'f':      // 3 strings to match.
     640           0 :             if (Mnemonic[4] != 'b')
     641             :               break;
     642             :             switch (Mnemonic[5]) {
     643             :             default: break;
     644           0 :             case 'h':    // 2 strings to match.
     645           0 :               if (Mnemonic[6] != '_')
     646             :                 break;
     647             :               switch (Mnemonic[7]) {
     648             :               default: break;
     649             :               case 'i':  // 1 string to match.
     650           0 :                 if (memcmp(Mnemonic.data()+8, "32_e32", 6) != 0)
     651             :                   break;
     652           0 :                 Mnemonic = "v_ffbh_i32";       // "v_ffbh_i32_e32"
     653           0 :                 return;
     654             :               case 'u':  // 1 string to match.
     655           0 :                 if (memcmp(Mnemonic.data()+8, "32_e32", 6) != 0)
     656             :                   break;
     657           0 :                 Mnemonic = "v_ffbh_u32";       // "v_ffbh_u32_e32"
     658           0 :                 return;
     659             :               }
     660             :               break;
     661             :             case 'l':    // 1 string to match.
     662           0 :               if (memcmp(Mnemonic.data()+6, "_b32_e32", 8) != 0)
     663             :                 break;
     664           0 :               Mnemonic = "v_ffbl_b32";         // "v_ffbl_b32_e32"
     665           0 :               return;
     666             :             }
     667             :             break;
     668             :           case 'm':      // 1 string to match.
     669           0 :             if (memcmp(Mnemonic.data()+4, "ac_f32_e32", 10) != 0)
     670             :               break;
     671           0 :             Mnemonic = "v_fmac_f32";   // "v_fmac_f32_e32"
     672           0 :             return;
     673             :           }
     674             :           break;
     675             :         case 'l':        // 2 strings to match.
     676          92 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
     677             :             break;
     678             :           switch (Mnemonic[5]) {
     679             :           default: break;
     680             :           case 'l':      // 1 string to match.
     681          92 :             if (memcmp(Mnemonic.data()+6, "_b32_e32", 8) != 0)
     682             :               break;
     683           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_lshl_b32_e32"
     684           0 :               Mnemonic = "v_lshl_b32";
     685             :             return;
     686             :           case 'r':      // 1 string to match.
     687           0 :             if (memcmp(Mnemonic.data()+6, "_b32_e32", 8) != 0)
     688             :               break;
     689           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_lshr_b32_e32"
     690           0 :               Mnemonic = "v_lshr_b32";
     691             :             return;
     692             :           }
     693             :           break;
     694           0 :         case 's':        // 4 strings to match.
     695             :           switch (Mnemonic[3]) {
     696             :           default: break;
     697             :           case 'q':      // 3 strings to match.
     698           0 :             if (memcmp(Mnemonic.data()+4, "rt_f", 4) != 0)
     699             :               break;
     700             :             switch (Mnemonic[8]) {
     701             :             default: break;
     702             :             case '1':    // 1 string to match.
     703           0 :               if (memcmp(Mnemonic.data()+9, "6_e32", 5) != 0)
     704             :                 break;
     705           0 :               Mnemonic = "v_sqrt_f16";         // "v_sqrt_f16_e32"
     706           0 :               return;
     707             :             case '3':    // 1 string to match.
     708           0 :               if (memcmp(Mnemonic.data()+9, "2_e32", 5) != 0)
     709             :                 break;
     710           0 :               Mnemonic = "v_sqrt_f32";         // "v_sqrt_f32_e32"
     711           0 :               return;
     712             :             case '6':    // 1 string to match.
     713           0 :               if (memcmp(Mnemonic.data()+9, "4_e32", 5) != 0)
     714             :                 break;
     715           0 :               Mnemonic = "v_sqrt_f64";         // "v_sqrt_f64_e32"
     716           0 :               return;
     717             :             }
     718             :             break;
     719             :           case 'u':      // 1 string to match.
     720           0 :             if (memcmp(Mnemonic.data()+4, "bb_u32_e32", 10) != 0)
     721             :               break;
     722           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subb_u32_e32"
     723           0 :               Mnemonic = "v_subb_u32";
     724             :             return;
     725             :           }
     726             :           break;
     727             :         case 'x':        // 1 string to match.
     728           0 :           if (memcmp(Mnemonic.data()+3, "nor_b32_e32", 11) != 0)
     729             :             break;
     730           0 :           Mnemonic = "v_xnor_b32";     // "v_xnor_b32_e32"
     731           0 :           return;
     732             :         }
     733             :         break;
     734             :       case 15:   // 17 strings to match.
     735        5889 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
     736             :           break;
     737             :         switch (Mnemonic[2]) {
     738             :         default: break;
     739             :         case 'b':        // 1 string to match.
     740           0 :           if (memcmp(Mnemonic.data()+3, "frev_b32_e32", 12) != 0)
     741             :             break;
     742           0 :           Mnemonic = "v_bfrev_b32";    // "v_bfrev_b32_e32"
     743           0 :           return;
     744          22 :         case 'f':        // 6 strings to match.
     745             :           switch (Mnemonic[3]) {
     746             :           default: break;
     747             :           case 'l':      // 3 strings to match.
     748           0 :             if (memcmp(Mnemonic.data()+4, "oor_f", 5) != 0)
     749             :               break;
     750             :             switch (Mnemonic[9]) {
     751             :             default: break;
     752             :             case '1':    // 1 string to match.
     753           0 :               if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
     754             :                 break;
     755           0 :               Mnemonic = "v_floor_f16";        // "v_floor_f16_e32"
     756           0 :               return;
     757             :             case '3':    // 1 string to match.
     758           0 :               if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
     759             :                 break;
     760           0 :               Mnemonic = "v_floor_f32";        // "v_floor_f32_e32"
     761           0 :               return;
     762             :             case '6':    // 1 string to match.
     763           0 :               if (memcmp(Mnemonic.data()+10, "4_e32", 5) != 0)
     764             :                 break;
     765           0 :               Mnemonic = "v_floor_f64";        // "v_floor_f64_e32"
     766           0 :               return;
     767             :             }
     768             :             break;
     769             :           case 'r':      // 3 strings to match.
     770           0 :             if (memcmp(Mnemonic.data()+4, "act_f", 5) != 0)
     771             :               break;
     772             :             switch (Mnemonic[9]) {
     773             :             default: break;
     774             :             case '1':    // 1 string to match.
     775           0 :               if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
     776             :                 break;
     777           0 :               Mnemonic = "v_fract_f16";        // "v_fract_f16_e32"
     778           0 :               return;
     779             :             case '3':    // 1 string to match.
     780           0 :               if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
     781             :                 break;
     782           0 :               Mnemonic = "v_fract_f32";        // "v_fract_f32_e32"
     783           0 :               return;
     784             :             case '6':    // 1 string to match.
     785           0 :               if (memcmp(Mnemonic.data()+10, "4_e32", 5) != 0)
     786             :                 break;
     787           0 :               Mnemonic = "v_fract_f64";        // "v_fract_f64_e32"
     788           0 :               return;
     789             :             }
     790             :             break;
     791             :           }
     792             :           break;
     793             :         case 'l':        // 2 strings to match.
     794          39 :           if (memcmp(Mnemonic.data()+3, "dexp_f", 6) != 0)
     795             :             break;
     796             :           switch (Mnemonic[9]) {
     797             :           default: break;
     798             :           case '1':      // 1 string to match.
     799           0 :             if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
     800             :               break;
     801           0 :             Mnemonic = "v_ldexp_f16";  // "v_ldexp_f16_e32"
     802           0 :             return;
     803             :           case '3':      // 1 string to match.
     804           0 :             if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
     805             :               break;
     806           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_ldexp_f32_e32"
     807           0 :               Mnemonic = "v_ldexp_f32";
     808             :             return;
     809             :           }
     810             :           break;
     811             :         case 'm':        // 2 strings to match.
     812         272 :           if (memcmp(Mnemonic.data()+3, "ad", 2) != 0)
     813             :             break;
     814             :           switch (Mnemonic[5]) {
     815             :           default: break;
     816             :           case 'a':      // 1 string to match.
     817           0 :             if (memcmp(Mnemonic.data()+6, "k_f32_e32", 9) != 0)
     818             :               break;
     819           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_madak_f32_e32"
     820           0 :               Mnemonic = "v_madak_f32";
     821             :             return;
     822             :           case 'm':      // 1 string to match.
     823           0 :             if (memcmp(Mnemonic.data()+6, "k_f32_e32", 9) != 0)
     824             :               break;
     825           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_madmk_f32_e32"
     826           0 :               Mnemonic = "v_madmk_f32";
     827             :             return;
     828             :           }
     829             :           break;
     830             :         case 'r':        // 3 strings to match.
     831         215 :           if (memcmp(Mnemonic.data()+3, "ndne_f", 6) != 0)
     832             :             break;
     833             :           switch (Mnemonic[9]) {
     834             :           default: break;
     835             :           case '1':      // 1 string to match.
     836           0 :             if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
     837             :               break;
     838           0 :             Mnemonic = "v_rndne_f16";  // "v_rndne_f16_e32"
     839           0 :             return;
     840             :           case '3':      // 1 string to match.
     841           0 :             if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
     842             :               break;
     843           0 :             Mnemonic = "v_rndne_f32";  // "v_rndne_f32_e32"
     844           0 :             return;
     845             :           case '6':      // 1 string to match.
     846           0 :             if (memcmp(Mnemonic.data()+10, "4_e32", 5) != 0)
     847             :               break;
     848           0 :             Mnemonic = "v_rndne_f64";  // "v_rndne_f64_e32"
     849           0 :             return;
     850             :           }
     851             :           break;
     852             :         case 't':        // 3 strings to match.
     853           0 :           if (memcmp(Mnemonic.data()+3, "runc_f", 6) != 0)
     854             :             break;
     855             :           switch (Mnemonic[9]) {
     856             :           default: break;
     857             :           case '1':      // 1 string to match.
     858           0 :             if (memcmp(Mnemonic.data()+10, "6_e32", 5) != 0)
     859             :               break;
     860           0 :             Mnemonic = "v_trunc_f16";  // "v_trunc_f16_e32"
     861           0 :             return;
     862             :           case '3':      // 1 string to match.
     863           0 :             if (memcmp(Mnemonic.data()+10, "2_e32", 5) != 0)
     864             :               break;
     865           0 :             Mnemonic = "v_trunc_f32";  // "v_trunc_f32_e32"
     866           0 :             return;
     867             :           case '6':      // 1 string to match.
     868           0 :             if (memcmp(Mnemonic.data()+10, "4_e32", 5) != 0)
     869             :               break;
     870           0 :             Mnemonic = "v_trunc_f64";  // "v_trunc_f64_e32"
     871           0 :             return;
     872             :           }
     873             :           break;
     874             :         }
     875             :         break;
     876             :       case 16:   // 6 strings to match.
     877        5049 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
     878             :           break;
     879             :         switch (Mnemonic[2]) {
     880             :         default: break;
     881             :         case 'm':        // 1 string to match.
     882         937 :           if (memcmp(Mnemonic.data()+3, "ul_lo_u16_e32", 13) != 0)
     883             :             break;
     884           0 :           Mnemonic = "v_mul_lo_u16";   // "v_mul_lo_u16_e32"
     885           0 :           return;
     886             :         case 's':        // 5 strings to match.
     887          18 :           if (memcmp(Mnemonic.data()+3, "ubrev_", 6) != 0)
     888             :             break;
     889             :           switch (Mnemonic[9]) {
     890             :           default: break;
     891           0 :           case 'f':      // 2 strings to match.
     892             :             switch (Mnemonic[10]) {
     893             :             default: break;
     894             :             case '1':    // 1 string to match.
     895           0 :               if (memcmp(Mnemonic.data()+11, "6_e32", 5) != 0)
     896             :                 break;
     897           0 :               Mnemonic = "v_subrev_f16";       // "v_subrev_f16_e32"
     898           0 :               return;
     899             :             case '3':    // 1 string to match.
     900           0 :               if (memcmp(Mnemonic.data()+11, "2_e32", 5) != 0)
     901             :                 break;
     902           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_f32_e32"
     903           0 :                 Mnemonic = "v_subrev_f32";
     904             :               return;
     905             :             }
     906             :             break;
     907             :           case 'i':      // 1 string to match.
     908           0 :             if (memcmp(Mnemonic.data()+10, "32_e32", 6) != 0)
     909             :               break;
     910           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subrev_i32_e32"
     911           0 :               Mnemonic = "v_subrev_i32";
     912             :             return;
     913           0 :           case 'u':      // 2 strings to match.
     914             :             switch (Mnemonic[10]) {
     915             :             default: break;
     916             :             case '1':    // 1 string to match.
     917           0 :               if (memcmp(Mnemonic.data()+11, "6_e32", 5) != 0)
     918             :                 break;
     919           0 :               Mnemonic = "v_subrev_u16";       // "v_subrev_u16_e32"
     920           0 :               return;
     921             :             case '3':    // 1 string to match.
     922           0 :               if (memcmp(Mnemonic.data()+11, "2_e32", 5) != 0)
     923             :                 break;
     924           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_u32_e32"
     925           0 :                 Mnemonic = "v_subrev_u32";
     926             :               return;
     927             :             }
     928             :             break;
     929             :           }
     930             :           break;
     931             :         }
     932             :         break;
     933             :       case 17:   // 29 strings to match.
     934        3793 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
     935             :           break;
     936             :         switch (Mnemonic[2]) {
     937             :         default: break;
     938             :         case 'a':        // 2 strings to match.
     939           0 :           if (memcmp(Mnemonic.data()+3, "shrrev_i", 8) != 0)
     940             :             break;
     941             :           switch (Mnemonic[11]) {
     942             :           default: break;
     943             :           case '1':      // 1 string to match.
     944           0 :             if (memcmp(Mnemonic.data()+12, "6_e32", 5) != 0)
     945             :               break;
     946           0 :             Mnemonic = "v_ashrrev_i16";        // "v_ashrrev_i16_e32"
     947           0 :             return;
     948             :           case '3':      // 1 string to match.
     949           0 :             if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
     950             :               break;
     951           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_ashrrev_i32_e32"
     952           0 :               Mnemonic = "v_ashrrev_i32";
     953             :             return;
     954             :           }
     955             :           break;
     956         210 :         case 'c':        // 17 strings to match.
     957             :           switch (Mnemonic[3]) {
     958             :           default: break;
     959             :           case 'n':      // 1 string to match.
     960           0 :             if (memcmp(Mnemonic.data()+4, "dmask_b32_e32", 13) != 0)
     961             :               break;
     962           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cndmask_b32_e32"
     963           0 :               Mnemonic = "v_cndmask_b32";
     964             :             return;
     965             :           case 'v':      // 16 strings to match.
     966         210 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
     967             :               break;
     968             :             switch (Mnemonic[6]) {
     969             :             default: break;
     970         109 :             case 'f':    // 10 strings to match.
     971             :               switch (Mnemonic[7]) {
     972             :               default: break;
     973             :               case '1':  // 3 strings to match.
     974           0 :                 if (memcmp(Mnemonic.data()+8, "6_", 2) != 0)
     975             :                   break;
     976             :                 switch (Mnemonic[10]) {
     977             :                 default: break;
     978             :                 case 'f':        // 1 string to match.
     979           0 :                   if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
     980             :                     break;
     981           0 :                   Mnemonic = "v_cvt_f16_f32";  // "v_cvt_f16_f32_e32"
     982           0 :                   return;
     983             :                 case 'i':        // 1 string to match.
     984           0 :                   if (memcmp(Mnemonic.data()+11, "16_e32", 6) != 0)
     985             :                     break;
     986           0 :                   Mnemonic = "v_cvt_f16_i16";  // "v_cvt_f16_i16_e32"
     987           0 :                   return;
     988             :                 case 'u':        // 1 string to match.
     989           0 :                   if (memcmp(Mnemonic.data()+11, "16_e32", 6) != 0)
     990             :                     break;
     991           0 :                   Mnemonic = "v_cvt_f16_u16";  // "v_cvt_f16_u16_e32"
     992           0 :                   return;
     993             :                 }
     994             :                 break;
     995             :               case '3':  // 4 strings to match.
     996           0 :                 if (memcmp(Mnemonic.data()+8, "2_", 2) != 0)
     997             :                   break;
     998             :                 switch (Mnemonic[10]) {
     999             :                 default: break;
    1000           0 :                 case 'f':        // 2 strings to match.
    1001             :                   switch (Mnemonic[11]) {
    1002             :                   default: break;
    1003             :                   case '1':      // 1 string to match.
    1004           0 :                     if (memcmp(Mnemonic.data()+12, "6_e32", 5) != 0)
    1005             :                       break;
    1006           0 :                     Mnemonic = "v_cvt_f32_f16";        // "v_cvt_f32_f16_e32"
    1007           0 :                     return;
    1008             :                   case '6':      // 1 string to match.
    1009           0 :                     if (memcmp(Mnemonic.data()+12, "4_e32", 5) != 0)
    1010             :                       break;
    1011           0 :                     Mnemonic = "v_cvt_f32_f64";        // "v_cvt_f32_f64_e32"
    1012           0 :                     return;
    1013             :                   }
    1014             :                   break;
    1015             :                 case 'i':        // 1 string to match.
    1016           0 :                   if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
    1017             :                     break;
    1018           0 :                   Mnemonic = "v_cvt_f32_i32";  // "v_cvt_f32_i32_e32"
    1019           0 :                   return;
    1020             :                 case 'u':        // 1 string to match.
    1021           0 :                   if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
    1022             :                     break;
    1023           0 :                   Mnemonic = "v_cvt_f32_u32";  // "v_cvt_f32_u32_e32"
    1024           0 :                   return;
    1025             :                 }
    1026             :                 break;
    1027             :               case '6':  // 3 strings to match.
    1028           0 :                 if (memcmp(Mnemonic.data()+8, "4_", 2) != 0)
    1029             :                   break;
    1030             :                 switch (Mnemonic[10]) {
    1031             :                 default: break;
    1032             :                 case 'f':        // 1 string to match.
    1033           0 :                   if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
    1034             :                     break;
    1035           0 :                   Mnemonic = "v_cvt_f64_f32";  // "v_cvt_f64_f32_e32"
    1036           0 :                   return;
    1037             :                 case 'i':        // 1 string to match.
    1038           0 :                   if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
    1039             :                     break;
    1040           0 :                   Mnemonic = "v_cvt_f64_i32";  // "v_cvt_f64_i32_e32"
    1041           0 :                   return;
    1042             :                 case 'u':        // 1 string to match.
    1043           0 :                   if (memcmp(Mnemonic.data()+11, "32_e32", 6) != 0)
    1044             :                     break;
    1045           0 :                   Mnemonic = "v_cvt_f64_u32";  // "v_cvt_f64_u32_e32"
    1046           0 :                   return;
    1047             :                 }
    1048             :                 break;
    1049             :               }
    1050             :               break;
    1051           0 :             case 'i':    // 3 strings to match.
    1052             :               switch (Mnemonic[7]) {
    1053             :               default: break;
    1054             :               case '1':  // 1 string to match.
    1055           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_e32", 9) != 0)
    1056             :                   break;
    1057           0 :                 Mnemonic = "v_cvt_i16_f16";    // "v_cvt_i16_f16_e32"
    1058           0 :                 return;
    1059             :               case '3':  // 2 strings to match.
    1060           0 :                 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
    1061             :                   break;
    1062             :                 switch (Mnemonic[11]) {
    1063             :                 default: break;
    1064             :                 case '3':        // 1 string to match.
    1065           0 :                   if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
    1066             :                     break;
    1067           0 :                   Mnemonic = "v_cvt_i32_f32";  // "v_cvt_i32_f32_e32"
    1068           0 :                   return;
    1069             :                 case '6':        // 1 string to match.
    1070           0 :                   if (memcmp(Mnemonic.data()+12, "4_e32", 5) != 0)
    1071             :                     break;
    1072           0 :                   Mnemonic = "v_cvt_i32_f64";  // "v_cvt_i32_f64_e32"
    1073           0 :                   return;
    1074             :                 }
    1075             :                 break;
    1076             :               }
    1077             :               break;
    1078           0 :             case 'u':    // 3 strings to match.
    1079             :               switch (Mnemonic[7]) {
    1080             :               default: break;
    1081             :               case '1':  // 1 string to match.
    1082           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_e32", 9) != 0)
    1083             :                   break;
    1084           0 :                 Mnemonic = "v_cvt_u16_f16";    // "v_cvt_u16_f16_e32"
    1085           0 :                 return;
    1086             :               case '3':  // 2 strings to match.
    1087           0 :                 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
    1088             :                   break;
    1089             :                 switch (Mnemonic[11]) {
    1090             :                 default: break;
    1091             :                 case '3':        // 1 string to match.
    1092           0 :                   if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
    1093             :                     break;
    1094           0 :                   Mnemonic = "v_cvt_u32_f32";  // "v_cvt_u32_f32_e32"
    1095           0 :                   return;
    1096             :                 case '6':        // 1 string to match.
    1097           0 :                   if (memcmp(Mnemonic.data()+12, "4_e32", 5) != 0)
    1098             :                     break;
    1099           0 :                   Mnemonic = "v_cvt_u32_f64";  // "v_cvt_u32_f64_e32"
    1100           0 :                   return;
    1101             :                 }
    1102             :                 break;
    1103             :               }
    1104             :               break;
    1105             :             }
    1106             :             break;
    1107             :           }
    1108             :           break;
    1109             :         case 'l':        // 4 strings to match.
    1110           0 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    1111             :             break;
    1112             :           switch (Mnemonic[5]) {
    1113             :           default: break;
    1114             :           case 'l':      // 2 strings to match.
    1115           0 :             if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
    1116             :               break;
    1117             :             switch (Mnemonic[11]) {
    1118             :             default: break;
    1119             :             case '1':    // 1 string to match.
    1120           0 :               if (memcmp(Mnemonic.data()+12, "6_e32", 5) != 0)
    1121             :                 break;
    1122           0 :               Mnemonic = "v_lshlrev_b16";      // "v_lshlrev_b16_e32"
    1123           0 :               return;
    1124             :             case '3':    // 1 string to match.
    1125           0 :               if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
    1126             :                 break;
    1127           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_lshlrev_b32_e32"
    1128           0 :                 Mnemonic = "v_lshlrev_b32";
    1129             :               return;
    1130             :             }
    1131             :             break;
    1132             :           case 'r':      // 2 strings to match.
    1133           0 :             if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
    1134             :               break;
    1135             :             switch (Mnemonic[11]) {
    1136             :             default: break;
    1137             :             case '1':    // 1 string to match.
    1138           0 :               if (memcmp(Mnemonic.data()+12, "6_e32", 5) != 0)
    1139             :                 break;
    1140           0 :               Mnemonic = "v_lshrrev_b16";      // "v_lshrrev_b16_e32"
    1141           0 :               return;
    1142             :             case '3':    // 1 string to match.
    1143           0 :               if (memcmp(Mnemonic.data()+12, "2_e32", 5) != 0)
    1144             :                 break;
    1145           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_lshrrev_b32_e32"
    1146           0 :                 Mnemonic = "v_lshrrev_b32";
    1147             :               return;
    1148             :             }
    1149             :             break;
    1150             :           }
    1151             :           break;
    1152         211 :         case 'm':        // 5 strings to match.
    1153             :           switch (Mnemonic[3]) {
    1154             :           default: break;
    1155           0 :           case 'o':      // 3 strings to match.
    1156           0 :             if (Mnemonic[4] != 'v')
    1157             :               break;
    1158             :             switch (Mnemonic[5]) {
    1159             :             default: break;
    1160             :             case '_':    // 1 string to match.
    1161           0 :               if (memcmp(Mnemonic.data()+6, "fed_b32_e32", 11) != 0)
    1162             :                 break;
    1163           0 :               Mnemonic = "v_mov_fed_b32";      // "v_mov_fed_b32_e32"
    1164           0 :               return;
    1165             :             case 'r':    // 2 strings to match.
    1166           0 :               if (memcmp(Mnemonic.data()+6, "el", 2) != 0)
    1167             :                 break;
    1168             :               switch (Mnemonic[8]) {
    1169             :               default: break;
    1170             :               case 'd':  // 1 string to match.
    1171           0 :                 if (memcmp(Mnemonic.data()+9, "_b32_e32", 8) != 0)
    1172             :                   break;
    1173           0 :                 Mnemonic = "v_movreld_b32";    // "v_movreld_b32_e32"
    1174           0 :                 return;
    1175             :               case 's':  // 1 string to match.
    1176           0 :                 if (memcmp(Mnemonic.data()+9, "_b32_e32", 8) != 0)
    1177             :                   break;
    1178           0 :                 Mnemonic = "v_movrels_b32";    // "v_movrels_b32_e32"
    1179           0 :                 return;
    1180             :               }
    1181             :               break;
    1182             :             }
    1183             :             break;
    1184             :           case 'u':      // 2 strings to match.
    1185           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    1186             :               break;
    1187             :             switch (Mnemonic[6]) {
    1188             :             default: break;
    1189             :             case 'i':    // 1 string to match.
    1190           0 :               if (memcmp(Mnemonic.data()+7, "32_i24_e32", 10) != 0)
    1191             :                 break;
    1192           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_i32_i24_e32"
    1193           0 :                 Mnemonic = "v_mul_i32_i24";
    1194             :               return;
    1195             :             case 'u':    // 1 string to match.
    1196           0 :               if (memcmp(Mnemonic.data()+7, "32_u24_e32", 10) != 0)
    1197             :                 break;
    1198           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_u32_u24_e32"
    1199           0 :                 Mnemonic = "v_mul_u32_u24";
    1200             :               return;
    1201             :             }
    1202             :             break;
    1203             :           }
    1204             :           break;
    1205             :         case 's':        // 1 string to match.
    1206           0 :           if (memcmp(Mnemonic.data()+3, "ubbrev_u32_e32", 14) != 0)
    1207             :             break;
    1208           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_subbrev_u32_e32"
    1209           0 :             Mnemonic = "v_subbrev_u32";
    1210             :           return;
    1211             :         }
    1212             :         break;
    1213             :       case 18:   // 3 strings to match.
    1214        2576 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    1215             :           break;
    1216             :         switch (Mnemonic[2]) {
    1217             :         default: break;
    1218             :         case 'b':        // 1 string to match.
    1219           0 :           if (memcmp(Mnemonic.data()+3, "cnt_u32_b32_e32", 15) != 0)
    1220             :             break;
    1221           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_bcnt_u32_b32_e32"
    1222           0 :             Mnemonic = "v_bcnt_u32_b32";
    1223             :           return;
    1224             :         case 'm':        // 1 string to match.
    1225         264 :           if (memcmp(Mnemonic.data()+3, "ovrelsd_b32_e32", 15) != 0)
    1226             :             break;
    1227           0 :           Mnemonic = "v_movrelsd_b32";         // "v_movrelsd_b32_e32"
    1228           0 :           return;
    1229             :         case 'r':        // 1 string to match.
    1230           0 :           if (memcmp(Mnemonic.data()+3, "eadlane_b32_e32", 15) != 0)
    1231             :             break;
    1232           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_readlane_b32_e32"
    1233           0 :             Mnemonic = "v_readlane_b32";
    1234             :           return;
    1235             :         }
    1236             :         break;
    1237             :       case 19:   // 8 strings to match.
    1238        2102 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    1239             :           break;
    1240             :         switch (Mnemonic[2]) {
    1241             :         default: break;
    1242             :         case 'l':        // 1 string to match.
    1243           0 :           if (memcmp(Mnemonic.data()+3, "og_clamp_f32_e32", 16) != 0)
    1244             :             break;
    1245           0 :           Mnemonic = "v_log_clamp_f32";        // "v_log_clamp_f32_e32"
    1246           0 :           return;
    1247          44 :         case 'r':        // 5 strings to match.
    1248             :           switch (Mnemonic[3]) {
    1249             :           default: break;
    1250             :           case 'c':      // 3 strings to match.
    1251           0 :             if (memcmp(Mnemonic.data()+4, "p_", 2) != 0)
    1252             :               break;
    1253             :             switch (Mnemonic[6]) {
    1254             :             default: break;
    1255             :             case 'c':    // 2 strings to match.
    1256           0 :               if (memcmp(Mnemonic.data()+7, "lamp_f", 6) != 0)
    1257             :                 break;
    1258             :               switch (Mnemonic[13]) {
    1259             :               default: break;
    1260             :               case '3':  // 1 string to match.
    1261           0 :                 if (memcmp(Mnemonic.data()+14, "2_e32", 5) != 0)
    1262             :                   break;
    1263           0 :                 Mnemonic = "v_rcp_clamp_f32";  // "v_rcp_clamp_f32_e32"
    1264           0 :                 return;
    1265             :               case '6':  // 1 string to match.
    1266           0 :                 if (memcmp(Mnemonic.data()+14, "4_e32", 5) != 0)
    1267             :                   break;
    1268           0 :                 Mnemonic = "v_rcp_clamp_f64";  // "v_rcp_clamp_f64_e32"
    1269           0 :                 return;
    1270             :               }
    1271             :               break;
    1272             :             case 'i':    // 1 string to match.
    1273           0 :               if (memcmp(Mnemonic.data()+7, "flag_f32_e32", 12) != 0)
    1274             :                 break;
    1275           0 :               Mnemonic = "v_rcp_iflag_f32";    // "v_rcp_iflag_f32_e32"
    1276           0 :               return;
    1277             :             }
    1278             :             break;
    1279             :           case 's':      // 2 strings to match.
    1280           0 :             if (memcmp(Mnemonic.data()+4, "q_clamp_f", 9) != 0)
    1281             :               break;
    1282             :             switch (Mnemonic[13]) {
    1283             :             default: break;
    1284             :             case '3':    // 1 string to match.
    1285           0 :               if (memcmp(Mnemonic.data()+14, "2_e32", 5) != 0)
    1286             :                 break;
    1287           0 :               Mnemonic = "v_rsq_clamp_f32";    // "v_rsq_clamp_f32_e32"
    1288           0 :               return;
    1289             :             case '6':    // 1 string to match.
    1290           0 :               if (memcmp(Mnemonic.data()+14, "4_e32", 5) != 0)
    1291             :                 break;
    1292           0 :               Mnemonic = "v_rsq_clamp_f64";    // "v_rsq_clamp_f64_e32"
    1293           0 :               return;
    1294             :             }
    1295             :             break;
    1296             :           }
    1297             :           break;
    1298             :         case 's':        // 1 string to match.
    1299           0 :           if (memcmp(Mnemonic.data()+3, "at_pk_u8_i16_e32", 16) != 0)
    1300             :             break;
    1301           0 :           Mnemonic = "v_sat_pk_u8_i16";        // "v_sat_pk_u8_i16_e32"
    1302           0 :           return;
    1303             :         case 'w':        // 1 string to match.
    1304           0 :           if (memcmp(Mnemonic.data()+3, "ritelane_b32_e32", 16) != 0)
    1305             :             break;
    1306           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_writelane_b32_e32"
    1307           0 :             Mnemonic = "v_writelane_b32";
    1308             :           return;
    1309             :         }
    1310             :         break;
    1311             :       case 20:   // 20 strings to match.
    1312        2014 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    1313             :           break;
    1314             :         switch (Mnemonic[2]) {
    1315             :         default: break;
    1316             :         case 'c':        // 7 strings to match.
    1317         629 :           if (memcmp(Mnemonic.data()+3, "vt_", 3) != 0)
    1318             :             break;
    1319             :           switch (Mnemonic[6]) {
    1320             :           default: break;
    1321             :           case 'f':      // 4 strings to match.
    1322           0 :             if (memcmp(Mnemonic.data()+7, "32_ubyte", 8) != 0)
    1323             :               break;
    1324             :             switch (Mnemonic[15]) {
    1325             :             default: break;
    1326             :             case '0':    // 1 string to match.
    1327           0 :               if (memcmp(Mnemonic.data()+16, "_e32", 4) != 0)
    1328             :                 break;
    1329           0 :               Mnemonic = "v_cvt_f32_ubyte0";   // "v_cvt_f32_ubyte0_e32"
    1330           0 :               return;
    1331             :             case '1':    // 1 string to match.
    1332           0 :               if (memcmp(Mnemonic.data()+16, "_e32", 4) != 0)
    1333             :                 break;
    1334           0 :               Mnemonic = "v_cvt_f32_ubyte1";   // "v_cvt_f32_ubyte1_e32"
    1335           0 :               return;
    1336             :             case '2':    // 1 string to match.
    1337           0 :               if (memcmp(Mnemonic.data()+16, "_e32", 4) != 0)
    1338             :                 break;
    1339           0 :               Mnemonic = "v_cvt_f32_ubyte2";   // "v_cvt_f32_ubyte2_e32"
    1340           0 :               return;
    1341             :             case '3':    // 1 string to match.
    1342           0 :               if (memcmp(Mnemonic.data()+16, "_e32", 4) != 0)
    1343             :                 break;
    1344           0 :               Mnemonic = "v_cvt_f32_ubyte3";   // "v_cvt_f32_ubyte3_e32"
    1345           0 :               return;
    1346             :             }
    1347             :             break;
    1348             :           case 'o':      // 1 string to match.
    1349           0 :             if (memcmp(Mnemonic.data()+7, "ff_f32_i4_e32", 13) != 0)
    1350             :               break;
    1351           0 :             Mnemonic = "v_cvt_off_f32_i4";     // "v_cvt_off_f32_i4_e32"
    1352           0 :             return;
    1353             :           case 'p':      // 2 strings to match.
    1354         629 :             if (memcmp(Mnemonic.data()+7, "k_", 2) != 0)
    1355             :               break;
    1356             :             switch (Mnemonic[9]) {
    1357             :             default: break;
    1358             :             case 'i':    // 1 string to match.
    1359           0 :               if (memcmp(Mnemonic.data()+10, "16_i32_e32", 10) != 0)
    1360             :                 break;
    1361           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_cvt_pk_i16_i32_e32"
    1362           0 :                 Mnemonic = "v_cvt_pk_i16_i32";
    1363             :               return;
    1364             :             case 'u':    // 1 string to match.
    1365           0 :               if (memcmp(Mnemonic.data()+10, "16_u32_e32", 10) != 0)
    1366             :                 break;
    1367           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_cvt_pk_u16_u32_e32"
    1368           0 :                 Mnemonic = "v_cvt_pk_u16_u32";
    1369             :               return;
    1370             :             }
    1371             :             break;
    1372             :           }
    1373             :           break;
    1374             :         case 'e':        // 1 string to match.
    1375           0 :           if (memcmp(Mnemonic.data()+3, "xp_legacy_f32_e32", 17) != 0)
    1376             :             break;
    1377           0 :           Mnemonic = "v_exp_legacy_f32";       // "v_exp_legacy_f32_e32"
    1378           0 :           return;
    1379             :         case 'f':        // 3 strings to match.
    1380           0 :           if (memcmp(Mnemonic.data()+3, "rexp_mant_f", 11) != 0)
    1381             :             break;
    1382             :           switch (Mnemonic[14]) {
    1383             :           default: break;
    1384             :           case '1':      // 1 string to match.
    1385           0 :             if (memcmp(Mnemonic.data()+15, "6_e32", 5) != 0)
    1386             :               break;
    1387           0 :             Mnemonic = "v_frexp_mant_f16";     // "v_frexp_mant_f16_e32"
    1388           0 :             return;
    1389             :           case '3':      // 1 string to match.
    1390           0 :             if (memcmp(Mnemonic.data()+15, "2_e32", 5) != 0)
    1391             :               break;
    1392           0 :             Mnemonic = "v_frexp_mant_f32";     // "v_frexp_mant_f32_e32"
    1393           0 :             return;
    1394             :           case '6':      // 1 string to match.
    1395           0 :             if (memcmp(Mnemonic.data()+15, "4_e32", 5) != 0)
    1396             :               break;
    1397           0 :             Mnemonic = "v_frexp_mant_f64";     // "v_frexp_mant_f64_e32"
    1398           0 :             return;
    1399             :           }
    1400             :           break;
    1401             :         case 'l':        // 1 string to match.
    1402           0 :           if (memcmp(Mnemonic.data()+3, "og_legacy_f32_e32", 17) != 0)
    1403             :             break;
    1404           0 :           Mnemonic = "v_log_legacy_f32";       // "v_log_legacy_f32_e32"
    1405           0 :           return;
    1406           0 :         case 'm':        // 6 strings to match.
    1407             :           switch (Mnemonic[3]) {
    1408             :           default: break;
    1409           0 :           case 'a':      // 2 strings to match.
    1410             :             switch (Mnemonic[4]) {
    1411             :             default: break;
    1412             :             case 'c':    // 1 string to match.
    1413           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_e32", 15) != 0)
    1414             :                 break;
    1415           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_mac_legacy_f32_e32"
    1416           0 :                 Mnemonic = "v_mac_legacy_f32";
    1417             :               return;
    1418             :             case 'x':    // 1 string to match.
    1419           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_e32", 15) != 0)
    1420             :                 break;
    1421           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_max_legacy_f32_e32"
    1422           0 :                 Mnemonic = "v_max_legacy_f32";
    1423             :               return;
    1424             :             }
    1425             :             break;
    1426             :           case 'i':      // 1 string to match.
    1427           0 :             if (memcmp(Mnemonic.data()+4, "n_legacy_f32_e32", 16) != 0)
    1428             :               break;
    1429           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_min_legacy_f32_e32"
    1430           0 :               Mnemonic = "v_min_legacy_f32";
    1431             :             return;
    1432             :           case 'u':      // 3 strings to match.
    1433           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    1434             :               break;
    1435             :             switch (Mnemonic[6]) {
    1436             :             default: break;
    1437             :             case 'h':    // 2 strings to match.
    1438           0 :               if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
    1439             :                 break;
    1440             :               switch (Mnemonic[9]) {
    1441             :               default: break;
    1442             :               case 'i':  // 1 string to match.
    1443           0 :                 if (memcmp(Mnemonic.data()+10, "32_i24_e32", 10) != 0)
    1444             :                   break;
    1445           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_i32_i24_e32"
    1446           0 :                   Mnemonic = "v_mul_hi_i32_i24";
    1447             :                 return;
    1448             :               case 'u':  // 1 string to match.
    1449           0 :                 if (memcmp(Mnemonic.data()+10, "32_u24_e32", 10) != 0)
    1450             :                   break;
    1451           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_u32_u24_e32"
    1452           0 :                   Mnemonic = "v_mul_hi_u32_u24";
    1453             :                 return;
    1454             :               }
    1455             :               break;
    1456             :             case 'l':    // 1 string to match.
    1457           0 :               if (memcmp(Mnemonic.data()+7, "egacy_f32_e32", 13) != 0)
    1458             :                 break;
    1459           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_legacy_f32_e32"
    1460           0 :                 Mnemonic = "v_mul_legacy_f32";
    1461             :               return;
    1462             :             }
    1463             :             break;
    1464             :           }
    1465             :           break;
    1466           0 :         case 'r':        // 2 strings to match.
    1467             :           switch (Mnemonic[3]) {
    1468             :           default: break;
    1469             :           case 'c':      // 1 string to match.
    1470           0 :             if (memcmp(Mnemonic.data()+4, "p_legacy_f32_e32", 16) != 0)
    1471             :               break;
    1472           0 :             Mnemonic = "v_rcp_legacy_f32";     // "v_rcp_legacy_f32_e32"
    1473           0 :             return;
    1474             :           case 's':      // 1 string to match.
    1475           0 :             if (memcmp(Mnemonic.data()+4, "q_legacy_f32_e32", 16) != 0)
    1476             :               break;
    1477           0 :             Mnemonic = "v_rsq_legacy_f32";     // "v_rsq_legacy_f32_e32"
    1478           0 :             return;
    1479             :           }
    1480             :           break;
    1481             :         }
    1482             :         break;
    1483             :       case 21:   // 2 strings to match.
    1484        1237 :         if (memcmp(Mnemonic.data()+0, "v_cvt_", 6) != 0)
    1485             :           break;
    1486             :         switch (Mnemonic[6]) {
    1487             :         default: break;
    1488             :         case 'f':        // 1 string to match.
    1489           0 :           if (memcmp(Mnemonic.data()+7, "lr_i32_f32_e32", 14) != 0)
    1490             :             break;
    1491           0 :           Mnemonic = "v_cvt_flr_i32_f32";      // "v_cvt_flr_i32_f32_e32"
    1492           0 :           return;
    1493             :         case 'r':        // 1 string to match.
    1494           0 :           if (memcmp(Mnemonic.data()+7, "pi_i32_f32_e32", 14) != 0)
    1495             :             break;
    1496           0 :           Mnemonic = "v_cvt_rpi_i32_f32";      // "v_cvt_rpi_i32_f32_e32"
    1497           0 :           return;
    1498             :         }
    1499             :         break;
    1500             :       case 22:   // 4 strings to match.
    1501         994 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    1502             :           break;
    1503             :         switch (Mnemonic[2]) {
    1504             :         default: break;
    1505             :         case 'c':        // 2 strings to match.
    1506           0 :           if (memcmp(Mnemonic.data()+3, "vt_norm_", 8) != 0)
    1507             :             break;
    1508             :           switch (Mnemonic[11]) {
    1509             :           default: break;
    1510             :           case 'i':      // 1 string to match.
    1511           0 :             if (memcmp(Mnemonic.data()+12, "16_f16_e32", 10) != 0)
    1512             :               break;
    1513           0 :             Mnemonic = "v_cvt_norm_i16_f16";   // "v_cvt_norm_i16_f16_e32"
    1514           0 :             return;
    1515             :           case 'u':      // 1 string to match.
    1516           0 :             if (memcmp(Mnemonic.data()+12, "16_f16_e32", 10) != 0)
    1517             :               break;
    1518           0 :             Mnemonic = "v_cvt_norm_u16_f16";   // "v_cvt_norm_u16_f16_e32"
    1519           0 :             return;
    1520             :           }
    1521             :           break;
    1522             :         case 'm':        // 2 strings to match.
    1523           0 :           if (memcmp(Mnemonic.data()+3, "bcnt_", 5) != 0)
    1524             :             break;
    1525             :           switch (Mnemonic[8]) {
    1526             :           default: break;
    1527             :           case 'h':      // 1 string to match.
    1528           0 :             if (memcmp(Mnemonic.data()+9, "i_u32_b32_e32", 13) != 0)
    1529             :               break;
    1530           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_mbcnt_hi_u32_b32_e32"
    1531           0 :               Mnemonic = "v_mbcnt_hi_u32_b32";
    1532             :             return;
    1533             :           case 'l':      // 1 string to match.
    1534           0 :             if (memcmp(Mnemonic.data()+9, "o_u32_b32_e32", 13) != 0)
    1535             :               break;
    1536           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_mbcnt_lo_u32_b32_e32"
    1537           0 :               Mnemonic = "v_mbcnt_lo_u32_b32";
    1538             :             return;
    1539             :           }
    1540             :           break;
    1541             :         }
    1542             :         break;
    1543             :       case 23:   // 4 strings to match.
    1544         301 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    1545             :           break;
    1546             :         switch (Mnemonic[2]) {
    1547             :         default: break;
    1548             :         case 'c':        // 1 string to match.
    1549           0 :           if (memcmp(Mnemonic.data()+3, "vt_pkrtz_f16_f32_e32", 20) != 0)
    1550             :             break;
    1551           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_cvt_pkrtz_f16_f32_e32"
    1552           0 :             Mnemonic = "v_cvt_pkrtz_f16_f32";
    1553             :           return;
    1554             :         case 'f':        // 3 strings to match.
    1555           0 :           if (memcmp(Mnemonic.data()+3, "rexp_exp_i", 10) != 0)
    1556             :             break;
    1557             :           switch (Mnemonic[13]) {
    1558             :           default: break;
    1559             :           case '1':      // 1 string to match.
    1560           0 :             if (memcmp(Mnemonic.data()+14, "6_f16_e32", 9) != 0)
    1561             :               break;
    1562           0 :             Mnemonic = "v_frexp_exp_i16_f16";  // "v_frexp_exp_i16_f16_e32"
    1563           0 :             return;
    1564             :           case '3':      // 2 strings to match.
    1565           0 :             if (memcmp(Mnemonic.data()+14, "2_f", 3) != 0)
    1566             :               break;
    1567             :             switch (Mnemonic[17]) {
    1568             :             default: break;
    1569             :             case '3':    // 1 string to match.
    1570           0 :               if (memcmp(Mnemonic.data()+18, "2_e32", 5) != 0)
    1571             :                 break;
    1572           0 :               Mnemonic = "v_frexp_exp_i32_f32";        // "v_frexp_exp_i32_f32_e32"
    1573           0 :               return;
    1574             :             case '6':    // 1 string to match.
    1575           0 :               if (memcmp(Mnemonic.data()+18, "4_e32", 5) != 0)
    1576             :                 break;
    1577           0 :               Mnemonic = "v_frexp_exp_i32_f64";        // "v_frexp_exp_i32_f64_e32"
    1578           0 :               return;
    1579             :             }
    1580             :             break;
    1581             :           }
    1582             :           break;
    1583             :         }
    1584             :         break;
    1585             :       case 24:   // 3 strings to match.
    1586         409 :         if (memcmp(Mnemonic.data()+0, "v_cvt_pk", 8) != 0)
    1587             :           break;
    1588             :         switch (Mnemonic[8]) {
    1589             :         default: break;
    1590             :         case 'a':        // 1 string to match.
    1591           0 :           if (memcmp(Mnemonic.data()+9, "ccum_u8_f32_e32", 15) != 0)
    1592             :             break;
    1593           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_cvt_pkaccum_u8_f32_e32"
    1594           0 :             Mnemonic = "v_cvt_pkaccum_u8_f32";
    1595             :           return;
    1596             :         case 'n':        // 2 strings to match.
    1597           0 :           if (memcmp(Mnemonic.data()+9, "orm_", 4) != 0)
    1598             :             break;
    1599             :           switch (Mnemonic[13]) {
    1600             :           default: break;
    1601             :           case 'i':      // 1 string to match.
    1602           0 :             if (memcmp(Mnemonic.data()+14, "16_f32_e32", 10) != 0)
    1603             :               break;
    1604           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cvt_pknorm_i16_f32_e32"
    1605           0 :               Mnemonic = "v_cvt_pknorm_i16_f32";
    1606             :             return;
    1607             :           case 'u':      // 1 string to match.
    1608           0 :             if (memcmp(Mnemonic.data()+14, "16_f32_e32", 10) != 0)
    1609             :               break;
    1610           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cvt_pknorm_u16_f32_e32"
    1611           0 :               Mnemonic = "v_cvt_pknorm_u16_f32";
    1612             :             return;
    1613             :           }
    1614             :           break;
    1615             :         }
    1616             :         break;
    1617             :       case 30:   // 1 string to match.
    1618           0 :         if (memcmp(Mnemonic.data()+0, "v_screen_partition_4se_b32_e32", 30) != 0)
    1619             :           break;
    1620           0 :         Mnemonic = "v_screen_partition_4se_b32";       // "v_screen_partition_4se_b32_e32"
    1621           0 :         return;
    1622             :       }
    1623             :     break;
    1624             :     case 1:
    1625             :       switch (Mnemonic.size()) {
    1626             :       default: break;
    1627             :       case 9:    // 1 string to match.
    1628       10282 :         if (memcmp(Mnemonic.data()+0, "v_nop_e64", 9) != 0)
    1629             :           break;
    1630           0 :         Mnemonic = "v_nop";    // "v_nop_e64"
    1631           0 :         return;
    1632             :       case 12:   // 2 strings to match.
    1633       14357 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    1634             :           break;
    1635             :         switch (Mnemonic[2]) {
    1636             :         default: break;
    1637             :         case 'o':        // 1 string to match.
    1638           0 :           if (memcmp(Mnemonic.data()+3, "r_b32_e64", 9) != 0)
    1639             :             break;
    1640           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_or_b32_e64"
    1641           0 :             Mnemonic = "v_or_b32";
    1642             :           return;
    1643             :         case 's':        // 1 string to match.
    1644         708 :           if (memcmp(Mnemonic.data()+3, "ad_u8_e64", 9) != 0)
    1645             :             break;
    1646           0 :           Mnemonic = "v_sad_u8";       // "v_sad_u8_e64"
    1647           0 :           return;
    1648             :         }
    1649             :         break;
    1650             :       case 13:   // 68 strings to match.
    1651       16254 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    1652             :           break;
    1653             :         switch (Mnemonic[2]) {
    1654             :         default: break;
    1655         393 :         case 'a':        // 8 strings to match.
    1656             :           switch (Mnemonic[3]) {
    1657             :           default: break;
    1658             :           case 'd':      // 7 strings to match.
    1659          42 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    1660             :               break;
    1661             :             switch (Mnemonic[6]) {
    1662             :             default: break;
    1663           0 :             case 'f':    // 3 strings to match.
    1664             :               switch (Mnemonic[7]) {
    1665             :               default: break;
    1666             :               case '1':  // 1 string to match.
    1667           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1668             :                   break;
    1669           0 :                 Mnemonic = "v_add_f16";        // "v_add_f16_e64"
    1670           0 :                 return;
    1671             :               case '3':  // 1 string to match.
    1672           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1673             :                   break;
    1674           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_f32_e64"
    1675           0 :                   Mnemonic = "v_add_f32";
    1676             :                 return;
    1677             :               case '6':  // 1 string to match.
    1678           0 :                 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
    1679             :                   break;
    1680           0 :                 Mnemonic = "v_add_f64";        // "v_add_f64_e64"
    1681           0 :                 return;
    1682             :               }
    1683             :               break;
    1684           0 :             case 'i':    // 2 strings to match.
    1685             :               switch (Mnemonic[7]) {
    1686             :               default: break;
    1687             :               case '1':  // 1 string to match.
    1688           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1689             :                   break;
    1690           0 :                 Mnemonic = "v_add_i16";        // "v_add_i16_e64"
    1691           0 :                 return;
    1692             :               case '3':  // 1 string to match.
    1693           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1694             :                   break;
    1695           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_i32_e64"
    1696           0 :                   Mnemonic = "v_add_i32";
    1697             :                 return;
    1698             :               }
    1699             :               break;
    1700           0 :             case 'u':    // 2 strings to match.
    1701             :               switch (Mnemonic[7]) {
    1702             :               default: break;
    1703             :               case '1':  // 1 string to match.
    1704           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1705             :                   break;
    1706           0 :                 Mnemonic = "v_add_u16";        // "v_add_u16_e64"
    1707           0 :                 return;
    1708             :               case '3':  // 1 string to match.
    1709           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1710             :                   break;
    1711           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_u32_e64"
    1712           0 :                   Mnemonic = "v_add_u32";
    1713             :                 return;
    1714             :               }
    1715             :               break;
    1716             :             }
    1717             :             break;
    1718             :           case 'n':      // 1 string to match.
    1719           0 :             if (memcmp(Mnemonic.data()+4, "d_b32_e64", 9) != 0)
    1720             :               break;
    1721           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_and_b32_e64"
    1722           0 :               Mnemonic = "v_and_b32";
    1723             :             return;
    1724             :           }
    1725             :           break;
    1726           0 :         case 'b':        // 4 strings to match.
    1727           0 :           if (Mnemonic[3] != 'f')
    1728             :             break;
    1729             :           switch (Mnemonic[4]) {
    1730             :           default: break;
    1731           0 :           case 'e':      // 2 strings to match.
    1732           0 :             if (Mnemonic[5] != '_')
    1733             :               break;
    1734             :             switch (Mnemonic[6]) {
    1735             :             default: break;
    1736             :             case 'i':    // 1 string to match.
    1737           0 :               if (memcmp(Mnemonic.data()+7, "32_e64", 6) != 0)
    1738             :                 break;
    1739           0 :               Mnemonic = "v_bfe_i32";  // "v_bfe_i32_e64"
    1740           0 :               return;
    1741             :             case 'u':    // 1 string to match.
    1742           0 :               if (memcmp(Mnemonic.data()+7, "32_e64", 6) != 0)
    1743             :                 break;
    1744           0 :               Mnemonic = "v_bfe_u32";  // "v_bfe_u32_e64"
    1745           0 :               return;
    1746             :             }
    1747             :             break;
    1748             :           case 'i':      // 1 string to match.
    1749           0 :             if (memcmp(Mnemonic.data()+5, "_b32_e64", 8) != 0)
    1750             :               break;
    1751           0 :             Mnemonic = "v_bfi_b32";    // "v_bfi_b32_e64"
    1752           0 :             return;
    1753             :           case 'm':      // 1 string to match.
    1754           0 :             if (memcmp(Mnemonic.data()+5, "_b32_e64", 8) != 0)
    1755             :               break;
    1756           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_bfm_b32_e64"
    1757           0 :               Mnemonic = "v_bfm_b32";
    1758             :             return;
    1759             :           }
    1760             :           break;
    1761       12931 :         case 'c':        // 3 strings to match.
    1762             :           switch (Mnemonic[3]) {
    1763             :           default: break;
    1764             :           case 'l':      // 1 string to match.
    1765           0 :             if (memcmp(Mnemonic.data()+4, "rexcp_e64", 9) != 0)
    1766             :               break;
    1767           0 :             Mnemonic = "v_clrexcp";    // "v_clrexcp_e64"
    1768           0 :             return;
    1769             :           case 'o':      // 2 strings to match.
    1770           0 :             if (memcmp(Mnemonic.data()+4, "s_f", 3) != 0)
    1771             :               break;
    1772             :             switch (Mnemonic[7]) {
    1773             :             default: break;
    1774             :             case '1':    // 1 string to match.
    1775           0 :               if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1776             :                 break;
    1777           0 :               Mnemonic = "v_cos_f16";  // "v_cos_f16_e64"
    1778           0 :               return;
    1779             :             case '3':    // 1 string to match.
    1780           0 :               if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1781             :                 break;
    1782           0 :               Mnemonic = "v_cos_f32";  // "v_cos_f32_e64"
    1783           0 :               return;
    1784             :             }
    1785             :             break;
    1786             :           }
    1787             :           break;
    1788             :         case 'e':        // 2 strings to match.
    1789           0 :           if (memcmp(Mnemonic.data()+3, "xp_f", 4) != 0)
    1790             :             break;
    1791             :           switch (Mnemonic[7]) {
    1792             :           default: break;
    1793             :           case '1':      // 1 string to match.
    1794           0 :             if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1795             :               break;
    1796           0 :             Mnemonic = "v_exp_f16";    // "v_exp_f16_e64"
    1797           0 :             return;
    1798             :           case '3':      // 1 string to match.
    1799           0 :             if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1800             :               break;
    1801           0 :             Mnemonic = "v_exp_f32";    // "v_exp_f32_e64"
    1802           0 :             return;
    1803             :           }
    1804             :           break;
    1805             :         case 'f':        // 3 strings to match.
    1806          51 :           if (memcmp(Mnemonic.data()+3, "ma_f", 4) != 0)
    1807             :             break;
    1808             :           switch (Mnemonic[7]) {
    1809             :           default: break;
    1810             :           case '1':      // 1 string to match.
    1811           0 :             if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1812             :               break;
    1813           0 :             Mnemonic = "v_fma_f16";    // "v_fma_f16_e64"
    1814           0 :             return;
    1815             :           case '3':      // 1 string to match.
    1816           0 :             if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1817             :               break;
    1818           0 :             Mnemonic = "v_fma_f32";    // "v_fma_f32_e64"
    1819           0 :             return;
    1820             :           case '6':      // 1 string to match.
    1821           0 :             if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
    1822             :               break;
    1823           0 :             Mnemonic = "v_fma_f64";    // "v_fma_f64_e64"
    1824           0 :             return;
    1825             :           }
    1826             :           break;
    1827         795 :         case 'l':        // 3 strings to match.
    1828             :           switch (Mnemonic[3]) {
    1829             :           default: break;
    1830             :           case 'e':      // 1 string to match.
    1831           0 :             if (memcmp(Mnemonic.data()+4, "rp_u8_e64", 9) != 0)
    1832             :               break;
    1833           0 :             Mnemonic = "v_lerp_u8";    // "v_lerp_u8_e64"
    1834           0 :             return;
    1835             :           case 'o':      // 2 strings to match.
    1836           0 :             if (memcmp(Mnemonic.data()+4, "g_f", 3) != 0)
    1837             :               break;
    1838             :             switch (Mnemonic[7]) {
    1839             :             default: break;
    1840             :             case '1':    // 1 string to match.
    1841           0 :               if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1842             :                 break;
    1843           0 :               Mnemonic = "v_log_f16";  // "v_log_f16_e64"
    1844           0 :               return;
    1845             :             case '3':    // 1 string to match.
    1846           0 :               if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1847             :                 break;
    1848           0 :               Mnemonic = "v_log_f32";  // "v_log_f32_e64"
    1849           0 :               return;
    1850             :             }
    1851             :             break;
    1852             :           }
    1853             :           break;
    1854        1740 :         case 'm':        // 25 strings to match.
    1855             :           switch (Mnemonic[3]) {
    1856             :           default: break;
    1857        1258 :           case 'a':      // 13 strings to match.
    1858             :             switch (Mnemonic[4]) {
    1859             :             default: break;
    1860             :             case 'c':    // 2 strings to match.
    1861           0 :               if (memcmp(Mnemonic.data()+5, "_f", 2) != 0)
    1862             :                 break;
    1863             :               switch (Mnemonic[7]) {
    1864             :               default: break;
    1865             :               case '1':  // 1 string to match.
    1866           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1867             :                   break;
    1868           0 :                 Mnemonic = "v_mac_f16";        // "v_mac_f16_e64"
    1869           0 :                 return;
    1870             :               case '3':  // 1 string to match.
    1871           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1872             :                   break;
    1873           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mac_f32_e64"
    1874           0 :                   Mnemonic = "v_mac_f32";
    1875             :                 return;
    1876             :               }
    1877             :               break;
    1878        1258 :             case 'd':    // 4 strings to match.
    1879        1258 :               if (Mnemonic[5] != '_')
    1880             :                 break;
    1881             :               switch (Mnemonic[6]) {
    1882             :               default: break;
    1883           0 :               case 'f':  // 2 strings to match.
    1884             :                 switch (Mnemonic[7]) {
    1885             :                 default: break;
    1886             :                 case '1':        // 1 string to match.
    1887           0 :                   if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1888             :                     break;
    1889           0 :                   Mnemonic = "v_mad_f16";      // "v_mad_f16_e64"
    1890           0 :                   return;
    1891             :                 case '3':        // 1 string to match.
    1892           0 :                   if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1893             :                     break;
    1894           0 :                   Mnemonic = "v_mad_f32";      // "v_mad_f32_e64"
    1895           0 :                   return;
    1896             :                 }
    1897             :                 break;
    1898             :               case 'i':  // 1 string to match.
    1899         543 :                 if (memcmp(Mnemonic.data()+7, "16_e64", 6) != 0)
    1900             :                   break;
    1901           0 :                 Mnemonic = "v_mad_i16";        // "v_mad_i16_e64"
    1902           0 :                 return;
    1903             :               case 'u':  // 1 string to match.
    1904         547 :                 if (memcmp(Mnemonic.data()+7, "16_e64", 6) != 0)
    1905             :                   break;
    1906           0 :                 Mnemonic = "v_mad_u16";        // "v_mad_u16_e64"
    1907           0 :                 return;
    1908             :               }
    1909             :               break;
    1910           0 :             case 'x':    // 7 strings to match.
    1911           0 :               if (Mnemonic[5] != '_')
    1912             :                 break;
    1913             :               switch (Mnemonic[6]) {
    1914             :               default: break;
    1915           0 :               case 'f':  // 3 strings to match.
    1916             :                 switch (Mnemonic[7]) {
    1917             :                 default: break;
    1918             :                 case '1':        // 1 string to match.
    1919           0 :                   if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1920             :                     break;
    1921           0 :                   Mnemonic = "v_max_f16";      // "v_max_f16_e64"
    1922           0 :                   return;
    1923             :                 case '3':        // 1 string to match.
    1924           0 :                   if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1925             :                     break;
    1926           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_f32_e64"
    1927           0 :                     Mnemonic = "v_max_f32";
    1928             :                   return;
    1929             :                 case '6':        // 1 string to match.
    1930           0 :                   if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
    1931             :                     break;
    1932           0 :                   Mnemonic = "v_max_f64";      // "v_max_f64_e64"
    1933           0 :                   return;
    1934             :                 }
    1935             :                 break;
    1936           0 :               case 'i':  // 2 strings to match.
    1937             :                 switch (Mnemonic[7]) {
    1938             :                 default: break;
    1939             :                 case '1':        // 1 string to match.
    1940           0 :                   if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1941             :                     break;
    1942           0 :                   Mnemonic = "v_max_i16";      // "v_max_i16_e64"
    1943           0 :                   return;
    1944             :                 case '3':        // 1 string to match.
    1945           0 :                   if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1946             :                     break;
    1947           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_i32_e64"
    1948           0 :                     Mnemonic = "v_max_i32";
    1949             :                   return;
    1950             :                 }
    1951             :                 break;
    1952           0 :               case 'u':  // 2 strings to match.
    1953             :                 switch (Mnemonic[7]) {
    1954             :                 default: break;
    1955             :                 case '1':        // 1 string to match.
    1956           0 :                   if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1957             :                     break;
    1958           0 :                   Mnemonic = "v_max_u16";      // "v_max_u16_e64"
    1959           0 :                   return;
    1960             :                 case '3':        // 1 string to match.
    1961           0 :                   if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1962             :                     break;
    1963           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_u32_e64"
    1964           0 :                     Mnemonic = "v_max_u32";
    1965             :                   return;
    1966             :                 }
    1967             :                 break;
    1968             :               }
    1969             :               break;
    1970             :             }
    1971             :             break;
    1972             :           case 'i':      // 7 strings to match.
    1973           0 :             if (memcmp(Mnemonic.data()+4, "n_", 2) != 0)
    1974             :               break;
    1975             :             switch (Mnemonic[6]) {
    1976             :             default: break;
    1977           0 :             case 'f':    // 3 strings to match.
    1978             :               switch (Mnemonic[7]) {
    1979             :               default: break;
    1980             :               case '1':  // 1 string to match.
    1981           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    1982             :                   break;
    1983           0 :                 Mnemonic = "v_min_f16";        // "v_min_f16_e64"
    1984           0 :                 return;
    1985             :               case '3':  // 1 string to match.
    1986           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    1987             :                   break;
    1988           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_f32_e64"
    1989           0 :                   Mnemonic = "v_min_f32";
    1990             :                 return;
    1991             :               case '6':  // 1 string to match.
    1992           0 :                 if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
    1993             :                   break;
    1994           0 :                 Mnemonic = "v_min_f64";        // "v_min_f64_e64"
    1995           0 :                 return;
    1996             :               }
    1997             :               break;
    1998           0 :             case 'i':    // 2 strings to match.
    1999             :               switch (Mnemonic[7]) {
    2000             :               default: break;
    2001             :               case '1':  // 1 string to match.
    2002           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2003             :                   break;
    2004           0 :                 Mnemonic = "v_min_i16";        // "v_min_i16_e64"
    2005           0 :                 return;
    2006             :               case '3':  // 1 string to match.
    2007           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2008             :                   break;
    2009           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_i32_e64"
    2010           0 :                   Mnemonic = "v_min_i32";
    2011             :                 return;
    2012             :               }
    2013             :               break;
    2014           0 :             case 'u':    // 2 strings to match.
    2015             :               switch (Mnemonic[7]) {
    2016             :               default: break;
    2017             :               case '1':  // 1 string to match.
    2018           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2019             :                   break;
    2020           0 :                 Mnemonic = "v_min_u16";        // "v_min_u16_e64"
    2021           0 :                 return;
    2022             :               case '3':  // 1 string to match.
    2023           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2024             :                   break;
    2025           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_u32_e64"
    2026           0 :                   Mnemonic = "v_min_u32";
    2027             :                 return;
    2028             :               }
    2029             :               break;
    2030             :             }
    2031             :             break;
    2032             :           case 'o':      // 1 string to match.
    2033         102 :             if (memcmp(Mnemonic.data()+4, "v_b32_e64", 9) != 0)
    2034             :               break;
    2035           0 :             Mnemonic = "v_mov_b32";    // "v_mov_b32_e64"
    2036           0 :             return;
    2037             :           case 's':      // 1 string to match.
    2038           0 :             if (memcmp(Mnemonic.data()+4, "ad_u8_e64", 9) != 0)
    2039             :               break;
    2040           0 :             Mnemonic = "v_msad_u8";    // "v_msad_u8_e64"
    2041           0 :             return;
    2042             :           case 'u':      // 3 strings to match.
    2043         380 :             if (memcmp(Mnemonic.data()+4, "l_f", 3) != 0)
    2044             :               break;
    2045             :             switch (Mnemonic[7]) {
    2046             :             default: break;
    2047             :             case '1':    // 1 string to match.
    2048           0 :               if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2049             :                 break;
    2050           0 :               Mnemonic = "v_mul_f16";  // "v_mul_f16_e64"
    2051           0 :               return;
    2052             :             case '3':    // 1 string to match.
    2053           0 :               if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2054             :                 break;
    2055           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_f32_e64"
    2056           0 :                 Mnemonic = "v_mul_f32";
    2057             :               return;
    2058             :             case '6':    // 1 string to match.
    2059           0 :               if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
    2060             :                 break;
    2061           0 :               Mnemonic = "v_mul_f64";  // "v_mul_f64_e64"
    2062           0 :               return;
    2063             :             }
    2064             :             break;
    2065             :           }
    2066             :           break;
    2067             :         case 'n':        // 1 string to match.
    2068           0 :           if (memcmp(Mnemonic.data()+3, "ot_b32_e64", 10) != 0)
    2069             :             break;
    2070           0 :           Mnemonic = "v_not_b32";      // "v_not_b32_e64"
    2071           0 :           return;
    2072             :         case 'o':        // 1 string to match.
    2073           0 :           if (memcmp(Mnemonic.data()+3, "r3_b32_e64", 10) != 0)
    2074             :             break;
    2075           0 :           Mnemonic = "v_or3_b32";      // "v_or3_b32_e64"
    2076           0 :           return;
    2077           0 :         case 'r':        // 6 strings to match.
    2078             :           switch (Mnemonic[3]) {
    2079             :           default: break;
    2080             :           case 'c':      // 3 strings to match.
    2081           0 :             if (memcmp(Mnemonic.data()+4, "p_f", 3) != 0)
    2082             :               break;
    2083             :             switch (Mnemonic[7]) {
    2084             :             default: break;
    2085             :             case '1':    // 1 string to match.
    2086           0 :               if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2087             :                 break;
    2088           0 :               Mnemonic = "v_rcp_f16";  // "v_rcp_f16_e64"
    2089           0 :               return;
    2090             :             case '3':    // 1 string to match.
    2091           0 :               if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2092             :                 break;
    2093           0 :               Mnemonic = "v_rcp_f32";  // "v_rcp_f32_e64"
    2094           0 :               return;
    2095             :             case '6':    // 1 string to match.
    2096           0 :               if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
    2097             :                 break;
    2098           0 :               Mnemonic = "v_rcp_f64";  // "v_rcp_f64_e64"
    2099           0 :               return;
    2100             :             }
    2101             :             break;
    2102             :           case 's':      // 3 strings to match.
    2103           0 :             if (memcmp(Mnemonic.data()+4, "q_f", 3) != 0)
    2104             :               break;
    2105             :             switch (Mnemonic[7]) {
    2106             :             default: break;
    2107             :             case '1':    // 1 string to match.
    2108           0 :               if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2109             :                 break;
    2110           0 :               Mnemonic = "v_rsq_f16";  // "v_rsq_f16_e64"
    2111           0 :               return;
    2112             :             case '3':    // 1 string to match.
    2113           0 :               if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2114             :                 break;
    2115           0 :               Mnemonic = "v_rsq_f32";  // "v_rsq_f32_e64"
    2116           0 :               return;
    2117             :             case '6':    // 1 string to match.
    2118           0 :               if (memcmp(Mnemonic.data()+8, "4_e64", 5) != 0)
    2119             :                 break;
    2120           0 :               Mnemonic = "v_rsq_f64";  // "v_rsq_f64_e64"
    2121           0 :               return;
    2122             :             }
    2123             :             break;
    2124             :           }
    2125             :           break;
    2126         104 :         case 's':        // 10 strings to match.
    2127             :           switch (Mnemonic[3]) {
    2128             :           default: break;
    2129             :           case 'a':      // 2 strings to match.
    2130           0 :             if (memcmp(Mnemonic.data()+4, "d_u", 3) != 0)
    2131             :               break;
    2132             :             switch (Mnemonic[7]) {
    2133             :             default: break;
    2134             :             case '1':    // 1 string to match.
    2135           0 :               if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2136             :                 break;
    2137           0 :               Mnemonic = "v_sad_u16";  // "v_sad_u16_e64"
    2138           0 :               return;
    2139             :             case '3':    // 1 string to match.
    2140           0 :               if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2141             :                 break;
    2142           0 :               Mnemonic = "v_sad_u32";  // "v_sad_u32_e64"
    2143           0 :               return;
    2144             :             }
    2145             :             break;
    2146             :           case 'i':      // 2 strings to match.
    2147           0 :             if (memcmp(Mnemonic.data()+4, "n_f", 3) != 0)
    2148             :               break;
    2149             :             switch (Mnemonic[7]) {
    2150             :             default: break;
    2151             :             case '1':    // 1 string to match.
    2152           0 :               if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2153             :                 break;
    2154           0 :               Mnemonic = "v_sin_f16";  // "v_sin_f16_e64"
    2155           0 :               return;
    2156             :             case '3':    // 1 string to match.
    2157           0 :               if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2158             :                 break;
    2159           0 :               Mnemonic = "v_sin_f32";  // "v_sin_f32_e64"
    2160           0 :               return;
    2161             :             }
    2162             :             break;
    2163             :           case 'u':      // 6 strings to match.
    2164         104 :             if (memcmp(Mnemonic.data()+4, "b_", 2) != 0)
    2165             :               break;
    2166             :             switch (Mnemonic[6]) {
    2167             :             default: break;
    2168           0 :             case 'f':    // 2 strings to match.
    2169             :               switch (Mnemonic[7]) {
    2170             :               default: break;
    2171             :               case '1':  // 1 string to match.
    2172           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2173             :                   break;
    2174           0 :                 Mnemonic = "v_sub_f16";        // "v_sub_f16_e64"
    2175           0 :                 return;
    2176             :               case '3':  // 1 string to match.
    2177           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2178             :                   break;
    2179           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_f32_e64"
    2180           0 :                   Mnemonic = "v_sub_f32";
    2181             :                 return;
    2182             :               }
    2183             :               break;
    2184           0 :             case 'i':    // 2 strings to match.
    2185             :               switch (Mnemonic[7]) {
    2186             :               default: break;
    2187             :               case '1':  // 1 string to match.
    2188           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2189             :                   break;
    2190           0 :                 Mnemonic = "v_sub_i16";        // "v_sub_i16_e64"
    2191           0 :                 return;
    2192             :               case '3':  // 1 string to match.
    2193           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2194             :                   break;
    2195           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_i32_e64"
    2196           0 :                   Mnemonic = "v_sub_i32";
    2197             :                 return;
    2198             :               }
    2199             :               break;
    2200           0 :             case 'u':    // 2 strings to match.
    2201             :               switch (Mnemonic[7]) {
    2202             :               default: break;
    2203             :               case '1':  // 1 string to match.
    2204           0 :                 if (memcmp(Mnemonic.data()+8, "6_e64", 5) != 0)
    2205             :                   break;
    2206           0 :                 Mnemonic = "v_sub_u16";        // "v_sub_u16_e64"
    2207           0 :                 return;
    2208             :               case '3':  // 1 string to match.
    2209           0 :                 if (memcmp(Mnemonic.data()+8, "2_e64", 5) != 0)
    2210             :                   break;
    2211           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_u32_e64"
    2212           0 :                   Mnemonic = "v_sub_u32";
    2213             :                 return;
    2214             :               }
    2215             :               break;
    2216             :             }
    2217             :             break;
    2218             :           }
    2219             :           break;
    2220           0 :         case 'x':        // 2 strings to match.
    2221             :           switch (Mnemonic[3]) {
    2222             :           default: break;
    2223             :           case 'a':      // 1 string to match.
    2224           0 :             if (memcmp(Mnemonic.data()+4, "d_u32_e64", 9) != 0)
    2225             :               break;
    2226           0 :             Mnemonic = "v_xad_u32";    // "v_xad_u32_e64"
    2227           0 :             return;
    2228             :           case 'o':      // 1 string to match.
    2229           0 :             if (memcmp(Mnemonic.data()+4, "r_b32_e64", 9) != 0)
    2230             :               break;
    2231           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_xor_b32_e64"
    2232           0 :               Mnemonic = "v_xor_b32";
    2233             :             return;
    2234             :           }
    2235             :           break;
    2236             :         }
    2237             :         break;
    2238             :       case 14:   // 39 strings to match.
    2239        5597 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    2240             :           break;
    2241             :         switch (Mnemonic[2]) {
    2242             :         default: break;
    2243         274 :         case 'a':        // 4 strings to match.
    2244             :           switch (Mnemonic[3]) {
    2245             :           default: break;
    2246          92 :           case 'd':      // 2 strings to match.
    2247          92 :             if (Mnemonic[4] != 'd')
    2248             :               break;
    2249             :             switch (Mnemonic[5]) {
    2250             :             default: break;
    2251             :             case '3':    // 1 string to match.
    2252           0 :               if (memcmp(Mnemonic.data()+6, "_u32_e64", 8) != 0)
    2253             :                 break;
    2254           0 :               Mnemonic = "v_add3_u32";         // "v_add3_u32_e64"
    2255           0 :               return;
    2256             :             case 'c':    // 1 string to match.
    2257           0 :               if (memcmp(Mnemonic.data()+6, "_u32_e64", 8) != 0)
    2258             :                 break;
    2259           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_addc_u32_e64"
    2260           0 :                 Mnemonic = "v_addc_u32";
    2261             :               return;
    2262             :             }
    2263             :             break;
    2264             :           case 's':      // 2 strings to match.
    2265           0 :             if (memcmp(Mnemonic.data()+4, "hr_i", 4) != 0)
    2266             :               break;
    2267             :             switch (Mnemonic[8]) {
    2268             :             default: break;
    2269             :             case '3':    // 1 string to match.
    2270           0 :               if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2271             :                 break;
    2272           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_ashr_i32_e64"
    2273           0 :                 Mnemonic = "v_ashr_i32";
    2274             :               return;
    2275             :             case '6':    // 1 string to match.
    2276           0 :               if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2277             :                 break;
    2278           0 :               Mnemonic = "v_ashr_i64";         // "v_ashr_i64_e64"
    2279           0 :               return;
    2280             :             }
    2281             :             break;
    2282             :           }
    2283             :           break;
    2284             :         case 'c':        // 3 strings to match.
    2285        4266 :           if (memcmp(Mnemonic.data()+3, "eil_f", 5) != 0)
    2286             :             break;
    2287             :           switch (Mnemonic[8]) {
    2288             :           default: break;
    2289             :           case '1':      // 1 string to match.
    2290           0 :             if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2291             :               break;
    2292           0 :             Mnemonic = "v_ceil_f16";   // "v_ceil_f16_e64"
    2293           0 :             return;
    2294             :           case '3':      // 1 string to match.
    2295           0 :             if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2296             :               break;
    2297           0 :             Mnemonic = "v_ceil_f32";   // "v_ceil_f32_e64"
    2298           0 :             return;
    2299             :           case '6':      // 1 string to match.
    2300           0 :             if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2301             :               break;
    2302           0 :             Mnemonic = "v_ceil_f64";   // "v_ceil_f64_e64"
    2303           0 :             return;
    2304             :           }
    2305             :           break;
    2306           0 :         case 'f':        // 4 strings to match.
    2307             :           switch (Mnemonic[3]) {
    2308             :           default: break;
    2309           0 :           case 'f':      // 3 strings to match.
    2310           0 :             if (Mnemonic[4] != 'b')
    2311             :               break;
    2312             :             switch (Mnemonic[5]) {
    2313             :             default: break;
    2314           0 :             case 'h':    // 2 strings to match.
    2315           0 :               if (Mnemonic[6] != '_')
    2316             :                 break;
    2317             :               switch (Mnemonic[7]) {
    2318             :               default: break;
    2319             :               case 'i':  // 1 string to match.
    2320           0 :                 if (memcmp(Mnemonic.data()+8, "32_e64", 6) != 0)
    2321             :                   break;
    2322           0 :                 Mnemonic = "v_ffbh_i32";       // "v_ffbh_i32_e64"
    2323           0 :                 return;
    2324             :               case 'u':  // 1 string to match.
    2325           0 :                 if (memcmp(Mnemonic.data()+8, "32_e64", 6) != 0)
    2326             :                   break;
    2327           0 :                 Mnemonic = "v_ffbh_u32";       // "v_ffbh_u32_e64"
    2328           0 :                 return;
    2329             :               }
    2330             :               break;
    2331             :             case 'l':    // 1 string to match.
    2332           0 :               if (memcmp(Mnemonic.data()+6, "_b32_e64", 8) != 0)
    2333             :                 break;
    2334           0 :               Mnemonic = "v_ffbl_b32";         // "v_ffbl_b32_e64"
    2335           0 :               return;
    2336             :             }
    2337             :             break;
    2338             :           case 'm':      // 1 string to match.
    2339           0 :             if (memcmp(Mnemonic.data()+4, "ac_f32_e64", 10) != 0)
    2340             :               break;
    2341           0 :             Mnemonic = "v_fmac_f32";   // "v_fmac_f32_e64"
    2342           0 :             return;
    2343             :           }
    2344             :           break;
    2345             :         case 'l':        // 4 strings to match.
    2346          92 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    2347             :             break;
    2348             :           switch (Mnemonic[5]) {
    2349             :           default: break;
    2350             :           case 'l':      // 2 strings to match.
    2351          92 :             if (memcmp(Mnemonic.data()+6, "_b", 2) != 0)
    2352             :               break;
    2353             :             switch (Mnemonic[8]) {
    2354             :             default: break;
    2355             :             case '3':    // 1 string to match.
    2356           0 :               if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2357             :                 break;
    2358           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_lshl_b32_e64"
    2359           0 :                 Mnemonic = "v_lshl_b32";
    2360             :               return;
    2361             :             case '6':    // 1 string to match.
    2362           0 :               if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2363             :                 break;
    2364           0 :               Mnemonic = "v_lshl_b64";         // "v_lshl_b64_e64"
    2365           0 :               return;
    2366             :             }
    2367             :             break;
    2368             :           case 'r':      // 2 strings to match.
    2369           0 :             if (memcmp(Mnemonic.data()+6, "_b", 2) != 0)
    2370             :               break;
    2371             :             switch (Mnemonic[8]) {
    2372             :             default: break;
    2373             :             case '3':    // 1 string to match.
    2374           0 :               if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2375             :                 break;
    2376           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_lshr_b32_e64"
    2377           0 :                 Mnemonic = "v_lshr_b32";
    2378             :               return;
    2379             :             case '6':    // 1 string to match.
    2380           0 :               if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2381             :                 break;
    2382           0 :               Mnemonic = "v_lshr_b64";         // "v_lshr_b64_e64"
    2383           0 :               return;
    2384             :             }
    2385             :             break;
    2386             :           }
    2387             :           break;
    2388         133 :         case 'm':        // 18 strings to match.
    2389             :           switch (Mnemonic[3]) {
    2390             :           default: break;
    2391             :           case 'a':      // 6 strings to match.
    2392           0 :             if (memcmp(Mnemonic.data()+4, "x3_", 3) != 0)
    2393             :               break;
    2394             :             switch (Mnemonic[7]) {
    2395             :             default: break;
    2396           0 :             case 'f':    // 2 strings to match.
    2397             :               switch (Mnemonic[8]) {
    2398             :               default: break;
    2399             :               case '1':  // 1 string to match.
    2400           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2401             :                   break;
    2402           0 :                 Mnemonic = "v_max3_f16";       // "v_max3_f16_e64"
    2403           0 :                 return;
    2404             :               case '3':  // 1 string to match.
    2405           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2406             :                   break;
    2407           0 :                 Mnemonic = "v_max3_f32";       // "v_max3_f32_e64"
    2408           0 :                 return;
    2409             :               }
    2410             :               break;
    2411           0 :             case 'i':    // 2 strings to match.
    2412             :               switch (Mnemonic[8]) {
    2413             :               default: break;
    2414             :               case '1':  // 1 string to match.
    2415           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2416             :                   break;
    2417           0 :                 Mnemonic = "v_max3_i16";       // "v_max3_i16_e64"
    2418           0 :                 return;
    2419             :               case '3':  // 1 string to match.
    2420           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2421             :                   break;
    2422           0 :                 Mnemonic = "v_max3_i32";       // "v_max3_i32_e64"
    2423           0 :                 return;
    2424             :               }
    2425             :               break;
    2426           0 :             case 'u':    // 2 strings to match.
    2427             :               switch (Mnemonic[8]) {
    2428             :               default: break;
    2429             :               case '1':  // 1 string to match.
    2430           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2431             :                   break;
    2432           0 :                 Mnemonic = "v_max3_u16";       // "v_max3_u16_e64"
    2433           0 :                 return;
    2434             :               case '3':  // 1 string to match.
    2435           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2436             :                   break;
    2437           0 :                 Mnemonic = "v_max3_u32";       // "v_max3_u32_e64"
    2438           0 :                 return;
    2439             :               }
    2440             :               break;
    2441             :             }
    2442             :             break;
    2443             :           case 'e':      // 6 strings to match.
    2444           0 :             if (memcmp(Mnemonic.data()+4, "d3_", 3) != 0)
    2445             :               break;
    2446             :             switch (Mnemonic[7]) {
    2447             :             default: break;
    2448           0 :             case 'f':    // 2 strings to match.
    2449             :               switch (Mnemonic[8]) {
    2450             :               default: break;
    2451             :               case '1':  // 1 string to match.
    2452           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2453             :                   break;
    2454           0 :                 Mnemonic = "v_med3_f16";       // "v_med3_f16_e64"
    2455           0 :                 return;
    2456             :               case '3':  // 1 string to match.
    2457           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2458             :                   break;
    2459           0 :                 Mnemonic = "v_med3_f32";       // "v_med3_f32_e64"
    2460           0 :                 return;
    2461             :               }
    2462             :               break;
    2463           0 :             case 'i':    // 2 strings to match.
    2464             :               switch (Mnemonic[8]) {
    2465             :               default: break;
    2466             :               case '1':  // 1 string to match.
    2467           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2468             :                   break;
    2469           0 :                 Mnemonic = "v_med3_i16";       // "v_med3_i16_e64"
    2470           0 :                 return;
    2471             :               case '3':  // 1 string to match.
    2472           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2473             :                   break;
    2474           0 :                 Mnemonic = "v_med3_i32";       // "v_med3_i32_e64"
    2475           0 :                 return;
    2476             :               }
    2477             :               break;
    2478           0 :             case 'u':    // 2 strings to match.
    2479             :               switch (Mnemonic[8]) {
    2480             :               default: break;
    2481             :               case '1':  // 1 string to match.
    2482           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2483             :                   break;
    2484           0 :                 Mnemonic = "v_med3_u16";       // "v_med3_u16_e64"
    2485           0 :                 return;
    2486             :               case '3':  // 1 string to match.
    2487           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2488             :                   break;
    2489           0 :                 Mnemonic = "v_med3_u32";       // "v_med3_u32_e64"
    2490           0 :                 return;
    2491             :               }
    2492             :               break;
    2493             :             }
    2494             :             break;
    2495             :           case 'i':      // 6 strings to match.
    2496           0 :             if (memcmp(Mnemonic.data()+4, "n3_", 3) != 0)
    2497             :               break;
    2498             :             switch (Mnemonic[7]) {
    2499             :             default: break;
    2500           0 :             case 'f':    // 2 strings to match.
    2501             :               switch (Mnemonic[8]) {
    2502             :               default: break;
    2503             :               case '1':  // 1 string to match.
    2504           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2505             :                   break;
    2506           0 :                 Mnemonic = "v_min3_f16";       // "v_min3_f16_e64"
    2507           0 :                 return;
    2508             :               case '3':  // 1 string to match.
    2509           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2510             :                   break;
    2511           0 :                 Mnemonic = "v_min3_f32";       // "v_min3_f32_e64"
    2512           0 :                 return;
    2513             :               }
    2514             :               break;
    2515           0 :             case 'i':    // 2 strings to match.
    2516             :               switch (Mnemonic[8]) {
    2517             :               default: break;
    2518             :               case '1':  // 1 string to match.
    2519           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2520             :                   break;
    2521           0 :                 Mnemonic = "v_min3_i16";       // "v_min3_i16_e64"
    2522           0 :                 return;
    2523             :               case '3':  // 1 string to match.
    2524           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2525             :                   break;
    2526           0 :                 Mnemonic = "v_min3_i32";       // "v_min3_i32_e64"
    2527           0 :                 return;
    2528             :               }
    2529             :               break;
    2530           0 :             case 'u':    // 2 strings to match.
    2531             :               switch (Mnemonic[8]) {
    2532             :               default: break;
    2533             :               case '1':  // 1 string to match.
    2534           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2535             :                   break;
    2536           0 :                 Mnemonic = "v_min3_u16";       // "v_min3_u16_e64"
    2537           0 :                 return;
    2538             :               case '3':  // 1 string to match.
    2539           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2540             :                   break;
    2541           0 :                 Mnemonic = "v_min3_u32";       // "v_min3_u32_e64"
    2542           0 :                 return;
    2543             :               }
    2544             :               break;
    2545             :             }
    2546             :             break;
    2547             :           }
    2548             :           break;
    2549             :         case 'p':        // 1 string to match.
    2550          89 :           if (memcmp(Mnemonic.data()+3, "erm_b32_e64", 11) != 0)
    2551             :             break;
    2552           0 :           Mnemonic = "v_perm_b32";     // "v_perm_b32_e64"
    2553           0 :           return;
    2554           0 :         case 's':        // 4 strings to match.
    2555             :           switch (Mnemonic[3]) {
    2556             :           default: break;
    2557             :           case 'q':      // 3 strings to match.
    2558           0 :             if (memcmp(Mnemonic.data()+4, "rt_f", 4) != 0)
    2559             :               break;
    2560             :             switch (Mnemonic[8]) {
    2561             :             default: break;
    2562             :             case '1':    // 1 string to match.
    2563           0 :               if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2564             :                 break;
    2565           0 :               Mnemonic = "v_sqrt_f16";         // "v_sqrt_f16_e64"
    2566           0 :               return;
    2567             :             case '3':    // 1 string to match.
    2568           0 :               if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2569             :                 break;
    2570           0 :               Mnemonic = "v_sqrt_f32";         // "v_sqrt_f32_e64"
    2571           0 :               return;
    2572             :             case '6':    // 1 string to match.
    2573           0 :               if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2574             :                 break;
    2575           0 :               Mnemonic = "v_sqrt_f64";         // "v_sqrt_f64_e64"
    2576           0 :               return;
    2577             :             }
    2578             :             break;
    2579             :           case 'u':      // 1 string to match.
    2580           0 :             if (memcmp(Mnemonic.data()+4, "bb_u32_e64", 10) != 0)
    2581             :               break;
    2582           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subb_u32_e64"
    2583           0 :               Mnemonic = "v_subb_u32";
    2584             :             return;
    2585             :           }
    2586             :           break;
    2587             :         case 'x':        // 1 string to match.
    2588           0 :           if (memcmp(Mnemonic.data()+3, "nor_b32_e64", 11) != 0)
    2589             :             break;
    2590           0 :           Mnemonic = "v_xnor_b32";     // "v_xnor_b32_e64"
    2591           0 :           return;
    2592             :         }
    2593             :         break;
    2594             :       case 15:   // 38 strings to match.
    2595        3771 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    2596             :           break;
    2597             :         switch (Mnemonic[2]) {
    2598             :         default: break;
    2599             :         case 'b':        // 1 string to match.
    2600           0 :           if (memcmp(Mnemonic.data()+3, "frev_b32_e64", 12) != 0)
    2601             :             break;
    2602           0 :           Mnemonic = "v_bfrev_b32";    // "v_bfrev_b32_e64"
    2603           0 :           return;
    2604             :         case 'c':        // 21 strings to match.
    2605        1271 :           if (memcmp(Mnemonic.data()+3, "mp_", 3) != 0)
    2606             :             break;
    2607             :           switch (Mnemonic[6]) {
    2608             :           default: break;
    2609           0 :           case 'f':      // 9 strings to match.
    2610           0 :             if (Mnemonic[7] != '_')
    2611             :               break;
    2612             :             switch (Mnemonic[8]) {
    2613             :             default: break;
    2614           0 :             case 'f':    // 3 strings to match.
    2615             :               switch (Mnemonic[9]) {
    2616             :               default: break;
    2617             :               case '1':  // 1 string to match.
    2618           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2619             :                   break;
    2620           0 :                 Mnemonic = "v_cmp_f_f16";      // "v_cmp_f_f16_e64"
    2621           0 :                 return;
    2622             :               case '3':  // 1 string to match.
    2623           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2624             :                   break;
    2625           0 :                 Mnemonic = "v_cmp_f_f32";      // "v_cmp_f_f32_e64"
    2626           0 :                 return;
    2627             :               case '6':  // 1 string to match.
    2628           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2629             :                   break;
    2630           0 :                 Mnemonic = "v_cmp_f_f64";      // "v_cmp_f_f64_e64"
    2631           0 :                 return;
    2632             :               }
    2633             :               break;
    2634           0 :             case 'i':    // 3 strings to match.
    2635             :               switch (Mnemonic[9]) {
    2636             :               default: break;
    2637             :               case '1':  // 1 string to match.
    2638           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2639             :                   break;
    2640           0 :                 Mnemonic = "v_cmp_f_i16";      // "v_cmp_f_i16_e64"
    2641           0 :                 return;
    2642             :               case '3':  // 1 string to match.
    2643           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2644             :                   break;
    2645           0 :                 Mnemonic = "v_cmp_f_i32";      // "v_cmp_f_i32_e64"
    2646           0 :                 return;
    2647             :               case '6':  // 1 string to match.
    2648           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2649             :                   break;
    2650           0 :                 Mnemonic = "v_cmp_f_i64";      // "v_cmp_f_i64_e64"
    2651           0 :                 return;
    2652             :               }
    2653             :               break;
    2654           0 :             case 'u':    // 3 strings to match.
    2655             :               switch (Mnemonic[9]) {
    2656             :               default: break;
    2657             :               case '1':  // 1 string to match.
    2658           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2659             :                   break;
    2660           0 :                 Mnemonic = "v_cmp_f_u16";      // "v_cmp_f_u16_e64"
    2661           0 :                 return;
    2662             :               case '3':  // 1 string to match.
    2663           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2664             :                   break;
    2665           0 :                 Mnemonic = "v_cmp_f_u32";      // "v_cmp_f_u32_e64"
    2666           0 :                 return;
    2667             :               case '6':  // 1 string to match.
    2668           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2669             :                   break;
    2670           0 :                 Mnemonic = "v_cmp_f_u64";      // "v_cmp_f_u64_e64"
    2671           0 :                 return;
    2672             :               }
    2673             :               break;
    2674             :             }
    2675             :             break;
    2676             :           case 'o':      // 3 strings to match.
    2677           0 :             if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
    2678             :               break;
    2679             :             switch (Mnemonic[9]) {
    2680             :             default: break;
    2681             :             case '1':    // 1 string to match.
    2682           0 :               if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2683             :                 break;
    2684           0 :               Mnemonic = "v_cmp_o_f16";        // "v_cmp_o_f16_e64"
    2685           0 :               return;
    2686             :             case '3':    // 1 string to match.
    2687           0 :               if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2688             :                 break;
    2689           0 :               Mnemonic = "v_cmp_o_f32";        // "v_cmp_o_f32_e64"
    2690           0 :               return;
    2691             :             case '6':    // 1 string to match.
    2692           0 :               if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2693             :                 break;
    2694           0 :               Mnemonic = "v_cmp_o_f64";        // "v_cmp_o_f64_e64"
    2695           0 :               return;
    2696             :             }
    2697             :             break;
    2698           0 :           case 't':      // 6 strings to match.
    2699           0 :             if (Mnemonic[7] != '_')
    2700             :               break;
    2701             :             switch (Mnemonic[8]) {
    2702             :             default: break;
    2703           0 :             case 'i':    // 3 strings to match.
    2704             :               switch (Mnemonic[9]) {
    2705             :               default: break;
    2706             :               case '1':  // 1 string to match.
    2707           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2708             :                   break;
    2709           0 :                 Mnemonic = "v_cmp_t_i16";      // "v_cmp_t_i16_e64"
    2710           0 :                 return;
    2711             :               case '3':  // 1 string to match.
    2712           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2713             :                   break;
    2714           0 :                 Mnemonic = "v_cmp_t_i32";      // "v_cmp_t_i32_e64"
    2715           0 :                 return;
    2716             :               case '6':  // 1 string to match.
    2717           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2718             :                   break;
    2719           0 :                 Mnemonic = "v_cmp_t_i64";      // "v_cmp_t_i64_e64"
    2720           0 :                 return;
    2721             :               }
    2722             :               break;
    2723           0 :             case 'u':    // 3 strings to match.
    2724             :               switch (Mnemonic[9]) {
    2725             :               default: break;
    2726             :               case '1':  // 1 string to match.
    2727           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2728             :                   break;
    2729           0 :                 Mnemonic = "v_cmp_t_u16";      // "v_cmp_t_u16_e64"
    2730           0 :                 return;
    2731             :               case '3':  // 1 string to match.
    2732           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2733             :                   break;
    2734           0 :                 Mnemonic = "v_cmp_t_u32";      // "v_cmp_t_u32_e64"
    2735           0 :                 return;
    2736             :               case '6':  // 1 string to match.
    2737           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2738             :                   break;
    2739           0 :                 Mnemonic = "v_cmp_t_u64";      // "v_cmp_t_u64_e64"
    2740           0 :                 return;
    2741             :               }
    2742             :               break;
    2743             :             }
    2744             :             break;
    2745             :           case 'u':      // 3 strings to match.
    2746           0 :             if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
    2747             :               break;
    2748             :             switch (Mnemonic[9]) {
    2749             :             default: break;
    2750             :             case '1':    // 1 string to match.
    2751           0 :               if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2752             :                 break;
    2753           0 :               Mnemonic = "v_cmp_u_f16";        // "v_cmp_u_f16_e64"
    2754           0 :               return;
    2755             :             case '3':    // 1 string to match.
    2756           0 :               if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2757             :                 break;
    2758           0 :               Mnemonic = "v_cmp_u_f32";        // "v_cmp_u_f32_e64"
    2759           0 :               return;
    2760             :             case '6':    // 1 string to match.
    2761           0 :               if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2762             :                 break;
    2763           0 :               Mnemonic = "v_cmp_u_f64";        // "v_cmp_u_f64_e64"
    2764           0 :               return;
    2765             :             }
    2766             :             break;
    2767             :           }
    2768             :           break;
    2769          22 :         case 'f':        // 6 strings to match.
    2770             :           switch (Mnemonic[3]) {
    2771             :           default: break;
    2772             :           case 'l':      // 3 strings to match.
    2773           0 :             if (memcmp(Mnemonic.data()+4, "oor_f", 5) != 0)
    2774             :               break;
    2775             :             switch (Mnemonic[9]) {
    2776             :             default: break;
    2777             :             case '1':    // 1 string to match.
    2778           0 :               if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2779             :                 break;
    2780           0 :               Mnemonic = "v_floor_f16";        // "v_floor_f16_e64"
    2781           0 :               return;
    2782             :             case '3':    // 1 string to match.
    2783           0 :               if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2784             :                 break;
    2785           0 :               Mnemonic = "v_floor_f32";        // "v_floor_f32_e64"
    2786           0 :               return;
    2787             :             case '6':    // 1 string to match.
    2788           0 :               if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2789             :                 break;
    2790           0 :               Mnemonic = "v_floor_f64";        // "v_floor_f64_e64"
    2791           0 :               return;
    2792             :             }
    2793             :             break;
    2794             :           case 'r':      // 3 strings to match.
    2795           0 :             if (memcmp(Mnemonic.data()+4, "act_f", 5) != 0)
    2796             :               break;
    2797             :             switch (Mnemonic[9]) {
    2798             :             default: break;
    2799             :             case '1':    // 1 string to match.
    2800           0 :               if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2801             :                 break;
    2802           0 :               Mnemonic = "v_fract_f16";        // "v_fract_f16_e64"
    2803           0 :               return;
    2804             :             case '3':    // 1 string to match.
    2805           0 :               if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2806             :                 break;
    2807           0 :               Mnemonic = "v_fract_f32";        // "v_fract_f32_e64"
    2808           0 :               return;
    2809             :             case '6':    // 1 string to match.
    2810           0 :               if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2811             :                 break;
    2812           0 :               Mnemonic = "v_fract_f64";        // "v_fract_f64_e64"
    2813           0 :               return;
    2814             :             }
    2815             :             break;
    2816             :           }
    2817             :           break;
    2818             :         case 'l':        // 3 strings to match.
    2819          29 :           if (memcmp(Mnemonic.data()+3, "dexp_f", 6) != 0)
    2820             :             break;
    2821             :           switch (Mnemonic[9]) {
    2822             :           default: break;
    2823             :           case '1':      // 1 string to match.
    2824           0 :             if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2825             :               break;
    2826           0 :             Mnemonic = "v_ldexp_f16";  // "v_ldexp_f16_e64"
    2827           0 :             return;
    2828             :           case '3':      // 1 string to match.
    2829           0 :             if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2830             :               break;
    2831           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_ldexp_f32_e64"
    2832           0 :               Mnemonic = "v_ldexp_f32";
    2833             :             return;
    2834             :           case '6':      // 1 string to match.
    2835           0 :             if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2836             :               break;
    2837           0 :             Mnemonic = "v_ldexp_f64";  // "v_ldexp_f64_e64"
    2838           0 :             return;
    2839             :           }
    2840             :           break;
    2841             :         case 'r':        // 3 strings to match.
    2842         213 :           if (memcmp(Mnemonic.data()+3, "ndne_f", 6) != 0)
    2843             :             break;
    2844             :           switch (Mnemonic[9]) {
    2845             :           default: break;
    2846             :           case '1':      // 1 string to match.
    2847           0 :             if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2848             :               break;
    2849           0 :             Mnemonic = "v_rndne_f16";  // "v_rndne_f16_e64"
    2850           0 :             return;
    2851             :           case '3':      // 1 string to match.
    2852           0 :             if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2853             :               break;
    2854           0 :             Mnemonic = "v_rndne_f32";  // "v_rndne_f32_e64"
    2855           0 :             return;
    2856             :           case '6':      // 1 string to match.
    2857           0 :             if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2858             :               break;
    2859           0 :             Mnemonic = "v_rndne_f64";  // "v_rndne_f64_e64"
    2860           0 :             return;
    2861             :           }
    2862             :           break;
    2863             :         case 's':        // 1 string to match.
    2864          87 :           if (memcmp(Mnemonic.data()+3, "ad_hi_u8_e64", 12) != 0)
    2865             :             break;
    2866           0 :           Mnemonic = "v_sad_hi_u8";    // "v_sad_hi_u8_e64"
    2867           0 :           return;
    2868             :         case 't':        // 3 strings to match.
    2869           0 :           if (memcmp(Mnemonic.data()+3, "runc_f", 6) != 0)
    2870             :             break;
    2871             :           switch (Mnemonic[9]) {
    2872             :           default: break;
    2873             :           case '1':      // 1 string to match.
    2874           0 :             if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2875             :               break;
    2876           0 :             Mnemonic = "v_trunc_f16";  // "v_trunc_f16_e64"
    2877           0 :             return;
    2878             :           case '3':      // 1 string to match.
    2879           0 :             if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2880             :               break;
    2881           0 :             Mnemonic = "v_trunc_f32";  // "v_trunc_f32_e64"
    2882           0 :             return;
    2883             :           case '6':      // 1 string to match.
    2884           0 :             if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2885             :               break;
    2886           0 :             Mnemonic = "v_trunc_f64";  // "v_trunc_f64_e64"
    2887           0 :             return;
    2888             :           }
    2889             :           break;
    2890             :         }
    2891             :         break;
    2892             :       case 16:   // 112 strings to match.
    2893        3859 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    2894             :           break;
    2895             :         switch (Mnemonic[2]) {
    2896             :         default: break;
    2897             :         case 'a':        // 1 string to match.
    2898           0 :           if (memcmp(Mnemonic.data()+3, "nd_or_b32_e64", 13) != 0)
    2899             :             break;
    2900           0 :           Mnemonic = "v_and_or_b32";   // "v_and_or_b32_e64"
    2901           0 :           return;
    2902        1266 :         case 'c':        // 85 strings to match.
    2903             :           switch (Mnemonic[3]) {
    2904             :           default: break;
    2905         457 :           case 'm':      // 81 strings to match.
    2906         457 :             if (Mnemonic[4] != 'p')
    2907             :               break;
    2908             :             switch (Mnemonic[5]) {
    2909             :             default: break;
    2910           0 :             case '_':    // 54 strings to match.
    2911             :               switch (Mnemonic[6]) {
    2912             :               default: break;
    2913             :               case 'e':  // 9 strings to match.
    2914           0 :                 if (memcmp(Mnemonic.data()+7, "q_", 2) != 0)
    2915             :                   break;
    2916             :                 switch (Mnemonic[9]) {
    2917             :                 default: break;
    2918           0 :                 case 'f':        // 3 strings to match.
    2919             :                   switch (Mnemonic[10]) {
    2920             :                   default: break;
    2921             :                   case '1':      // 1 string to match.
    2922           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    2923             :                       break;
    2924           0 :                     Mnemonic = "v_cmp_eq_f16";         // "v_cmp_eq_f16_e64"
    2925           0 :                     return;
    2926             :                   case '3':      // 1 string to match.
    2927           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    2928             :                       break;
    2929           0 :                     Mnemonic = "v_cmp_eq_f32";         // "v_cmp_eq_f32_e64"
    2930           0 :                     return;
    2931             :                   case '6':      // 1 string to match.
    2932           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    2933             :                       break;
    2934           0 :                     Mnemonic = "v_cmp_eq_f64";         // "v_cmp_eq_f64_e64"
    2935           0 :                     return;
    2936             :                   }
    2937             :                   break;
    2938           0 :                 case 'i':        // 3 strings to match.
    2939             :                   switch (Mnemonic[10]) {
    2940             :                   default: break;
    2941             :                   case '1':      // 1 string to match.
    2942           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    2943             :                       break;
    2944           0 :                     Mnemonic = "v_cmp_eq_i16";         // "v_cmp_eq_i16_e64"
    2945           0 :                     return;
    2946             :                   case '3':      // 1 string to match.
    2947           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    2948             :                       break;
    2949           0 :                     Mnemonic = "v_cmp_eq_i32";         // "v_cmp_eq_i32_e64"
    2950           0 :                     return;
    2951             :                   case '6':      // 1 string to match.
    2952           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    2953             :                       break;
    2954           0 :                     Mnemonic = "v_cmp_eq_i64";         // "v_cmp_eq_i64_e64"
    2955           0 :                     return;
    2956             :                   }
    2957             :                   break;
    2958           0 :                 case 'u':        // 3 strings to match.
    2959             :                   switch (Mnemonic[10]) {
    2960             :                   default: break;
    2961             :                   case '1':      // 1 string to match.
    2962           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    2963             :                       break;
    2964           0 :                     Mnemonic = "v_cmp_eq_u16";         // "v_cmp_eq_u16_e64"
    2965           0 :                     return;
    2966             :                   case '3':      // 1 string to match.
    2967           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    2968             :                       break;
    2969           0 :                     Mnemonic = "v_cmp_eq_u32";         // "v_cmp_eq_u32_e64"
    2970           0 :                     return;
    2971             :                   case '6':      // 1 string to match.
    2972           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    2973             :                       break;
    2974           0 :                     Mnemonic = "v_cmp_eq_u64";         // "v_cmp_eq_u64_e64"
    2975           0 :                     return;
    2976             :                   }
    2977             :                   break;
    2978             :                 }
    2979             :                 break;
    2980           0 :               case 'g':  // 18 strings to match.
    2981             :                 switch (Mnemonic[7]) {
    2982             :                 default: break;
    2983           0 :                 case 'e':        // 9 strings to match.
    2984           0 :                   if (Mnemonic[8] != '_')
    2985             :                     break;
    2986             :                   switch (Mnemonic[9]) {
    2987             :                   default: break;
    2988           0 :                   case 'f':      // 3 strings to match.
    2989             :                     switch (Mnemonic[10]) {
    2990             :                     default: break;
    2991             :                     case '1':    // 1 string to match.
    2992           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    2993             :                         break;
    2994           0 :                       Mnemonic = "v_cmp_ge_f16";       // "v_cmp_ge_f16_e64"
    2995           0 :                       return;
    2996             :                     case '3':    // 1 string to match.
    2997           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    2998             :                         break;
    2999           0 :                       Mnemonic = "v_cmp_ge_f32";       // "v_cmp_ge_f32_e64"
    3000           0 :                       return;
    3001             :                     case '6':    // 1 string to match.
    3002           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3003             :                         break;
    3004           0 :                       Mnemonic = "v_cmp_ge_f64";       // "v_cmp_ge_f64_e64"
    3005           0 :                       return;
    3006             :                     }
    3007             :                     break;
    3008           0 :                   case 'i':      // 3 strings to match.
    3009             :                     switch (Mnemonic[10]) {
    3010             :                     default: break;
    3011             :                     case '1':    // 1 string to match.
    3012           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3013             :                         break;
    3014           0 :                       Mnemonic = "v_cmp_ge_i16";       // "v_cmp_ge_i16_e64"
    3015           0 :                       return;
    3016             :                     case '3':    // 1 string to match.
    3017           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3018             :                         break;
    3019           0 :                       Mnemonic = "v_cmp_ge_i32";       // "v_cmp_ge_i32_e64"
    3020           0 :                       return;
    3021             :                     case '6':    // 1 string to match.
    3022           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3023             :                         break;
    3024           0 :                       Mnemonic = "v_cmp_ge_i64";       // "v_cmp_ge_i64_e64"
    3025           0 :                       return;
    3026             :                     }
    3027             :                     break;
    3028           0 :                   case 'u':      // 3 strings to match.
    3029             :                     switch (Mnemonic[10]) {
    3030             :                     default: break;
    3031             :                     case '1':    // 1 string to match.
    3032           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3033             :                         break;
    3034           0 :                       Mnemonic = "v_cmp_ge_u16";       // "v_cmp_ge_u16_e64"
    3035           0 :                       return;
    3036             :                     case '3':    // 1 string to match.
    3037           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3038             :                         break;
    3039           0 :                       Mnemonic = "v_cmp_ge_u32";       // "v_cmp_ge_u32_e64"
    3040           0 :                       return;
    3041             :                     case '6':    // 1 string to match.
    3042           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3043             :                         break;
    3044           0 :                       Mnemonic = "v_cmp_ge_u64";       // "v_cmp_ge_u64_e64"
    3045           0 :                       return;
    3046             :                     }
    3047             :                     break;
    3048             :                   }
    3049             :                   break;
    3050           0 :                 case 't':        // 9 strings to match.
    3051           0 :                   if (Mnemonic[8] != '_')
    3052             :                     break;
    3053             :                   switch (Mnemonic[9]) {
    3054             :                   default: break;
    3055           0 :                   case 'f':      // 3 strings to match.
    3056             :                     switch (Mnemonic[10]) {
    3057             :                     default: break;
    3058             :                     case '1':    // 1 string to match.
    3059           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3060             :                         break;
    3061           0 :                       Mnemonic = "v_cmp_gt_f16";       // "v_cmp_gt_f16_e64"
    3062           0 :                       return;
    3063             :                     case '3':    // 1 string to match.
    3064           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3065             :                         break;
    3066           0 :                       Mnemonic = "v_cmp_gt_f32";       // "v_cmp_gt_f32_e64"
    3067           0 :                       return;
    3068             :                     case '6':    // 1 string to match.
    3069           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3070             :                         break;
    3071           0 :                       Mnemonic = "v_cmp_gt_f64";       // "v_cmp_gt_f64_e64"
    3072           0 :                       return;
    3073             :                     }
    3074             :                     break;
    3075           0 :                   case 'i':      // 3 strings to match.
    3076             :                     switch (Mnemonic[10]) {
    3077             :                     default: break;
    3078             :                     case '1':    // 1 string to match.
    3079           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3080             :                         break;
    3081           0 :                       Mnemonic = "v_cmp_gt_i16";       // "v_cmp_gt_i16_e64"
    3082           0 :                       return;
    3083             :                     case '3':    // 1 string to match.
    3084           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3085             :                         break;
    3086           0 :                       Mnemonic = "v_cmp_gt_i32";       // "v_cmp_gt_i32_e64"
    3087           0 :                       return;
    3088             :                     case '6':    // 1 string to match.
    3089           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3090             :                         break;
    3091           0 :                       Mnemonic = "v_cmp_gt_i64";       // "v_cmp_gt_i64_e64"
    3092           0 :                       return;
    3093             :                     }
    3094             :                     break;
    3095           0 :                   case 'u':      // 3 strings to match.
    3096             :                     switch (Mnemonic[10]) {
    3097             :                     default: break;
    3098             :                     case '1':    // 1 string to match.
    3099           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3100             :                         break;
    3101           0 :                       Mnemonic = "v_cmp_gt_u16";       // "v_cmp_gt_u16_e64"
    3102           0 :                       return;
    3103             :                     case '3':    // 1 string to match.
    3104           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3105             :                         break;
    3106           0 :                       Mnemonic = "v_cmp_gt_u32";       // "v_cmp_gt_u32_e64"
    3107           0 :                       return;
    3108             :                     case '6':    // 1 string to match.
    3109           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3110             :                         break;
    3111           0 :                       Mnemonic = "v_cmp_gt_u64";       // "v_cmp_gt_u64_e64"
    3112           0 :                       return;
    3113             :                     }
    3114             :                     break;
    3115             :                   }
    3116             :                   break;
    3117             :                 }
    3118             :                 break;
    3119           0 :               case 'l':  // 21 strings to match.
    3120             :                 switch (Mnemonic[7]) {
    3121             :                 default: break;
    3122           0 :                 case 'e':        // 9 strings to match.
    3123           0 :                   if (Mnemonic[8] != '_')
    3124             :                     break;
    3125             :                   switch (Mnemonic[9]) {
    3126             :                   default: break;
    3127           0 :                   case 'f':      // 3 strings to match.
    3128             :                     switch (Mnemonic[10]) {
    3129             :                     default: break;
    3130             :                     case '1':    // 1 string to match.
    3131           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3132             :                         break;
    3133           0 :                       Mnemonic = "v_cmp_le_f16";       // "v_cmp_le_f16_e64"
    3134           0 :                       return;
    3135             :                     case '3':    // 1 string to match.
    3136           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3137             :                         break;
    3138           0 :                       Mnemonic = "v_cmp_le_f32";       // "v_cmp_le_f32_e64"
    3139           0 :                       return;
    3140             :                     case '6':    // 1 string to match.
    3141           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3142             :                         break;
    3143           0 :                       Mnemonic = "v_cmp_le_f64";       // "v_cmp_le_f64_e64"
    3144           0 :                       return;
    3145             :                     }
    3146             :                     break;
    3147           0 :                   case 'i':      // 3 strings to match.
    3148             :                     switch (Mnemonic[10]) {
    3149             :                     default: break;
    3150             :                     case '1':    // 1 string to match.
    3151           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3152             :                         break;
    3153           0 :                       Mnemonic = "v_cmp_le_i16";       // "v_cmp_le_i16_e64"
    3154           0 :                       return;
    3155             :                     case '3':    // 1 string to match.
    3156           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3157             :                         break;
    3158           0 :                       Mnemonic = "v_cmp_le_i32";       // "v_cmp_le_i32_e64"
    3159           0 :                       return;
    3160             :                     case '6':    // 1 string to match.
    3161           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3162             :                         break;
    3163           0 :                       Mnemonic = "v_cmp_le_i64";       // "v_cmp_le_i64_e64"
    3164           0 :                       return;
    3165             :                     }
    3166             :                     break;
    3167           0 :                   case 'u':      // 3 strings to match.
    3168             :                     switch (Mnemonic[10]) {
    3169             :                     default: break;
    3170             :                     case '1':    // 1 string to match.
    3171           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3172             :                         break;
    3173           0 :                       Mnemonic = "v_cmp_le_u16";       // "v_cmp_le_u16_e64"
    3174           0 :                       return;
    3175             :                     case '3':    // 1 string to match.
    3176           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3177             :                         break;
    3178           0 :                       Mnemonic = "v_cmp_le_u32";       // "v_cmp_le_u32_e64"
    3179           0 :                       return;
    3180             :                     case '6':    // 1 string to match.
    3181           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3182             :                         break;
    3183           0 :                       Mnemonic = "v_cmp_le_u64";       // "v_cmp_le_u64_e64"
    3184           0 :                       return;
    3185             :                     }
    3186             :                     break;
    3187             :                   }
    3188             :                   break;
    3189             :                 case 'g':        // 3 strings to match.
    3190           0 :                   if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3191             :                     break;
    3192             :                   switch (Mnemonic[10]) {
    3193             :                   default: break;
    3194             :                   case '1':      // 1 string to match.
    3195           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3196             :                       break;
    3197           0 :                     Mnemonic = "v_cmp_lg_f16";         // "v_cmp_lg_f16_e64"
    3198           0 :                     return;
    3199             :                   case '3':      // 1 string to match.
    3200           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3201             :                       break;
    3202           0 :                     Mnemonic = "v_cmp_lg_f32";         // "v_cmp_lg_f32_e64"
    3203           0 :                     return;
    3204             :                   case '6':      // 1 string to match.
    3205           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3206             :                       break;
    3207           0 :                     Mnemonic = "v_cmp_lg_f64";         // "v_cmp_lg_f64_e64"
    3208           0 :                     return;
    3209             :                   }
    3210             :                   break;
    3211           0 :                 case 't':        // 9 strings to match.
    3212           0 :                   if (Mnemonic[8] != '_')
    3213             :                     break;
    3214             :                   switch (Mnemonic[9]) {
    3215             :                   default: break;
    3216           0 :                   case 'f':      // 3 strings to match.
    3217             :                     switch (Mnemonic[10]) {
    3218             :                     default: break;
    3219             :                     case '1':    // 1 string to match.
    3220           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3221             :                         break;
    3222           0 :                       Mnemonic = "v_cmp_lt_f16";       // "v_cmp_lt_f16_e64"
    3223           0 :                       return;
    3224             :                     case '3':    // 1 string to match.
    3225           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3226             :                         break;
    3227           0 :                       Mnemonic = "v_cmp_lt_f32";       // "v_cmp_lt_f32_e64"
    3228           0 :                       return;
    3229             :                     case '6':    // 1 string to match.
    3230           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3231             :                         break;
    3232           0 :                       Mnemonic = "v_cmp_lt_f64";       // "v_cmp_lt_f64_e64"
    3233           0 :                       return;
    3234             :                     }
    3235             :                     break;
    3236           0 :                   case 'i':      // 3 strings to match.
    3237             :                     switch (Mnemonic[10]) {
    3238             :                     default: break;
    3239             :                     case '1':    // 1 string to match.
    3240           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3241             :                         break;
    3242           0 :                       Mnemonic = "v_cmp_lt_i16";       // "v_cmp_lt_i16_e64"
    3243           0 :                       return;
    3244             :                     case '3':    // 1 string to match.
    3245           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3246             :                         break;
    3247           0 :                       Mnemonic = "v_cmp_lt_i32";       // "v_cmp_lt_i32_e64"
    3248           0 :                       return;
    3249             :                     case '6':    // 1 string to match.
    3250           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3251             :                         break;
    3252           0 :                       Mnemonic = "v_cmp_lt_i64";       // "v_cmp_lt_i64_e64"
    3253           0 :                       return;
    3254             :                     }
    3255             :                     break;
    3256           0 :                   case 'u':      // 3 strings to match.
    3257             :                     switch (Mnemonic[10]) {
    3258             :                     default: break;
    3259             :                     case '1':    // 1 string to match.
    3260           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3261             :                         break;
    3262           0 :                       Mnemonic = "v_cmp_lt_u16";       // "v_cmp_lt_u16_e64"
    3263           0 :                       return;
    3264             :                     case '3':    // 1 string to match.
    3265           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3266             :                         break;
    3267           0 :                       Mnemonic = "v_cmp_lt_u32";       // "v_cmp_lt_u32_e64"
    3268           0 :                       return;
    3269             :                     case '6':    // 1 string to match.
    3270           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3271             :                         break;
    3272           0 :                       Mnemonic = "v_cmp_lt_u64";       // "v_cmp_lt_u64_e64"
    3273           0 :                       return;
    3274             :                     }
    3275             :                     break;
    3276             :                   }
    3277             :                   break;
    3278             :                 }
    3279             :                 break;
    3280             :               case 'n':  // 6 strings to match.
    3281           0 :                 if (memcmp(Mnemonic.data()+7, "e_", 2) != 0)
    3282             :                   break;
    3283             :                 switch (Mnemonic[9]) {
    3284             :                 default: break;
    3285           0 :                 case 'i':        // 3 strings to match.
    3286             :                   switch (Mnemonic[10]) {
    3287             :                   default: break;
    3288             :                   case '1':      // 1 string to match.
    3289           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3290             :                       break;
    3291           0 :                     Mnemonic = "v_cmp_ne_i16";         // "v_cmp_ne_i16_e64"
    3292           0 :                     return;
    3293             :                   case '3':      // 1 string to match.
    3294           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3295             :                       break;
    3296           0 :                     Mnemonic = "v_cmp_ne_i32";         // "v_cmp_ne_i32_e64"
    3297           0 :                     return;
    3298             :                   case '6':      // 1 string to match.
    3299           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3300             :                       break;
    3301           0 :                     Mnemonic = "v_cmp_ne_i64";         // "v_cmp_ne_i64_e64"
    3302           0 :                     return;
    3303             :                   }
    3304             :                   break;
    3305           0 :                 case 'u':        // 3 strings to match.
    3306             :                   switch (Mnemonic[10]) {
    3307             :                   default: break;
    3308             :                   case '1':      // 1 string to match.
    3309           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3310             :                       break;
    3311           0 :                     Mnemonic = "v_cmp_ne_u16";         // "v_cmp_ne_u16_e64"
    3312           0 :                     return;
    3313             :                   case '3':      // 1 string to match.
    3314           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3315             :                       break;
    3316           0 :                     Mnemonic = "v_cmp_ne_u32";         // "v_cmp_ne_u32_e64"
    3317           0 :                     return;
    3318             :                   case '6':      // 1 string to match.
    3319           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3320             :                       break;
    3321           0 :                     Mnemonic = "v_cmp_ne_u64";         // "v_cmp_ne_u64_e64"
    3322           0 :                     return;
    3323             :                   }
    3324             :                   break;
    3325             :                 }
    3326             :                 break;
    3327             :               }
    3328             :               break;
    3329           0 :             case 's':    // 6 strings to match.
    3330           0 :               if (Mnemonic[6] != '_')
    3331             :                 break;
    3332             :               switch (Mnemonic[7]) {
    3333             :               default: break;
    3334             :               case 'f':  // 2 strings to match.
    3335           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3336             :                   break;
    3337             :                 switch (Mnemonic[10]) {
    3338             :                 default: break;
    3339             :                 case '3':        // 1 string to match.
    3340           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3341             :                     break;
    3342           0 :                   Mnemonic = "v_cmps_f_f32";   // "v_cmps_f_f32_e64"
    3343           0 :                   return;
    3344             :                 case '6':        // 1 string to match.
    3345           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3346             :                     break;
    3347           0 :                   Mnemonic = "v_cmps_f_f64";   // "v_cmps_f_f64_e64"
    3348           0 :                   return;
    3349             :                 }
    3350             :                 break;
    3351             :               case 'o':  // 2 strings to match.
    3352           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3353             :                   break;
    3354             :                 switch (Mnemonic[10]) {
    3355             :                 default: break;
    3356             :                 case '3':        // 1 string to match.
    3357           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3358             :                     break;
    3359           0 :                   Mnemonic = "v_cmps_o_f32";   // "v_cmps_o_f32_e64"
    3360           0 :                   return;
    3361             :                 case '6':        // 1 string to match.
    3362           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3363             :                     break;
    3364           0 :                   Mnemonic = "v_cmps_o_f64";   // "v_cmps_o_f64_e64"
    3365           0 :                   return;
    3366             :                 }
    3367             :                 break;
    3368             :               case 'u':  // 2 strings to match.
    3369           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3370             :                   break;
    3371             :                 switch (Mnemonic[10]) {
    3372             :                 default: break;
    3373             :                 case '3':        // 1 string to match.
    3374           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3375             :                     break;
    3376           0 :                   Mnemonic = "v_cmps_u_f32";   // "v_cmps_u_f32_e64"
    3377           0 :                   return;
    3378             :                 case '6':        // 1 string to match.
    3379           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3380             :                     break;
    3381           0 :                   Mnemonic = "v_cmps_u_f64";   // "v_cmps_u_f64_e64"
    3382           0 :                   return;
    3383             :                 }
    3384             :                 break;
    3385             :               }
    3386             :               break;
    3387         457 :             case 'x':    // 21 strings to match.
    3388         457 :               if (Mnemonic[6] != '_')
    3389             :                 break;
    3390             :               switch (Mnemonic[7]) {
    3391             :               default: break;
    3392           0 :               case 'f':  // 9 strings to match.
    3393           0 :                 if (Mnemonic[8] != '_')
    3394             :                   break;
    3395             :                 switch (Mnemonic[9]) {
    3396             :                 default: break;
    3397           0 :                 case 'f':        // 3 strings to match.
    3398             :                   switch (Mnemonic[10]) {
    3399             :                   default: break;
    3400             :                   case '1':      // 1 string to match.
    3401           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3402             :                       break;
    3403           0 :                     Mnemonic = "v_cmpx_f_f16";         // "v_cmpx_f_f16_e64"
    3404           0 :                     return;
    3405             :                   case '3':      // 1 string to match.
    3406           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3407             :                       break;
    3408           0 :                     Mnemonic = "v_cmpx_f_f32";         // "v_cmpx_f_f32_e64"
    3409           0 :                     return;
    3410             :                   case '6':      // 1 string to match.
    3411           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3412             :                       break;
    3413           0 :                     Mnemonic = "v_cmpx_f_f64";         // "v_cmpx_f_f64_e64"
    3414           0 :                     return;
    3415             :                   }
    3416             :                   break;
    3417           0 :                 case 'i':        // 3 strings to match.
    3418             :                   switch (Mnemonic[10]) {
    3419             :                   default: break;
    3420             :                   case '1':      // 1 string to match.
    3421           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3422             :                       break;
    3423           0 :                     Mnemonic = "v_cmpx_f_i16";         // "v_cmpx_f_i16_e64"
    3424           0 :                     return;
    3425             :                   case '3':      // 1 string to match.
    3426           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3427             :                       break;
    3428           0 :                     Mnemonic = "v_cmpx_f_i32";         // "v_cmpx_f_i32_e64"
    3429           0 :                     return;
    3430             :                   case '6':      // 1 string to match.
    3431           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3432             :                       break;
    3433           0 :                     Mnemonic = "v_cmpx_f_i64";         // "v_cmpx_f_i64_e64"
    3434           0 :                     return;
    3435             :                   }
    3436             :                   break;
    3437           0 :                 case 'u':        // 3 strings to match.
    3438             :                   switch (Mnemonic[10]) {
    3439             :                   default: break;
    3440             :                   case '1':      // 1 string to match.
    3441           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3442             :                       break;
    3443           0 :                     Mnemonic = "v_cmpx_f_u16";         // "v_cmpx_f_u16_e64"
    3444           0 :                     return;
    3445             :                   case '3':      // 1 string to match.
    3446           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3447             :                       break;
    3448           0 :                     Mnemonic = "v_cmpx_f_u32";         // "v_cmpx_f_u32_e64"
    3449           0 :                     return;
    3450             :                   case '6':      // 1 string to match.
    3451           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3452             :                       break;
    3453           0 :                     Mnemonic = "v_cmpx_f_u64";         // "v_cmpx_f_u64_e64"
    3454           0 :                     return;
    3455             :                   }
    3456             :                   break;
    3457             :                 }
    3458             :                 break;
    3459             :               case 'o':  // 3 strings to match.
    3460           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3461             :                   break;
    3462             :                 switch (Mnemonic[10]) {
    3463             :                 default: break;
    3464             :                 case '1':        // 1 string to match.
    3465           0 :                   if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3466             :                     break;
    3467           0 :                   Mnemonic = "v_cmpx_o_f16";   // "v_cmpx_o_f16_e64"
    3468           0 :                   return;
    3469             :                 case '3':        // 1 string to match.
    3470           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3471             :                     break;
    3472           0 :                   Mnemonic = "v_cmpx_o_f32";   // "v_cmpx_o_f32_e64"
    3473           0 :                   return;
    3474             :                 case '6':        // 1 string to match.
    3475           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3476             :                     break;
    3477           0 :                   Mnemonic = "v_cmpx_o_f64";   // "v_cmpx_o_f64_e64"
    3478           0 :                   return;
    3479             :                 }
    3480             :                 break;
    3481           0 :               case 't':  // 6 strings to match.
    3482           0 :                 if (Mnemonic[8] != '_')
    3483             :                   break;
    3484             :                 switch (Mnemonic[9]) {
    3485             :                 default: break;
    3486           0 :                 case 'i':        // 3 strings to match.
    3487             :                   switch (Mnemonic[10]) {
    3488             :                   default: break;
    3489             :                   case '1':      // 1 string to match.
    3490           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3491             :                       break;
    3492           0 :                     Mnemonic = "v_cmpx_t_i16";         // "v_cmpx_t_i16_e64"
    3493           0 :                     return;
    3494             :                   case '3':      // 1 string to match.
    3495           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3496             :                       break;
    3497           0 :                     Mnemonic = "v_cmpx_t_i32";         // "v_cmpx_t_i32_e64"
    3498           0 :                     return;
    3499             :                   case '6':      // 1 string to match.
    3500           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3501             :                       break;
    3502           0 :                     Mnemonic = "v_cmpx_t_i64";         // "v_cmpx_t_i64_e64"
    3503           0 :                     return;
    3504             :                   }
    3505             :                   break;
    3506           0 :                 case 'u':        // 3 strings to match.
    3507             :                   switch (Mnemonic[10]) {
    3508             :                   default: break;
    3509             :                   case '1':      // 1 string to match.
    3510           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3511             :                       break;
    3512           0 :                     Mnemonic = "v_cmpx_t_u16";         // "v_cmpx_t_u16_e64"
    3513           0 :                     return;
    3514             :                   case '3':      // 1 string to match.
    3515           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3516             :                       break;
    3517           0 :                     Mnemonic = "v_cmpx_t_u32";         // "v_cmpx_t_u32_e64"
    3518           0 :                     return;
    3519             :                   case '6':      // 1 string to match.
    3520           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3521             :                       break;
    3522           0 :                     Mnemonic = "v_cmpx_t_u64";         // "v_cmpx_t_u64_e64"
    3523           0 :                     return;
    3524             :                   }
    3525             :                   break;
    3526             :                 }
    3527             :                 break;
    3528             :               case 'u':  // 3 strings to match.
    3529           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3530             :                   break;
    3531             :                 switch (Mnemonic[10]) {
    3532             :                 default: break;
    3533             :                 case '1':        // 1 string to match.
    3534           0 :                   if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3535             :                     break;
    3536           0 :                   Mnemonic = "v_cmpx_u_f16";   // "v_cmpx_u_f16_e64"
    3537           0 :                   return;
    3538             :                 case '3':        // 1 string to match.
    3539           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3540             :                     break;
    3541           0 :                   Mnemonic = "v_cmpx_u_f32";   // "v_cmpx_u_f32_e64"
    3542           0 :                   return;
    3543             :                 case '6':        // 1 string to match.
    3544           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3545             :                     break;
    3546           0 :                   Mnemonic = "v_cmpx_u_f64";   // "v_cmpx_u_f64_e64"
    3547           0 :                   return;
    3548             :                 }
    3549             :                 break;
    3550             :               }
    3551             :               break;
    3552             :             }
    3553             :             break;
    3554             :           case 'u':      // 4 strings to match.
    3555           0 :             if (memcmp(Mnemonic.data()+4, "be", 2) != 0)
    3556             :               break;
    3557             :             switch (Mnemonic[6]) {
    3558             :             default: break;
    3559             :             case 'i':    // 1 string to match.
    3560           0 :               if (memcmp(Mnemonic.data()+7, "d_f32_e64", 9) != 0)
    3561             :                 break;
    3562           0 :               Mnemonic = "v_cubeid_f32";       // "v_cubeid_f32_e64"
    3563           0 :               return;
    3564             :             case 'm':    // 1 string to match.
    3565           0 :               if (memcmp(Mnemonic.data()+7, "a_f32_e64", 9) != 0)
    3566             :                 break;
    3567           0 :               Mnemonic = "v_cubema_f32";       // "v_cubema_f32_e64"
    3568           0 :               return;
    3569             :             case 's':    // 1 string to match.
    3570           0 :               if (memcmp(Mnemonic.data()+7, "c_f32_e64", 9) != 0)
    3571             :                 break;
    3572           0 :               Mnemonic = "v_cubesc_f32";       // "v_cubesc_f32_e64"
    3573           0 :               return;
    3574             :             case 't':    // 1 string to match.
    3575           0 :               if (memcmp(Mnemonic.data()+7, "c_f32_e64", 9) != 0)
    3576             :                 break;
    3577           0 :               Mnemonic = "v_cubetc_f32";       // "v_cubetc_f32_e64"
    3578           0 :               return;
    3579             :             }
    3580             :             break;
    3581             :           }
    3582             :           break;
    3583             :         case 'm':        // 6 strings to match.
    3584        1169 :           if (memcmp(Mnemonic.data()+3, "ul", 2) != 0)
    3585             :             break;
    3586             :           switch (Mnemonic[5]) {
    3587             :           default: break;
    3588         482 :           case '_':      // 5 strings to match.
    3589             :             switch (Mnemonic[6]) {
    3590             :             default: break;
    3591             :             case 'h':    // 2 strings to match.
    3592         296 :               if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
    3593             :                 break;
    3594             :               switch (Mnemonic[9]) {
    3595             :               default: break;
    3596             :               case 'i':  // 1 string to match.
    3597         148 :                 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
    3598             :                   break;
    3599           0 :                 Mnemonic = "v_mul_hi_i32";     // "v_mul_hi_i32_e64"
    3600           0 :                 return;
    3601             :               case 'u':  // 1 string to match.
    3602         148 :                 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
    3603             :                   break;
    3604           0 :                 Mnemonic = "v_mul_hi_u32";     // "v_mul_hi_u32_e64"
    3605           0 :                 return;
    3606             :               }
    3607             :               break;
    3608             :             case 'l':    // 3 strings to match.
    3609         186 :               if (memcmp(Mnemonic.data()+7, "o_", 2) != 0)
    3610             :                 break;
    3611             :               switch (Mnemonic[9]) {
    3612             :               default: break;
    3613             :               case 'i':  // 1 string to match.
    3614           0 :                 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
    3615             :                   break;
    3616           0 :                 Mnemonic = "v_mul_lo_i32";     // "v_mul_lo_i32_e64"
    3617           0 :                 return;
    3618           0 :               case 'u':  // 2 strings to match.
    3619             :                 switch (Mnemonic[10]) {
    3620             :                 default: break;
    3621             :                 case '1':        // 1 string to match.
    3622           0 :                   if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3623             :                     break;
    3624           0 :                   Mnemonic = "v_mul_lo_u16";   // "v_mul_lo_u16_e64"
    3625           0 :                   return;
    3626             :                 case '3':        // 1 string to match.
    3627           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3628             :                     break;
    3629           0 :                   Mnemonic = "v_mul_lo_u32";   // "v_mul_lo_u32_e64"
    3630           0 :                   return;
    3631             :                 }
    3632             :                 break;
    3633             :               }
    3634             :               break;
    3635             :             }
    3636             :             break;
    3637             :           case 'l':      // 1 string to match.
    3638           0 :             if (memcmp(Mnemonic.data()+6, "it_f32_e64", 10) != 0)
    3639             :               break;
    3640           0 :             Mnemonic = "v_mullit_f32";         // "v_mullit_f32_e64"
    3641           0 :             return;
    3642             :           }
    3643             :           break;
    3644             :         case 'p':        // 15 strings to match.
    3645         183 :           if (memcmp(Mnemonic.data()+3, "k_", 2) != 0)
    3646             :             break;
    3647             :           switch (Mnemonic[5]) {
    3648             :           default: break;
    3649             :           case 'a':      // 3 strings to match.
    3650          61 :             if (memcmp(Mnemonic.data()+6, "dd_", 3) != 0)
    3651             :               break;
    3652             :             switch (Mnemonic[9]) {
    3653             :             default: break;
    3654             :             case 'f':    // 1 string to match.
    3655           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3656             :                 break;
    3657           0 :               Mnemonic = "v_pk_add_f16";       // "v_pk_add_f16_e64"
    3658           0 :               return;
    3659             :             case 'i':    // 1 string to match.
    3660           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3661             :                 break;
    3662           0 :               Mnemonic = "v_pk_add_i16";       // "v_pk_add_i16_e64"
    3663           0 :               return;
    3664             :             case 'u':    // 1 string to match.
    3665           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3666             :                 break;
    3667           0 :               Mnemonic = "v_pk_add_u16";       // "v_pk_add_u16_e64"
    3668           0 :               return;
    3669             :             }
    3670             :             break;
    3671             :           case 'f':      // 1 string to match.
    3672           0 :             if (memcmp(Mnemonic.data()+6, "ma_f16_e64", 10) != 0)
    3673             :               break;
    3674           0 :             Mnemonic = "v_pk_fma_f16";         // "v_pk_fma_f16_e64"
    3675           0 :             return;
    3676           0 :           case 'm':      // 9 strings to match.
    3677             :             switch (Mnemonic[6]) {
    3678             :             default: break;
    3679           0 :             case 'a':    // 5 strings to match.
    3680             :               switch (Mnemonic[7]) {
    3681             :               default: break;
    3682           0 :               case 'd':  // 2 strings to match.
    3683           0 :                 if (Mnemonic[8] != '_')
    3684             :                   break;
    3685             :                 switch (Mnemonic[9]) {
    3686             :                 default: break;
    3687             :                 case 'i':        // 1 string to match.
    3688           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3689             :                     break;
    3690           0 :                   Mnemonic = "v_pk_mad_i16";   // "v_pk_mad_i16_e64"
    3691           0 :                   return;
    3692             :                 case 'u':        // 1 string to match.
    3693           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3694             :                     break;
    3695           0 :                   Mnemonic = "v_pk_mad_u16";   // "v_pk_mad_u16_e64"
    3696           0 :                   return;
    3697             :                 }
    3698             :                 break;
    3699           0 :               case 'x':  // 3 strings to match.
    3700           0 :                 if (Mnemonic[8] != '_')
    3701             :                   break;
    3702             :                 switch (Mnemonic[9]) {
    3703             :                 default: break;
    3704             :                 case 'f':        // 1 string to match.
    3705           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3706             :                     break;
    3707           0 :                   Mnemonic = "v_pk_max_f16";   // "v_pk_max_f16_e64"
    3708           0 :                   return;
    3709             :                 case 'i':        // 1 string to match.
    3710           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3711             :                     break;
    3712           0 :                   Mnemonic = "v_pk_max_i16";   // "v_pk_max_i16_e64"
    3713           0 :                   return;
    3714             :                 case 'u':        // 1 string to match.
    3715           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3716             :                     break;
    3717           0 :                   Mnemonic = "v_pk_max_u16";   // "v_pk_max_u16_e64"
    3718           0 :                   return;
    3719             :                 }
    3720             :                 break;
    3721             :               }
    3722             :               break;
    3723             :             case 'i':    // 3 strings to match.
    3724           0 :               if (memcmp(Mnemonic.data()+7, "n_", 2) != 0)
    3725             :                 break;
    3726             :               switch (Mnemonic[9]) {
    3727             :               default: break;
    3728             :               case 'f':  // 1 string to match.
    3729           0 :                 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3730             :                   break;
    3731           0 :                 Mnemonic = "v_pk_min_f16";     // "v_pk_min_f16_e64"
    3732           0 :                 return;
    3733             :               case 'i':  // 1 string to match.
    3734           0 :                 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3735             :                   break;
    3736           0 :                 Mnemonic = "v_pk_min_i16";     // "v_pk_min_i16_e64"
    3737           0 :                 return;
    3738             :               case 'u':  // 1 string to match.
    3739           0 :                 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3740             :                   break;
    3741           0 :                 Mnemonic = "v_pk_min_u16";     // "v_pk_min_u16_e64"
    3742           0 :                 return;
    3743             :               }
    3744             :               break;
    3745             :             case 'u':    // 1 string to match.
    3746           0 :               if (memcmp(Mnemonic.data()+7, "l_f16_e64", 9) != 0)
    3747             :                 break;
    3748           0 :               Mnemonic = "v_pk_mul_f16";       // "v_pk_mul_f16_e64"
    3749           0 :               return;
    3750             :             }
    3751             :             break;
    3752             :           case 's':      // 2 strings to match.
    3753           0 :             if (memcmp(Mnemonic.data()+6, "ub_", 3) != 0)
    3754             :               break;
    3755             :             switch (Mnemonic[9]) {
    3756             :             default: break;
    3757             :             case 'i':    // 1 string to match.
    3758           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3759             :                 break;
    3760           0 :               Mnemonic = "v_pk_sub_i16";       // "v_pk_sub_i16_e64"
    3761           0 :               return;
    3762             :             case 'u':    // 1 string to match.
    3763           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3764             :                 break;
    3765           0 :               Mnemonic = "v_pk_sub_u16";       // "v_pk_sub_u16_e64"
    3766           0 :               return;
    3767             :             }
    3768             :             break;
    3769             :           }
    3770             :           break;
    3771             :         case 's':        // 5 strings to match.
    3772          42 :           if (memcmp(Mnemonic.data()+3, "ubrev_", 6) != 0)
    3773             :             break;
    3774             :           switch (Mnemonic[9]) {
    3775             :           default: break;
    3776           0 :           case 'f':      // 2 strings to match.
    3777             :             switch (Mnemonic[10]) {
    3778             :             default: break;
    3779             :             case '1':    // 1 string to match.
    3780           0 :               if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3781             :                 break;
    3782           0 :               Mnemonic = "v_subrev_f16";       // "v_subrev_f16_e64"
    3783           0 :               return;
    3784             :             case '3':    // 1 string to match.
    3785           0 :               if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3786             :                 break;
    3787           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_f32_e64"
    3788           0 :                 Mnemonic = "v_subrev_f32";
    3789             :               return;
    3790             :             }
    3791             :             break;
    3792             :           case 'i':      // 1 string to match.
    3793           0 :             if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
    3794             :               break;
    3795           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subrev_i32_e64"
    3796           0 :               Mnemonic = "v_subrev_i32";
    3797             :             return;
    3798           0 :           case 'u':      // 2 strings to match.
    3799             :             switch (Mnemonic[10]) {
    3800             :             default: break;
    3801             :             case '1':    // 1 string to match.
    3802           0 :               if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3803             :                 break;
    3804           0 :               Mnemonic = "v_subrev_u16";       // "v_subrev_u16_e64"
    3805           0 :               return;
    3806             :             case '3':    // 1 string to match.
    3807           0 :               if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3808             :                 break;
    3809           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_u32_e64"
    3810           0 :                 Mnemonic = "v_subrev_u32";
    3811             :               return;
    3812             :             }
    3813             :             break;
    3814             :           }
    3815             :           break;
    3816             :         }
    3817             :         break;
    3818             :       case 17:   // 138 strings to match.
    3819         686 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    3820             :           break;
    3821             :         switch (Mnemonic[2]) {
    3822             :         default: break;
    3823             :         case 'a':        // 3 strings to match.
    3824           0 :           if (memcmp(Mnemonic.data()+3, "shrrev_i", 8) != 0)
    3825             :             break;
    3826             :           switch (Mnemonic[11]) {
    3827             :           default: break;
    3828             :           case '1':      // 1 string to match.
    3829           0 :             if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3830             :               break;
    3831           0 :             Mnemonic = "v_ashrrev_i16";        // "v_ashrrev_i16_e64"
    3832           0 :             return;
    3833             :           case '3':      // 1 string to match.
    3834           0 :             if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3835             :               break;
    3836           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_ashrrev_i32_e64"
    3837           0 :               Mnemonic = "v_ashrrev_i32";
    3838             :             return;
    3839             :           case '6':      // 1 string to match.
    3840           0 :             if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3841             :               break;
    3842           0 :             Mnemonic = "v_ashrrev_i64";        // "v_ashrrev_i64_e64"
    3843           0 :             return;
    3844             :           }
    3845             :           break;
    3846         186 :         case 'c':        // 110 strings to match.
    3847             :           switch (Mnemonic[3]) {
    3848             :           default: break;
    3849           0 :           case 'm':      // 93 strings to match.
    3850           0 :             if (Mnemonic[4] != 'p')
    3851             :               break;
    3852             :             switch (Mnemonic[5]) {
    3853             :             default: break;
    3854           0 :             case '_':    // 21 strings to match.
    3855             :               switch (Mnemonic[6]) {
    3856             :               default: break;
    3857           0 :               case 'n':  // 18 strings to match.
    3858             :                 switch (Mnemonic[7]) {
    3859             :                 default: break;
    3860             :                 case 'e':        // 3 strings to match.
    3861           0 :                   if (memcmp(Mnemonic.data()+8, "q_f", 3) != 0)
    3862             :                     break;
    3863             :                   switch (Mnemonic[11]) {
    3864             :                   default: break;
    3865             :                   case '1':      // 1 string to match.
    3866           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3867             :                       break;
    3868           0 :                     Mnemonic = "v_cmp_neq_f16";        // "v_cmp_neq_f16_e64"
    3869           0 :                     return;
    3870             :                   case '3':      // 1 string to match.
    3871           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3872             :                       break;
    3873           0 :                     Mnemonic = "v_cmp_neq_f32";        // "v_cmp_neq_f32_e64"
    3874           0 :                     return;
    3875             :                   case '6':      // 1 string to match.
    3876           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3877             :                       break;
    3878           0 :                     Mnemonic = "v_cmp_neq_f64";        // "v_cmp_neq_f64_e64"
    3879           0 :                     return;
    3880             :                   }
    3881             :                   break;
    3882           0 :                 case 'g':        // 6 strings to match.
    3883             :                   switch (Mnemonic[8]) {
    3884             :                   default: break;
    3885             :                   case 'e':      // 3 strings to match.
    3886           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3887             :                       break;
    3888             :                     switch (Mnemonic[11]) {
    3889             :                     default: break;
    3890             :                     case '1':    // 1 string to match.
    3891           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3892             :                         break;
    3893           0 :                       Mnemonic = "v_cmp_nge_f16";      // "v_cmp_nge_f16_e64"
    3894           0 :                       return;
    3895             :                     case '3':    // 1 string to match.
    3896           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3897             :                         break;
    3898           0 :                       Mnemonic = "v_cmp_nge_f32";      // "v_cmp_nge_f32_e64"
    3899           0 :                       return;
    3900             :                     case '6':    // 1 string to match.
    3901           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3902             :                         break;
    3903           0 :                       Mnemonic = "v_cmp_nge_f64";      // "v_cmp_nge_f64_e64"
    3904           0 :                       return;
    3905             :                     }
    3906             :                     break;
    3907             :                   case 't':      // 3 strings to match.
    3908           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3909             :                       break;
    3910             :                     switch (Mnemonic[11]) {
    3911             :                     default: break;
    3912             :                     case '1':    // 1 string to match.
    3913           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3914             :                         break;
    3915           0 :                       Mnemonic = "v_cmp_ngt_f16";      // "v_cmp_ngt_f16_e64"
    3916           0 :                       return;
    3917             :                     case '3':    // 1 string to match.
    3918           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3919             :                         break;
    3920           0 :                       Mnemonic = "v_cmp_ngt_f32";      // "v_cmp_ngt_f32_e64"
    3921           0 :                       return;
    3922             :                     case '6':    // 1 string to match.
    3923           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3924             :                         break;
    3925           0 :                       Mnemonic = "v_cmp_ngt_f64";      // "v_cmp_ngt_f64_e64"
    3926           0 :                       return;
    3927             :                     }
    3928             :                     break;
    3929             :                   }
    3930             :                   break;
    3931           0 :                 case 'l':        // 9 strings to match.
    3932             :                   switch (Mnemonic[8]) {
    3933             :                   default: break;
    3934             :                   case 'e':      // 3 strings to match.
    3935           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3936             :                       break;
    3937             :                     switch (Mnemonic[11]) {
    3938             :                     default: break;
    3939             :                     case '1':    // 1 string to match.
    3940           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3941             :                         break;
    3942           0 :                       Mnemonic = "v_cmp_nle_f16";      // "v_cmp_nle_f16_e64"
    3943           0 :                       return;
    3944             :                     case '3':    // 1 string to match.
    3945           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3946             :                         break;
    3947           0 :                       Mnemonic = "v_cmp_nle_f32";      // "v_cmp_nle_f32_e64"
    3948           0 :                       return;
    3949             :                     case '6':    // 1 string to match.
    3950           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3951             :                         break;
    3952           0 :                       Mnemonic = "v_cmp_nle_f64";      // "v_cmp_nle_f64_e64"
    3953           0 :                       return;
    3954             :                     }
    3955             :                     break;
    3956             :                   case 'g':      // 3 strings to match.
    3957           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3958             :                       break;
    3959             :                     switch (Mnemonic[11]) {
    3960             :                     default: break;
    3961             :                     case '1':    // 1 string to match.
    3962           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3963             :                         break;
    3964           0 :                       Mnemonic = "v_cmp_nlg_f16";      // "v_cmp_nlg_f16_e64"
    3965           0 :                       return;
    3966             :                     case '3':    // 1 string to match.
    3967           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3968             :                         break;
    3969           0 :                       Mnemonic = "v_cmp_nlg_f32";      // "v_cmp_nlg_f32_e64"
    3970           0 :                       return;
    3971             :                     case '6':    // 1 string to match.
    3972           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3973             :                         break;
    3974           0 :                       Mnemonic = "v_cmp_nlg_f64";      // "v_cmp_nlg_f64_e64"
    3975           0 :                       return;
    3976             :                     }
    3977             :                     break;
    3978             :                   case 't':      // 3 strings to match.
    3979           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3980             :                       break;
    3981             :                     switch (Mnemonic[11]) {
    3982             :                     default: break;
    3983             :                     case '1':    // 1 string to match.
    3984           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3985             :                         break;
    3986           0 :                       Mnemonic = "v_cmp_nlt_f16";      // "v_cmp_nlt_f16_e64"
    3987           0 :                       return;
    3988             :                     case '3':    // 1 string to match.
    3989           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3990             :                         break;
    3991           0 :                       Mnemonic = "v_cmp_nlt_f32";      // "v_cmp_nlt_f32_e64"
    3992           0 :                       return;
    3993             :                     case '6':    // 1 string to match.
    3994           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3995             :                         break;
    3996           0 :                       Mnemonic = "v_cmp_nlt_f64";      // "v_cmp_nlt_f64_e64"
    3997           0 :                       return;
    3998             :                     }
    3999             :                     break;
    4000             :                   }
    4001             :                   break;
    4002             :                 }
    4003             :                 break;
    4004             :               case 't':  // 3 strings to match.
    4005           0 :                 if (memcmp(Mnemonic.data()+7, "ru_f", 4) != 0)
    4006             :                   break;
    4007             :                 switch (Mnemonic[11]) {
    4008             :                 default: break;
    4009             :                 case '1':        // 1 string to match.
    4010           0 :                   if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4011             :                     break;
    4012           0 :                   Mnemonic = "v_cmp_tru_f16";  // "v_cmp_tru_f16_e64"
    4013           0 :                   return;
    4014             :                 case '3':        // 1 string to match.
    4015           0 :                   if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4016             :                     break;
    4017           0 :                   Mnemonic = "v_cmp_tru_f32";  // "v_cmp_tru_f32_e64"
    4018           0 :                   return;
    4019             :                 case '6':        // 1 string to match.
    4020           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4021             :                     break;
    4022           0 :                   Mnemonic = "v_cmp_tru_f64";  // "v_cmp_tru_f64_e64"
    4023           0 :                   return;
    4024             :                 }
    4025             :                 break;
    4026             :               }
    4027             :               break;
    4028           0 :             case 's':    // 18 strings to match.
    4029             :               switch (Mnemonic[6]) {
    4030             :               default: break;
    4031           0 :               case '_':  // 12 strings to match.
    4032             :                 switch (Mnemonic[7]) {
    4033             :                 default: break;
    4034             :                 case 'e':        // 2 strings to match.
    4035           0 :                   if (memcmp(Mnemonic.data()+8, "q_f", 3) != 0)
    4036             :                     break;
    4037             :                   switch (Mnemonic[11]) {
    4038             :                   default: break;
    4039             :                   case '3':      // 1 string to match.
    4040           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4041             :                       break;
    4042           0 :                     Mnemonic = "v_cmps_eq_f32";        // "v_cmps_eq_f32_e64"
    4043           0 :                     return;
    4044             :                   case '6':      // 1 string to match.
    4045           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4046             :                       break;
    4047           0 :                     Mnemonic = "v_cmps_eq_f64";        // "v_cmps_eq_f64_e64"
    4048           0 :                     return;
    4049             :                   }
    4050             :                   break;
    4051           0 :                 case 'g':        // 4 strings to match.
    4052             :                   switch (Mnemonic[8]) {
    4053             :                   default: break;
    4054             :                   case 'e':      // 2 strings to match.
    4055           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4056             :                       break;
    4057             :                     switch (Mnemonic[11]) {
    4058             :                     default: break;
    4059             :                     case '3':    // 1 string to match.
    4060           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4061             :                         break;
    4062           0 :                       Mnemonic = "v_cmps_ge_f32";      // "v_cmps_ge_f32_e64"
    4063           0 :                       return;
    4064             :                     case '6':    // 1 string to match.
    4065           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4066             :                         break;
    4067           0 :                       Mnemonic = "v_cmps_ge_f64";      // "v_cmps_ge_f64_e64"
    4068           0 :                       return;
    4069             :                     }
    4070             :                     break;
    4071             :                   case 't':      // 2 strings to match.
    4072           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4073             :                       break;
    4074             :                     switch (Mnemonic[11]) {
    4075             :                     default: break;
    4076             :                     case '3':    // 1 string to match.
    4077           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4078             :                         break;
    4079           0 :                       Mnemonic = "v_cmps_gt_f32";      // "v_cmps_gt_f32_e64"
    4080           0 :                       return;
    4081             :                     case '6':    // 1 string to match.
    4082           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4083             :                         break;
    4084           0 :                       Mnemonic = "v_cmps_gt_f64";      // "v_cmps_gt_f64_e64"
    4085           0 :                       return;
    4086             :                     }
    4087             :                     break;
    4088             :                   }
    4089             :                   break;
    4090           0 :                 case 'l':        // 6 strings to match.
    4091             :                   switch (Mnemonic[8]) {
    4092             :                   default: break;
    4093             :                   case 'e':      // 2 strings to match.
    4094           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4095             :                       break;
    4096             :                     switch (Mnemonic[11]) {
    4097             :                     default: break;
    4098             :                     case '3':    // 1 string to match.
    4099           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4100             :                         break;
    4101           0 :                       Mnemonic = "v_cmps_le_f32";      // "v_cmps_le_f32_e64"
    4102           0 :                       return;
    4103             :                     case '6':    // 1 string to match.
    4104           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4105             :                         break;
    4106           0 :                       Mnemonic = "v_cmps_le_f64";      // "v_cmps_le_f64_e64"
    4107           0 :                       return;
    4108             :                     }
    4109             :                     break;
    4110             :                   case 'g':      // 2 strings to match.
    4111           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4112             :                       break;
    4113             :                     switch (Mnemonic[11]) {
    4114             :                     default: break;
    4115             :                     case '3':    // 1 string to match.
    4116           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4117             :                         break;
    4118           0 :                       Mnemonic = "v_cmps_lg_f32";      // "v_cmps_lg_f32_e64"
    4119           0 :                       return;
    4120             :                     case '6':    // 1 string to match.
    4121           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4122             :                         break;
    4123           0 :                       Mnemonic = "v_cmps_lg_f64";      // "v_cmps_lg_f64_e64"
    4124           0 :                       return;
    4125             :                     }
    4126             :                     break;
    4127             :                   case 't':      // 2 strings to match.
    4128           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4129             :                       break;
    4130             :                     switch (Mnemonic[11]) {
    4131             :                     default: break;
    4132             :                     case '3':    // 1 string to match.
    4133           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4134             :                         break;
    4135           0 :                       Mnemonic = "v_cmps_lt_f32";      // "v_cmps_lt_f32_e64"
    4136           0 :                       return;
    4137             :                     case '6':    // 1 string to match.
    4138           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4139             :                         break;
    4140           0 :                       Mnemonic = "v_cmps_lt_f64";      // "v_cmps_lt_f64_e64"
    4141           0 :                       return;
    4142             :                     }
    4143             :                     break;
    4144             :                   }
    4145             :                   break;
    4146             :                 }
    4147             :                 break;
    4148           0 :               case 'x':  // 6 strings to match.
    4149           0 :                 if (Mnemonic[7] != '_')
    4150             :                   break;
    4151             :                 switch (Mnemonic[8]) {
    4152             :                 default: break;
    4153             :                 case 'f':        // 2 strings to match.
    4154           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4155             :                     break;
    4156             :                   switch (Mnemonic[11]) {
    4157             :                   default: break;
    4158             :                   case '3':      // 1 string to match.
    4159           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4160             :                       break;
    4161           0 :                     Mnemonic = "v_cmpsx_f_f32";        // "v_cmpsx_f_f32_e64"
    4162           0 :                     return;
    4163             :                   case '6':      // 1 string to match.
    4164           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4165             :                       break;
    4166           0 :                     Mnemonic = "v_cmpsx_f_f64";        // "v_cmpsx_f_f64_e64"
    4167           0 :                     return;
    4168             :                   }
    4169             :                   break;
    4170             :                 case 'o':        // 2 strings to match.
    4171           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4172             :                     break;
    4173             :                   switch (Mnemonic[11]) {
    4174             :                   default: break;
    4175             :                   case '3':      // 1 string to match.
    4176           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4177             :                       break;
    4178           0 :                     Mnemonic = "v_cmpsx_o_f32";        // "v_cmpsx_o_f32_e64"
    4179           0 :                     return;
    4180             :                   case '6':      // 1 string to match.
    4181           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4182             :                       break;
    4183           0 :                     Mnemonic = "v_cmpsx_o_f64";        // "v_cmpsx_o_f64_e64"
    4184           0 :                     return;
    4185             :                   }
    4186             :                   break;
    4187             :                 case 'u':        // 2 strings to match.
    4188           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4189             :                     break;
    4190             :                   switch (Mnemonic[11]) {
    4191             :                   default: break;
    4192             :                   case '3':      // 1 string to match.
    4193           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4194             :                       break;
    4195           0 :                     Mnemonic = "v_cmpsx_u_f32";        // "v_cmpsx_u_f32_e64"
    4196           0 :                     return;
    4197             :                   case '6':      // 1 string to match.
    4198           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4199             :                       break;
    4200           0 :                     Mnemonic = "v_cmpsx_u_f64";        // "v_cmpsx_u_f64_e64"
    4201           0 :                     return;
    4202             :                   }
    4203             :                   break;
    4204             :                 }
    4205             :                 break;
    4206             :               }
    4207             :               break;
    4208           0 :             case 'x':    // 54 strings to match.
    4209           0 :               if (Mnemonic[6] != '_')
    4210             :                 break;
    4211             :               switch (Mnemonic[7]) {
    4212             :               default: break;
    4213             :               case 'e':  // 9 strings to match.
    4214           0 :                 if (memcmp(Mnemonic.data()+8, "q_", 2) != 0)
    4215             :                   break;
    4216             :                 switch (Mnemonic[10]) {
    4217             :                 default: break;
    4218           0 :                 case 'f':        // 3 strings to match.
    4219             :                   switch (Mnemonic[11]) {
    4220             :                   default: break;
    4221             :                   case '1':      // 1 string to match.
    4222           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4223             :                       break;
    4224           0 :                     Mnemonic = "v_cmpx_eq_f16";        // "v_cmpx_eq_f16_e64"
    4225           0 :                     return;
    4226             :                   case '3':      // 1 string to match.
    4227           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4228             :                       break;
    4229           0 :                     Mnemonic = "v_cmpx_eq_f32";        // "v_cmpx_eq_f32_e64"
    4230           0 :                     return;
    4231             :                   case '6':      // 1 string to match.
    4232           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4233             :                       break;
    4234           0 :                     Mnemonic = "v_cmpx_eq_f64";        // "v_cmpx_eq_f64_e64"
    4235           0 :                     return;
    4236             :                   }
    4237             :                   break;
    4238           0 :                 case 'i':        // 3 strings to match.
    4239             :                   switch (Mnemonic[11]) {
    4240             :                   default: break;
    4241             :                   case '1':      // 1 string to match.
    4242           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4243             :                       break;
    4244           0 :                     Mnemonic = "v_cmpx_eq_i16";        // "v_cmpx_eq_i16_e64"
    4245           0 :                     return;
    4246             :                   case '3':      // 1 string to match.
    4247           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4248             :                       break;
    4249           0 :                     Mnemonic = "v_cmpx_eq_i32";        // "v_cmpx_eq_i32_e64"
    4250           0 :                     return;
    4251             :                   case '6':      // 1 string to match.
    4252           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4253             :                       break;
    4254           0 :                     Mnemonic = "v_cmpx_eq_i64";        // "v_cmpx_eq_i64_e64"
    4255           0 :                     return;
    4256             :                   }
    4257             :                   break;
    4258           0 :                 case 'u':        // 3 strings to match.
    4259             :                   switch (Mnemonic[11]) {
    4260             :                   default: break;
    4261             :                   case '1':      // 1 string to match.
    4262           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4263             :                       break;
    4264           0 :                     Mnemonic = "v_cmpx_eq_u16";        // "v_cmpx_eq_u16_e64"
    4265           0 :                     return;
    4266             :                   case '3':      // 1 string to match.
    4267           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4268             :                       break;
    4269           0 :                     Mnemonic = "v_cmpx_eq_u32";        // "v_cmpx_eq_u32_e64"
    4270           0 :                     return;
    4271             :                   case '6':      // 1 string to match.
    4272           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4273             :                       break;
    4274           0 :                     Mnemonic = "v_cmpx_eq_u64";        // "v_cmpx_eq_u64_e64"
    4275           0 :                     return;
    4276             :                   }
    4277             :                   break;
    4278             :                 }
    4279             :                 break;
    4280           0 :               case 'g':  // 18 strings to match.
    4281             :                 switch (Mnemonic[8]) {
    4282             :                 default: break;
    4283           0 :                 case 'e':        // 9 strings to match.
    4284           0 :                   if (Mnemonic[9] != '_')
    4285             :                     break;
    4286             :                   switch (Mnemonic[10]) {
    4287             :                   default: break;
    4288           0 :                   case 'f':      // 3 strings to match.
    4289             :                     switch (Mnemonic[11]) {
    4290             :                     default: break;
    4291             :                     case '1':    // 1 string to match.
    4292           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4293             :                         break;
    4294           0 :                       Mnemonic = "v_cmpx_ge_f16";      // "v_cmpx_ge_f16_e64"
    4295           0 :                       return;
    4296             :                     case '3':    // 1 string to match.
    4297           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4298             :                         break;
    4299           0 :                       Mnemonic = "v_cmpx_ge_f32";      // "v_cmpx_ge_f32_e64"
    4300           0 :                       return;
    4301             :                     case '6':    // 1 string to match.
    4302           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4303             :                         break;
    4304           0 :                       Mnemonic = "v_cmpx_ge_f64";      // "v_cmpx_ge_f64_e64"
    4305           0 :                       return;
    4306             :                     }
    4307             :                     break;
    4308           0 :                   case 'i':      // 3 strings to match.
    4309             :                     switch (Mnemonic[11]) {
    4310             :                     default: break;
    4311             :                     case '1':    // 1 string to match.
    4312           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4313             :                         break;
    4314           0 :                       Mnemonic = "v_cmpx_ge_i16";      // "v_cmpx_ge_i16_e64"
    4315           0 :                       return;
    4316             :                     case '3':    // 1 string to match.
    4317           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4318             :                         break;
    4319           0 :                       Mnemonic = "v_cmpx_ge_i32";      // "v_cmpx_ge_i32_e64"
    4320           0 :                       return;
    4321             :                     case '6':    // 1 string to match.
    4322           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4323             :                         break;
    4324           0 :                       Mnemonic = "v_cmpx_ge_i64";      // "v_cmpx_ge_i64_e64"
    4325           0 :                       return;
    4326             :                     }
    4327             :                     break;
    4328           0 :                   case 'u':      // 3 strings to match.
    4329             :                     switch (Mnemonic[11]) {
    4330             :                     default: break;
    4331             :                     case '1':    // 1 string to match.
    4332           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4333             :                         break;
    4334           0 :                       Mnemonic = "v_cmpx_ge_u16";      // "v_cmpx_ge_u16_e64"
    4335           0 :                       return;
    4336             :                     case '3':    // 1 string to match.
    4337           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4338             :                         break;
    4339           0 :                       Mnemonic = "v_cmpx_ge_u32";      // "v_cmpx_ge_u32_e64"
    4340           0 :                       return;
    4341             :                     case '6':    // 1 string to match.
    4342           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4343             :                         break;
    4344           0 :                       Mnemonic = "v_cmpx_ge_u64";      // "v_cmpx_ge_u64_e64"
    4345           0 :                       return;
    4346             :                     }
    4347             :                     break;
    4348             :                   }
    4349             :                   break;
    4350           0 :                 case 't':        // 9 strings to match.
    4351           0 :                   if (Mnemonic[9] != '_')
    4352             :                     break;
    4353             :                   switch (Mnemonic[10]) {
    4354             :                   default: break;
    4355           0 :                   case 'f':      // 3 strings to match.
    4356             :                     switch (Mnemonic[11]) {
    4357             :                     default: break;
    4358             :                     case '1':    // 1 string to match.
    4359           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4360             :                         break;
    4361           0 :                       Mnemonic = "v_cmpx_gt_f16";      // "v_cmpx_gt_f16_e64"
    4362           0 :                       return;
    4363             :                     case '3':    // 1 string to match.
    4364           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4365             :                         break;
    4366           0 :                       Mnemonic = "v_cmpx_gt_f32";      // "v_cmpx_gt_f32_e64"
    4367           0 :                       return;
    4368             :                     case '6':    // 1 string to match.
    4369           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4370             :                         break;
    4371           0 :                       Mnemonic = "v_cmpx_gt_f64";      // "v_cmpx_gt_f64_e64"
    4372           0 :                       return;
    4373             :                     }
    4374             :                     break;
    4375           0 :                   case 'i':      // 3 strings to match.
    4376             :                     switch (Mnemonic[11]) {
    4377             :                     default: break;
    4378             :                     case '1':    // 1 string to match.
    4379           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4380             :                         break;
    4381           0 :                       Mnemonic = "v_cmpx_gt_i16";      // "v_cmpx_gt_i16_e64"
    4382           0 :                       return;
    4383             :                     case '3':    // 1 string to match.
    4384           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4385             :                         break;
    4386           0 :                       Mnemonic = "v_cmpx_gt_i32";      // "v_cmpx_gt_i32_e64"
    4387           0 :                       return;
    4388             :                     case '6':    // 1 string to match.
    4389           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4390             :                         break;
    4391           0 :                       Mnemonic = "v_cmpx_gt_i64";      // "v_cmpx_gt_i64_e64"
    4392           0 :                       return;
    4393             :                     }
    4394             :                     break;
    4395           0 :                   case 'u':      // 3 strings to match.
    4396             :                     switch (Mnemonic[11]) {
    4397             :                     default: break;
    4398             :                     case '1':    // 1 string to match.
    4399           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4400             :                         break;
    4401           0 :                       Mnemonic = "v_cmpx_gt_u16";      // "v_cmpx_gt_u16_e64"
    4402           0 :                       return;
    4403             :                     case '3':    // 1 string to match.
    4404           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4405             :                         break;
    4406           0 :                       Mnemonic = "v_cmpx_gt_u32";      // "v_cmpx_gt_u32_e64"
    4407           0 :                       return;
    4408             :                     case '6':    // 1 string to match.
    4409           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4410             :                         break;
    4411           0 :                       Mnemonic = "v_cmpx_gt_u64";      // "v_cmpx_gt_u64_e64"
    4412           0 :                       return;
    4413             :                     }
    4414             :                     break;
    4415             :                   }
    4416             :                   break;
    4417             :                 }
    4418             :                 break;
    4419           0 :               case 'l':  // 21 strings to match.
    4420             :                 switch (Mnemonic[8]) {
    4421             :                 default: break;
    4422           0 :                 case 'e':        // 9 strings to match.
    4423           0 :                   if (Mnemonic[9] != '_')
    4424             :                     break;
    4425             :                   switch (Mnemonic[10]) {
    4426             :                   default: break;
    4427           0 :                   case 'f':      // 3 strings to match.
    4428             :                     switch (Mnemonic[11]) {
    4429             :                     default: break;
    4430             :                     case '1':    // 1 string to match.
    4431           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4432             :                         break;
    4433           0 :                       Mnemonic = "v_cmpx_le_f16";      // "v_cmpx_le_f16_e64"
    4434           0 :                       return;
    4435             :                     case '3':    // 1 string to match.
    4436           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4437             :                         break;
    4438           0 :                       Mnemonic = "v_cmpx_le_f32";      // "v_cmpx_le_f32_e64"
    4439           0 :                       return;
    4440             :                     case '6':    // 1 string to match.
    4441           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4442             :                         break;
    4443           0 :                       Mnemonic = "v_cmpx_le_f64";      // "v_cmpx_le_f64_e64"
    4444           0 :                       return;
    4445             :                     }
    4446             :                     break;
    4447           0 :                   case 'i':      // 3 strings to match.
    4448             :                     switch (Mnemonic[11]) {
    4449             :                     default: break;
    4450             :                     case '1':    // 1 string to match.
    4451           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4452             :                         break;
    4453           0 :                       Mnemonic = "v_cmpx_le_i16";      // "v_cmpx_le_i16_e64"
    4454           0 :                       return;
    4455             :                     case '3':    // 1 string to match.
    4456           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4457             :                         break;
    4458           0 :                       Mnemonic = "v_cmpx_le_i32";      // "v_cmpx_le_i32_e64"
    4459           0 :                       return;
    4460             :                     case '6':    // 1 string to match.
    4461           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4462             :                         break;
    4463           0 :                       Mnemonic = "v_cmpx_le_i64";      // "v_cmpx_le_i64_e64"
    4464           0 :                       return;
    4465             :                     }
    4466             :                     break;
    4467           0 :                   case 'u':      // 3 strings to match.
    4468             :                     switch (Mnemonic[11]) {
    4469             :                     default: break;
    4470             :                     case '1':    // 1 string to match.
    4471           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4472             :                         break;
    4473           0 :                       Mnemonic = "v_cmpx_le_u16";      // "v_cmpx_le_u16_e64"
    4474           0 :                       return;
    4475             :                     case '3':    // 1 string to match.
    4476           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4477             :                         break;
    4478           0 :                       Mnemonic = "v_cmpx_le_u32";      // "v_cmpx_le_u32_e64"
    4479           0 :                       return;
    4480             :                     case '6':    // 1 string to match.
    4481           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4482             :                         break;
    4483           0 :                       Mnemonic = "v_cmpx_le_u64";      // "v_cmpx_le_u64_e64"
    4484           0 :                       return;
    4485             :                     }
    4486             :                     break;
    4487             :                   }
    4488             :                   break;
    4489             :                 case 'g':        // 3 strings to match.
    4490           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4491             :                     break;
    4492             :                   switch (Mnemonic[11]) {
    4493             :                   default: break;
    4494             :                   case '1':      // 1 string to match.
    4495           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4496             :                       break;
    4497           0 :                     Mnemonic = "v_cmpx_lg_f16";        // "v_cmpx_lg_f16_e64"
    4498           0 :                     return;
    4499             :                   case '3':      // 1 string to match.
    4500           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4501             :                       break;
    4502           0 :                     Mnemonic = "v_cmpx_lg_f32";        // "v_cmpx_lg_f32_e64"
    4503           0 :                     return;
    4504             :                   case '6':      // 1 string to match.
    4505           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4506             :                       break;
    4507           0 :                     Mnemonic = "v_cmpx_lg_f64";        // "v_cmpx_lg_f64_e64"
    4508           0 :                     return;
    4509             :                   }
    4510             :                   break;
    4511           0 :                 case 't':        // 9 strings to match.
    4512           0 :                   if (Mnemonic[9] != '_')
    4513             :                     break;
    4514             :                   switch (Mnemonic[10]) {
    4515             :                   default: break;
    4516           0 :                   case 'f':      // 3 strings to match.
    4517             :                     switch (Mnemonic[11]) {
    4518             :                     default: break;
    4519             :                     case '1':    // 1 string to match.
    4520           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4521             :                         break;
    4522           0 :                       Mnemonic = "v_cmpx_lt_f16";      // "v_cmpx_lt_f16_e64"
    4523           0 :                       return;
    4524             :                     case '3':    // 1 string to match.
    4525           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4526             :                         break;
    4527           0 :                       Mnemonic = "v_cmpx_lt_f32";      // "v_cmpx_lt_f32_e64"
    4528           0 :                       return;
    4529             :                     case '6':    // 1 string to match.
    4530           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4531             :                         break;
    4532           0 :                       Mnemonic = "v_cmpx_lt_f64";      // "v_cmpx_lt_f64_e64"
    4533           0 :                       return;
    4534             :                     }
    4535             :                     break;
    4536           0 :                   case 'i':      // 3 strings to match.
    4537             :                     switch (Mnemonic[11]) {
    4538             :                     default: break;
    4539             :                     case '1':    // 1 string to match.
    4540           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4541             :                         break;
    4542           0 :                       Mnemonic = "v_cmpx_lt_i16";      // "v_cmpx_lt_i16_e64"
    4543           0 :                       return;
    4544             :                     case '3':    // 1 string to match.
    4545           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4546             :                         break;
    4547           0 :                       Mnemonic = "v_cmpx_lt_i32";      // "v_cmpx_lt_i32_e64"
    4548           0 :                       return;
    4549             :                     case '6':    // 1 string to match.
    4550           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4551             :                         break;
    4552           0 :                       Mnemonic = "v_cmpx_lt_i64";      // "v_cmpx_lt_i64_e64"
    4553           0 :                       return;
    4554             :                     }
    4555             :                     break;
    4556           0 :                   case 'u':      // 3 strings to match.
    4557             :                     switch (Mnemonic[11]) {
    4558             :                     default: break;
    4559             :                     case '1':    // 1 string to match.
    4560           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4561             :                         break;
    4562           0 :                       Mnemonic = "v_cmpx_lt_u16";      // "v_cmpx_lt_u16_e64"
    4563           0 :                       return;
    4564             :                     case '3':    // 1 string to match.
    4565           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4566             :                         break;
    4567           0 :                       Mnemonic = "v_cmpx_lt_u32";      // "v_cmpx_lt_u32_e64"
    4568           0 :                       return;
    4569             :                     case '6':    // 1 string to match.
    4570           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4571             :                         break;
    4572           0 :                       Mnemonic = "v_cmpx_lt_u64";      // "v_cmpx_lt_u64_e64"
    4573           0 :                       return;
    4574             :                     }
    4575             :                     break;
    4576             :                   }
    4577             :                   break;
    4578             :                 }
    4579             :                 break;
    4580             :               case 'n':  // 6 strings to match.
    4581           0 :                 if (memcmp(Mnemonic.data()+8, "e_", 2) != 0)
    4582             :                   break;
    4583             :                 switch (Mnemonic[10]) {
    4584             :                 default: break;
    4585           0 :                 case 'i':        // 3 strings to match.
    4586             :                   switch (Mnemonic[11]) {
    4587             :                   default: break;
    4588             :                   case '1':      // 1 string to match.
    4589           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4590             :                       break;
    4591           0 :                     Mnemonic = "v_cmpx_ne_i16";        // "v_cmpx_ne_i16_e64"
    4592           0 :                     return;
    4593             :                   case '3':      // 1 string to match.
    4594           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4595             :                       break;
    4596           0 :                     Mnemonic = "v_cmpx_ne_i32";        // "v_cmpx_ne_i32_e64"
    4597           0 :                     return;
    4598             :                   case '6':      // 1 string to match.
    4599           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4600             :                       break;
    4601           0 :                     Mnemonic = "v_cmpx_ne_i64";        // "v_cmpx_ne_i64_e64"
    4602           0 :                     return;
    4603             :                   }
    4604             :                   break;
    4605           0 :                 case 'u':        // 3 strings to match.
    4606             :                   switch (Mnemonic[11]) {
    4607             :                   default: break;
    4608             :                   case '1':      // 1 string to match.
    4609           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4610             :                       break;
    4611           0 :                     Mnemonic = "v_cmpx_ne_u16";        // "v_cmpx_ne_u16_e64"
    4612           0 :                     return;
    4613             :                   case '3':      // 1 string to match.
    4614           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4615             :                       break;
    4616           0 :                     Mnemonic = "v_cmpx_ne_u32";        // "v_cmpx_ne_u32_e64"
    4617           0 :                     return;
    4618             :                   case '6':      // 1 string to match.
    4619           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4620             :                       break;
    4621           0 :                     Mnemonic = "v_cmpx_ne_u64";        // "v_cmpx_ne_u64_e64"
    4622           0 :                     return;
    4623             :                   }
    4624             :                   break;
    4625             :                 }
    4626             :                 break;
    4627             :               }
    4628             :               break;
    4629             :             }
    4630             :             break;
    4631             :           case 'n':      // 1 string to match.
    4632           0 :             if (memcmp(Mnemonic.data()+4, "dmask_b32_e64", 13) != 0)
    4633             :               break;
    4634           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cndmask_b32_e64"
    4635           0 :               Mnemonic = "v_cndmask_b32";
    4636             :             return;
    4637             :           case 'v':      // 16 strings to match.
    4638         186 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
    4639             :               break;
    4640             :             switch (Mnemonic[6]) {
    4641             :             default: break;
    4642          93 :             case 'f':    // 10 strings to match.
    4643             :               switch (Mnemonic[7]) {
    4644             :               default: break;
    4645             :               case '1':  // 3 strings to match.
    4646           0 :                 if (memcmp(Mnemonic.data()+8, "6_", 2) != 0)
    4647             :                   break;
    4648             :                 switch (Mnemonic[10]) {
    4649             :                 default: break;
    4650             :                 case 'f':        // 1 string to match.
    4651           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4652             :                     break;
    4653           0 :                   Mnemonic = "v_cvt_f16_f32";  // "v_cvt_f16_f32_e64"
    4654           0 :                   return;
    4655             :                 case 'i':        // 1 string to match.
    4656           0 :                   if (memcmp(Mnemonic.data()+11, "16_e64", 6) != 0)
    4657             :                     break;
    4658           0 :                   Mnemonic = "v_cvt_f16_i16";  // "v_cvt_f16_i16_e64"
    4659           0 :                   return;
    4660             :                 case 'u':        // 1 string to match.
    4661           0 :                   if (memcmp(Mnemonic.data()+11, "16_e64", 6) != 0)
    4662             :                     break;
    4663           0 :                   Mnemonic = "v_cvt_f16_u16";  // "v_cvt_f16_u16_e64"
    4664           0 :                   return;
    4665             :                 }
    4666             :                 break;
    4667             :               case '3':  // 4 strings to match.
    4668           0 :                 if (memcmp(Mnemonic.data()+8, "2_", 2) != 0)
    4669             :                   break;
    4670             :                 switch (Mnemonic[10]) {
    4671             :                 default: break;
    4672           0 :                 case 'f':        // 2 strings to match.
    4673             :                   switch (Mnemonic[11]) {
    4674             :                   default: break;
    4675             :                   case '1':      // 1 string to match.
    4676           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4677             :                       break;
    4678           0 :                     Mnemonic = "v_cvt_f32_f16";        // "v_cvt_f32_f16_e64"
    4679           0 :                     return;
    4680             :                   case '6':      // 1 string to match.
    4681           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4682             :                       break;
    4683           0 :                     Mnemonic = "v_cvt_f32_f64";        // "v_cvt_f32_f64_e64"
    4684           0 :                     return;
    4685             :                   }
    4686             :                   break;
    4687             :                 case 'i':        // 1 string to match.
    4688           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4689             :                     break;
    4690           0 :                   Mnemonic = "v_cvt_f32_i32";  // "v_cvt_f32_i32_e64"
    4691           0 :                   return;
    4692             :                 case 'u':        // 1 string to match.
    4693           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4694             :                     break;
    4695           0 :                   Mnemonic = "v_cvt_f32_u32";  // "v_cvt_f32_u32_e64"
    4696           0 :                   return;
    4697             :                 }
    4698             :                 break;
    4699             :               case '6':  // 3 strings to match.
    4700           0 :                 if (memcmp(Mnemonic.data()+8, "4_", 2) != 0)
    4701             :                   break;
    4702             :                 switch (Mnemonic[10]) {
    4703             :                 default: break;
    4704             :                 case 'f':        // 1 string to match.
    4705           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4706             :                     break;
    4707           0 :                   Mnemonic = "v_cvt_f64_f32";  // "v_cvt_f64_f32_e64"
    4708           0 :                   return;
    4709             :                 case 'i':        // 1 string to match.
    4710           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4711             :                     break;
    4712           0 :                   Mnemonic = "v_cvt_f64_i32";  // "v_cvt_f64_i32_e64"
    4713           0 :                   return;
    4714             :                 case 'u':        // 1 string to match.
    4715           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4716             :                     break;
    4717           0 :                   Mnemonic = "v_cvt_f64_u32";  // "v_cvt_f64_u32_e64"
    4718           0 :                   return;
    4719             :                 }
    4720             :                 break;
    4721             :               }
    4722             :               break;
    4723           0 :             case 'i':    // 3 strings to match.
    4724             :               switch (Mnemonic[7]) {
    4725             :               default: break;
    4726             :               case '1':  // 1 string to match.
    4727           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_e64", 9) != 0)
    4728             :                   break;
    4729           0 :                 Mnemonic = "v_cvt_i16_f16";    // "v_cvt_i16_f16_e64"
    4730           0 :                 return;
    4731             :               case '3':  // 2 strings to match.
    4732           0 :                 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
    4733             :                   break;
    4734             :                 switch (Mnemonic[11]) {
    4735             :                 default: break;
    4736             :                 case '3':        // 1 string to match.
    4737           0 :                   if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4738             :                     break;
    4739           0 :                   Mnemonic = "v_cvt_i32_f32";  // "v_cvt_i32_f32_e64"
    4740           0 :                   return;
    4741             :                 case '6':        // 1 string to match.
    4742           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4743             :                     break;
    4744           0 :                   Mnemonic = "v_cvt_i32_f64";  // "v_cvt_i32_f64_e64"
    4745           0 :                   return;
    4746             :                 }
    4747             :                 break;
    4748             :               }
    4749             :               break;
    4750           0 :             case 'u':    // 3 strings to match.
    4751             :               switch (Mnemonic[7]) {
    4752             :               default: break;
    4753             :               case '1':  // 1 string to match.
    4754           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_e64", 9) != 0)
    4755             :                   break;
    4756           0 :                 Mnemonic = "v_cvt_u16_f16";    // "v_cvt_u16_f16_e64"
    4757           0 :                 return;
    4758             :               case '3':  // 2 strings to match.
    4759           0 :                 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
    4760             :                   break;
    4761             :                 switch (Mnemonic[11]) {
    4762             :                 default: break;
    4763             :                 case '3':        // 1 string to match.
    4764           0 :                   if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4765             :                     break;
    4766           0 :                   Mnemonic = "v_cvt_u32_f32";  // "v_cvt_u32_f32_e64"
    4767           0 :                   return;
    4768             :                 case '6':        // 1 string to match.
    4769           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4770             :                     break;
    4771           0 :                   Mnemonic = "v_cvt_u32_f64";  // "v_cvt_u32_f64_e64"
    4772           0 :                   return;
    4773             :                 }
    4774             :                 break;
    4775             :               }
    4776             :               break;
    4777             :             }
    4778             :             break;
    4779             :           }
    4780             :           break;
    4781             :         case 'd':        // 4 strings to match.
    4782           0 :           if (memcmp(Mnemonic.data()+3, "ot", 2) != 0)
    4783             :             break;
    4784             :           switch (Mnemonic[5]) {
    4785             :           default: break;
    4786           0 :           case '4':      // 2 strings to match.
    4787           0 :             if (Mnemonic[6] != '_')
    4788             :               break;
    4789             :             switch (Mnemonic[7]) {
    4790             :             default: break;
    4791             :             case 'i':    // 1 string to match.
    4792           0 :               if (memcmp(Mnemonic.data()+8, "32_i8_e64", 9) != 0)
    4793             :                 break;
    4794           0 :               Mnemonic = "v_dot4_i32_i8";      // "v_dot4_i32_i8_e64"
    4795           0 :               return;
    4796             :             case 'u':    // 1 string to match.
    4797           0 :               if (memcmp(Mnemonic.data()+8, "32_u8_e64", 9) != 0)
    4798             :                 break;
    4799           0 :               Mnemonic = "v_dot4_u32_u8";      // "v_dot4_u32_u8_e64"
    4800           0 :               return;
    4801             :             }
    4802             :             break;
    4803           0 :           case '8':      // 2 strings to match.
    4804           0 :             if (Mnemonic[6] != '_')
    4805             :               break;
    4806             :             switch (Mnemonic[7]) {
    4807             :             default: break;
    4808             :             case 'i':    // 1 string to match.
    4809           0 :               if (memcmp(Mnemonic.data()+8, "32_i4_e64", 9) != 0)
    4810             :                 break;
    4811           0 :               Mnemonic = "v_dot8_i32_i4";      // "v_dot8_i32_i4_e64"
    4812           0 :               return;
    4813             :             case 'u':    // 1 string to match.
    4814           0 :               if (memcmp(Mnemonic.data()+8, "32_u4_e64", 9) != 0)
    4815             :                 break;
    4816           0 :               Mnemonic = "v_dot8_u32_u4";      // "v_dot8_u32_u4_e64"
    4817           0 :               return;
    4818             :             }
    4819             :             break;
    4820             :           }
    4821             :           break;
    4822             :         case 'f':        // 1 string to match.
    4823           0 :           if (memcmp(Mnemonic.data()+3, "ma_mix_f32_e64", 14) != 0)
    4824             :             break;
    4825           0 :           Mnemonic = "v_fma_mix_f32";  // "v_fma_mix_f32_e64"
    4826           0 :           return;
    4827             :         case 'l':        // 7 strings to match.
    4828           0 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    4829             :             break;
    4830             :           switch (Mnemonic[5]) {
    4831             :           default: break;
    4832           0 :           case 'l':      // 4 strings to match.
    4833             :             switch (Mnemonic[6]) {
    4834             :             default: break;
    4835             :             case '_':    // 1 string to match.
    4836           0 :               if (memcmp(Mnemonic.data()+7, "or_b32_e64", 10) != 0)
    4837             :                 break;
    4838           0 :               Mnemonic = "v_lshl_or_b32";      // "v_lshl_or_b32_e64"
    4839           0 :               return;
    4840             :             case 'r':    // 3 strings to match.
    4841           0 :               if (memcmp(Mnemonic.data()+7, "ev_b", 4) != 0)
    4842             :                 break;
    4843             :               switch (Mnemonic[11]) {
    4844             :               default: break;
    4845             :               case '1':  // 1 string to match.
    4846           0 :                 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4847             :                   break;
    4848           0 :                 Mnemonic = "v_lshlrev_b16";    // "v_lshlrev_b16_e64"
    4849           0 :                 return;
    4850             :               case '3':  // 1 string to match.
    4851           0 :                 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4852             :                   break;
    4853           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_lshlrev_b32_e64"
    4854           0 :                   Mnemonic = "v_lshlrev_b32";
    4855             :                 return;
    4856             :               case '6':  // 1 string to match.
    4857           0 :                 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4858             :                   break;
    4859           0 :                 Mnemonic = "v_lshlrev_b64";    // "v_lshlrev_b64_e64"
    4860           0 :                 return;
    4861             :               }
    4862             :               break;
    4863             :             }
    4864             :             break;
    4865             :           case 'r':      // 3 strings to match.
    4866           0 :             if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
    4867             :               break;
    4868             :             switch (Mnemonic[11]) {
    4869             :             default: break;
    4870             :             case '1':    // 1 string to match.
    4871           0 :               if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4872             :                 break;
    4873           0 :               Mnemonic = "v_lshrrev_b16";      // "v_lshrrev_b16_e64"
    4874           0 :               return;
    4875             :             case '3':    // 1 string to match.
    4876           0 :               if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4877             :                 break;
    4878           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_lshrrev_b32_e64"
    4879           0 :                 Mnemonic = "v_lshrrev_b32";
    4880             :               return;
    4881             :             case '6':    // 1 string to match.
    4882           0 :               if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4883             :                 break;
    4884           0 :               Mnemonic = "v_lshrrev_b64";      // "v_lshrrev_b64_e64"
    4885           0 :               return;
    4886             :             }
    4887             :             break;
    4888             :           }
    4889             :           break;
    4890         211 :         case 'm':        // 12 strings to match.
    4891             :           switch (Mnemonic[3]) {
    4892             :           default: break;
    4893             :           case 'a':      // 7 strings to match.
    4894           0 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    4895             :               break;
    4896             :             switch (Mnemonic[6]) {
    4897             :             default: break;
    4898           0 :             case 'i':    // 3 strings to match.
    4899             :               switch (Mnemonic[7]) {
    4900             :               default: break;
    4901             :               case '3':  // 2 strings to match.
    4902           0 :                 if (memcmp(Mnemonic.data()+8, "2_i", 3) != 0)
    4903             :                   break;
    4904             :                 switch (Mnemonic[11]) {
    4905             :                 default: break;
    4906             :                 case '1':        // 1 string to match.
    4907           0 :                   if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4908             :                     break;
    4909           0 :                   Mnemonic = "v_mad_i32_i16";  // "v_mad_i32_i16_e64"
    4910           0 :                   return;
    4911             :                 case '2':        // 1 string to match.
    4912           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4913             :                     break;
    4914           0 :                   Mnemonic = "v_mad_i32_i24";  // "v_mad_i32_i24_e64"
    4915           0 :                   return;
    4916             :                 }
    4917             :                 break;
    4918             :               case '6':  // 1 string to match.
    4919           0 :                 if (memcmp(Mnemonic.data()+8, "4_i32_e64", 9) != 0)
    4920             :                   break;
    4921           0 :                 Mnemonic = "v_mad_i64_i32";    // "v_mad_i64_i32_e64"
    4922           0 :                 return;
    4923             :               }
    4924             :               break;
    4925             :             case 'm':    // 1 string to match.
    4926           0 :               if (memcmp(Mnemonic.data()+7, "ix_f32_e64", 10) != 0)
    4927             :                 break;
    4928           0 :               Mnemonic = "v_mad_mix_f32";      // "v_mad_mix_f32_e64"
    4929           0 :               return;
    4930           0 :             case 'u':    // 3 strings to match.
    4931             :               switch (Mnemonic[7]) {
    4932             :               default: break;
    4933             :               case '3':  // 2 strings to match.
    4934           0 :                 if (memcmp(Mnemonic.data()+8, "2_u", 3) != 0)
    4935             :                   break;
    4936             :                 switch (Mnemonic[11]) {
    4937             :                 default: break;
    4938             :                 case '1':        // 1 string to match.
    4939           0 :                   if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4940             :                     break;
    4941           0 :                   Mnemonic = "v_mad_u32_u16";  // "v_mad_u32_u16_e64"
    4942           0 :                   return;
    4943             :                 case '2':        // 1 string to match.
    4944           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4945             :                     break;
    4946           0 :                   Mnemonic = "v_mad_u32_u24";  // "v_mad_u32_u24_e64"
    4947           0 :                   return;
    4948             :                 }
    4949             :                 break;
    4950             :               case '6':  // 1 string to match.
    4951           0 :                 if (memcmp(Mnemonic.data()+8, "4_u32_e64", 9) != 0)
    4952             :                   break;
    4953           0 :                 Mnemonic = "v_mad_u64_u32";    // "v_mad_u64_u32_e64"
    4954           0 :                 return;
    4955             :               }
    4956             :               break;
    4957             :             }
    4958             :             break;
    4959           0 :           case 'o':      // 3 strings to match.
    4960           0 :             if (Mnemonic[4] != 'v')
    4961             :               break;
    4962             :             switch (Mnemonic[5]) {
    4963             :             default: break;
    4964             :             case '_':    // 1 string to match.
    4965           0 :               if (memcmp(Mnemonic.data()+6, "fed_b32_e64", 11) != 0)
    4966             :                 break;
    4967           0 :               Mnemonic = "v_mov_fed_b32";      // "v_mov_fed_b32_e64"
    4968           0 :               return;
    4969             :             case 'r':    // 2 strings to match.
    4970           0 :               if (memcmp(Mnemonic.data()+6, "el", 2) != 0)
    4971             :                 break;
    4972             :               switch (Mnemonic[8]) {
    4973             :               default: break;
    4974             :               case 'd':  // 1 string to match.
    4975           0 :                 if (memcmp(Mnemonic.data()+9, "_b32_e64", 8) != 0)
    4976             :                   break;
    4977           0 :                 Mnemonic = "v_movreld_b32";    // "v_movreld_b32_e64"
    4978           0 :                 return;
    4979             :               case 's':  // 1 string to match.
    4980           0 :                 if (memcmp(Mnemonic.data()+9, "_b32_e64", 8) != 0)
    4981             :                   break;
    4982           0 :                 Mnemonic = "v_movrels_b32";    // "v_movrels_b32_e64"
    4983           0 :                 return;
    4984             :               }
    4985             :               break;
    4986             :             }
    4987             :             break;
    4988             :           case 'u':      // 2 strings to match.
    4989           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    4990             :               break;
    4991             :             switch (Mnemonic[6]) {
    4992             :             default: break;
    4993             :             case 'i':    // 1 string to match.
    4994           0 :               if (memcmp(Mnemonic.data()+7, "32_i24_e64", 10) != 0)
    4995             :                 break;
    4996           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_i32_i24_e64"
    4997           0 :                 Mnemonic = "v_mul_i32_i24";
    4998             :               return;
    4999             :             case 'u':    // 1 string to match.
    5000           0 :               if (memcmp(Mnemonic.data()+7, "32_u24_e64", 10) != 0)
    5001             :                 break;
    5002           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_u32_u24_e64"
    5003           0 :                 Mnemonic = "v_mul_u32_u24";
    5004             :               return;
    5005             :             }
    5006             :             break;
    5007             :           }
    5008             :           break;
    5009             :         case 's':        // 1 string to match.
    5010           0 :           if (memcmp(Mnemonic.data()+3, "ubbrev_u32_e64", 14) != 0)
    5011             :             break;
    5012           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_subbrev_u32_e64"
    5013           0 :             Mnemonic = "v_subbrev_u32";
    5014             :           return;
    5015             :         }
    5016             :         break;
    5017             :       case 18:   // 65 strings to match.
    5018         447 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    5019             :           break;
    5020             :         switch (Mnemonic[2]) {
    5021             :         default: break;
    5022           0 :         case 'a':        // 3 strings to match.
    5023             :           switch (Mnemonic[3]) {
    5024             :           default: break;
    5025             :           case 'd':      // 2 strings to match.
    5026           0 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    5027             :               break;
    5028             :             switch (Mnemonic[6]) {
    5029             :             default: break;
    5030             :             case 'i':    // 1 string to match.
    5031           0 :               if (memcmp(Mnemonic.data()+7, "32_gfx9_e64", 11) != 0)
    5032             :                 break;
    5033           0 :               Mnemonic = "v_add_i32_gfx9";     // "v_add_i32_gfx9_e64"
    5034           0 :               return;
    5035             :             case 'l':    // 1 string to match.
    5036           0 :               if (memcmp(Mnemonic.data()+7, "shl_u32_e64", 11) != 0)
    5037             :                 break;
    5038           0 :               Mnemonic = "v_add_lshl_u32";     // "v_add_lshl_u32_e64"
    5039           0 :               return;
    5040             :             }
    5041             :             break;
    5042             :           case 'l':      // 1 string to match.
    5043           0 :             if (memcmp(Mnemonic.data()+4, "ignbit_b32_e64", 14) != 0)
    5044             :               break;
    5045           0 :             Mnemonic = "v_alignbit_b32";       // "v_alignbit_b32_e64"
    5046           0 :             return;
    5047             :           }
    5048             :           break;
    5049             :         case 'b':        // 1 string to match.
    5050           0 :           if (memcmp(Mnemonic.data()+3, "cnt_u32_b32_e64", 15) != 0)
    5051             :             break;
    5052           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_bcnt_u32_b32_e64"
    5053           0 :             Mnemonic = "v_bcnt_u32_b32";
    5054             :           return;
    5055             :         case 'c':        // 47 strings to match.
    5056          24 :           if (memcmp(Mnemonic.data()+3, "mp", 2) != 0)
    5057             :             break;
    5058             :           switch (Mnemonic[5]) {
    5059             :           default: break;
    5060           0 :           case 's':      // 26 strings to match.
    5061             :             switch (Mnemonic[6]) {
    5062             :             default: break;
    5063           0 :             case '_':    // 14 strings to match.
    5064             :               switch (Mnemonic[7]) {
    5065             :               default: break;
    5066           0 :               case 'n':  // 12 strings to match.
    5067             :                 switch (Mnemonic[8]) {
    5068             :                 default: break;
    5069             :                 case 'e':        // 2 strings to match.
    5070           0 :                   if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
    5071             :                     break;
    5072             :                   switch (Mnemonic[12]) {
    5073             :                   default: break;
    5074             :                   case '3':      // 1 string to match.
    5075           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5076             :                       break;
    5077           0 :                     Mnemonic = "v_cmps_neq_f32";       // "v_cmps_neq_f32_e64"
    5078           0 :                     return;
    5079             :                   case '6':      // 1 string to match.
    5080           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5081             :                       break;
    5082           0 :                     Mnemonic = "v_cmps_neq_f64";       // "v_cmps_neq_f64_e64"
    5083           0 :                     return;
    5084             :                   }
    5085             :                   break;
    5086           0 :                 case 'g':        // 4 strings to match.
    5087             :                   switch (Mnemonic[9]) {
    5088             :                   default: break;
    5089             :                   case 'e':      // 2 strings to match.
    5090           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5091             :                       break;
    5092             :                     switch (Mnemonic[12]) {
    5093             :                     default: break;
    5094             :                     case '3':    // 1 string to match.
    5095           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5096             :                         break;
    5097           0 :                       Mnemonic = "v_cmps_nge_f32";     // "v_cmps_nge_f32_e64"
    5098           0 :                       return;
    5099             :                     case '6':    // 1 string to match.
    5100           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5101             :                         break;
    5102           0 :                       Mnemonic = "v_cmps_nge_f64";     // "v_cmps_nge_f64_e64"
    5103           0 :                       return;
    5104             :                     }
    5105             :                     break;
    5106             :                   case 't':      // 2 strings to match.
    5107           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5108             :                       break;
    5109             :                     switch (Mnemonic[12]) {
    5110             :                     default: break;
    5111             :                     case '3':    // 1 string to match.
    5112           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5113             :                         break;
    5114           0 :                       Mnemonic = "v_cmps_ngt_f32";     // "v_cmps_ngt_f32_e64"
    5115           0 :                       return;
    5116             :                     case '6':    // 1 string to match.
    5117           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5118             :                         break;
    5119           0 :                       Mnemonic = "v_cmps_ngt_f64";     // "v_cmps_ngt_f64_e64"
    5120           0 :                       return;
    5121             :                     }
    5122             :                     break;
    5123             :                   }
    5124             :                   break;
    5125           0 :                 case 'l':        // 6 strings to match.
    5126             :                   switch (Mnemonic[9]) {
    5127             :                   default: break;
    5128             :                   case 'e':      // 2 strings to match.
    5129           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5130             :                       break;
    5131             :                     switch (Mnemonic[12]) {
    5132             :                     default: break;
    5133             :                     case '3':    // 1 string to match.
    5134           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5135             :                         break;
    5136           0 :                       Mnemonic = "v_cmps_nle_f32";     // "v_cmps_nle_f32_e64"
    5137           0 :                       return;
    5138             :                     case '6':    // 1 string to match.
    5139           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5140             :                         break;
    5141           0 :                       Mnemonic = "v_cmps_nle_f64";     // "v_cmps_nle_f64_e64"
    5142           0 :                       return;
    5143             :                     }
    5144             :                     break;
    5145             :                   case 'g':      // 2 strings to match.
    5146           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5147             :                       break;
    5148             :                     switch (Mnemonic[12]) {
    5149             :                     default: break;
    5150             :                     case '3':    // 1 string to match.
    5151           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5152             :                         break;
    5153           0 :                       Mnemonic = "v_cmps_nlg_f32";     // "v_cmps_nlg_f32_e64"
    5154           0 :                       return;
    5155             :                     case '6':    // 1 string to match.
    5156           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5157             :                         break;
    5158           0 :                       Mnemonic = "v_cmps_nlg_f64";     // "v_cmps_nlg_f64_e64"
    5159           0 :                       return;
    5160             :                     }
    5161             :                     break;
    5162             :                   case 't':      // 2 strings to match.
    5163           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5164             :                       break;
    5165             :                     switch (Mnemonic[12]) {
    5166             :                     default: break;
    5167             :                     case '3':    // 1 string to match.
    5168           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5169             :                         break;
    5170           0 :                       Mnemonic = "v_cmps_nlt_f32";     // "v_cmps_nlt_f32_e64"
    5171           0 :                       return;
    5172             :                     case '6':    // 1 string to match.
    5173           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5174             :                         break;
    5175           0 :                       Mnemonic = "v_cmps_nlt_f64";     // "v_cmps_nlt_f64_e64"
    5176           0 :                       return;
    5177             :                     }
    5178             :                     break;
    5179             :                   }
    5180             :                   break;
    5181             :                 }
    5182             :                 break;
    5183             :               case 't':  // 2 strings to match.
    5184           0 :                 if (memcmp(Mnemonic.data()+8, "ru_f", 4) != 0)
    5185             :                   break;
    5186             :                 switch (Mnemonic[12]) {
    5187             :                 default: break;
    5188             :                 case '3':        // 1 string to match.
    5189           0 :                   if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5190             :                     break;
    5191           0 :                   Mnemonic = "v_cmps_tru_f32";         // "v_cmps_tru_f32_e64"
    5192           0 :                   return;
    5193             :                 case '6':        // 1 string to match.
    5194           0 :                   if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5195             :                     break;
    5196           0 :                   Mnemonic = "v_cmps_tru_f64";         // "v_cmps_tru_f64_e64"
    5197           0 :                   return;
    5198             :                 }
    5199             :                 break;
    5200             :               }
    5201             :               break;
    5202           0 :             case 'x':    // 12 strings to match.
    5203           0 :               if (Mnemonic[7] != '_')
    5204             :                 break;
    5205             :               switch (Mnemonic[8]) {
    5206             :               default: break;
    5207             :               case 'e':  // 2 strings to match.
    5208           0 :                 if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
    5209             :                   break;
    5210             :                 switch (Mnemonic[12]) {
    5211             :                 default: break;
    5212             :                 case '3':        // 1 string to match.
    5213           0 :                   if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5214             :                     break;
    5215           0 :                   Mnemonic = "v_cmpsx_eq_f32";         // "v_cmpsx_eq_f32_e64"
    5216           0 :                   return;
    5217             :                 case '6':        // 1 string to match.
    5218           0 :                   if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5219             :                     break;
    5220           0 :                   Mnemonic = "v_cmpsx_eq_f64";         // "v_cmpsx_eq_f64_e64"
    5221           0 :                   return;
    5222             :                 }
    5223             :                 break;
    5224           0 :               case 'g':  // 4 strings to match.
    5225             :                 switch (Mnemonic[9]) {
    5226             :                 default: break;
    5227             :                 case 'e':        // 2 strings to match.
    5228           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5229             :                     break;
    5230             :                   switch (Mnemonic[12]) {
    5231             :                   default: break;
    5232             :                   case '3':      // 1 string to match.
    5233           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5234             :                       break;
    5235           0 :                     Mnemonic = "v_cmpsx_ge_f32";       // "v_cmpsx_ge_f32_e64"
    5236           0 :                     return;
    5237             :                   case '6':      // 1 string to match.
    5238           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5239             :                       break;
    5240           0 :                     Mnemonic = "v_cmpsx_ge_f64";       // "v_cmpsx_ge_f64_e64"
    5241           0 :                     return;
    5242             :                   }
    5243             :                   break;
    5244             :                 case 't':        // 2 strings to match.
    5245           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5246             :                     break;
    5247             :                   switch (Mnemonic[12]) {
    5248             :                   default: break;
    5249             :                   case '3':      // 1 string to match.
    5250           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5251             :                       break;
    5252           0 :                     Mnemonic = "v_cmpsx_gt_f32";       // "v_cmpsx_gt_f32_e64"
    5253           0 :                     return;
    5254             :                   case '6':      // 1 string to match.
    5255           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5256             :                       break;
    5257           0 :                     Mnemonic = "v_cmpsx_gt_f64";       // "v_cmpsx_gt_f64_e64"
    5258           0 :                     return;
    5259             :                   }
    5260             :                   break;
    5261             :                 }
    5262             :                 break;
    5263           0 :               case 'l':  // 6 strings to match.
    5264             :                 switch (Mnemonic[9]) {
    5265             :                 default: break;
    5266             :                 case 'e':        // 2 strings to match.
    5267           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5268             :                     break;
    5269             :                   switch (Mnemonic[12]) {
    5270             :                   default: break;
    5271             :                   case '3':      // 1 string to match.
    5272           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5273             :                       break;
    5274           0 :                     Mnemonic = "v_cmpsx_le_f32";       // "v_cmpsx_le_f32_e64"
    5275           0 :                     return;
    5276             :                   case '6':      // 1 string to match.
    5277           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5278             :                       break;
    5279           0 :                     Mnemonic = "v_cmpsx_le_f64";       // "v_cmpsx_le_f64_e64"
    5280           0 :                     return;
    5281             :                   }
    5282             :                   break;
    5283             :                 case 'g':        // 2 strings to match.
    5284           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5285             :                     break;
    5286             :                   switch (Mnemonic[12]) {
    5287             :                   default: break;
    5288             :                   case '3':      // 1 string to match.
    5289           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5290             :                       break;
    5291           0 :                     Mnemonic = "v_cmpsx_lg_f32";       // "v_cmpsx_lg_f32_e64"
    5292           0 :                     return;
    5293             :                   case '6':      // 1 string to match.
    5294           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5295             :                       break;
    5296           0 :                     Mnemonic = "v_cmpsx_lg_f64";       // "v_cmpsx_lg_f64_e64"
    5297           0 :                     return;
    5298             :                   }
    5299             :                   break;
    5300             :                 case 't':        // 2 strings to match.
    5301           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5302             :                     break;
    5303             :                   switch (Mnemonic[12]) {
    5304             :                   default: break;
    5305             :                   case '3':      // 1 string to match.
    5306           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5307             :                       break;
    5308           0 :                     Mnemonic = "v_cmpsx_lt_f32";       // "v_cmpsx_lt_f32_e64"
    5309           0 :                     return;
    5310             :                   case '6':      // 1 string to match.
    5311           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5312             :                       break;
    5313           0 :                     Mnemonic = "v_cmpsx_lt_f64";       // "v_cmpsx_lt_f64_e64"
    5314           0 :                     return;
    5315             :                   }
    5316             :                   break;
    5317             :                 }
    5318             :                 break;
    5319             :               }
    5320             :               break;
    5321             :             }
    5322             :             break;
    5323           0 :           case 'x':      // 21 strings to match.
    5324           0 :             if (Mnemonic[6] != '_')
    5325             :               break;
    5326             :             switch (Mnemonic[7]) {
    5327             :             default: break;
    5328           0 :             case 'n':    // 18 strings to match.
    5329             :               switch (Mnemonic[8]) {
    5330             :               default: break;
    5331             :               case 'e':  // 3 strings to match.
    5332           0 :                 if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
    5333             :                   break;
    5334             :                 switch (Mnemonic[12]) {
    5335             :                 default: break;
    5336             :                 case '1':        // 1 string to match.
    5337           0 :                   if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5338             :                     break;
    5339           0 :                   Mnemonic = "v_cmpx_neq_f16";         // "v_cmpx_neq_f16_e64"
    5340           0 :                   return;
    5341             :                 case '3':        // 1 string to match.
    5342           0 :                   if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5343             :                     break;
    5344           0 :                   Mnemonic = "v_cmpx_neq_f32";         // "v_cmpx_neq_f32_e64"
    5345           0 :                   return;
    5346             :                 case '6':        // 1 string to match.
    5347           0 :                   if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5348             :                     break;
    5349           0 :                   Mnemonic = "v_cmpx_neq_f64";         // "v_cmpx_neq_f64_e64"
    5350           0 :                   return;
    5351             :                 }
    5352             :                 break;
    5353           0 :               case 'g':  // 6 strings to match.
    5354             :                 switch (Mnemonic[9]) {
    5355             :                 default: break;
    5356             :                 case 'e':        // 3 strings to match.
    5357           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5358             :                     break;
    5359             :                   switch (Mnemonic[12]) {
    5360             :                   default: break;
    5361             :                   case '1':      // 1 string to match.
    5362           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5363             :                       break;
    5364           0 :                     Mnemonic = "v_cmpx_nge_f16";       // "v_cmpx_nge_f16_e64"
    5365           0 :                     return;
    5366             :                   case '3':      // 1 string to match.
    5367           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5368             :                       break;
    5369           0 :                     Mnemonic = "v_cmpx_nge_f32";       // "v_cmpx_nge_f32_e64"
    5370           0 :                     return;
    5371             :                   case '6':      // 1 string to match.
    5372           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5373             :                       break;
    5374           0 :                     Mnemonic = "v_cmpx_nge_f64";       // "v_cmpx_nge_f64_e64"
    5375           0 :                     return;
    5376             :                   }
    5377             :                   break;
    5378             :                 case 't':        // 3 strings to match.
    5379           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5380             :                     break;
    5381             :                   switch (Mnemonic[12]) {
    5382             :                   default: break;
    5383             :                   case '1':      // 1 string to match.
    5384           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5385             :                       break;
    5386           0 :                     Mnemonic = "v_cmpx_ngt_f16";       // "v_cmpx_ngt_f16_e64"
    5387           0 :                     return;
    5388             :                   case '3':      // 1 string to match.
    5389           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5390             :                       break;
    5391           0 :                     Mnemonic = "v_cmpx_ngt_f32";       // "v_cmpx_ngt_f32_e64"
    5392           0 :                     return;
    5393             :                   case '6':      // 1 string to match.
    5394           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5395             :                       break;
    5396           0 :                     Mnemonic = "v_cmpx_ngt_f64";       // "v_cmpx_ngt_f64_e64"
    5397           0 :                     return;
    5398             :                   }
    5399             :                   break;
    5400             :                 }
    5401             :                 break;
    5402           0 :               case 'l':  // 9 strings to match.
    5403             :                 switch (Mnemonic[9]) {
    5404             :                 default: break;
    5405             :                 case 'e':        // 3 strings to match.
    5406           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5407             :                     break;
    5408             :                   switch (Mnemonic[12]) {
    5409             :                   default: break;
    5410             :                   case '1':      // 1 string to match.
    5411           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5412             :                       break;
    5413           0 :                     Mnemonic = "v_cmpx_nle_f16";       // "v_cmpx_nle_f16_e64"
    5414           0 :                     return;
    5415             :                   case '3':      // 1 string to match.
    5416           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5417             :                       break;
    5418           0 :                     Mnemonic = "v_cmpx_nle_f32";       // "v_cmpx_nle_f32_e64"
    5419           0 :                     return;
    5420             :                   case '6':      // 1 string to match.
    5421           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5422             :                       break;
    5423           0 :                     Mnemonic = "v_cmpx_nle_f64";       // "v_cmpx_nle_f64_e64"
    5424           0 :                     return;
    5425             :                   }
    5426             :                   break;
    5427             :                 case 'g':        // 3 strings to match.
    5428           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5429             :                     break;
    5430             :                   switch (Mnemonic[12]) {
    5431             :                   default: break;
    5432             :                   case '1':      // 1 string to match.
    5433           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5434             :                       break;
    5435           0 :                     Mnemonic = "v_cmpx_nlg_f16";       // "v_cmpx_nlg_f16_e64"
    5436           0 :                     return;
    5437             :                   case '3':      // 1 string to match.
    5438           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5439             :                       break;
    5440           0 :                     Mnemonic = "v_cmpx_nlg_f32";       // "v_cmpx_nlg_f32_e64"
    5441           0 :                     return;
    5442             :                   case '6':      // 1 string to match.
    5443           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5444             :                       break;
    5445           0 :                     Mnemonic = "v_cmpx_nlg_f64";       // "v_cmpx_nlg_f64_e64"
    5446           0 :                     return;
    5447             :                   }
    5448             :                   break;
    5449             :                 case 't':        // 3 strings to match.
    5450           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5451             :                     break;
    5452             :                   switch (Mnemonic[12]) {
    5453             :                   default: break;
    5454             :                   case '1':      // 1 string to match.
    5455           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5456             :                       break;
    5457           0 :                     Mnemonic = "v_cmpx_nlt_f16";       // "v_cmpx_nlt_f16_e64"
    5458           0 :                     return;
    5459             :                   case '3':      // 1 string to match.
    5460           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5461             :                       break;
    5462           0 :                     Mnemonic = "v_cmpx_nlt_f32";       // "v_cmpx_nlt_f32_e64"
    5463           0 :                     return;
    5464             :                   case '6':      // 1 string to match.
    5465           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5466             :                       break;
    5467           0 :                     Mnemonic = "v_cmpx_nlt_f64";       // "v_cmpx_nlt_f64_e64"
    5468           0 :                     return;
    5469             :                   }
    5470             :                   break;
    5471             :                 }
    5472             :                 break;
    5473             :               }
    5474             :               break;
    5475             :             case 't':    // 3 strings to match.
    5476           0 :               if (memcmp(Mnemonic.data()+8, "ru_f", 4) != 0)
    5477             :                 break;
    5478             :               switch (Mnemonic[12]) {
    5479             :               default: break;
    5480             :               case '1':  // 1 string to match.
    5481           0 :                 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5482             :                   break;
    5483           0 :                 Mnemonic = "v_cmpx_tru_f16";   // "v_cmpx_tru_f16_e64"
    5484           0 :                 return;
    5485             :               case '3':  // 1 string to match.
    5486           0 :                 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5487             :                   break;
    5488           0 :                 Mnemonic = "v_cmpx_tru_f32";   // "v_cmpx_tru_f32_e64"
    5489           0 :                 return;
    5490             :               case '6':  // 1 string to match.
    5491           0 :                 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5492             :                   break;
    5493           0 :                 Mnemonic = "v_cmpx_tru_f64";   // "v_cmpx_tru_f64_e64"
    5494           0 :                 return;
    5495             :               }
    5496             :               break;
    5497             :             }
    5498             :             break;
    5499             :           }
    5500             :           break;
    5501           0 :         case 'd':        // 5 strings to match.
    5502             :           switch (Mnemonic[3]) {
    5503             :           default: break;
    5504             :           case 'i':      // 2 strings to match.
    5505           0 :             if (memcmp(Mnemonic.data()+4, "v_fmas_f", 8) != 0)
    5506             :               break;
    5507             :             switch (Mnemonic[12]) {
    5508             :             default: break;
    5509             :             case '3':    // 1 string to match.
    5510           0 :               if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5511             :                 break;
    5512           0 :               Mnemonic = "v_div_fmas_f32";     // "v_div_fmas_f32_e64"
    5513           0 :               return;
    5514             :             case '6':    // 1 string to match.
    5515           0 :               if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5516             :                 break;
    5517           0 :               Mnemonic = "v_div_fmas_f64";     // "v_div_fmas_f64_e64"
    5518           0 :               return;
    5519             :             }
    5520             :             break;
    5521             :           case 'o':      // 3 strings to match.
    5522           0 :             if (memcmp(Mnemonic.data()+4, "t2_", 3) != 0)
    5523             :               break;
    5524             :             switch (Mnemonic[7]) {
    5525             :             default: break;
    5526             :             case 'f':    // 1 string to match.
    5527           0 :               if (memcmp(Mnemonic.data()+8, "32_f16_e64", 10) != 0)
    5528             :                 break;
    5529           0 :               Mnemonic = "v_dot2_f32_f16";     // "v_dot2_f32_f16_e64"
    5530           0 :               return;
    5531             :             case 'i':    // 1 string to match.
    5532           0 :               if (memcmp(Mnemonic.data()+8, "32_i16_e64", 10) != 0)
    5533             :                 break;
    5534           0 :               Mnemonic = "v_dot2_i32_i16";     // "v_dot2_i32_i16_e64"
    5535           0 :               return;
    5536             :             case 'u':    // 1 string to match.
    5537           0 :               if (memcmp(Mnemonic.data()+8, "32_u16_e64", 10) != 0)
    5538             :                 break;
    5539           0 :               Mnemonic = "v_dot2_u32_u16";     // "v_dot2_u32_u16_e64"
    5540           0 :               return;
    5541             :             }
    5542             :             break;
    5543             :           }
    5544             :           break;
    5545             :         case 'f':        // 1 string to match.
    5546           0 :           if (memcmp(Mnemonic.data()+3, "ma_f16_gfx9_e64", 15) != 0)
    5547             :             break;
    5548           0 :           Mnemonic = "v_fma_f16_gfx9";         // "v_fma_f16_gfx9_e64"
    5549           0 :           return;
    5550             :         case 'l':        // 1 string to match.
    5551           0 :           if (memcmp(Mnemonic.data()+3, "shl_add_u32_e64", 15) != 0)
    5552             :             break;
    5553           0 :           Mnemonic = "v_lshl_add_u32";         // "v_lshl_add_u32_e64"
    5554           0 :           return;
    5555         300 :         case 'm':        // 5 strings to match.
    5556             :           switch (Mnemonic[3]) {
    5557             :           default: break;
    5558             :           case 'a':      // 3 strings to match.
    5559           0 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    5560             :               break;
    5561             :             switch (Mnemonic[6]) {
    5562             :             default: break;
    5563             :             case 'f':    // 1 string to match.
    5564           0 :               if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
    5565             :                 break;
    5566           0 :               Mnemonic = "v_mad_f16_gfx9";     // "v_mad_f16_gfx9_e64"
    5567           0 :               return;
    5568             :             case 'i':    // 1 string to match.
    5569           0 :               if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
    5570             :                 break;
    5571           0 :               Mnemonic = "v_mad_i16_gfx9";     // "v_mad_i16_gfx9_e64"
    5572           0 :               return;
    5573             :             case 'u':    // 1 string to match.
    5574           0 :               if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
    5575             :                 break;
    5576           0 :               Mnemonic = "v_mad_u16_gfx9";     // "v_mad_u16_gfx9_e64"
    5577           0 :               return;
    5578             :             }
    5579             :             break;
    5580             :           case 'o':      // 1 string to match.
    5581           0 :             if (memcmp(Mnemonic.data()+4, "vrelsd_b32_e64", 14) != 0)
    5582             :               break;
    5583           0 :             Mnemonic = "v_movrelsd_b32";       // "v_movrelsd_b32_e64"
    5584           0 :             return;
    5585             :           case 'q':      // 1 string to match.
    5586           0 :             if (memcmp(Mnemonic.data()+4, "sad_u32_u8_e64", 14) != 0)
    5587             :               break;
    5588           0 :             Mnemonic = "v_mqsad_u32_u8";       // "v_mqsad_u32_u8_e64"
    5589           0 :             return;
    5590             :           }
    5591             :           break;
    5592             :         case 'p':        // 1 string to match.
    5593           0 :           if (memcmp(Mnemonic.data()+3, "ack_b32_f16_e64", 15) != 0)
    5594             :             break;
    5595           0 :           Mnemonic = "v_pack_b32_f16";         // "v_pack_b32_f16_e64"
    5596           0 :           return;
    5597             :         case 's':        // 1 string to match.
    5598           0 :           if (memcmp(Mnemonic.data()+3, "ub_i32_gfx9_e64", 15) != 0)
    5599             :             break;
    5600           0 :           Mnemonic = "v_sub_i32_gfx9";         // "v_sub_i32_gfx9_e64"
    5601           0 :           return;
    5602             :         }
    5603             :         break;
    5604             :       case 19:   // 39 strings to match.
    5605         609 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    5606             :           break;
    5607             :         switch (Mnemonic[2]) {
    5608             :         default: break;
    5609             :         case 'a':        // 1 string to match.
    5610           0 :           if (memcmp(Mnemonic.data()+3, "lignbyte_b32_e64", 16) != 0)
    5611             :             break;
    5612           0 :           Mnemonic = "v_alignbyte_b32";        // "v_alignbyte_b32_e64"
    5613           0 :           return;
    5614         166 :         case 'c':        // 18 strings to match.
    5615             :           switch (Mnemonic[3]) {
    5616             :           default: break;
    5617           0 :           case 'm':      // 17 strings to match.
    5618           0 :             if (Mnemonic[4] != 'p')
    5619             :               break;
    5620             :             switch (Mnemonic[5]) {
    5621             :             default: break;
    5622             :             case '_':    // 3 strings to match.
    5623           0 :               if (memcmp(Mnemonic.data()+6, "class_f", 7) != 0)
    5624             :                 break;
    5625             :               switch (Mnemonic[13]) {
    5626             :               default: break;
    5627             :               case '1':  // 1 string to match.
    5628           0 :                 if (memcmp(Mnemonic.data()+14, "6_e64", 5) != 0)
    5629             :                   break;
    5630           0 :                 Mnemonic = "v_cmp_class_f16";  // "v_cmp_class_f16_e64"
    5631           0 :                 return;
    5632             :               case '3':  // 1 string to match.
    5633           0 :                 if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5634             :                   break;
    5635           0 :                 Mnemonic = "v_cmp_class_f32";  // "v_cmp_class_f32_e64"
    5636           0 :                 return;
    5637             :               case '6':  // 1 string to match.
    5638           0 :                 if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5639             :                   break;
    5640           0 :                 Mnemonic = "v_cmp_class_f64";  // "v_cmp_class_f64_e64"
    5641           0 :                 return;
    5642             :               }
    5643             :               break;
    5644             :             case 's':    // 14 strings to match.
    5645           0 :               if (memcmp(Mnemonic.data()+6, "x_", 2) != 0)
    5646             :                 break;
    5647             :               switch (Mnemonic[8]) {
    5648             :               default: break;
    5649           0 :               case 'n':  // 12 strings to match.
    5650             :                 switch (Mnemonic[9]) {
    5651             :                 default: break;
    5652             :                 case 'e':        // 2 strings to match.
    5653           0 :                   if (memcmp(Mnemonic.data()+10, "q_f", 3) != 0)
    5654             :                     break;
    5655             :                   switch (Mnemonic[13]) {
    5656             :                   default: break;
    5657             :                   case '3':      // 1 string to match.
    5658           0 :                     if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5659             :                       break;
    5660           0 :                     Mnemonic = "v_cmpsx_neq_f32";      // "v_cmpsx_neq_f32_e64"
    5661           0 :                     return;
    5662             :                   case '6':      // 1 string to match.
    5663           0 :                     if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5664             :                       break;
    5665           0 :                     Mnemonic = "v_cmpsx_neq_f64";      // "v_cmpsx_neq_f64_e64"
    5666           0 :                     return;
    5667             :                   }
    5668             :                   break;
    5669           0 :                 case 'g':        // 4 strings to match.
    5670             :                   switch (Mnemonic[10]) {
    5671             :                   default: break;
    5672             :                   case 'e':      // 2 strings to match.
    5673           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5674             :                       break;
    5675             :                     switch (Mnemonic[13]) {
    5676             :                     default: break;
    5677             :                     case '3':    // 1 string to match.
    5678           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5679             :                         break;
    5680           0 :                       Mnemonic = "v_cmpsx_nge_f32";    // "v_cmpsx_nge_f32_e64"
    5681           0 :                       return;
    5682             :                     case '6':    // 1 string to match.
    5683           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5684             :                         break;
    5685           0 :                       Mnemonic = "v_cmpsx_nge_f64";    // "v_cmpsx_nge_f64_e64"
    5686           0 :                       return;
    5687             :                     }
    5688             :                     break;
    5689             :                   case 't':      // 2 strings to match.
    5690           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5691             :                       break;
    5692             :                     switch (Mnemonic[13]) {
    5693             :                     default: break;
    5694             :                     case '3':    // 1 string to match.
    5695           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5696             :                         break;
    5697           0 :                       Mnemonic = "v_cmpsx_ngt_f32";    // "v_cmpsx_ngt_f32_e64"
    5698           0 :                       return;
    5699             :                     case '6':    // 1 string to match.
    5700           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5701             :                         break;
    5702           0 :                       Mnemonic = "v_cmpsx_ngt_f64";    // "v_cmpsx_ngt_f64_e64"
    5703           0 :                       return;
    5704             :                     }
    5705             :                     break;
    5706             :                   }
    5707             :                   break;
    5708           0 :                 case 'l':        // 6 strings to match.
    5709             :                   switch (Mnemonic[10]) {
    5710             :                   default: break;
    5711             :                   case 'e':      // 2 strings to match.
    5712           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5713             :                       break;
    5714             :                     switch (Mnemonic[13]) {
    5715             :                     default: break;
    5716             :                     case '3':    // 1 string to match.
    5717           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5718             :                         break;
    5719           0 :                       Mnemonic = "v_cmpsx_nle_f32";    // "v_cmpsx_nle_f32_e64"
    5720           0 :                       return;
    5721             :                     case '6':    // 1 string to match.
    5722           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5723             :                         break;
    5724           0 :                       Mnemonic = "v_cmpsx_nle_f64";    // "v_cmpsx_nle_f64_e64"
    5725           0 :                       return;
    5726             :                     }
    5727             :                     break;
    5728             :                   case 'g':      // 2 strings to match.
    5729           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5730             :                       break;
    5731             :                     switch (Mnemonic[13]) {
    5732             :                     default: break;
    5733             :                     case '3':    // 1 string to match.
    5734           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5735             :                         break;
    5736           0 :                       Mnemonic = "v_cmpsx_nlg_f32";    // "v_cmpsx_nlg_f32_e64"
    5737           0 :                       return;
    5738             :                     case '6':    // 1 string to match.
    5739           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5740             :                         break;
    5741           0 :                       Mnemonic = "v_cmpsx_nlg_f64";    // "v_cmpsx_nlg_f64_e64"
    5742           0 :                       return;
    5743             :                     }
    5744             :                     break;
    5745             :                   case 't':      // 2 strings to match.
    5746           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5747             :                       break;
    5748             :                     switch (Mnemonic[13]) {
    5749             :                     default: break;
    5750             :                     case '3':    // 1 string to match.
    5751           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5752             :                         break;
    5753           0 :                       Mnemonic = "v_cmpsx_nlt_f32";    // "v_cmpsx_nlt_f32_e64"
    5754           0 :                       return;
    5755             :                     case '6':    // 1 string to match.
    5756           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5757             :                         break;
    5758           0 :                       Mnemonic = "v_cmpsx_nlt_f64";    // "v_cmpsx_nlt_f64_e64"
    5759           0 :                       return;
    5760             :                     }
    5761             :                     break;
    5762             :                   }
    5763             :                   break;
    5764             :                 }
    5765             :                 break;
    5766             :               case 't':  // 2 strings to match.
    5767           0 :                 if (memcmp(Mnemonic.data()+9, "ru_f", 4) != 0)
    5768             :                   break;
    5769             :                 switch (Mnemonic[13]) {
    5770             :                 default: break;
    5771             :                 case '3':        // 1 string to match.
    5772           0 :                   if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5773             :                     break;
    5774           0 :                   Mnemonic = "v_cmpsx_tru_f32";        // "v_cmpsx_tru_f32_e64"
    5775           0 :                   return;
    5776             :                 case '6':        // 1 string to match.
    5777           0 :                   if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5778             :                     break;
    5779           0 :                   Mnemonic = "v_cmpsx_tru_f64";        // "v_cmpsx_tru_f64_e64"
    5780           0 :                   return;
    5781             :                 }
    5782             :                 break;
    5783             :               }
    5784             :               break;
    5785             :             }
    5786             :             break;
    5787             :           case 'v':      // 1 string to match.
    5788         166 :             if (memcmp(Mnemonic.data()+4, "t_pk_u8_f32_e64", 15) != 0)
    5789             :               break;
    5790           0 :             Mnemonic = "v_cvt_pk_u8_f32";      // "v_cvt_pk_u8_f32_e64"
    5791           0 :             return;
    5792             :           }
    5793             :           break;
    5794             :         case 'd':        // 5 strings to match.
    5795           0 :           if (memcmp(Mnemonic.data()+3, "iv_", 3) != 0)
    5796             :             break;
    5797             :           switch (Mnemonic[6]) {
    5798             :           default: break;
    5799             :           case 'f':      // 3 strings to match.
    5800           0 :             if (memcmp(Mnemonic.data()+7, "ixup_f", 6) != 0)
    5801             :               break;
    5802             :             switch (Mnemonic[13]) {
    5803             :             default: break;
    5804             :             case '1':    // 1 string to match.
    5805           0 :               if (memcmp(Mnemonic.data()+14, "6_e64", 5) != 0)
    5806             :                 break;
    5807           0 :               if ((Features & (Feature_Has16BitInsts|Feature_isVIOnly)) == (Feature_Has16BitInsts|Feature_isVIOnly))         // "v_div_fixup_f16_e64"
    5808           0 :                 Mnemonic = "v_div_fixup_f16";
    5809             :               return;
    5810             :             case '3':    // 1 string to match.
    5811           0 :               if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5812             :                 break;
    5813           0 :               Mnemonic = "v_div_fixup_f32";    // "v_div_fixup_f32_e64"
    5814           0 :               return;
    5815             :             case '6':    // 1 string to match.
    5816           0 :               if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5817             :                 break;
    5818           0 :               Mnemonic = "v_div_fixup_f64";    // "v_div_fixup_f64_e64"
    5819           0 :               return;
    5820             :             }
    5821             :             break;
    5822             :           case 's':      // 2 strings to match.
    5823           0 :             if (memcmp(Mnemonic.data()+7, "cale_f", 6) != 0)
    5824             :               break;
    5825             :             switch (Mnemonic[13]) {
    5826             :             default: break;
    5827             :             case '3':    // 1 string to match.
    5828           0 :               if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5829             :                 break;
    5830           0 :               Mnemonic = "v_div_scale_f32";    // "v_div_scale_f32_e64"
    5831           0 :               return;
    5832             :             case '6':    // 1 string to match.
    5833           0 :               if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5834             :                 break;
    5835           0 :               Mnemonic = "v_div_scale_f64";    // "v_div_scale_f64_e64"
    5836           0 :               return;
    5837             :             }
    5838             :             break;
    5839             :           }
    5840             :           break;
    5841             :         case 'f':        // 2 strings to match.
    5842         230 :           if (memcmp(Mnemonic.data()+3, "ma_mix", 6) != 0)
    5843             :             break;
    5844             :           switch (Mnemonic[9]) {
    5845             :           default: break;
    5846             :           case 'h':      // 1 string to match.
    5847           0 :             if (memcmp(Mnemonic.data()+10, "i_f16_e64", 9) != 0)
    5848             :               break;
    5849           0 :             Mnemonic = "v_fma_mixhi_f16";      // "v_fma_mixhi_f16_e64"
    5850           0 :             return;
    5851             :           case 'l':      // 1 string to match.
    5852           0 :             if (memcmp(Mnemonic.data()+10, "o_f16_e64", 9) != 0)
    5853             :               break;
    5854           0 :             Mnemonic = "v_fma_mixlo_f16";      // "v_fma_mixlo_f16_e64"
    5855           0 :             return;
    5856             :           }
    5857             :           break;
    5858             :         case 'i':        // 3 strings to match.
    5859           0 :           if (memcmp(Mnemonic.data()+3, "nterp_p", 7) != 0)
    5860             :             break;
    5861             :           switch (Mnemonic[10]) {
    5862             :           default: break;
    5863             :           case '1':      // 1 string to match.
    5864           0 :             if (memcmp(Mnemonic.data()+11, "_f32_e64", 8) != 0)
    5865             :               break;
    5866           0 :             Mnemonic = "v_interp_p1_f32";      // "v_interp_p1_f32_e64"
    5867           0 :             return;
    5868             :           case '2':      // 2 strings to match.
    5869           0 :             if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5870             :               break;
    5871             :             switch (Mnemonic[13]) {
    5872             :             default: break;
    5873             :             case '1':    // 1 string to match.
    5874           0 :               if (memcmp(Mnemonic.data()+14, "6_e64", 5) != 0)
    5875             :                 break;
    5876           0 :               Mnemonic = "v_interp_p2_f16";    // "v_interp_p2_f16_e64"
    5877           0 :               return;
    5878             :             case '3':    // 1 string to match.
    5879           0 :               if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5880             :                 break;
    5881           0 :               Mnemonic = "v_interp_p2_f32";    // "v_interp_p2_f32_e64"
    5882           0 :               return;
    5883             :             }
    5884             :             break;
    5885             :           }
    5886             :           break;
    5887             :         case 'l':        // 1 string to match.
    5888           0 :           if (memcmp(Mnemonic.data()+3, "og_clamp_f32_e64", 16) != 0)
    5889             :             break;
    5890           0 :           Mnemonic = "v_log_clamp_f32";        // "v_log_clamp_f32_e64"
    5891           0 :           return;
    5892             :         case 'm':        // 2 strings to match.
    5893           0 :           if (memcmp(Mnemonic.data()+3, "ad_mix", 6) != 0)
    5894             :             break;
    5895             :           switch (Mnemonic[9]) {
    5896             :           default: break;
    5897             :           case 'h':      // 1 string to match.
    5898           0 :             if (memcmp(Mnemonic.data()+10, "i_f16_e64", 9) != 0)
    5899             :               break;
    5900           0 :             Mnemonic = "v_mad_mixhi_f16";      // "v_mad_mixhi_f16_e64"
    5901           0 :             return;
    5902             :           case 'l':      // 1 string to match.
    5903           0 :             if (memcmp(Mnemonic.data()+10, "o_f16_e64", 9) != 0)
    5904             :               break;
    5905           0 :             Mnemonic = "v_mad_mixlo_f16";      // "v_mad_mixlo_f16_e64"
    5906           0 :             return;
    5907             :           }
    5908             :           break;
    5909             :         case 'p':        // 1 string to match.
    5910           0 :           if (memcmp(Mnemonic.data()+3, "k_mul_lo_u16_e64", 16) != 0)
    5911             :             break;
    5912           0 :           Mnemonic = "v_pk_mul_lo_u16";        // "v_pk_mul_lo_u16_e64"
    5913           0 :           return;
    5914           0 :         case 'r':        // 5 strings to match.
    5915             :           switch (Mnemonic[3]) {
    5916             :           default: break;
    5917             :           case 'c':      // 3 strings to match.
    5918           0 :             if (memcmp(Mnemonic.data()+4, "p_", 2) != 0)
    5919             :               break;
    5920             :             switch (Mnemonic[6]) {
    5921             :             default: break;
    5922             :             case 'c':    // 2 strings to match.
    5923           0 :               if (memcmp(Mnemonic.data()+7, "lamp_f", 6) != 0)
    5924             :                 break;
    5925             :               switch (Mnemonic[13]) {
    5926             :               default: break;
    5927             :               case '3':  // 1 string to match.
    5928           0 :                 if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5929             :                   break;
    5930           0 :                 Mnemonic = "v_rcp_clamp_f32";  // "v_rcp_clamp_f32_e64"
    5931           0 :                 return;
    5932             :               case '6':  // 1 string to match.
    5933           0 :                 if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5934             :                   break;
    5935           0 :                 Mnemonic = "v_rcp_clamp_f64";  // "v_rcp_clamp_f64_e64"
    5936           0 :                 return;
    5937             :               }
    5938             :               break;
    5939             :             case 'i':    // 1 string to match.
    5940           0 :               if (memcmp(Mnemonic.data()+7, "flag_f32_e64", 12) != 0)
    5941             :                 break;
    5942           0 :               Mnemonic = "v_rcp_iflag_f32";    // "v_rcp_iflag_f32_e64"
    5943           0 :               return;
    5944             :             }
    5945             :             break;
    5946             :           case 's':      // 2 strings to match.
    5947           0 :             if (memcmp(Mnemonic.data()+4, "q_clamp_f", 9) != 0)
    5948             :               break;
    5949             :             switch (Mnemonic[13]) {
    5950             :             default: break;
    5951             :             case '3':    // 1 string to match.
    5952           0 :               if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5953             :                 break;
    5954           0 :               Mnemonic = "v_rsq_clamp_f32";    // "v_rsq_clamp_f32_e64"
    5955           0 :               return;
    5956             :             case '6':    // 1 string to match.
    5957           0 :               if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5958             :                 break;
    5959           0 :               Mnemonic = "v_rsq_clamp_f64";    // "v_rsq_clamp_f64_e64"
    5960           0 :               return;
    5961             :             }
    5962             :             break;
    5963             :           }
    5964             :           break;
    5965             :         case 's':        // 1 string to match.
    5966           0 :           if (memcmp(Mnemonic.data()+3, "at_pk_u8_i16_e64", 16) != 0)
    5967             :             break;
    5968           0 :           Mnemonic = "v_sat_pk_u8_i16";        // "v_sat_pk_u8_i16_e64"
    5969           0 :           return;
    5970             :         }
    5971             :         break;
    5972             :       case 20:   // 30 strings to match.
    5973         791 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    5974             :           break;
    5975             :         switch (Mnemonic[2]) {
    5976             :         default: break;
    5977         673 :         case 'c':        // 10 strings to match.
    5978             :           switch (Mnemonic[3]) {
    5979             :           default: break;
    5980             :           case 'm':      // 3 strings to match.
    5981           0 :             if (memcmp(Mnemonic.data()+4, "px_class_f", 10) != 0)
    5982             :               break;
    5983             :             switch (Mnemonic[14]) {
    5984             :             default: break;
    5985             :             case '1':    // 1 string to match.
    5986           0 :               if (memcmp(Mnemonic.data()+15, "6_e64", 5) != 0)
    5987             :                 break;
    5988           0 :               Mnemonic = "v_cmpx_class_f16";   // "v_cmpx_class_f16_e64"
    5989           0 :               return;
    5990             :             case '3':    // 1 string to match.
    5991           0 :               if (memcmp(Mnemonic.data()+15, "2_e64", 5) != 0)
    5992             :                 break;
    5993           0 :               Mnemonic = "v_cmpx_class_f32";   // "v_cmpx_class_f32_e64"
    5994           0 :               return;
    5995             :             case '6':    // 1 string to match.
    5996           0 :               if (memcmp(Mnemonic.data()+15, "4_e64", 5) != 0)
    5997             :                 break;
    5998           0 :               Mnemonic = "v_cmpx_class_f64";   // "v_cmpx_class_f64_e64"
    5999           0 :               return;
    6000             :             }
    6001             :             break;
    6002             :           case 'v':      // 7 strings to match.
    6003         673 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
    6004             :               break;
    6005             :             switch (Mnemonic[6]) {
    6006             :             default: break;
    6007             :             case 'f':    // 4 strings to match.
    6008           0 :               if (memcmp(Mnemonic.data()+7, "32_ubyte", 8) != 0)
    6009             :                 break;
    6010             :               switch (Mnemonic[15]) {
    6011             :               default: break;
    6012             :               case '0':  // 1 string to match.
    6013           0 :                 if (memcmp(Mnemonic.data()+16, "_e64", 4) != 0)
    6014             :                   break;
    6015           0 :                 Mnemonic = "v_cvt_f32_ubyte0";         // "v_cvt_f32_ubyte0_e64"
    6016           0 :                 return;
    6017             :               case '1':  // 1 string to match.
    6018           0 :                 if (memcmp(Mnemonic.data()+16, "_e64", 4) != 0)
    6019             :                   break;
    6020           0 :                 Mnemonic = "v_cvt_f32_ubyte1";         // "v_cvt_f32_ubyte1_e64"
    6021           0 :                 return;
    6022             :               case '2':  // 1 string to match.
    6023           0 :                 if (memcmp(Mnemonic.data()+16, "_e64", 4) != 0)
    6024             :                   break;
    6025           0 :                 Mnemonic = "v_cvt_f32_ubyte2";         // "v_cvt_f32_ubyte2_e64"
    6026           0 :                 return;
    6027             :               case '3':  // 1 string to match.
    6028           0 :                 if (memcmp(Mnemonic.data()+16, "_e64", 4) != 0)
    6029             :                   break;
    6030           0 :                 Mnemonic = "v_cvt_f32_ubyte3";         // "v_cvt_f32_ubyte3_e64"
    6031           0 :                 return;
    6032             :               }
    6033             :               break;
    6034             :             case 'o':    // 1 string to match.
    6035           0 :               if (memcmp(Mnemonic.data()+7, "ff_f32_i4_e64", 13) != 0)
    6036             :                 break;
    6037           0 :               Mnemonic = "v_cvt_off_f32_i4";   // "v_cvt_off_f32_i4_e64"
    6038           0 :               return;
    6039             :             case 'p':    // 2 strings to match.
    6040         673 :               if (memcmp(Mnemonic.data()+7, "k_", 2) != 0)
    6041             :                 break;
    6042             :               switch (Mnemonic[9]) {
    6043             :               default: break;
    6044             :               case 'i':  // 1 string to match.
    6045           0 :                 if (memcmp(Mnemonic.data()+10, "16_i32_e64", 10) != 0)
    6046             :                   break;
    6047           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_cvt_pk_i16_i32_e64"
    6048           0 :                   Mnemonic = "v_cvt_pk_i16_i32";
    6049             :                 return;
    6050             :               case 'u':  // 1 string to match.
    6051           0 :                 if (memcmp(Mnemonic.data()+10, "16_u32_e64", 10) != 0)
    6052             :                   break;
    6053           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_cvt_pk_u16_u32_e64"
    6054           0 :                   Mnemonic = "v_cvt_pk_u16_u32";
    6055             :                 return;
    6056             :               }
    6057             :               break;
    6058             :             }
    6059             :             break;
    6060             :           }
    6061             :           break;
    6062             :         case 'e':        // 1 string to match.
    6063           0 :           if (memcmp(Mnemonic.data()+3, "xp_legacy_f32_e64", 17) != 0)
    6064             :             break;
    6065           0 :           Mnemonic = "v_exp_legacy_f32";       // "v_exp_legacy_f32_e64"
    6066           0 :           return;
    6067             :         case 'f':        // 3 strings to match.
    6068           0 :           if (memcmp(Mnemonic.data()+3, "rexp_mant_f", 11) != 0)
    6069             :             break;
    6070             :           switch (Mnemonic[14]) {
    6071             :           default: break;
    6072             :           case '1':      // 1 string to match.
    6073           0 :             if (memcmp(Mnemonic.data()+15, "6_e64", 5) != 0)
    6074             :               break;
    6075           0 :             Mnemonic = "v_frexp_mant_f16";     // "v_frexp_mant_f16_e64"
    6076           0 :             return;
    6077             :           case '3':      // 1 string to match.
    6078           0 :             if (memcmp(Mnemonic.data()+15, "2_e64", 5) != 0)
    6079             :               break;
    6080           0 :             Mnemonic = "v_frexp_mant_f32";     // "v_frexp_mant_f32_e64"
    6081           0 :             return;
    6082             :           case '6':      // 1 string to match.
    6083           0 :             if (memcmp(Mnemonic.data()+15, "4_e64", 5) != 0)
    6084             :               break;
    6085           0 :             Mnemonic = "v_frexp_mant_f64";     // "v_frexp_mant_f64_e64"
    6086           0 :             return;
    6087             :           }
    6088             :           break;
    6089             :         case 'i':        // 1 string to match.
    6090           0 :           if (memcmp(Mnemonic.data()+3, "nterp_mov_f32_e64", 17) != 0)
    6091             :             break;
    6092           0 :           Mnemonic = "v_interp_mov_f32";       // "v_interp_mov_f32_e64"
    6093           0 :           return;
    6094             :         case 'l':        // 1 string to match.
    6095           0 :           if (memcmp(Mnemonic.data()+3, "og_legacy_f32_e64", 17) != 0)
    6096             :             break;
    6097           0 :           Mnemonic = "v_log_legacy_f32";       // "v_log_legacy_f32_e64"
    6098           0 :           return;
    6099           0 :         case 'm':        // 7 strings to match.
    6100             :           switch (Mnemonic[3]) {
    6101             :           default: break;
    6102           0 :           case 'a':      // 3 strings to match.
    6103             :             switch (Mnemonic[4]) {
    6104             :             default: break;
    6105             :             case 'c':    // 1 string to match.
    6106           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_e64", 15) != 0)
    6107             :                 break;
    6108           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_mac_legacy_f32_e64"
    6109           0 :                 Mnemonic = "v_mac_legacy_f32";
    6110             :               return;
    6111             :             case 'd':    // 1 string to match.
    6112           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_e64", 15) != 0)
    6113             :                 break;
    6114           0 :               Mnemonic = "v_mad_legacy_f32";   // "v_mad_legacy_f32_e64"
    6115           0 :               return;
    6116             :             case 'x':    // 1 string to match.
    6117           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_e64", 15) != 0)
    6118             :                 break;
    6119           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_max_legacy_f32_e64"
    6120           0 :                 Mnemonic = "v_max_legacy_f32";
    6121             :               return;
    6122             :             }
    6123             :             break;
    6124             :           case 'i':      // 1 string to match.
    6125           0 :             if (memcmp(Mnemonic.data()+4, "n_legacy_f32_e64", 16) != 0)
    6126             :               break;
    6127           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_min_legacy_f32_e64"
    6128           0 :               Mnemonic = "v_min_legacy_f32";
    6129             :             return;
    6130             :           case 'u':      // 3 strings to match.
    6131           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    6132             :               break;
    6133             :             switch (Mnemonic[6]) {
    6134             :             default: break;
    6135             :             case 'h':    // 2 strings to match.
    6136           0 :               if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
    6137             :                 break;
    6138             :               switch (Mnemonic[9]) {
    6139             :               default: break;
    6140             :               case 'i':  // 1 string to match.
    6141           0 :                 if (memcmp(Mnemonic.data()+10, "32_i24_e64", 10) != 0)
    6142             :                   break;
    6143           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_i32_i24_e64"
    6144           0 :                   Mnemonic = "v_mul_hi_i32_i24";
    6145             :                 return;
    6146             :               case 'u':  // 1 string to match.
    6147           0 :                 if (memcmp(Mnemonic.data()+10, "32_u24_e64", 10) != 0)
    6148             :                   break;
    6149           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_u32_u24_e64"
    6150           0 :                   Mnemonic = "v_mul_hi_u32_u24";
    6151             :                 return;
    6152             :               }
    6153             :               break;
    6154             :             case 'l':    // 1 string to match.
    6155           0 :               if (memcmp(Mnemonic.data()+7, "egacy_f32_e64", 13) != 0)
    6156             :                 break;
    6157           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_legacy_f32_e64"
    6158           0 :                 Mnemonic = "v_mul_legacy_f32";
    6159             :               return;
    6160             :             }
    6161             :             break;
    6162             :           }
    6163             :           break;
    6164             :         case 'p':        // 3 strings to match.
    6165           0 :           if (memcmp(Mnemonic.data()+3, "k_", 2) != 0)
    6166             :             break;
    6167             :           switch (Mnemonic[5]) {
    6168             :           default: break;
    6169             :           case 'a':      // 1 string to match.
    6170           0 :             if (memcmp(Mnemonic.data()+6, "shrrev_i16_e64", 14) != 0)
    6171             :               break;
    6172           0 :             Mnemonic = "v_pk_ashrrev_i16";     // "v_pk_ashrrev_i16_e64"
    6173           0 :             return;
    6174             :           case 'l':      // 2 strings to match.
    6175           0 :             if (memcmp(Mnemonic.data()+6, "sh", 2) != 0)
    6176             :               break;
    6177             :             switch (Mnemonic[8]) {
    6178             :             default: break;
    6179             :             case 'l':    // 1 string to match.
    6180           0 :               if (memcmp(Mnemonic.data()+9, "rev_b16_e64", 11) != 0)
    6181             :                 break;
    6182           0 :               Mnemonic = "v_pk_lshlrev_b16";   // "v_pk_lshlrev_b16_e64"
    6183           0 :               return;
    6184             :             case 'r':    // 1 string to match.
    6185           0 :               if (memcmp(Mnemonic.data()+9, "rev_b16_e64", 11) != 0)
    6186             :                 break;
    6187           0 :               Mnemonic = "v_pk_lshrrev_b16";   // "v_pk_lshrrev_b16_e64"
    6188           0 :               return;
    6189             :             }
    6190             :             break;
    6191             :           }
    6192             :           break;
    6193             :         case 'q':        // 1 string to match.
    6194           0 :           if (memcmp(Mnemonic.data()+3, "sad_pk_u16_u8_e64", 17) != 0)
    6195             :             break;
    6196           0 :           Mnemonic = "v_qsad_pk_u16_u8";       // "v_qsad_pk_u16_u8_e64"
    6197           0 :           return;
    6198           0 :         case 'r':        // 2 strings to match.
    6199             :           switch (Mnemonic[3]) {
    6200             :           default: break;
    6201             :           case 'c':      // 1 string to match.
    6202           0 :             if (memcmp(Mnemonic.data()+4, "p_legacy_f32_e64", 16) != 0)
    6203             :               break;
    6204           0 :             Mnemonic = "v_rcp_legacy_f32";     // "v_rcp_legacy_f32_e64"
    6205           0 :             return;
    6206             :           case 's':      // 1 string to match.
    6207           0 :             if (memcmp(Mnemonic.data()+4, "q_legacy_f32_e64", 16) != 0)
    6208             :               break;
    6209           0 :             Mnemonic = "v_rsq_legacy_f32";     // "v_rsq_legacy_f32_e64"
    6210           0 :             return;
    6211             :           }
    6212             :           break;
    6213             :         case 't':        // 1 string to match.
    6214           0 :           if (memcmp(Mnemonic.data()+3, "rig_preop_f64_e64", 17) != 0)
    6215             :             break;
    6216           0 :           Mnemonic = "v_trig_preop_f64";       // "v_trig_preop_f64_e64"
    6217           0 :           return;
    6218             :         }
    6219             :         break;
    6220             :       case 21:   // 5 strings to match.
    6221          37 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6222             :           break;
    6223             :         switch (Mnemonic[2]) {
    6224             :         default: break;
    6225             :         case 'c':        // 2 strings to match.
    6226           0 :           if (memcmp(Mnemonic.data()+3, "vt_", 3) != 0)
    6227             :             break;
    6228             :           switch (Mnemonic[6]) {
    6229             :           default: break;
    6230             :           case 'f':      // 1 string to match.
    6231           0 :             if (memcmp(Mnemonic.data()+7, "lr_i32_f32_e64", 14) != 0)
    6232             :               break;
    6233           0 :             Mnemonic = "v_cvt_flr_i32_f32";    // "v_cvt_flr_i32_f32_e64"
    6234           0 :             return;
    6235             :           case 'r':      // 1 string to match.
    6236           0 :             if (memcmp(Mnemonic.data()+7, "pi_i32_f32_e64", 14) != 0)
    6237             :               break;
    6238           0 :             Mnemonic = "v_cvt_rpi_i32_f32";    // "v_cvt_rpi_i32_f32_e64"
    6239           0 :             return;
    6240             :           }
    6241             :           break;
    6242             :         case 'i':        // 2 strings to match.
    6243           0 :           if (memcmp(Mnemonic.data()+3, "nterp_p1l", 9) != 0)
    6244             :             break;
    6245             :           switch (Mnemonic[12]) {
    6246             :           default: break;
    6247             :           case 'l':      // 1 string to match.
    6248           0 :             if (memcmp(Mnemonic.data()+13, "_f16_e64", 8) != 0)
    6249             :               break;
    6250           0 :             Mnemonic = "v_interp_p1ll_f16";    // "v_interp_p1ll_f16_e64"
    6251           0 :             return;
    6252             :           case 'v':      // 1 string to match.
    6253           0 :             if (memcmp(Mnemonic.data()+13, "_f16_e64", 8) != 0)
    6254             :               break;
    6255           0 :             Mnemonic = "v_interp_p1lv_f16";    // "v_interp_p1lv_f16_e64"
    6256           0 :             return;
    6257             :           }
    6258             :           break;
    6259             :         case 'm':        // 1 string to match.
    6260           0 :           if (memcmp(Mnemonic.data()+3, "qsad_pk_u16_u8_e64", 18) != 0)
    6261             :             break;
    6262           0 :           Mnemonic = "v_mqsad_pk_u16_u8";      // "v_mqsad_pk_u16_u8_e64"
    6263           0 :           return;
    6264             :         }
    6265             :         break;
    6266             :       case 22:   // 4 strings to match.
    6267         270 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6268             :           break;
    6269             :         switch (Mnemonic[2]) {
    6270             :         default: break;
    6271             :         case 'c':        // 2 strings to match.
    6272           0 :           if (memcmp(Mnemonic.data()+3, "vt_norm_", 8) != 0)
    6273             :             break;
    6274             :           switch (Mnemonic[11]) {
    6275             :           default: break;
    6276             :           case 'i':      // 1 string to match.
    6277           0 :             if (memcmp(Mnemonic.data()+12, "16_f16_e64", 10) != 0)
    6278             :               break;
    6279           0 :             Mnemonic = "v_cvt_norm_i16_f16";   // "v_cvt_norm_i16_f16_e64"
    6280           0 :             return;
    6281             :           case 'u':      // 1 string to match.
    6282           0 :             if (memcmp(Mnemonic.data()+12, "16_f16_e64", 10) != 0)
    6283             :               break;
    6284           0 :             Mnemonic = "v_cvt_norm_u16_f16";   // "v_cvt_norm_u16_f16_e64"
    6285           0 :             return;
    6286             :           }
    6287             :           break;
    6288             :         case 'm':        // 2 strings to match.
    6289           0 :           if (memcmp(Mnemonic.data()+3, "bcnt_", 5) != 0)
    6290             :             break;
    6291             :           switch (Mnemonic[8]) {
    6292             :           default: break;
    6293             :           case 'h':      // 1 string to match.
    6294           0 :             if (memcmp(Mnemonic.data()+9, "i_u32_b32_e64", 13) != 0)
    6295             :               break;
    6296           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_mbcnt_hi_u32_b32_e64"
    6297           0 :               Mnemonic = "v_mbcnt_hi_u32_b32";
    6298             :             return;
    6299             :           case 'l':      // 1 string to match.
    6300           0 :             if (memcmp(Mnemonic.data()+9, "o_u32_b32_e64", 13) != 0)
    6301             :               break;
    6302           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_mbcnt_lo_u32_b32_e64"
    6303           0 :               Mnemonic = "v_mbcnt_lo_u32_b32";
    6304             :             return;
    6305             :           }
    6306             :           break;
    6307             :         }
    6308             :         break;
    6309             :       case 23:   // 4 strings to match.
    6310          80 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6311             :           break;
    6312             :         switch (Mnemonic[2]) {
    6313             :         default: break;
    6314             :         case 'c':        // 1 string to match.
    6315           0 :           if (memcmp(Mnemonic.data()+3, "vt_pkrtz_f16_f32_e64", 20) != 0)
    6316             :             break;
    6317           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_cvt_pkrtz_f16_f32_e64"
    6318           0 :             Mnemonic = "v_cvt_pkrtz_f16_f32";
    6319             :           return;
    6320             :         case 'f':        // 3 strings to match.
    6321           0 :           if (memcmp(Mnemonic.data()+3, "rexp_exp_i", 10) != 0)
    6322             :             break;
    6323             :           switch (Mnemonic[13]) {
    6324             :           default: break;
    6325             :           case '1':      // 1 string to match.
    6326           0 :             if (memcmp(Mnemonic.data()+14, "6_f16_e64", 9) != 0)
    6327             :               break;
    6328           0 :             Mnemonic = "v_frexp_exp_i16_f16";  // "v_frexp_exp_i16_f16_e64"
    6329           0 :             return;
    6330             :           case '3':      // 2 strings to match.
    6331           0 :             if (memcmp(Mnemonic.data()+14, "2_f", 3) != 0)
    6332             :               break;
    6333             :             switch (Mnemonic[17]) {
    6334             :             default: break;
    6335             :             case '3':    // 1 string to match.
    6336           0 :               if (memcmp(Mnemonic.data()+18, "2_e64", 5) != 0)
    6337             :                 break;
    6338           0 :               Mnemonic = "v_frexp_exp_i32_f32";        // "v_frexp_exp_i32_f32_e64"
    6339           0 :               return;
    6340             :             case '6':    // 1 string to match.
    6341           0 :               if (memcmp(Mnemonic.data()+18, "4_e64", 5) != 0)
    6342             :                 break;
    6343           0 :               Mnemonic = "v_frexp_exp_i32_f64";        // "v_frexp_exp_i32_f64_e64"
    6344           0 :               return;
    6345             :             }
    6346             :             break;
    6347             :           }
    6348             :           break;
    6349             :         }
    6350             :         break;
    6351             :       case 24:   // 7 strings to match.
    6352          15 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6353             :           break;
    6354             :         switch (Mnemonic[2]) {
    6355             :         default: break;
    6356             :         case 'c':        // 5 strings to match.
    6357           0 :           if (memcmp(Mnemonic.data()+3, "vt_pk", 5) != 0)
    6358             :             break;
    6359             :           switch (Mnemonic[8]) {
    6360             :           default: break;
    6361             :           case 'a':      // 1 string to match.
    6362           0 :             if (memcmp(Mnemonic.data()+9, "ccum_u8_f32_e64", 15) != 0)
    6363             :               break;
    6364           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cvt_pkaccum_u8_f32_e64"
    6365           0 :               Mnemonic = "v_cvt_pkaccum_u8_f32";
    6366             :             return;
    6367             :           case 'n':      // 4 strings to match.
    6368           0 :             if (memcmp(Mnemonic.data()+9, "orm_", 4) != 0)
    6369             :               break;
    6370             :             switch (Mnemonic[13]) {
    6371             :             default: break;
    6372             :             case 'i':    // 2 strings to match.
    6373           0 :               if (memcmp(Mnemonic.data()+14, "16_f", 4) != 0)
    6374             :                 break;
    6375             :               switch (Mnemonic[18]) {
    6376             :               default: break;
    6377             :               case '1':  // 1 string to match.
    6378           0 :                 if (memcmp(Mnemonic.data()+19, "6_e64", 5) != 0)
    6379             :                   break;
    6380           0 :                 Mnemonic = "v_cvt_pknorm_i16_f16";     // "v_cvt_pknorm_i16_f16_e64"
    6381           0 :                 return;
    6382             :               case '3':  // 1 string to match.
    6383           0 :                 if (memcmp(Mnemonic.data()+19, "2_e64", 5) != 0)
    6384             :                   break;
    6385           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_cvt_pknorm_i16_f32_e64"
    6386           0 :                   Mnemonic = "v_cvt_pknorm_i16_f32";
    6387             :                 return;
    6388             :               }
    6389             :               break;
    6390             :             case 'u':    // 2 strings to match.
    6391           0 :               if (memcmp(Mnemonic.data()+14, "16_f", 4) != 0)
    6392             :                 break;
    6393             :               switch (Mnemonic[18]) {
    6394             :               default: break;
    6395             :               case '1':  // 1 string to match.
    6396           0 :                 if (memcmp(Mnemonic.data()+19, "6_e64", 5) != 0)
    6397             :                   break;
    6398           0 :                 Mnemonic = "v_cvt_pknorm_u16_f16";     // "v_cvt_pknorm_u16_f16_e64"
    6399           0 :                 return;
    6400             :               case '3':  // 1 string to match.
    6401           0 :                 if (memcmp(Mnemonic.data()+19, "2_e64", 5) != 0)
    6402             :                   break;
    6403           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_cvt_pknorm_u16_f32_e64"
    6404           0 :                   Mnemonic = "v_cvt_pknorm_u16_f32";
    6405             :                 return;
    6406             :               }
    6407             :               break;
    6408             :             }
    6409             :             break;
    6410             :           }
    6411             :           break;
    6412             :         case 'd':        // 1 string to match.
    6413           0 :           if (memcmp(Mnemonic.data()+3, "iv_fixup_f16_gfx9_e64", 21) != 0)
    6414             :             break;
    6415           0 :           if ((Features & (Feature_Has16BitInsts|Feature_isGFX9)) == (Feature_Has16BitInsts|Feature_isGFX9))         // "v_div_fixup_f16_gfx9_e64"
    6416           0 :             Mnemonic = "v_div_fixup_f16_gfx9";
    6417             :           return;
    6418             :         case 'i':        // 1 string to match.
    6419           0 :           if (memcmp(Mnemonic.data()+3, "nterp_p2_f16_gfx9_e64", 21) != 0)
    6420             :             break;
    6421           0 :           Mnemonic = "v_interp_p2_f16_gfx9";   // "v_interp_p2_f16_gfx9_e64"
    6422           0 :           return;
    6423             :         }
    6424             :         break;
    6425             :       case 30:   // 1 string to match.
    6426           0 :         if (memcmp(Mnemonic.data()+0, "v_screen_partition_4se_b32_e64", 30) != 0)
    6427             :           break;
    6428           0 :         Mnemonic = "v_screen_partition_4se_b32";       // "v_screen_partition_4se_b32_e64"
    6429           0 :         return;
    6430             :       }
    6431             :     break;
    6432             :     case 2:
    6433             :       switch (Mnemonic.size()) {
    6434             :       default: break;
    6435             :       case 10:   // 1 string to match.
    6436         938 :         if (memcmp(Mnemonic.data()+0, "v_nop_sdwa", 10) != 0)
    6437             :           break;
    6438           0 :         Mnemonic = "v_nop";    // "v_nop_sdwa"
    6439           0 :         return;
    6440             :       case 13:   // 1 string to match.
    6441        7388 :         if (memcmp(Mnemonic.data()+0, "v_or_b32_sdwa", 13) != 0)
    6442             :           break;
    6443           0 :         if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_or_b32_sdwa"
    6444           0 :           Mnemonic = "v_or_b32";
    6445             :         return;
    6446             :       case 14:   // 42 strings to match.
    6447        1578 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6448             :           break;
    6449             :         switch (Mnemonic[2]) {
    6450             :         default: break;
    6451           3 :         case 'a':        // 6 strings to match.
    6452             :           switch (Mnemonic[3]) {
    6453             :           default: break;
    6454             :           case 'd':      // 5 strings to match.
    6455           3 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    6456             :               break;
    6457             :             switch (Mnemonic[6]) {
    6458             :             default: break;
    6459           0 :             case 'f':    // 2 strings to match.
    6460             :               switch (Mnemonic[7]) {
    6461             :               default: break;
    6462             :               case '1':  // 1 string to match.
    6463           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6464             :                   break;
    6465           0 :                 Mnemonic = "v_add_f16";        // "v_add_f16_sdwa"
    6466           0 :                 return;
    6467             :               case '3':  // 1 string to match.
    6468           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6469             :                   break;
    6470           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_f32_sdwa"
    6471           0 :                   Mnemonic = "v_add_f32";
    6472             :                 return;
    6473             :               }
    6474             :               break;
    6475             :             case 'i':    // 1 string to match.
    6476           0 :               if (memcmp(Mnemonic.data()+7, "32_sdwa", 7) != 0)
    6477             :                 break;
    6478           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_add_i32_sdwa"
    6479           0 :                 Mnemonic = "v_add_i32";
    6480             :               return;
    6481           0 :             case 'u':    // 2 strings to match.
    6482             :               switch (Mnemonic[7]) {
    6483             :               default: break;
    6484             :               case '1':  // 1 string to match.
    6485           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6486             :                   break;
    6487           0 :                 Mnemonic = "v_add_u16";        // "v_add_u16_sdwa"
    6488           0 :                 return;
    6489             :               case '3':  // 1 string to match.
    6490           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6491             :                   break;
    6492           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_u32_sdwa"
    6493           0 :                   Mnemonic = "v_add_u32";
    6494             :                 return;
    6495             :               }
    6496             :               break;
    6497             :             }
    6498             :             break;
    6499             :           case 'n':      // 1 string to match.
    6500           0 :             if (memcmp(Mnemonic.data()+4, "d_b32_sdwa", 10) != 0)
    6501             :               break;
    6502           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_and_b32_sdwa"
    6503           0 :               Mnemonic = "v_and_b32";
    6504             :             return;
    6505             :           }
    6506             :           break;
    6507             :         case 'c':        // 2 strings to match.
    6508        1393 :           if (memcmp(Mnemonic.data()+3, "os_f", 4) != 0)
    6509             :             break;
    6510             :           switch (Mnemonic[7]) {
    6511             :           default: break;
    6512             :           case '1':      // 1 string to match.
    6513           0 :             if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6514             :               break;
    6515           0 :             Mnemonic = "v_cos_f16";    // "v_cos_f16_sdwa"
    6516           0 :             return;
    6517             :           case '3':      // 1 string to match.
    6518           0 :             if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6519             :               break;
    6520           0 :             Mnemonic = "v_cos_f32";    // "v_cos_f32_sdwa"
    6521           0 :             return;
    6522             :           }
    6523             :           break;
    6524             :         case 'e':        // 2 strings to match.
    6525           0 :           if (memcmp(Mnemonic.data()+3, "xp_f", 4) != 0)
    6526             :             break;
    6527             :           switch (Mnemonic[7]) {
    6528             :           default: break;
    6529             :           case '1':      // 1 string to match.
    6530           0 :             if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6531             :               break;
    6532           0 :             Mnemonic = "v_exp_f16";    // "v_exp_f16_sdwa"
    6533           0 :             return;
    6534             :           case '3':      // 1 string to match.
    6535           0 :             if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6536             :               break;
    6537           0 :             Mnemonic = "v_exp_f32";    // "v_exp_f32_sdwa"
    6538           0 :             return;
    6539             :           }
    6540             :           break;
    6541             :         case 'l':        // 2 strings to match.
    6542           3 :           if (memcmp(Mnemonic.data()+3, "og_f", 4) != 0)
    6543             :             break;
    6544             :           switch (Mnemonic[7]) {
    6545             :           default: break;
    6546             :           case '1':      // 1 string to match.
    6547           0 :             if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6548             :               break;
    6549           0 :             Mnemonic = "v_log_f16";    // "v_log_f16_sdwa"
    6550           0 :             return;
    6551             :           case '3':      // 1 string to match.
    6552           0 :             if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6553             :               break;
    6554           0 :             Mnemonic = "v_log_f32";    // "v_log_f32_sdwa"
    6555           0 :             return;
    6556             :           }
    6557             :           break;
    6558           6 :         case 'm':        // 17 strings to match.
    6559             :           switch (Mnemonic[3]) {
    6560             :           default: break;
    6561           0 :           case 'a':      // 8 strings to match.
    6562             :             switch (Mnemonic[4]) {
    6563             :             default: break;
    6564             :             case 'c':    // 2 strings to match.
    6565           0 :               if (memcmp(Mnemonic.data()+5, "_f", 2) != 0)
    6566             :                 break;
    6567             :               switch (Mnemonic[7]) {
    6568             :               default: break;
    6569             :               case '1':  // 1 string to match.
    6570           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6571             :                   break;
    6572           0 :                 Mnemonic = "v_mac_f16";        // "v_mac_f16_sdwa"
    6573           0 :                 return;
    6574             :               case '3':  // 1 string to match.
    6575           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6576             :                   break;
    6577           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mac_f32_sdwa"
    6578           0 :                   Mnemonic = "v_mac_f32";
    6579             :                 return;
    6580             :               }
    6581             :               break;
    6582           0 :             case 'x':    // 6 strings to match.
    6583           0 :               if (Mnemonic[5] != '_')
    6584             :                 break;
    6585             :               switch (Mnemonic[6]) {
    6586             :               default: break;
    6587           0 :               case 'f':  // 2 strings to match.
    6588             :                 switch (Mnemonic[7]) {
    6589             :                 default: break;
    6590             :                 case '1':        // 1 string to match.
    6591           0 :                   if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6592             :                     break;
    6593           0 :                   Mnemonic = "v_max_f16";      // "v_max_f16_sdwa"
    6594           0 :                   return;
    6595             :                 case '3':        // 1 string to match.
    6596           0 :                   if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6597             :                     break;
    6598           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_f32_sdwa"
    6599           0 :                     Mnemonic = "v_max_f32";
    6600             :                   return;
    6601             :                 }
    6602             :                 break;
    6603           0 :               case 'i':  // 2 strings to match.
    6604             :                 switch (Mnemonic[7]) {
    6605             :                 default: break;
    6606             :                 case '1':        // 1 string to match.
    6607           0 :                   if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6608             :                     break;
    6609           0 :                   Mnemonic = "v_max_i16";      // "v_max_i16_sdwa"
    6610           0 :                   return;
    6611             :                 case '3':        // 1 string to match.
    6612           0 :                   if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6613             :                     break;
    6614           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_i32_sdwa"
    6615           0 :                     Mnemonic = "v_max_i32";
    6616             :                   return;
    6617             :                 }
    6618             :                 break;
    6619           0 :               case 'u':  // 2 strings to match.
    6620             :                 switch (Mnemonic[7]) {
    6621             :                 default: break;
    6622             :                 case '1':        // 1 string to match.
    6623           0 :                   if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6624             :                     break;
    6625           0 :                   Mnemonic = "v_max_u16";      // "v_max_u16_sdwa"
    6626           0 :                   return;
    6627             :                 case '3':        // 1 string to match.
    6628           0 :                   if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6629             :                     break;
    6630           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_u32_sdwa"
    6631           0 :                     Mnemonic = "v_max_u32";
    6632             :                   return;
    6633             :                 }
    6634             :                 break;
    6635             :               }
    6636             :               break;
    6637             :             }
    6638             :             break;
    6639             :           case 'i':      // 6 strings to match.
    6640           0 :             if (memcmp(Mnemonic.data()+4, "n_", 2) != 0)
    6641             :               break;
    6642             :             switch (Mnemonic[6]) {
    6643             :             default: break;
    6644           0 :             case 'f':    // 2 strings to match.
    6645             :               switch (Mnemonic[7]) {
    6646             :               default: break;
    6647             :               case '1':  // 1 string to match.
    6648           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6649             :                   break;
    6650           0 :                 Mnemonic = "v_min_f16";        // "v_min_f16_sdwa"
    6651           0 :                 return;
    6652             :               case '3':  // 1 string to match.
    6653           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6654             :                   break;
    6655           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_f32_sdwa"
    6656           0 :                   Mnemonic = "v_min_f32";
    6657             :                 return;
    6658             :               }
    6659             :               break;
    6660           0 :             case 'i':    // 2 strings to match.
    6661             :               switch (Mnemonic[7]) {
    6662             :               default: break;
    6663             :               case '1':  // 1 string to match.
    6664           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6665             :                   break;
    6666           0 :                 Mnemonic = "v_min_i16";        // "v_min_i16_sdwa"
    6667           0 :                 return;
    6668             :               case '3':  // 1 string to match.
    6669           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6670             :                   break;
    6671           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_i32_sdwa"
    6672           0 :                   Mnemonic = "v_min_i32";
    6673             :                 return;
    6674             :               }
    6675             :               break;
    6676           0 :             case 'u':    // 2 strings to match.
    6677             :               switch (Mnemonic[7]) {
    6678             :               default: break;
    6679             :               case '1':  // 1 string to match.
    6680           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6681             :                   break;
    6682           0 :                 Mnemonic = "v_min_u16";        // "v_min_u16_sdwa"
    6683           0 :                 return;
    6684             :               case '3':  // 1 string to match.
    6685           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6686             :                   break;
    6687           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_u32_sdwa"
    6688           0 :                   Mnemonic = "v_min_u32";
    6689             :                 return;
    6690             :               }
    6691             :               break;
    6692             :             }
    6693             :             break;
    6694             :           case 'o':      // 1 string to match.
    6695           0 :             if (memcmp(Mnemonic.data()+4, "v_b32_sdwa", 10) != 0)
    6696             :               break;
    6697           0 :             Mnemonic = "v_mov_b32";    // "v_mov_b32_sdwa"
    6698           0 :             return;
    6699             :           case 'u':      // 2 strings to match.
    6700           0 :             if (memcmp(Mnemonic.data()+4, "l_f", 3) != 0)
    6701             :               break;
    6702             :             switch (Mnemonic[7]) {
    6703             :             default: break;
    6704             :             case '1':    // 1 string to match.
    6705           0 :               if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6706             :                 break;
    6707           0 :               Mnemonic = "v_mul_f16";  // "v_mul_f16_sdwa"
    6708           0 :               return;
    6709             :             case '3':    // 1 string to match.
    6710           0 :               if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6711             :                 break;
    6712           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_f32_sdwa"
    6713           0 :                 Mnemonic = "v_mul_f32";
    6714             :               return;
    6715             :             }
    6716             :             break;
    6717             :           }
    6718             :           break;
    6719             :         case 'n':        // 1 string to match.
    6720           0 :           if (memcmp(Mnemonic.data()+3, "ot_b32_sdwa", 11) != 0)
    6721             :             break;
    6722           0 :           Mnemonic = "v_not_b32";      // "v_not_b32_sdwa"
    6723           0 :           return;
    6724           0 :         case 'r':        // 4 strings to match.
    6725             :           switch (Mnemonic[3]) {
    6726             :           default: break;
    6727             :           case 'c':      // 2 strings to match.
    6728           0 :             if (memcmp(Mnemonic.data()+4, "p_f", 3) != 0)
    6729             :               break;
    6730             :             switch (Mnemonic[7]) {
    6731             :             default: break;
    6732             :             case '1':    // 1 string to match.
    6733           0 :               if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6734             :                 break;
    6735           0 :               Mnemonic = "v_rcp_f16";  // "v_rcp_f16_sdwa"
    6736           0 :               return;
    6737             :             case '3':    // 1 string to match.
    6738           0 :               if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6739             :                 break;
    6740           0 :               Mnemonic = "v_rcp_f32";  // "v_rcp_f32_sdwa"
    6741           0 :               return;
    6742             :             }
    6743             :             break;
    6744             :           case 's':      // 2 strings to match.
    6745           0 :             if (memcmp(Mnemonic.data()+4, "q_f", 3) != 0)
    6746             :               break;
    6747             :             switch (Mnemonic[7]) {
    6748             :             default: break;
    6749             :             case '1':    // 1 string to match.
    6750           0 :               if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6751             :                 break;
    6752           0 :               Mnemonic = "v_rsq_f16";  // "v_rsq_f16_sdwa"
    6753           0 :               return;
    6754             :             case '3':    // 1 string to match.
    6755           0 :               if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6756             :                 break;
    6757           0 :               Mnemonic = "v_rsq_f32";  // "v_rsq_f32_sdwa"
    6758           0 :               return;
    6759             :             }
    6760             :             break;
    6761             :           }
    6762             :           break;
    6763           0 :         case 's':        // 7 strings to match.
    6764             :           switch (Mnemonic[3]) {
    6765             :           default: break;
    6766             :           case 'i':      // 2 strings to match.
    6767           0 :             if (memcmp(Mnemonic.data()+4, "n_f", 3) != 0)
    6768             :               break;
    6769             :             switch (Mnemonic[7]) {
    6770             :             default: break;
    6771             :             case '1':    // 1 string to match.
    6772           0 :               if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6773             :                 break;
    6774           0 :               Mnemonic = "v_sin_f16";  // "v_sin_f16_sdwa"
    6775           0 :               return;
    6776             :             case '3':    // 1 string to match.
    6777           0 :               if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6778             :                 break;
    6779           0 :               Mnemonic = "v_sin_f32";  // "v_sin_f32_sdwa"
    6780           0 :               return;
    6781             :             }
    6782             :             break;
    6783             :           case 'u':      // 5 strings to match.
    6784           0 :             if (memcmp(Mnemonic.data()+4, "b_", 2) != 0)
    6785             :               break;
    6786             :             switch (Mnemonic[6]) {
    6787             :             default: break;
    6788           0 :             case 'f':    // 2 strings to match.
    6789             :               switch (Mnemonic[7]) {
    6790             :               default: break;
    6791             :               case '1':  // 1 string to match.
    6792           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6793             :                   break;
    6794           0 :                 Mnemonic = "v_sub_f16";        // "v_sub_f16_sdwa"
    6795           0 :                 return;
    6796             :               case '3':  // 1 string to match.
    6797           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6798             :                   break;
    6799           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_f32_sdwa"
    6800           0 :                   Mnemonic = "v_sub_f32";
    6801             :                 return;
    6802             :               }
    6803             :               break;
    6804             :             case 'i':    // 1 string to match.
    6805           0 :               if (memcmp(Mnemonic.data()+7, "32_sdwa", 7) != 0)
    6806             :                 break;
    6807           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_sub_i32_sdwa"
    6808           0 :                 Mnemonic = "v_sub_i32";
    6809             :               return;
    6810           0 :             case 'u':    // 2 strings to match.
    6811             :               switch (Mnemonic[7]) {
    6812             :               default: break;
    6813             :               case '1':  // 1 string to match.
    6814           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6815             :                   break;
    6816           0 :                 Mnemonic = "v_sub_u16";        // "v_sub_u16_sdwa"
    6817           0 :                 return;
    6818             :               case '3':  // 1 string to match.
    6819           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6820             :                   break;
    6821           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_u32_sdwa"
    6822           0 :                   Mnemonic = "v_sub_u32";
    6823             :                 return;
    6824             :               }
    6825             :               break;
    6826             :             }
    6827             :             break;
    6828             :           }
    6829             :           break;
    6830             :         case 'x':        // 1 string to match.
    6831           0 :           if (memcmp(Mnemonic.data()+3, "or_b32_sdwa", 11) != 0)
    6832             :             break;
    6833           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_xor_b32_sdwa"
    6834           0 :             Mnemonic = "v_xor_b32";
    6835             :           return;
    6836             :         }
    6837             :         break;
    6838             :       case 15:   // 14 strings to match.
    6839         748 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6840             :           break;
    6841             :         switch (Mnemonic[2]) {
    6842             :         default: break;
    6843           0 :         case 'a':        // 2 strings to match.
    6844             :           switch (Mnemonic[3]) {
    6845             :           default: break;
    6846             :           case 'd':      // 1 string to match.
    6847           0 :             if (memcmp(Mnemonic.data()+4, "dc_u32_sdwa", 11) != 0)
    6848             :               break;
    6849           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_addc_u32_sdwa"
    6850           0 :               Mnemonic = "v_addc_u32";
    6851             :             return;
    6852             :           case 's':      // 1 string to match.
    6853           0 :             if (memcmp(Mnemonic.data()+4, "hr_i32_sdwa", 11) != 0)
    6854             :               break;
    6855           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_ashr_i32_sdwa"
    6856           0 :               Mnemonic = "v_ashr_i32";
    6857             :             return;
    6858             :           }
    6859             :           break;
    6860             :         case 'c':        // 2 strings to match.
    6861         198 :           if (memcmp(Mnemonic.data()+3, "eil_f", 5) != 0)
    6862             :             break;
    6863             :           switch (Mnemonic[8]) {
    6864             :           default: break;
    6865             :           case '1':      // 1 string to match.
    6866           0 :             if (memcmp(Mnemonic.data()+9, "6_sdwa", 6) != 0)
    6867             :               break;
    6868           0 :             Mnemonic = "v_ceil_f16";   // "v_ceil_f16_sdwa"
    6869           0 :             return;
    6870             :           case '3':      // 1 string to match.
    6871           0 :             if (memcmp(Mnemonic.data()+9, "2_sdwa", 6) != 0)
    6872             :               break;
    6873           0 :             Mnemonic = "v_ceil_f32";   // "v_ceil_f32_sdwa"
    6874           0 :             return;
    6875             :           }
    6876             :           break;
    6877           6 :         case 'f':        // 4 strings to match.
    6878             :           switch (Mnemonic[3]) {
    6879             :           default: break;
    6880           0 :           case 'f':      // 3 strings to match.
    6881           0 :             if (Mnemonic[4] != 'b')
    6882             :               break;
    6883             :             switch (Mnemonic[5]) {
    6884             :             default: break;
    6885           0 :             case 'h':    // 2 strings to match.
    6886           0 :               if (Mnemonic[6] != '_')
    6887             :                 break;
    6888             :               switch (Mnemonic[7]) {
    6889             :               default: break;
    6890             :               case 'i':  // 1 string to match.
    6891           0 :                 if (memcmp(Mnemonic.data()+8, "32_sdwa", 7) != 0)
    6892             :                   break;
    6893           0 :                 Mnemonic = "v_ffbh_i32";       // "v_ffbh_i32_sdwa"
    6894           0 :                 return;
    6895             :               case 'u':  // 1 string to match.
    6896           0 :                 if (memcmp(Mnemonic.data()+8, "32_sdwa", 7) != 0)
    6897             :                   break;
    6898           0 :                 Mnemonic = "v_ffbh_u32";       // "v_ffbh_u32_sdwa"
    6899           0 :                 return;
    6900             :               }
    6901             :               break;
    6902             :             case 'l':    // 1 string to match.
    6903           0 :               if (memcmp(Mnemonic.data()+6, "_b32_sdwa", 9) != 0)
    6904             :                 break;
    6905           0 :               Mnemonic = "v_ffbl_b32";         // "v_ffbl_b32_sdwa"
    6906           0 :               return;
    6907             :             }
    6908             :             break;
    6909             :           case 'm':      // 1 string to match.
    6910           6 :             if (memcmp(Mnemonic.data()+4, "ac_f32_sdwa", 11) != 0)
    6911             :               break;
    6912           0 :             Mnemonic = "v_fmac_f32";   // "v_fmac_f32_sdwa"
    6913           0 :             return;
    6914             :           }
    6915             :           break;
    6916             :         case 'l':        // 2 strings to match.
    6917           4 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    6918             :             break;
    6919             :           switch (Mnemonic[5]) {
    6920             :           default: break;
    6921             :           case 'l':      // 1 string to match.
    6922           0 :             if (memcmp(Mnemonic.data()+6, "_b32_sdwa", 9) != 0)
    6923             :               break;
    6924           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_lshl_b32_sdwa"
    6925           0 :               Mnemonic = "v_lshl_b32";
    6926             :             return;
    6927             :           case 'r':      // 1 string to match.
    6928           0 :             if (memcmp(Mnemonic.data()+6, "_b32_sdwa", 9) != 0)
    6929             :               break;
    6930           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_lshr_b32_sdwa"
    6931           0 :               Mnemonic = "v_lshr_b32";
    6932             :             return;
    6933             :           }
    6934             :           break;
    6935         105 :         case 's':        // 3 strings to match.
    6936             :           switch (Mnemonic[3]) {
    6937             :           default: break;
    6938             :           case 'q':      // 2 strings to match.
    6939           0 :             if (memcmp(Mnemonic.data()+4, "rt_f", 4) != 0)
    6940             :               break;
    6941             :             switch (Mnemonic[8]) {
    6942             :             default: break;
    6943             :             case '1':    // 1 string to match.
    6944           0 :               if (memcmp(Mnemonic.data()+9, "6_sdwa", 6) != 0)
    6945             :                 break;
    6946           0 :               Mnemonic = "v_sqrt_f16";         // "v_sqrt_f16_sdwa"
    6947           0 :               return;
    6948             :             case '3':    // 1 string to match.
    6949           0 :               if (memcmp(Mnemonic.data()+9, "2_sdwa", 6) != 0)
    6950             :                 break;
    6951           0 :               Mnemonic = "v_sqrt_f32";         // "v_sqrt_f32_sdwa"
    6952           0 :               return;
    6953             :             }
    6954             :             break;
    6955             :           case 'u':      // 1 string to match.
    6956          92 :             if (memcmp(Mnemonic.data()+4, "bb_u32_sdwa", 11) != 0)
    6957             :               break;
    6958           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subb_u32_sdwa"
    6959           0 :               Mnemonic = "v_subb_u32";
    6960             :             return;
    6961             :           }
    6962             :           break;
    6963             :         case 'x':        // 1 string to match.
    6964           0 :           if (memcmp(Mnemonic.data()+3, "nor_b32_sdwa", 12) != 0)
    6965             :             break;
    6966           0 :           Mnemonic = "v_xnor_b32";     // "v_xnor_b32_sdwa"
    6967           0 :           return;
    6968             :         }
    6969             :         break;
    6970             :       case 16:   // 24 strings to match.
    6971        1845 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6972             :           break;
    6973             :         switch (Mnemonic[2]) {
    6974             :         default: break;
    6975             :         case 'b':        // 1 string to match.
    6976           0 :           if (memcmp(Mnemonic.data()+3, "frev_b32_sdwa", 13) != 0)
    6977             :             break;
    6978           0 :           Mnemonic = "v_bfrev_b32";    // "v_bfrev_b32_sdwa"
    6979           0 :           return;
    6980             :         case 'c':        // 14 strings to match.
    6981         747 :           if (memcmp(Mnemonic.data()+3, "mp_", 3) != 0)
    6982             :             break;
    6983             :           switch (Mnemonic[6]) {
    6984             :           default: break;
    6985           0 :           case 'f':      // 6 strings to match.
    6986           0 :             if (Mnemonic[7] != '_')
    6987             :               break;
    6988             :             switch (Mnemonic[8]) {
    6989             :             default: break;
    6990           0 :             case 'f':    // 2 strings to match.
    6991             :               switch (Mnemonic[9]) {
    6992             :               default: break;
    6993             :               case '1':  // 1 string to match.
    6994           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    6995             :                   break;
    6996           0 :                 Mnemonic = "v_cmp_f_f16";      // "v_cmp_f_f16_sdwa"
    6997           0 :                 return;
    6998             :               case '3':  // 1 string to match.
    6999           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7000             :                   break;
    7001           0 :                 Mnemonic = "v_cmp_f_f32";      // "v_cmp_f_f32_sdwa"
    7002           0 :                 return;
    7003             :               }
    7004             :               break;
    7005           0 :             case 'i':    // 2 strings to match.
    7006             :               switch (Mnemonic[9]) {
    7007             :               default: break;
    7008             :               case '1':  // 1 string to match.
    7009           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7010             :                   break;
    7011           0 :                 Mnemonic = "v_cmp_f_i16";      // "v_cmp_f_i16_sdwa"
    7012           0 :                 return;
    7013             :               case '3':  // 1 string to match.
    7014           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7015             :                   break;
    7016           0 :                 Mnemonic = "v_cmp_f_i32";      // "v_cmp_f_i32_sdwa"
    7017           0 :                 return;
    7018             :               }
    7019             :               break;
    7020           0 :             case 'u':    // 2 strings to match.
    7021             :               switch (Mnemonic[9]) {
    7022             :               default: break;
    7023             :               case '1':  // 1 string to match.
    7024           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7025             :                   break;
    7026           0 :                 Mnemonic = "v_cmp_f_u16";      // "v_cmp_f_u16_sdwa"
    7027           0 :                 return;
    7028             :               case '3':  // 1 string to match.
    7029           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7030             :                   break;
    7031           0 :                 Mnemonic = "v_cmp_f_u32";      // "v_cmp_f_u32_sdwa"
    7032           0 :                 return;
    7033             :               }
    7034             :               break;
    7035             :             }
    7036             :             break;
    7037             :           case 'o':      // 2 strings to match.
    7038           0 :             if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
    7039             :               break;
    7040             :             switch (Mnemonic[9]) {
    7041             :             default: break;
    7042             :             case '1':    // 1 string to match.
    7043           0 :               if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7044             :                 break;
    7045           0 :               Mnemonic = "v_cmp_o_f16";        // "v_cmp_o_f16_sdwa"
    7046           0 :               return;
    7047             :             case '3':    // 1 string to match.
    7048           0 :               if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7049             :                 break;
    7050           0 :               Mnemonic = "v_cmp_o_f32";        // "v_cmp_o_f32_sdwa"
    7051           0 :               return;
    7052             :             }
    7053             :             break;
    7054           0 :           case 't':      // 4 strings to match.
    7055           0 :             if (Mnemonic[7] != '_')
    7056             :               break;
    7057             :             switch (Mnemonic[8]) {
    7058             :             default: break;
    7059           0 :             case 'i':    // 2 strings to match.
    7060             :               switch (Mnemonic[9]) {
    7061             :               default: break;
    7062             :               case '1':  // 1 string to match.
    7063           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7064             :                   break;
    7065           0 :                 Mnemonic = "v_cmp_t_i16";      // "v_cmp_t_i16_sdwa"
    7066           0 :                 return;
    7067             :               case '3':  // 1 string to match.
    7068           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7069             :                   break;
    7070           0 :                 Mnemonic = "v_cmp_t_i32";      // "v_cmp_t_i32_sdwa"
    7071           0 :                 return;
    7072             :               }
    7073             :               break;
    7074           0 :             case 'u':    // 2 strings to match.
    7075             :               switch (Mnemonic[9]) {
    7076             :               default: break;
    7077             :               case '1':  // 1 string to match.
    7078           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7079             :                   break;
    7080           0 :                 Mnemonic = "v_cmp_t_u16";      // "v_cmp_t_u16_sdwa"
    7081           0 :                 return;
    7082             :               case '3':  // 1 string to match.
    7083           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7084             :                   break;
    7085           0 :                 Mnemonic = "v_cmp_t_u32";      // "v_cmp_t_u32_sdwa"
    7086           0 :                 return;
    7087             :               }
    7088             :               break;
    7089             :             }
    7090             :             break;
    7091             :           case 'u':      // 2 strings to match.
    7092           0 :             if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
    7093             :               break;
    7094             :             switch (Mnemonic[9]) {
    7095             :             default: break;
    7096             :             case '1':    // 1 string to match.
    7097           0 :               if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7098             :                 break;
    7099           0 :               Mnemonic = "v_cmp_u_f16";        // "v_cmp_u_f16_sdwa"
    7100           0 :               return;
    7101             :             case '3':    // 1 string to match.
    7102           0 :               if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7103             :                 break;
    7104           0 :               Mnemonic = "v_cmp_u_f32";        // "v_cmp_u_f32_sdwa"
    7105           0 :               return;
    7106             :             }
    7107             :             break;
    7108             :           }
    7109             :           break;
    7110         227 :         case 'f':        // 4 strings to match.
    7111             :           switch (Mnemonic[3]) {
    7112             :           default: break;
    7113             :           case 'l':      // 2 strings to match.
    7114           0 :             if (memcmp(Mnemonic.data()+4, "oor_f", 5) != 0)
    7115             :               break;
    7116             :             switch (Mnemonic[9]) {
    7117             :             default: break;
    7118             :             case '1':    // 1 string to match.
    7119           0 :               if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7120             :                 break;
    7121           0 :               Mnemonic = "v_floor_f16";        // "v_floor_f16_sdwa"
    7122           0 :               return;
    7123             :             case '3':    // 1 string to match.
    7124           0 :               if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7125             :                 break;
    7126           0 :               Mnemonic = "v_floor_f32";        // "v_floor_f32_sdwa"
    7127           0 :               return;
    7128             :             }
    7129             :             break;
    7130             :           case 'r':      // 2 strings to match.
    7131         221 :             if (memcmp(Mnemonic.data()+4, "act_f", 5) != 0)
    7132             :               break;
    7133             :             switch (Mnemonic[9]) {
    7134             :             default: break;
    7135             :             case '1':    // 1 string to match.
    7136           0 :               if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7137             :                 break;
    7138           0 :               Mnemonic = "v_fract_f16";        // "v_fract_f16_sdwa"
    7139           0 :               return;
    7140             :             case '3':    // 1 string to match.
    7141           0 :               if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7142             :                 break;
    7143           0 :               Mnemonic = "v_fract_f32";        // "v_fract_f32_sdwa"
    7144           0 :               return;
    7145             :             }
    7146             :             break;
    7147             :           }
    7148             :           break;
    7149             :         case 'l':        // 1 string to match.
    7150         114 :           if (memcmp(Mnemonic.data()+3, "dexp_f16_sdwa", 13) != 0)
    7151             :             break;
    7152           0 :           Mnemonic = "v_ldexp_f16";    // "v_ldexp_f16_sdwa"
    7153           0 :           return;
    7154             :         case 'r':        // 2 strings to match.
    7155           4 :           if (memcmp(Mnemonic.data()+3, "ndne_f", 6) != 0)
    7156             :             break;
    7157             :           switch (Mnemonic[9]) {
    7158             :           default: break;
    7159             :           case '1':      // 1 string to match.
    7160           0 :             if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7161             :               break;
    7162           0 :             Mnemonic = "v_rndne_f16";  // "v_rndne_f16_sdwa"
    7163           0 :             return;
    7164             :           case '3':      // 1 string to match.
    7165           0 :             if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7166             :               break;
    7167           0 :             Mnemonic = "v_rndne_f32";  // "v_rndne_f32_sdwa"
    7168           0 :             return;
    7169             :           }
    7170             :           break;
    7171             :         case 't':        // 2 strings to match.
    7172           0 :           if (memcmp(Mnemonic.data()+3, "runc_f", 6) != 0)
    7173             :             break;
    7174             :           switch (Mnemonic[9]) {
    7175             :           default: break;
    7176             :           case '1':      // 1 string to match.
    7177           0 :             if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7178             :               break;
    7179           0 :             Mnemonic = "v_trunc_f16";  // "v_trunc_f16_sdwa"
    7180           0 :             return;
    7181             :           case '3':      // 1 string to match.
    7182           0 :             if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7183             :               break;
    7184           0 :             Mnemonic = "v_trunc_f32";  // "v_trunc_f32_sdwa"
    7185           0 :             return;
    7186             :           }
    7187             :           break;
    7188             :         }
    7189             :         break;
    7190             :       case 17:   // 59 strings to match.
    7191         356 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    7192             :           break;
    7193             :         switch (Mnemonic[2]) {
    7194             :         default: break;
    7195             :         case 'c':        // 53 strings to match.
    7196         206 :           if (memcmp(Mnemonic.data()+3, "mp", 2) != 0)
    7197             :             break;
    7198             :           switch (Mnemonic[5]) {
    7199             :           default: break;
    7200           0 :           case '_':      // 36 strings to match.
    7201             :             switch (Mnemonic[6]) {
    7202             :             default: break;
    7203             :             case 'e':    // 6 strings to match.
    7204           0 :               if (memcmp(Mnemonic.data()+7, "q_", 2) != 0)
    7205             :                 break;
    7206             :               switch (Mnemonic[9]) {
    7207             :               default: break;
    7208           0 :               case 'f':  // 2 strings to match.
    7209             :                 switch (Mnemonic[10]) {
    7210             :                 default: break;
    7211             :                 case '1':        // 1 string to match.
    7212           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7213             :                     break;
    7214           0 :                   Mnemonic = "v_cmp_eq_f16";   // "v_cmp_eq_f16_sdwa"
    7215           0 :                   return;
    7216             :                 case '3':        // 1 string to match.
    7217           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7218             :                     break;
    7219           0 :                   Mnemonic = "v_cmp_eq_f32";   // "v_cmp_eq_f32_sdwa"
    7220           0 :                   return;
    7221             :                 }
    7222             :                 break;
    7223           0 :               case 'i':  // 2 strings to match.
    7224             :                 switch (Mnemonic[10]) {
    7225             :                 default: break;
    7226             :                 case '1':        // 1 string to match.
    7227           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7228             :                     break;
    7229           0 :                   Mnemonic = "v_cmp_eq_i16";   // "v_cmp_eq_i16_sdwa"
    7230           0 :                   return;
    7231             :                 case '3':        // 1 string to match.
    7232           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7233             :                     break;
    7234           0 :                   Mnemonic = "v_cmp_eq_i32";   // "v_cmp_eq_i32_sdwa"
    7235           0 :                   return;
    7236             :                 }
    7237             :                 break;
    7238           0 :               case 'u':  // 2 strings to match.
    7239             :                 switch (Mnemonic[10]) {
    7240             :                 default: break;
    7241             :                 case '1':        // 1 string to match.
    7242           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7243             :                     break;
    7244           0 :                   Mnemonic = "v_cmp_eq_u16";   // "v_cmp_eq_u16_sdwa"
    7245           0 :                   return;
    7246             :                 case '3':        // 1 string to match.
    7247           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7248             :                     break;
    7249           0 :                   Mnemonic = "v_cmp_eq_u32";   // "v_cmp_eq_u32_sdwa"
    7250           0 :                   return;
    7251             :                 }
    7252             :                 break;
    7253             :               }
    7254             :               break;
    7255           0 :             case 'g':    // 12 strings to match.
    7256             :               switch (Mnemonic[7]) {
    7257             :               default: break;
    7258           0 :               case 'e':  // 6 strings to match.
    7259           0 :                 if (Mnemonic[8] != '_')
    7260             :                   break;
    7261             :                 switch (Mnemonic[9]) {
    7262             :                 default: break;
    7263           0 :                 case 'f':        // 2 strings to match.
    7264             :                   switch (Mnemonic[10]) {
    7265             :                   default: break;
    7266             :                   case '1':      // 1 string to match.
    7267           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7268             :                       break;
    7269           0 :                     Mnemonic = "v_cmp_ge_f16";         // "v_cmp_ge_f16_sdwa"
    7270           0 :                     return;
    7271             :                   case '3':      // 1 string to match.
    7272           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7273             :                       break;
    7274           0 :                     Mnemonic = "v_cmp_ge_f32";         // "v_cmp_ge_f32_sdwa"
    7275           0 :                     return;
    7276             :                   }
    7277             :                   break;
    7278           0 :                 case 'i':        // 2 strings to match.
    7279             :                   switch (Mnemonic[10]) {
    7280             :                   default: break;
    7281             :                   case '1':      // 1 string to match.
    7282           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7283             :                       break;
    7284           0 :                     Mnemonic = "v_cmp_ge_i16";         // "v_cmp_ge_i16_sdwa"
    7285           0 :                     return;
    7286             :                   case '3':      // 1 string to match.
    7287           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7288             :                       break;
    7289           0 :                     Mnemonic = "v_cmp_ge_i32";         // "v_cmp_ge_i32_sdwa"
    7290           0 :                     return;
    7291             :                   }
    7292             :                   break;
    7293           0 :                 case 'u':        // 2 strings to match.
    7294             :                   switch (Mnemonic[10]) {
    7295             :                   default: break;
    7296             :                   case '1':      // 1 string to match.
    7297           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7298             :                       break;
    7299           0 :                     Mnemonic = "v_cmp_ge_u16";         // "v_cmp_ge_u16_sdwa"
    7300           0 :                     return;
    7301             :                   case '3':      // 1 string to match.
    7302           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7303             :                       break;
    7304           0 :                     Mnemonic = "v_cmp_ge_u32";         // "v_cmp_ge_u32_sdwa"
    7305           0 :                     return;
    7306             :                   }
    7307             :                   break;
    7308             :                 }
    7309             :                 break;
    7310           0 :               case 't':  // 6 strings to match.
    7311           0 :                 if (Mnemonic[8] != '_')
    7312             :                   break;
    7313             :                 switch (Mnemonic[9]) {
    7314             :                 default: break;
    7315           0 :                 case 'f':        // 2 strings to match.
    7316             :                   switch (Mnemonic[10]) {
    7317             :                   default: break;
    7318             :                   case '1':      // 1 string to match.
    7319           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7320             :                       break;
    7321           0 :                     Mnemonic = "v_cmp_gt_f16";         // "v_cmp_gt_f16_sdwa"
    7322           0 :                     return;
    7323             :                   case '3':      // 1 string to match.
    7324           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7325             :                       break;
    7326           0 :                     Mnemonic = "v_cmp_gt_f32";         // "v_cmp_gt_f32_sdwa"
    7327           0 :                     return;
    7328             :                   }
    7329             :                   break;
    7330           0 :                 case 'i':        // 2 strings to match.
    7331             :                   switch (Mnemonic[10]) {
    7332             :                   default: break;
    7333             :                   case '1':      // 1 string to match.
    7334           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7335             :                       break;
    7336           0 :                     Mnemonic = "v_cmp_gt_i16";         // "v_cmp_gt_i16_sdwa"
    7337           0 :                     return;
    7338             :                   case '3':      // 1 string to match.
    7339           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7340             :                       break;
    7341           0 :                     Mnemonic = "v_cmp_gt_i32";         // "v_cmp_gt_i32_sdwa"
    7342           0 :                     return;
    7343             :                   }
    7344             :                   break;
    7345           0 :                 case 'u':        // 2 strings to match.
    7346             :                   switch (Mnemonic[10]) {
    7347             :                   default: break;
    7348             :                   case '1':      // 1 string to match.
    7349           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7350             :                       break;
    7351           0 :                     Mnemonic = "v_cmp_gt_u16";         // "v_cmp_gt_u16_sdwa"
    7352           0 :                     return;
    7353             :                   case '3':      // 1 string to match.
    7354           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7355             :                       break;
    7356           0 :                     Mnemonic = "v_cmp_gt_u32";         // "v_cmp_gt_u32_sdwa"
    7357           0 :                     return;
    7358             :                   }
    7359             :                   break;
    7360             :                 }
    7361             :                 break;
    7362             :               }
    7363             :               break;
    7364           0 :             case 'l':    // 14 strings to match.
    7365             :               switch (Mnemonic[7]) {
    7366             :               default: break;
    7367           0 :               case 'e':  // 6 strings to match.
    7368           0 :                 if (Mnemonic[8] != '_')
    7369             :                   break;
    7370             :                 switch (Mnemonic[9]) {
    7371             :                 default: break;
    7372           0 :                 case 'f':        // 2 strings to match.
    7373             :                   switch (Mnemonic[10]) {
    7374             :                   default: break;
    7375             :                   case '1':      // 1 string to match.
    7376           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7377             :                       break;
    7378           0 :                     Mnemonic = "v_cmp_le_f16";         // "v_cmp_le_f16_sdwa"
    7379           0 :                     return;
    7380             :                   case '3':      // 1 string to match.
    7381           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7382             :                       break;
    7383           0 :                     Mnemonic = "v_cmp_le_f32";         // "v_cmp_le_f32_sdwa"
    7384           0 :                     return;
    7385             :                   }
    7386             :                   break;
    7387           0 :                 case 'i':        // 2 strings to match.
    7388             :                   switch (Mnemonic[10]) {
    7389             :                   default: break;
    7390             :                   case '1':      // 1 string to match.
    7391           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7392             :                       break;
    7393           0 :                     Mnemonic = "v_cmp_le_i16";         // "v_cmp_le_i16_sdwa"
    7394           0 :                     return;
    7395             :                   case '3':      // 1 string to match.
    7396           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7397             :                       break;
    7398           0 :                     Mnemonic = "v_cmp_le_i32";         // "v_cmp_le_i32_sdwa"
    7399           0 :                     return;
    7400             :                   }
    7401             :                   break;
    7402           0 :                 case 'u':        // 2 strings to match.
    7403             :                   switch (Mnemonic[10]) {
    7404             :                   default: break;
    7405             :                   case '1':      // 1 string to match.
    7406           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7407             :                       break;
    7408           0 :                     Mnemonic = "v_cmp_le_u16";         // "v_cmp_le_u16_sdwa"
    7409           0 :                     return;
    7410             :                   case '3':      // 1 string to match.
    7411           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7412             :                       break;
    7413           0 :                     Mnemonic = "v_cmp_le_u32";         // "v_cmp_le_u32_sdwa"
    7414           0 :                     return;
    7415             :                   }
    7416             :                   break;
    7417             :                 }
    7418             :                 break;
    7419             :               case 'g':  // 2 strings to match.
    7420           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    7421             :                   break;
    7422             :                 switch (Mnemonic[10]) {
    7423             :                 default: break;
    7424             :                 case '1':        // 1 string to match.
    7425           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7426             :                     break;
    7427           0 :                   Mnemonic = "v_cmp_lg_f16";   // "v_cmp_lg_f16_sdwa"
    7428           0 :                   return;
    7429             :                 case '3':        // 1 string to match.
    7430           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7431             :                     break;
    7432           0 :                   Mnemonic = "v_cmp_lg_f32";   // "v_cmp_lg_f32_sdwa"
    7433           0 :                   return;
    7434             :                 }
    7435             :                 break;
    7436           0 :               case 't':  // 6 strings to match.
    7437           0 :                 if (Mnemonic[8] != '_')
    7438             :                   break;
    7439             :                 switch (Mnemonic[9]) {
    7440             :                 default: break;
    7441           0 :                 case 'f':        // 2 strings to match.
    7442             :                   switch (Mnemonic[10]) {
    7443             :                   default: break;
    7444             :                   case '1':      // 1 string to match.
    7445           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7446             :                       break;
    7447           0 :                     Mnemonic = "v_cmp_lt_f16";         // "v_cmp_lt_f16_sdwa"
    7448           0 :                     return;
    7449             :                   case '3':      // 1 string to match.
    7450           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7451             :                       break;
    7452           0 :                     Mnemonic = "v_cmp_lt_f32";         // "v_cmp_lt_f32_sdwa"
    7453           0 :                     return;
    7454             :                   }
    7455             :                   break;
    7456           0 :                 case 'i':        // 2 strings to match.
    7457             :                   switch (Mnemonic[10]) {
    7458             :                   default: break;
    7459             :                   case '1':      // 1 string to match.
    7460           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7461             :                       break;
    7462           0 :                     Mnemonic = "v_cmp_lt_i16";         // "v_cmp_lt_i16_sdwa"
    7463           0 :                     return;
    7464             :                   case '3':      // 1 string to match.
    7465           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7466             :                       break;
    7467           0 :                     Mnemonic = "v_cmp_lt_i32";         // "v_cmp_lt_i32_sdwa"
    7468           0 :                     return;
    7469             :                   }
    7470             :                   break;
    7471           0 :                 case 'u':        // 2 strings to match.
    7472             :                   switch (Mnemonic[10]) {
    7473             :                   default: break;
    7474             :                   case '1':      // 1 string to match.
    7475           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7476             :                       break;
    7477           0 :                     Mnemonic = "v_cmp_lt_u16";         // "v_cmp_lt_u16_sdwa"
    7478           0 :                     return;
    7479             :                   case '3':      // 1 string to match.
    7480           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7481             :                       break;
    7482           0 :                     Mnemonic = "v_cmp_lt_u32";         // "v_cmp_lt_u32_sdwa"
    7483           0 :                     return;
    7484             :                   }
    7485             :                   break;
    7486             :                 }
    7487             :                 break;
    7488             :               }
    7489             :               break;
    7490             :             case 'n':    // 4 strings to match.
    7491           0 :               if (memcmp(Mnemonic.data()+7, "e_", 2) != 0)
    7492             :                 break;
    7493             :               switch (Mnemonic[9]) {
    7494             :               default: break;
    7495           0 :               case 'i':  // 2 strings to match.
    7496             :                 switch (Mnemonic[10]) {
    7497             :                 default: break;
    7498             :                 case '1':        // 1 string to match.
    7499           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7500             :                     break;
    7501           0 :                   Mnemonic = "v_cmp_ne_i16";   // "v_cmp_ne_i16_sdwa"
    7502           0 :                   return;
    7503             :                 case '3':        // 1 string to match.
    7504           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7505             :                     break;
    7506           0 :                   Mnemonic = "v_cmp_ne_i32";   // "v_cmp_ne_i32_sdwa"
    7507           0 :                   return;
    7508             :                 }
    7509             :                 break;
    7510           0 :               case 'u':  // 2 strings to match.
    7511             :                 switch (Mnemonic[10]) {
    7512             :                 default: break;
    7513             :                 case '1':        // 1 string to match.
    7514           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7515             :                     break;
    7516           0 :                   Mnemonic = "v_cmp_ne_u16";   // "v_cmp_ne_u16_sdwa"
    7517           0 :                   return;
    7518             :                 case '3':        // 1 string to match.
    7519           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7520             :                     break;
    7521           0 :                   Mnemonic = "v_cmp_ne_u32";   // "v_cmp_ne_u32_sdwa"
    7522           0 :                   return;
    7523             :                 }
    7524             :                 break;
    7525             :               }
    7526             :               break;
    7527             :             }
    7528             :             break;
    7529           0 :           case 's':      // 3 strings to match.
    7530           0 :             if (Mnemonic[6] != '_')
    7531             :               break;
    7532             :             switch (Mnemonic[7]) {
    7533             :             default: break;
    7534             :             case 'f':    // 1 string to match.
    7535           0 :               if (memcmp(Mnemonic.data()+8, "_f32_sdwa", 9) != 0)
    7536             :                 break;
    7537           0 :               Mnemonic = "v_cmps_f_f32";       // "v_cmps_f_f32_sdwa"
    7538           0 :               return;
    7539             :             case 'o':    // 1 string to match.
    7540           0 :               if (memcmp(Mnemonic.data()+8, "_f32_sdwa", 9) != 0)
    7541             :                 break;
    7542           0 :               Mnemonic = "v_cmps_o_f32";       // "v_cmps_o_f32_sdwa"
    7543           0 :               return;
    7544             :             case 'u':    // 1 string to match.
    7545           0 :               if (memcmp(Mnemonic.data()+8, "_f32_sdwa", 9) != 0)
    7546             :                 break;
    7547           0 :               Mnemonic = "v_cmps_u_f32";       // "v_cmps_u_f32_sdwa"
    7548           0 :               return;
    7549             :             }
    7550             :             break;
    7551           0 :           case 'x':      // 14 strings to match.
    7552           0 :             if (Mnemonic[6] != '_')
    7553             :               break;
    7554             :             switch (Mnemonic[7]) {
    7555             :             default: break;
    7556           0 :             case 'f':    // 6 strings to match.
    7557           0 :               if (Mnemonic[8] != '_')
    7558             :                 break;
    7559             :               switch (Mnemonic[9]) {
    7560             :               default: break;
    7561           0 :               case 'f':  // 2 strings to match.
    7562             :                 switch (Mnemonic[10]) {
    7563             :                 default: break;
    7564             :                 case '1':        // 1 string to match.
    7565           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7566             :                     break;
    7567           0 :                   Mnemonic = "v_cmpx_f_f16";   // "v_cmpx_f_f16_sdwa"
    7568           0 :                   return;
    7569             :                 case '3':        // 1 string to match.
    7570           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7571             :                     break;
    7572           0 :                   Mnemonic = "v_cmpx_f_f32";   // "v_cmpx_f_f32_sdwa"
    7573           0 :                   return;
    7574             :                 }
    7575             :                 break;
    7576           0 :               case 'i':  // 2 strings to match.
    7577             :                 switch (Mnemonic[10]) {
    7578             :                 default: break;
    7579             :                 case '1':        // 1 string to match.
    7580           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7581             :                     break;
    7582           0 :                   Mnemonic = "v_cmpx_f_i16";   // "v_cmpx_f_i16_sdwa"
    7583           0 :                   return;
    7584             :                 case '3':        // 1 string to match.
    7585           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7586             :                     break;
    7587           0 :                   Mnemonic = "v_cmpx_f_i32";   // "v_cmpx_f_i32_sdwa"
    7588           0 :                   return;
    7589             :                 }
    7590             :                 break;
    7591           0 :               case 'u':  // 2 strings to match.
    7592             :                 switch (Mnemonic[10]) {
    7593             :                 default: break;
    7594             :                 case '1':        // 1 string to match.
    7595           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7596             :                     break;
    7597           0 :                   Mnemonic = "v_cmpx_f_u16";   // "v_cmpx_f_u16_sdwa"
    7598           0 :                   return;
    7599             :                 case '3':        // 1 string to match.
    7600           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7601             :                     break;
    7602           0 :                   Mnemonic = "v_cmpx_f_u32";   // "v_cmpx_f_u32_sdwa"
    7603           0 :                   return;
    7604             :                 }
    7605             :                 break;
    7606             :               }
    7607             :               break;
    7608             :             case 'o':    // 2 strings to match.
    7609           0 :               if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    7610             :                 break;
    7611             :               switch (Mnemonic[10]) {
    7612             :               default: break;
    7613             :               case '1':  // 1 string to match.
    7614           0 :                 if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7615             :                   break;
    7616           0 :                 Mnemonic = "v_cmpx_o_f16";     // "v_cmpx_o_f16_sdwa"
    7617           0 :                 return;
    7618             :               case '3':  // 1 string to match.
    7619           0 :                 if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7620             :                   break;
    7621           0 :                 Mnemonic = "v_cmpx_o_f32";     // "v_cmpx_o_f32_sdwa"
    7622           0 :                 return;
    7623             :               }
    7624             :               break;
    7625           0 :             case 't':    // 4 strings to match.
    7626           0 :               if (Mnemonic[8] != '_')
    7627             :                 break;
    7628             :               switch (Mnemonic[9]) {
    7629             :               default: break;
    7630           0 :               case 'i':  // 2 strings to match.
    7631             :                 switch (Mnemonic[10]) {
    7632             :                 default: break;
    7633             :                 case '1':        // 1 string to match.
    7634           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7635             :                     break;
    7636           0 :                   Mnemonic = "v_cmpx_t_i16";   // "v_cmpx_t_i16_sdwa"
    7637           0 :                   return;
    7638             :                 case '3':        // 1 string to match.
    7639           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7640             :                     break;
    7641           0 :                   Mnemonic = "v_cmpx_t_i32";   // "v_cmpx_t_i32_sdwa"
    7642           0 :                   return;
    7643             :                 }
    7644             :                 break;
    7645           0 :               case 'u':  // 2 strings to match.
    7646             :                 switch (Mnemonic[10]) {
    7647             :                 default: break;
    7648             :                 case '1':        // 1 string to match.
    7649           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7650             :                     break;
    7651           0 :                   Mnemonic = "v_cmpx_t_u16";   // "v_cmpx_t_u16_sdwa"
    7652           0 :                   return;
    7653             :                 case '3':        // 1 string to match.
    7654           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7655             :                     break;
    7656           0 :                   Mnemonic = "v_cmpx_t_u32";   // "v_cmpx_t_u32_sdwa"
    7657           0 :                   return;
    7658             :                 }
    7659             :                 break;
    7660             :               }
    7661             :               break;
    7662             :             case 'u':    // 2 strings to match.
    7663           0 :               if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    7664             :                 break;
    7665             :               switch (Mnemonic[10]) {
    7666             :               default: break;
    7667             :               case '1':  // 1 string to match.
    7668           0 :                 if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7669             :                   break;
    7670           0 :                 Mnemonic = "v_cmpx_u_f16";     // "v_cmpx_u_f16_sdwa"
    7671           0 :                 return;
    7672             :               case '3':  // 1 string to match.
    7673           0 :                 if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7674             :                   break;
    7675           0 :                 Mnemonic = "v_cmpx_u_f32";     // "v_cmpx_u_f32_sdwa"
    7676           0 :                 return;
    7677             :               }
    7678             :               break;
    7679             :             }
    7680             :             break;
    7681             :           }
    7682             :           break;
    7683             :         case 'm':        // 1 string to match.
    7684           0 :           if (memcmp(Mnemonic.data()+3, "ul_lo_u16_sdwa", 14) != 0)
    7685             :             break;
    7686           0 :           Mnemonic = "v_mul_lo_u16";   // "v_mul_lo_u16_sdwa"
    7687           0 :           return;
    7688             :         case 's':        // 5 strings to match.
    7689           0 :           if (memcmp(Mnemonic.data()+3, "ubrev_", 6) != 0)
    7690             :             break;
    7691             :           switch (Mnemonic[9]) {
    7692             :           default: break;
    7693           0 :           case 'f':      // 2 strings to match.
    7694             :             switch (Mnemonic[10]) {
    7695             :             default: break;
    7696             :             case '1':    // 1 string to match.
    7697           0 :               if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7698             :                 break;
    7699           0 :               Mnemonic = "v_subrev_f16";       // "v_subrev_f16_sdwa"
    7700           0 :               return;
    7701             :             case '3':    // 1 string to match.
    7702           0 :               if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7703             :                 break;
    7704           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_f32_sdwa"
    7705           0 :                 Mnemonic = "v_subrev_f32";
    7706             :               return;
    7707             :             }
    7708             :             break;
    7709             :           case 'i':      // 1 string to match.
    7710           0 :             if (memcmp(Mnemonic.data()+10, "32_sdwa", 7) != 0)
    7711             :               break;
    7712           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subrev_i32_sdwa"
    7713           0 :               Mnemonic = "v_subrev_i32";
    7714             :             return;
    7715           0 :           case 'u':      // 2 strings to match.
    7716             :             switch (Mnemonic[10]) {
    7717             :             default: break;
    7718             :             case '1':    // 1 string to match.
    7719           0 :               if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7720             :                 break;
    7721           0 :               Mnemonic = "v_subrev_u16";       // "v_subrev_u16_sdwa"
    7722           0 :               return;
    7723             :             case '3':    // 1 string to match.
    7724           0 :               if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7725             :                 break;
    7726           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_u32_sdwa"
    7727           0 :                 Mnemonic = "v_subrev_u32";
    7728             :               return;
    7729             :             }
    7730             :             break;
    7731             :           }
    7732             :           break;
    7733             :         }
    7734             :         break;
    7735             :       case 18:   // 80 strings to match.
    7736         143 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    7737             :           break;
    7738             :         switch (Mnemonic[2]) {
    7739             :         default: break;
    7740             :         case 'a':        // 2 strings to match.
    7741           0 :           if (memcmp(Mnemonic.data()+3, "shrrev_i", 8) != 0)
    7742             :             break;
    7743             :           switch (Mnemonic[11]) {
    7744             :           default: break;
    7745             :           case '1':      // 1 string to match.
    7746           0 :             if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7747             :               break;
    7748           0 :             Mnemonic = "v_ashrrev_i16";        // "v_ashrrev_i16_sdwa"
    7749           0 :             return;
    7750             :           case '3':      // 1 string to match.
    7751           0 :             if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7752             :               break;
    7753           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_ashrrev_i32_sdwa"
    7754           0 :               Mnemonic = "v_ashrrev_i32";
    7755             :             return;
    7756             :           }
    7757             :           break;
    7758          20 :         case 'c':        // 70 strings to match.
    7759             :           switch (Mnemonic[3]) {
    7760             :           default: break;
    7761           0 :           case 'm':      // 59 strings to match.
    7762           0 :             if (Mnemonic[4] != 'p')
    7763             :               break;
    7764             :             switch (Mnemonic[5]) {
    7765             :             default: break;
    7766           0 :             case '_':    // 14 strings to match.
    7767             :               switch (Mnemonic[6]) {
    7768             :               default: break;
    7769           0 :               case 'n':  // 12 strings to match.
    7770             :                 switch (Mnemonic[7]) {
    7771             :                 default: break;
    7772             :                 case 'e':        // 2 strings to match.
    7773           0 :                   if (memcmp(Mnemonic.data()+8, "q_f", 3) != 0)
    7774             :                     break;
    7775             :                   switch (Mnemonic[11]) {
    7776             :                   default: break;
    7777             :                   case '1':      // 1 string to match.
    7778           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7779             :                       break;
    7780           0 :                     Mnemonic = "v_cmp_neq_f16";        // "v_cmp_neq_f16_sdwa"
    7781           0 :                     return;
    7782             :                   case '3':      // 1 string to match.
    7783           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7784             :                       break;
    7785           0 :                     Mnemonic = "v_cmp_neq_f32";        // "v_cmp_neq_f32_sdwa"
    7786           0 :                     return;
    7787             :                   }
    7788             :                   break;
    7789           0 :                 case 'g':        // 4 strings to match.
    7790             :                   switch (Mnemonic[8]) {
    7791             :                   default: break;
    7792             :                   case 'e':      // 2 strings to match.
    7793           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7794             :                       break;
    7795             :                     switch (Mnemonic[11]) {
    7796             :                     default: break;
    7797             :                     case '1':    // 1 string to match.
    7798           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7799             :                         break;
    7800           0 :                       Mnemonic = "v_cmp_nge_f16";      // "v_cmp_nge_f16_sdwa"
    7801           0 :                       return;
    7802             :                     case '3':    // 1 string to match.
    7803           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7804             :                         break;
    7805           0 :                       Mnemonic = "v_cmp_nge_f32";      // "v_cmp_nge_f32_sdwa"
    7806           0 :                       return;
    7807             :                     }
    7808             :                     break;
    7809             :                   case 't':      // 2 strings to match.
    7810           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7811             :                       break;
    7812             :                     switch (Mnemonic[11]) {
    7813             :                     default: break;
    7814             :                     case '1':    // 1 string to match.
    7815           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7816             :                         break;
    7817           0 :                       Mnemonic = "v_cmp_ngt_f16";      // "v_cmp_ngt_f16_sdwa"
    7818           0 :                       return;
    7819             :                     case '3':    // 1 string to match.
    7820           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7821             :                         break;
    7822           0 :                       Mnemonic = "v_cmp_ngt_f32";      // "v_cmp_ngt_f32_sdwa"
    7823           0 :                       return;
    7824             :                     }
    7825             :                     break;
    7826             :                   }
    7827             :                   break;
    7828           0 :                 case 'l':        // 6 strings to match.
    7829             :                   switch (Mnemonic[8]) {
    7830             :                   default: break;
    7831             :                   case 'e':      // 2 strings to match.
    7832           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7833             :                       break;
    7834             :                     switch (Mnemonic[11]) {
    7835             :                     default: break;
    7836             :                     case '1':    // 1 string to match.
    7837           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7838             :                         break;
    7839           0 :                       Mnemonic = "v_cmp_nle_f16";      // "v_cmp_nle_f16_sdwa"
    7840           0 :                       return;
    7841             :                     case '3':    // 1 string to match.
    7842           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7843             :                         break;
    7844           0 :                       Mnemonic = "v_cmp_nle_f32";      // "v_cmp_nle_f32_sdwa"
    7845           0 :                       return;
    7846             :                     }
    7847             :                     break;
    7848             :                   case 'g':      // 2 strings to match.
    7849           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7850             :                       break;
    7851             :                     switch (Mnemonic[11]) {
    7852             :                     default: break;
    7853             :                     case '1':    // 1 string to match.
    7854           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7855             :                         break;
    7856           0 :                       Mnemonic = "v_cmp_nlg_f16";      // "v_cmp_nlg_f16_sdwa"
    7857           0 :                       return;
    7858             :                     case '3':    // 1 string to match.
    7859           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7860             :                         break;
    7861           0 :                       Mnemonic = "v_cmp_nlg_f32";      // "v_cmp_nlg_f32_sdwa"
    7862           0 :                       return;
    7863             :                     }
    7864             :                     break;
    7865             :                   case 't':      // 2 strings to match.
    7866           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7867             :                       break;
    7868             :                     switch (Mnemonic[11]) {
    7869             :                     default: break;
    7870             :                     case '1':    // 1 string to match.
    7871           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7872             :                         break;
    7873           0 :                       Mnemonic = "v_cmp_nlt_f16";      // "v_cmp_nlt_f16_sdwa"
    7874           0 :                       return;
    7875             :                     case '3':    // 1 string to match.
    7876           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7877             :                         break;
    7878           0 :                       Mnemonic = "v_cmp_nlt_f32";      // "v_cmp_nlt_f32_sdwa"
    7879           0 :                       return;
    7880             :                     }
    7881             :                     break;
    7882             :                   }
    7883             :                   break;
    7884             :                 }
    7885             :                 break;
    7886             :               case 't':  // 2 strings to match.
    7887           0 :                 if (memcmp(Mnemonic.data()+7, "ru_f", 4) != 0)
    7888             :                   break;
    7889             :                 switch (Mnemonic[11]) {
    7890             :                 default: break;
    7891             :                 case '1':        // 1 string to match.
    7892           0 :                   if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7893             :                     break;
    7894           0 :                   Mnemonic = "v_cmp_tru_f16";  // "v_cmp_tru_f16_sdwa"
    7895           0 :                   return;
    7896             :                 case '3':        // 1 string to match.
    7897           0 :                   if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7898             :                     break;
    7899           0 :                   Mnemonic = "v_cmp_tru_f32";  // "v_cmp_tru_f32_sdwa"
    7900           0 :                   return;
    7901             :                 }
    7902             :                 break;
    7903             :               }
    7904             :               break;
    7905           0 :             case 's':    // 9 strings to match.
    7906             :               switch (Mnemonic[6]) {
    7907             :               default: break;
    7908           0 :               case '_':  // 6 strings to match.
    7909             :                 switch (Mnemonic[7]) {
    7910             :                 default: break;
    7911             :                 case 'e':        // 1 string to match.
    7912           0 :                   if (memcmp(Mnemonic.data()+8, "q_f32_sdwa", 10) != 0)
    7913             :                     break;
    7914           0 :                   Mnemonic = "v_cmps_eq_f32";  // "v_cmps_eq_f32_sdwa"
    7915           0 :                   return;
    7916           0 :                 case 'g':        // 2 strings to match.
    7917             :                   switch (Mnemonic[8]) {
    7918             :                   default: break;
    7919             :                   case 'e':      // 1 string to match.
    7920           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7921             :                       break;
    7922           0 :                     Mnemonic = "v_cmps_ge_f32";        // "v_cmps_ge_f32_sdwa"
    7923           0 :                     return;
    7924             :                   case 't':      // 1 string to match.
    7925           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7926             :                       break;
    7927           0 :                     Mnemonic = "v_cmps_gt_f32";        // "v_cmps_gt_f32_sdwa"
    7928           0 :                     return;
    7929             :                   }
    7930             :                   break;
    7931           0 :                 case 'l':        // 3 strings to match.
    7932             :                   switch (Mnemonic[8]) {
    7933             :                   default: break;
    7934             :                   case 'e':      // 1 string to match.
    7935           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7936             :                       break;
    7937           0 :                     Mnemonic = "v_cmps_le_f32";        // "v_cmps_le_f32_sdwa"
    7938           0 :                     return;
    7939             :                   case 'g':      // 1 string to match.
    7940           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7941             :                       break;
    7942           0 :                     Mnemonic = "v_cmps_lg_f32";        // "v_cmps_lg_f32_sdwa"
    7943           0 :                     return;
    7944             :                   case 't':      // 1 string to match.
    7945           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7946             :                       break;
    7947           0 :                     Mnemonic = "v_cmps_lt_f32";        // "v_cmps_lt_f32_sdwa"
    7948           0 :                     return;
    7949             :                   }
    7950             :                   break;
    7951             :                 }
    7952             :                 break;
    7953           0 :               case 'x':  // 3 strings to match.
    7954           0 :                 if (Mnemonic[7] != '_')
    7955             :                   break;
    7956             :                 switch (Mnemonic[8]) {
    7957             :                 default: break;
    7958             :                 case 'f':        // 1 string to match.
    7959           0 :                   if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7960             :                     break;
    7961           0 :                   Mnemonic = "v_cmpsx_f_f32";  // "v_cmpsx_f_f32_sdwa"
    7962           0 :                   return;
    7963             :                 case 'o':        // 1 string to match.
    7964           0 :                   if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7965             :                     break;
    7966           0 :                   Mnemonic = "v_cmpsx_o_f32";  // "v_cmpsx_o_f32_sdwa"
    7967           0 :                   return;
    7968             :                 case 'u':        // 1 string to match.
    7969           0 :                   if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7970             :                     break;
    7971           0 :                   Mnemonic = "v_cmpsx_u_f32";  // "v_cmpsx_u_f32_sdwa"
    7972           0 :                   return;
    7973             :                 }
    7974             :                 break;
    7975             :               }
    7976             :               break;
    7977           0 :             case 'x':    // 36 strings to match.
    7978           0 :               if (Mnemonic[6] != '_')
    7979             :                 break;
    7980             :               switch (Mnemonic[7]) {
    7981             :               default: break;
    7982             :               case 'e':  // 6 strings to match.
    7983           0 :                 if (memcmp(Mnemonic.data()+8, "q_", 2) != 0)
    7984             :                   break;
    7985             :                 switch (Mnemonic[10]) {
    7986             :                 default: break;
    7987           0 :                 case 'f':        // 2 strings to match.
    7988             :                   switch (Mnemonic[11]) {
    7989             :                   default: break;
    7990             :                   case '1':      // 1 string to match.
    7991           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7992             :                       break;
    7993           0 :                     Mnemonic = "v_cmpx_eq_f16";        // "v_cmpx_eq_f16_sdwa"
    7994           0 :                     return;
    7995             :                   case '3':      // 1 string to match.
    7996           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7997             :                       break;
    7998           0 :                     Mnemonic = "v_cmpx_eq_f32";        // "v_cmpx_eq_f32_sdwa"
    7999           0 :                     return;
    8000             :                   }
    8001             :                   break;
    8002           0 :                 case 'i':        // 2 strings to match.
    8003             :                   switch (Mnemonic[11]) {
    8004             :                   default: break;
    8005             :                   case '1':      // 1 string to match.
    8006           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8007             :                       break;
    8008           0 :                     Mnemonic = "v_cmpx_eq_i16";        // "v_cmpx_eq_i16_sdwa"
    8009           0 :                     return;
    8010             :                   case '3':      // 1 string to match.
    8011           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8012             :                       break;
    8013           0 :                     Mnemonic = "v_cmpx_eq_i32";        // "v_cmpx_eq_i32_sdwa"
    8014           0 :                     return;
    8015             :                   }
    8016             :                   break;
    8017           0 :                 case 'u':        // 2 strings to match.
    8018             :                   switch (Mnemonic[11]) {
    8019             :                   default: break;
    8020             :                   case '1':      // 1 string to match.
    8021           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8022             :                       break;
    8023           0 :                     Mnemonic = "v_cmpx_eq_u16";        // "v_cmpx_eq_u16_sdwa"
    8024           0 :                     return;
    8025             :                   case '3':      // 1 string to match.
    8026           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8027             :                       break;
    8028           0 :                     Mnemonic = "v_cmpx_eq_u32";        // "v_cmpx_eq_u32_sdwa"
    8029           0 :                     return;
    8030             :                   }
    8031             :                   break;
    8032             :                 }
    8033             :                 break;
    8034           0 :               case 'g':  // 12 strings to match.
    8035             :                 switch (Mnemonic[8]) {
    8036             :                 default: break;
    8037           0 :                 case 'e':        // 6 strings to match.
    8038           0 :                   if (Mnemonic[9] != '_')
    8039             :                     break;
    8040             :                   switch (Mnemonic[10]) {
    8041             :                   default: break;
    8042           0 :                   case 'f':      // 2 strings to match.
    8043             :                     switch (Mnemonic[11]) {
    8044             :                     default: break;
    8045             :                     case '1':    // 1 string to match.
    8046           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8047             :                         break;
    8048           0 :                       Mnemonic = "v_cmpx_ge_f16";      // "v_cmpx_ge_f16_sdwa"
    8049           0 :                       return;
    8050             :                     case '3':    // 1 string to match.
    8051           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8052             :                         break;
    8053           0 :                       Mnemonic = "v_cmpx_ge_f32";      // "v_cmpx_ge_f32_sdwa"
    8054           0 :                       return;
    8055             :                     }
    8056             :                     break;
    8057           0 :                   case 'i':      // 2 strings to match.
    8058             :                     switch (Mnemonic[11]) {
    8059             :                     default: break;
    8060             :                     case '1':    // 1 string to match.
    8061           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8062             :                         break;
    8063           0 :                       Mnemonic = "v_cmpx_ge_i16";      // "v_cmpx_ge_i16_sdwa"
    8064           0 :                       return;
    8065             :                     case '3':    // 1 string to match.
    8066           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8067             :                         break;
    8068           0 :                       Mnemonic = "v_cmpx_ge_i32";      // "v_cmpx_ge_i32_sdwa"
    8069           0 :                       return;
    8070             :                     }
    8071             :                     break;
    8072           0 :                   case 'u':      // 2 strings to match.
    8073             :                     switch (Mnemonic[11]) {
    8074             :                     default: break;
    8075             :                     case '1':    // 1 string to match.
    8076           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8077             :                         break;
    8078           0 :                       Mnemonic = "v_cmpx_ge_u16";      // "v_cmpx_ge_u16_sdwa"
    8079           0 :                       return;
    8080             :                     case '3':    // 1 string to match.
    8081           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8082             :                         break;
    8083           0 :                       Mnemonic = "v_cmpx_ge_u32";      // "v_cmpx_ge_u32_sdwa"
    8084           0 :                       return;
    8085             :                     }
    8086             :                     break;
    8087             :                   }
    8088             :                   break;
    8089           0 :                 case 't':        // 6 strings to match.
    8090           0 :                   if (Mnemonic[9] != '_')
    8091             :                     break;
    8092             :                   switch (Mnemonic[10]) {
    8093             :                   default: break;
    8094           0 :                   case 'f':      // 2 strings to match.
    8095             :                     switch (Mnemonic[11]) {
    8096             :                     default: break;
    8097             :                     case '1':    // 1 string to match.
    8098           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8099             :                         break;
    8100           0 :                       Mnemonic = "v_cmpx_gt_f16";      // "v_cmpx_gt_f16_sdwa"
    8101           0 :                       return;
    8102             :                     case '3':    // 1 string to match.
    8103           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8104             :                         break;
    8105           0 :                       Mnemonic = "v_cmpx_gt_f32";      // "v_cmpx_gt_f32_sdwa"
    8106           0 :                       return;
    8107             :                     }
    8108             :                     break;
    8109           0 :                   case 'i':      // 2 strings to match.
    8110             :                     switch (Mnemonic[11]) {
    8111             :                     default: break;
    8112             :                     case '1':    // 1 string to match.
    8113           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8114             :                         break;
    8115           0 :                       Mnemonic = "v_cmpx_gt_i16";      // "v_cmpx_gt_i16_sdwa"
    8116           0 :                       return;
    8117             :                     case '3':    // 1 string to match.
    8118           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8119             :                         break;
    8120           0 :                       Mnemonic = "v_cmpx_gt_i32";      // "v_cmpx_gt_i32_sdwa"
    8121           0 :                       return;
    8122             :                     }
    8123             :                     break;
    8124           0 :                   case 'u':      // 2 strings to match.
    8125             :                     switch (Mnemonic[11]) {
    8126             :                     default: break;
    8127             :                     case '1':    // 1 string to match.
    8128           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8129             :                         break;
    8130           0 :                       Mnemonic = "v_cmpx_gt_u16";      // "v_cmpx_gt_u16_sdwa"
    8131           0 :                       return;
    8132             :                     case '3':    // 1 string to match.
    8133           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8134             :                         break;
    8135           0 :                       Mnemonic = "v_cmpx_gt_u32";      // "v_cmpx_gt_u32_sdwa"
    8136           0 :                       return;
    8137             :                     }
    8138             :                     break;
    8139             :                   }
    8140             :                   break;
    8141             :                 }
    8142             :                 break;
    8143           0 :               case 'l':  // 14 strings to match.
    8144             :                 switch (Mnemonic[8]) {
    8145             :                 default: break;
    8146           0 :                 case 'e':        // 6 strings to match.
    8147           0 :                   if (Mnemonic[9] != '_')
    8148             :                     break;
    8149             :                   switch (Mnemonic[10]) {
    8150             :                   default: break;
    8151           0 :                   case 'f':      // 2 strings to match.
    8152             :                     switch (Mnemonic[11]) {
    8153             :                     default: break;
    8154             :                     case '1':    // 1 string to match.
    8155           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8156             :                         break;
    8157           0 :                       Mnemonic = "v_cmpx_le_f16";      // "v_cmpx_le_f16_sdwa"
    8158           0 :                       return;
    8159             :                     case '3':    // 1 string to match.
    8160           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8161             :                         break;
    8162           0 :                       Mnemonic = "v_cmpx_le_f32";      // "v_cmpx_le_f32_sdwa"
    8163           0 :                       return;
    8164             :                     }
    8165             :                     break;
    8166           0 :                   case 'i':      // 2 strings to match.
    8167             :                     switch (Mnemonic[11]) {
    8168             :                     default: break;
    8169             :                     case '1':    // 1 string to match.
    8170           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8171             :                         break;
    8172           0 :                       Mnemonic = "v_cmpx_le_i16";      // "v_cmpx_le_i16_sdwa"
    8173           0 :                       return;
    8174             :                     case '3':    // 1 string to match.
    8175           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8176             :                         break;
    8177           0 :                       Mnemonic = "v_cmpx_le_i32";      // "v_cmpx_le_i32_sdwa"
    8178           0 :                       return;
    8179             :                     }
    8180             :                     break;
    8181           0 :                   case 'u':      // 2 strings to match.
    8182             :                     switch (Mnemonic[11]) {
    8183             :                     default: break;
    8184             :                     case '1':    // 1 string to match.
    8185           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8186             :                         break;
    8187           0 :                       Mnemonic = "v_cmpx_le_u16";      // "v_cmpx_le_u16_sdwa"
    8188           0 :                       return;
    8189             :                     case '3':    // 1 string to match.
    8190           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8191             :                         break;
    8192           0 :                       Mnemonic = "v_cmpx_le_u32";      // "v_cmpx_le_u32_sdwa"
    8193           0 :                       return;
    8194             :                     }
    8195             :                     break;
    8196             :                   }
    8197             :                   break;
    8198             :                 case 'g':        // 2 strings to match.
    8199           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    8200             :                     break;
    8201             :                   switch (Mnemonic[11]) {
    8202             :                   default: break;
    8203             :                   case '1':      // 1 string to match.
    8204           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8205             :                       break;
    8206           0 :                     Mnemonic = "v_cmpx_lg_f16";        // "v_cmpx_lg_f16_sdwa"
    8207           0 :                     return;
    8208             :                   case '3':      // 1 string to match.
    8209           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8210             :                       break;
    8211           0 :                     Mnemonic = "v_cmpx_lg_f32";        // "v_cmpx_lg_f32_sdwa"
    8212           0 :                     return;
    8213             :                   }
    8214             :                   break;
    8215           0 :                 case 't':        // 6 strings to match.
    8216           0 :                   if (Mnemonic[9] != '_')
    8217             :                     break;
    8218             :                   switch (Mnemonic[10]) {
    8219             :                   default: break;
    8220           0 :                   case 'f':      // 2 strings to match.
    8221             :                     switch (Mnemonic[11]) {
    8222             :                     default: break;
    8223             :                     case '1':    // 1 string to match.
    8224           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8225             :                         break;
    8226           0 :                       Mnemonic = "v_cmpx_lt_f16";      // "v_cmpx_lt_f16_sdwa"
    8227           0 :                       return;
    8228             :                     case '3':    // 1 string to match.
    8229           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8230             :                         break;
    8231           0 :                       Mnemonic = "v_cmpx_lt_f32";      // "v_cmpx_lt_f32_sdwa"
    8232           0 :                       return;
    8233             :                     }
    8234             :                     break;
    8235           0 :                   case 'i':      // 2 strings to match.
    8236             :                     switch (Mnemonic[11]) {
    8237             :                     default: break;
    8238             :                     case '1':    // 1 string to match.
    8239           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8240             :                         break;
    8241           0 :                       Mnemonic = "v_cmpx_lt_i16";      // "v_cmpx_lt_i16_sdwa"
    8242           0 :                       return;
    8243             :                     case '3':    // 1 string to match.
    8244           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8245             :                         break;
    8246           0 :                       Mnemonic = "v_cmpx_lt_i32";      // "v_cmpx_lt_i32_sdwa"
    8247           0 :                       return;
    8248             :                     }
    8249             :                     break;
    8250           0 :                   case 'u':      // 2 strings to match.
    8251             :                     switch (Mnemonic[11]) {
    8252             :                     default: break;
    8253             :                     case '1':    // 1 string to match.
    8254           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8255             :                         break;
    8256           0 :                       Mnemonic = "v_cmpx_lt_u16";      // "v_cmpx_lt_u16_sdwa"
    8257           0 :                       return;
    8258             :                     case '3':    // 1 string to match.
    8259           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8260             :                         break;
    8261           0 :                       Mnemonic = "v_cmpx_lt_u32";      // "v_cmpx_lt_u32_sdwa"
    8262           0 :                       return;
    8263             :                     }
    8264             :                     break;
    8265             :                   }
    8266             :                   break;
    8267             :                 }
    8268             :                 break;
    8269             :               case 'n':  // 4 strings to match.
    8270           0 :                 if (memcmp(Mnemonic.data()+8, "e_", 2) != 0)
    8271             :                   break;
    8272             :                 switch (Mnemonic[10]) {
    8273             :                 default: break;
    8274           0 :                 case 'i':        // 2 strings to match.
    8275             :                   switch (Mnemonic[11]) {
    8276             :                   default: break;
    8277             :                   case '1':      // 1 string to match.
    8278           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8279             :                       break;
    8280           0 :                     Mnemonic = "v_cmpx_ne_i16";        // "v_cmpx_ne_i16_sdwa"
    8281           0 :                     return;
    8282             :                   case '3':      // 1 string to match.
    8283           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8284             :                       break;
    8285           0 :                     Mnemonic = "v_cmpx_ne_i32";        // "v_cmpx_ne_i32_sdwa"
    8286           0 :                     return;
    8287             :                   }
    8288             :                   break;
    8289           0 :                 case 'u':        // 2 strings to match.
    8290             :                   switch (Mnemonic[11]) {
    8291             :                   default: break;
    8292             :                   case '1':      // 1 string to match.
    8293           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8294             :                       break;
    8295           0 :                     Mnemonic = "v_cmpx_ne_u16";        // "v_cmpx_ne_u16_sdwa"
    8296           0 :                     return;
    8297             :                   case '3':      // 1 string to match.
    8298           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8299             :                       break;
    8300           0 :                     Mnemonic = "v_cmpx_ne_u32";        // "v_cmpx_ne_u32_sdwa"
    8301           0 :                     return;
    8302             :                   }
    8303             :                   break;
    8304             :                 }
    8305             :                 break;
    8306             :               }
    8307             :               break;
    8308             :             }
    8309             :             break;
    8310             :           case 'n':      // 1 string to match.
    8311           0 :             if (memcmp(Mnemonic.data()+4, "dmask_b32_sdwa", 14) != 0)
    8312             :               break;
    8313           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cndmask_b32_sdwa"
    8314           0 :               Mnemonic = "v_cndmask_b32";
    8315             :             return;
    8316             :           case 'v':      // 10 strings to match.
    8317          20 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
    8318             :               break;
    8319             :             switch (Mnemonic[6]) {
    8320             :             default: break;
    8321           0 :             case 'f':    // 6 strings to match.
    8322             :               switch (Mnemonic[7]) {
    8323             :               default: break;
    8324             :               case '1':  // 3 strings to match.
    8325           0 :                 if (memcmp(Mnemonic.data()+8, "6_", 2) != 0)
    8326             :                   break;
    8327             :                 switch (Mnemonic[10]) {
    8328             :                 default: break;
    8329             :                 case 'f':        // 1 string to match.
    8330           0 :                   if (memcmp(Mnemonic.data()+11, "32_sdwa", 7) != 0)
    8331             :                     break;
    8332           0 :                   Mnemonic = "v_cvt_f16_f32";  // "v_cvt_f16_f32_sdwa"
    8333           0 :                   return;
    8334             :                 case 'i':        // 1 string to match.
    8335           0 :                   if (memcmp(Mnemonic.data()+11, "16_sdwa", 7) != 0)
    8336             :                     break;
    8337           0 :                   Mnemonic = "v_cvt_f16_i16";  // "v_cvt_f16_i16_sdwa"
    8338           0 :                   return;
    8339             :                 case 'u':        // 1 string to match.
    8340           0 :                   if (memcmp(Mnemonic.data()+11, "16_sdwa", 7) != 0)
    8341             :                     break;
    8342           0 :                   Mnemonic = "v_cvt_f16_u16";  // "v_cvt_f16_u16_sdwa"
    8343           0 :                   return;
    8344             :                 }
    8345             :                 break;
    8346             :               case '3':  // 3 strings to match.
    8347           0 :                 if (memcmp(Mnemonic.data()+8, "2_", 2) != 0)
    8348             :                   break;
    8349             :                 switch (Mnemonic[10]) {
    8350             :                 default: break;
    8351             :                 case 'f':        // 1 string to match.
    8352           0 :                   if (memcmp(Mnemonic.data()+11, "16_sdwa", 7) != 0)
    8353             :                     break;
    8354           0 :                   Mnemonic = "v_cvt_f32_f16";  // "v_cvt_f32_f16_sdwa"
    8355           0 :                   return;
    8356             :                 case 'i':        // 1 string to match.
    8357           0 :                   if (memcmp(Mnemonic.data()+11, "32_sdwa", 7) != 0)
    8358             :                     break;
    8359           0 :                   Mnemonic = "v_cvt_f32_i32";  // "v_cvt_f32_i32_sdwa"
    8360           0 :                   return;
    8361             :                 case 'u':        // 1 string to match.
    8362           0 :                   if (memcmp(Mnemonic.data()+11, "32_sdwa", 7) != 0)
    8363             :                     break;
    8364           0 :                   Mnemonic = "v_cvt_f32_u32";  // "v_cvt_f32_u32_sdwa"
    8365           0 :                   return;
    8366             :                 }
    8367             :                 break;
    8368             :               }
    8369             :               break;
    8370           0 :             case 'i':    // 2 strings to match.
    8371             :               switch (Mnemonic[7]) {
    8372             :               default: break;
    8373             :               case '1':  // 1 string to match.
    8374           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_sdwa", 10) != 0)
    8375             :                   break;
    8376           0 :                 Mnemonic = "v_cvt_i16_f16";    // "v_cvt_i16_f16_sdwa"
    8377           0 :                 return;
    8378             :               case '3':  // 1 string to match.
    8379           0 :                 if (memcmp(Mnemonic.data()+8, "2_f32_sdwa", 10) != 0)
    8380             :                   break;
    8381           0 :                 Mnemonic = "v_cvt_i32_f32";    // "v_cvt_i32_f32_sdwa"
    8382           0 :                 return;
    8383             :               }
    8384             :               break;
    8385           0 :             case 'u':    // 2 strings to match.
    8386             :               switch (Mnemonic[7]) {
    8387             :               default: break;
    8388             :               case '1':  // 1 string to match.
    8389           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_sdwa", 10) != 0)
    8390             :                   break;
    8391           0 :                 Mnemonic = "v_cvt_u16_f16";    // "v_cvt_u16_f16_sdwa"
    8392           0 :                 return;
    8393             :               case '3':  // 1 string to match.
    8394           0 :                 if (memcmp(Mnemonic.data()+8, "2_f32_sdwa", 10) != 0)
    8395             :                   break;
    8396           0 :                 Mnemonic = "v_cvt_u32_f32";    // "v_cvt_u32_f32_sdwa"
    8397           0 :                 return;
    8398             :               }
    8399             :               break;
    8400             :             }
    8401             :             break;
    8402             :           }
    8403             :           break;
    8404             :         case 'l':        // 4 strings to match.
    8405           0 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    8406             :             break;
    8407             :           switch (Mnemonic[5]) {
    8408             :           default: break;
    8409             :           case 'l':      // 2 strings to match.
    8410           0 :             if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
    8411             :               break;
    8412             :             switch (Mnemonic[11]) {
    8413             :             default: break;
    8414             :             case '1':    // 1 string to match.
    8415           0 :               if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8416             :                 break;
    8417           0 :               Mnemonic = "v_lshlrev_b16";      // "v_lshlrev_b16_sdwa"
    8418           0 :               return;
    8419             :             case '3':    // 1 string to match.
    8420           0 :               if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8421             :                 break;
    8422           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_lshlrev_b32_sdwa"
    8423           0 :                 Mnemonic = "v_lshlrev_b32";
    8424             :               return;
    8425             :             }
    8426             :             break;
    8427             :           case 'r':      // 2 strings to match.
    8428           0 :             if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
    8429             :               break;
    8430             :             switch (Mnemonic[11]) {
    8431             :             default: break;
    8432             :             case '1':    // 1 string to match.
    8433           0 :               if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8434             :                 break;
    8435           0 :               Mnemonic = "v_lshrrev_b16";      // "v_lshrrev_b16_sdwa"
    8436           0 :               return;
    8437             :             case '3':    // 1 string to match.
    8438           0 :               if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8439             :                 break;
    8440           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_lshrrev_b32_sdwa"
    8441           0 :                 Mnemonic = "v_lshrrev_b32";
    8442             :               return;
    8443             :             }
    8444             :             break;
    8445             :           }
    8446             :           break;
    8447           0 :         case 'm':        // 3 strings to match.
    8448             :           switch (Mnemonic[3]) {
    8449             :           default: break;
    8450             :           case 'o':      // 1 string to match.
    8451           0 :             if (memcmp(Mnemonic.data()+4, "v_fed_b32_sdwa", 14) != 0)
    8452             :               break;
    8453           0 :             Mnemonic = "v_mov_fed_b32";        // "v_mov_fed_b32_sdwa"
    8454           0 :             return;
    8455             :           case 'u':      // 2 strings to match.
    8456           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    8457             :               break;
    8458             :             switch (Mnemonic[6]) {
    8459             :             default: break;
    8460             :             case 'i':    // 1 string to match.
    8461           0 :               if (memcmp(Mnemonic.data()+7, "32_i24_sdwa", 11) != 0)
    8462             :                 break;
    8463           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_i32_i24_sdwa"
    8464           0 :                 Mnemonic = "v_mul_i32_i24";
    8465             :               return;
    8466             :             case 'u':    // 1 string to match.
    8467           0 :               if (memcmp(Mnemonic.data()+7, "32_u24_sdwa", 11) != 0)
    8468             :                 break;
    8469           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_u32_u24_sdwa"
    8470           0 :                 Mnemonic = "v_mul_u32_u24";
    8471             :               return;
    8472             :             }
    8473             :             break;
    8474             :           }
    8475             :           break;
    8476             :         case 's':        // 1 string to match.
    8477           0 :           if (memcmp(Mnemonic.data()+3, "ubbrev_u32_sdwa", 15) != 0)
    8478             :             break;
    8479           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_subbrev_u32_sdwa"
    8480           0 :             Mnemonic = "v_subbrev_u32";
    8481             :           return;
    8482             :         }
    8483             :         break;
    8484             :       case 19:   // 27 strings to match.
    8485         422 :         if (memcmp(Mnemonic.data()+0, "v_cmp", 5) != 0)
    8486             :           break;
    8487             :         switch (Mnemonic[5]) {
    8488             :         default: break;
    8489           0 :         case 's':        // 13 strings to match.
    8490             :           switch (Mnemonic[6]) {
    8491             :           default: break;
    8492           0 :           case '_':      // 7 strings to match.
    8493             :             switch (Mnemonic[7]) {
    8494             :             default: break;
    8495           0 :             case 'n':    // 6 strings to match.
    8496             :               switch (Mnemonic[8]) {
    8497             :               default: break;
    8498             :               case 'e':  // 1 string to match.
    8499           0 :                 if (memcmp(Mnemonic.data()+9, "q_f32_sdwa", 10) != 0)
    8500             :                   break;
    8501           0 :                 Mnemonic = "v_cmps_neq_f32";   // "v_cmps_neq_f32_sdwa"
    8502           0 :                 return;
    8503           0 :               case 'g':  // 2 strings to match.
    8504             :                 switch (Mnemonic[9]) {
    8505             :                 default: break;
    8506             :                 case 'e':        // 1 string to match.
    8507           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8508             :                     break;
    8509           0 :                   Mnemonic = "v_cmps_nge_f32";         // "v_cmps_nge_f32_sdwa"
    8510           0 :                   return;
    8511             :                 case 't':        // 1 string to match.
    8512           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8513             :                     break;
    8514           0 :                   Mnemonic = "v_cmps_ngt_f32";         // "v_cmps_ngt_f32_sdwa"
    8515           0 :                   return;
    8516             :                 }
    8517             :                 break;
    8518           0 :               case 'l':  // 3 strings to match.
    8519             :                 switch (Mnemonic[9]) {
    8520             :                 default: break;
    8521             :                 case 'e':        // 1 string to match.
    8522           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8523             :                     break;
    8524           0 :                   Mnemonic = "v_cmps_nle_f32";         // "v_cmps_nle_f32_sdwa"
    8525           0 :                   return;
    8526             :                 case 'g':        // 1 string to match.
    8527           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8528             :                     break;
    8529           0 :                   Mnemonic = "v_cmps_nlg_f32";         // "v_cmps_nlg_f32_sdwa"
    8530           0 :                   return;
    8531             :                 case 't':        // 1 string to match.
    8532           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8533             :                     break;
    8534           0 :                   Mnemonic = "v_cmps_nlt_f32";         // "v_cmps_nlt_f32_sdwa"
    8535           0 :                   return;
    8536             :                 }
    8537             :                 break;
    8538             :               }
    8539             :               break;
    8540             :             case 't':    // 1 string to match.
    8541           0 :               if (memcmp(Mnemonic.data()+8, "ru_f32_sdwa", 11) != 0)
    8542             :                 break;
    8543           0 :               Mnemonic = "v_cmps_tru_f32";     // "v_cmps_tru_f32_sdwa"
    8544           0 :               return;
    8545             :             }
    8546             :             break;
    8547           0 :           case 'x':      // 6 strings to match.
    8548           0 :             if (Mnemonic[7] != '_')
    8549             :               break;
    8550             :             switch (Mnemonic[8]) {
    8551             :             default: break;
    8552             :             case 'e':    // 1 string to match.
    8553           0 :               if (memcmp(Mnemonic.data()+9, "q_f32_sdwa", 10) != 0)
    8554             :                 break;
    8555           0 :               Mnemonic = "v_cmpsx_eq_f32";     // "v_cmpsx_eq_f32_sdwa"
    8556           0 :               return;
    8557           0 :             case 'g':    // 2 strings to match.
    8558             :               switch (Mnemonic[9]) {
    8559             :               default: break;
    8560             :               case 'e':  // 1 string to match.
    8561           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8562             :                   break;
    8563           0 :                 Mnemonic = "v_cmpsx_ge_f32";   // "v_cmpsx_ge_f32_sdwa"
    8564           0 :                 return;
    8565             :               case 't':  // 1 string to match.
    8566           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8567             :                   break;
    8568           0 :                 Mnemonic = "v_cmpsx_gt_f32";   // "v_cmpsx_gt_f32_sdwa"
    8569           0 :                 return;
    8570             :               }
    8571             :               break;
    8572           0 :             case 'l':    // 3 strings to match.
    8573             :               switch (Mnemonic[9]) {
    8574             :               default: break;
    8575             :               case 'e':  // 1 string to match.
    8576           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8577             :                   break;
    8578           0 :                 Mnemonic = "v_cmpsx_le_f32";   // "v_cmpsx_le_f32_sdwa"
    8579           0 :                 return;
    8580             :               case 'g':  // 1 string to match.
    8581           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8582             :                   break;
    8583           0 :                 Mnemonic = "v_cmpsx_lg_f32";   // "v_cmpsx_lg_f32_sdwa"
    8584           0 :                 return;
    8585             :               case 't':  // 1 string to match.
    8586           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8587             :                   break;
    8588           0 :                 Mnemonic = "v_cmpsx_lt_f32";   // "v_cmpsx_lt_f32_sdwa"
    8589           0 :                 return;
    8590             :               }
    8591             :               break;
    8592             :             }
    8593             :             break;
    8594             :           }
    8595             :           break;
    8596           0 :         case 'x':        // 14 strings to match.
    8597           0 :           if (Mnemonic[6] != '_')
    8598             :             break;
    8599             :           switch (Mnemonic[7]) {
    8600             :           default: break;
    8601           0 :           case 'n':      // 12 strings to match.
    8602             :             switch (Mnemonic[8]) {
    8603             :             default: break;
    8604             :             case 'e':    // 2 strings to match.
    8605           0 :               if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
    8606             :                 break;
    8607             :               switch (Mnemonic[12]) {
    8608             :               default: break;
    8609             :               case '1':  // 1 string to match.
    8610           0 :                 if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8611             :                   break;
    8612           0 :                 Mnemonic = "v_cmpx_neq_f16";   // "v_cmpx_neq_f16_sdwa"
    8613           0 :                 return;
    8614             :               case '3':  // 1 string to match.
    8615           0 :                 if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8616             :                   break;
    8617           0 :                 Mnemonic = "v_cmpx_neq_f32";   // "v_cmpx_neq_f32_sdwa"
    8618           0 :                 return;
    8619             :               }
    8620             :               break;
    8621           0 :             case 'g':    // 4 strings to match.
    8622             :               switch (Mnemonic[9]) {
    8623             :               default: break;
    8624             :               case 'e':  // 2 strings to match.
    8625           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8626             :                   break;
    8627             :                 switch (Mnemonic[12]) {
    8628             :                 default: break;
    8629             :                 case '1':        // 1 string to match.
    8630           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8631             :                     break;
    8632           0 :                   Mnemonic = "v_cmpx_nge_f16";         // "v_cmpx_nge_f16_sdwa"
    8633           0 :                   return;
    8634             :                 case '3':        // 1 string to match.
    8635           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8636             :                     break;
    8637           0 :                   Mnemonic = "v_cmpx_nge_f32";         // "v_cmpx_nge_f32_sdwa"
    8638           0 :                   return;
    8639             :                 }
    8640             :                 break;
    8641             :               case 't':  // 2 strings to match.
    8642           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8643             :                   break;
    8644             :                 switch (Mnemonic[12]) {
    8645             :                 default: break;
    8646             :                 case '1':        // 1 string to match.
    8647           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8648             :                     break;
    8649           0 :                   Mnemonic = "v_cmpx_ngt_f16";         // "v_cmpx_ngt_f16_sdwa"
    8650           0 :                   return;
    8651             :                 case '3':        // 1 string to match.
    8652           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8653             :                     break;
    8654           0 :                   Mnemonic = "v_cmpx_ngt_f32";         // "v_cmpx_ngt_f32_sdwa"
    8655           0 :                   return;
    8656             :                 }
    8657             :                 break;
    8658             :               }
    8659             :               break;
    8660           0 :             case 'l':    // 6 strings to match.
    8661             :               switch (Mnemonic[9]) {
    8662             :               default: break;
    8663             :               case 'e':  // 2 strings to match.
    8664           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8665             :                   break;
    8666             :                 switch (Mnemonic[12]) {
    8667             :                 default: break;
    8668             :                 case '1':        // 1 string to match.
    8669           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8670             :                     break;
    8671           0 :                   Mnemonic = "v_cmpx_nle_f16";         // "v_cmpx_nle_f16_sdwa"
    8672           0 :                   return;
    8673             :                 case '3':        // 1 string to match.
    8674           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8675             :                     break;
    8676           0 :                   Mnemonic = "v_cmpx_nle_f32";         // "v_cmpx_nle_f32_sdwa"
    8677           0 :                   return;
    8678             :                 }
    8679             :                 break;
    8680             :               case 'g':  // 2 strings to match.
    8681           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8682             :                   break;
    8683             :                 switch (Mnemonic[12]) {
    8684             :                 default: break;
    8685             :                 case '1':        // 1 string to match.
    8686           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8687             :                     break;
    8688           0 :                   Mnemonic = "v_cmpx_nlg_f16";         // "v_cmpx_nlg_f16_sdwa"
    8689           0 :                   return;
    8690             :                 case '3':        // 1 string to match.
    8691           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8692             :                     break;
    8693           0 :                   Mnemonic = "v_cmpx_nlg_f32";         // "v_cmpx_nlg_f32_sdwa"
    8694           0 :                   return;
    8695             :                 }
    8696             :                 break;
    8697             :               case 't':  // 2 strings to match.
    8698           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8699             :                   break;
    8700             :                 switch (Mnemonic[12]) {
    8701             :                 default: break;
    8702             :                 case '1':        // 1 string to match.
    8703           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8704             :                     break;
    8705           0 :                   Mnemonic = "v_cmpx_nlt_f16";         // "v_cmpx_nlt_f16_sdwa"
    8706           0 :                   return;
    8707             :                 case '3':        // 1 string to match.
    8708           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8709             :                     break;
    8710           0 :                   Mnemonic = "v_cmpx_nlt_f32";         // "v_cmpx_nlt_f32_sdwa"
    8711           0 :                   return;
    8712             :                 }
    8713             :                 break;
    8714             :               }
    8715             :               break;
    8716             :             }
    8717             :             break;
    8718             :           case 't':      // 2 strings to match.
    8719           0 :             if (memcmp(Mnemonic.data()+8, "ru_f", 4) != 0)
    8720             :               break;
    8721             :             switch (Mnemonic[12]) {
    8722             :             default: break;
    8723             :             case '1':    // 1 string to match.
    8724           0 :               if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8725             :                 break;
    8726           0 :               Mnemonic = "v_cmpx_tru_f16";     // "v_cmpx_tru_f16_sdwa"
    8727           0 :               return;
    8728             :             case '3':    // 1 string to match.
    8729           0 :               if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8730             :                 break;
    8731           0 :               Mnemonic = "v_cmpx_tru_f32";     // "v_cmpx_tru_f32_sdwa"
    8732           0 :               return;
    8733             :             }
    8734             :             break;
    8735             :           }
    8736             :           break;
    8737             :         }
    8738             :         break;
    8739             :       case 20:   // 14 strings to match.
    8740         133 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    8741             :           break;
    8742             :         switch (Mnemonic[2]) {
    8743             :         default: break;
    8744             :         case 'c':        // 9 strings to match.
    8745          15 :           if (memcmp(Mnemonic.data()+3, "mp", 2) != 0)
    8746             :             break;
    8747             :           switch (Mnemonic[5]) {
    8748             :           default: break;
    8749             :           case '_':      // 2 strings to match.
    8750           0 :             if (memcmp(Mnemonic.data()+6, "class_f", 7) != 0)
    8751             :               break;
    8752             :             switch (Mnemonic[13]) {
    8753             :             default: break;
    8754             :             case '1':    // 1 string to match.
    8755           0 :               if (memcmp(Mnemonic.data()+14, "6_sdwa", 6) != 0)
    8756             :                 break;
    8757           0 :               Mnemonic = "v_cmp_class_f16";    // "v_cmp_class_f16_sdwa"
    8758           0 :               return;
    8759             :             case '3':    // 1 string to match.
    8760           0 :               if (memcmp(Mnemonic.data()+14, "2_sdwa", 6) != 0)
    8761             :                 break;
    8762           0 :               Mnemonic = "v_cmp_class_f32";    // "v_cmp_class_f32_sdwa"
    8763           0 :               return;
    8764             :             }
    8765             :             break;
    8766             :           case 's':      // 7 strings to match.
    8767           0 :             if (memcmp(Mnemonic.data()+6, "x_", 2) != 0)
    8768             :               break;
    8769             :             switch (Mnemonic[8]) {
    8770             :             default: break;
    8771           0 :             case 'n':    // 6 strings to match.
    8772             :               switch (Mnemonic[9]) {
    8773             :               default: break;
    8774             :               case 'e':  // 1 string to match.
    8775           0 :                 if (memcmp(Mnemonic.data()+10, "q_f32_sdwa", 10) != 0)
    8776             :                   break;
    8777           0 :                 Mnemonic = "v_cmpsx_neq_f32";  // "v_cmpsx_neq_f32_sdwa"
    8778           0 :                 return;
    8779           0 :               case 'g':  // 2 strings to match.
    8780             :                 switch (Mnemonic[10]) {
    8781             :                 default: break;
    8782             :                 case 'e':        // 1 string to match.
    8783           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8784             :                     break;
    8785           0 :                   Mnemonic = "v_cmpsx_nge_f32";        // "v_cmpsx_nge_f32_sdwa"
    8786           0 :                   return;
    8787             :                 case 't':        // 1 string to match.
    8788           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8789             :                     break;
    8790           0 :                   Mnemonic = "v_cmpsx_ngt_f32";        // "v_cmpsx_ngt_f32_sdwa"
    8791           0 :                   return;
    8792             :                 }
    8793             :                 break;
    8794           0 :               case 'l':  // 3 strings to match.
    8795             :                 switch (Mnemonic[10]) {
    8796             :                 default: break;
    8797             :                 case 'e':        // 1 string to match.
    8798           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8799             :                     break;
    8800           0 :                   Mnemonic = "v_cmpsx_nle_f32";        // "v_cmpsx_nle_f32_sdwa"
    8801           0 :                   return;
    8802             :                 case 'g':        // 1 string to match.
    8803           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8804             :                     break;
    8805           0 :                   Mnemonic = "v_cmpsx_nlg_f32";        // "v_cmpsx_nlg_f32_sdwa"
    8806           0 :                   return;
    8807             :                 case 't':        // 1 string to match.
    8808           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8809             :                     break;
    8810           0 :                   Mnemonic = "v_cmpsx_nlt_f32";        // "v_cmpsx_nlt_f32_sdwa"
    8811           0 :                   return;
    8812             :                 }
    8813             :                 break;
    8814             :               }
    8815             :               break;
    8816             :             case 't':    // 1 string to match.
    8817           0 :               if (memcmp(Mnemonic.data()+9, "ru_f32_sdwa", 11) != 0)
    8818             :                 break;
    8819           0 :               Mnemonic = "v_cmpsx_tru_f32";    // "v_cmpsx_tru_f32_sdwa"
    8820           0 :               return;
    8821             :             }
    8822             :             break;
    8823             :           }
    8824             :           break;
    8825             :         case 'l':        // 1 string to match.
    8826           0 :           if (memcmp(Mnemonic.data()+3, "og_clamp_f32_sdwa", 17) != 0)
    8827             :             break;
    8828           0 :           Mnemonic = "v_log_clamp_f32";        // "v_log_clamp_f32_sdwa"
    8829           0 :           return;
    8830           0 :         case 'r':        // 3 strings to match.
    8831             :           switch (Mnemonic[3]) {
    8832             :           default: break;
    8833             :           case 'c':      // 2 strings to match.
    8834           0 :             if (memcmp(Mnemonic.data()+4, "p_", 2) != 0)
    8835             :               break;
    8836             :             switch (Mnemonic[6]) {
    8837             :             default: break;
    8838             :             case 'c':    // 1 string to match.
    8839           0 :               if (memcmp(Mnemonic.data()+7, "lamp_f32_sdwa", 13) != 0)
    8840             :                 break;
    8841           0 :               Mnemonic = "v_rcp_clamp_f32";    // "v_rcp_clamp_f32_sdwa"
    8842           0 :               return;
    8843             :             case 'i':    // 1 string to match.
    8844           0 :               if (memcmp(Mnemonic.data()+7, "flag_f32_sdwa", 13) != 0)
    8845             :                 break;
    8846           0 :               Mnemonic = "v_rcp_iflag_f32";    // "v_rcp_iflag_f32_sdwa"
    8847           0 :               return;
    8848             :             }
    8849             :             break;
    8850             :           case 's':      // 1 string to match.
    8851           0 :             if (memcmp(Mnemonic.data()+4, "q_clamp_f32_sdwa", 16) != 0)
    8852             :               break;
    8853           0 :             Mnemonic = "v_rsq_clamp_f32";      // "v_rsq_clamp_f32_sdwa"
    8854           0 :             return;
    8855             :           }
    8856             :           break;
    8857             :         case 's':        // 1 string to match.
    8858           0 :           if (memcmp(Mnemonic.data()+3, "at_pk_u8_i16_sdwa", 17) != 0)
    8859             :             break;
    8860           0 :           Mnemonic = "v_sat_pk_u8_i16";        // "v_sat_pk_u8_i16_sdwa"
    8861           0 :           return;
    8862             :         }
    8863             :         break;
    8864             :       case 21:   // 19 strings to match.
    8865          37 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    8866             :           break;
    8867             :         switch (Mnemonic[2]) {
    8868             :         default: break;
    8869           0 :         case 'c':        // 7 strings to match.
    8870             :           switch (Mnemonic[3]) {
    8871             :           default: break;
    8872             :           case 'm':      // 2 strings to match.
    8873           0 :             if (memcmp(Mnemonic.data()+4, "px_class_f", 10) != 0)
    8874             :               break;
    8875             :             switch (Mnemonic[14]) {
    8876             :             default: break;
    8877             :             case '1':    // 1 string to match.
    8878           0 :               if (memcmp(Mnemonic.data()+15, "6_sdwa", 6) != 0)
    8879             :                 break;
    8880           0 :               Mnemonic = "v_cmpx_class_f16";   // "v_cmpx_class_f16_sdwa"
    8881           0 :               return;
    8882             :             case '3':    // 1 string to match.
    8883           0 :               if (memcmp(Mnemonic.data()+15, "2_sdwa", 6) != 0)
    8884             :                 break;
    8885           0 :               Mnemonic = "v_cmpx_class_f32";   // "v_cmpx_class_f32_sdwa"
    8886           0 :               return;
    8887             :             }
    8888             :             break;
    8889             :           case 'v':      // 5 strings to match.
    8890           0 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
    8891             :               break;
    8892             :             switch (Mnemonic[6]) {
    8893             :             default: break;
    8894             :             case 'f':    // 4 strings to match.
    8895           0 :               if (memcmp(Mnemonic.data()+7, "32_ubyte", 8) != 0)
    8896             :                 break;
    8897             :               switch (Mnemonic[15]) {
    8898             :               default: break;
    8899             :               case '0':  // 1 string to match.
    8900           0 :                 if (memcmp(Mnemonic.data()+16, "_sdwa", 5) != 0)
    8901             :                   break;
    8902           0 :                 Mnemonic = "v_cvt_f32_ubyte0";         // "v_cvt_f32_ubyte0_sdwa"
    8903           0 :                 return;
    8904             :               case '1':  // 1 string to match.
    8905           0 :                 if (memcmp(Mnemonic.data()+16, "_sdwa", 5) != 0)
    8906             :                   break;
    8907           0 :                 Mnemonic = "v_cvt_f32_ubyte1";         // "v_cvt_f32_ubyte1_sdwa"
    8908           0 :                 return;
    8909             :               case '2':  // 1 string to match.
    8910           0 :                 if (memcmp(Mnemonic.data()+16, "_sdwa", 5) != 0)
    8911             :                   break;
    8912           0 :                 Mnemonic = "v_cvt_f32_ubyte2";         // "v_cvt_f32_ubyte2_sdwa"
    8913           0 :                 return;
    8914             :               case '3':  // 1 string to match.
    8915           0 :                 if (memcmp(Mnemonic.data()+16, "_sdwa", 5) != 0)
    8916             :                   break;
    8917           0 :                 Mnemonic = "v_cvt_f32_ubyte3";         // "v_cvt_f32_ubyte3_sdwa"
    8918           0 :                 return;
    8919             :               }
    8920             :               break;
    8921             :             case 'o':    // 1 string to match.
    8922           0 :               if (memcmp(Mnemonic.data()+7, "ff_f32_i4_sdwa", 14) != 0)
    8923             :                 break;
    8924           0 :               Mnemonic = "v_cvt_off_f32_i4";   // "v_cvt_off_f32_i4_sdwa"
    8925           0 :               return;
    8926             :             }
    8927             :             break;
    8928             :           }
    8929             :           break;
    8930             :         case 'e':        // 1 string to match.
    8931           0 :           if (memcmp(Mnemonic.data()+3, "xp_legacy_f32_sdwa", 18) != 0)
    8932             :             break;
    8933           0 :           Mnemonic = "v_exp_legacy_f32";       // "v_exp_legacy_f32_sdwa"
    8934           0 :           return;
    8935             :         case 'f':        // 2 strings to match.
    8936           0 :           if (memcmp(Mnemonic.data()+3, "rexp_mant_f", 11) != 0)
    8937             :             break;
    8938             :           switch (Mnemonic[14]) {
    8939             :           default: break;
    8940             :           case '1':      // 1 string to match.
    8941           0 :             if (memcmp(Mnemonic.data()+15, "6_sdwa", 6) != 0)
    8942             :               break;
    8943           0 :             Mnemonic = "v_frexp_mant_f16";     // "v_frexp_mant_f16_sdwa"
    8944           0 :             return;
    8945             :           case '3':      // 1 string to match.
    8946           0 :             if (memcmp(Mnemonic.data()+15, "2_sdwa", 6) != 0)
    8947             :               break;
    8948           0 :             Mnemonic = "v_frexp_mant_f32";     // "v_frexp_mant_f32_sdwa"
    8949           0 :             return;
    8950             :           }
    8951             :           break;
    8952             :         case 'l':        // 1 string to match.
    8953           0 :           if (memcmp(Mnemonic.data()+3, "og_legacy_f32_sdwa", 18) != 0)
    8954             :             break;
    8955           0 :           Mnemonic = "v_log_legacy_f32";       // "v_log_legacy_f32_sdwa"
    8956           0 :           return;
    8957           0 :         case 'm':        // 6 strings to match.
    8958             :           switch (Mnemonic[3]) {
    8959             :           default: break;
    8960           0 :           case 'a':      // 2 strings to match.
    8961             :             switch (Mnemonic[4]) {
    8962             :             default: break;
    8963             :             case 'c':    // 1 string to match.
    8964           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_sdwa", 16) != 0)
    8965             :                 break;
    8966           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_mac_legacy_f32_sdwa"
    8967           0 :                 Mnemonic = "v_mac_legacy_f32";
    8968             :               return;
    8969             :             case 'x':    // 1 string to match.
    8970           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_sdwa", 16) != 0)
    8971             :                 break;
    8972           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_max_legacy_f32_sdwa"
    8973           0 :                 Mnemonic = "v_max_legacy_f32";
    8974             :               return;
    8975             :             }
    8976             :             break;
    8977             :           case 'i':      // 1 string to match.
    8978           0 :             if (memcmp(Mnemonic.data()+4, "n_legacy_f32_sdwa", 17) != 0)
    8979             :               break;
    8980           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_min_legacy_f32_sdwa"
    8981           0 :               Mnemonic = "v_min_legacy_f32";
    8982             :             return;
    8983             :           case 'u':      // 3 strings to match.
    8984           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    8985             :               break;
    8986             :             switch (Mnemonic[6]) {
    8987             :             default: break;
    8988             :             case 'h':    // 2 strings to match.
    8989           0 :               if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
    8990             :                 break;
    8991             :               switch (Mnemonic[9]) {
    8992             :               default: break;
    8993             :               case 'i':  // 1 string to match.
    8994           0 :                 if (memcmp(Mnemonic.data()+10, "32_i24_sdwa", 11) != 0)
    8995             :                   break;
    8996           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_i32_i24_sdwa"
    8997           0 :                   Mnemonic = "v_mul_hi_i32_i24";
    8998             :                 return;
    8999             :               case 'u':  // 1 string to match.
    9000           0 :                 if (memcmp(Mnemonic.data()+10, "32_u24_sdwa", 11) != 0)
    9001             :                   break;
    9002           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_u32_u24_sdwa"
    9003           0 :                   Mnemonic = "v_mul_hi_u32_u24";
    9004             :                 return;
    9005             :               }
    9006             :               break;
    9007             :             case 'l':    // 1 string to match.
    9008           0 :               if (memcmp(Mnemonic.data()+7, "egacy_f32_sdwa", 14) != 0)
    9009             :                 break;
    9010           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_legacy_f32_sdwa"
    9011           0 :                 Mnemonic = "v_mul_legacy_f32";
    9012             :               return;
    9013             :             }
    9014             :             break;
    9015             :           }
    9016             :           break;
    9017           0 :         case 'r':        // 2 strings to match.
    9018             :           switch (Mnemonic[3]) {
    9019             :           default: break;
    9020             :           case 'c':      // 1 string to match.
    9021           0 :             if (memcmp(Mnemonic.data()+4, "p_legacy_f32_sdwa", 17) != 0)
    9022             :               break;
    9023           0 :             Mnemonic = "v_rcp_legacy_f32";     // "v_rcp_legacy_f32_sdwa"
    9024           0 :             return;
    9025             :           case 's':      // 1 string to match.
    9026           0 :             if (memcmp(Mnemonic.data()+4, "q_legacy_f32_sdwa", 17) != 0)
    9027             :               break;
    9028           0 :             Mnemonic = "v_rsq_legacy_f32";     // "v_rsq_legacy_f32_sdwa"
    9029           0 :             return;
    9030             :           }
    9031             :           break;
    9032             :         }
    9033             :         break;
    9034             :       case 22:   // 2 strings to match.
    9035         141 :         if (memcmp(Mnemonic.data()+0, "v_cvt_", 6) != 0)
    9036             :           break;
    9037             :         switch (Mnemonic[6]) {
    9038             :         default: break;
    9039             :         case 'f':        // 1 string to match.
    9040           0 :           if (memcmp(Mnemonic.data()+7, "lr_i32_f32_sdwa", 15) != 0)
    9041             :             break;
    9042           0 :           Mnemonic = "v_cvt_flr_i32_f32";      // "v_cvt_flr_i32_f32_sdwa"
    9043           0 :           return;
    9044             :         case 'r':        // 1 string to match.
    9045           0 :           if (memcmp(Mnemonic.data()+7, "pi_i32_f32_sdwa", 15) != 0)
    9046             :             break;
    9047           0 :           Mnemonic = "v_cvt_rpi_i32_f32";      // "v_cvt_rpi_i32_f32_sdwa"
    9048           0 :           return;
    9049             :         }
    9050             :         break;
    9051             :       case 23:   // 2 strings to match.
    9052          80 :         if (memcmp(Mnemonic.data()+0, "v_cvt_norm_", 11) != 0)
    9053             :           break;
    9054             :         switch (Mnemonic[11]) {
    9055             :         default: break;
    9056             :         case 'i':        // 1 string to match.
    9057           0 :           if (memcmp(Mnemonic.data()+12, "16_f16_sdwa", 11) != 0)
    9058             :             break;
    9059           0 :           Mnemonic = "v_cvt_norm_i16_f16";     // "v_cvt_norm_i16_f16_sdwa"
    9060           0 :           return;
    9061             :         case 'u':        // 1 string to match.
    9062           0 :           if (memcmp(Mnemonic.data()+12, "16_f16_sdwa", 11) != 0)
    9063             :             break;
    9064           0 :           Mnemonic = "v_cvt_norm_u16_f16";     // "v_cvt_norm_u16_f16_sdwa"
    9065           0 :           return;
    9066             :         }
    9067             :         break;
    9068             :       case 24:   // 2 strings to match.
    9069          15 :         if (memcmp(Mnemonic.data()+0, "v_frexp_exp_i", 13) != 0)
    9070             :           break;
    9071             :         switch (Mnemonic[13]) {
    9072             :         default: break;
    9073             :         case '1':        // 1 string to match.
    9074           0 :           if (memcmp(Mnemonic.data()+14, "6_f16_sdwa", 10) != 0)
    9075             :             break;
    9076           0 :           Mnemonic = "v_frexp_exp_i16_f16";    // "v_frexp_exp_i16_f16_sdwa"
    9077           0 :           return;
    9078             :         case '3':        // 1 string to match.
    9079           0 :           if (memcmp(Mnemonic.data()+14, "2_f32_sdwa", 10) != 0)
    9080             :             break;
    9081           0 :           Mnemonic = "v_frexp_exp_i32_f32";    // "v_frexp_exp_i32_f32_sdwa"
    9082           0 :           return;
    9083             :         }
    9084             :         break;
    9085             :       case 31:   // 1 string to match.
    9086           0 :         if (memcmp(Mnemonic.data()+0, "v_screen_partition_4se_b32_sdwa", 31) != 0)
    9087             :           break;
    9088           0 :         Mnemonic = "v_screen_partition_4se_b32";       // "v_screen_partition_4se_b32_sdwa"
    9089           0 :         return;
    9090             :       }
    9091             :     break;
    9092             :     case 3:
    9093             :     break;
    9094             :     case 4:
    9095             :     break;
    9096             :   }
    9097             : }
    9098             : 
    9099             : enum {
    9100             :   Tie0_1_1,
    9101             :   Tie1_2_2,
    9102             : };
    9103             : 
    9104             : static const uint8_t TiedAsmOperandTable[][3] = {
    9105             :   /* Tie0_1_1 */ { 0, 1, 1 },
    9106             :   /* Tie1_2_2 */ { 1, 2, 2 },
    9107             : };
    9108             : 
    9109             : namespace {
    9110             : enum OperatorConversionKind {
    9111             :   CVT_Done,
    9112             :   CVT_Reg,
    9113             :   CVT_Tied,
    9114             :   CVT_cvtMubufAtomic,
    9115             :   CVT_cvtMubufAtomicReturn,
    9116             :   CVT_cvtMubufLds,
    9117             :   CVT_cvtMubuf,
    9118             :   CVT_cvtDS,
    9119             :   CVT_cvtDSGds,
    9120             :   CVT_cvtDSOffset01,
    9121             :   CVT_cvtExp,
    9122             :   CVT_95_Reg,
    9123             :   CVT_95_addImmOperands_95_defaultOffsetU12,
    9124             :   CVT_95_addImmOperands_95_defaultSLC,
    9125             :   CVT_95_addImmOperands_95_defaultGLC,
    9126             :   CVT_imm_95_0,
    9127             :   CVT_95_addImmOperands_95_defaultOffsetS13,
    9128             :   CVT_cvtMIMGAtomic,
    9129             :   CVT_cvtMIMG,
    9130             :   CVT_95_addRegOrImmOperands,
    9131             :   CVT_95_addImmOperands,
    9132             :   CVT_95_addImmOperands_95_defaultSMRDOffset20,
    9133             :   CVT_95_addSoppBrTargetOperands,
    9134             :   CVT_95_addImmOperands_95_defaultSMRDOffset8,
    9135             :   CVT_95_addImmOperands_95_defaultSMRDLiteralOffset,
    9136             :   CVT_cvtMtbuf,
    9137             :   CVT_95_addImmOperands_95_defaultRowMask,
    9138             :   CVT_95_addImmOperands_95_defaultBankMask,
    9139             :   CVT_95_addImmOperands_95_defaultBoundCtrl,
    9140             :   CVT_cvtSdwaVOP2b,
    9141             :   CVT_cvtVOP3,
    9142             :   CVT_cvtDPP,
    9143             :   CVT_cvtSdwaVOP2,
    9144             :   CVT_cvtVOP3OpSel,
    9145             :   CVT_cvtSdwaVOP1,
    9146             :   CVT_cvtSdwaVOPC,
    9147             :   CVT_cvtVOP3P,
    9148             :   CVT_cvtVOP3Interp,
    9149             :   CVT_95_addKImmFP16Operands,
    9150             :   CVT_95_addKImmFP32Operands,
    9151             :   CVT_NUM_CONVERTERS
    9152             : };
    9153             : 
    9154             : enum InstructionConversionKind {
    9155             :   ConvertCustom_cvtMubufAtomic,
    9156             :   ConvertCustom_cvtMubufAtomicReturn,
    9157             :   ConvertCustom_cvtMubufLds,
    9158             :   ConvertCustom_cvtMubuf,
    9159             :   Convert_NoOperands,
    9160             :   ConvertCustom_cvtDS,
    9161             :   ConvertCustom_cvtDSGds,
    9162             :   ConvertCustom_cvtDSOffset01,
    9163             :   ConvertCustom_cvtExp,
    9164             :   Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmSLC1_3,
    9165             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetU121_3__ImmSLC1_5,
    9166             :   Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmGLC1_3__ImmSLC1_4,
    9167             :   Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmGLC1_3__ImmSLC1_4__imm_95_0,
    9168             :   Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmSLC1_4,
    9169             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmSLC1_4,
    9170             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_4__ImmSLC1_6,
    9171             :   Convert__Reg1_0__Reg1_1__Reg1_2__Reg1_3__ImmOffsetS131_4__ImmSLC1_6,
    9172             :   Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9173             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9174             :   Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5__imm_95_0,
    9175             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5__imm_95_0,
    9176             :   ConvertCustom_cvtMIMGAtomic,
    9177             :   ConvertCustom_cvtMIMG,
    9178             :   Convert__Reg1_0__SSrcB321_1,
    9179             :   Convert__Reg1_0__SSrcB321_1__SSrcB321_2,
    9180             :   Convert__Reg1_0__Tie0_1_1__S16Imm1_1,
    9181             :   Convert__Reg1_0__SSrcB641_1__SSrcB641_2,
    9182             :   Convert__Reg1_0__SSrcB641_1,
    9183             :   Convert__Reg1_0__SSrcB641_1__SSrcB321_2,
    9184             :   Convert__Imm1_0__Reg1_1__Reg1_2,
    9185             :   Convert__Imm1_0__Reg1_1__ImmSMRDOffset201_2,
    9186             :   Convert__Reg1_0__Reg1_1__Reg1_2,
    9187             :   Convert__Reg1_0__Reg1_1__ImmSMRDOffset201_2,
    9188             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2,
    9189             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__ImmSMRDOffset201_2,
    9190             :   Convert__SSrcB321_0__SSrcB321_1,
    9191             :   Convert__SSrcB641_0__SSrcB321_1,
    9192             :   Convert__SoppBrTarget1_0,
    9193             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmGLC1_3,
    9194             :   Convert__Reg1_0__Reg1_1__ImmSMRDOffset81_2__ImmGLC1_3,
    9195             :   Convert__Reg1_0__Reg1_1__ImmSMRDOffset201_2__ImmGLC1_3,
    9196             :   Convert__Reg1_0__Reg1_1__ImmSMRDLiteralOffset1_2__ImmGLC1_3,
    9197             :   Convert__Reg1_0__S16Imm1_1,
    9198             :   Convert__SCSrcB641_0__SCSrcB641_1,
    9199             :   Convert__Reg1_0,
    9200             :   Convert__SSrcB641_0__SSrcB641_1,
    9201             :   Convert__Reg1_0__U16Imm1_1,
    9202             :   Convert__Reg1_0__Reg1_1,
    9203             :   Convert__Reg1_0__ImmSMRDOffset201_1,
    9204             :   Convert__Imm1_0,
    9205             :   Convert__Reg1_0__ImmHwreg1_1,
    9206             :   Convert__SendMsg1_0,
    9207             :   Convert__SSrcB321_0,
    9208             :   Convert__GPRIdxMode1_0,
    9209             :   Convert__SSrcB321_0__GPRIdxMode1_1,
    9210             :   Convert__Reg1_1__ImmHwreg1_0,
    9211             :   Convert__Imm1_1__ImmHwreg1_0,
    9212             :   Convert__SWaitCnt1_0,
    9213             :   Convert__Reg1_0__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9214             :   Convert__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9215             :   Convert__Reg1_1__Reg1_0__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9216             :   ConvertCustom_cvtMtbuf,
    9217             :   Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2__VCSrcB321_3,
    9218             :   Convert__Reg1_0__VSrcB321_2__Reg1_3,
    9219             :   Convert__Reg1_0__Reg1_1__VCSrcB321_2__VCSrcB321_3,
    9220             :   Convert__Reg1_0__Tie0_1_1__Reg1_2__Reg1_3__ImmDPPCtrl1_4__ImmRowMask1_5__ImmBankMask1_6__ImmBoundCtrl1_7,
    9221             :   ConvertCustom_cvtSdwaVOP2b,
    9222             :   Convert__Reg1_0__VSrcF161_1__Reg1_2,
    9223             :   ConvertCustom_cvtVOP3,
    9224             :   ConvertCustom_cvtDPP,
    9225             :   ConvertCustom_cvtSdwaVOP2,
    9226             :   Convert__Reg1_0__VSrcF321_1__Reg1_2,
    9227             :   ConvertCustom_cvtVOP3OpSel,
    9228             :   Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2,
    9229             :   Convert__Reg1_0__VSrcB161_1__Reg1_2,
    9230             :   Convert__Reg1_0__VCSrcB161_1__VCSrcB161_2,
    9231             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2__ImmDPPCtrl1_3__ImmRowMask1_4__ImmBankMask1_5__ImmBoundCtrl1_6,
    9232             :   Convert__Reg1_0__VSrcB321_1__Reg1_2,
    9233             :   Convert__Reg1_0__VCSrcB321_2__Reg1_3,
    9234             :   Convert__Reg1_0__Reg1_1__VCSrcB321_2__VCSrcB321_3__Reg1_4,
    9235             :   Convert__Reg1_0__Tie0_1_1__Reg1_2__Reg1_3__ImmDPPCtrl1_5__ImmRowMask1_6__ImmBankMask1_7__ImmBoundCtrl1_8,
    9236             :   Convert__Reg1_0__VCSrcB641_1__VCSrcB321_2,
    9237             :   Convert__Reg1_0__VCSrcB321_1__VCSrcB641_2,
    9238             :   Convert__Reg1_0__VSrcB321_1,
    9239             :   Convert__Reg1_0__VCSrcB321_1,
    9240             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__ImmDPPCtrl1_2__ImmRowMask1_3__ImmBankMask1_4__ImmBoundCtrl1_5,
    9241             :   ConvertCustom_cvtSdwaVOP1,
    9242             :   Convert__Reg1_0__VSrcF161_1,
    9243             :   Convert__Reg1_0__VSrcF321_1,
    9244             :   Convert__Reg1_0__VSrcF641_1,
    9245             :   Convert__VSrcF161_1__Reg1_2,
    9246             :   ConvertCustom_cvtSdwaVOPC,
    9247             :   Convert__VSrcF321_1__Reg1_2,
    9248             :   Convert__VSrcF641_1__Reg1_2,
    9249             :   Convert__VSrcB161_1__Reg1_2,
    9250             :   Convert__VSrcB321_1__Reg1_2,
    9251             :   Convert__VSrcB641_1__Reg1_2,
    9252             :   Convert__Reg1_0__VCSrcB641_1__VCSrcB641_2,
    9253             :   Convert__Reg1_0__VCSrcB321_1__Reg1_2,
    9254             :   Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2__Reg1_3,
    9255             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2__ImmDPPCtrl1_4__ImmRowMask1_5__ImmBankMask1_6__ImmBoundCtrl1_7,
    9256             :   Convert__Reg1_0__VSrcB161_1,
    9257             :   Convert__Reg1_0__imm_95_0__VCSrcF321_1__imm_95_0__VCSrcF321_2__imm_95_0,
    9258             :   Convert__Reg1_0__imm_95_0__VCSrcF321_1__imm_95_0__VCSrcF321_2__imm_95_0__imm_95_0,
    9259             :   Convert__Reg1_0__Reg1_1__VCSrcF321_2__VCSrcF321_3__VCSrcF321_4,
    9260             :   Convert__Reg1_0__Reg1_1__VCSrcF641_2__VCSrcF641_3__VCSrcF641_4,
    9261             :   ConvertCustom_cvtVOP3P,
    9262             :   Convert__Reg1_0__VSrcF321_1__Reg1_2__Tie0_1_1,
    9263             :   Convert__Reg1_0__InterpSlot1_1__Attr1_2__AttrChan1_3,
    9264             :   ConvertCustom_cvtVOP3Interp,
    9265             :   Convert__Reg1_0__Reg1_1__Attr1_2__AttrChan1_3,
    9266             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__Attr1_2__AttrChan1_3,
    9267             :   Convert__Reg1_0__VSrcF161_1__Reg1_2__Tie0_1_1,
    9268             :   Convert__Reg1_0__VCSrcF321_1__Reg1_2__KImmFP161_3,
    9269             :   Convert__Reg1_0__VCSrcF321_1__Reg1_2__KImmFP321_3,
    9270             :   Convert__Reg1_0__VCSrcF321_1__KImmFP161_2__Reg1_3,
    9271             :   Convert__Reg1_0__VCSrcF321_1__KImmFP321_2__Reg1_3,
    9272             :   Convert__ImmDPPCtrl1_0__ImmRowMask1_1__ImmBankMask1_2__ImmBoundCtrl1_3,
    9273             :   Convert__Reg1_0__Reg1_1__SCSrcB321_2,
    9274             :   Convert__Reg1_0__Reg1_1__Tie1_2_2__Tie0_1_1,
    9275             :   Convert__Reg1_0__SSrcB321_1__SCSrcB321_2__Tie0_1_1,
    9276             :   Convert__Reg1_0__SCSrcB321_1__SCSrcB321_2__Tie0_1_1,
    9277             :   CVT_NUM_SIGNATURES
    9278             : };
    9279             : 
    9280             : } // end anonymous namespace
    9281             : 
    9282             : static const uint8_t ConversionTable[CVT_NUM_SIGNATURES][17] = {
    9283             :   // ConvertCustom_cvtMubufAtomic
    9284             :   { CVT_cvtMubufAtomic, 0, CVT_Done },
    9285             :   // ConvertCustom_cvtMubufAtomicReturn
    9286             :   { CVT_cvtMubufAtomicReturn, 0, CVT_Done },
    9287             :   // ConvertCustom_cvtMubufLds
    9288             :   { CVT_cvtMubufLds, 0, CVT_Done },
    9289             :   // ConvertCustom_cvtMubuf
    9290             :   { CVT_cvtMubuf, 0, CVT_Done },
    9291             :   // Convert_NoOperands
    9292             :   { CVT_Done },
    9293             :   // ConvertCustom_cvtDS
    9294             :   { CVT_cvtDS, 0, CVT_Done },
    9295             :   // ConvertCustom_cvtDSGds
    9296             :   { CVT_cvtDSGds, 0, CVT_Done },
    9297             :   // ConvertCustom_cvtDSOffset01
    9298             :   { CVT_cvtDSOffset01, 0, CVT_Done },
    9299             :   // ConvertCustom_cvtExp
    9300             :   { CVT_cvtExp, 0, CVT_Done },
    9301             :   // Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmSLC1_3
    9302             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultOffsetU12, 3, CVT_95_addImmOperands_95_defaultSLC, 4, CVT_Done },
    9303             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetU121_3__ImmSLC1_5
    9304             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultOffsetU12, 4, CVT_95_addImmOperands_95_defaultSLC, 6, CVT_Done },
    9305             :   // Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmGLC1_3__ImmSLC1_4
    9306             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultOffsetU12, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_95_addImmOperands_95_defaultSLC, 5, CVT_Done },
    9307             :   // Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmGLC1_3__ImmSLC1_4__imm_95_0
    9308             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultOffsetU12, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_95_addImmOperands_95_defaultSLC, 5, CVT_imm_95_0, 0, CVT_Done },
    9309             :   // Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmSLC1_4
    9310             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultSLC, 5, CVT_Done },
    9311             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmSLC1_4
    9312             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultSLC, 5, CVT_Done },
    9313             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_4__ImmSLC1_6
    9314             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultOffsetS13, 5, CVT_95_addImmOperands_95_defaultSLC, 7, CVT_Done },
    9315             :   // Convert__Reg1_0__Reg1_1__Reg1_2__Reg1_3__ImmOffsetS131_4__ImmSLC1_6
    9316             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_Reg, 4, CVT_95_addImmOperands_95_defaultOffsetS13, 5, CVT_95_addImmOperands_95_defaultSLC, 7, CVT_Done },
    9317             :   // Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    9318             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultGLC, 5, CVT_95_addImmOperands_95_defaultSLC, 6, CVT_Done },
    9319             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    9320             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultGLC, 5, CVT_95_addImmOperands_95_defaultSLC, 6, CVT_Done },
    9321             :   // Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5__imm_95_0
    9322             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultGLC, 5, CVT_95_addImmOperands_95_defaultSLC, 6, CVT_imm_95_0, 0, CVT_Done },
    9323             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5__imm_95_0
    9324             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultGLC, 5, CVT_95_addImmOperands_95_defaultSLC, 6, CVT_imm_95_0, 0, CVT_Done },
    9325             :   // ConvertCustom_cvtMIMGAtomic
    9326             :   { CVT_cvtMIMGAtomic, 0, CVT_Done },
    9327             :   // ConvertCustom_cvtMIMG
    9328             :   { CVT_cvtMIMG, 0, CVT_Done },
    9329             :   // Convert__Reg1_0__SSrcB321_1
    9330             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9331             :   // Convert__Reg1_0__SSrcB321_1__SSrcB321_2
    9332             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9333             :   // Convert__Reg1_0__Tie0_1_1__S16Imm1_1
    9334             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_addImmOperands, 2, CVT_Done },
    9335             :   // Convert__Reg1_0__SSrcB641_1__SSrcB641_2
    9336             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9337             :   // Convert__Reg1_0__SSrcB641_1
    9338             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9339             :   // Convert__Reg1_0__SSrcB641_1__SSrcB321_2
    9340             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9341             :   // Convert__Imm1_0__Reg1_1__Reg1_2
    9342             :   { CVT_95_addImmOperands, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_Done },
    9343             :   // Convert__Imm1_0__Reg1_1__ImmSMRDOffset201_2
    9344             :   { CVT_95_addImmOperands, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset20, 3, CVT_Done },
    9345             :   // Convert__Reg1_0__Reg1_1__Reg1_2
    9346             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_Done },
    9347             :   // Convert__Reg1_0__Reg1_1__ImmSMRDOffset201_2
    9348             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset20, 3, CVT_Done },
    9349             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2
    9350             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_Done },
    9351             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__ImmSMRDOffset201_2
    9352             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset20, 3, CVT_Done },
    9353             :   // Convert__SSrcB321_0__SSrcB321_1
    9354             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9355             :   // Convert__SSrcB641_0__SSrcB321_1
    9356             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9357             :   // Convert__SoppBrTarget1_0
    9358             :   { CVT_95_addSoppBrTargetOperands, 1, CVT_Done },
    9359             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmGLC1_3
    9360             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_Done },
    9361             :   // Convert__Reg1_0__Reg1_1__ImmSMRDOffset81_2__ImmGLC1_3
    9362             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset8, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_Done },
    9363             :   // Convert__Reg1_0__Reg1_1__ImmSMRDOffset201_2__ImmGLC1_3
    9364             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset20, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_Done },
    9365             :   // Convert__Reg1_0__Reg1_1__ImmSMRDLiteralOffset1_2__ImmGLC1_3
    9366             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDLiteralOffset, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_Done },
    9367             :   // Convert__Reg1_0__S16Imm1_1
    9368             :   { CVT_95_Reg, 1, CVT_95_addImmOperands, 2, CVT_Done },
    9369             :   // Convert__SCSrcB641_0__SCSrcB641_1
    9370             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9371             :   // Convert__Reg1_0
    9372             :   { CVT_95_Reg, 1, CVT_Done },
    9373             :   // Convert__SSrcB641_0__SSrcB641_1
    9374             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9375             :   // Convert__Reg1_0__U16Imm1_1
    9376             :   { CVT_95_Reg, 1, CVT_95_addImmOperands, 2, CVT_Done },
    9377             :   // Convert__Reg1_0__Reg1_1
    9378             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_Done },
    9379             :   // Convert__Reg1_0__ImmSMRDOffset201_1
    9380             :   { CVT_95_Reg, 1, CVT_95_addImmOperands_95_defaultSMRDOffset20, 2, CVT_Done },
    9381             :   // Convert__Imm1_0
    9382             :   { CVT_95_addImmOperands, 1, CVT_Done },
    9383             :   // Convert__Reg1_0__ImmHwreg1_1
    9384             :   { CVT_95_Reg, 1, CVT_95_addImmOperands, 2, CVT_Done },
    9385             :   // Convert__SendMsg1_0
    9386             :   { CVT_95_addImmOperands, 1, CVT_Done },
    9387             :   // Convert__SSrcB321_0
    9388             :   { CVT_95_addRegOrImmOperands, 1, CVT_Done },
    9389             :   // Convert__GPRIdxMode1_0
    9390             :   { CVT_95_addImmOperands, 1, CVT_Done },
    9391             :   // Convert__SSrcB321_0__GPRIdxMode1_1
    9392             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addImmOperands, 2, CVT_Done },
    9393             :   // Convert__Reg1_1__ImmHwreg1_0
    9394             :   { CVT_95_Reg, 2, CVT_95_addImmOperands, 1, CVT_Done },
    9395             :   // Convert__Imm1_1__ImmHwreg1_0
    9396             :   { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_Done },
    9397             :   // Convert__SWaitCnt1_0
    9398             :   { CVT_95_addImmOperands, 1, CVT_Done },
    9399             :   // Convert__Reg1_0__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    9400             :   { CVT_95_Reg, 1, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultGLC, 5, CVT_95_addImmOperands_95_defaultSLC, 6, CVT_Done },
    9401             :   // Convert__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    9402             :   { CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultGLC, 5, CVT_95_addImmOperands_95_defaultSLC, 6, CVT_Done },
    9403             :   // Convert__Reg1_1__Reg1_0__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    9404             :   { CVT_95_Reg, 2, CVT_95_Reg, 1, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultGLC, 5, CVT_95_addImmOperands_95_defaultSLC, 6, CVT_Done },
    9405             :   // ConvertCustom_cvtMtbuf
    9406             :   { CVT_cvtMtbuf, 0, CVT_Done },
    9407             :   // Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2__VCSrcB321_3
    9408             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_Done },
    9409             :   // Convert__Reg1_0__VSrcB321_2__Reg1_3
    9410             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 3, CVT_95_Reg, 4, CVT_Done },
    9411             :   // Convert__Reg1_0__Reg1_1__VCSrcB321_2__VCSrcB321_3
    9412             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_Done },
    9413             :   // Convert__Reg1_0__Tie0_1_1__Reg1_2__Reg1_3__ImmDPPCtrl1_4__ImmRowMask1_5__ImmBankMask1_6__ImmBoundCtrl1_7
    9414             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 3, CVT_95_Reg, 4, CVT_95_addImmOperands, 5, CVT_95_addImmOperands_95_defaultRowMask, 6, CVT_95_addImmOperands_95_defaultBankMask, 7, CVT_95_addImmOperands_95_defaultBoundCtrl, 8, CVT_Done },
    9415             :   // ConvertCustom_cvtSdwaVOP2b
    9416             :   { CVT_cvtSdwaVOP2b, 0, CVT_Done },
    9417             :   // Convert__Reg1_0__VSrcF161_1__Reg1_2
    9418             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9419             :   // ConvertCustom_cvtVOP3
    9420             :   { CVT_cvtVOP3, 0, CVT_Done },
    9421             :   // ConvertCustom_cvtDPP
    9422             :   { CVT_cvtDPP, 0, CVT_Done },
    9423             :   // ConvertCustom_cvtSdwaVOP2
    9424             :   { CVT_cvtSdwaVOP2, 0, CVT_Done },
    9425             :   // Convert__Reg1_0__VSrcF321_1__Reg1_2
    9426             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9427             :   // ConvertCustom_cvtVOP3OpSel
    9428             :   { CVT_cvtVOP3OpSel, 0, CVT_Done },
    9429             :   // Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2
    9430             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9431             :   // Convert__Reg1_0__VSrcB161_1__Reg1_2
    9432             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9433             :   // Convert__Reg1_0__VCSrcB161_1__VCSrcB161_2
    9434             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9435             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2__ImmDPPCtrl1_3__ImmRowMask1_4__ImmBankMask1_5__ImmBoundCtrl1_6
    9436             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands, 4, CVT_95_addImmOperands_95_defaultRowMask, 5, CVT_95_addImmOperands_95_defaultBankMask, 6, CVT_95_addImmOperands_95_defaultBoundCtrl, 7, CVT_Done },
    9437             :   // Convert__Reg1_0__VSrcB321_1__Reg1_2
    9438             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9439             :   // Convert__Reg1_0__VCSrcB321_2__Reg1_3
    9440             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 3, CVT_95_Reg, 4, CVT_Done },
    9441             :   // Convert__Reg1_0__Reg1_1__VCSrcB321_2__VCSrcB321_3__Reg1_4
    9442             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_95_Reg, 5, CVT_Done },
    9443             :   // Convert__Reg1_0__Tie0_1_1__Reg1_2__Reg1_3__ImmDPPCtrl1_5__ImmRowMask1_6__ImmBankMask1_7__ImmBoundCtrl1_8
    9444             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 3, CVT_95_Reg, 4, CVT_95_addImmOperands, 6, CVT_95_addImmOperands_95_defaultRowMask, 7, CVT_95_addImmOperands_95_defaultBankMask, 8, CVT_95_addImmOperands_95_defaultBoundCtrl, 9, CVT_Done },
    9445             :   // Convert__Reg1_0__VCSrcB641_1__VCSrcB321_2
    9446             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9447             :   // Convert__Reg1_0__VCSrcB321_1__VCSrcB641_2
    9448             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9449             :   // Convert__Reg1_0__VSrcB321_1
    9450             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9451             :   // Convert__Reg1_0__VCSrcB321_1
    9452             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9453             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__ImmDPPCtrl1_2__ImmRowMask1_3__ImmBankMask1_4__ImmBoundCtrl1_5
    9454             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands_95_defaultRowMask, 4, CVT_95_addImmOperands_95_defaultBankMask, 5, CVT_95_addImmOperands_95_defaultBoundCtrl, 6, CVT_Done },
    9455             :   // ConvertCustom_cvtSdwaVOP1
    9456             :   { CVT_cvtSdwaVOP1, 0, CVT_Done },
    9457             :   // Convert__Reg1_0__VSrcF161_1
    9458             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9459             :   // Convert__Reg1_0__VSrcF321_1
    9460             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9461             :   // Convert__Reg1_0__VSrcF641_1
    9462             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9463             :   // Convert__VSrcF161_1__Reg1_2
    9464             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9465             :   // ConvertCustom_cvtSdwaVOPC
    9466             :   { CVT_cvtSdwaVOPC, 0, CVT_Done },
    9467             :   // Convert__VSrcF321_1__Reg1_2
    9468             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9469             :   // Convert__VSrcF641_1__Reg1_2
    9470             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9471             :   // Convert__VSrcB161_1__Reg1_2
    9472             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9473             :   // Convert__VSrcB321_1__Reg1_2
    9474             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9475             :   // Convert__VSrcB641_1__Reg1_2
    9476             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9477             :   // Convert__Reg1_0__VCSrcB641_1__VCSrcB641_2
    9478             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9479             :   // Convert__Reg1_0__VCSrcB321_1__Reg1_2
    9480             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9481             :   // Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2__Reg1_3
    9482             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_Reg, 4, CVT_Done },
    9483             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2__ImmDPPCtrl1_4__ImmRowMask1_5__ImmBankMask1_6__ImmBoundCtrl1_7
    9484             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands, 5, CVT_95_addImmOperands_95_defaultRowMask, 6, CVT_95_addImmOperands_95_defaultBankMask, 7, CVT_95_addImmOperands_95_defaultBoundCtrl, 8, CVT_Done },
    9485             :   // Convert__Reg1_0__VSrcB161_1
    9486             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9487             :   // Convert__Reg1_0__imm_95_0__VCSrcF321_1__imm_95_0__VCSrcF321_2__imm_95_0
    9488             :   { CVT_95_Reg, 1, CVT_imm_95_0, 0, CVT_95_addRegOrImmOperands, 2, CVT_imm_95_0, 0, CVT_95_addRegOrImmOperands, 3, CVT_imm_95_0, 0, CVT_Done },
    9489             :   // Convert__Reg1_0__imm_95_0__VCSrcF321_1__imm_95_0__VCSrcF321_2__imm_95_0__imm_95_0
    9490             :   { CVT_95_Reg, 1, CVT_imm_95_0, 0, CVT_95_addRegOrImmOperands, 2, CVT_imm_95_0, 0, CVT_95_addRegOrImmOperands, 3, CVT_imm_95_0, 0, CVT_imm_95_0, 0, CVT_Done },
    9491             :   // Convert__Reg1_0__Reg1_1__VCSrcF321_2__VCSrcF321_3__VCSrcF321_4
    9492             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_95_addRegOrImmOperands, 5, CVT_Done },
    9493             :   // Convert__Reg1_0__Reg1_1__VCSrcF641_2__VCSrcF641_3__VCSrcF641_4
    9494             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_95_addRegOrImmOperands, 5, CVT_Done },
    9495             :   // ConvertCustom_cvtVOP3P
    9496             :   { CVT_cvtVOP3P, 0, CVT_Done },
    9497             :   // Convert__Reg1_0__VSrcF321_1__Reg1_2__Tie0_1_1
    9498             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Tied, Tie0_1_1, CVT_Done },
    9499             :   // Convert__Reg1_0__InterpSlot1_1__Attr1_2__AttrChan1_3
    9500             :   { CVT_95_Reg, 1, CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done },
    9501             :   // ConvertCustom_cvtVOP3Interp
    9502             :   { CVT_cvtVOP3Interp, 0, CVT_Done },
    9503             :   // Convert__Reg1_0__Reg1_1__Attr1_2__AttrChan1_3
    9504             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done },
    9505             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__Attr1_2__AttrChan1_3
    9506             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done },
    9507             :   // Convert__Reg1_0__VSrcF161_1__Reg1_2__Tie0_1_1
    9508             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Tied, Tie0_1_1, CVT_Done },
    9509             :   // Convert__Reg1_0__VCSrcF321_1__Reg1_2__KImmFP161_3
    9510             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_95_addKImmFP16Operands, 4, CVT_Done },
    9511             :   // Convert__Reg1_0__VCSrcF321_1__Reg1_2__KImmFP321_3
    9512             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_95_addKImmFP32Operands, 4, CVT_Done },
    9513             :   // Convert__Reg1_0__VCSrcF321_1__KImmFP161_2__Reg1_3
    9514             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addKImmFP16Operands, 3, CVT_95_Reg, 4, CVT_Done },
    9515             :   // Convert__Reg1_0__VCSrcF321_1__KImmFP321_2__Reg1_3
    9516             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addKImmFP32Operands, 3, CVT_95_Reg, 4, CVT_Done },
    9517             :   // Convert__ImmDPPCtrl1_0__ImmRowMask1_1__ImmBankMask1_2__ImmBoundCtrl1_3
    9518             :   { CVT_95_addImmOperands, 1, CVT_95_addImmOperands_95_defaultRowMask, 2, CVT_95_addImmOperands_95_defaultBankMask, 3, CVT_95_addImmOperands_95_defaultBoundCtrl, 4, CVT_Done },
    9519             :   // Convert__Reg1_0__Reg1_1__SCSrcB321_2
    9520             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9521             :   // Convert__Reg1_0__Reg1_1__Tie1_2_2__Tie0_1_1
    9522             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_Tied, Tie1_2_2, CVT_Tied, Tie0_1_1, CVT_Done },
    9523             :   // Convert__Reg1_0__SSrcB321_1__SCSrcB321_2__Tie0_1_1
    9524             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Tied, Tie0_1_1, CVT_Done },
    9525             :   // Convert__Reg1_0__SCSrcB321_1__SCSrcB321_2__Tie0_1_1
    9526             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Tied, Tie0_1_1, CVT_Done },
    9527             : };
    9528             : 
    9529      160392 : void AMDGPUAsmParser::
    9530             : convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
    9531             :                 const OperandVector &Operands,
    9532             :                 const SmallBitVector &OptionalOperandsMask) {
    9533             :   assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
    9534      160392 :   const uint8_t *Converter = ConversionTable[Kind];
    9535      160392 :   unsigned DefaultsOffset[14] = { 0 };
    9536             :   assert(OptionalOperandsMask.size() == 13);
    9537     2245488 :   for (unsigned i = 0, NumDefaults = 0; i < 13; ++i) {
    9538     2085096 :     DefaultsOffset[i + 1] = NumDefaults;
    9539     2671651 :     NumDefaults += (OptionalOperandsMask[i] ? 1 : 0);
    9540             :   }
    9541             :   unsigned OpIdx;
    9542             :   Inst.setOpcode(Opcode);
    9543      476323 :   for (const uint8_t *p = Converter; *p; p+= 2) {
    9544      315931 :     OpIdx = *(p + 1) - DefaultsOffset[*(p + 1)];
    9545      315931 :     switch (*p) {
    9546           0 :     default: llvm_unreachable("invalid conversion entry!");
    9547           0 :     case CVT_Reg:</