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-10-20 13:21:21 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 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_ashr_i64_e64"
    2279           0 :                 Mnemonic = "v_ashr_i64";
    2280             :               return;
    2281             :             }
    2282             :             break;
    2283             :           }
    2284             :           break;
    2285             :         case 'c':        // 3 strings to match.
    2286        4266 :           if (memcmp(Mnemonic.data()+3, "eil_f", 5) != 0)
    2287             :             break;
    2288             :           switch (Mnemonic[8]) {
    2289             :           default: break;
    2290             :           case '1':      // 1 string to match.
    2291           0 :             if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2292             :               break;
    2293           0 :             Mnemonic = "v_ceil_f16";   // "v_ceil_f16_e64"
    2294           0 :             return;
    2295             :           case '3':      // 1 string to match.
    2296           0 :             if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2297             :               break;
    2298           0 :             Mnemonic = "v_ceil_f32";   // "v_ceil_f32_e64"
    2299           0 :             return;
    2300             :           case '6':      // 1 string to match.
    2301           0 :             if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2302             :               break;
    2303           0 :             Mnemonic = "v_ceil_f64";   // "v_ceil_f64_e64"
    2304           0 :             return;
    2305             :           }
    2306             :           break;
    2307           0 :         case 'f':        // 4 strings to match.
    2308             :           switch (Mnemonic[3]) {
    2309             :           default: break;
    2310           0 :           case 'f':      // 3 strings to match.
    2311           0 :             if (Mnemonic[4] != 'b')
    2312             :               break;
    2313             :             switch (Mnemonic[5]) {
    2314             :             default: break;
    2315           0 :             case 'h':    // 2 strings to match.
    2316           0 :               if (Mnemonic[6] != '_')
    2317             :                 break;
    2318             :               switch (Mnemonic[7]) {
    2319             :               default: break;
    2320             :               case 'i':  // 1 string to match.
    2321           0 :                 if (memcmp(Mnemonic.data()+8, "32_e64", 6) != 0)
    2322             :                   break;
    2323           0 :                 Mnemonic = "v_ffbh_i32";       // "v_ffbh_i32_e64"
    2324           0 :                 return;
    2325             :               case 'u':  // 1 string to match.
    2326           0 :                 if (memcmp(Mnemonic.data()+8, "32_e64", 6) != 0)
    2327             :                   break;
    2328           0 :                 Mnemonic = "v_ffbh_u32";       // "v_ffbh_u32_e64"
    2329           0 :                 return;
    2330             :               }
    2331             :               break;
    2332             :             case 'l':    // 1 string to match.
    2333           0 :               if (memcmp(Mnemonic.data()+6, "_b32_e64", 8) != 0)
    2334             :                 break;
    2335           0 :               Mnemonic = "v_ffbl_b32";         // "v_ffbl_b32_e64"
    2336           0 :               return;
    2337             :             }
    2338             :             break;
    2339             :           case 'm':      // 1 string to match.
    2340           0 :             if (memcmp(Mnemonic.data()+4, "ac_f32_e64", 10) != 0)
    2341             :               break;
    2342           0 :             Mnemonic = "v_fmac_f32";   // "v_fmac_f32_e64"
    2343           0 :             return;
    2344             :           }
    2345             :           break;
    2346             :         case 'l':        // 4 strings to match.
    2347          92 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    2348             :             break;
    2349             :           switch (Mnemonic[5]) {
    2350             :           default: break;
    2351             :           case 'l':      // 2 strings to match.
    2352          92 :             if (memcmp(Mnemonic.data()+6, "_b", 2) != 0)
    2353             :               break;
    2354             :             switch (Mnemonic[8]) {
    2355             :             default: break;
    2356             :             case '3':    // 1 string to match.
    2357           0 :               if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2358             :                 break;
    2359           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_lshl_b32_e64"
    2360           0 :                 Mnemonic = "v_lshl_b32";
    2361             :               return;
    2362             :             case '6':    // 1 string to match.
    2363           0 :               if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2364             :                 break;
    2365           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_lshl_b64_e64"
    2366           0 :                 Mnemonic = "v_lshl_b64";
    2367             :               return;
    2368             :             }
    2369             :             break;
    2370             :           case 'r':      // 2 strings to match.
    2371           0 :             if (memcmp(Mnemonic.data()+6, "_b", 2) != 0)
    2372             :               break;
    2373             :             switch (Mnemonic[8]) {
    2374             :             default: break;
    2375             :             case '3':    // 1 string to match.
    2376           0 :               if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2377             :                 break;
    2378           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_lshr_b32_e64"
    2379           0 :                 Mnemonic = "v_lshr_b32";
    2380             :               return;
    2381             :             case '6':    // 1 string to match.
    2382           0 :               if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2383             :                 break;
    2384           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_lshr_b64_e64"
    2385           0 :                 Mnemonic = "v_lshr_b64";
    2386             :               return;
    2387             :             }
    2388             :             break;
    2389             :           }
    2390             :           break;
    2391         133 :         case 'm':        // 18 strings to match.
    2392             :           switch (Mnemonic[3]) {
    2393             :           default: break;
    2394             :           case 'a':      // 6 strings to match.
    2395           0 :             if (memcmp(Mnemonic.data()+4, "x3_", 3) != 0)
    2396             :               break;
    2397             :             switch (Mnemonic[7]) {
    2398             :             default: break;
    2399           0 :             case 'f':    // 2 strings to match.
    2400             :               switch (Mnemonic[8]) {
    2401             :               default: break;
    2402             :               case '1':  // 1 string to match.
    2403           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2404             :                   break;
    2405           0 :                 Mnemonic = "v_max3_f16";       // "v_max3_f16_e64"
    2406           0 :                 return;
    2407             :               case '3':  // 1 string to match.
    2408           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2409             :                   break;
    2410           0 :                 Mnemonic = "v_max3_f32";       // "v_max3_f32_e64"
    2411           0 :                 return;
    2412             :               }
    2413             :               break;
    2414           0 :             case 'i':    // 2 strings to match.
    2415             :               switch (Mnemonic[8]) {
    2416             :               default: break;
    2417             :               case '1':  // 1 string to match.
    2418           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2419             :                   break;
    2420           0 :                 Mnemonic = "v_max3_i16";       // "v_max3_i16_e64"
    2421           0 :                 return;
    2422             :               case '3':  // 1 string to match.
    2423           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2424             :                   break;
    2425           0 :                 Mnemonic = "v_max3_i32";       // "v_max3_i32_e64"
    2426           0 :                 return;
    2427             :               }
    2428             :               break;
    2429           0 :             case 'u':    // 2 strings to match.
    2430             :               switch (Mnemonic[8]) {
    2431             :               default: break;
    2432             :               case '1':  // 1 string to match.
    2433           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2434             :                   break;
    2435           0 :                 Mnemonic = "v_max3_u16";       // "v_max3_u16_e64"
    2436           0 :                 return;
    2437             :               case '3':  // 1 string to match.
    2438           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2439             :                   break;
    2440           0 :                 Mnemonic = "v_max3_u32";       // "v_max3_u32_e64"
    2441           0 :                 return;
    2442             :               }
    2443             :               break;
    2444             :             }
    2445             :             break;
    2446             :           case 'e':      // 6 strings to match.
    2447           0 :             if (memcmp(Mnemonic.data()+4, "d3_", 3) != 0)
    2448             :               break;
    2449             :             switch (Mnemonic[7]) {
    2450             :             default: break;
    2451           0 :             case 'f':    // 2 strings to match.
    2452             :               switch (Mnemonic[8]) {
    2453             :               default: break;
    2454             :               case '1':  // 1 string to match.
    2455           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2456             :                   break;
    2457           0 :                 Mnemonic = "v_med3_f16";       // "v_med3_f16_e64"
    2458           0 :                 return;
    2459             :               case '3':  // 1 string to match.
    2460           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2461             :                   break;
    2462           0 :                 Mnemonic = "v_med3_f32";       // "v_med3_f32_e64"
    2463           0 :                 return;
    2464             :               }
    2465             :               break;
    2466           0 :             case 'i':    // 2 strings to match.
    2467             :               switch (Mnemonic[8]) {
    2468             :               default: break;
    2469             :               case '1':  // 1 string to match.
    2470           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2471             :                   break;
    2472           0 :                 Mnemonic = "v_med3_i16";       // "v_med3_i16_e64"
    2473           0 :                 return;
    2474             :               case '3':  // 1 string to match.
    2475           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2476             :                   break;
    2477           0 :                 Mnemonic = "v_med3_i32";       // "v_med3_i32_e64"
    2478           0 :                 return;
    2479             :               }
    2480             :               break;
    2481           0 :             case 'u':    // 2 strings to match.
    2482             :               switch (Mnemonic[8]) {
    2483             :               default: break;
    2484             :               case '1':  // 1 string to match.
    2485           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2486             :                   break;
    2487           0 :                 Mnemonic = "v_med3_u16";       // "v_med3_u16_e64"
    2488           0 :                 return;
    2489             :               case '3':  // 1 string to match.
    2490           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2491             :                   break;
    2492           0 :                 Mnemonic = "v_med3_u32";       // "v_med3_u32_e64"
    2493           0 :                 return;
    2494             :               }
    2495             :               break;
    2496             :             }
    2497             :             break;
    2498             :           case 'i':      // 6 strings to match.
    2499           0 :             if (memcmp(Mnemonic.data()+4, "n3_", 3) != 0)
    2500             :               break;
    2501             :             switch (Mnemonic[7]) {
    2502             :             default: break;
    2503           0 :             case 'f':    // 2 strings to match.
    2504             :               switch (Mnemonic[8]) {
    2505             :               default: break;
    2506             :               case '1':  // 1 string to match.
    2507           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2508             :                   break;
    2509           0 :                 Mnemonic = "v_min3_f16";       // "v_min3_f16_e64"
    2510           0 :                 return;
    2511             :               case '3':  // 1 string to match.
    2512           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2513             :                   break;
    2514           0 :                 Mnemonic = "v_min3_f32";       // "v_min3_f32_e64"
    2515           0 :                 return;
    2516             :               }
    2517             :               break;
    2518           0 :             case 'i':    // 2 strings to match.
    2519             :               switch (Mnemonic[8]) {
    2520             :               default: break;
    2521             :               case '1':  // 1 string to match.
    2522           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2523             :                   break;
    2524           0 :                 Mnemonic = "v_min3_i16";       // "v_min3_i16_e64"
    2525           0 :                 return;
    2526             :               case '3':  // 1 string to match.
    2527           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2528             :                   break;
    2529           0 :                 Mnemonic = "v_min3_i32";       // "v_min3_i32_e64"
    2530           0 :                 return;
    2531             :               }
    2532             :               break;
    2533           0 :             case 'u':    // 2 strings to match.
    2534             :               switch (Mnemonic[8]) {
    2535             :               default: break;
    2536             :               case '1':  // 1 string to match.
    2537           0 :                 if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2538             :                   break;
    2539           0 :                 Mnemonic = "v_min3_u16";       // "v_min3_u16_e64"
    2540           0 :                 return;
    2541             :               case '3':  // 1 string to match.
    2542           0 :                 if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2543             :                   break;
    2544           0 :                 Mnemonic = "v_min3_u32";       // "v_min3_u32_e64"
    2545           0 :                 return;
    2546             :               }
    2547             :               break;
    2548             :             }
    2549             :             break;
    2550             :           }
    2551             :           break;
    2552             :         case 'p':        // 1 string to match.
    2553          89 :           if (memcmp(Mnemonic.data()+3, "erm_b32_e64", 11) != 0)
    2554             :             break;
    2555           0 :           Mnemonic = "v_perm_b32";     // "v_perm_b32_e64"
    2556           0 :           return;
    2557           0 :         case 's':        // 4 strings to match.
    2558             :           switch (Mnemonic[3]) {
    2559             :           default: break;
    2560             :           case 'q':      // 3 strings to match.
    2561           0 :             if (memcmp(Mnemonic.data()+4, "rt_f", 4) != 0)
    2562             :               break;
    2563             :             switch (Mnemonic[8]) {
    2564             :             default: break;
    2565             :             case '1':    // 1 string to match.
    2566           0 :               if (memcmp(Mnemonic.data()+9, "6_e64", 5) != 0)
    2567             :                 break;
    2568           0 :               Mnemonic = "v_sqrt_f16";         // "v_sqrt_f16_e64"
    2569           0 :               return;
    2570             :             case '3':    // 1 string to match.
    2571           0 :               if (memcmp(Mnemonic.data()+9, "2_e64", 5) != 0)
    2572             :                 break;
    2573           0 :               Mnemonic = "v_sqrt_f32";         // "v_sqrt_f32_e64"
    2574           0 :               return;
    2575             :             case '6':    // 1 string to match.
    2576           0 :               if (memcmp(Mnemonic.data()+9, "4_e64", 5) != 0)
    2577             :                 break;
    2578           0 :               Mnemonic = "v_sqrt_f64";         // "v_sqrt_f64_e64"
    2579           0 :               return;
    2580             :             }
    2581             :             break;
    2582             :           case 'u':      // 1 string to match.
    2583           0 :             if (memcmp(Mnemonic.data()+4, "bb_u32_e64", 10) != 0)
    2584             :               break;
    2585           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subb_u32_e64"
    2586           0 :               Mnemonic = "v_subb_u32";
    2587             :             return;
    2588             :           }
    2589             :           break;
    2590             :         case 'x':        // 1 string to match.
    2591           0 :           if (memcmp(Mnemonic.data()+3, "nor_b32_e64", 11) != 0)
    2592             :             break;
    2593           0 :           Mnemonic = "v_xnor_b32";     // "v_xnor_b32_e64"
    2594           0 :           return;
    2595             :         }
    2596             :         break;
    2597             :       case 15:   // 38 strings to match.
    2598        3771 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    2599             :           break;
    2600             :         switch (Mnemonic[2]) {
    2601             :         default: break;
    2602             :         case 'b':        // 1 string to match.
    2603           0 :           if (memcmp(Mnemonic.data()+3, "frev_b32_e64", 12) != 0)
    2604             :             break;
    2605           0 :           Mnemonic = "v_bfrev_b32";    // "v_bfrev_b32_e64"
    2606           0 :           return;
    2607             :         case 'c':        // 21 strings to match.
    2608        1271 :           if (memcmp(Mnemonic.data()+3, "mp_", 3) != 0)
    2609             :             break;
    2610             :           switch (Mnemonic[6]) {
    2611             :           default: break;
    2612           0 :           case 'f':      // 9 strings to match.
    2613           0 :             if (Mnemonic[7] != '_')
    2614             :               break;
    2615             :             switch (Mnemonic[8]) {
    2616             :             default: break;
    2617           0 :             case 'f':    // 3 strings to match.
    2618             :               switch (Mnemonic[9]) {
    2619             :               default: break;
    2620             :               case '1':  // 1 string to match.
    2621           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2622             :                   break;
    2623           0 :                 Mnemonic = "v_cmp_f_f16";      // "v_cmp_f_f16_e64"
    2624           0 :                 return;
    2625             :               case '3':  // 1 string to match.
    2626           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2627             :                   break;
    2628           0 :                 Mnemonic = "v_cmp_f_f32";      // "v_cmp_f_f32_e64"
    2629           0 :                 return;
    2630             :               case '6':  // 1 string to match.
    2631           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2632             :                   break;
    2633           0 :                 Mnemonic = "v_cmp_f_f64";      // "v_cmp_f_f64_e64"
    2634           0 :                 return;
    2635             :               }
    2636             :               break;
    2637           0 :             case 'i':    // 3 strings to match.
    2638             :               switch (Mnemonic[9]) {
    2639             :               default: break;
    2640             :               case '1':  // 1 string to match.
    2641           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2642             :                   break;
    2643           0 :                 Mnemonic = "v_cmp_f_i16";      // "v_cmp_f_i16_e64"
    2644           0 :                 return;
    2645             :               case '3':  // 1 string to match.
    2646           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2647             :                   break;
    2648           0 :                 Mnemonic = "v_cmp_f_i32";      // "v_cmp_f_i32_e64"
    2649           0 :                 return;
    2650             :               case '6':  // 1 string to match.
    2651           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2652             :                   break;
    2653           0 :                 Mnemonic = "v_cmp_f_i64";      // "v_cmp_f_i64_e64"
    2654           0 :                 return;
    2655             :               }
    2656             :               break;
    2657           0 :             case 'u':    // 3 strings to match.
    2658             :               switch (Mnemonic[9]) {
    2659             :               default: break;
    2660             :               case '1':  // 1 string to match.
    2661           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2662             :                   break;
    2663           0 :                 Mnemonic = "v_cmp_f_u16";      // "v_cmp_f_u16_e64"
    2664           0 :                 return;
    2665             :               case '3':  // 1 string to match.
    2666           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2667             :                   break;
    2668           0 :                 Mnemonic = "v_cmp_f_u32";      // "v_cmp_f_u32_e64"
    2669           0 :                 return;
    2670             :               case '6':  // 1 string to match.
    2671           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2672             :                   break;
    2673           0 :                 Mnemonic = "v_cmp_f_u64";      // "v_cmp_f_u64_e64"
    2674           0 :                 return;
    2675             :               }
    2676             :               break;
    2677             :             }
    2678             :             break;
    2679             :           case 'o':      // 3 strings to match.
    2680           0 :             if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
    2681             :               break;
    2682             :             switch (Mnemonic[9]) {
    2683             :             default: break;
    2684             :             case '1':    // 1 string to match.
    2685           0 :               if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2686             :                 break;
    2687           0 :               Mnemonic = "v_cmp_o_f16";        // "v_cmp_o_f16_e64"
    2688           0 :               return;
    2689             :             case '3':    // 1 string to match.
    2690           0 :               if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2691             :                 break;
    2692           0 :               Mnemonic = "v_cmp_o_f32";        // "v_cmp_o_f32_e64"
    2693           0 :               return;
    2694             :             case '6':    // 1 string to match.
    2695           0 :               if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2696             :                 break;
    2697           0 :               Mnemonic = "v_cmp_o_f64";        // "v_cmp_o_f64_e64"
    2698           0 :               return;
    2699             :             }
    2700             :             break;
    2701           0 :           case 't':      // 6 strings to match.
    2702           0 :             if (Mnemonic[7] != '_')
    2703             :               break;
    2704             :             switch (Mnemonic[8]) {
    2705             :             default: break;
    2706           0 :             case 'i':    // 3 strings to match.
    2707             :               switch (Mnemonic[9]) {
    2708             :               default: break;
    2709             :               case '1':  // 1 string to match.
    2710           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2711             :                   break;
    2712           0 :                 Mnemonic = "v_cmp_t_i16";      // "v_cmp_t_i16_e64"
    2713           0 :                 return;
    2714             :               case '3':  // 1 string to match.
    2715           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2716             :                   break;
    2717           0 :                 Mnemonic = "v_cmp_t_i32";      // "v_cmp_t_i32_e64"
    2718           0 :                 return;
    2719             :               case '6':  // 1 string to match.
    2720           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2721             :                   break;
    2722           0 :                 Mnemonic = "v_cmp_t_i64";      // "v_cmp_t_i64_e64"
    2723           0 :                 return;
    2724             :               }
    2725             :               break;
    2726           0 :             case 'u':    // 3 strings to match.
    2727             :               switch (Mnemonic[9]) {
    2728             :               default: break;
    2729             :               case '1':  // 1 string to match.
    2730           0 :                 if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2731             :                   break;
    2732           0 :                 Mnemonic = "v_cmp_t_u16";      // "v_cmp_t_u16_e64"
    2733           0 :                 return;
    2734             :               case '3':  // 1 string to match.
    2735           0 :                 if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2736             :                   break;
    2737           0 :                 Mnemonic = "v_cmp_t_u32";      // "v_cmp_t_u32_e64"
    2738           0 :                 return;
    2739             :               case '6':  // 1 string to match.
    2740           0 :                 if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2741             :                   break;
    2742           0 :                 Mnemonic = "v_cmp_t_u64";      // "v_cmp_t_u64_e64"
    2743           0 :                 return;
    2744             :               }
    2745             :               break;
    2746             :             }
    2747             :             break;
    2748             :           case 'u':      // 3 strings to match.
    2749           0 :             if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
    2750             :               break;
    2751             :             switch (Mnemonic[9]) {
    2752             :             default: break;
    2753             :             case '1':    // 1 string to match.
    2754           0 :               if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2755             :                 break;
    2756           0 :               Mnemonic = "v_cmp_u_f16";        // "v_cmp_u_f16_e64"
    2757           0 :               return;
    2758             :             case '3':    // 1 string to match.
    2759           0 :               if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2760             :                 break;
    2761           0 :               Mnemonic = "v_cmp_u_f32";        // "v_cmp_u_f32_e64"
    2762           0 :               return;
    2763             :             case '6':    // 1 string to match.
    2764           0 :               if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2765             :                 break;
    2766           0 :               Mnemonic = "v_cmp_u_f64";        // "v_cmp_u_f64_e64"
    2767           0 :               return;
    2768             :             }
    2769             :             break;
    2770             :           }
    2771             :           break;
    2772          22 :         case 'f':        // 6 strings to match.
    2773             :           switch (Mnemonic[3]) {
    2774             :           default: break;
    2775             :           case 'l':      // 3 strings to match.
    2776           0 :             if (memcmp(Mnemonic.data()+4, "oor_f", 5) != 0)
    2777             :               break;
    2778             :             switch (Mnemonic[9]) {
    2779             :             default: break;
    2780             :             case '1':    // 1 string to match.
    2781           0 :               if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2782             :                 break;
    2783           0 :               Mnemonic = "v_floor_f16";        // "v_floor_f16_e64"
    2784           0 :               return;
    2785             :             case '3':    // 1 string to match.
    2786           0 :               if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2787             :                 break;
    2788           0 :               Mnemonic = "v_floor_f32";        // "v_floor_f32_e64"
    2789           0 :               return;
    2790             :             case '6':    // 1 string to match.
    2791           0 :               if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2792             :                 break;
    2793           0 :               Mnemonic = "v_floor_f64";        // "v_floor_f64_e64"
    2794           0 :               return;
    2795             :             }
    2796             :             break;
    2797             :           case 'r':      // 3 strings to match.
    2798           0 :             if (memcmp(Mnemonic.data()+4, "act_f", 5) != 0)
    2799             :               break;
    2800             :             switch (Mnemonic[9]) {
    2801             :             default: break;
    2802             :             case '1':    // 1 string to match.
    2803           0 :               if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2804             :                 break;
    2805           0 :               Mnemonic = "v_fract_f16";        // "v_fract_f16_e64"
    2806           0 :               return;
    2807             :             case '3':    // 1 string to match.
    2808           0 :               if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2809             :                 break;
    2810           0 :               Mnemonic = "v_fract_f32";        // "v_fract_f32_e64"
    2811           0 :               return;
    2812             :             case '6':    // 1 string to match.
    2813           0 :               if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2814             :                 break;
    2815           0 :               Mnemonic = "v_fract_f64";        // "v_fract_f64_e64"
    2816           0 :               return;
    2817             :             }
    2818             :             break;
    2819             :           }
    2820             :           break;
    2821             :         case 'l':        // 3 strings to match.
    2822          29 :           if (memcmp(Mnemonic.data()+3, "dexp_f", 6) != 0)
    2823             :             break;
    2824             :           switch (Mnemonic[9]) {
    2825             :           default: break;
    2826             :           case '1':      // 1 string to match.
    2827           0 :             if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2828             :               break;
    2829           0 :             Mnemonic = "v_ldexp_f16";  // "v_ldexp_f16_e64"
    2830           0 :             return;
    2831             :           case '3':      // 1 string to match.
    2832           0 :             if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2833             :               break;
    2834           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_ldexp_f32_e64"
    2835           0 :               Mnemonic = "v_ldexp_f32";
    2836             :             return;
    2837             :           case '6':      // 1 string to match.
    2838           0 :             if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2839             :               break;
    2840           0 :             Mnemonic = "v_ldexp_f64";  // "v_ldexp_f64_e64"
    2841           0 :             return;
    2842             :           }
    2843             :           break;
    2844             :         case 'r':        // 3 strings to match.
    2845         213 :           if (memcmp(Mnemonic.data()+3, "ndne_f", 6) != 0)
    2846             :             break;
    2847             :           switch (Mnemonic[9]) {
    2848             :           default: break;
    2849             :           case '1':      // 1 string to match.
    2850           0 :             if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2851             :               break;
    2852           0 :             Mnemonic = "v_rndne_f16";  // "v_rndne_f16_e64"
    2853           0 :             return;
    2854             :           case '3':      // 1 string to match.
    2855           0 :             if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2856             :               break;
    2857           0 :             Mnemonic = "v_rndne_f32";  // "v_rndne_f32_e64"
    2858           0 :             return;
    2859             :           case '6':      // 1 string to match.
    2860           0 :             if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2861             :               break;
    2862           0 :             Mnemonic = "v_rndne_f64";  // "v_rndne_f64_e64"
    2863           0 :             return;
    2864             :           }
    2865             :           break;
    2866             :         case 's':        // 1 string to match.
    2867          87 :           if (memcmp(Mnemonic.data()+3, "ad_hi_u8_e64", 12) != 0)
    2868             :             break;
    2869           0 :           Mnemonic = "v_sad_hi_u8";    // "v_sad_hi_u8_e64"
    2870           0 :           return;
    2871             :         case 't':        // 3 strings to match.
    2872           0 :           if (memcmp(Mnemonic.data()+3, "runc_f", 6) != 0)
    2873             :             break;
    2874             :           switch (Mnemonic[9]) {
    2875             :           default: break;
    2876             :           case '1':      // 1 string to match.
    2877           0 :             if (memcmp(Mnemonic.data()+10, "6_e64", 5) != 0)
    2878             :               break;
    2879           0 :             Mnemonic = "v_trunc_f16";  // "v_trunc_f16_e64"
    2880           0 :             return;
    2881             :           case '3':      // 1 string to match.
    2882           0 :             if (memcmp(Mnemonic.data()+10, "2_e64", 5) != 0)
    2883             :               break;
    2884           0 :             Mnemonic = "v_trunc_f32";  // "v_trunc_f32_e64"
    2885           0 :             return;
    2886             :           case '6':      // 1 string to match.
    2887           0 :             if (memcmp(Mnemonic.data()+10, "4_e64", 5) != 0)
    2888             :               break;
    2889           0 :             Mnemonic = "v_trunc_f64";  // "v_trunc_f64_e64"
    2890           0 :             return;
    2891             :           }
    2892             :           break;
    2893             :         }
    2894             :         break;
    2895             :       case 16:   // 112 strings to match.
    2896        3859 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    2897             :           break;
    2898             :         switch (Mnemonic[2]) {
    2899             :         default: break;
    2900             :         case 'a':        // 1 string to match.
    2901           0 :           if (memcmp(Mnemonic.data()+3, "nd_or_b32_e64", 13) != 0)
    2902             :             break;
    2903           0 :           Mnemonic = "v_and_or_b32";   // "v_and_or_b32_e64"
    2904           0 :           return;
    2905        1266 :         case 'c':        // 85 strings to match.
    2906             :           switch (Mnemonic[3]) {
    2907             :           default: break;
    2908         457 :           case 'm':      // 81 strings to match.
    2909         457 :             if (Mnemonic[4] != 'p')
    2910             :               break;
    2911             :             switch (Mnemonic[5]) {
    2912             :             default: break;
    2913           0 :             case '_':    // 54 strings to match.
    2914             :               switch (Mnemonic[6]) {
    2915             :               default: break;
    2916             :               case 'e':  // 9 strings to match.
    2917           0 :                 if (memcmp(Mnemonic.data()+7, "q_", 2) != 0)
    2918             :                   break;
    2919             :                 switch (Mnemonic[9]) {
    2920             :                 default: break;
    2921           0 :                 case 'f':        // 3 strings to match.
    2922             :                   switch (Mnemonic[10]) {
    2923             :                   default: break;
    2924             :                   case '1':      // 1 string to match.
    2925           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    2926             :                       break;
    2927           0 :                     Mnemonic = "v_cmp_eq_f16";         // "v_cmp_eq_f16_e64"
    2928           0 :                     return;
    2929             :                   case '3':      // 1 string to match.
    2930           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    2931             :                       break;
    2932           0 :                     Mnemonic = "v_cmp_eq_f32";         // "v_cmp_eq_f32_e64"
    2933           0 :                     return;
    2934             :                   case '6':      // 1 string to match.
    2935           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    2936             :                       break;
    2937           0 :                     Mnemonic = "v_cmp_eq_f64";         // "v_cmp_eq_f64_e64"
    2938           0 :                     return;
    2939             :                   }
    2940             :                   break;
    2941           0 :                 case 'i':        // 3 strings to match.
    2942             :                   switch (Mnemonic[10]) {
    2943             :                   default: break;
    2944             :                   case '1':      // 1 string to match.
    2945           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    2946             :                       break;
    2947           0 :                     Mnemonic = "v_cmp_eq_i16";         // "v_cmp_eq_i16_e64"
    2948           0 :                     return;
    2949             :                   case '3':      // 1 string to match.
    2950           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    2951             :                       break;
    2952           0 :                     Mnemonic = "v_cmp_eq_i32";         // "v_cmp_eq_i32_e64"
    2953           0 :                     return;
    2954             :                   case '6':      // 1 string to match.
    2955           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    2956             :                       break;
    2957           0 :                     Mnemonic = "v_cmp_eq_i64";         // "v_cmp_eq_i64_e64"
    2958           0 :                     return;
    2959             :                   }
    2960             :                   break;
    2961           0 :                 case 'u':        // 3 strings to match.
    2962             :                   switch (Mnemonic[10]) {
    2963             :                   default: break;
    2964             :                   case '1':      // 1 string to match.
    2965           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    2966             :                       break;
    2967           0 :                     Mnemonic = "v_cmp_eq_u16";         // "v_cmp_eq_u16_e64"
    2968           0 :                     return;
    2969             :                   case '3':      // 1 string to match.
    2970           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    2971             :                       break;
    2972           0 :                     Mnemonic = "v_cmp_eq_u32";         // "v_cmp_eq_u32_e64"
    2973           0 :                     return;
    2974             :                   case '6':      // 1 string to match.
    2975           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    2976             :                       break;
    2977           0 :                     Mnemonic = "v_cmp_eq_u64";         // "v_cmp_eq_u64_e64"
    2978           0 :                     return;
    2979             :                   }
    2980             :                   break;
    2981             :                 }
    2982             :                 break;
    2983           0 :               case 'g':  // 18 strings to match.
    2984             :                 switch (Mnemonic[7]) {
    2985             :                 default: break;
    2986           0 :                 case 'e':        // 9 strings to match.
    2987           0 :                   if (Mnemonic[8] != '_')
    2988             :                     break;
    2989             :                   switch (Mnemonic[9]) {
    2990             :                   default: break;
    2991           0 :                   case 'f':      // 3 strings to match.
    2992             :                     switch (Mnemonic[10]) {
    2993             :                     default: break;
    2994             :                     case '1':    // 1 string to match.
    2995           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    2996             :                         break;
    2997           0 :                       Mnemonic = "v_cmp_ge_f16";       // "v_cmp_ge_f16_e64"
    2998           0 :                       return;
    2999             :                     case '3':    // 1 string to match.
    3000           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3001             :                         break;
    3002           0 :                       Mnemonic = "v_cmp_ge_f32";       // "v_cmp_ge_f32_e64"
    3003           0 :                       return;
    3004             :                     case '6':    // 1 string to match.
    3005           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3006             :                         break;
    3007           0 :                       Mnemonic = "v_cmp_ge_f64";       // "v_cmp_ge_f64_e64"
    3008           0 :                       return;
    3009             :                     }
    3010             :                     break;
    3011           0 :                   case 'i':      // 3 strings to match.
    3012             :                     switch (Mnemonic[10]) {
    3013             :                     default: break;
    3014             :                     case '1':    // 1 string to match.
    3015           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3016             :                         break;
    3017           0 :                       Mnemonic = "v_cmp_ge_i16";       // "v_cmp_ge_i16_e64"
    3018           0 :                       return;
    3019             :                     case '3':    // 1 string to match.
    3020           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3021             :                         break;
    3022           0 :                       Mnemonic = "v_cmp_ge_i32";       // "v_cmp_ge_i32_e64"
    3023           0 :                       return;
    3024             :                     case '6':    // 1 string to match.
    3025           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3026             :                         break;
    3027           0 :                       Mnemonic = "v_cmp_ge_i64";       // "v_cmp_ge_i64_e64"
    3028           0 :                       return;
    3029             :                     }
    3030             :                     break;
    3031           0 :                   case 'u':      // 3 strings to match.
    3032             :                     switch (Mnemonic[10]) {
    3033             :                     default: break;
    3034             :                     case '1':    // 1 string to match.
    3035           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3036             :                         break;
    3037           0 :                       Mnemonic = "v_cmp_ge_u16";       // "v_cmp_ge_u16_e64"
    3038           0 :                       return;
    3039             :                     case '3':    // 1 string to match.
    3040           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3041             :                         break;
    3042           0 :                       Mnemonic = "v_cmp_ge_u32";       // "v_cmp_ge_u32_e64"
    3043           0 :                       return;
    3044             :                     case '6':    // 1 string to match.
    3045           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3046             :                         break;
    3047           0 :                       Mnemonic = "v_cmp_ge_u64";       // "v_cmp_ge_u64_e64"
    3048           0 :                       return;
    3049             :                     }
    3050             :                     break;
    3051             :                   }
    3052             :                   break;
    3053           0 :                 case 't':        // 9 strings to match.
    3054           0 :                   if (Mnemonic[8] != '_')
    3055             :                     break;
    3056             :                   switch (Mnemonic[9]) {
    3057             :                   default: break;
    3058           0 :                   case 'f':      // 3 strings to match.
    3059             :                     switch (Mnemonic[10]) {
    3060             :                     default: break;
    3061             :                     case '1':    // 1 string to match.
    3062           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3063             :                         break;
    3064           0 :                       Mnemonic = "v_cmp_gt_f16";       // "v_cmp_gt_f16_e64"
    3065           0 :                       return;
    3066             :                     case '3':    // 1 string to match.
    3067           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3068             :                         break;
    3069           0 :                       Mnemonic = "v_cmp_gt_f32";       // "v_cmp_gt_f32_e64"
    3070           0 :                       return;
    3071             :                     case '6':    // 1 string to match.
    3072           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3073             :                         break;
    3074           0 :                       Mnemonic = "v_cmp_gt_f64";       // "v_cmp_gt_f64_e64"
    3075           0 :                       return;
    3076             :                     }
    3077             :                     break;
    3078           0 :                   case 'i':      // 3 strings to match.
    3079             :                     switch (Mnemonic[10]) {
    3080             :                     default: break;
    3081             :                     case '1':    // 1 string to match.
    3082           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3083             :                         break;
    3084           0 :                       Mnemonic = "v_cmp_gt_i16";       // "v_cmp_gt_i16_e64"
    3085           0 :                       return;
    3086             :                     case '3':    // 1 string to match.
    3087           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3088             :                         break;
    3089           0 :                       Mnemonic = "v_cmp_gt_i32";       // "v_cmp_gt_i32_e64"
    3090           0 :                       return;
    3091             :                     case '6':    // 1 string to match.
    3092           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3093             :                         break;
    3094           0 :                       Mnemonic = "v_cmp_gt_i64";       // "v_cmp_gt_i64_e64"
    3095           0 :                       return;
    3096             :                     }
    3097             :                     break;
    3098           0 :                   case 'u':      // 3 strings to match.
    3099             :                     switch (Mnemonic[10]) {
    3100             :                     default: break;
    3101             :                     case '1':    // 1 string to match.
    3102           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3103             :                         break;
    3104           0 :                       Mnemonic = "v_cmp_gt_u16";       // "v_cmp_gt_u16_e64"
    3105           0 :                       return;
    3106             :                     case '3':    // 1 string to match.
    3107           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3108             :                         break;
    3109           0 :                       Mnemonic = "v_cmp_gt_u32";       // "v_cmp_gt_u32_e64"
    3110           0 :                       return;
    3111             :                     case '6':    // 1 string to match.
    3112           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3113             :                         break;
    3114           0 :                       Mnemonic = "v_cmp_gt_u64";       // "v_cmp_gt_u64_e64"
    3115           0 :                       return;
    3116             :                     }
    3117             :                     break;
    3118             :                   }
    3119             :                   break;
    3120             :                 }
    3121             :                 break;
    3122           0 :               case 'l':  // 21 strings to match.
    3123             :                 switch (Mnemonic[7]) {
    3124             :                 default: break;
    3125           0 :                 case 'e':        // 9 strings to match.
    3126           0 :                   if (Mnemonic[8] != '_')
    3127             :                     break;
    3128             :                   switch (Mnemonic[9]) {
    3129             :                   default: break;
    3130           0 :                   case 'f':      // 3 strings to match.
    3131             :                     switch (Mnemonic[10]) {
    3132             :                     default: break;
    3133             :                     case '1':    // 1 string to match.
    3134           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3135             :                         break;
    3136           0 :                       Mnemonic = "v_cmp_le_f16";       // "v_cmp_le_f16_e64"
    3137           0 :                       return;
    3138             :                     case '3':    // 1 string to match.
    3139           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3140             :                         break;
    3141           0 :                       Mnemonic = "v_cmp_le_f32";       // "v_cmp_le_f32_e64"
    3142           0 :                       return;
    3143             :                     case '6':    // 1 string to match.
    3144           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3145             :                         break;
    3146           0 :                       Mnemonic = "v_cmp_le_f64";       // "v_cmp_le_f64_e64"
    3147           0 :                       return;
    3148             :                     }
    3149             :                     break;
    3150           0 :                   case 'i':      // 3 strings to match.
    3151             :                     switch (Mnemonic[10]) {
    3152             :                     default: break;
    3153             :                     case '1':    // 1 string to match.
    3154           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3155             :                         break;
    3156           0 :                       Mnemonic = "v_cmp_le_i16";       // "v_cmp_le_i16_e64"
    3157           0 :                       return;
    3158             :                     case '3':    // 1 string to match.
    3159           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3160             :                         break;
    3161           0 :                       Mnemonic = "v_cmp_le_i32";       // "v_cmp_le_i32_e64"
    3162           0 :                       return;
    3163             :                     case '6':    // 1 string to match.
    3164           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3165             :                         break;
    3166           0 :                       Mnemonic = "v_cmp_le_i64";       // "v_cmp_le_i64_e64"
    3167           0 :                       return;
    3168             :                     }
    3169             :                     break;
    3170           0 :                   case 'u':      // 3 strings to match.
    3171             :                     switch (Mnemonic[10]) {
    3172             :                     default: break;
    3173             :                     case '1':    // 1 string to match.
    3174           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3175             :                         break;
    3176           0 :                       Mnemonic = "v_cmp_le_u16";       // "v_cmp_le_u16_e64"
    3177           0 :                       return;
    3178             :                     case '3':    // 1 string to match.
    3179           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3180             :                         break;
    3181           0 :                       Mnemonic = "v_cmp_le_u32";       // "v_cmp_le_u32_e64"
    3182           0 :                       return;
    3183             :                     case '6':    // 1 string to match.
    3184           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3185             :                         break;
    3186           0 :                       Mnemonic = "v_cmp_le_u64";       // "v_cmp_le_u64_e64"
    3187           0 :                       return;
    3188             :                     }
    3189             :                     break;
    3190             :                   }
    3191             :                   break;
    3192             :                 case 'g':        // 3 strings to match.
    3193           0 :                   if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3194             :                     break;
    3195             :                   switch (Mnemonic[10]) {
    3196             :                   default: break;
    3197             :                   case '1':      // 1 string to match.
    3198           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3199             :                       break;
    3200           0 :                     Mnemonic = "v_cmp_lg_f16";         // "v_cmp_lg_f16_e64"
    3201           0 :                     return;
    3202             :                   case '3':      // 1 string to match.
    3203           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3204             :                       break;
    3205           0 :                     Mnemonic = "v_cmp_lg_f32";         // "v_cmp_lg_f32_e64"
    3206           0 :                     return;
    3207             :                   case '6':      // 1 string to match.
    3208           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3209             :                       break;
    3210           0 :                     Mnemonic = "v_cmp_lg_f64";         // "v_cmp_lg_f64_e64"
    3211           0 :                     return;
    3212             :                   }
    3213             :                   break;
    3214           0 :                 case 't':        // 9 strings to match.
    3215           0 :                   if (Mnemonic[8] != '_')
    3216             :                     break;
    3217             :                   switch (Mnemonic[9]) {
    3218             :                   default: break;
    3219           0 :                   case 'f':      // 3 strings to match.
    3220             :                     switch (Mnemonic[10]) {
    3221             :                     default: break;
    3222             :                     case '1':    // 1 string to match.
    3223           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3224             :                         break;
    3225           0 :                       Mnemonic = "v_cmp_lt_f16";       // "v_cmp_lt_f16_e64"
    3226           0 :                       return;
    3227             :                     case '3':    // 1 string to match.
    3228           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3229             :                         break;
    3230           0 :                       Mnemonic = "v_cmp_lt_f32";       // "v_cmp_lt_f32_e64"
    3231           0 :                       return;
    3232             :                     case '6':    // 1 string to match.
    3233           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3234             :                         break;
    3235           0 :                       Mnemonic = "v_cmp_lt_f64";       // "v_cmp_lt_f64_e64"
    3236           0 :                       return;
    3237             :                     }
    3238             :                     break;
    3239           0 :                   case 'i':      // 3 strings to match.
    3240             :                     switch (Mnemonic[10]) {
    3241             :                     default: break;
    3242             :                     case '1':    // 1 string to match.
    3243           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3244             :                         break;
    3245           0 :                       Mnemonic = "v_cmp_lt_i16";       // "v_cmp_lt_i16_e64"
    3246           0 :                       return;
    3247             :                     case '3':    // 1 string to match.
    3248           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3249             :                         break;
    3250           0 :                       Mnemonic = "v_cmp_lt_i32";       // "v_cmp_lt_i32_e64"
    3251           0 :                       return;
    3252             :                     case '6':    // 1 string to match.
    3253           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3254             :                         break;
    3255           0 :                       Mnemonic = "v_cmp_lt_i64";       // "v_cmp_lt_i64_e64"
    3256           0 :                       return;
    3257             :                     }
    3258             :                     break;
    3259           0 :                   case 'u':      // 3 strings to match.
    3260             :                     switch (Mnemonic[10]) {
    3261             :                     default: break;
    3262             :                     case '1':    // 1 string to match.
    3263           0 :                       if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3264             :                         break;
    3265           0 :                       Mnemonic = "v_cmp_lt_u16";       // "v_cmp_lt_u16_e64"
    3266           0 :                       return;
    3267             :                     case '3':    // 1 string to match.
    3268           0 :                       if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3269             :                         break;
    3270           0 :                       Mnemonic = "v_cmp_lt_u32";       // "v_cmp_lt_u32_e64"
    3271           0 :                       return;
    3272             :                     case '6':    // 1 string to match.
    3273           0 :                       if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3274             :                         break;
    3275           0 :                       Mnemonic = "v_cmp_lt_u64";       // "v_cmp_lt_u64_e64"
    3276           0 :                       return;
    3277             :                     }
    3278             :                     break;
    3279             :                   }
    3280             :                   break;
    3281             :                 }
    3282             :                 break;
    3283             :               case 'n':  // 6 strings to match.
    3284           0 :                 if (memcmp(Mnemonic.data()+7, "e_", 2) != 0)
    3285             :                   break;
    3286             :                 switch (Mnemonic[9]) {
    3287             :                 default: break;
    3288           0 :                 case 'i':        // 3 strings to match.
    3289             :                   switch (Mnemonic[10]) {
    3290             :                   default: break;
    3291             :                   case '1':      // 1 string to match.
    3292           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3293             :                       break;
    3294           0 :                     Mnemonic = "v_cmp_ne_i16";         // "v_cmp_ne_i16_e64"
    3295           0 :                     return;
    3296             :                   case '3':      // 1 string to match.
    3297           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3298             :                       break;
    3299           0 :                     Mnemonic = "v_cmp_ne_i32";         // "v_cmp_ne_i32_e64"
    3300           0 :                     return;
    3301             :                   case '6':      // 1 string to match.
    3302           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3303             :                       break;
    3304           0 :                     Mnemonic = "v_cmp_ne_i64";         // "v_cmp_ne_i64_e64"
    3305           0 :                     return;
    3306             :                   }
    3307             :                   break;
    3308           0 :                 case 'u':        // 3 strings to match.
    3309             :                   switch (Mnemonic[10]) {
    3310             :                   default: break;
    3311             :                   case '1':      // 1 string to match.
    3312           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3313             :                       break;
    3314           0 :                     Mnemonic = "v_cmp_ne_u16";         // "v_cmp_ne_u16_e64"
    3315           0 :                     return;
    3316             :                   case '3':      // 1 string to match.
    3317           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3318             :                       break;
    3319           0 :                     Mnemonic = "v_cmp_ne_u32";         // "v_cmp_ne_u32_e64"
    3320           0 :                     return;
    3321             :                   case '6':      // 1 string to match.
    3322           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3323             :                       break;
    3324           0 :                     Mnemonic = "v_cmp_ne_u64";         // "v_cmp_ne_u64_e64"
    3325           0 :                     return;
    3326             :                   }
    3327             :                   break;
    3328             :                 }
    3329             :                 break;
    3330             :               }
    3331             :               break;
    3332           0 :             case 's':    // 6 strings to match.
    3333           0 :               if (Mnemonic[6] != '_')
    3334             :                 break;
    3335             :               switch (Mnemonic[7]) {
    3336             :               default: break;
    3337             :               case 'f':  // 2 strings to match.
    3338           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3339             :                   break;
    3340             :                 switch (Mnemonic[10]) {
    3341             :                 default: break;
    3342             :                 case '3':        // 1 string to match.
    3343           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3344             :                     break;
    3345           0 :                   Mnemonic = "v_cmps_f_f32";   // "v_cmps_f_f32_e64"
    3346           0 :                   return;
    3347             :                 case '6':        // 1 string to match.
    3348           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3349             :                     break;
    3350           0 :                   Mnemonic = "v_cmps_f_f64";   // "v_cmps_f_f64_e64"
    3351           0 :                   return;
    3352             :                 }
    3353             :                 break;
    3354             :               case 'o':  // 2 strings to match.
    3355           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3356             :                   break;
    3357             :                 switch (Mnemonic[10]) {
    3358             :                 default: break;
    3359             :                 case '3':        // 1 string to match.
    3360           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3361             :                     break;
    3362           0 :                   Mnemonic = "v_cmps_o_f32";   // "v_cmps_o_f32_e64"
    3363           0 :                   return;
    3364             :                 case '6':        // 1 string to match.
    3365           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3366             :                     break;
    3367           0 :                   Mnemonic = "v_cmps_o_f64";   // "v_cmps_o_f64_e64"
    3368           0 :                   return;
    3369             :                 }
    3370             :                 break;
    3371             :               case 'u':  // 2 strings to match.
    3372           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3373             :                   break;
    3374             :                 switch (Mnemonic[10]) {
    3375             :                 default: break;
    3376             :                 case '3':        // 1 string to match.
    3377           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3378             :                     break;
    3379           0 :                   Mnemonic = "v_cmps_u_f32";   // "v_cmps_u_f32_e64"
    3380           0 :                   return;
    3381             :                 case '6':        // 1 string to match.
    3382           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3383             :                     break;
    3384           0 :                   Mnemonic = "v_cmps_u_f64";   // "v_cmps_u_f64_e64"
    3385           0 :                   return;
    3386             :                 }
    3387             :                 break;
    3388             :               }
    3389             :               break;
    3390         457 :             case 'x':    // 21 strings to match.
    3391         457 :               if (Mnemonic[6] != '_')
    3392             :                 break;
    3393             :               switch (Mnemonic[7]) {
    3394             :               default: break;
    3395           0 :               case 'f':  // 9 strings to match.
    3396           0 :                 if (Mnemonic[8] != '_')
    3397             :                   break;
    3398             :                 switch (Mnemonic[9]) {
    3399             :                 default: break;
    3400           0 :                 case 'f':        // 3 strings to match.
    3401             :                   switch (Mnemonic[10]) {
    3402             :                   default: break;
    3403             :                   case '1':      // 1 string to match.
    3404           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3405             :                       break;
    3406           0 :                     Mnemonic = "v_cmpx_f_f16";         // "v_cmpx_f_f16_e64"
    3407           0 :                     return;
    3408             :                   case '3':      // 1 string to match.
    3409           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3410             :                       break;
    3411           0 :                     Mnemonic = "v_cmpx_f_f32";         // "v_cmpx_f_f32_e64"
    3412           0 :                     return;
    3413             :                   case '6':      // 1 string to match.
    3414           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3415             :                       break;
    3416           0 :                     Mnemonic = "v_cmpx_f_f64";         // "v_cmpx_f_f64_e64"
    3417           0 :                     return;
    3418             :                   }
    3419             :                   break;
    3420           0 :                 case 'i':        // 3 strings to match.
    3421             :                   switch (Mnemonic[10]) {
    3422             :                   default: break;
    3423             :                   case '1':      // 1 string to match.
    3424           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3425             :                       break;
    3426           0 :                     Mnemonic = "v_cmpx_f_i16";         // "v_cmpx_f_i16_e64"
    3427           0 :                     return;
    3428             :                   case '3':      // 1 string to match.
    3429           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3430             :                       break;
    3431           0 :                     Mnemonic = "v_cmpx_f_i32";         // "v_cmpx_f_i32_e64"
    3432           0 :                     return;
    3433             :                   case '6':      // 1 string to match.
    3434           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3435             :                       break;
    3436           0 :                     Mnemonic = "v_cmpx_f_i64";         // "v_cmpx_f_i64_e64"
    3437           0 :                     return;
    3438             :                   }
    3439             :                   break;
    3440           0 :                 case 'u':        // 3 strings to match.
    3441             :                   switch (Mnemonic[10]) {
    3442             :                   default: break;
    3443             :                   case '1':      // 1 string to match.
    3444           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3445             :                       break;
    3446           0 :                     Mnemonic = "v_cmpx_f_u16";         // "v_cmpx_f_u16_e64"
    3447           0 :                     return;
    3448             :                   case '3':      // 1 string to match.
    3449           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3450             :                       break;
    3451           0 :                     Mnemonic = "v_cmpx_f_u32";         // "v_cmpx_f_u32_e64"
    3452           0 :                     return;
    3453             :                   case '6':      // 1 string to match.
    3454           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3455             :                       break;
    3456           0 :                     Mnemonic = "v_cmpx_f_u64";         // "v_cmpx_f_u64_e64"
    3457           0 :                     return;
    3458             :                   }
    3459             :                   break;
    3460             :                 }
    3461             :                 break;
    3462             :               case 'o':  // 3 strings to match.
    3463           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3464             :                   break;
    3465             :                 switch (Mnemonic[10]) {
    3466             :                 default: break;
    3467             :                 case '1':        // 1 string to match.
    3468           0 :                   if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3469             :                     break;
    3470           0 :                   Mnemonic = "v_cmpx_o_f16";   // "v_cmpx_o_f16_e64"
    3471           0 :                   return;
    3472             :                 case '3':        // 1 string to match.
    3473           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3474             :                     break;
    3475           0 :                   Mnemonic = "v_cmpx_o_f32";   // "v_cmpx_o_f32_e64"
    3476           0 :                   return;
    3477             :                 case '6':        // 1 string to match.
    3478           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3479             :                     break;
    3480           0 :                   Mnemonic = "v_cmpx_o_f64";   // "v_cmpx_o_f64_e64"
    3481           0 :                   return;
    3482             :                 }
    3483             :                 break;
    3484           0 :               case 't':  // 6 strings to match.
    3485           0 :                 if (Mnemonic[8] != '_')
    3486             :                   break;
    3487             :                 switch (Mnemonic[9]) {
    3488             :                 default: break;
    3489           0 :                 case 'i':        // 3 strings to match.
    3490             :                   switch (Mnemonic[10]) {
    3491             :                   default: break;
    3492             :                   case '1':      // 1 string to match.
    3493           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3494             :                       break;
    3495           0 :                     Mnemonic = "v_cmpx_t_i16";         // "v_cmpx_t_i16_e64"
    3496           0 :                     return;
    3497             :                   case '3':      // 1 string to match.
    3498           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3499             :                       break;
    3500           0 :                     Mnemonic = "v_cmpx_t_i32";         // "v_cmpx_t_i32_e64"
    3501           0 :                     return;
    3502             :                   case '6':      // 1 string to match.
    3503           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3504             :                       break;
    3505           0 :                     Mnemonic = "v_cmpx_t_i64";         // "v_cmpx_t_i64_e64"
    3506           0 :                     return;
    3507             :                   }
    3508             :                   break;
    3509           0 :                 case 'u':        // 3 strings to match.
    3510             :                   switch (Mnemonic[10]) {
    3511             :                   default: break;
    3512             :                   case '1':      // 1 string to match.
    3513           0 :                     if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3514             :                       break;
    3515           0 :                     Mnemonic = "v_cmpx_t_u16";         // "v_cmpx_t_u16_e64"
    3516           0 :                     return;
    3517             :                   case '3':      // 1 string to match.
    3518           0 :                     if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3519             :                       break;
    3520           0 :                     Mnemonic = "v_cmpx_t_u32";         // "v_cmpx_t_u32_e64"
    3521           0 :                     return;
    3522             :                   case '6':      // 1 string to match.
    3523           0 :                     if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3524             :                       break;
    3525           0 :                     Mnemonic = "v_cmpx_t_u64";         // "v_cmpx_t_u64_e64"
    3526           0 :                     return;
    3527             :                   }
    3528             :                   break;
    3529             :                 }
    3530             :                 break;
    3531             :               case 'u':  // 3 strings to match.
    3532           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    3533             :                   break;
    3534             :                 switch (Mnemonic[10]) {
    3535             :                 default: break;
    3536             :                 case '1':        // 1 string to match.
    3537           0 :                   if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3538             :                     break;
    3539           0 :                   Mnemonic = "v_cmpx_u_f16";   // "v_cmpx_u_f16_e64"
    3540           0 :                   return;
    3541             :                 case '3':        // 1 string to match.
    3542           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3543             :                     break;
    3544           0 :                   Mnemonic = "v_cmpx_u_f32";   // "v_cmpx_u_f32_e64"
    3545           0 :                   return;
    3546             :                 case '6':        // 1 string to match.
    3547           0 :                   if (memcmp(Mnemonic.data()+11, "4_e64", 5) != 0)
    3548             :                     break;
    3549           0 :                   Mnemonic = "v_cmpx_u_f64";   // "v_cmpx_u_f64_e64"
    3550           0 :                   return;
    3551             :                 }
    3552             :                 break;
    3553             :               }
    3554             :               break;
    3555             :             }
    3556             :             break;
    3557             :           case 'u':      // 4 strings to match.
    3558           0 :             if (memcmp(Mnemonic.data()+4, "be", 2) != 0)
    3559             :               break;
    3560             :             switch (Mnemonic[6]) {
    3561             :             default: break;
    3562             :             case 'i':    // 1 string to match.
    3563           0 :               if (memcmp(Mnemonic.data()+7, "d_f32_e64", 9) != 0)
    3564             :                 break;
    3565           0 :               Mnemonic = "v_cubeid_f32";       // "v_cubeid_f32_e64"
    3566           0 :               return;
    3567             :             case 'm':    // 1 string to match.
    3568           0 :               if (memcmp(Mnemonic.data()+7, "a_f32_e64", 9) != 0)
    3569             :                 break;
    3570           0 :               Mnemonic = "v_cubema_f32";       // "v_cubema_f32_e64"
    3571           0 :               return;
    3572             :             case 's':    // 1 string to match.
    3573           0 :               if (memcmp(Mnemonic.data()+7, "c_f32_e64", 9) != 0)
    3574             :                 break;
    3575           0 :               Mnemonic = "v_cubesc_f32";       // "v_cubesc_f32_e64"
    3576           0 :               return;
    3577             :             case 't':    // 1 string to match.
    3578           0 :               if (memcmp(Mnemonic.data()+7, "c_f32_e64", 9) != 0)
    3579             :                 break;
    3580           0 :               Mnemonic = "v_cubetc_f32";       // "v_cubetc_f32_e64"
    3581           0 :               return;
    3582             :             }
    3583             :             break;
    3584             :           }
    3585             :           break;
    3586             :         case 'm':        // 6 strings to match.
    3587        1169 :           if (memcmp(Mnemonic.data()+3, "ul", 2) != 0)
    3588             :             break;
    3589             :           switch (Mnemonic[5]) {
    3590             :           default: break;
    3591         482 :           case '_':      // 5 strings to match.
    3592             :             switch (Mnemonic[6]) {
    3593             :             default: break;
    3594             :             case 'h':    // 2 strings to match.
    3595         296 :               if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
    3596             :                 break;
    3597             :               switch (Mnemonic[9]) {
    3598             :               default: break;
    3599             :               case 'i':  // 1 string to match.
    3600         148 :                 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
    3601             :                   break;
    3602           0 :                 Mnemonic = "v_mul_hi_i32";     // "v_mul_hi_i32_e64"
    3603           0 :                 return;
    3604             :               case 'u':  // 1 string to match.
    3605         148 :                 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
    3606             :                   break;
    3607           0 :                 Mnemonic = "v_mul_hi_u32";     // "v_mul_hi_u32_e64"
    3608           0 :                 return;
    3609             :               }
    3610             :               break;
    3611             :             case 'l':    // 3 strings to match.
    3612         186 :               if (memcmp(Mnemonic.data()+7, "o_", 2) != 0)
    3613             :                 break;
    3614             :               switch (Mnemonic[9]) {
    3615             :               default: break;
    3616             :               case 'i':  // 1 string to match.
    3617           0 :                 if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
    3618             :                   break;
    3619           0 :                 Mnemonic = "v_mul_lo_i32";     // "v_mul_lo_i32_e64"
    3620           0 :                 return;
    3621           0 :               case 'u':  // 2 strings to match.
    3622             :                 switch (Mnemonic[10]) {
    3623             :                 default: break;
    3624             :                 case '1':        // 1 string to match.
    3625           0 :                   if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3626             :                     break;
    3627           0 :                   Mnemonic = "v_mul_lo_u16";   // "v_mul_lo_u16_e64"
    3628           0 :                   return;
    3629             :                 case '3':        // 1 string to match.
    3630           0 :                   if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3631             :                     break;
    3632           0 :                   Mnemonic = "v_mul_lo_u32";   // "v_mul_lo_u32_e64"
    3633           0 :                   return;
    3634             :                 }
    3635             :                 break;
    3636             :               }
    3637             :               break;
    3638             :             }
    3639             :             break;
    3640             :           case 'l':      // 1 string to match.
    3641           0 :             if (memcmp(Mnemonic.data()+6, "it_f32_e64", 10) != 0)
    3642             :               break;
    3643           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_mullit_f32_e64"
    3644           0 :               Mnemonic = "v_mullit_f32";
    3645             :             return;
    3646             :           }
    3647             :           break;
    3648             :         case 'p':        // 15 strings to match.
    3649         183 :           if (memcmp(Mnemonic.data()+3, "k_", 2) != 0)
    3650             :             break;
    3651             :           switch (Mnemonic[5]) {
    3652             :           default: break;
    3653             :           case 'a':      // 3 strings to match.
    3654          61 :             if (memcmp(Mnemonic.data()+6, "dd_", 3) != 0)
    3655             :               break;
    3656             :             switch (Mnemonic[9]) {
    3657             :             default: break;
    3658             :             case 'f':    // 1 string to match.
    3659           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3660             :                 break;
    3661           0 :               Mnemonic = "v_pk_add_f16";       // "v_pk_add_f16_e64"
    3662           0 :               return;
    3663             :             case 'i':    // 1 string to match.
    3664           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3665             :                 break;
    3666           0 :               Mnemonic = "v_pk_add_i16";       // "v_pk_add_i16_e64"
    3667           0 :               return;
    3668             :             case 'u':    // 1 string to match.
    3669           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3670             :                 break;
    3671           0 :               Mnemonic = "v_pk_add_u16";       // "v_pk_add_u16_e64"
    3672           0 :               return;
    3673             :             }
    3674             :             break;
    3675             :           case 'f':      // 1 string to match.
    3676           0 :             if (memcmp(Mnemonic.data()+6, "ma_f16_e64", 10) != 0)
    3677             :               break;
    3678           0 :             Mnemonic = "v_pk_fma_f16";         // "v_pk_fma_f16_e64"
    3679           0 :             return;
    3680           0 :           case 'm':      // 9 strings to match.
    3681             :             switch (Mnemonic[6]) {
    3682             :             default: break;
    3683           0 :             case 'a':    // 5 strings to match.
    3684             :               switch (Mnemonic[7]) {
    3685             :               default: break;
    3686           0 :               case 'd':  // 2 strings to match.
    3687           0 :                 if (Mnemonic[8] != '_')
    3688             :                   break;
    3689             :                 switch (Mnemonic[9]) {
    3690             :                 default: break;
    3691             :                 case 'i':        // 1 string to match.
    3692           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3693             :                     break;
    3694           0 :                   Mnemonic = "v_pk_mad_i16";   // "v_pk_mad_i16_e64"
    3695           0 :                   return;
    3696             :                 case 'u':        // 1 string to match.
    3697           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3698             :                     break;
    3699           0 :                   Mnemonic = "v_pk_mad_u16";   // "v_pk_mad_u16_e64"
    3700           0 :                   return;
    3701             :                 }
    3702             :                 break;
    3703           0 :               case 'x':  // 3 strings to match.
    3704           0 :                 if (Mnemonic[8] != '_')
    3705             :                   break;
    3706             :                 switch (Mnemonic[9]) {
    3707             :                 default: break;
    3708             :                 case 'f':        // 1 string to match.
    3709           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3710             :                     break;
    3711           0 :                   Mnemonic = "v_pk_max_f16";   // "v_pk_max_f16_e64"
    3712           0 :                   return;
    3713             :                 case 'i':        // 1 string to match.
    3714           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3715             :                     break;
    3716           0 :                   Mnemonic = "v_pk_max_i16";   // "v_pk_max_i16_e64"
    3717           0 :                   return;
    3718             :                 case 'u':        // 1 string to match.
    3719           0 :                   if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3720             :                     break;
    3721           0 :                   Mnemonic = "v_pk_max_u16";   // "v_pk_max_u16_e64"
    3722           0 :                   return;
    3723             :                 }
    3724             :                 break;
    3725             :               }
    3726             :               break;
    3727             :             case 'i':    // 3 strings to match.
    3728           0 :               if (memcmp(Mnemonic.data()+7, "n_", 2) != 0)
    3729             :                 break;
    3730             :               switch (Mnemonic[9]) {
    3731             :               default: break;
    3732             :               case 'f':  // 1 string to match.
    3733           0 :                 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3734             :                   break;
    3735           0 :                 Mnemonic = "v_pk_min_f16";     // "v_pk_min_f16_e64"
    3736           0 :                 return;
    3737             :               case 'i':  // 1 string to match.
    3738           0 :                 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3739             :                   break;
    3740           0 :                 Mnemonic = "v_pk_min_i16";     // "v_pk_min_i16_e64"
    3741           0 :                 return;
    3742             :               case 'u':  // 1 string to match.
    3743           0 :                 if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3744             :                   break;
    3745           0 :                 Mnemonic = "v_pk_min_u16";     // "v_pk_min_u16_e64"
    3746           0 :                 return;
    3747             :               }
    3748             :               break;
    3749             :             case 'u':    // 1 string to match.
    3750           0 :               if (memcmp(Mnemonic.data()+7, "l_f16_e64", 9) != 0)
    3751             :                 break;
    3752           0 :               Mnemonic = "v_pk_mul_f16";       // "v_pk_mul_f16_e64"
    3753           0 :               return;
    3754             :             }
    3755             :             break;
    3756             :           case 's':      // 2 strings to match.
    3757           0 :             if (memcmp(Mnemonic.data()+6, "ub_", 3) != 0)
    3758             :               break;
    3759             :             switch (Mnemonic[9]) {
    3760             :             default: break;
    3761             :             case 'i':    // 1 string to match.
    3762           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3763             :                 break;
    3764           0 :               Mnemonic = "v_pk_sub_i16";       // "v_pk_sub_i16_e64"
    3765           0 :               return;
    3766             :             case 'u':    // 1 string to match.
    3767           0 :               if (memcmp(Mnemonic.data()+10, "16_e64", 6) != 0)
    3768             :                 break;
    3769           0 :               Mnemonic = "v_pk_sub_u16";       // "v_pk_sub_u16_e64"
    3770           0 :               return;
    3771             :             }
    3772             :             break;
    3773             :           }
    3774             :           break;
    3775             :         case 's':        // 5 strings to match.
    3776          42 :           if (memcmp(Mnemonic.data()+3, "ubrev_", 6) != 0)
    3777             :             break;
    3778             :           switch (Mnemonic[9]) {
    3779             :           default: break;
    3780           0 :           case 'f':      // 2 strings to match.
    3781             :             switch (Mnemonic[10]) {
    3782             :             default: break;
    3783             :             case '1':    // 1 string to match.
    3784           0 :               if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3785             :                 break;
    3786           0 :               Mnemonic = "v_subrev_f16";       // "v_subrev_f16_e64"
    3787           0 :               return;
    3788             :             case '3':    // 1 string to match.
    3789           0 :               if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3790             :                 break;
    3791           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_f32_e64"
    3792           0 :                 Mnemonic = "v_subrev_f32";
    3793             :               return;
    3794             :             }
    3795             :             break;
    3796             :           case 'i':      // 1 string to match.
    3797           0 :             if (memcmp(Mnemonic.data()+10, "32_e64", 6) != 0)
    3798             :               break;
    3799           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subrev_i32_e64"
    3800           0 :               Mnemonic = "v_subrev_i32";
    3801             :             return;
    3802           0 :           case 'u':      // 2 strings to match.
    3803             :             switch (Mnemonic[10]) {
    3804             :             default: break;
    3805             :             case '1':    // 1 string to match.
    3806           0 :               if (memcmp(Mnemonic.data()+11, "6_e64", 5) != 0)
    3807             :                 break;
    3808           0 :               Mnemonic = "v_subrev_u16";       // "v_subrev_u16_e64"
    3809           0 :               return;
    3810             :             case '3':    // 1 string to match.
    3811           0 :               if (memcmp(Mnemonic.data()+11, "2_e64", 5) != 0)
    3812             :                 break;
    3813           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_u32_e64"
    3814           0 :                 Mnemonic = "v_subrev_u32";
    3815             :               return;
    3816             :             }
    3817             :             break;
    3818             :           }
    3819             :           break;
    3820             :         }
    3821             :         break;
    3822             :       case 17:   // 138 strings to match.
    3823         686 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    3824             :           break;
    3825             :         switch (Mnemonic[2]) {
    3826             :         default: break;
    3827             :         case 'a':        // 3 strings to match.
    3828           0 :           if (memcmp(Mnemonic.data()+3, "shrrev_i", 8) != 0)
    3829             :             break;
    3830             :           switch (Mnemonic[11]) {
    3831             :           default: break;
    3832             :           case '1':      // 1 string to match.
    3833           0 :             if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3834             :               break;
    3835           0 :             Mnemonic = "v_ashrrev_i16";        // "v_ashrrev_i16_e64"
    3836           0 :             return;
    3837             :           case '3':      // 1 string to match.
    3838           0 :             if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3839             :               break;
    3840           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_ashrrev_i32_e64"
    3841           0 :               Mnemonic = "v_ashrrev_i32";
    3842             :             return;
    3843             :           case '6':      // 1 string to match.
    3844           0 :             if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3845             :               break;
    3846           0 :             Mnemonic = "v_ashrrev_i64";        // "v_ashrrev_i64_e64"
    3847           0 :             return;
    3848             :           }
    3849             :           break;
    3850         186 :         case 'c':        // 110 strings to match.
    3851             :           switch (Mnemonic[3]) {
    3852             :           default: break;
    3853           0 :           case 'm':      // 93 strings to match.
    3854           0 :             if (Mnemonic[4] != 'p')
    3855             :               break;
    3856             :             switch (Mnemonic[5]) {
    3857             :             default: break;
    3858           0 :             case '_':    // 21 strings to match.
    3859             :               switch (Mnemonic[6]) {
    3860             :               default: break;
    3861           0 :               case 'n':  // 18 strings to match.
    3862             :                 switch (Mnemonic[7]) {
    3863             :                 default: break;
    3864             :                 case 'e':        // 3 strings to match.
    3865           0 :                   if (memcmp(Mnemonic.data()+8, "q_f", 3) != 0)
    3866             :                     break;
    3867             :                   switch (Mnemonic[11]) {
    3868             :                   default: break;
    3869             :                   case '1':      // 1 string to match.
    3870           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3871             :                       break;
    3872           0 :                     Mnemonic = "v_cmp_neq_f16";        // "v_cmp_neq_f16_e64"
    3873           0 :                     return;
    3874             :                   case '3':      // 1 string to match.
    3875           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3876             :                       break;
    3877           0 :                     Mnemonic = "v_cmp_neq_f32";        // "v_cmp_neq_f32_e64"
    3878           0 :                     return;
    3879             :                   case '6':      // 1 string to match.
    3880           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3881             :                       break;
    3882           0 :                     Mnemonic = "v_cmp_neq_f64";        // "v_cmp_neq_f64_e64"
    3883           0 :                     return;
    3884             :                   }
    3885             :                   break;
    3886           0 :                 case 'g':        // 6 strings to match.
    3887             :                   switch (Mnemonic[8]) {
    3888             :                   default: break;
    3889             :                   case 'e':      // 3 strings to match.
    3890           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3891             :                       break;
    3892             :                     switch (Mnemonic[11]) {
    3893             :                     default: break;
    3894             :                     case '1':    // 1 string to match.
    3895           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3896             :                         break;
    3897           0 :                       Mnemonic = "v_cmp_nge_f16";      // "v_cmp_nge_f16_e64"
    3898           0 :                       return;
    3899             :                     case '3':    // 1 string to match.
    3900           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3901             :                         break;
    3902           0 :                       Mnemonic = "v_cmp_nge_f32";      // "v_cmp_nge_f32_e64"
    3903           0 :                       return;
    3904             :                     case '6':    // 1 string to match.
    3905           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3906             :                         break;
    3907           0 :                       Mnemonic = "v_cmp_nge_f64";      // "v_cmp_nge_f64_e64"
    3908           0 :                       return;
    3909             :                     }
    3910             :                     break;
    3911             :                   case 't':      // 3 strings to match.
    3912           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3913             :                       break;
    3914             :                     switch (Mnemonic[11]) {
    3915             :                     default: break;
    3916             :                     case '1':    // 1 string to match.
    3917           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3918             :                         break;
    3919           0 :                       Mnemonic = "v_cmp_ngt_f16";      // "v_cmp_ngt_f16_e64"
    3920           0 :                       return;
    3921             :                     case '3':    // 1 string to match.
    3922           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3923             :                         break;
    3924           0 :                       Mnemonic = "v_cmp_ngt_f32";      // "v_cmp_ngt_f32_e64"
    3925           0 :                       return;
    3926             :                     case '6':    // 1 string to match.
    3927           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3928             :                         break;
    3929           0 :                       Mnemonic = "v_cmp_ngt_f64";      // "v_cmp_ngt_f64_e64"
    3930           0 :                       return;
    3931             :                     }
    3932             :                     break;
    3933             :                   }
    3934             :                   break;
    3935           0 :                 case 'l':        // 9 strings to match.
    3936             :                   switch (Mnemonic[8]) {
    3937             :                   default: break;
    3938             :                   case 'e':      // 3 strings to match.
    3939           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3940             :                       break;
    3941             :                     switch (Mnemonic[11]) {
    3942             :                     default: break;
    3943             :                     case '1':    // 1 string to match.
    3944           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3945             :                         break;
    3946           0 :                       Mnemonic = "v_cmp_nle_f16";      // "v_cmp_nle_f16_e64"
    3947           0 :                       return;
    3948             :                     case '3':    // 1 string to match.
    3949           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3950             :                         break;
    3951           0 :                       Mnemonic = "v_cmp_nle_f32";      // "v_cmp_nle_f32_e64"
    3952           0 :                       return;
    3953             :                     case '6':    // 1 string to match.
    3954           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3955             :                         break;
    3956           0 :                       Mnemonic = "v_cmp_nle_f64";      // "v_cmp_nle_f64_e64"
    3957           0 :                       return;
    3958             :                     }
    3959             :                     break;
    3960             :                   case 'g':      // 3 strings to match.
    3961           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3962             :                       break;
    3963             :                     switch (Mnemonic[11]) {
    3964             :                     default: break;
    3965             :                     case '1':    // 1 string to match.
    3966           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3967             :                         break;
    3968           0 :                       Mnemonic = "v_cmp_nlg_f16";      // "v_cmp_nlg_f16_e64"
    3969           0 :                       return;
    3970             :                     case '3':    // 1 string to match.
    3971           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3972             :                         break;
    3973           0 :                       Mnemonic = "v_cmp_nlg_f32";      // "v_cmp_nlg_f32_e64"
    3974           0 :                       return;
    3975             :                     case '6':    // 1 string to match.
    3976           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3977             :                         break;
    3978           0 :                       Mnemonic = "v_cmp_nlg_f64";      // "v_cmp_nlg_f64_e64"
    3979           0 :                       return;
    3980             :                     }
    3981             :                     break;
    3982             :                   case 't':      // 3 strings to match.
    3983           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    3984             :                       break;
    3985             :                     switch (Mnemonic[11]) {
    3986             :                     default: break;
    3987             :                     case '1':    // 1 string to match.
    3988           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    3989             :                         break;
    3990           0 :                       Mnemonic = "v_cmp_nlt_f16";      // "v_cmp_nlt_f16_e64"
    3991           0 :                       return;
    3992             :                     case '3':    // 1 string to match.
    3993           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    3994             :                         break;
    3995           0 :                       Mnemonic = "v_cmp_nlt_f32";      // "v_cmp_nlt_f32_e64"
    3996           0 :                       return;
    3997             :                     case '6':    // 1 string to match.
    3998           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    3999             :                         break;
    4000           0 :                       Mnemonic = "v_cmp_nlt_f64";      // "v_cmp_nlt_f64_e64"
    4001           0 :                       return;
    4002             :                     }
    4003             :                     break;
    4004             :                   }
    4005             :                   break;
    4006             :                 }
    4007             :                 break;
    4008             :               case 't':  // 3 strings to match.
    4009           0 :                 if (memcmp(Mnemonic.data()+7, "ru_f", 4) != 0)
    4010             :                   break;
    4011             :                 switch (Mnemonic[11]) {
    4012             :                 default: break;
    4013             :                 case '1':        // 1 string to match.
    4014           0 :                   if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4015             :                     break;
    4016           0 :                   Mnemonic = "v_cmp_tru_f16";  // "v_cmp_tru_f16_e64"
    4017           0 :                   return;
    4018             :                 case '3':        // 1 string to match.
    4019           0 :                   if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4020             :                     break;
    4021           0 :                   Mnemonic = "v_cmp_tru_f32";  // "v_cmp_tru_f32_e64"
    4022           0 :                   return;
    4023             :                 case '6':        // 1 string to match.
    4024           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4025             :                     break;
    4026           0 :                   Mnemonic = "v_cmp_tru_f64";  // "v_cmp_tru_f64_e64"
    4027           0 :                   return;
    4028             :                 }
    4029             :                 break;
    4030             :               }
    4031             :               break;
    4032           0 :             case 's':    // 18 strings to match.
    4033             :               switch (Mnemonic[6]) {
    4034             :               default: break;
    4035           0 :               case '_':  // 12 strings to match.
    4036             :                 switch (Mnemonic[7]) {
    4037             :                 default: break;
    4038             :                 case 'e':        // 2 strings to match.
    4039           0 :                   if (memcmp(Mnemonic.data()+8, "q_f", 3) != 0)
    4040             :                     break;
    4041             :                   switch (Mnemonic[11]) {
    4042             :                   default: break;
    4043             :                   case '3':      // 1 string to match.
    4044           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4045             :                       break;
    4046           0 :                     Mnemonic = "v_cmps_eq_f32";        // "v_cmps_eq_f32_e64"
    4047           0 :                     return;
    4048             :                   case '6':      // 1 string to match.
    4049           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4050             :                       break;
    4051           0 :                     Mnemonic = "v_cmps_eq_f64";        // "v_cmps_eq_f64_e64"
    4052           0 :                     return;
    4053             :                   }
    4054             :                   break;
    4055           0 :                 case 'g':        // 4 strings to match.
    4056             :                   switch (Mnemonic[8]) {
    4057             :                   default: break;
    4058             :                   case 'e':      // 2 strings to match.
    4059           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4060             :                       break;
    4061             :                     switch (Mnemonic[11]) {
    4062             :                     default: break;
    4063             :                     case '3':    // 1 string to match.
    4064           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4065             :                         break;
    4066           0 :                       Mnemonic = "v_cmps_ge_f32";      // "v_cmps_ge_f32_e64"
    4067           0 :                       return;
    4068             :                     case '6':    // 1 string to match.
    4069           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4070             :                         break;
    4071           0 :                       Mnemonic = "v_cmps_ge_f64";      // "v_cmps_ge_f64_e64"
    4072           0 :                       return;
    4073             :                     }
    4074             :                     break;
    4075             :                   case 't':      // 2 strings to match.
    4076           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4077             :                       break;
    4078             :                     switch (Mnemonic[11]) {
    4079             :                     default: break;
    4080             :                     case '3':    // 1 string to match.
    4081           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4082             :                         break;
    4083           0 :                       Mnemonic = "v_cmps_gt_f32";      // "v_cmps_gt_f32_e64"
    4084           0 :                       return;
    4085             :                     case '6':    // 1 string to match.
    4086           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4087             :                         break;
    4088           0 :                       Mnemonic = "v_cmps_gt_f64";      // "v_cmps_gt_f64_e64"
    4089           0 :                       return;
    4090             :                     }
    4091             :                     break;
    4092             :                   }
    4093             :                   break;
    4094           0 :                 case 'l':        // 6 strings to match.
    4095             :                   switch (Mnemonic[8]) {
    4096             :                   default: break;
    4097             :                   case 'e':      // 2 strings to match.
    4098           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4099             :                       break;
    4100             :                     switch (Mnemonic[11]) {
    4101             :                     default: break;
    4102             :                     case '3':    // 1 string to match.
    4103           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4104             :                         break;
    4105           0 :                       Mnemonic = "v_cmps_le_f32";      // "v_cmps_le_f32_e64"
    4106           0 :                       return;
    4107             :                     case '6':    // 1 string to match.
    4108           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4109             :                         break;
    4110           0 :                       Mnemonic = "v_cmps_le_f64";      // "v_cmps_le_f64_e64"
    4111           0 :                       return;
    4112             :                     }
    4113             :                     break;
    4114             :                   case 'g':      // 2 strings to match.
    4115           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4116             :                       break;
    4117             :                     switch (Mnemonic[11]) {
    4118             :                     default: break;
    4119             :                     case '3':    // 1 string to match.
    4120           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4121             :                         break;
    4122           0 :                       Mnemonic = "v_cmps_lg_f32";      // "v_cmps_lg_f32_e64"
    4123           0 :                       return;
    4124             :                     case '6':    // 1 string to match.
    4125           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4126             :                         break;
    4127           0 :                       Mnemonic = "v_cmps_lg_f64";      // "v_cmps_lg_f64_e64"
    4128           0 :                       return;
    4129             :                     }
    4130             :                     break;
    4131             :                   case 't':      // 2 strings to match.
    4132           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4133             :                       break;
    4134             :                     switch (Mnemonic[11]) {
    4135             :                     default: break;
    4136             :                     case '3':    // 1 string to match.
    4137           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4138             :                         break;
    4139           0 :                       Mnemonic = "v_cmps_lt_f32";      // "v_cmps_lt_f32_e64"
    4140           0 :                       return;
    4141             :                     case '6':    // 1 string to match.
    4142           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4143             :                         break;
    4144           0 :                       Mnemonic = "v_cmps_lt_f64";      // "v_cmps_lt_f64_e64"
    4145           0 :                       return;
    4146             :                     }
    4147             :                     break;
    4148             :                   }
    4149             :                   break;
    4150             :                 }
    4151             :                 break;
    4152           0 :               case 'x':  // 6 strings to match.
    4153           0 :                 if (Mnemonic[7] != '_')
    4154             :                   break;
    4155             :                 switch (Mnemonic[8]) {
    4156             :                 default: break;
    4157             :                 case 'f':        // 2 strings to match.
    4158           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4159             :                     break;
    4160             :                   switch (Mnemonic[11]) {
    4161             :                   default: break;
    4162             :                   case '3':      // 1 string to match.
    4163           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4164             :                       break;
    4165           0 :                     Mnemonic = "v_cmpsx_f_f32";        // "v_cmpsx_f_f32_e64"
    4166           0 :                     return;
    4167             :                   case '6':      // 1 string to match.
    4168           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4169             :                       break;
    4170           0 :                     Mnemonic = "v_cmpsx_f_f64";        // "v_cmpsx_f_f64_e64"
    4171           0 :                     return;
    4172             :                   }
    4173             :                   break;
    4174             :                 case 'o':        // 2 strings to match.
    4175           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4176             :                     break;
    4177             :                   switch (Mnemonic[11]) {
    4178             :                   default: break;
    4179             :                   case '3':      // 1 string to match.
    4180           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4181             :                       break;
    4182           0 :                     Mnemonic = "v_cmpsx_o_f32";        // "v_cmpsx_o_f32_e64"
    4183           0 :                     return;
    4184             :                   case '6':      // 1 string to match.
    4185           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4186             :                       break;
    4187           0 :                     Mnemonic = "v_cmpsx_o_f64";        // "v_cmpsx_o_f64_e64"
    4188           0 :                     return;
    4189             :                   }
    4190             :                   break;
    4191             :                 case 'u':        // 2 strings to match.
    4192           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4193             :                     break;
    4194             :                   switch (Mnemonic[11]) {
    4195             :                   default: break;
    4196             :                   case '3':      // 1 string to match.
    4197           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4198             :                       break;
    4199           0 :                     Mnemonic = "v_cmpsx_u_f32";        // "v_cmpsx_u_f32_e64"
    4200           0 :                     return;
    4201             :                   case '6':      // 1 string to match.
    4202           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4203             :                       break;
    4204           0 :                     Mnemonic = "v_cmpsx_u_f64";        // "v_cmpsx_u_f64_e64"
    4205           0 :                     return;
    4206             :                   }
    4207             :                   break;
    4208             :                 }
    4209             :                 break;
    4210             :               }
    4211             :               break;
    4212           0 :             case 'x':    // 54 strings to match.
    4213           0 :               if (Mnemonic[6] != '_')
    4214             :                 break;
    4215             :               switch (Mnemonic[7]) {
    4216             :               default: break;
    4217             :               case 'e':  // 9 strings to match.
    4218           0 :                 if (memcmp(Mnemonic.data()+8, "q_", 2) != 0)
    4219             :                   break;
    4220             :                 switch (Mnemonic[10]) {
    4221             :                 default: break;
    4222           0 :                 case 'f':        // 3 strings to match.
    4223             :                   switch (Mnemonic[11]) {
    4224             :                   default: break;
    4225             :                   case '1':      // 1 string to match.
    4226           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4227             :                       break;
    4228           0 :                     Mnemonic = "v_cmpx_eq_f16";        // "v_cmpx_eq_f16_e64"
    4229           0 :                     return;
    4230             :                   case '3':      // 1 string to match.
    4231           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4232             :                       break;
    4233           0 :                     Mnemonic = "v_cmpx_eq_f32";        // "v_cmpx_eq_f32_e64"
    4234           0 :                     return;
    4235             :                   case '6':      // 1 string to match.
    4236           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4237             :                       break;
    4238           0 :                     Mnemonic = "v_cmpx_eq_f64";        // "v_cmpx_eq_f64_e64"
    4239           0 :                     return;
    4240             :                   }
    4241             :                   break;
    4242           0 :                 case 'i':        // 3 strings to match.
    4243             :                   switch (Mnemonic[11]) {
    4244             :                   default: break;
    4245             :                   case '1':      // 1 string to match.
    4246           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4247             :                       break;
    4248           0 :                     Mnemonic = "v_cmpx_eq_i16";        // "v_cmpx_eq_i16_e64"
    4249           0 :                     return;
    4250             :                   case '3':      // 1 string to match.
    4251           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4252             :                       break;
    4253           0 :                     Mnemonic = "v_cmpx_eq_i32";        // "v_cmpx_eq_i32_e64"
    4254           0 :                     return;
    4255             :                   case '6':      // 1 string to match.
    4256           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4257             :                       break;
    4258           0 :                     Mnemonic = "v_cmpx_eq_i64";        // "v_cmpx_eq_i64_e64"
    4259           0 :                     return;
    4260             :                   }
    4261             :                   break;
    4262           0 :                 case 'u':        // 3 strings to match.
    4263             :                   switch (Mnemonic[11]) {
    4264             :                   default: break;
    4265             :                   case '1':      // 1 string to match.
    4266           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4267             :                       break;
    4268           0 :                     Mnemonic = "v_cmpx_eq_u16";        // "v_cmpx_eq_u16_e64"
    4269           0 :                     return;
    4270             :                   case '3':      // 1 string to match.
    4271           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4272             :                       break;
    4273           0 :                     Mnemonic = "v_cmpx_eq_u32";        // "v_cmpx_eq_u32_e64"
    4274           0 :                     return;
    4275             :                   case '6':      // 1 string to match.
    4276           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4277             :                       break;
    4278           0 :                     Mnemonic = "v_cmpx_eq_u64";        // "v_cmpx_eq_u64_e64"
    4279           0 :                     return;
    4280             :                   }
    4281             :                   break;
    4282             :                 }
    4283             :                 break;
    4284           0 :               case 'g':  // 18 strings to match.
    4285             :                 switch (Mnemonic[8]) {
    4286             :                 default: break;
    4287           0 :                 case 'e':        // 9 strings to match.
    4288           0 :                   if (Mnemonic[9] != '_')
    4289             :                     break;
    4290             :                   switch (Mnemonic[10]) {
    4291             :                   default: break;
    4292           0 :                   case 'f':      // 3 strings to match.
    4293             :                     switch (Mnemonic[11]) {
    4294             :                     default: break;
    4295             :                     case '1':    // 1 string to match.
    4296           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4297             :                         break;
    4298           0 :                       Mnemonic = "v_cmpx_ge_f16";      // "v_cmpx_ge_f16_e64"
    4299           0 :                       return;
    4300             :                     case '3':    // 1 string to match.
    4301           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4302             :                         break;
    4303           0 :                       Mnemonic = "v_cmpx_ge_f32";      // "v_cmpx_ge_f32_e64"
    4304           0 :                       return;
    4305             :                     case '6':    // 1 string to match.
    4306           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4307             :                         break;
    4308           0 :                       Mnemonic = "v_cmpx_ge_f64";      // "v_cmpx_ge_f64_e64"
    4309           0 :                       return;
    4310             :                     }
    4311             :                     break;
    4312           0 :                   case 'i':      // 3 strings to match.
    4313             :                     switch (Mnemonic[11]) {
    4314             :                     default: break;
    4315             :                     case '1':    // 1 string to match.
    4316           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4317             :                         break;
    4318           0 :                       Mnemonic = "v_cmpx_ge_i16";      // "v_cmpx_ge_i16_e64"
    4319           0 :                       return;
    4320             :                     case '3':    // 1 string to match.
    4321           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4322             :                         break;
    4323           0 :                       Mnemonic = "v_cmpx_ge_i32";      // "v_cmpx_ge_i32_e64"
    4324           0 :                       return;
    4325             :                     case '6':    // 1 string to match.
    4326           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4327             :                         break;
    4328           0 :                       Mnemonic = "v_cmpx_ge_i64";      // "v_cmpx_ge_i64_e64"
    4329           0 :                       return;
    4330             :                     }
    4331             :                     break;
    4332           0 :                   case 'u':      // 3 strings to match.
    4333             :                     switch (Mnemonic[11]) {
    4334             :                     default: break;
    4335             :                     case '1':    // 1 string to match.
    4336           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4337             :                         break;
    4338           0 :                       Mnemonic = "v_cmpx_ge_u16";      // "v_cmpx_ge_u16_e64"
    4339           0 :                       return;
    4340             :                     case '3':    // 1 string to match.
    4341           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4342             :                         break;
    4343           0 :                       Mnemonic = "v_cmpx_ge_u32";      // "v_cmpx_ge_u32_e64"
    4344           0 :                       return;
    4345             :                     case '6':    // 1 string to match.
    4346           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4347             :                         break;
    4348           0 :                       Mnemonic = "v_cmpx_ge_u64";      // "v_cmpx_ge_u64_e64"
    4349           0 :                       return;
    4350             :                     }
    4351             :                     break;
    4352             :                   }
    4353             :                   break;
    4354           0 :                 case 't':        // 9 strings to match.
    4355           0 :                   if (Mnemonic[9] != '_')
    4356             :                     break;
    4357             :                   switch (Mnemonic[10]) {
    4358             :                   default: break;
    4359           0 :                   case 'f':      // 3 strings to match.
    4360             :                     switch (Mnemonic[11]) {
    4361             :                     default: break;
    4362             :                     case '1':    // 1 string to match.
    4363           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4364             :                         break;
    4365           0 :                       Mnemonic = "v_cmpx_gt_f16";      // "v_cmpx_gt_f16_e64"
    4366           0 :                       return;
    4367             :                     case '3':    // 1 string to match.
    4368           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4369             :                         break;
    4370           0 :                       Mnemonic = "v_cmpx_gt_f32";      // "v_cmpx_gt_f32_e64"
    4371           0 :                       return;
    4372             :                     case '6':    // 1 string to match.
    4373           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4374             :                         break;
    4375           0 :                       Mnemonic = "v_cmpx_gt_f64";      // "v_cmpx_gt_f64_e64"
    4376           0 :                       return;
    4377             :                     }
    4378             :                     break;
    4379           0 :                   case 'i':      // 3 strings to match.
    4380             :                     switch (Mnemonic[11]) {
    4381             :                     default: break;
    4382             :                     case '1':    // 1 string to match.
    4383           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4384             :                         break;
    4385           0 :                       Mnemonic = "v_cmpx_gt_i16";      // "v_cmpx_gt_i16_e64"
    4386           0 :                       return;
    4387             :                     case '3':    // 1 string to match.
    4388           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4389             :                         break;
    4390           0 :                       Mnemonic = "v_cmpx_gt_i32";      // "v_cmpx_gt_i32_e64"
    4391           0 :                       return;
    4392             :                     case '6':    // 1 string to match.
    4393           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4394             :                         break;
    4395           0 :                       Mnemonic = "v_cmpx_gt_i64";      // "v_cmpx_gt_i64_e64"
    4396           0 :                       return;
    4397             :                     }
    4398             :                     break;
    4399           0 :                   case 'u':      // 3 strings to match.
    4400             :                     switch (Mnemonic[11]) {
    4401             :                     default: break;
    4402             :                     case '1':    // 1 string to match.
    4403           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4404             :                         break;
    4405           0 :                       Mnemonic = "v_cmpx_gt_u16";      // "v_cmpx_gt_u16_e64"
    4406           0 :                       return;
    4407             :                     case '3':    // 1 string to match.
    4408           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4409             :                         break;
    4410           0 :                       Mnemonic = "v_cmpx_gt_u32";      // "v_cmpx_gt_u32_e64"
    4411           0 :                       return;
    4412             :                     case '6':    // 1 string to match.
    4413           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4414             :                         break;
    4415           0 :                       Mnemonic = "v_cmpx_gt_u64";      // "v_cmpx_gt_u64_e64"
    4416           0 :                       return;
    4417             :                     }
    4418             :                     break;
    4419             :                   }
    4420             :                   break;
    4421             :                 }
    4422             :                 break;
    4423           0 :               case 'l':  // 21 strings to match.
    4424             :                 switch (Mnemonic[8]) {
    4425             :                 default: break;
    4426           0 :                 case 'e':        // 9 strings to match.
    4427           0 :                   if (Mnemonic[9] != '_')
    4428             :                     break;
    4429             :                   switch (Mnemonic[10]) {
    4430             :                   default: break;
    4431           0 :                   case 'f':      // 3 strings to match.
    4432             :                     switch (Mnemonic[11]) {
    4433             :                     default: break;
    4434             :                     case '1':    // 1 string to match.
    4435           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4436             :                         break;
    4437           0 :                       Mnemonic = "v_cmpx_le_f16";      // "v_cmpx_le_f16_e64"
    4438           0 :                       return;
    4439             :                     case '3':    // 1 string to match.
    4440           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4441             :                         break;
    4442           0 :                       Mnemonic = "v_cmpx_le_f32";      // "v_cmpx_le_f32_e64"
    4443           0 :                       return;
    4444             :                     case '6':    // 1 string to match.
    4445           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4446             :                         break;
    4447           0 :                       Mnemonic = "v_cmpx_le_f64";      // "v_cmpx_le_f64_e64"
    4448           0 :                       return;
    4449             :                     }
    4450             :                     break;
    4451           0 :                   case 'i':      // 3 strings to match.
    4452             :                     switch (Mnemonic[11]) {
    4453             :                     default: break;
    4454             :                     case '1':    // 1 string to match.
    4455           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4456             :                         break;
    4457           0 :                       Mnemonic = "v_cmpx_le_i16";      // "v_cmpx_le_i16_e64"
    4458           0 :                       return;
    4459             :                     case '3':    // 1 string to match.
    4460           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4461             :                         break;
    4462           0 :                       Mnemonic = "v_cmpx_le_i32";      // "v_cmpx_le_i32_e64"
    4463           0 :                       return;
    4464             :                     case '6':    // 1 string to match.
    4465           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4466             :                         break;
    4467           0 :                       Mnemonic = "v_cmpx_le_i64";      // "v_cmpx_le_i64_e64"
    4468           0 :                       return;
    4469             :                     }
    4470             :                     break;
    4471           0 :                   case 'u':      // 3 strings to match.
    4472             :                     switch (Mnemonic[11]) {
    4473             :                     default: break;
    4474             :                     case '1':    // 1 string to match.
    4475           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4476             :                         break;
    4477           0 :                       Mnemonic = "v_cmpx_le_u16";      // "v_cmpx_le_u16_e64"
    4478           0 :                       return;
    4479             :                     case '3':    // 1 string to match.
    4480           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4481             :                         break;
    4482           0 :                       Mnemonic = "v_cmpx_le_u32";      // "v_cmpx_le_u32_e64"
    4483           0 :                       return;
    4484             :                     case '6':    // 1 string to match.
    4485           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4486             :                         break;
    4487           0 :                       Mnemonic = "v_cmpx_le_u64";      // "v_cmpx_le_u64_e64"
    4488           0 :                       return;
    4489             :                     }
    4490             :                     break;
    4491             :                   }
    4492             :                   break;
    4493             :                 case 'g':        // 3 strings to match.
    4494           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    4495             :                     break;
    4496             :                   switch (Mnemonic[11]) {
    4497             :                   default: break;
    4498             :                   case '1':      // 1 string to match.
    4499           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4500             :                       break;
    4501           0 :                     Mnemonic = "v_cmpx_lg_f16";        // "v_cmpx_lg_f16_e64"
    4502           0 :                     return;
    4503             :                   case '3':      // 1 string to match.
    4504           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4505             :                       break;
    4506           0 :                     Mnemonic = "v_cmpx_lg_f32";        // "v_cmpx_lg_f32_e64"
    4507           0 :                     return;
    4508             :                   case '6':      // 1 string to match.
    4509           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4510             :                       break;
    4511           0 :                     Mnemonic = "v_cmpx_lg_f64";        // "v_cmpx_lg_f64_e64"
    4512           0 :                     return;
    4513             :                   }
    4514             :                   break;
    4515           0 :                 case 't':        // 9 strings to match.
    4516           0 :                   if (Mnemonic[9] != '_')
    4517             :                     break;
    4518             :                   switch (Mnemonic[10]) {
    4519             :                   default: break;
    4520           0 :                   case 'f':      // 3 strings to match.
    4521             :                     switch (Mnemonic[11]) {
    4522             :                     default: break;
    4523             :                     case '1':    // 1 string to match.
    4524           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4525             :                         break;
    4526           0 :                       Mnemonic = "v_cmpx_lt_f16";      // "v_cmpx_lt_f16_e64"
    4527           0 :                       return;
    4528             :                     case '3':    // 1 string to match.
    4529           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4530             :                         break;
    4531           0 :                       Mnemonic = "v_cmpx_lt_f32";      // "v_cmpx_lt_f32_e64"
    4532           0 :                       return;
    4533             :                     case '6':    // 1 string to match.
    4534           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4535             :                         break;
    4536           0 :                       Mnemonic = "v_cmpx_lt_f64";      // "v_cmpx_lt_f64_e64"
    4537           0 :                       return;
    4538             :                     }
    4539             :                     break;
    4540           0 :                   case 'i':      // 3 strings to match.
    4541             :                     switch (Mnemonic[11]) {
    4542             :                     default: break;
    4543             :                     case '1':    // 1 string to match.
    4544           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4545             :                         break;
    4546           0 :                       Mnemonic = "v_cmpx_lt_i16";      // "v_cmpx_lt_i16_e64"
    4547           0 :                       return;
    4548             :                     case '3':    // 1 string to match.
    4549           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4550             :                         break;
    4551           0 :                       Mnemonic = "v_cmpx_lt_i32";      // "v_cmpx_lt_i32_e64"
    4552           0 :                       return;
    4553             :                     case '6':    // 1 string to match.
    4554           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4555             :                         break;
    4556           0 :                       Mnemonic = "v_cmpx_lt_i64";      // "v_cmpx_lt_i64_e64"
    4557           0 :                       return;
    4558             :                     }
    4559             :                     break;
    4560           0 :                   case 'u':      // 3 strings to match.
    4561             :                     switch (Mnemonic[11]) {
    4562             :                     default: break;
    4563             :                     case '1':    // 1 string to match.
    4564           0 :                       if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4565             :                         break;
    4566           0 :                       Mnemonic = "v_cmpx_lt_u16";      // "v_cmpx_lt_u16_e64"
    4567           0 :                       return;
    4568             :                     case '3':    // 1 string to match.
    4569           0 :                       if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4570             :                         break;
    4571           0 :                       Mnemonic = "v_cmpx_lt_u32";      // "v_cmpx_lt_u32_e64"
    4572           0 :                       return;
    4573             :                     case '6':    // 1 string to match.
    4574           0 :                       if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4575             :                         break;
    4576           0 :                       Mnemonic = "v_cmpx_lt_u64";      // "v_cmpx_lt_u64_e64"
    4577           0 :                       return;
    4578             :                     }
    4579             :                     break;
    4580             :                   }
    4581             :                   break;
    4582             :                 }
    4583             :                 break;
    4584             :               case 'n':  // 6 strings to match.
    4585           0 :                 if (memcmp(Mnemonic.data()+8, "e_", 2) != 0)
    4586             :                   break;
    4587             :                 switch (Mnemonic[10]) {
    4588             :                 default: break;
    4589           0 :                 case 'i':        // 3 strings to match.
    4590             :                   switch (Mnemonic[11]) {
    4591             :                   default: break;
    4592             :                   case '1':      // 1 string to match.
    4593           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4594             :                       break;
    4595           0 :                     Mnemonic = "v_cmpx_ne_i16";        // "v_cmpx_ne_i16_e64"
    4596           0 :                     return;
    4597             :                   case '3':      // 1 string to match.
    4598           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4599             :                       break;
    4600           0 :                     Mnemonic = "v_cmpx_ne_i32";        // "v_cmpx_ne_i32_e64"
    4601           0 :                     return;
    4602             :                   case '6':      // 1 string to match.
    4603           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4604             :                       break;
    4605           0 :                     Mnemonic = "v_cmpx_ne_i64";        // "v_cmpx_ne_i64_e64"
    4606           0 :                     return;
    4607             :                   }
    4608             :                   break;
    4609           0 :                 case 'u':        // 3 strings to match.
    4610             :                   switch (Mnemonic[11]) {
    4611             :                   default: break;
    4612             :                   case '1':      // 1 string to match.
    4613           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4614             :                       break;
    4615           0 :                     Mnemonic = "v_cmpx_ne_u16";        // "v_cmpx_ne_u16_e64"
    4616           0 :                     return;
    4617             :                   case '3':      // 1 string to match.
    4618           0 :                     if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4619             :                       break;
    4620           0 :                     Mnemonic = "v_cmpx_ne_u32";        // "v_cmpx_ne_u32_e64"
    4621           0 :                     return;
    4622             :                   case '6':      // 1 string to match.
    4623           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4624             :                       break;
    4625           0 :                     Mnemonic = "v_cmpx_ne_u64";        // "v_cmpx_ne_u64_e64"
    4626           0 :                     return;
    4627             :                   }
    4628             :                   break;
    4629             :                 }
    4630             :                 break;
    4631             :               }
    4632             :               break;
    4633             :             }
    4634             :             break;
    4635             :           case 'n':      // 1 string to match.
    4636           0 :             if (memcmp(Mnemonic.data()+4, "dmask_b32_e64", 13) != 0)
    4637             :               break;
    4638           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cndmask_b32_e64"
    4639           0 :               Mnemonic = "v_cndmask_b32";
    4640             :             return;
    4641             :           case 'v':      // 16 strings to match.
    4642         186 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
    4643             :               break;
    4644             :             switch (Mnemonic[6]) {
    4645             :             default: break;
    4646          93 :             case 'f':    // 10 strings to match.
    4647             :               switch (Mnemonic[7]) {
    4648             :               default: break;
    4649             :               case '1':  // 3 strings to match.
    4650           0 :                 if (memcmp(Mnemonic.data()+8, "6_", 2) != 0)
    4651             :                   break;
    4652             :                 switch (Mnemonic[10]) {
    4653             :                 default: break;
    4654             :                 case 'f':        // 1 string to match.
    4655           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4656             :                     break;
    4657           0 :                   Mnemonic = "v_cvt_f16_f32";  // "v_cvt_f16_f32_e64"
    4658           0 :                   return;
    4659             :                 case 'i':        // 1 string to match.
    4660           0 :                   if (memcmp(Mnemonic.data()+11, "16_e64", 6) != 0)
    4661             :                     break;
    4662           0 :                   Mnemonic = "v_cvt_f16_i16";  // "v_cvt_f16_i16_e64"
    4663           0 :                   return;
    4664             :                 case 'u':        // 1 string to match.
    4665           0 :                   if (memcmp(Mnemonic.data()+11, "16_e64", 6) != 0)
    4666             :                     break;
    4667           0 :                   Mnemonic = "v_cvt_f16_u16";  // "v_cvt_f16_u16_e64"
    4668           0 :                   return;
    4669             :                 }
    4670             :                 break;
    4671             :               case '3':  // 4 strings to match.
    4672           0 :                 if (memcmp(Mnemonic.data()+8, "2_", 2) != 0)
    4673             :                   break;
    4674             :                 switch (Mnemonic[10]) {
    4675             :                 default: break;
    4676           0 :                 case 'f':        // 2 strings to match.
    4677             :                   switch (Mnemonic[11]) {
    4678             :                   default: break;
    4679             :                   case '1':      // 1 string to match.
    4680           0 :                     if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4681             :                       break;
    4682           0 :                     Mnemonic = "v_cvt_f32_f16";        // "v_cvt_f32_f16_e64"
    4683           0 :                     return;
    4684             :                   case '6':      // 1 string to match.
    4685           0 :                     if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4686             :                       break;
    4687           0 :                     Mnemonic = "v_cvt_f32_f64";        // "v_cvt_f32_f64_e64"
    4688           0 :                     return;
    4689             :                   }
    4690             :                   break;
    4691             :                 case 'i':        // 1 string to match.
    4692           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4693             :                     break;
    4694           0 :                   Mnemonic = "v_cvt_f32_i32";  // "v_cvt_f32_i32_e64"
    4695           0 :                   return;
    4696             :                 case 'u':        // 1 string to match.
    4697           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4698             :                     break;
    4699           0 :                   Mnemonic = "v_cvt_f32_u32";  // "v_cvt_f32_u32_e64"
    4700           0 :                   return;
    4701             :                 }
    4702             :                 break;
    4703             :               case '6':  // 3 strings to match.
    4704           0 :                 if (memcmp(Mnemonic.data()+8, "4_", 2) != 0)
    4705             :                   break;
    4706             :                 switch (Mnemonic[10]) {
    4707             :                 default: break;
    4708             :                 case 'f':        // 1 string to match.
    4709           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4710             :                     break;
    4711           0 :                   Mnemonic = "v_cvt_f64_f32";  // "v_cvt_f64_f32_e64"
    4712           0 :                   return;
    4713             :                 case 'i':        // 1 string to match.
    4714           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4715             :                     break;
    4716           0 :                   Mnemonic = "v_cvt_f64_i32";  // "v_cvt_f64_i32_e64"
    4717           0 :                   return;
    4718             :                 case 'u':        // 1 string to match.
    4719           0 :                   if (memcmp(Mnemonic.data()+11, "32_e64", 6) != 0)
    4720             :                     break;
    4721           0 :                   Mnemonic = "v_cvt_f64_u32";  // "v_cvt_f64_u32_e64"
    4722           0 :                   return;
    4723             :                 }
    4724             :                 break;
    4725             :               }
    4726             :               break;
    4727           0 :             case 'i':    // 3 strings to match.
    4728             :               switch (Mnemonic[7]) {
    4729             :               default: break;
    4730             :               case '1':  // 1 string to match.
    4731           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_e64", 9) != 0)
    4732             :                   break;
    4733           0 :                 Mnemonic = "v_cvt_i16_f16";    // "v_cvt_i16_f16_e64"
    4734           0 :                 return;
    4735             :               case '3':  // 2 strings to match.
    4736           0 :                 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
    4737             :                   break;
    4738             :                 switch (Mnemonic[11]) {
    4739             :                 default: break;
    4740             :                 case '3':        // 1 string to match.
    4741           0 :                   if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4742             :                     break;
    4743           0 :                   Mnemonic = "v_cvt_i32_f32";  // "v_cvt_i32_f32_e64"
    4744           0 :                   return;
    4745             :                 case '6':        // 1 string to match.
    4746           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4747             :                     break;
    4748           0 :                   Mnemonic = "v_cvt_i32_f64";  // "v_cvt_i32_f64_e64"
    4749           0 :                   return;
    4750             :                 }
    4751             :                 break;
    4752             :               }
    4753             :               break;
    4754           0 :             case 'u':    // 3 strings to match.
    4755             :               switch (Mnemonic[7]) {
    4756             :               default: break;
    4757             :               case '1':  // 1 string to match.
    4758           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_e64", 9) != 0)
    4759             :                   break;
    4760           0 :                 Mnemonic = "v_cvt_u16_f16";    // "v_cvt_u16_f16_e64"
    4761           0 :                 return;
    4762             :               case '3':  // 2 strings to match.
    4763           0 :                 if (memcmp(Mnemonic.data()+8, "2_f", 3) != 0)
    4764             :                   break;
    4765             :                 switch (Mnemonic[11]) {
    4766             :                 default: break;
    4767             :                 case '3':        // 1 string to match.
    4768           0 :                   if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4769             :                     break;
    4770           0 :                   Mnemonic = "v_cvt_u32_f32";  // "v_cvt_u32_f32_e64"
    4771           0 :                   return;
    4772             :                 case '6':        // 1 string to match.
    4773           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4774             :                     break;
    4775           0 :                   Mnemonic = "v_cvt_u32_f64";  // "v_cvt_u32_f64_e64"
    4776           0 :                   return;
    4777             :                 }
    4778             :                 break;
    4779             :               }
    4780             :               break;
    4781             :             }
    4782             :             break;
    4783             :           }
    4784             :           break;
    4785             :         case 'd':        // 4 strings to match.
    4786           0 :           if (memcmp(Mnemonic.data()+3, "ot", 2) != 0)
    4787             :             break;
    4788             :           switch (Mnemonic[5]) {
    4789             :           default: break;
    4790           0 :           case '4':      // 2 strings to match.
    4791           0 :             if (Mnemonic[6] != '_')
    4792             :               break;
    4793             :             switch (Mnemonic[7]) {
    4794             :             default: break;
    4795             :             case 'i':    // 1 string to match.
    4796           0 :               if (memcmp(Mnemonic.data()+8, "32_i8_e64", 9) != 0)
    4797             :                 break;
    4798           0 :               Mnemonic = "v_dot4_i32_i8";      // "v_dot4_i32_i8_e64"
    4799           0 :               return;
    4800             :             case 'u':    // 1 string to match.
    4801           0 :               if (memcmp(Mnemonic.data()+8, "32_u8_e64", 9) != 0)
    4802             :                 break;
    4803           0 :               Mnemonic = "v_dot4_u32_u8";      // "v_dot4_u32_u8_e64"
    4804           0 :               return;
    4805             :             }
    4806             :             break;
    4807           0 :           case '8':      // 2 strings to match.
    4808           0 :             if (Mnemonic[6] != '_')
    4809             :               break;
    4810             :             switch (Mnemonic[7]) {
    4811             :             default: break;
    4812             :             case 'i':    // 1 string to match.
    4813           0 :               if (memcmp(Mnemonic.data()+8, "32_i4_e64", 9) != 0)
    4814             :                 break;
    4815           0 :               Mnemonic = "v_dot8_i32_i4";      // "v_dot8_i32_i4_e64"
    4816           0 :               return;
    4817             :             case 'u':    // 1 string to match.
    4818           0 :               if (memcmp(Mnemonic.data()+8, "32_u4_e64", 9) != 0)
    4819             :                 break;
    4820           0 :               Mnemonic = "v_dot8_u32_u4";      // "v_dot8_u32_u4_e64"
    4821           0 :               return;
    4822             :             }
    4823             :             break;
    4824             :           }
    4825             :           break;
    4826             :         case 'f':        // 1 string to match.
    4827           0 :           if (memcmp(Mnemonic.data()+3, "ma_mix_f32_e64", 14) != 0)
    4828             :             break;
    4829           0 :           Mnemonic = "v_fma_mix_f32";  // "v_fma_mix_f32_e64"
    4830           0 :           return;
    4831             :         case 'l':        // 7 strings to match.
    4832           0 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    4833             :             break;
    4834             :           switch (Mnemonic[5]) {
    4835             :           default: break;
    4836           0 :           case 'l':      // 4 strings to match.
    4837             :             switch (Mnemonic[6]) {
    4838             :             default: break;
    4839             :             case '_':    // 1 string to match.
    4840           0 :               if (memcmp(Mnemonic.data()+7, "or_b32_e64", 10) != 0)
    4841             :                 break;
    4842           0 :               Mnemonic = "v_lshl_or_b32";      // "v_lshl_or_b32_e64"
    4843           0 :               return;
    4844             :             case 'r':    // 3 strings to match.
    4845           0 :               if (memcmp(Mnemonic.data()+7, "ev_b", 4) != 0)
    4846             :                 break;
    4847             :               switch (Mnemonic[11]) {
    4848             :               default: break;
    4849             :               case '1':  // 1 string to match.
    4850           0 :                 if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4851             :                   break;
    4852           0 :                 Mnemonic = "v_lshlrev_b16";    // "v_lshlrev_b16_e64"
    4853           0 :                 return;
    4854             :               case '3':  // 1 string to match.
    4855           0 :                 if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4856             :                   break;
    4857           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_lshlrev_b32_e64"
    4858           0 :                   Mnemonic = "v_lshlrev_b32";
    4859             :                 return;
    4860             :               case '6':  // 1 string to match.
    4861           0 :                 if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4862             :                   break;
    4863           0 :                 Mnemonic = "v_lshlrev_b64";    // "v_lshlrev_b64_e64"
    4864           0 :                 return;
    4865             :               }
    4866             :               break;
    4867             :             }
    4868             :             break;
    4869             :           case 'r':      // 3 strings to match.
    4870           0 :             if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
    4871             :               break;
    4872             :             switch (Mnemonic[11]) {
    4873             :             default: break;
    4874             :             case '1':    // 1 string to match.
    4875           0 :               if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4876             :                 break;
    4877           0 :               Mnemonic = "v_lshrrev_b16";      // "v_lshrrev_b16_e64"
    4878           0 :               return;
    4879             :             case '3':    // 1 string to match.
    4880           0 :               if (memcmp(Mnemonic.data()+12, "2_e64", 5) != 0)
    4881             :                 break;
    4882           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_lshrrev_b32_e64"
    4883           0 :                 Mnemonic = "v_lshrrev_b32";
    4884             :               return;
    4885             :             case '6':    // 1 string to match.
    4886           0 :               if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4887             :                 break;
    4888           0 :               Mnemonic = "v_lshrrev_b64";      // "v_lshrrev_b64_e64"
    4889           0 :               return;
    4890             :             }
    4891             :             break;
    4892             :           }
    4893             :           break;
    4894         211 :         case 'm':        // 12 strings to match.
    4895             :           switch (Mnemonic[3]) {
    4896             :           default: break;
    4897             :           case 'a':      // 7 strings to match.
    4898           0 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    4899             :               break;
    4900             :             switch (Mnemonic[6]) {
    4901             :             default: break;
    4902           0 :             case 'i':    // 3 strings to match.
    4903             :               switch (Mnemonic[7]) {
    4904             :               default: break;
    4905             :               case '3':  // 2 strings to match.
    4906           0 :                 if (memcmp(Mnemonic.data()+8, "2_i", 3) != 0)
    4907             :                   break;
    4908             :                 switch (Mnemonic[11]) {
    4909             :                 default: break;
    4910             :                 case '1':        // 1 string to match.
    4911           0 :                   if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4912             :                     break;
    4913           0 :                   Mnemonic = "v_mad_i32_i16";  // "v_mad_i32_i16_e64"
    4914           0 :                   return;
    4915             :                 case '2':        // 1 string to match.
    4916           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4917             :                     break;
    4918           0 :                   Mnemonic = "v_mad_i32_i24";  // "v_mad_i32_i24_e64"
    4919           0 :                   return;
    4920             :                 }
    4921             :                 break;
    4922             :               case '6':  // 1 string to match.
    4923           0 :                 if (memcmp(Mnemonic.data()+8, "4_i32_e64", 9) != 0)
    4924             :                   break;
    4925           0 :                 Mnemonic = "v_mad_i64_i32";    // "v_mad_i64_i32_e64"
    4926           0 :                 return;
    4927             :               }
    4928             :               break;
    4929             :             case 'm':    // 1 string to match.
    4930           0 :               if (memcmp(Mnemonic.data()+7, "ix_f32_e64", 10) != 0)
    4931             :                 break;
    4932           0 :               Mnemonic = "v_mad_mix_f32";      // "v_mad_mix_f32_e64"
    4933           0 :               return;
    4934           0 :             case 'u':    // 3 strings to match.
    4935             :               switch (Mnemonic[7]) {
    4936             :               default: break;
    4937             :               case '3':  // 2 strings to match.
    4938           0 :                 if (memcmp(Mnemonic.data()+8, "2_u", 3) != 0)
    4939             :                   break;
    4940             :                 switch (Mnemonic[11]) {
    4941             :                 default: break;
    4942             :                 case '1':        // 1 string to match.
    4943           0 :                   if (memcmp(Mnemonic.data()+12, "6_e64", 5) != 0)
    4944             :                     break;
    4945           0 :                   Mnemonic = "v_mad_u32_u16";  // "v_mad_u32_u16_e64"
    4946           0 :                   return;
    4947             :                 case '2':        // 1 string to match.
    4948           0 :                   if (memcmp(Mnemonic.data()+12, "4_e64", 5) != 0)
    4949             :                     break;
    4950           0 :                   Mnemonic = "v_mad_u32_u24";  // "v_mad_u32_u24_e64"
    4951           0 :                   return;
    4952             :                 }
    4953             :                 break;
    4954             :               case '6':  // 1 string to match.
    4955           0 :                 if (memcmp(Mnemonic.data()+8, "4_u32_e64", 9) != 0)
    4956             :                   break;
    4957           0 :                 Mnemonic = "v_mad_u64_u32";    // "v_mad_u64_u32_e64"
    4958           0 :                 return;
    4959             :               }
    4960             :               break;
    4961             :             }
    4962             :             break;
    4963           0 :           case 'o':      // 3 strings to match.
    4964           0 :             if (Mnemonic[4] != 'v')
    4965             :               break;
    4966             :             switch (Mnemonic[5]) {
    4967             :             default: break;
    4968             :             case '_':    // 1 string to match.
    4969           0 :               if (memcmp(Mnemonic.data()+6, "fed_b32_e64", 11) != 0)
    4970             :                 break;
    4971           0 :               Mnemonic = "v_mov_fed_b32";      // "v_mov_fed_b32_e64"
    4972           0 :               return;
    4973             :             case 'r':    // 2 strings to match.
    4974           0 :               if (memcmp(Mnemonic.data()+6, "el", 2) != 0)
    4975             :                 break;
    4976             :               switch (Mnemonic[8]) {
    4977             :               default: break;
    4978             :               case 'd':  // 1 string to match.
    4979           0 :                 if (memcmp(Mnemonic.data()+9, "_b32_e64", 8) != 0)
    4980             :                   break;
    4981           0 :                 Mnemonic = "v_movreld_b32";    // "v_movreld_b32_e64"
    4982           0 :                 return;
    4983             :               case 's':  // 1 string to match.
    4984           0 :                 if (memcmp(Mnemonic.data()+9, "_b32_e64", 8) != 0)
    4985             :                   break;
    4986           0 :                 Mnemonic = "v_movrels_b32";    // "v_movrels_b32_e64"
    4987           0 :                 return;
    4988             :               }
    4989             :               break;
    4990             :             }
    4991             :             break;
    4992             :           case 'u':      // 2 strings to match.
    4993           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    4994             :               break;
    4995             :             switch (Mnemonic[6]) {
    4996             :             default: break;
    4997             :             case 'i':    // 1 string to match.
    4998           0 :               if (memcmp(Mnemonic.data()+7, "32_i24_e64", 10) != 0)
    4999             :                 break;
    5000           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_i32_i24_e64"
    5001           0 :                 Mnemonic = "v_mul_i32_i24";
    5002             :               return;
    5003             :             case 'u':    // 1 string to match.
    5004           0 :               if (memcmp(Mnemonic.data()+7, "32_u24_e64", 10) != 0)
    5005             :                 break;
    5006           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_u32_u24_e64"
    5007           0 :                 Mnemonic = "v_mul_u32_u24";
    5008             :               return;
    5009             :             }
    5010             :             break;
    5011             :           }
    5012             :           break;
    5013             :         case 's':        // 1 string to match.
    5014           0 :           if (memcmp(Mnemonic.data()+3, "ubbrev_u32_e64", 14) != 0)
    5015             :             break;
    5016           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_subbrev_u32_e64"
    5017           0 :             Mnemonic = "v_subbrev_u32";
    5018             :           return;
    5019             :         }
    5020             :         break;
    5021             :       case 18:   // 65 strings to match.
    5022         447 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    5023             :           break;
    5024             :         switch (Mnemonic[2]) {
    5025             :         default: break;
    5026           0 :         case 'a':        // 3 strings to match.
    5027             :           switch (Mnemonic[3]) {
    5028             :           default: break;
    5029             :           case 'd':      // 2 strings to match.
    5030           0 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    5031             :               break;
    5032             :             switch (Mnemonic[6]) {
    5033             :             default: break;
    5034             :             case 'i':    // 1 string to match.
    5035           0 :               if (memcmp(Mnemonic.data()+7, "32_gfx9_e64", 11) != 0)
    5036             :                 break;
    5037           0 :               Mnemonic = "v_add_i32_gfx9";     // "v_add_i32_gfx9_e64"
    5038           0 :               return;
    5039             :             case 'l':    // 1 string to match.
    5040           0 :               if (memcmp(Mnemonic.data()+7, "shl_u32_e64", 11) != 0)
    5041             :                 break;
    5042           0 :               Mnemonic = "v_add_lshl_u32";     // "v_add_lshl_u32_e64"
    5043           0 :               return;
    5044             :             }
    5045             :             break;
    5046             :           case 'l':      // 1 string to match.
    5047           0 :             if (memcmp(Mnemonic.data()+4, "ignbit_b32_e64", 14) != 0)
    5048             :               break;
    5049           0 :             Mnemonic = "v_alignbit_b32";       // "v_alignbit_b32_e64"
    5050           0 :             return;
    5051             :           }
    5052             :           break;
    5053             :         case 'b':        // 1 string to match.
    5054           0 :           if (memcmp(Mnemonic.data()+3, "cnt_u32_b32_e64", 15) != 0)
    5055             :             break;
    5056           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_bcnt_u32_b32_e64"
    5057           0 :             Mnemonic = "v_bcnt_u32_b32";
    5058             :           return;
    5059             :         case 'c':        // 47 strings to match.
    5060          24 :           if (memcmp(Mnemonic.data()+3, "mp", 2) != 0)
    5061             :             break;
    5062             :           switch (Mnemonic[5]) {
    5063             :           default: break;
    5064           0 :           case 's':      // 26 strings to match.
    5065             :             switch (Mnemonic[6]) {
    5066             :             default: break;
    5067           0 :             case '_':    // 14 strings to match.
    5068             :               switch (Mnemonic[7]) {
    5069             :               default: break;
    5070           0 :               case 'n':  // 12 strings to match.
    5071             :                 switch (Mnemonic[8]) {
    5072             :                 default: break;
    5073             :                 case 'e':        // 2 strings to match.
    5074           0 :                   if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
    5075             :                     break;
    5076             :                   switch (Mnemonic[12]) {
    5077             :                   default: break;
    5078             :                   case '3':      // 1 string to match.
    5079           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5080             :                       break;
    5081           0 :                     Mnemonic = "v_cmps_neq_f32";       // "v_cmps_neq_f32_e64"
    5082           0 :                     return;
    5083             :                   case '6':      // 1 string to match.
    5084           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5085             :                       break;
    5086           0 :                     Mnemonic = "v_cmps_neq_f64";       // "v_cmps_neq_f64_e64"
    5087           0 :                     return;
    5088             :                   }
    5089             :                   break;
    5090           0 :                 case 'g':        // 4 strings to match.
    5091             :                   switch (Mnemonic[9]) {
    5092             :                   default: break;
    5093             :                   case 'e':      // 2 strings to match.
    5094           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5095             :                       break;
    5096             :                     switch (Mnemonic[12]) {
    5097             :                     default: break;
    5098             :                     case '3':    // 1 string to match.
    5099           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5100             :                         break;
    5101           0 :                       Mnemonic = "v_cmps_nge_f32";     // "v_cmps_nge_f32_e64"
    5102           0 :                       return;
    5103             :                     case '6':    // 1 string to match.
    5104           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5105             :                         break;
    5106           0 :                       Mnemonic = "v_cmps_nge_f64";     // "v_cmps_nge_f64_e64"
    5107           0 :                       return;
    5108             :                     }
    5109             :                     break;
    5110             :                   case 't':      // 2 strings to match.
    5111           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5112             :                       break;
    5113             :                     switch (Mnemonic[12]) {
    5114             :                     default: break;
    5115             :                     case '3':    // 1 string to match.
    5116           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5117             :                         break;
    5118           0 :                       Mnemonic = "v_cmps_ngt_f32";     // "v_cmps_ngt_f32_e64"
    5119           0 :                       return;
    5120             :                     case '6':    // 1 string to match.
    5121           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5122             :                         break;
    5123           0 :                       Mnemonic = "v_cmps_ngt_f64";     // "v_cmps_ngt_f64_e64"
    5124           0 :                       return;
    5125             :                     }
    5126             :                     break;
    5127             :                   }
    5128             :                   break;
    5129           0 :                 case 'l':        // 6 strings to match.
    5130             :                   switch (Mnemonic[9]) {
    5131             :                   default: break;
    5132             :                   case 'e':      // 2 strings to match.
    5133           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5134             :                       break;
    5135             :                     switch (Mnemonic[12]) {
    5136             :                     default: break;
    5137             :                     case '3':    // 1 string to match.
    5138           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5139             :                         break;
    5140           0 :                       Mnemonic = "v_cmps_nle_f32";     // "v_cmps_nle_f32_e64"
    5141           0 :                       return;
    5142             :                     case '6':    // 1 string to match.
    5143           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5144             :                         break;
    5145           0 :                       Mnemonic = "v_cmps_nle_f64";     // "v_cmps_nle_f64_e64"
    5146           0 :                       return;
    5147             :                     }
    5148             :                     break;
    5149             :                   case 'g':      // 2 strings to match.
    5150           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5151             :                       break;
    5152             :                     switch (Mnemonic[12]) {
    5153             :                     default: break;
    5154             :                     case '3':    // 1 string to match.
    5155           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5156             :                         break;
    5157           0 :                       Mnemonic = "v_cmps_nlg_f32";     // "v_cmps_nlg_f32_e64"
    5158           0 :                       return;
    5159             :                     case '6':    // 1 string to match.
    5160           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5161             :                         break;
    5162           0 :                       Mnemonic = "v_cmps_nlg_f64";     // "v_cmps_nlg_f64_e64"
    5163           0 :                       return;
    5164             :                     }
    5165             :                     break;
    5166             :                   case 't':      // 2 strings to match.
    5167           0 :                     if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5168             :                       break;
    5169             :                     switch (Mnemonic[12]) {
    5170             :                     default: break;
    5171             :                     case '3':    // 1 string to match.
    5172           0 :                       if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5173             :                         break;
    5174           0 :                       Mnemonic = "v_cmps_nlt_f32";     // "v_cmps_nlt_f32_e64"
    5175           0 :                       return;
    5176             :                     case '6':    // 1 string to match.
    5177           0 :                       if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5178             :                         break;
    5179           0 :                       Mnemonic = "v_cmps_nlt_f64";     // "v_cmps_nlt_f64_e64"
    5180           0 :                       return;
    5181             :                     }
    5182             :                     break;
    5183             :                   }
    5184             :                   break;
    5185             :                 }
    5186             :                 break;
    5187             :               case 't':  // 2 strings to match.
    5188           0 :                 if (memcmp(Mnemonic.data()+8, "ru_f", 4) != 0)
    5189             :                   break;
    5190             :                 switch (Mnemonic[12]) {
    5191             :                 default: break;
    5192             :                 case '3':        // 1 string to match.
    5193           0 :                   if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5194             :                     break;
    5195           0 :                   Mnemonic = "v_cmps_tru_f32";         // "v_cmps_tru_f32_e64"
    5196           0 :                   return;
    5197             :                 case '6':        // 1 string to match.
    5198           0 :                   if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5199             :                     break;
    5200           0 :                   Mnemonic = "v_cmps_tru_f64";         // "v_cmps_tru_f64_e64"
    5201           0 :                   return;
    5202             :                 }
    5203             :                 break;
    5204             :               }
    5205             :               break;
    5206           0 :             case 'x':    // 12 strings to match.
    5207           0 :               if (Mnemonic[7] != '_')
    5208             :                 break;
    5209             :               switch (Mnemonic[8]) {
    5210             :               default: break;
    5211             :               case 'e':  // 2 strings to match.
    5212           0 :                 if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
    5213             :                   break;
    5214             :                 switch (Mnemonic[12]) {
    5215             :                 default: break;
    5216             :                 case '3':        // 1 string to match.
    5217           0 :                   if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5218             :                     break;
    5219           0 :                   Mnemonic = "v_cmpsx_eq_f32";         // "v_cmpsx_eq_f32_e64"
    5220           0 :                   return;
    5221             :                 case '6':        // 1 string to match.
    5222           0 :                   if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5223             :                     break;
    5224           0 :                   Mnemonic = "v_cmpsx_eq_f64";         // "v_cmpsx_eq_f64_e64"
    5225           0 :                   return;
    5226             :                 }
    5227             :                 break;
    5228           0 :               case 'g':  // 4 strings to match.
    5229             :                 switch (Mnemonic[9]) {
    5230             :                 default: break;
    5231             :                 case 'e':        // 2 strings to match.
    5232           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5233             :                     break;
    5234             :                   switch (Mnemonic[12]) {
    5235             :                   default: break;
    5236             :                   case '3':      // 1 string to match.
    5237           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5238             :                       break;
    5239           0 :                     Mnemonic = "v_cmpsx_ge_f32";       // "v_cmpsx_ge_f32_e64"
    5240           0 :                     return;
    5241             :                   case '6':      // 1 string to match.
    5242           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5243             :                       break;
    5244           0 :                     Mnemonic = "v_cmpsx_ge_f64";       // "v_cmpsx_ge_f64_e64"
    5245           0 :                     return;
    5246             :                   }
    5247             :                   break;
    5248             :                 case 't':        // 2 strings to match.
    5249           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5250             :                     break;
    5251             :                   switch (Mnemonic[12]) {
    5252             :                   default: break;
    5253             :                   case '3':      // 1 string to match.
    5254           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5255             :                       break;
    5256           0 :                     Mnemonic = "v_cmpsx_gt_f32";       // "v_cmpsx_gt_f32_e64"
    5257           0 :                     return;
    5258             :                   case '6':      // 1 string to match.
    5259           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5260             :                       break;
    5261           0 :                     Mnemonic = "v_cmpsx_gt_f64";       // "v_cmpsx_gt_f64_e64"
    5262           0 :                     return;
    5263             :                   }
    5264             :                   break;
    5265             :                 }
    5266             :                 break;
    5267           0 :               case 'l':  // 6 strings to match.
    5268             :                 switch (Mnemonic[9]) {
    5269             :                 default: break;
    5270             :                 case 'e':        // 2 strings to match.
    5271           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5272             :                     break;
    5273             :                   switch (Mnemonic[12]) {
    5274             :                   default: break;
    5275             :                   case '3':      // 1 string to match.
    5276           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5277             :                       break;
    5278           0 :                     Mnemonic = "v_cmpsx_le_f32";       // "v_cmpsx_le_f32_e64"
    5279           0 :                     return;
    5280             :                   case '6':      // 1 string to match.
    5281           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5282             :                       break;
    5283           0 :                     Mnemonic = "v_cmpsx_le_f64";       // "v_cmpsx_le_f64_e64"
    5284           0 :                     return;
    5285             :                   }
    5286             :                   break;
    5287             :                 case 'g':        // 2 strings to match.
    5288           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5289             :                     break;
    5290             :                   switch (Mnemonic[12]) {
    5291             :                   default: break;
    5292             :                   case '3':      // 1 string to match.
    5293           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5294             :                       break;
    5295           0 :                     Mnemonic = "v_cmpsx_lg_f32";       // "v_cmpsx_lg_f32_e64"
    5296           0 :                     return;
    5297             :                   case '6':      // 1 string to match.
    5298           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5299             :                       break;
    5300           0 :                     Mnemonic = "v_cmpsx_lg_f64";       // "v_cmpsx_lg_f64_e64"
    5301           0 :                     return;
    5302             :                   }
    5303             :                   break;
    5304             :                 case 't':        // 2 strings to match.
    5305           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5306             :                     break;
    5307             :                   switch (Mnemonic[12]) {
    5308             :                   default: break;
    5309             :                   case '3':      // 1 string to match.
    5310           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5311             :                       break;
    5312           0 :                     Mnemonic = "v_cmpsx_lt_f32";       // "v_cmpsx_lt_f32_e64"
    5313           0 :                     return;
    5314             :                   case '6':      // 1 string to match.
    5315           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5316             :                       break;
    5317           0 :                     Mnemonic = "v_cmpsx_lt_f64";       // "v_cmpsx_lt_f64_e64"
    5318           0 :                     return;
    5319             :                   }
    5320             :                   break;
    5321             :                 }
    5322             :                 break;
    5323             :               }
    5324             :               break;
    5325             :             }
    5326             :             break;
    5327           0 :           case 'x':      // 21 strings to match.
    5328           0 :             if (Mnemonic[6] != '_')
    5329             :               break;
    5330             :             switch (Mnemonic[7]) {
    5331             :             default: break;
    5332           0 :             case 'n':    // 18 strings to match.
    5333             :               switch (Mnemonic[8]) {
    5334             :               default: break;
    5335             :               case 'e':  // 3 strings to match.
    5336           0 :                 if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
    5337             :                   break;
    5338             :                 switch (Mnemonic[12]) {
    5339             :                 default: break;
    5340             :                 case '1':        // 1 string to match.
    5341           0 :                   if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5342             :                     break;
    5343           0 :                   Mnemonic = "v_cmpx_neq_f16";         // "v_cmpx_neq_f16_e64"
    5344           0 :                   return;
    5345             :                 case '3':        // 1 string to match.
    5346           0 :                   if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5347             :                     break;
    5348           0 :                   Mnemonic = "v_cmpx_neq_f32";         // "v_cmpx_neq_f32_e64"
    5349           0 :                   return;
    5350             :                 case '6':        // 1 string to match.
    5351           0 :                   if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5352             :                     break;
    5353           0 :                   Mnemonic = "v_cmpx_neq_f64";         // "v_cmpx_neq_f64_e64"
    5354           0 :                   return;
    5355             :                 }
    5356             :                 break;
    5357           0 :               case 'g':  // 6 strings to match.
    5358             :                 switch (Mnemonic[9]) {
    5359             :                 default: break;
    5360             :                 case 'e':        // 3 strings to match.
    5361           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5362             :                     break;
    5363             :                   switch (Mnemonic[12]) {
    5364             :                   default: break;
    5365             :                   case '1':      // 1 string to match.
    5366           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5367             :                       break;
    5368           0 :                     Mnemonic = "v_cmpx_nge_f16";       // "v_cmpx_nge_f16_e64"
    5369           0 :                     return;
    5370             :                   case '3':      // 1 string to match.
    5371           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5372             :                       break;
    5373           0 :                     Mnemonic = "v_cmpx_nge_f32";       // "v_cmpx_nge_f32_e64"
    5374           0 :                     return;
    5375             :                   case '6':      // 1 string to match.
    5376           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5377             :                       break;
    5378           0 :                     Mnemonic = "v_cmpx_nge_f64";       // "v_cmpx_nge_f64_e64"
    5379           0 :                     return;
    5380             :                   }
    5381             :                   break;
    5382             :                 case 't':        // 3 strings to match.
    5383           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5384             :                     break;
    5385             :                   switch (Mnemonic[12]) {
    5386             :                   default: break;
    5387             :                   case '1':      // 1 string to match.
    5388           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5389             :                       break;
    5390           0 :                     Mnemonic = "v_cmpx_ngt_f16";       // "v_cmpx_ngt_f16_e64"
    5391           0 :                     return;
    5392             :                   case '3':      // 1 string to match.
    5393           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5394             :                       break;
    5395           0 :                     Mnemonic = "v_cmpx_ngt_f32";       // "v_cmpx_ngt_f32_e64"
    5396           0 :                     return;
    5397             :                   case '6':      // 1 string to match.
    5398           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5399             :                       break;
    5400           0 :                     Mnemonic = "v_cmpx_ngt_f64";       // "v_cmpx_ngt_f64_e64"
    5401           0 :                     return;
    5402             :                   }
    5403             :                   break;
    5404             :                 }
    5405             :                 break;
    5406           0 :               case 'l':  // 9 strings to match.
    5407             :                 switch (Mnemonic[9]) {
    5408             :                 default: break;
    5409             :                 case 'e':        // 3 strings to match.
    5410           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5411             :                     break;
    5412             :                   switch (Mnemonic[12]) {
    5413             :                   default: break;
    5414             :                   case '1':      // 1 string to match.
    5415           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5416             :                       break;
    5417           0 :                     Mnemonic = "v_cmpx_nle_f16";       // "v_cmpx_nle_f16_e64"
    5418           0 :                     return;
    5419             :                   case '3':      // 1 string to match.
    5420           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5421             :                       break;
    5422           0 :                     Mnemonic = "v_cmpx_nle_f32";       // "v_cmpx_nle_f32_e64"
    5423           0 :                     return;
    5424             :                   case '6':      // 1 string to match.
    5425           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5426             :                       break;
    5427           0 :                     Mnemonic = "v_cmpx_nle_f64";       // "v_cmpx_nle_f64_e64"
    5428           0 :                     return;
    5429             :                   }
    5430             :                   break;
    5431             :                 case 'g':        // 3 strings to match.
    5432           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5433             :                     break;
    5434             :                   switch (Mnemonic[12]) {
    5435             :                   default: break;
    5436             :                   case '1':      // 1 string to match.
    5437           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5438             :                       break;
    5439           0 :                     Mnemonic = "v_cmpx_nlg_f16";       // "v_cmpx_nlg_f16_e64"
    5440           0 :                     return;
    5441             :                   case '3':      // 1 string to match.
    5442           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5443             :                       break;
    5444           0 :                     Mnemonic = "v_cmpx_nlg_f32";       // "v_cmpx_nlg_f32_e64"
    5445           0 :                     return;
    5446             :                   case '6':      // 1 string to match.
    5447           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5448             :                       break;
    5449           0 :                     Mnemonic = "v_cmpx_nlg_f64";       // "v_cmpx_nlg_f64_e64"
    5450           0 :                     return;
    5451             :                   }
    5452             :                   break;
    5453             :                 case 't':        // 3 strings to match.
    5454           0 :                   if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    5455             :                     break;
    5456             :                   switch (Mnemonic[12]) {
    5457             :                   default: break;
    5458             :                   case '1':      // 1 string to match.
    5459           0 :                     if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5460             :                       break;
    5461           0 :                     Mnemonic = "v_cmpx_nlt_f16";       // "v_cmpx_nlt_f16_e64"
    5462           0 :                     return;
    5463             :                   case '3':      // 1 string to match.
    5464           0 :                     if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5465             :                       break;
    5466           0 :                     Mnemonic = "v_cmpx_nlt_f32";       // "v_cmpx_nlt_f32_e64"
    5467           0 :                     return;
    5468             :                   case '6':      // 1 string to match.
    5469           0 :                     if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5470             :                       break;
    5471           0 :                     Mnemonic = "v_cmpx_nlt_f64";       // "v_cmpx_nlt_f64_e64"
    5472           0 :                     return;
    5473             :                   }
    5474             :                   break;
    5475             :                 }
    5476             :                 break;
    5477             :               }
    5478             :               break;
    5479             :             case 't':    // 3 strings to match.
    5480           0 :               if (memcmp(Mnemonic.data()+8, "ru_f", 4) != 0)
    5481             :                 break;
    5482             :               switch (Mnemonic[12]) {
    5483             :               default: break;
    5484             :               case '1':  // 1 string to match.
    5485           0 :                 if (memcmp(Mnemonic.data()+13, "6_e64", 5) != 0)
    5486             :                   break;
    5487           0 :                 Mnemonic = "v_cmpx_tru_f16";   // "v_cmpx_tru_f16_e64"
    5488           0 :                 return;
    5489             :               case '3':  // 1 string to match.
    5490           0 :                 if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5491             :                   break;
    5492           0 :                 Mnemonic = "v_cmpx_tru_f32";   // "v_cmpx_tru_f32_e64"
    5493           0 :                 return;
    5494             :               case '6':  // 1 string to match.
    5495           0 :                 if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5496             :                   break;
    5497           0 :                 Mnemonic = "v_cmpx_tru_f64";   // "v_cmpx_tru_f64_e64"
    5498           0 :                 return;
    5499             :               }
    5500             :               break;
    5501             :             }
    5502             :             break;
    5503             :           }
    5504             :           break;
    5505           0 :         case 'd':        // 5 strings to match.
    5506             :           switch (Mnemonic[3]) {
    5507             :           default: break;
    5508             :           case 'i':      // 2 strings to match.
    5509           0 :             if (memcmp(Mnemonic.data()+4, "v_fmas_f", 8) != 0)
    5510             :               break;
    5511             :             switch (Mnemonic[12]) {
    5512             :             default: break;
    5513             :             case '3':    // 1 string to match.
    5514           0 :               if (memcmp(Mnemonic.data()+13, "2_e64", 5) != 0)
    5515             :                 break;
    5516           0 :               Mnemonic = "v_div_fmas_f32";     // "v_div_fmas_f32_e64"
    5517           0 :               return;
    5518             :             case '6':    // 1 string to match.
    5519           0 :               if (memcmp(Mnemonic.data()+13, "4_e64", 5) != 0)
    5520             :                 break;
    5521           0 :               Mnemonic = "v_div_fmas_f64";     // "v_div_fmas_f64_e64"
    5522           0 :               return;
    5523             :             }
    5524             :             break;
    5525             :           case 'o':      // 3 strings to match.
    5526           0 :             if (memcmp(Mnemonic.data()+4, "t2_", 3) != 0)
    5527             :               break;
    5528             :             switch (Mnemonic[7]) {
    5529             :             default: break;
    5530             :             case 'f':    // 1 string to match.
    5531           0 :               if (memcmp(Mnemonic.data()+8, "32_f16_e64", 10) != 0)
    5532             :                 break;
    5533           0 :               Mnemonic = "v_dot2_f32_f16";     // "v_dot2_f32_f16_e64"
    5534           0 :               return;
    5535             :             case 'i':    // 1 string to match.
    5536           0 :               if (memcmp(Mnemonic.data()+8, "32_i16_e64", 10) != 0)
    5537             :                 break;
    5538           0 :               Mnemonic = "v_dot2_i32_i16";     // "v_dot2_i32_i16_e64"
    5539           0 :               return;
    5540             :             case 'u':    // 1 string to match.
    5541           0 :               if (memcmp(Mnemonic.data()+8, "32_u16_e64", 10) != 0)
    5542             :                 break;
    5543           0 :               Mnemonic = "v_dot2_u32_u16";     // "v_dot2_u32_u16_e64"
    5544           0 :               return;
    5545             :             }
    5546             :             break;
    5547             :           }
    5548             :           break;
    5549             :         case 'f':        // 1 string to match.
    5550           0 :           if (memcmp(Mnemonic.data()+3, "ma_f16_gfx9_e64", 15) != 0)
    5551             :             break;
    5552           0 :           Mnemonic = "v_fma_f16_gfx9";         // "v_fma_f16_gfx9_e64"
    5553           0 :           return;
    5554             :         case 'l':        // 1 string to match.
    5555           0 :           if (memcmp(Mnemonic.data()+3, "shl_add_u32_e64", 15) != 0)
    5556             :             break;
    5557           0 :           Mnemonic = "v_lshl_add_u32";         // "v_lshl_add_u32_e64"
    5558           0 :           return;
    5559         300 :         case 'm':        // 5 strings to match.
    5560             :           switch (Mnemonic[3]) {
    5561             :           default: break;
    5562             :           case 'a':      // 3 strings to match.
    5563           0 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    5564             :               break;
    5565             :             switch (Mnemonic[6]) {
    5566             :             default: break;
    5567             :             case 'f':    // 1 string to match.
    5568           0 :               if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
    5569             :                 break;
    5570           0 :               Mnemonic = "v_mad_f16_gfx9";     // "v_mad_f16_gfx9_e64"
    5571           0 :               return;
    5572             :             case 'i':    // 1 string to match.
    5573           0 :               if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
    5574             :                 break;
    5575           0 :               Mnemonic = "v_mad_i16_gfx9";     // "v_mad_i16_gfx9_e64"
    5576           0 :               return;
    5577             :             case 'u':    // 1 string to match.
    5578           0 :               if (memcmp(Mnemonic.data()+7, "16_gfx9_e64", 11) != 0)
    5579             :                 break;
    5580           0 :               Mnemonic = "v_mad_u16_gfx9";     // "v_mad_u16_gfx9_e64"
    5581           0 :               return;
    5582             :             }
    5583             :             break;
    5584             :           case 'o':      // 1 string to match.
    5585           0 :             if (memcmp(Mnemonic.data()+4, "vrelsd_b32_e64", 14) != 0)
    5586             :               break;
    5587           0 :             Mnemonic = "v_movrelsd_b32";       // "v_movrelsd_b32_e64"
    5588           0 :             return;
    5589             :           case 'q':      // 1 string to match.
    5590           0 :             if (memcmp(Mnemonic.data()+4, "sad_u32_u8_e64", 14) != 0)
    5591             :               break;
    5592           0 :             Mnemonic = "v_mqsad_u32_u8";       // "v_mqsad_u32_u8_e64"
    5593           0 :             return;
    5594             :           }
    5595             :           break;
    5596             :         case 'p':        // 1 string to match.
    5597           0 :           if (memcmp(Mnemonic.data()+3, "ack_b32_f16_e64", 15) != 0)
    5598             :             break;
    5599           0 :           Mnemonic = "v_pack_b32_f16";         // "v_pack_b32_f16_e64"
    5600           0 :           return;
    5601             :         case 's':        // 1 string to match.
    5602           0 :           if (memcmp(Mnemonic.data()+3, "ub_i32_gfx9_e64", 15) != 0)
    5603             :             break;
    5604           0 :           Mnemonic = "v_sub_i32_gfx9";         // "v_sub_i32_gfx9_e64"
    5605           0 :           return;
    5606             :         }
    5607             :         break;
    5608             :       case 19:   // 39 strings to match.
    5609         609 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    5610             :           break;
    5611             :         switch (Mnemonic[2]) {
    5612             :         default: break;
    5613             :         case 'a':        // 1 string to match.
    5614           0 :           if (memcmp(Mnemonic.data()+3, "lignbyte_b32_e64", 16) != 0)
    5615             :             break;
    5616           0 :           Mnemonic = "v_alignbyte_b32";        // "v_alignbyte_b32_e64"
    5617           0 :           return;
    5618         166 :         case 'c':        // 18 strings to match.
    5619             :           switch (Mnemonic[3]) {
    5620             :           default: break;
    5621           0 :           case 'm':      // 17 strings to match.
    5622           0 :             if (Mnemonic[4] != 'p')
    5623             :               break;
    5624             :             switch (Mnemonic[5]) {
    5625             :             default: break;
    5626             :             case '_':    // 3 strings to match.
    5627           0 :               if (memcmp(Mnemonic.data()+6, "class_f", 7) != 0)
    5628             :                 break;
    5629             :               switch (Mnemonic[13]) {
    5630             :               default: break;
    5631             :               case '1':  // 1 string to match.
    5632           0 :                 if (memcmp(Mnemonic.data()+14, "6_e64", 5) != 0)
    5633             :                   break;
    5634           0 :                 Mnemonic = "v_cmp_class_f16";  // "v_cmp_class_f16_e64"
    5635           0 :                 return;
    5636             :               case '3':  // 1 string to match.
    5637           0 :                 if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5638             :                   break;
    5639           0 :                 Mnemonic = "v_cmp_class_f32";  // "v_cmp_class_f32_e64"
    5640           0 :                 return;
    5641             :               case '6':  // 1 string to match.
    5642           0 :                 if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5643             :                   break;
    5644           0 :                 Mnemonic = "v_cmp_class_f64";  // "v_cmp_class_f64_e64"
    5645           0 :                 return;
    5646             :               }
    5647             :               break;
    5648             :             case 's':    // 14 strings to match.
    5649           0 :               if (memcmp(Mnemonic.data()+6, "x_", 2) != 0)
    5650             :                 break;
    5651             :               switch (Mnemonic[8]) {
    5652             :               default: break;
    5653           0 :               case 'n':  // 12 strings to match.
    5654             :                 switch (Mnemonic[9]) {
    5655             :                 default: break;
    5656             :                 case 'e':        // 2 strings to match.
    5657           0 :                   if (memcmp(Mnemonic.data()+10, "q_f", 3) != 0)
    5658             :                     break;
    5659             :                   switch (Mnemonic[13]) {
    5660             :                   default: break;
    5661             :                   case '3':      // 1 string to match.
    5662           0 :                     if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5663             :                       break;
    5664           0 :                     Mnemonic = "v_cmpsx_neq_f32";      // "v_cmpsx_neq_f32_e64"
    5665           0 :                     return;
    5666             :                   case '6':      // 1 string to match.
    5667           0 :                     if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5668             :                       break;
    5669           0 :                     Mnemonic = "v_cmpsx_neq_f64";      // "v_cmpsx_neq_f64_e64"
    5670           0 :                     return;
    5671             :                   }
    5672             :                   break;
    5673           0 :                 case 'g':        // 4 strings to match.
    5674             :                   switch (Mnemonic[10]) {
    5675             :                   default: break;
    5676             :                   case 'e':      // 2 strings to match.
    5677           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5678             :                       break;
    5679             :                     switch (Mnemonic[13]) {
    5680             :                     default: break;
    5681             :                     case '3':    // 1 string to match.
    5682           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5683             :                         break;
    5684           0 :                       Mnemonic = "v_cmpsx_nge_f32";    // "v_cmpsx_nge_f32_e64"
    5685           0 :                       return;
    5686             :                     case '6':    // 1 string to match.
    5687           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5688             :                         break;
    5689           0 :                       Mnemonic = "v_cmpsx_nge_f64";    // "v_cmpsx_nge_f64_e64"
    5690           0 :                       return;
    5691             :                     }
    5692             :                     break;
    5693             :                   case 't':      // 2 strings to match.
    5694           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5695             :                       break;
    5696             :                     switch (Mnemonic[13]) {
    5697             :                     default: break;
    5698             :                     case '3':    // 1 string to match.
    5699           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5700             :                         break;
    5701           0 :                       Mnemonic = "v_cmpsx_ngt_f32";    // "v_cmpsx_ngt_f32_e64"
    5702           0 :                       return;
    5703             :                     case '6':    // 1 string to match.
    5704           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5705             :                         break;
    5706           0 :                       Mnemonic = "v_cmpsx_ngt_f64";    // "v_cmpsx_ngt_f64_e64"
    5707           0 :                       return;
    5708             :                     }
    5709             :                     break;
    5710             :                   }
    5711             :                   break;
    5712           0 :                 case 'l':        // 6 strings to match.
    5713             :                   switch (Mnemonic[10]) {
    5714             :                   default: break;
    5715             :                   case 'e':      // 2 strings to match.
    5716           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5717             :                       break;
    5718             :                     switch (Mnemonic[13]) {
    5719             :                     default: break;
    5720             :                     case '3':    // 1 string to match.
    5721           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5722             :                         break;
    5723           0 :                       Mnemonic = "v_cmpsx_nle_f32";    // "v_cmpsx_nle_f32_e64"
    5724           0 :                       return;
    5725             :                     case '6':    // 1 string to match.
    5726           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5727             :                         break;
    5728           0 :                       Mnemonic = "v_cmpsx_nle_f64";    // "v_cmpsx_nle_f64_e64"
    5729           0 :                       return;
    5730             :                     }
    5731             :                     break;
    5732             :                   case 'g':      // 2 strings to match.
    5733           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5734             :                       break;
    5735             :                     switch (Mnemonic[13]) {
    5736             :                     default: break;
    5737             :                     case '3':    // 1 string to match.
    5738           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5739             :                         break;
    5740           0 :                       Mnemonic = "v_cmpsx_nlg_f32";    // "v_cmpsx_nlg_f32_e64"
    5741           0 :                       return;
    5742             :                     case '6':    // 1 string to match.
    5743           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5744             :                         break;
    5745           0 :                       Mnemonic = "v_cmpsx_nlg_f64";    // "v_cmpsx_nlg_f64_e64"
    5746           0 :                       return;
    5747             :                     }
    5748             :                     break;
    5749             :                   case 't':      // 2 strings to match.
    5750           0 :                     if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5751             :                       break;
    5752             :                     switch (Mnemonic[13]) {
    5753             :                     default: break;
    5754             :                     case '3':    // 1 string to match.
    5755           0 :                       if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5756             :                         break;
    5757           0 :                       Mnemonic = "v_cmpsx_nlt_f32";    // "v_cmpsx_nlt_f32_e64"
    5758           0 :                       return;
    5759             :                     case '6':    // 1 string to match.
    5760           0 :                       if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5761             :                         break;
    5762           0 :                       Mnemonic = "v_cmpsx_nlt_f64";    // "v_cmpsx_nlt_f64_e64"
    5763           0 :                       return;
    5764             :                     }
    5765             :                     break;
    5766             :                   }
    5767             :                   break;
    5768             :                 }
    5769             :                 break;
    5770             :               case 't':  // 2 strings to match.
    5771           0 :                 if (memcmp(Mnemonic.data()+9, "ru_f", 4) != 0)
    5772             :                   break;
    5773             :                 switch (Mnemonic[13]) {
    5774             :                 default: break;
    5775             :                 case '3':        // 1 string to match.
    5776           0 :                   if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5777             :                     break;
    5778           0 :                   Mnemonic = "v_cmpsx_tru_f32";        // "v_cmpsx_tru_f32_e64"
    5779           0 :                   return;
    5780             :                 case '6':        // 1 string to match.
    5781           0 :                   if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5782             :                     break;
    5783           0 :                   Mnemonic = "v_cmpsx_tru_f64";        // "v_cmpsx_tru_f64_e64"
    5784           0 :                   return;
    5785             :                 }
    5786             :                 break;
    5787             :               }
    5788             :               break;
    5789             :             }
    5790             :             break;
    5791             :           case 'v':      // 1 string to match.
    5792         166 :             if (memcmp(Mnemonic.data()+4, "t_pk_u8_f32_e64", 15) != 0)
    5793             :               break;
    5794           0 :             Mnemonic = "v_cvt_pk_u8_f32";      // "v_cvt_pk_u8_f32_e64"
    5795           0 :             return;
    5796             :           }
    5797             :           break;
    5798             :         case 'd':        // 5 strings to match.
    5799           0 :           if (memcmp(Mnemonic.data()+3, "iv_", 3) != 0)
    5800             :             break;
    5801             :           switch (Mnemonic[6]) {
    5802             :           default: break;
    5803             :           case 'f':      // 3 strings to match.
    5804           0 :             if (memcmp(Mnemonic.data()+7, "ixup_f", 6) != 0)
    5805             :               break;
    5806             :             switch (Mnemonic[13]) {
    5807             :             default: break;
    5808             :             case '1':    // 1 string to match.
    5809           0 :               if (memcmp(Mnemonic.data()+14, "6_e64", 5) != 0)
    5810             :                 break;
    5811           0 :               if ((Features & (Feature_Has16BitInsts|Feature_isVIOnly)) == (Feature_Has16BitInsts|Feature_isVIOnly))         // "v_div_fixup_f16_e64"
    5812           0 :                 Mnemonic = "v_div_fixup_f16";
    5813             :               return;
    5814             :             case '3':    // 1 string to match.
    5815           0 :               if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5816             :                 break;
    5817           0 :               Mnemonic = "v_div_fixup_f32";    // "v_div_fixup_f32_e64"
    5818           0 :               return;
    5819             :             case '6':    // 1 string to match.
    5820           0 :               if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5821             :                 break;
    5822           0 :               Mnemonic = "v_div_fixup_f64";    // "v_div_fixup_f64_e64"
    5823           0 :               return;
    5824             :             }
    5825             :             break;
    5826             :           case 's':      // 2 strings to match.
    5827           0 :             if (memcmp(Mnemonic.data()+7, "cale_f", 6) != 0)
    5828             :               break;
    5829             :             switch (Mnemonic[13]) {
    5830             :             default: break;
    5831             :             case '3':    // 1 string to match.
    5832           0 :               if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5833             :                 break;
    5834           0 :               Mnemonic = "v_div_scale_f32";    // "v_div_scale_f32_e64"
    5835           0 :               return;
    5836             :             case '6':    // 1 string to match.
    5837           0 :               if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5838             :                 break;
    5839           0 :               Mnemonic = "v_div_scale_f64";    // "v_div_scale_f64_e64"
    5840           0 :               return;
    5841             :             }
    5842             :             break;
    5843             :           }
    5844             :           break;
    5845             :         case 'f':        // 2 strings to match.
    5846         230 :           if (memcmp(Mnemonic.data()+3, "ma_mix", 6) != 0)
    5847             :             break;
    5848             :           switch (Mnemonic[9]) {
    5849             :           default: break;
    5850             :           case 'h':      // 1 string to match.
    5851           0 :             if (memcmp(Mnemonic.data()+10, "i_f16_e64", 9) != 0)
    5852             :               break;
    5853           0 :             Mnemonic = "v_fma_mixhi_f16";      // "v_fma_mixhi_f16_e64"
    5854           0 :             return;
    5855             :           case 'l':      // 1 string to match.
    5856           0 :             if (memcmp(Mnemonic.data()+10, "o_f16_e64", 9) != 0)
    5857             :               break;
    5858           0 :             Mnemonic = "v_fma_mixlo_f16";      // "v_fma_mixlo_f16_e64"
    5859           0 :             return;
    5860             :           }
    5861             :           break;
    5862             :         case 'i':        // 3 strings to match.
    5863           0 :           if (memcmp(Mnemonic.data()+3, "nterp_p", 7) != 0)
    5864             :             break;
    5865             :           switch (Mnemonic[10]) {
    5866             :           default: break;
    5867             :           case '1':      // 1 string to match.
    5868           0 :             if (memcmp(Mnemonic.data()+11, "_f32_e64", 8) != 0)
    5869             :               break;
    5870           0 :             Mnemonic = "v_interp_p1_f32";      // "v_interp_p1_f32_e64"
    5871           0 :             return;
    5872             :           case '2':      // 2 strings to match.
    5873           0 :             if (memcmp(Mnemonic.data()+11, "_f", 2) != 0)
    5874             :               break;
    5875             :             switch (Mnemonic[13]) {
    5876             :             default: break;
    5877             :             case '1':    // 1 string to match.
    5878           0 :               if (memcmp(Mnemonic.data()+14, "6_e64", 5) != 0)
    5879             :                 break;
    5880           0 :               Mnemonic = "v_interp_p2_f16";    // "v_interp_p2_f16_e64"
    5881           0 :               return;
    5882             :             case '3':    // 1 string to match.
    5883           0 :               if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5884             :                 break;
    5885           0 :               Mnemonic = "v_interp_p2_f32";    // "v_interp_p2_f32_e64"
    5886           0 :               return;
    5887             :             }
    5888             :             break;
    5889             :           }
    5890             :           break;
    5891             :         case 'l':        // 1 string to match.
    5892           0 :           if (memcmp(Mnemonic.data()+3, "og_clamp_f32_e64", 16) != 0)
    5893             :             break;
    5894           0 :           Mnemonic = "v_log_clamp_f32";        // "v_log_clamp_f32_e64"
    5895           0 :           return;
    5896             :         case 'm':        // 2 strings to match.
    5897           0 :           if (memcmp(Mnemonic.data()+3, "ad_mix", 6) != 0)
    5898             :             break;
    5899             :           switch (Mnemonic[9]) {
    5900             :           default: break;
    5901             :           case 'h':      // 1 string to match.
    5902           0 :             if (memcmp(Mnemonic.data()+10, "i_f16_e64", 9) != 0)
    5903             :               break;
    5904           0 :             Mnemonic = "v_mad_mixhi_f16";      // "v_mad_mixhi_f16_e64"
    5905           0 :             return;
    5906             :           case 'l':      // 1 string to match.
    5907           0 :             if (memcmp(Mnemonic.data()+10, "o_f16_e64", 9) != 0)
    5908             :               break;
    5909           0 :             Mnemonic = "v_mad_mixlo_f16";      // "v_mad_mixlo_f16_e64"
    5910           0 :             return;
    5911             :           }
    5912             :           break;
    5913             :         case 'p':        // 1 string to match.
    5914           0 :           if (memcmp(Mnemonic.data()+3, "k_mul_lo_u16_e64", 16) != 0)
    5915             :             break;
    5916           0 :           Mnemonic = "v_pk_mul_lo_u16";        // "v_pk_mul_lo_u16_e64"
    5917           0 :           return;
    5918           0 :         case 'r':        // 5 strings to match.
    5919             :           switch (Mnemonic[3]) {
    5920             :           default: break;
    5921             :           case 'c':      // 3 strings to match.
    5922           0 :             if (memcmp(Mnemonic.data()+4, "p_", 2) != 0)
    5923             :               break;
    5924             :             switch (Mnemonic[6]) {
    5925             :             default: break;
    5926             :             case 'c':    // 2 strings to match.
    5927           0 :               if (memcmp(Mnemonic.data()+7, "lamp_f", 6) != 0)
    5928             :                 break;
    5929             :               switch (Mnemonic[13]) {
    5930             :               default: break;
    5931             :               case '3':  // 1 string to match.
    5932           0 :                 if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5933             :                   break;
    5934           0 :                 Mnemonic = "v_rcp_clamp_f32";  // "v_rcp_clamp_f32_e64"
    5935           0 :                 return;
    5936             :               case '6':  // 1 string to match.
    5937           0 :                 if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5938             :                   break;
    5939           0 :                 Mnemonic = "v_rcp_clamp_f64";  // "v_rcp_clamp_f64_e64"
    5940           0 :                 return;
    5941             :               }
    5942             :               break;
    5943             :             case 'i':    // 1 string to match.
    5944           0 :               if (memcmp(Mnemonic.data()+7, "flag_f32_e64", 12) != 0)
    5945             :                 break;
    5946           0 :               Mnemonic = "v_rcp_iflag_f32";    // "v_rcp_iflag_f32_e64"
    5947           0 :               return;
    5948             :             }
    5949             :             break;
    5950             :           case 's':      // 2 strings to match.
    5951           0 :             if (memcmp(Mnemonic.data()+4, "q_clamp_f", 9) != 0)
    5952             :               break;
    5953             :             switch (Mnemonic[13]) {
    5954             :             default: break;
    5955             :             case '3':    // 1 string to match.
    5956           0 :               if (memcmp(Mnemonic.data()+14, "2_e64", 5) != 0)
    5957             :                 break;
    5958           0 :               Mnemonic = "v_rsq_clamp_f32";    // "v_rsq_clamp_f32_e64"
    5959           0 :               return;
    5960             :             case '6':    // 1 string to match.
    5961           0 :               if (memcmp(Mnemonic.data()+14, "4_e64", 5) != 0)
    5962             :                 break;
    5963           0 :               Mnemonic = "v_rsq_clamp_f64";    // "v_rsq_clamp_f64_e64"
    5964           0 :               return;
    5965             :             }
    5966             :             break;
    5967             :           }
    5968             :           break;
    5969             :         case 's':        // 1 string to match.
    5970           0 :           if (memcmp(Mnemonic.data()+3, "at_pk_u8_i16_e64", 16) != 0)
    5971             :             break;
    5972           0 :           Mnemonic = "v_sat_pk_u8_i16";        // "v_sat_pk_u8_i16_e64"
    5973           0 :           return;
    5974             :         }
    5975             :         break;
    5976             :       case 20:   // 30 strings to match.
    5977         791 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    5978             :           break;
    5979             :         switch (Mnemonic[2]) {
    5980             :         default: break;
    5981         673 :         case 'c':        // 10 strings to match.
    5982             :           switch (Mnemonic[3]) {
    5983             :           default: break;
    5984             :           case 'm':      // 3 strings to match.
    5985           0 :             if (memcmp(Mnemonic.data()+4, "px_class_f", 10) != 0)
    5986             :               break;
    5987             :             switch (Mnemonic[14]) {
    5988             :             default: break;
    5989             :             case '1':    // 1 string to match.
    5990           0 :               if (memcmp(Mnemonic.data()+15, "6_e64", 5) != 0)
    5991             :                 break;
    5992           0 :               Mnemonic = "v_cmpx_class_f16";   // "v_cmpx_class_f16_e64"
    5993           0 :               return;
    5994             :             case '3':    // 1 string to match.
    5995           0 :               if (memcmp(Mnemonic.data()+15, "2_e64", 5) != 0)
    5996             :                 break;
    5997           0 :               Mnemonic = "v_cmpx_class_f32";   // "v_cmpx_class_f32_e64"
    5998           0 :               return;
    5999             :             case '6':    // 1 string to match.
    6000           0 :               if (memcmp(Mnemonic.data()+15, "4_e64", 5) != 0)
    6001             :                 break;
    6002           0 :               Mnemonic = "v_cmpx_class_f64";   // "v_cmpx_class_f64_e64"
    6003           0 :               return;
    6004             :             }
    6005             :             break;
    6006             :           case 'v':      // 7 strings to match.
    6007         673 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
    6008             :               break;
    6009             :             switch (Mnemonic[6]) {
    6010             :             default: break;
    6011             :             case 'f':    // 4 strings to match.
    6012           0 :               if (memcmp(Mnemonic.data()+7, "32_ubyte", 8) != 0)
    6013             :                 break;
    6014             :               switch (Mnemonic[15]) {
    6015             :               default: break;
    6016             :               case '0':  // 1 string to match.
    6017           0 :                 if (memcmp(Mnemonic.data()+16, "_e64", 4) != 0)
    6018             :                   break;
    6019           0 :                 Mnemonic = "v_cvt_f32_ubyte0";         // "v_cvt_f32_ubyte0_e64"
    6020           0 :                 return;
    6021             :               case '1':  // 1 string to match.
    6022           0 :                 if (memcmp(Mnemonic.data()+16, "_e64", 4) != 0)
    6023             :                   break;
    6024           0 :                 Mnemonic = "v_cvt_f32_ubyte1";         // "v_cvt_f32_ubyte1_e64"
    6025           0 :                 return;
    6026             :               case '2':  // 1 string to match.
    6027           0 :                 if (memcmp(Mnemonic.data()+16, "_e64", 4) != 0)
    6028             :                   break;
    6029           0 :                 Mnemonic = "v_cvt_f32_ubyte2";         // "v_cvt_f32_ubyte2_e64"
    6030           0 :                 return;
    6031             :               case '3':  // 1 string to match.
    6032           0 :                 if (memcmp(Mnemonic.data()+16, "_e64", 4) != 0)
    6033             :                   break;
    6034           0 :                 Mnemonic = "v_cvt_f32_ubyte3";         // "v_cvt_f32_ubyte3_e64"
    6035           0 :                 return;
    6036             :               }
    6037             :               break;
    6038             :             case 'o':    // 1 string to match.
    6039           0 :               if (memcmp(Mnemonic.data()+7, "ff_f32_i4_e64", 13) != 0)
    6040             :                 break;
    6041           0 :               Mnemonic = "v_cvt_off_f32_i4";   // "v_cvt_off_f32_i4_e64"
    6042           0 :               return;
    6043             :             case 'p':    // 2 strings to match.
    6044         673 :               if (memcmp(Mnemonic.data()+7, "k_", 2) != 0)
    6045             :                 break;
    6046             :               switch (Mnemonic[9]) {
    6047             :               default: break;
    6048             :               case 'i':  // 1 string to match.
    6049           0 :                 if (memcmp(Mnemonic.data()+10, "16_i32_e64", 10) != 0)
    6050             :                   break;
    6051           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_cvt_pk_i16_i32_e64"
    6052           0 :                   Mnemonic = "v_cvt_pk_i16_i32";
    6053             :                 return;
    6054             :               case 'u':  // 1 string to match.
    6055           0 :                 if (memcmp(Mnemonic.data()+10, "16_u32_e64", 10) != 0)
    6056             :                   break;
    6057           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_cvt_pk_u16_u32_e64"
    6058           0 :                   Mnemonic = "v_cvt_pk_u16_u32";
    6059             :                 return;
    6060             :               }
    6061             :               break;
    6062             :             }
    6063             :             break;
    6064             :           }
    6065             :           break;
    6066             :         case 'e':        // 1 string to match.
    6067           0 :           if (memcmp(Mnemonic.data()+3, "xp_legacy_f32_e64", 17) != 0)
    6068             :             break;
    6069           0 :           Mnemonic = "v_exp_legacy_f32";       // "v_exp_legacy_f32_e64"
    6070           0 :           return;
    6071             :         case 'f':        // 3 strings to match.
    6072           0 :           if (memcmp(Mnemonic.data()+3, "rexp_mant_f", 11) != 0)
    6073             :             break;
    6074             :           switch (Mnemonic[14]) {
    6075             :           default: break;
    6076             :           case '1':      // 1 string to match.
    6077           0 :             if (memcmp(Mnemonic.data()+15, "6_e64", 5) != 0)
    6078             :               break;
    6079           0 :             Mnemonic = "v_frexp_mant_f16";     // "v_frexp_mant_f16_e64"
    6080           0 :             return;
    6081             :           case '3':      // 1 string to match.
    6082           0 :             if (memcmp(Mnemonic.data()+15, "2_e64", 5) != 0)
    6083             :               break;
    6084           0 :             Mnemonic = "v_frexp_mant_f32";     // "v_frexp_mant_f32_e64"
    6085           0 :             return;
    6086             :           case '6':      // 1 string to match.
    6087           0 :             if (memcmp(Mnemonic.data()+15, "4_e64", 5) != 0)
    6088             :               break;
    6089           0 :             Mnemonic = "v_frexp_mant_f64";     // "v_frexp_mant_f64_e64"
    6090           0 :             return;
    6091             :           }
    6092             :           break;
    6093             :         case 'i':        // 1 string to match.
    6094           0 :           if (memcmp(Mnemonic.data()+3, "nterp_mov_f32_e64", 17) != 0)
    6095             :             break;
    6096           0 :           Mnemonic = "v_interp_mov_f32";       // "v_interp_mov_f32_e64"
    6097           0 :           return;
    6098             :         case 'l':        // 1 string to match.
    6099           0 :           if (memcmp(Mnemonic.data()+3, "og_legacy_f32_e64", 17) != 0)
    6100             :             break;
    6101           0 :           Mnemonic = "v_log_legacy_f32";       // "v_log_legacy_f32_e64"
    6102           0 :           return;
    6103           0 :         case 'm':        // 7 strings to match.
    6104             :           switch (Mnemonic[3]) {
    6105             :           default: break;
    6106           0 :           case 'a':      // 3 strings to match.
    6107             :             switch (Mnemonic[4]) {
    6108             :             default: break;
    6109             :             case 'c':    // 1 string to match.
    6110           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_e64", 15) != 0)
    6111             :                 break;
    6112           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_mac_legacy_f32_e64"
    6113           0 :                 Mnemonic = "v_mac_legacy_f32";
    6114             :               return;
    6115             :             case 'd':    // 1 string to match.
    6116           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_e64", 15) != 0)
    6117             :                 break;
    6118           0 :               Mnemonic = "v_mad_legacy_f32";   // "v_mad_legacy_f32_e64"
    6119           0 :               return;
    6120             :             case 'x':    // 1 string to match.
    6121           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_e64", 15) != 0)
    6122             :                 break;
    6123           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_max_legacy_f32_e64"
    6124           0 :                 Mnemonic = "v_max_legacy_f32";
    6125             :               return;
    6126             :             }
    6127             :             break;
    6128             :           case 'i':      // 1 string to match.
    6129           0 :             if (memcmp(Mnemonic.data()+4, "n_legacy_f32_e64", 16) != 0)
    6130             :               break;
    6131           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_min_legacy_f32_e64"
    6132           0 :               Mnemonic = "v_min_legacy_f32";
    6133             :             return;
    6134             :           case 'u':      // 3 strings to match.
    6135           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    6136             :               break;
    6137             :             switch (Mnemonic[6]) {
    6138             :             default: break;
    6139             :             case 'h':    // 2 strings to match.
    6140           0 :               if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
    6141             :                 break;
    6142             :               switch (Mnemonic[9]) {
    6143             :               default: break;
    6144             :               case 'i':  // 1 string to match.
    6145           0 :                 if (memcmp(Mnemonic.data()+10, "32_i24_e64", 10) != 0)
    6146             :                   break;
    6147           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_i32_i24_e64"
    6148           0 :                   Mnemonic = "v_mul_hi_i32_i24";
    6149             :                 return;
    6150             :               case 'u':  // 1 string to match.
    6151           0 :                 if (memcmp(Mnemonic.data()+10, "32_u24_e64", 10) != 0)
    6152             :                   break;
    6153           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_u32_u24_e64"
    6154           0 :                   Mnemonic = "v_mul_hi_u32_u24";
    6155             :                 return;
    6156             :               }
    6157             :               break;
    6158             :             case 'l':    // 1 string to match.
    6159           0 :               if (memcmp(Mnemonic.data()+7, "egacy_f32_e64", 13) != 0)
    6160             :                 break;
    6161           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_legacy_f32_e64"
    6162           0 :                 Mnemonic = "v_mul_legacy_f32";
    6163             :               return;
    6164             :             }
    6165             :             break;
    6166             :           }
    6167             :           break;
    6168             :         case 'p':        // 3 strings to match.
    6169           0 :           if (memcmp(Mnemonic.data()+3, "k_", 2) != 0)
    6170             :             break;
    6171             :           switch (Mnemonic[5]) {
    6172             :           default: break;
    6173             :           case 'a':      // 1 string to match.
    6174           0 :             if (memcmp(Mnemonic.data()+6, "shrrev_i16_e64", 14) != 0)
    6175             :               break;
    6176           0 :             Mnemonic = "v_pk_ashrrev_i16";     // "v_pk_ashrrev_i16_e64"
    6177           0 :             return;
    6178             :           case 'l':      // 2 strings to match.
    6179           0 :             if (memcmp(Mnemonic.data()+6, "sh", 2) != 0)
    6180             :               break;
    6181             :             switch (Mnemonic[8]) {
    6182             :             default: break;
    6183             :             case 'l':    // 1 string to match.
    6184           0 :               if (memcmp(Mnemonic.data()+9, "rev_b16_e64", 11) != 0)
    6185             :                 break;
    6186           0 :               Mnemonic = "v_pk_lshlrev_b16";   // "v_pk_lshlrev_b16_e64"
    6187           0 :               return;
    6188             :             case 'r':    // 1 string to match.
    6189           0 :               if (memcmp(Mnemonic.data()+9, "rev_b16_e64", 11) != 0)
    6190             :                 break;
    6191           0 :               Mnemonic = "v_pk_lshrrev_b16";   // "v_pk_lshrrev_b16_e64"
    6192           0 :               return;
    6193             :             }
    6194             :             break;
    6195             :           }
    6196             :           break;
    6197             :         case 'q':        // 1 string to match.
    6198           0 :           if (memcmp(Mnemonic.data()+3, "sad_pk_u16_u8_e64", 17) != 0)
    6199             :             break;
    6200           0 :           Mnemonic = "v_qsad_pk_u16_u8";       // "v_qsad_pk_u16_u8_e64"
    6201           0 :           return;
    6202           0 :         case 'r':        // 2 strings to match.
    6203             :           switch (Mnemonic[3]) {
    6204             :           default: break;
    6205             :           case 'c':      // 1 string to match.
    6206           0 :             if (memcmp(Mnemonic.data()+4, "p_legacy_f32_e64", 16) != 0)
    6207             :               break;
    6208           0 :             Mnemonic = "v_rcp_legacy_f32";     // "v_rcp_legacy_f32_e64"
    6209           0 :             return;
    6210             :           case 's':      // 1 string to match.
    6211           0 :             if (memcmp(Mnemonic.data()+4, "q_legacy_f32_e64", 16) != 0)
    6212             :               break;
    6213           0 :             Mnemonic = "v_rsq_legacy_f32";     // "v_rsq_legacy_f32_e64"
    6214           0 :             return;
    6215             :           }
    6216             :           break;
    6217             :         case 't':        // 1 string to match.
    6218           0 :           if (memcmp(Mnemonic.data()+3, "rig_preop_f64_e64", 17) != 0)
    6219             :             break;
    6220           0 :           Mnemonic = "v_trig_preop_f64";       // "v_trig_preop_f64_e64"
    6221           0 :           return;
    6222             :         }
    6223             :         break;
    6224             :       case 21:   // 5 strings to match.
    6225          37 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6226             :           break;
    6227             :         switch (Mnemonic[2]) {
    6228             :         default: break;
    6229             :         case 'c':        // 2 strings to match.
    6230           0 :           if (memcmp(Mnemonic.data()+3, "vt_", 3) != 0)
    6231             :             break;
    6232             :           switch (Mnemonic[6]) {
    6233             :           default: break;
    6234             :           case 'f':      // 1 string to match.
    6235           0 :             if (memcmp(Mnemonic.data()+7, "lr_i32_f32_e64", 14) != 0)
    6236             :               break;
    6237           0 :             Mnemonic = "v_cvt_flr_i32_f32";    // "v_cvt_flr_i32_f32_e64"
    6238           0 :             return;
    6239             :           case 'r':      // 1 string to match.
    6240           0 :             if (memcmp(Mnemonic.data()+7, "pi_i32_f32_e64", 14) != 0)
    6241             :               break;
    6242           0 :             Mnemonic = "v_cvt_rpi_i32_f32";    // "v_cvt_rpi_i32_f32_e64"
    6243           0 :             return;
    6244             :           }
    6245             :           break;
    6246             :         case 'i':        // 2 strings to match.
    6247           0 :           if (memcmp(Mnemonic.data()+3, "nterp_p1l", 9) != 0)
    6248             :             break;
    6249             :           switch (Mnemonic[12]) {
    6250             :           default: break;
    6251             :           case 'l':      // 1 string to match.
    6252           0 :             if (memcmp(Mnemonic.data()+13, "_f16_e64", 8) != 0)
    6253             :               break;
    6254           0 :             Mnemonic = "v_interp_p1ll_f16";    // "v_interp_p1ll_f16_e64"
    6255           0 :             return;
    6256             :           case 'v':      // 1 string to match.
    6257           0 :             if (memcmp(Mnemonic.data()+13, "_f16_e64", 8) != 0)
    6258             :               break;
    6259           0 :             Mnemonic = "v_interp_p1lv_f16";    // "v_interp_p1lv_f16_e64"
    6260           0 :             return;
    6261             :           }
    6262             :           break;
    6263             :         case 'm':        // 1 string to match.
    6264           0 :           if (memcmp(Mnemonic.data()+3, "qsad_pk_u16_u8_e64", 18) != 0)
    6265             :             break;
    6266           0 :           Mnemonic = "v_mqsad_pk_u16_u8";      // "v_mqsad_pk_u16_u8_e64"
    6267           0 :           return;
    6268             :         }
    6269             :         break;
    6270             :       case 22:   // 4 strings to match.
    6271         270 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6272             :           break;
    6273             :         switch (Mnemonic[2]) {
    6274             :         default: break;
    6275             :         case 'c':        // 2 strings to match.
    6276           0 :           if (memcmp(Mnemonic.data()+3, "vt_norm_", 8) != 0)
    6277             :             break;
    6278             :           switch (Mnemonic[11]) {
    6279             :           default: break;
    6280             :           case 'i':      // 1 string to match.
    6281           0 :             if (memcmp(Mnemonic.data()+12, "16_f16_e64", 10) != 0)
    6282             :               break;
    6283           0 :             Mnemonic = "v_cvt_norm_i16_f16";   // "v_cvt_norm_i16_f16_e64"
    6284           0 :             return;
    6285             :           case 'u':      // 1 string to match.
    6286           0 :             if (memcmp(Mnemonic.data()+12, "16_f16_e64", 10) != 0)
    6287             :               break;
    6288           0 :             Mnemonic = "v_cvt_norm_u16_f16";   // "v_cvt_norm_u16_f16_e64"
    6289           0 :             return;
    6290             :           }
    6291             :           break;
    6292             :         case 'm':        // 2 strings to match.
    6293           0 :           if (memcmp(Mnemonic.data()+3, "bcnt_", 5) != 0)
    6294             :             break;
    6295             :           switch (Mnemonic[8]) {
    6296             :           default: break;
    6297             :           case 'h':      // 1 string to match.
    6298           0 :             if (memcmp(Mnemonic.data()+9, "i_u32_b32_e64", 13) != 0)
    6299             :               break;
    6300           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_mbcnt_hi_u32_b32_e64"
    6301           0 :               Mnemonic = "v_mbcnt_hi_u32_b32";
    6302             :             return;
    6303             :           case 'l':      // 1 string to match.
    6304           0 :             if (memcmp(Mnemonic.data()+9, "o_u32_b32_e64", 13) != 0)
    6305             :               break;
    6306           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_mbcnt_lo_u32_b32_e64"
    6307           0 :               Mnemonic = "v_mbcnt_lo_u32_b32";
    6308             :             return;
    6309             :           }
    6310             :           break;
    6311             :         }
    6312             :         break;
    6313             :       case 23:   // 4 strings to match.
    6314          80 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6315             :           break;
    6316             :         switch (Mnemonic[2]) {
    6317             :         default: break;
    6318             :         case 'c':        // 1 string to match.
    6319           0 :           if (memcmp(Mnemonic.data()+3, "vt_pkrtz_f16_f32_e64", 20) != 0)
    6320             :             break;
    6321           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_cvt_pkrtz_f16_f32_e64"
    6322           0 :             Mnemonic = "v_cvt_pkrtz_f16_f32";
    6323             :           return;
    6324             :         case 'f':        // 3 strings to match.
    6325           0 :           if (memcmp(Mnemonic.data()+3, "rexp_exp_i", 10) != 0)
    6326             :             break;
    6327             :           switch (Mnemonic[13]) {
    6328             :           default: break;
    6329             :           case '1':      // 1 string to match.
    6330           0 :             if (memcmp(Mnemonic.data()+14, "6_f16_e64", 9) != 0)
    6331             :               break;
    6332           0 :             Mnemonic = "v_frexp_exp_i16_f16";  // "v_frexp_exp_i16_f16_e64"
    6333           0 :             return;
    6334             :           case '3':      // 2 strings to match.
    6335           0 :             if (memcmp(Mnemonic.data()+14, "2_f", 3) != 0)
    6336             :               break;
    6337             :             switch (Mnemonic[17]) {
    6338             :             default: break;
    6339             :             case '3':    // 1 string to match.
    6340           0 :               if (memcmp(Mnemonic.data()+18, "2_e64", 5) != 0)
    6341             :                 break;
    6342           0 :               Mnemonic = "v_frexp_exp_i32_f32";        // "v_frexp_exp_i32_f32_e64"
    6343           0 :               return;
    6344             :             case '6':    // 1 string to match.
    6345           0 :               if (memcmp(Mnemonic.data()+18, "4_e64", 5) != 0)
    6346             :                 break;
    6347           0 :               Mnemonic = "v_frexp_exp_i32_f64";        // "v_frexp_exp_i32_f64_e64"
    6348           0 :               return;
    6349             :             }
    6350             :             break;
    6351             :           }
    6352             :           break;
    6353             :         }
    6354             :         break;
    6355             :       case 24:   // 7 strings to match.
    6356          15 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6357             :           break;
    6358             :         switch (Mnemonic[2]) {
    6359             :         default: break;
    6360             :         case 'c':        // 5 strings to match.
    6361           0 :           if (memcmp(Mnemonic.data()+3, "vt_pk", 5) != 0)
    6362             :             break;
    6363             :           switch (Mnemonic[8]) {
    6364             :           default: break;
    6365             :           case 'a':      // 1 string to match.
    6366           0 :             if (memcmp(Mnemonic.data()+9, "ccum_u8_f32_e64", 15) != 0)
    6367             :               break;
    6368           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cvt_pkaccum_u8_f32_e64"
    6369           0 :               Mnemonic = "v_cvt_pkaccum_u8_f32";
    6370             :             return;
    6371             :           case 'n':      // 4 strings to match.
    6372           0 :             if (memcmp(Mnemonic.data()+9, "orm_", 4) != 0)
    6373             :               break;
    6374             :             switch (Mnemonic[13]) {
    6375             :             default: break;
    6376             :             case 'i':    // 2 strings to match.
    6377           0 :               if (memcmp(Mnemonic.data()+14, "16_f", 4) != 0)
    6378             :                 break;
    6379             :               switch (Mnemonic[18]) {
    6380             :               default: break;
    6381             :               case '1':  // 1 string to match.
    6382           0 :                 if (memcmp(Mnemonic.data()+19, "6_e64", 5) != 0)
    6383             :                   break;
    6384           0 :                 Mnemonic = "v_cvt_pknorm_i16_f16";     // "v_cvt_pknorm_i16_f16_e64"
    6385           0 :                 return;
    6386             :               case '3':  // 1 string to match.
    6387           0 :                 if (memcmp(Mnemonic.data()+19, "2_e64", 5) != 0)
    6388             :                   break;
    6389           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_cvt_pknorm_i16_f32_e64"
    6390           0 :                   Mnemonic = "v_cvt_pknorm_i16_f32";
    6391             :                 return;
    6392             :               }
    6393             :               break;
    6394             :             case 'u':    // 2 strings to match.
    6395           0 :               if (memcmp(Mnemonic.data()+14, "16_f", 4) != 0)
    6396             :                 break;
    6397             :               switch (Mnemonic[18]) {
    6398             :               default: break;
    6399             :               case '1':  // 1 string to match.
    6400           0 :                 if (memcmp(Mnemonic.data()+19, "6_e64", 5) != 0)
    6401             :                   break;
    6402           0 :                 Mnemonic = "v_cvt_pknorm_u16_f16";     // "v_cvt_pknorm_u16_f16_e64"
    6403           0 :                 return;
    6404             :               case '3':  // 1 string to match.
    6405           0 :                 if (memcmp(Mnemonic.data()+19, "2_e64", 5) != 0)
    6406             :                   break;
    6407           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_cvt_pknorm_u16_f32_e64"
    6408           0 :                   Mnemonic = "v_cvt_pknorm_u16_f32";
    6409             :                 return;
    6410             :               }
    6411             :               break;
    6412             :             }
    6413             :             break;
    6414             :           }
    6415             :           break;
    6416             :         case 'd':        // 1 string to match.
    6417           0 :           if (memcmp(Mnemonic.data()+3, "iv_fixup_f16_gfx9_e64", 21) != 0)
    6418             :             break;
    6419           0 :           if ((Features & (Feature_Has16BitInsts|Feature_isGFX9)) == (Feature_Has16BitInsts|Feature_isGFX9))         // "v_div_fixup_f16_gfx9_e64"
    6420           0 :             Mnemonic = "v_div_fixup_f16_gfx9";
    6421             :           return;
    6422             :         case 'i':        // 1 string to match.
    6423           0 :           if (memcmp(Mnemonic.data()+3, "nterp_p2_f16_gfx9_e64", 21) != 0)
    6424             :             break;
    6425           0 :           Mnemonic = "v_interp_p2_f16_gfx9";   // "v_interp_p2_f16_gfx9_e64"
    6426           0 :           return;
    6427             :         }
    6428             :         break;
    6429             :       case 30:   // 1 string to match.
    6430           0 :         if (memcmp(Mnemonic.data()+0, "v_screen_partition_4se_b32_e64", 30) != 0)
    6431             :           break;
    6432           0 :         Mnemonic = "v_screen_partition_4se_b32";       // "v_screen_partition_4se_b32_e64"
    6433           0 :         return;
    6434             :       }
    6435             :     break;
    6436             :     case 2:
    6437             :       switch (Mnemonic.size()) {
    6438             :       default: break;
    6439             :       case 10:   // 1 string to match.
    6440         938 :         if (memcmp(Mnemonic.data()+0, "v_nop_sdwa", 10) != 0)
    6441             :           break;
    6442           0 :         Mnemonic = "v_nop";    // "v_nop_sdwa"
    6443           0 :         return;
    6444             :       case 13:   // 1 string to match.
    6445        7388 :         if (memcmp(Mnemonic.data()+0, "v_or_b32_sdwa", 13) != 0)
    6446             :           break;
    6447           0 :         if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_or_b32_sdwa"
    6448           0 :           Mnemonic = "v_or_b32";
    6449             :         return;
    6450             :       case 14:   // 42 strings to match.
    6451        1578 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6452             :           break;
    6453             :         switch (Mnemonic[2]) {
    6454             :         default: break;
    6455           3 :         case 'a':        // 6 strings to match.
    6456             :           switch (Mnemonic[3]) {
    6457             :           default: break;
    6458             :           case 'd':      // 5 strings to match.
    6459           3 :             if (memcmp(Mnemonic.data()+4, "d_", 2) != 0)
    6460             :               break;
    6461             :             switch (Mnemonic[6]) {
    6462             :             default: break;
    6463           0 :             case 'f':    // 2 strings to match.
    6464             :               switch (Mnemonic[7]) {
    6465             :               default: break;
    6466             :               case '1':  // 1 string to match.
    6467           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6468             :                   break;
    6469           0 :                 Mnemonic = "v_add_f16";        // "v_add_f16_sdwa"
    6470           0 :                 return;
    6471             :               case '3':  // 1 string to match.
    6472           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6473             :                   break;
    6474           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_f32_sdwa"
    6475           0 :                   Mnemonic = "v_add_f32";
    6476             :                 return;
    6477             :               }
    6478             :               break;
    6479             :             case 'i':    // 1 string to match.
    6480           0 :               if (memcmp(Mnemonic.data()+7, "32_sdwa", 7) != 0)
    6481             :                 break;
    6482           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_add_i32_sdwa"
    6483           0 :                 Mnemonic = "v_add_i32";
    6484             :               return;
    6485           0 :             case 'u':    // 2 strings to match.
    6486             :               switch (Mnemonic[7]) {
    6487             :               default: break;
    6488             :               case '1':  // 1 string to match.
    6489           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6490             :                   break;
    6491           0 :                 Mnemonic = "v_add_u16";        // "v_add_u16_sdwa"
    6492           0 :                 return;
    6493             :               case '3':  // 1 string to match.
    6494           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6495             :                   break;
    6496           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_add_u32_sdwa"
    6497           0 :                   Mnemonic = "v_add_u32";
    6498             :                 return;
    6499             :               }
    6500             :               break;
    6501             :             }
    6502             :             break;
    6503             :           case 'n':      // 1 string to match.
    6504           0 :             if (memcmp(Mnemonic.data()+4, "d_b32_sdwa", 10) != 0)
    6505             :               break;
    6506           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_and_b32_sdwa"
    6507           0 :               Mnemonic = "v_and_b32";
    6508             :             return;
    6509             :           }
    6510             :           break;
    6511             :         case 'c':        // 2 strings to match.
    6512        1393 :           if (memcmp(Mnemonic.data()+3, "os_f", 4) != 0)
    6513             :             break;
    6514             :           switch (Mnemonic[7]) {
    6515             :           default: break;
    6516             :           case '1':      // 1 string to match.
    6517           0 :             if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6518             :               break;
    6519           0 :             Mnemonic = "v_cos_f16";    // "v_cos_f16_sdwa"
    6520           0 :             return;
    6521             :           case '3':      // 1 string to match.
    6522           0 :             if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6523             :               break;
    6524           0 :             Mnemonic = "v_cos_f32";    // "v_cos_f32_sdwa"
    6525           0 :             return;
    6526             :           }
    6527             :           break;
    6528             :         case 'e':        // 2 strings to match.
    6529           0 :           if (memcmp(Mnemonic.data()+3, "xp_f", 4) != 0)
    6530             :             break;
    6531             :           switch (Mnemonic[7]) {
    6532             :           default: break;
    6533             :           case '1':      // 1 string to match.
    6534           0 :             if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6535             :               break;
    6536           0 :             Mnemonic = "v_exp_f16";    // "v_exp_f16_sdwa"
    6537           0 :             return;
    6538             :           case '3':      // 1 string to match.
    6539           0 :             if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6540             :               break;
    6541           0 :             Mnemonic = "v_exp_f32";    // "v_exp_f32_sdwa"
    6542           0 :             return;
    6543             :           }
    6544             :           break;
    6545             :         case 'l':        // 2 strings to match.
    6546           3 :           if (memcmp(Mnemonic.data()+3, "og_f", 4) != 0)
    6547             :             break;
    6548             :           switch (Mnemonic[7]) {
    6549             :           default: break;
    6550             :           case '1':      // 1 string to match.
    6551           0 :             if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6552             :               break;
    6553           0 :             Mnemonic = "v_log_f16";    // "v_log_f16_sdwa"
    6554           0 :             return;
    6555             :           case '3':      // 1 string to match.
    6556           0 :             if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6557             :               break;
    6558           0 :             Mnemonic = "v_log_f32";    // "v_log_f32_sdwa"
    6559           0 :             return;
    6560             :           }
    6561             :           break;
    6562           6 :         case 'm':        // 17 strings to match.
    6563             :           switch (Mnemonic[3]) {
    6564             :           default: break;
    6565           0 :           case 'a':      // 8 strings to match.
    6566             :             switch (Mnemonic[4]) {
    6567             :             default: break;
    6568             :             case 'c':    // 2 strings to match.
    6569           0 :               if (memcmp(Mnemonic.data()+5, "_f", 2) != 0)
    6570             :                 break;
    6571             :               switch (Mnemonic[7]) {
    6572             :               default: break;
    6573             :               case '1':  // 1 string to match.
    6574           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6575             :                   break;
    6576           0 :                 Mnemonic = "v_mac_f16";        // "v_mac_f16_sdwa"
    6577           0 :                 return;
    6578             :               case '3':  // 1 string to match.
    6579           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6580             :                   break;
    6581           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mac_f32_sdwa"
    6582           0 :                   Mnemonic = "v_mac_f32";
    6583             :                 return;
    6584             :               }
    6585             :               break;
    6586           0 :             case 'x':    // 6 strings to match.
    6587           0 :               if (Mnemonic[5] != '_')
    6588             :                 break;
    6589             :               switch (Mnemonic[6]) {
    6590             :               default: break;
    6591           0 :               case 'f':  // 2 strings to match.
    6592             :                 switch (Mnemonic[7]) {
    6593             :                 default: break;
    6594             :                 case '1':        // 1 string to match.
    6595           0 :                   if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6596             :                     break;
    6597           0 :                   Mnemonic = "v_max_f16";      // "v_max_f16_sdwa"
    6598           0 :                   return;
    6599             :                 case '3':        // 1 string to match.
    6600           0 :                   if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6601             :                     break;
    6602           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_f32_sdwa"
    6603           0 :                     Mnemonic = "v_max_f32";
    6604             :                   return;
    6605             :                 }
    6606             :                 break;
    6607           0 :               case 'i':  // 2 strings to match.
    6608             :                 switch (Mnemonic[7]) {
    6609             :                 default: break;
    6610             :                 case '1':        // 1 string to match.
    6611           0 :                   if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6612             :                     break;
    6613           0 :                   Mnemonic = "v_max_i16";      // "v_max_i16_sdwa"
    6614           0 :                   return;
    6615             :                 case '3':        // 1 string to match.
    6616           0 :                   if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6617             :                     break;
    6618           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_i32_sdwa"
    6619           0 :                     Mnemonic = "v_max_i32";
    6620             :                   return;
    6621             :                 }
    6622             :                 break;
    6623           0 :               case 'u':  // 2 strings to match.
    6624             :                 switch (Mnemonic[7]) {
    6625             :                 default: break;
    6626             :                 case '1':        // 1 string to match.
    6627           0 :                   if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6628             :                     break;
    6629           0 :                   Mnemonic = "v_max_u16";      // "v_max_u16_sdwa"
    6630           0 :                   return;
    6631             :                 case '3':        // 1 string to match.
    6632           0 :                   if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6633             :                     break;
    6634           0 :                   if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_max_u32_sdwa"
    6635           0 :                     Mnemonic = "v_max_u32";
    6636             :                   return;
    6637             :                 }
    6638             :                 break;
    6639             :               }
    6640             :               break;
    6641             :             }
    6642             :             break;
    6643             :           case 'i':      // 6 strings to match.
    6644           0 :             if (memcmp(Mnemonic.data()+4, "n_", 2) != 0)
    6645             :               break;
    6646             :             switch (Mnemonic[6]) {
    6647             :             default: break;
    6648           0 :             case 'f':    // 2 strings to match.
    6649             :               switch (Mnemonic[7]) {
    6650             :               default: break;
    6651             :               case '1':  // 1 string to match.
    6652           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6653             :                   break;
    6654           0 :                 Mnemonic = "v_min_f16";        // "v_min_f16_sdwa"
    6655           0 :                 return;
    6656             :               case '3':  // 1 string to match.
    6657           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6658             :                   break;
    6659           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_f32_sdwa"
    6660           0 :                   Mnemonic = "v_min_f32";
    6661             :                 return;
    6662             :               }
    6663             :               break;
    6664           0 :             case 'i':    // 2 strings to match.
    6665             :               switch (Mnemonic[7]) {
    6666             :               default: break;
    6667             :               case '1':  // 1 string to match.
    6668           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6669             :                   break;
    6670           0 :                 Mnemonic = "v_min_i16";        // "v_min_i16_sdwa"
    6671           0 :                 return;
    6672             :               case '3':  // 1 string to match.
    6673           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6674             :                   break;
    6675           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_i32_sdwa"
    6676           0 :                   Mnemonic = "v_min_i32";
    6677             :                 return;
    6678             :               }
    6679             :               break;
    6680           0 :             case 'u':    // 2 strings to match.
    6681             :               switch (Mnemonic[7]) {
    6682             :               default: break;
    6683             :               case '1':  // 1 string to match.
    6684           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6685             :                   break;
    6686           0 :                 Mnemonic = "v_min_u16";        // "v_min_u16_sdwa"
    6687           0 :                 return;
    6688             :               case '3':  // 1 string to match.
    6689           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6690             :                   break;
    6691           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_min_u32_sdwa"
    6692           0 :                   Mnemonic = "v_min_u32";
    6693             :                 return;
    6694             :               }
    6695             :               break;
    6696             :             }
    6697             :             break;
    6698             :           case 'o':      // 1 string to match.
    6699           0 :             if (memcmp(Mnemonic.data()+4, "v_b32_sdwa", 10) != 0)
    6700             :               break;
    6701           0 :             Mnemonic = "v_mov_b32";    // "v_mov_b32_sdwa"
    6702           0 :             return;
    6703             :           case 'u':      // 2 strings to match.
    6704           0 :             if (memcmp(Mnemonic.data()+4, "l_f", 3) != 0)
    6705             :               break;
    6706             :             switch (Mnemonic[7]) {
    6707             :             default: break;
    6708             :             case '1':    // 1 string to match.
    6709           0 :               if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6710             :                 break;
    6711           0 :               Mnemonic = "v_mul_f16";  // "v_mul_f16_sdwa"
    6712           0 :               return;
    6713             :             case '3':    // 1 string to match.
    6714           0 :               if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6715             :                 break;
    6716           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_f32_sdwa"
    6717           0 :                 Mnemonic = "v_mul_f32";
    6718             :               return;
    6719             :             }
    6720             :             break;
    6721             :           }
    6722             :           break;
    6723             :         case 'n':        // 1 string to match.
    6724           0 :           if (memcmp(Mnemonic.data()+3, "ot_b32_sdwa", 11) != 0)
    6725             :             break;
    6726           0 :           Mnemonic = "v_not_b32";      // "v_not_b32_sdwa"
    6727           0 :           return;
    6728           0 :         case 'r':        // 4 strings to match.
    6729             :           switch (Mnemonic[3]) {
    6730             :           default: break;
    6731             :           case 'c':      // 2 strings to match.
    6732           0 :             if (memcmp(Mnemonic.data()+4, "p_f", 3) != 0)
    6733             :               break;
    6734             :             switch (Mnemonic[7]) {
    6735             :             default: break;
    6736             :             case '1':    // 1 string to match.
    6737           0 :               if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6738             :                 break;
    6739           0 :               Mnemonic = "v_rcp_f16";  // "v_rcp_f16_sdwa"
    6740           0 :               return;
    6741             :             case '3':    // 1 string to match.
    6742           0 :               if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6743             :                 break;
    6744           0 :               Mnemonic = "v_rcp_f32";  // "v_rcp_f32_sdwa"
    6745           0 :               return;
    6746             :             }
    6747             :             break;
    6748             :           case 's':      // 2 strings to match.
    6749           0 :             if (memcmp(Mnemonic.data()+4, "q_f", 3) != 0)
    6750             :               break;
    6751             :             switch (Mnemonic[7]) {
    6752             :             default: break;
    6753             :             case '1':    // 1 string to match.
    6754           0 :               if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6755             :                 break;
    6756           0 :               Mnemonic = "v_rsq_f16";  // "v_rsq_f16_sdwa"
    6757           0 :               return;
    6758             :             case '3':    // 1 string to match.
    6759           0 :               if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6760             :                 break;
    6761           0 :               Mnemonic = "v_rsq_f32";  // "v_rsq_f32_sdwa"
    6762           0 :               return;
    6763             :             }
    6764             :             break;
    6765             :           }
    6766             :           break;
    6767           0 :         case 's':        // 7 strings to match.
    6768             :           switch (Mnemonic[3]) {
    6769             :           default: break;
    6770             :           case 'i':      // 2 strings to match.
    6771           0 :             if (memcmp(Mnemonic.data()+4, "n_f", 3) != 0)
    6772             :               break;
    6773             :             switch (Mnemonic[7]) {
    6774             :             default: break;
    6775             :             case '1':    // 1 string to match.
    6776           0 :               if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6777             :                 break;
    6778           0 :               Mnemonic = "v_sin_f16";  // "v_sin_f16_sdwa"
    6779           0 :               return;
    6780             :             case '3':    // 1 string to match.
    6781           0 :               if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6782             :                 break;
    6783           0 :               Mnemonic = "v_sin_f32";  // "v_sin_f32_sdwa"
    6784           0 :               return;
    6785             :             }
    6786             :             break;
    6787             :           case 'u':      // 5 strings to match.
    6788           0 :             if (memcmp(Mnemonic.data()+4, "b_", 2) != 0)
    6789             :               break;
    6790             :             switch (Mnemonic[6]) {
    6791             :             default: break;
    6792           0 :             case 'f':    // 2 strings to match.
    6793             :               switch (Mnemonic[7]) {
    6794             :               default: break;
    6795             :               case '1':  // 1 string to match.
    6796           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6797             :                   break;
    6798           0 :                 Mnemonic = "v_sub_f16";        // "v_sub_f16_sdwa"
    6799           0 :                 return;
    6800             :               case '3':  // 1 string to match.
    6801           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6802             :                   break;
    6803           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_f32_sdwa"
    6804           0 :                   Mnemonic = "v_sub_f32";
    6805             :                 return;
    6806             :               }
    6807             :               break;
    6808             :             case 'i':    // 1 string to match.
    6809           0 :               if (memcmp(Mnemonic.data()+7, "32_sdwa", 7) != 0)
    6810             :                 break;
    6811           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_sub_i32_sdwa"
    6812           0 :                 Mnemonic = "v_sub_i32";
    6813             :               return;
    6814           0 :             case 'u':    // 2 strings to match.
    6815             :               switch (Mnemonic[7]) {
    6816             :               default: break;
    6817             :               case '1':  // 1 string to match.
    6818           0 :                 if (memcmp(Mnemonic.data()+8, "6_sdwa", 6) != 0)
    6819             :                   break;
    6820           0 :                 Mnemonic = "v_sub_u16";        // "v_sub_u16_sdwa"
    6821           0 :                 return;
    6822             :               case '3':  // 1 string to match.
    6823           0 :                 if (memcmp(Mnemonic.data()+8, "2_sdwa", 6) != 0)
    6824             :                   break;
    6825           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_sub_u32_sdwa"
    6826           0 :                   Mnemonic = "v_sub_u32";
    6827             :                 return;
    6828             :               }
    6829             :               break;
    6830             :             }
    6831             :             break;
    6832             :           }
    6833             :           break;
    6834             :         case 'x':        // 1 string to match.
    6835           0 :           if (memcmp(Mnemonic.data()+3, "or_b32_sdwa", 11) != 0)
    6836             :             break;
    6837           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_xor_b32_sdwa"
    6838           0 :             Mnemonic = "v_xor_b32";
    6839             :           return;
    6840             :         }
    6841             :         break;
    6842             :       case 15:   // 14 strings to match.
    6843         748 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6844             :           break;
    6845             :         switch (Mnemonic[2]) {
    6846             :         default: break;
    6847           0 :         case 'a':        // 2 strings to match.
    6848             :           switch (Mnemonic[3]) {
    6849             :           default: break;
    6850             :           case 'd':      // 1 string to match.
    6851           0 :             if (memcmp(Mnemonic.data()+4, "dc_u32_sdwa", 11) != 0)
    6852             :               break;
    6853           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_addc_u32_sdwa"
    6854           0 :               Mnemonic = "v_addc_u32";
    6855             :             return;
    6856             :           case 's':      // 1 string to match.
    6857           0 :             if (memcmp(Mnemonic.data()+4, "hr_i32_sdwa", 11) != 0)
    6858             :               break;
    6859           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_ashr_i32_sdwa"
    6860           0 :               Mnemonic = "v_ashr_i32";
    6861             :             return;
    6862             :           }
    6863             :           break;
    6864             :         case 'c':        // 2 strings to match.
    6865         198 :           if (memcmp(Mnemonic.data()+3, "eil_f", 5) != 0)
    6866             :             break;
    6867             :           switch (Mnemonic[8]) {
    6868             :           default: break;
    6869             :           case '1':      // 1 string to match.
    6870           0 :             if (memcmp(Mnemonic.data()+9, "6_sdwa", 6) != 0)
    6871             :               break;
    6872           0 :             Mnemonic = "v_ceil_f16";   // "v_ceil_f16_sdwa"
    6873           0 :             return;
    6874             :           case '3':      // 1 string to match.
    6875           0 :             if (memcmp(Mnemonic.data()+9, "2_sdwa", 6) != 0)
    6876             :               break;
    6877           0 :             Mnemonic = "v_ceil_f32";   // "v_ceil_f32_sdwa"
    6878           0 :             return;
    6879             :           }
    6880             :           break;
    6881           6 :         case 'f':        // 4 strings to match.
    6882             :           switch (Mnemonic[3]) {
    6883             :           default: break;
    6884           0 :           case 'f':      // 3 strings to match.
    6885           0 :             if (Mnemonic[4] != 'b')
    6886             :               break;
    6887             :             switch (Mnemonic[5]) {
    6888             :             default: break;
    6889           0 :             case 'h':    // 2 strings to match.
    6890           0 :               if (Mnemonic[6] != '_')
    6891             :                 break;
    6892             :               switch (Mnemonic[7]) {
    6893             :               default: break;
    6894             :               case 'i':  // 1 string to match.
    6895           0 :                 if (memcmp(Mnemonic.data()+8, "32_sdwa", 7) != 0)
    6896             :                   break;
    6897           0 :                 Mnemonic = "v_ffbh_i32";       // "v_ffbh_i32_sdwa"
    6898           0 :                 return;
    6899             :               case 'u':  // 1 string to match.
    6900           0 :                 if (memcmp(Mnemonic.data()+8, "32_sdwa", 7) != 0)
    6901             :                   break;
    6902           0 :                 Mnemonic = "v_ffbh_u32";       // "v_ffbh_u32_sdwa"
    6903           0 :                 return;
    6904             :               }
    6905             :               break;
    6906             :             case 'l':    // 1 string to match.
    6907           0 :               if (memcmp(Mnemonic.data()+6, "_b32_sdwa", 9) != 0)
    6908             :                 break;
    6909           0 :               Mnemonic = "v_ffbl_b32";         // "v_ffbl_b32_sdwa"
    6910           0 :               return;
    6911             :             }
    6912             :             break;
    6913             :           case 'm':      // 1 string to match.
    6914           6 :             if (memcmp(Mnemonic.data()+4, "ac_f32_sdwa", 11) != 0)
    6915             :               break;
    6916           0 :             Mnemonic = "v_fmac_f32";   // "v_fmac_f32_sdwa"
    6917           0 :             return;
    6918             :           }
    6919             :           break;
    6920             :         case 'l':        // 2 strings to match.
    6921           4 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    6922             :             break;
    6923             :           switch (Mnemonic[5]) {
    6924             :           default: break;
    6925             :           case 'l':      // 1 string to match.
    6926           0 :             if (memcmp(Mnemonic.data()+6, "_b32_sdwa", 9) != 0)
    6927             :               break;
    6928           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_lshl_b32_sdwa"
    6929           0 :               Mnemonic = "v_lshl_b32";
    6930             :             return;
    6931             :           case 'r':      // 1 string to match.
    6932           0 :             if (memcmp(Mnemonic.data()+6, "_b32_sdwa", 9) != 0)
    6933             :               break;
    6934           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_lshr_b32_sdwa"
    6935           0 :               Mnemonic = "v_lshr_b32";
    6936             :             return;
    6937             :           }
    6938             :           break;
    6939         105 :         case 's':        // 3 strings to match.
    6940             :           switch (Mnemonic[3]) {
    6941             :           default: break;
    6942             :           case 'q':      // 2 strings to match.
    6943           0 :             if (memcmp(Mnemonic.data()+4, "rt_f", 4) != 0)
    6944             :               break;
    6945             :             switch (Mnemonic[8]) {
    6946             :             default: break;
    6947             :             case '1':    // 1 string to match.
    6948           0 :               if (memcmp(Mnemonic.data()+9, "6_sdwa", 6) != 0)
    6949             :                 break;
    6950           0 :               Mnemonic = "v_sqrt_f16";         // "v_sqrt_f16_sdwa"
    6951           0 :               return;
    6952             :             case '3':    // 1 string to match.
    6953           0 :               if (memcmp(Mnemonic.data()+9, "2_sdwa", 6) != 0)
    6954             :                 break;
    6955           0 :               Mnemonic = "v_sqrt_f32";         // "v_sqrt_f32_sdwa"
    6956           0 :               return;
    6957             :             }
    6958             :             break;
    6959             :           case 'u':      // 1 string to match.
    6960          92 :             if (memcmp(Mnemonic.data()+4, "bb_u32_sdwa", 11) != 0)
    6961             :               break;
    6962           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subb_u32_sdwa"
    6963           0 :               Mnemonic = "v_subb_u32";
    6964             :             return;
    6965             :           }
    6966             :           break;
    6967             :         case 'x':        // 1 string to match.
    6968           0 :           if (memcmp(Mnemonic.data()+3, "nor_b32_sdwa", 12) != 0)
    6969             :             break;
    6970           0 :           Mnemonic = "v_xnor_b32";     // "v_xnor_b32_sdwa"
    6971           0 :           return;
    6972             :         }
    6973             :         break;
    6974             :       case 16:   // 24 strings to match.
    6975        1845 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    6976             :           break;
    6977             :         switch (Mnemonic[2]) {
    6978             :         default: break;
    6979             :         case 'b':        // 1 string to match.
    6980           0 :           if (memcmp(Mnemonic.data()+3, "frev_b32_sdwa", 13) != 0)
    6981             :             break;
    6982           0 :           Mnemonic = "v_bfrev_b32";    // "v_bfrev_b32_sdwa"
    6983           0 :           return;
    6984             :         case 'c':        // 14 strings to match.
    6985         747 :           if (memcmp(Mnemonic.data()+3, "mp_", 3) != 0)
    6986             :             break;
    6987             :           switch (Mnemonic[6]) {
    6988             :           default: break;
    6989           0 :           case 'f':      // 6 strings to match.
    6990           0 :             if (Mnemonic[7] != '_')
    6991             :               break;
    6992             :             switch (Mnemonic[8]) {
    6993             :             default: break;
    6994           0 :             case 'f':    // 2 strings to match.
    6995             :               switch (Mnemonic[9]) {
    6996             :               default: break;
    6997             :               case '1':  // 1 string to match.
    6998           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    6999             :                   break;
    7000           0 :                 Mnemonic = "v_cmp_f_f16";      // "v_cmp_f_f16_sdwa"
    7001           0 :                 return;
    7002             :               case '3':  // 1 string to match.
    7003           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7004             :                   break;
    7005           0 :                 Mnemonic = "v_cmp_f_f32";      // "v_cmp_f_f32_sdwa"
    7006           0 :                 return;
    7007             :               }
    7008             :               break;
    7009           0 :             case 'i':    // 2 strings to match.
    7010             :               switch (Mnemonic[9]) {
    7011             :               default: break;
    7012             :               case '1':  // 1 string to match.
    7013           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7014             :                   break;
    7015           0 :                 Mnemonic = "v_cmp_f_i16";      // "v_cmp_f_i16_sdwa"
    7016           0 :                 return;
    7017             :               case '3':  // 1 string to match.
    7018           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7019             :                   break;
    7020           0 :                 Mnemonic = "v_cmp_f_i32";      // "v_cmp_f_i32_sdwa"
    7021           0 :                 return;
    7022             :               }
    7023             :               break;
    7024           0 :             case 'u':    // 2 strings to match.
    7025             :               switch (Mnemonic[9]) {
    7026             :               default: break;
    7027             :               case '1':  // 1 string to match.
    7028           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7029             :                   break;
    7030           0 :                 Mnemonic = "v_cmp_f_u16";      // "v_cmp_f_u16_sdwa"
    7031           0 :                 return;
    7032             :               case '3':  // 1 string to match.
    7033           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7034             :                   break;
    7035           0 :                 Mnemonic = "v_cmp_f_u32";      // "v_cmp_f_u32_sdwa"
    7036           0 :                 return;
    7037             :               }
    7038             :               break;
    7039             :             }
    7040             :             break;
    7041             :           case 'o':      // 2 strings to match.
    7042           0 :             if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
    7043             :               break;
    7044             :             switch (Mnemonic[9]) {
    7045             :             default: break;
    7046             :             case '1':    // 1 string to match.
    7047           0 :               if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7048             :                 break;
    7049           0 :               Mnemonic = "v_cmp_o_f16";        // "v_cmp_o_f16_sdwa"
    7050           0 :               return;
    7051             :             case '3':    // 1 string to match.
    7052           0 :               if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7053             :                 break;
    7054           0 :               Mnemonic = "v_cmp_o_f32";        // "v_cmp_o_f32_sdwa"
    7055           0 :               return;
    7056             :             }
    7057             :             break;
    7058           0 :           case 't':      // 4 strings to match.
    7059           0 :             if (Mnemonic[7] != '_')
    7060             :               break;
    7061             :             switch (Mnemonic[8]) {
    7062             :             default: break;
    7063           0 :             case 'i':    // 2 strings to match.
    7064             :               switch (Mnemonic[9]) {
    7065             :               default: break;
    7066             :               case '1':  // 1 string to match.
    7067           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7068             :                   break;
    7069           0 :                 Mnemonic = "v_cmp_t_i16";      // "v_cmp_t_i16_sdwa"
    7070           0 :                 return;
    7071             :               case '3':  // 1 string to match.
    7072           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7073             :                   break;
    7074           0 :                 Mnemonic = "v_cmp_t_i32";      // "v_cmp_t_i32_sdwa"
    7075           0 :                 return;
    7076             :               }
    7077             :               break;
    7078           0 :             case 'u':    // 2 strings to match.
    7079             :               switch (Mnemonic[9]) {
    7080             :               default: break;
    7081             :               case '1':  // 1 string to match.
    7082           0 :                 if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7083             :                   break;
    7084           0 :                 Mnemonic = "v_cmp_t_u16";      // "v_cmp_t_u16_sdwa"
    7085           0 :                 return;
    7086             :               case '3':  // 1 string to match.
    7087           0 :                 if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7088             :                   break;
    7089           0 :                 Mnemonic = "v_cmp_t_u32";      // "v_cmp_t_u32_sdwa"
    7090           0 :                 return;
    7091             :               }
    7092             :               break;
    7093             :             }
    7094             :             break;
    7095             :           case 'u':      // 2 strings to match.
    7096           0 :             if (memcmp(Mnemonic.data()+7, "_f", 2) != 0)
    7097             :               break;
    7098             :             switch (Mnemonic[9]) {
    7099             :             default: break;
    7100             :             case '1':    // 1 string to match.
    7101           0 :               if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7102             :                 break;
    7103           0 :               Mnemonic = "v_cmp_u_f16";        // "v_cmp_u_f16_sdwa"
    7104           0 :               return;
    7105             :             case '3':    // 1 string to match.
    7106           0 :               if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7107             :                 break;
    7108           0 :               Mnemonic = "v_cmp_u_f32";        // "v_cmp_u_f32_sdwa"
    7109           0 :               return;
    7110             :             }
    7111             :             break;
    7112             :           }
    7113             :           break;
    7114         227 :         case 'f':        // 4 strings to match.
    7115             :           switch (Mnemonic[3]) {
    7116             :           default: break;
    7117             :           case 'l':      // 2 strings to match.
    7118           0 :             if (memcmp(Mnemonic.data()+4, "oor_f", 5) != 0)
    7119             :               break;
    7120             :             switch (Mnemonic[9]) {
    7121             :             default: break;
    7122             :             case '1':    // 1 string to match.
    7123           0 :               if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7124             :                 break;
    7125           0 :               Mnemonic = "v_floor_f16";        // "v_floor_f16_sdwa"
    7126           0 :               return;
    7127             :             case '3':    // 1 string to match.
    7128           0 :               if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7129             :                 break;
    7130           0 :               Mnemonic = "v_floor_f32";        // "v_floor_f32_sdwa"
    7131           0 :               return;
    7132             :             }
    7133             :             break;
    7134             :           case 'r':      // 2 strings to match.
    7135         221 :             if (memcmp(Mnemonic.data()+4, "act_f", 5) != 0)
    7136             :               break;
    7137             :             switch (Mnemonic[9]) {
    7138             :             default: break;
    7139             :             case '1':    // 1 string to match.
    7140           0 :               if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7141             :                 break;
    7142           0 :               Mnemonic = "v_fract_f16";        // "v_fract_f16_sdwa"
    7143           0 :               return;
    7144             :             case '3':    // 1 string to match.
    7145           0 :               if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7146             :                 break;
    7147           0 :               Mnemonic = "v_fract_f32";        // "v_fract_f32_sdwa"
    7148           0 :               return;
    7149             :             }
    7150             :             break;
    7151             :           }
    7152             :           break;
    7153             :         case 'l':        // 1 string to match.
    7154         114 :           if (memcmp(Mnemonic.data()+3, "dexp_f16_sdwa", 13) != 0)
    7155             :             break;
    7156           0 :           Mnemonic = "v_ldexp_f16";    // "v_ldexp_f16_sdwa"
    7157           0 :           return;
    7158             :         case 'r':        // 2 strings to match.
    7159           4 :           if (memcmp(Mnemonic.data()+3, "ndne_f", 6) != 0)
    7160             :             break;
    7161             :           switch (Mnemonic[9]) {
    7162             :           default: break;
    7163             :           case '1':      // 1 string to match.
    7164           0 :             if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7165             :               break;
    7166           0 :             Mnemonic = "v_rndne_f16";  // "v_rndne_f16_sdwa"
    7167           0 :             return;
    7168             :           case '3':      // 1 string to match.
    7169           0 :             if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7170             :               break;
    7171           0 :             Mnemonic = "v_rndne_f32";  // "v_rndne_f32_sdwa"
    7172           0 :             return;
    7173             :           }
    7174             :           break;
    7175             :         case 't':        // 2 strings to match.
    7176           0 :           if (memcmp(Mnemonic.data()+3, "runc_f", 6) != 0)
    7177             :             break;
    7178             :           switch (Mnemonic[9]) {
    7179             :           default: break;
    7180             :           case '1':      // 1 string to match.
    7181           0 :             if (memcmp(Mnemonic.data()+10, "6_sdwa", 6) != 0)
    7182             :               break;
    7183           0 :             Mnemonic = "v_trunc_f16";  // "v_trunc_f16_sdwa"
    7184           0 :             return;
    7185             :           case '3':      // 1 string to match.
    7186           0 :             if (memcmp(Mnemonic.data()+10, "2_sdwa", 6) != 0)
    7187             :               break;
    7188           0 :             Mnemonic = "v_trunc_f32";  // "v_trunc_f32_sdwa"
    7189           0 :             return;
    7190             :           }
    7191             :           break;
    7192             :         }
    7193             :         break;
    7194             :       case 17:   // 59 strings to match.
    7195         356 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    7196             :           break;
    7197             :         switch (Mnemonic[2]) {
    7198             :         default: break;
    7199             :         case 'c':        // 53 strings to match.
    7200         206 :           if (memcmp(Mnemonic.data()+3, "mp", 2) != 0)
    7201             :             break;
    7202             :           switch (Mnemonic[5]) {
    7203             :           default: break;
    7204           0 :           case '_':      // 36 strings to match.
    7205             :             switch (Mnemonic[6]) {
    7206             :             default: break;
    7207             :             case 'e':    // 6 strings to match.
    7208           0 :               if (memcmp(Mnemonic.data()+7, "q_", 2) != 0)
    7209             :                 break;
    7210             :               switch (Mnemonic[9]) {
    7211             :               default: break;
    7212           0 :               case 'f':  // 2 strings to match.
    7213             :                 switch (Mnemonic[10]) {
    7214             :                 default: break;
    7215             :                 case '1':        // 1 string to match.
    7216           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7217             :                     break;
    7218           0 :                   Mnemonic = "v_cmp_eq_f16";   // "v_cmp_eq_f16_sdwa"
    7219           0 :                   return;
    7220             :                 case '3':        // 1 string to match.
    7221           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7222             :                     break;
    7223           0 :                   Mnemonic = "v_cmp_eq_f32";   // "v_cmp_eq_f32_sdwa"
    7224           0 :                   return;
    7225             :                 }
    7226             :                 break;
    7227           0 :               case 'i':  // 2 strings to match.
    7228             :                 switch (Mnemonic[10]) {
    7229             :                 default: break;
    7230             :                 case '1':        // 1 string to match.
    7231           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7232             :                     break;
    7233           0 :                   Mnemonic = "v_cmp_eq_i16";   // "v_cmp_eq_i16_sdwa"
    7234           0 :                   return;
    7235             :                 case '3':        // 1 string to match.
    7236           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7237             :                     break;
    7238           0 :                   Mnemonic = "v_cmp_eq_i32";   // "v_cmp_eq_i32_sdwa"
    7239           0 :                   return;
    7240             :                 }
    7241             :                 break;
    7242           0 :               case 'u':  // 2 strings to match.
    7243             :                 switch (Mnemonic[10]) {
    7244             :                 default: break;
    7245             :                 case '1':        // 1 string to match.
    7246           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7247             :                     break;
    7248           0 :                   Mnemonic = "v_cmp_eq_u16";   // "v_cmp_eq_u16_sdwa"
    7249           0 :                   return;
    7250             :                 case '3':        // 1 string to match.
    7251           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7252             :                     break;
    7253           0 :                   Mnemonic = "v_cmp_eq_u32";   // "v_cmp_eq_u32_sdwa"
    7254           0 :                   return;
    7255             :                 }
    7256             :                 break;
    7257             :               }
    7258             :               break;
    7259           0 :             case 'g':    // 12 strings to match.
    7260             :               switch (Mnemonic[7]) {
    7261             :               default: break;
    7262           0 :               case 'e':  // 6 strings to match.
    7263           0 :                 if (Mnemonic[8] != '_')
    7264             :                   break;
    7265             :                 switch (Mnemonic[9]) {
    7266             :                 default: break;
    7267           0 :                 case 'f':        // 2 strings to match.
    7268             :                   switch (Mnemonic[10]) {
    7269             :                   default: break;
    7270             :                   case '1':      // 1 string to match.
    7271           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7272             :                       break;
    7273           0 :                     Mnemonic = "v_cmp_ge_f16";         // "v_cmp_ge_f16_sdwa"
    7274           0 :                     return;
    7275             :                   case '3':      // 1 string to match.
    7276           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7277             :                       break;
    7278           0 :                     Mnemonic = "v_cmp_ge_f32";         // "v_cmp_ge_f32_sdwa"
    7279           0 :                     return;
    7280             :                   }
    7281             :                   break;
    7282           0 :                 case 'i':        // 2 strings to match.
    7283             :                   switch (Mnemonic[10]) {
    7284             :                   default: break;
    7285             :                   case '1':      // 1 string to match.
    7286           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7287             :                       break;
    7288           0 :                     Mnemonic = "v_cmp_ge_i16";         // "v_cmp_ge_i16_sdwa"
    7289           0 :                     return;
    7290             :                   case '3':      // 1 string to match.
    7291           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7292             :                       break;
    7293           0 :                     Mnemonic = "v_cmp_ge_i32";         // "v_cmp_ge_i32_sdwa"
    7294           0 :                     return;
    7295             :                   }
    7296             :                   break;
    7297           0 :                 case 'u':        // 2 strings to match.
    7298             :                   switch (Mnemonic[10]) {
    7299             :                   default: break;
    7300             :                   case '1':      // 1 string to match.
    7301           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7302             :                       break;
    7303           0 :                     Mnemonic = "v_cmp_ge_u16";         // "v_cmp_ge_u16_sdwa"
    7304           0 :                     return;
    7305             :                   case '3':      // 1 string to match.
    7306           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7307             :                       break;
    7308           0 :                     Mnemonic = "v_cmp_ge_u32";         // "v_cmp_ge_u32_sdwa"
    7309           0 :                     return;
    7310             :                   }
    7311             :                   break;
    7312             :                 }
    7313             :                 break;
    7314           0 :               case 't':  // 6 strings to match.
    7315           0 :                 if (Mnemonic[8] != '_')
    7316             :                   break;
    7317             :                 switch (Mnemonic[9]) {
    7318             :                 default: break;
    7319           0 :                 case 'f':        // 2 strings to match.
    7320             :                   switch (Mnemonic[10]) {
    7321             :                   default: break;
    7322             :                   case '1':      // 1 string to match.
    7323           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7324             :                       break;
    7325           0 :                     Mnemonic = "v_cmp_gt_f16";         // "v_cmp_gt_f16_sdwa"
    7326           0 :                     return;
    7327             :                   case '3':      // 1 string to match.
    7328           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7329             :                       break;
    7330           0 :                     Mnemonic = "v_cmp_gt_f32";         // "v_cmp_gt_f32_sdwa"
    7331           0 :                     return;
    7332             :                   }
    7333             :                   break;
    7334           0 :                 case 'i':        // 2 strings to match.
    7335             :                   switch (Mnemonic[10]) {
    7336             :                   default: break;
    7337             :                   case '1':      // 1 string to match.
    7338           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7339             :                       break;
    7340           0 :                     Mnemonic = "v_cmp_gt_i16";         // "v_cmp_gt_i16_sdwa"
    7341           0 :                     return;
    7342             :                   case '3':      // 1 string to match.
    7343           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7344             :                       break;
    7345           0 :                     Mnemonic = "v_cmp_gt_i32";         // "v_cmp_gt_i32_sdwa"
    7346           0 :                     return;
    7347             :                   }
    7348             :                   break;
    7349           0 :                 case 'u':        // 2 strings to match.
    7350             :                   switch (Mnemonic[10]) {
    7351             :                   default: break;
    7352             :                   case '1':      // 1 string to match.
    7353           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7354             :                       break;
    7355           0 :                     Mnemonic = "v_cmp_gt_u16";         // "v_cmp_gt_u16_sdwa"
    7356           0 :                     return;
    7357             :                   case '3':      // 1 string to match.
    7358           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7359             :                       break;
    7360           0 :                     Mnemonic = "v_cmp_gt_u32";         // "v_cmp_gt_u32_sdwa"
    7361           0 :                     return;
    7362             :                   }
    7363             :                   break;
    7364             :                 }
    7365             :                 break;
    7366             :               }
    7367             :               break;
    7368           0 :             case 'l':    // 14 strings to match.
    7369             :               switch (Mnemonic[7]) {
    7370             :               default: break;
    7371           0 :               case 'e':  // 6 strings to match.
    7372           0 :                 if (Mnemonic[8] != '_')
    7373             :                   break;
    7374             :                 switch (Mnemonic[9]) {
    7375             :                 default: break;
    7376           0 :                 case 'f':        // 2 strings to match.
    7377             :                   switch (Mnemonic[10]) {
    7378             :                   default: break;
    7379             :                   case '1':      // 1 string to match.
    7380           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7381             :                       break;
    7382           0 :                     Mnemonic = "v_cmp_le_f16";         // "v_cmp_le_f16_sdwa"
    7383           0 :                     return;
    7384             :                   case '3':      // 1 string to match.
    7385           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7386             :                       break;
    7387           0 :                     Mnemonic = "v_cmp_le_f32";         // "v_cmp_le_f32_sdwa"
    7388           0 :                     return;
    7389             :                   }
    7390             :                   break;
    7391           0 :                 case 'i':        // 2 strings to match.
    7392             :                   switch (Mnemonic[10]) {
    7393             :                   default: break;
    7394             :                   case '1':      // 1 string to match.
    7395           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7396             :                       break;
    7397           0 :                     Mnemonic = "v_cmp_le_i16";         // "v_cmp_le_i16_sdwa"
    7398           0 :                     return;
    7399             :                   case '3':      // 1 string to match.
    7400           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7401             :                       break;
    7402           0 :                     Mnemonic = "v_cmp_le_i32";         // "v_cmp_le_i32_sdwa"
    7403           0 :                     return;
    7404             :                   }
    7405             :                   break;
    7406           0 :                 case 'u':        // 2 strings to match.
    7407             :                   switch (Mnemonic[10]) {
    7408             :                   default: break;
    7409             :                   case '1':      // 1 string to match.
    7410           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7411             :                       break;
    7412           0 :                     Mnemonic = "v_cmp_le_u16";         // "v_cmp_le_u16_sdwa"
    7413           0 :                     return;
    7414             :                   case '3':      // 1 string to match.
    7415           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7416             :                       break;
    7417           0 :                     Mnemonic = "v_cmp_le_u32";         // "v_cmp_le_u32_sdwa"
    7418           0 :                     return;
    7419             :                   }
    7420             :                   break;
    7421             :                 }
    7422             :                 break;
    7423             :               case 'g':  // 2 strings to match.
    7424           0 :                 if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    7425             :                   break;
    7426             :                 switch (Mnemonic[10]) {
    7427             :                 default: break;
    7428             :                 case '1':        // 1 string to match.
    7429           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7430             :                     break;
    7431           0 :                   Mnemonic = "v_cmp_lg_f16";   // "v_cmp_lg_f16_sdwa"
    7432           0 :                   return;
    7433             :                 case '3':        // 1 string to match.
    7434           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7435             :                     break;
    7436           0 :                   Mnemonic = "v_cmp_lg_f32";   // "v_cmp_lg_f32_sdwa"
    7437           0 :                   return;
    7438             :                 }
    7439             :                 break;
    7440           0 :               case 't':  // 6 strings to match.
    7441           0 :                 if (Mnemonic[8] != '_')
    7442             :                   break;
    7443             :                 switch (Mnemonic[9]) {
    7444             :                 default: break;
    7445           0 :                 case 'f':        // 2 strings to match.
    7446             :                   switch (Mnemonic[10]) {
    7447             :                   default: break;
    7448             :                   case '1':      // 1 string to match.
    7449           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7450             :                       break;
    7451           0 :                     Mnemonic = "v_cmp_lt_f16";         // "v_cmp_lt_f16_sdwa"
    7452           0 :                     return;
    7453             :                   case '3':      // 1 string to match.
    7454           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7455             :                       break;
    7456           0 :                     Mnemonic = "v_cmp_lt_f32";         // "v_cmp_lt_f32_sdwa"
    7457           0 :                     return;
    7458             :                   }
    7459             :                   break;
    7460           0 :                 case 'i':        // 2 strings to match.
    7461             :                   switch (Mnemonic[10]) {
    7462             :                   default: break;
    7463             :                   case '1':      // 1 string to match.
    7464           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7465             :                       break;
    7466           0 :                     Mnemonic = "v_cmp_lt_i16";         // "v_cmp_lt_i16_sdwa"
    7467           0 :                     return;
    7468             :                   case '3':      // 1 string to match.
    7469           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7470             :                       break;
    7471           0 :                     Mnemonic = "v_cmp_lt_i32";         // "v_cmp_lt_i32_sdwa"
    7472           0 :                     return;
    7473             :                   }
    7474             :                   break;
    7475           0 :                 case 'u':        // 2 strings to match.
    7476             :                   switch (Mnemonic[10]) {
    7477             :                   default: break;
    7478             :                   case '1':      // 1 string to match.
    7479           0 :                     if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7480             :                       break;
    7481           0 :                     Mnemonic = "v_cmp_lt_u16";         // "v_cmp_lt_u16_sdwa"
    7482           0 :                     return;
    7483             :                   case '3':      // 1 string to match.
    7484           0 :                     if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7485             :                       break;
    7486           0 :                     Mnemonic = "v_cmp_lt_u32";         // "v_cmp_lt_u32_sdwa"
    7487           0 :                     return;
    7488             :                   }
    7489             :                   break;
    7490             :                 }
    7491             :                 break;
    7492             :               }
    7493             :               break;
    7494             :             case 'n':    // 4 strings to match.
    7495           0 :               if (memcmp(Mnemonic.data()+7, "e_", 2) != 0)
    7496             :                 break;
    7497             :               switch (Mnemonic[9]) {
    7498             :               default: break;
    7499           0 :               case 'i':  // 2 strings to match.
    7500             :                 switch (Mnemonic[10]) {
    7501             :                 default: break;
    7502             :                 case '1':        // 1 string to match.
    7503           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7504             :                     break;
    7505           0 :                   Mnemonic = "v_cmp_ne_i16";   // "v_cmp_ne_i16_sdwa"
    7506           0 :                   return;
    7507             :                 case '3':        // 1 string to match.
    7508           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7509             :                     break;
    7510           0 :                   Mnemonic = "v_cmp_ne_i32";   // "v_cmp_ne_i32_sdwa"
    7511           0 :                   return;
    7512             :                 }
    7513             :                 break;
    7514           0 :               case 'u':  // 2 strings to match.
    7515             :                 switch (Mnemonic[10]) {
    7516             :                 default: break;
    7517             :                 case '1':        // 1 string to match.
    7518           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7519             :                     break;
    7520           0 :                   Mnemonic = "v_cmp_ne_u16";   // "v_cmp_ne_u16_sdwa"
    7521           0 :                   return;
    7522             :                 case '3':        // 1 string to match.
    7523           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7524             :                     break;
    7525           0 :                   Mnemonic = "v_cmp_ne_u32";   // "v_cmp_ne_u32_sdwa"
    7526           0 :                   return;
    7527             :                 }
    7528             :                 break;
    7529             :               }
    7530             :               break;
    7531             :             }
    7532             :             break;
    7533           0 :           case 's':      // 3 strings to match.
    7534           0 :             if (Mnemonic[6] != '_')
    7535             :               break;
    7536             :             switch (Mnemonic[7]) {
    7537             :             default: break;
    7538             :             case 'f':    // 1 string to match.
    7539           0 :               if (memcmp(Mnemonic.data()+8, "_f32_sdwa", 9) != 0)
    7540             :                 break;
    7541           0 :               Mnemonic = "v_cmps_f_f32";       // "v_cmps_f_f32_sdwa"
    7542           0 :               return;
    7543             :             case 'o':    // 1 string to match.
    7544           0 :               if (memcmp(Mnemonic.data()+8, "_f32_sdwa", 9) != 0)
    7545             :                 break;
    7546           0 :               Mnemonic = "v_cmps_o_f32";       // "v_cmps_o_f32_sdwa"
    7547           0 :               return;
    7548             :             case 'u':    // 1 string to match.
    7549           0 :               if (memcmp(Mnemonic.data()+8, "_f32_sdwa", 9) != 0)
    7550             :                 break;
    7551           0 :               Mnemonic = "v_cmps_u_f32";       // "v_cmps_u_f32_sdwa"
    7552           0 :               return;
    7553             :             }
    7554             :             break;
    7555           0 :           case 'x':      // 14 strings to match.
    7556           0 :             if (Mnemonic[6] != '_')
    7557             :               break;
    7558             :             switch (Mnemonic[7]) {
    7559             :             default: break;
    7560           0 :             case 'f':    // 6 strings to match.
    7561           0 :               if (Mnemonic[8] != '_')
    7562             :                 break;
    7563             :               switch (Mnemonic[9]) {
    7564             :               default: break;
    7565           0 :               case 'f':  // 2 strings to match.
    7566             :                 switch (Mnemonic[10]) {
    7567             :                 default: break;
    7568             :                 case '1':        // 1 string to match.
    7569           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7570             :                     break;
    7571           0 :                   Mnemonic = "v_cmpx_f_f16";   // "v_cmpx_f_f16_sdwa"
    7572           0 :                   return;
    7573             :                 case '3':        // 1 string to match.
    7574           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7575             :                     break;
    7576           0 :                   Mnemonic = "v_cmpx_f_f32";   // "v_cmpx_f_f32_sdwa"
    7577           0 :                   return;
    7578             :                 }
    7579             :                 break;
    7580           0 :               case 'i':  // 2 strings to match.
    7581             :                 switch (Mnemonic[10]) {
    7582             :                 default: break;
    7583             :                 case '1':        // 1 string to match.
    7584           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7585             :                     break;
    7586           0 :                   Mnemonic = "v_cmpx_f_i16";   // "v_cmpx_f_i16_sdwa"
    7587           0 :                   return;
    7588             :                 case '3':        // 1 string to match.
    7589           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7590             :                     break;
    7591           0 :                   Mnemonic = "v_cmpx_f_i32";   // "v_cmpx_f_i32_sdwa"
    7592           0 :                   return;
    7593             :                 }
    7594             :                 break;
    7595           0 :               case 'u':  // 2 strings to match.
    7596             :                 switch (Mnemonic[10]) {
    7597             :                 default: break;
    7598             :                 case '1':        // 1 string to match.
    7599           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7600             :                     break;
    7601           0 :                   Mnemonic = "v_cmpx_f_u16";   // "v_cmpx_f_u16_sdwa"
    7602           0 :                   return;
    7603             :                 case '3':        // 1 string to match.
    7604           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7605             :                     break;
    7606           0 :                   Mnemonic = "v_cmpx_f_u32";   // "v_cmpx_f_u32_sdwa"
    7607           0 :                   return;
    7608             :                 }
    7609             :                 break;
    7610             :               }
    7611             :               break;
    7612             :             case 'o':    // 2 strings to match.
    7613           0 :               if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    7614             :                 break;
    7615             :               switch (Mnemonic[10]) {
    7616             :               default: break;
    7617             :               case '1':  // 1 string to match.
    7618           0 :                 if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7619             :                   break;
    7620           0 :                 Mnemonic = "v_cmpx_o_f16";     // "v_cmpx_o_f16_sdwa"
    7621           0 :                 return;
    7622             :               case '3':  // 1 string to match.
    7623           0 :                 if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7624             :                   break;
    7625           0 :                 Mnemonic = "v_cmpx_o_f32";     // "v_cmpx_o_f32_sdwa"
    7626           0 :                 return;
    7627             :               }
    7628             :               break;
    7629           0 :             case 't':    // 4 strings to match.
    7630           0 :               if (Mnemonic[8] != '_')
    7631             :                 break;
    7632             :               switch (Mnemonic[9]) {
    7633             :               default: break;
    7634           0 :               case 'i':  // 2 strings to match.
    7635             :                 switch (Mnemonic[10]) {
    7636             :                 default: break;
    7637             :                 case '1':        // 1 string to match.
    7638           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7639             :                     break;
    7640           0 :                   Mnemonic = "v_cmpx_t_i16";   // "v_cmpx_t_i16_sdwa"
    7641           0 :                   return;
    7642             :                 case '3':        // 1 string to match.
    7643           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7644             :                     break;
    7645           0 :                   Mnemonic = "v_cmpx_t_i32";   // "v_cmpx_t_i32_sdwa"
    7646           0 :                   return;
    7647             :                 }
    7648             :                 break;
    7649           0 :               case 'u':  // 2 strings to match.
    7650             :                 switch (Mnemonic[10]) {
    7651             :                 default: break;
    7652             :                 case '1':        // 1 string to match.
    7653           0 :                   if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7654             :                     break;
    7655           0 :                   Mnemonic = "v_cmpx_t_u16";   // "v_cmpx_t_u16_sdwa"
    7656           0 :                   return;
    7657             :                 case '3':        // 1 string to match.
    7658           0 :                   if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7659             :                     break;
    7660           0 :                   Mnemonic = "v_cmpx_t_u32";   // "v_cmpx_t_u32_sdwa"
    7661           0 :                   return;
    7662             :                 }
    7663             :                 break;
    7664             :               }
    7665             :               break;
    7666             :             case 'u':    // 2 strings to match.
    7667           0 :               if (memcmp(Mnemonic.data()+8, "_f", 2) != 0)
    7668             :                 break;
    7669             :               switch (Mnemonic[10]) {
    7670             :               default: break;
    7671             :               case '1':  // 1 string to match.
    7672           0 :                 if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7673             :                   break;
    7674           0 :                 Mnemonic = "v_cmpx_u_f16";     // "v_cmpx_u_f16_sdwa"
    7675           0 :                 return;
    7676             :               case '3':  // 1 string to match.
    7677           0 :                 if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7678             :                   break;
    7679           0 :                 Mnemonic = "v_cmpx_u_f32";     // "v_cmpx_u_f32_sdwa"
    7680           0 :                 return;
    7681             :               }
    7682             :               break;
    7683             :             }
    7684             :             break;
    7685             :           }
    7686             :           break;
    7687             :         case 'm':        // 1 string to match.
    7688           0 :           if (memcmp(Mnemonic.data()+3, "ul_lo_u16_sdwa", 14) != 0)
    7689             :             break;
    7690           0 :           Mnemonic = "v_mul_lo_u16";   // "v_mul_lo_u16_sdwa"
    7691           0 :           return;
    7692             :         case 's':        // 5 strings to match.
    7693           0 :           if (memcmp(Mnemonic.data()+3, "ubrev_", 6) != 0)
    7694             :             break;
    7695             :           switch (Mnemonic[9]) {
    7696             :           default: break;
    7697           0 :           case 'f':      // 2 strings to match.
    7698             :             switch (Mnemonic[10]) {
    7699             :             default: break;
    7700             :             case '1':    // 1 string to match.
    7701           0 :               if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7702             :                 break;
    7703           0 :               Mnemonic = "v_subrev_f16";       // "v_subrev_f16_sdwa"
    7704           0 :               return;
    7705             :             case '3':    // 1 string to match.
    7706           0 :               if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7707             :                 break;
    7708           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_f32_sdwa"
    7709           0 :                 Mnemonic = "v_subrev_f32";
    7710             :               return;
    7711             :             }
    7712             :             break;
    7713             :           case 'i':      // 1 string to match.
    7714           0 :             if (memcmp(Mnemonic.data()+10, "32_sdwa", 7) != 0)
    7715             :               break;
    7716           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_subrev_i32_sdwa"
    7717           0 :               Mnemonic = "v_subrev_i32";
    7718             :             return;
    7719           0 :           case 'u':      // 2 strings to match.
    7720             :             switch (Mnemonic[10]) {
    7721             :             default: break;
    7722             :             case '1':    // 1 string to match.
    7723           0 :               if (memcmp(Mnemonic.data()+11, "6_sdwa", 6) != 0)
    7724             :                 break;
    7725           0 :               Mnemonic = "v_subrev_u16";       // "v_subrev_u16_sdwa"
    7726           0 :               return;
    7727             :             case '3':    // 1 string to match.
    7728           0 :               if (memcmp(Mnemonic.data()+11, "2_sdwa", 6) != 0)
    7729             :                 break;
    7730           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_subrev_u32_sdwa"
    7731           0 :                 Mnemonic = "v_subrev_u32";
    7732             :               return;
    7733             :             }
    7734             :             break;
    7735             :           }
    7736             :           break;
    7737             :         }
    7738             :         break;
    7739             :       case 18:   // 80 strings to match.
    7740         143 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    7741             :           break;
    7742             :         switch (Mnemonic[2]) {
    7743             :         default: break;
    7744             :         case 'a':        // 2 strings to match.
    7745           0 :           if (memcmp(Mnemonic.data()+3, "shrrev_i", 8) != 0)
    7746             :             break;
    7747             :           switch (Mnemonic[11]) {
    7748             :           default: break;
    7749             :           case '1':      // 1 string to match.
    7750           0 :             if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7751             :               break;
    7752           0 :             Mnemonic = "v_ashrrev_i16";        // "v_ashrrev_i16_sdwa"
    7753           0 :             return;
    7754             :           case '3':      // 1 string to match.
    7755           0 :             if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7756             :               break;
    7757           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_ashrrev_i32_sdwa"
    7758           0 :               Mnemonic = "v_ashrrev_i32";
    7759             :             return;
    7760             :           }
    7761             :           break;
    7762          20 :         case 'c':        // 70 strings to match.
    7763             :           switch (Mnemonic[3]) {
    7764             :           default: break;
    7765           0 :           case 'm':      // 59 strings to match.
    7766           0 :             if (Mnemonic[4] != 'p')
    7767             :               break;
    7768             :             switch (Mnemonic[5]) {
    7769             :             default: break;
    7770           0 :             case '_':    // 14 strings to match.
    7771             :               switch (Mnemonic[6]) {
    7772             :               default: break;
    7773           0 :               case 'n':  // 12 strings to match.
    7774             :                 switch (Mnemonic[7]) {
    7775             :                 default: break;
    7776             :                 case 'e':        // 2 strings to match.
    7777           0 :                   if (memcmp(Mnemonic.data()+8, "q_f", 3) != 0)
    7778             :                     break;
    7779             :                   switch (Mnemonic[11]) {
    7780             :                   default: break;
    7781             :                   case '1':      // 1 string to match.
    7782           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7783             :                       break;
    7784           0 :                     Mnemonic = "v_cmp_neq_f16";        // "v_cmp_neq_f16_sdwa"
    7785           0 :                     return;
    7786             :                   case '3':      // 1 string to match.
    7787           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7788             :                       break;
    7789           0 :                     Mnemonic = "v_cmp_neq_f32";        // "v_cmp_neq_f32_sdwa"
    7790           0 :                     return;
    7791             :                   }
    7792             :                   break;
    7793           0 :                 case 'g':        // 4 strings to match.
    7794             :                   switch (Mnemonic[8]) {
    7795             :                   default: break;
    7796             :                   case 'e':      // 2 strings to match.
    7797           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7798             :                       break;
    7799             :                     switch (Mnemonic[11]) {
    7800             :                     default: break;
    7801             :                     case '1':    // 1 string to match.
    7802           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7803             :                         break;
    7804           0 :                       Mnemonic = "v_cmp_nge_f16";      // "v_cmp_nge_f16_sdwa"
    7805           0 :                       return;
    7806             :                     case '3':    // 1 string to match.
    7807           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7808             :                         break;
    7809           0 :                       Mnemonic = "v_cmp_nge_f32";      // "v_cmp_nge_f32_sdwa"
    7810           0 :                       return;
    7811             :                     }
    7812             :                     break;
    7813             :                   case 't':      // 2 strings to match.
    7814           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7815             :                       break;
    7816             :                     switch (Mnemonic[11]) {
    7817             :                     default: break;
    7818             :                     case '1':    // 1 string to match.
    7819           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7820             :                         break;
    7821           0 :                       Mnemonic = "v_cmp_ngt_f16";      // "v_cmp_ngt_f16_sdwa"
    7822           0 :                       return;
    7823             :                     case '3':    // 1 string to match.
    7824           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7825             :                         break;
    7826           0 :                       Mnemonic = "v_cmp_ngt_f32";      // "v_cmp_ngt_f32_sdwa"
    7827           0 :                       return;
    7828             :                     }
    7829             :                     break;
    7830             :                   }
    7831             :                   break;
    7832           0 :                 case 'l':        // 6 strings to match.
    7833             :                   switch (Mnemonic[8]) {
    7834             :                   default: break;
    7835             :                   case 'e':      // 2 strings to match.
    7836           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7837             :                       break;
    7838             :                     switch (Mnemonic[11]) {
    7839             :                     default: break;
    7840             :                     case '1':    // 1 string to match.
    7841           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7842             :                         break;
    7843           0 :                       Mnemonic = "v_cmp_nle_f16";      // "v_cmp_nle_f16_sdwa"
    7844           0 :                       return;
    7845             :                     case '3':    // 1 string to match.
    7846           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7847             :                         break;
    7848           0 :                       Mnemonic = "v_cmp_nle_f32";      // "v_cmp_nle_f32_sdwa"
    7849           0 :                       return;
    7850             :                     }
    7851             :                     break;
    7852             :                   case 'g':      // 2 strings to match.
    7853           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7854             :                       break;
    7855             :                     switch (Mnemonic[11]) {
    7856             :                     default: break;
    7857             :                     case '1':    // 1 string to match.
    7858           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7859             :                         break;
    7860           0 :                       Mnemonic = "v_cmp_nlg_f16";      // "v_cmp_nlg_f16_sdwa"
    7861           0 :                       return;
    7862             :                     case '3':    // 1 string to match.
    7863           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7864             :                         break;
    7865           0 :                       Mnemonic = "v_cmp_nlg_f32";      // "v_cmp_nlg_f32_sdwa"
    7866           0 :                       return;
    7867             :                     }
    7868             :                     break;
    7869             :                   case 't':      // 2 strings to match.
    7870           0 :                     if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    7871             :                       break;
    7872             :                     switch (Mnemonic[11]) {
    7873             :                     default: break;
    7874             :                     case '1':    // 1 string to match.
    7875           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7876             :                         break;
    7877           0 :                       Mnemonic = "v_cmp_nlt_f16";      // "v_cmp_nlt_f16_sdwa"
    7878           0 :                       return;
    7879             :                     case '3':    // 1 string to match.
    7880           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7881             :                         break;
    7882           0 :                       Mnemonic = "v_cmp_nlt_f32";      // "v_cmp_nlt_f32_sdwa"
    7883           0 :                       return;
    7884             :                     }
    7885             :                     break;
    7886             :                   }
    7887             :                   break;
    7888             :                 }
    7889             :                 break;
    7890             :               case 't':  // 2 strings to match.
    7891           0 :                 if (memcmp(Mnemonic.data()+7, "ru_f", 4) != 0)
    7892             :                   break;
    7893             :                 switch (Mnemonic[11]) {
    7894             :                 default: break;
    7895             :                 case '1':        // 1 string to match.
    7896           0 :                   if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7897             :                     break;
    7898           0 :                   Mnemonic = "v_cmp_tru_f16";  // "v_cmp_tru_f16_sdwa"
    7899           0 :                   return;
    7900             :                 case '3':        // 1 string to match.
    7901           0 :                   if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    7902             :                     break;
    7903           0 :                   Mnemonic = "v_cmp_tru_f32";  // "v_cmp_tru_f32_sdwa"
    7904           0 :                   return;
    7905             :                 }
    7906             :                 break;
    7907             :               }
    7908             :               break;
    7909           0 :             case 's':    // 9 strings to match.
    7910             :               switch (Mnemonic[6]) {
    7911             :               default: break;
    7912           0 :               case '_':  // 6 strings to match.
    7913             :                 switch (Mnemonic[7]) {
    7914             :                 default: break;
    7915             :                 case 'e':        // 1 string to match.
    7916           0 :                   if (memcmp(Mnemonic.data()+8, "q_f32_sdwa", 10) != 0)
    7917             :                     break;
    7918           0 :                   Mnemonic = "v_cmps_eq_f32";  // "v_cmps_eq_f32_sdwa"
    7919           0 :                   return;
    7920           0 :                 case 'g':        // 2 strings to match.
    7921             :                   switch (Mnemonic[8]) {
    7922             :                   default: break;
    7923             :                   case 'e':      // 1 string to match.
    7924           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7925             :                       break;
    7926           0 :                     Mnemonic = "v_cmps_ge_f32";        // "v_cmps_ge_f32_sdwa"
    7927           0 :                     return;
    7928             :                   case 't':      // 1 string to match.
    7929           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7930             :                       break;
    7931           0 :                     Mnemonic = "v_cmps_gt_f32";        // "v_cmps_gt_f32_sdwa"
    7932           0 :                     return;
    7933             :                   }
    7934             :                   break;
    7935           0 :                 case 'l':        // 3 strings to match.
    7936             :                   switch (Mnemonic[8]) {
    7937             :                   default: break;
    7938             :                   case 'e':      // 1 string to match.
    7939           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7940             :                       break;
    7941           0 :                     Mnemonic = "v_cmps_le_f32";        // "v_cmps_le_f32_sdwa"
    7942           0 :                     return;
    7943             :                   case 'g':      // 1 string to match.
    7944           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7945             :                       break;
    7946           0 :                     Mnemonic = "v_cmps_lg_f32";        // "v_cmps_lg_f32_sdwa"
    7947           0 :                     return;
    7948             :                   case 't':      // 1 string to match.
    7949           0 :                     if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7950             :                       break;
    7951           0 :                     Mnemonic = "v_cmps_lt_f32";        // "v_cmps_lt_f32_sdwa"
    7952           0 :                     return;
    7953             :                   }
    7954             :                   break;
    7955             :                 }
    7956             :                 break;
    7957           0 :               case 'x':  // 3 strings to match.
    7958           0 :                 if (Mnemonic[7] != '_')
    7959             :                   break;
    7960             :                 switch (Mnemonic[8]) {
    7961             :                 default: break;
    7962             :                 case 'f':        // 1 string to match.
    7963           0 :                   if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7964             :                     break;
    7965           0 :                   Mnemonic = "v_cmpsx_f_f32";  // "v_cmpsx_f_f32_sdwa"
    7966           0 :                   return;
    7967             :                 case 'o':        // 1 string to match.
    7968           0 :                   if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7969             :                     break;
    7970           0 :                   Mnemonic = "v_cmpsx_o_f32";  // "v_cmpsx_o_f32_sdwa"
    7971           0 :                   return;
    7972             :                 case 'u':        // 1 string to match.
    7973           0 :                   if (memcmp(Mnemonic.data()+9, "_f32_sdwa", 9) != 0)
    7974             :                     break;
    7975           0 :                   Mnemonic = "v_cmpsx_u_f32";  // "v_cmpsx_u_f32_sdwa"
    7976           0 :                   return;
    7977             :                 }
    7978             :                 break;
    7979             :               }
    7980             :               break;
    7981           0 :             case 'x':    // 36 strings to match.
    7982           0 :               if (Mnemonic[6] != '_')
    7983             :                 break;
    7984             :               switch (Mnemonic[7]) {
    7985             :               default: break;
    7986             :               case 'e':  // 6 strings to match.
    7987           0 :                 if (memcmp(Mnemonic.data()+8, "q_", 2) != 0)
    7988             :                   break;
    7989             :                 switch (Mnemonic[10]) {
    7990             :                 default: break;
    7991           0 :                 case 'f':        // 2 strings to match.
    7992             :                   switch (Mnemonic[11]) {
    7993             :                   default: break;
    7994             :                   case '1':      // 1 string to match.
    7995           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    7996             :                       break;
    7997           0 :                     Mnemonic = "v_cmpx_eq_f16";        // "v_cmpx_eq_f16_sdwa"
    7998           0 :                     return;
    7999             :                   case '3':      // 1 string to match.
    8000           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8001             :                       break;
    8002           0 :                     Mnemonic = "v_cmpx_eq_f32";        // "v_cmpx_eq_f32_sdwa"
    8003           0 :                     return;
    8004             :                   }
    8005             :                   break;
    8006           0 :                 case 'i':        // 2 strings to match.
    8007             :                   switch (Mnemonic[11]) {
    8008             :                   default: break;
    8009             :                   case '1':      // 1 string to match.
    8010           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8011             :                       break;
    8012           0 :                     Mnemonic = "v_cmpx_eq_i16";        // "v_cmpx_eq_i16_sdwa"
    8013           0 :                     return;
    8014             :                   case '3':      // 1 string to match.
    8015           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8016             :                       break;
    8017           0 :                     Mnemonic = "v_cmpx_eq_i32";        // "v_cmpx_eq_i32_sdwa"
    8018           0 :                     return;
    8019             :                   }
    8020             :                   break;
    8021           0 :                 case 'u':        // 2 strings to match.
    8022             :                   switch (Mnemonic[11]) {
    8023             :                   default: break;
    8024             :                   case '1':      // 1 string to match.
    8025           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8026             :                       break;
    8027           0 :                     Mnemonic = "v_cmpx_eq_u16";        // "v_cmpx_eq_u16_sdwa"
    8028           0 :                     return;
    8029             :                   case '3':      // 1 string to match.
    8030           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8031             :                       break;
    8032           0 :                     Mnemonic = "v_cmpx_eq_u32";        // "v_cmpx_eq_u32_sdwa"
    8033           0 :                     return;
    8034             :                   }
    8035             :                   break;
    8036             :                 }
    8037             :                 break;
    8038           0 :               case 'g':  // 12 strings to match.
    8039             :                 switch (Mnemonic[8]) {
    8040             :                 default: break;
    8041           0 :                 case 'e':        // 6 strings to match.
    8042           0 :                   if (Mnemonic[9] != '_')
    8043             :                     break;
    8044             :                   switch (Mnemonic[10]) {
    8045             :                   default: break;
    8046           0 :                   case 'f':      // 2 strings to match.
    8047             :                     switch (Mnemonic[11]) {
    8048             :                     default: break;
    8049             :                     case '1':    // 1 string to match.
    8050           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8051             :                         break;
    8052           0 :                       Mnemonic = "v_cmpx_ge_f16";      // "v_cmpx_ge_f16_sdwa"
    8053           0 :                       return;
    8054             :                     case '3':    // 1 string to match.
    8055           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8056             :                         break;
    8057           0 :                       Mnemonic = "v_cmpx_ge_f32";      // "v_cmpx_ge_f32_sdwa"
    8058           0 :                       return;
    8059             :                     }
    8060             :                     break;
    8061           0 :                   case 'i':      // 2 strings to match.
    8062             :                     switch (Mnemonic[11]) {
    8063             :                     default: break;
    8064             :                     case '1':    // 1 string to match.
    8065           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8066             :                         break;
    8067           0 :                       Mnemonic = "v_cmpx_ge_i16";      // "v_cmpx_ge_i16_sdwa"
    8068           0 :                       return;
    8069             :                     case '3':    // 1 string to match.
    8070           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8071             :                         break;
    8072           0 :                       Mnemonic = "v_cmpx_ge_i32";      // "v_cmpx_ge_i32_sdwa"
    8073           0 :                       return;
    8074             :                     }
    8075             :                     break;
    8076           0 :                   case 'u':      // 2 strings to match.
    8077             :                     switch (Mnemonic[11]) {
    8078             :                     default: break;
    8079             :                     case '1':    // 1 string to match.
    8080           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8081             :                         break;
    8082           0 :                       Mnemonic = "v_cmpx_ge_u16";      // "v_cmpx_ge_u16_sdwa"
    8083           0 :                       return;
    8084             :                     case '3':    // 1 string to match.
    8085           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8086             :                         break;
    8087           0 :                       Mnemonic = "v_cmpx_ge_u32";      // "v_cmpx_ge_u32_sdwa"
    8088           0 :                       return;
    8089             :                     }
    8090             :                     break;
    8091             :                   }
    8092             :                   break;
    8093           0 :                 case 't':        // 6 strings to match.
    8094           0 :                   if (Mnemonic[9] != '_')
    8095             :                     break;
    8096             :                   switch (Mnemonic[10]) {
    8097             :                   default: break;
    8098           0 :                   case 'f':      // 2 strings to match.
    8099             :                     switch (Mnemonic[11]) {
    8100             :                     default: break;
    8101             :                     case '1':    // 1 string to match.
    8102           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8103             :                         break;
    8104           0 :                       Mnemonic = "v_cmpx_gt_f16";      // "v_cmpx_gt_f16_sdwa"
    8105           0 :                       return;
    8106             :                     case '3':    // 1 string to match.
    8107           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8108             :                         break;
    8109           0 :                       Mnemonic = "v_cmpx_gt_f32";      // "v_cmpx_gt_f32_sdwa"
    8110           0 :                       return;
    8111             :                     }
    8112             :                     break;
    8113           0 :                   case 'i':      // 2 strings to match.
    8114             :                     switch (Mnemonic[11]) {
    8115             :                     default: break;
    8116             :                     case '1':    // 1 string to match.
    8117           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8118             :                         break;
    8119           0 :                       Mnemonic = "v_cmpx_gt_i16";      // "v_cmpx_gt_i16_sdwa"
    8120           0 :                       return;
    8121             :                     case '3':    // 1 string to match.
    8122           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8123             :                         break;
    8124           0 :                       Mnemonic = "v_cmpx_gt_i32";      // "v_cmpx_gt_i32_sdwa"
    8125           0 :                       return;
    8126             :                     }
    8127             :                     break;
    8128           0 :                   case 'u':      // 2 strings to match.
    8129             :                     switch (Mnemonic[11]) {
    8130             :                     default: break;
    8131             :                     case '1':    // 1 string to match.
    8132           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8133             :                         break;
    8134           0 :                       Mnemonic = "v_cmpx_gt_u16";      // "v_cmpx_gt_u16_sdwa"
    8135           0 :                       return;
    8136             :                     case '3':    // 1 string to match.
    8137           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8138             :                         break;
    8139           0 :                       Mnemonic = "v_cmpx_gt_u32";      // "v_cmpx_gt_u32_sdwa"
    8140           0 :                       return;
    8141             :                     }
    8142             :                     break;
    8143             :                   }
    8144             :                   break;
    8145             :                 }
    8146             :                 break;
    8147           0 :               case 'l':  // 14 strings to match.
    8148             :                 switch (Mnemonic[8]) {
    8149             :                 default: break;
    8150           0 :                 case 'e':        // 6 strings to match.
    8151           0 :                   if (Mnemonic[9] != '_')
    8152             :                     break;
    8153             :                   switch (Mnemonic[10]) {
    8154             :                   default: break;
    8155           0 :                   case 'f':      // 2 strings to match.
    8156             :                     switch (Mnemonic[11]) {
    8157             :                     default: break;
    8158             :                     case '1':    // 1 string to match.
    8159           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8160             :                         break;
    8161           0 :                       Mnemonic = "v_cmpx_le_f16";      // "v_cmpx_le_f16_sdwa"
    8162           0 :                       return;
    8163             :                     case '3':    // 1 string to match.
    8164           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8165             :                         break;
    8166           0 :                       Mnemonic = "v_cmpx_le_f32";      // "v_cmpx_le_f32_sdwa"
    8167           0 :                       return;
    8168             :                     }
    8169             :                     break;
    8170           0 :                   case 'i':      // 2 strings to match.
    8171             :                     switch (Mnemonic[11]) {
    8172             :                     default: break;
    8173             :                     case '1':    // 1 string to match.
    8174           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8175             :                         break;
    8176           0 :                       Mnemonic = "v_cmpx_le_i16";      // "v_cmpx_le_i16_sdwa"
    8177           0 :                       return;
    8178             :                     case '3':    // 1 string to match.
    8179           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8180             :                         break;
    8181           0 :                       Mnemonic = "v_cmpx_le_i32";      // "v_cmpx_le_i32_sdwa"
    8182           0 :                       return;
    8183             :                     }
    8184             :                     break;
    8185           0 :                   case 'u':      // 2 strings to match.
    8186             :                     switch (Mnemonic[11]) {
    8187             :                     default: break;
    8188             :                     case '1':    // 1 string to match.
    8189           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8190             :                         break;
    8191           0 :                       Mnemonic = "v_cmpx_le_u16";      // "v_cmpx_le_u16_sdwa"
    8192           0 :                       return;
    8193             :                     case '3':    // 1 string to match.
    8194           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8195             :                         break;
    8196           0 :                       Mnemonic = "v_cmpx_le_u32";      // "v_cmpx_le_u32_sdwa"
    8197           0 :                       return;
    8198             :                     }
    8199             :                     break;
    8200             :                   }
    8201             :                   break;
    8202             :                 case 'g':        // 2 strings to match.
    8203           0 :                   if (memcmp(Mnemonic.data()+9, "_f", 2) != 0)
    8204             :                     break;
    8205             :                   switch (Mnemonic[11]) {
    8206             :                   default: break;
    8207             :                   case '1':      // 1 string to match.
    8208           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8209             :                       break;
    8210           0 :                     Mnemonic = "v_cmpx_lg_f16";        // "v_cmpx_lg_f16_sdwa"
    8211           0 :                     return;
    8212             :                   case '3':      // 1 string to match.
    8213           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8214             :                       break;
    8215           0 :                     Mnemonic = "v_cmpx_lg_f32";        // "v_cmpx_lg_f32_sdwa"
    8216           0 :                     return;
    8217             :                   }
    8218             :                   break;
    8219           0 :                 case 't':        // 6 strings to match.
    8220           0 :                   if (Mnemonic[9] != '_')
    8221             :                     break;
    8222             :                   switch (Mnemonic[10]) {
    8223             :                   default: break;
    8224           0 :                   case 'f':      // 2 strings to match.
    8225             :                     switch (Mnemonic[11]) {
    8226             :                     default: break;
    8227             :                     case '1':    // 1 string to match.
    8228           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8229             :                         break;
    8230           0 :                       Mnemonic = "v_cmpx_lt_f16";      // "v_cmpx_lt_f16_sdwa"
    8231           0 :                       return;
    8232             :                     case '3':    // 1 string to match.
    8233           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8234             :                         break;
    8235           0 :                       Mnemonic = "v_cmpx_lt_f32";      // "v_cmpx_lt_f32_sdwa"
    8236           0 :                       return;
    8237             :                     }
    8238             :                     break;
    8239           0 :                   case 'i':      // 2 strings to match.
    8240             :                     switch (Mnemonic[11]) {
    8241             :                     default: break;
    8242             :                     case '1':    // 1 string to match.
    8243           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8244             :                         break;
    8245           0 :                       Mnemonic = "v_cmpx_lt_i16";      // "v_cmpx_lt_i16_sdwa"
    8246           0 :                       return;
    8247             :                     case '3':    // 1 string to match.
    8248           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8249             :                         break;
    8250           0 :                       Mnemonic = "v_cmpx_lt_i32";      // "v_cmpx_lt_i32_sdwa"
    8251           0 :                       return;
    8252             :                     }
    8253             :                     break;
    8254           0 :                   case 'u':      // 2 strings to match.
    8255             :                     switch (Mnemonic[11]) {
    8256             :                     default: break;
    8257             :                     case '1':    // 1 string to match.
    8258           0 :                       if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8259             :                         break;
    8260           0 :                       Mnemonic = "v_cmpx_lt_u16";      // "v_cmpx_lt_u16_sdwa"
    8261           0 :                       return;
    8262             :                     case '3':    // 1 string to match.
    8263           0 :                       if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8264             :                         break;
    8265           0 :                       Mnemonic = "v_cmpx_lt_u32";      // "v_cmpx_lt_u32_sdwa"
    8266           0 :                       return;
    8267             :                     }
    8268             :                     break;
    8269             :                   }
    8270             :                   break;
    8271             :                 }
    8272             :                 break;
    8273             :               case 'n':  // 4 strings to match.
    8274           0 :                 if (memcmp(Mnemonic.data()+8, "e_", 2) != 0)
    8275             :                   break;
    8276             :                 switch (Mnemonic[10]) {
    8277             :                 default: break;
    8278           0 :                 case 'i':        // 2 strings to match.
    8279             :                   switch (Mnemonic[11]) {
    8280             :                   default: break;
    8281             :                   case '1':      // 1 string to match.
    8282           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8283             :                       break;
    8284           0 :                     Mnemonic = "v_cmpx_ne_i16";        // "v_cmpx_ne_i16_sdwa"
    8285           0 :                     return;
    8286             :                   case '3':      // 1 string to match.
    8287           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8288             :                       break;
    8289           0 :                     Mnemonic = "v_cmpx_ne_i32";        // "v_cmpx_ne_i32_sdwa"
    8290           0 :                     return;
    8291             :                   }
    8292             :                   break;
    8293           0 :                 case 'u':        // 2 strings to match.
    8294             :                   switch (Mnemonic[11]) {
    8295             :                   default: break;
    8296             :                   case '1':      // 1 string to match.
    8297           0 :                     if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8298             :                       break;
    8299           0 :                     Mnemonic = "v_cmpx_ne_u16";        // "v_cmpx_ne_u16_sdwa"
    8300           0 :                     return;
    8301             :                   case '3':      // 1 string to match.
    8302           0 :                     if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8303             :                       break;
    8304           0 :                     Mnemonic = "v_cmpx_ne_u32";        // "v_cmpx_ne_u32_sdwa"
    8305           0 :                     return;
    8306             :                   }
    8307             :                   break;
    8308             :                 }
    8309             :                 break;
    8310             :               }
    8311             :               break;
    8312             :             }
    8313             :             break;
    8314             :           case 'n':      // 1 string to match.
    8315           0 :             if (memcmp(Mnemonic.data()+4, "dmask_b32_sdwa", 14) != 0)
    8316             :               break;
    8317           0 :             if ((Features & Feature_isGCN) == Feature_isGCN)         // "v_cndmask_b32_sdwa"
    8318           0 :               Mnemonic = "v_cndmask_b32";
    8319             :             return;
    8320             :           case 'v':      // 10 strings to match.
    8321          20 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
    8322             :               break;
    8323             :             switch (Mnemonic[6]) {
    8324             :             default: break;
    8325           0 :             case 'f':    // 6 strings to match.
    8326             :               switch (Mnemonic[7]) {
    8327             :               default: break;
    8328             :               case '1':  // 3 strings to match.
    8329           0 :                 if (memcmp(Mnemonic.data()+8, "6_", 2) != 0)
    8330             :                   break;
    8331             :                 switch (Mnemonic[10]) {
    8332             :                 default: break;
    8333             :                 case 'f':        // 1 string to match.
    8334           0 :                   if (memcmp(Mnemonic.data()+11, "32_sdwa", 7) != 0)
    8335             :                     break;
    8336           0 :                   Mnemonic = "v_cvt_f16_f32";  // "v_cvt_f16_f32_sdwa"
    8337           0 :                   return;
    8338             :                 case 'i':        // 1 string to match.
    8339           0 :                   if (memcmp(Mnemonic.data()+11, "16_sdwa", 7) != 0)
    8340             :                     break;
    8341           0 :                   Mnemonic = "v_cvt_f16_i16";  // "v_cvt_f16_i16_sdwa"
    8342           0 :                   return;
    8343             :                 case 'u':        // 1 string to match.
    8344           0 :                   if (memcmp(Mnemonic.data()+11, "16_sdwa", 7) != 0)
    8345             :                     break;
    8346           0 :                   Mnemonic = "v_cvt_f16_u16";  // "v_cvt_f16_u16_sdwa"
    8347           0 :                   return;
    8348             :                 }
    8349             :                 break;
    8350             :               case '3':  // 3 strings to match.
    8351           0 :                 if (memcmp(Mnemonic.data()+8, "2_", 2) != 0)
    8352             :                   break;
    8353             :                 switch (Mnemonic[10]) {
    8354             :                 default: break;
    8355             :                 case 'f':        // 1 string to match.
    8356           0 :                   if (memcmp(Mnemonic.data()+11, "16_sdwa", 7) != 0)
    8357             :                     break;
    8358           0 :                   Mnemonic = "v_cvt_f32_f16";  // "v_cvt_f32_f16_sdwa"
    8359           0 :                   return;
    8360             :                 case 'i':        // 1 string to match.
    8361           0 :                   if (memcmp(Mnemonic.data()+11, "32_sdwa", 7) != 0)
    8362             :                     break;
    8363           0 :                   Mnemonic = "v_cvt_f32_i32";  // "v_cvt_f32_i32_sdwa"
    8364           0 :                   return;
    8365             :                 case 'u':        // 1 string to match.
    8366           0 :                   if (memcmp(Mnemonic.data()+11, "32_sdwa", 7) != 0)
    8367             :                     break;
    8368           0 :                   Mnemonic = "v_cvt_f32_u32";  // "v_cvt_f32_u32_sdwa"
    8369           0 :                   return;
    8370             :                 }
    8371             :                 break;
    8372             :               }
    8373             :               break;
    8374           0 :             case 'i':    // 2 strings to match.
    8375             :               switch (Mnemonic[7]) {
    8376             :               default: break;
    8377             :               case '1':  // 1 string to match.
    8378           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_sdwa", 10) != 0)
    8379             :                   break;
    8380           0 :                 Mnemonic = "v_cvt_i16_f16";    // "v_cvt_i16_f16_sdwa"
    8381           0 :                 return;
    8382             :               case '3':  // 1 string to match.
    8383           0 :                 if (memcmp(Mnemonic.data()+8, "2_f32_sdwa", 10) != 0)
    8384             :                   break;
    8385           0 :                 Mnemonic = "v_cvt_i32_f32";    // "v_cvt_i32_f32_sdwa"
    8386           0 :                 return;
    8387             :               }
    8388             :               break;
    8389           0 :             case 'u':    // 2 strings to match.
    8390             :               switch (Mnemonic[7]) {
    8391             :               default: break;
    8392             :               case '1':  // 1 string to match.
    8393           0 :                 if (memcmp(Mnemonic.data()+8, "6_f16_sdwa", 10) != 0)
    8394             :                   break;
    8395           0 :                 Mnemonic = "v_cvt_u16_f16";    // "v_cvt_u16_f16_sdwa"
    8396           0 :                 return;
    8397             :               case '3':  // 1 string to match.
    8398           0 :                 if (memcmp(Mnemonic.data()+8, "2_f32_sdwa", 10) != 0)
    8399             :                   break;
    8400           0 :                 Mnemonic = "v_cvt_u32_f32";    // "v_cvt_u32_f32_sdwa"
    8401           0 :                 return;
    8402             :               }
    8403             :               break;
    8404             :             }
    8405             :             break;
    8406             :           }
    8407             :           break;
    8408             :         case 'l':        // 4 strings to match.
    8409           0 :           if (memcmp(Mnemonic.data()+3, "sh", 2) != 0)
    8410             :             break;
    8411             :           switch (Mnemonic[5]) {
    8412             :           default: break;
    8413             :           case 'l':      // 2 strings to match.
    8414           0 :             if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
    8415             :               break;
    8416             :             switch (Mnemonic[11]) {
    8417             :             default: break;
    8418             :             case '1':    // 1 string to match.
    8419           0 :               if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8420             :                 break;
    8421           0 :               Mnemonic = "v_lshlrev_b16";      // "v_lshlrev_b16_sdwa"
    8422           0 :               return;
    8423             :             case '3':    // 1 string to match.
    8424           0 :               if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8425             :                 break;
    8426           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_lshlrev_b32_sdwa"
    8427           0 :                 Mnemonic = "v_lshlrev_b32";
    8428             :               return;
    8429             :             }
    8430             :             break;
    8431             :           case 'r':      // 2 strings to match.
    8432           0 :             if (memcmp(Mnemonic.data()+6, "rev_b", 5) != 0)
    8433             :               break;
    8434             :             switch (Mnemonic[11]) {
    8435             :             default: break;
    8436             :             case '1':    // 1 string to match.
    8437           0 :               if (memcmp(Mnemonic.data()+12, "6_sdwa", 6) != 0)
    8438             :                 break;
    8439           0 :               Mnemonic = "v_lshrrev_b16";      // "v_lshrrev_b16_sdwa"
    8440           0 :               return;
    8441             :             case '3':    // 1 string to match.
    8442           0 :               if (memcmp(Mnemonic.data()+12, "2_sdwa", 6) != 0)
    8443             :                 break;
    8444           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_lshrrev_b32_sdwa"
    8445           0 :                 Mnemonic = "v_lshrrev_b32";
    8446             :               return;
    8447             :             }
    8448             :             break;
    8449             :           }
    8450             :           break;
    8451           0 :         case 'm':        // 3 strings to match.
    8452             :           switch (Mnemonic[3]) {
    8453             :           default: break;
    8454             :           case 'o':      // 1 string to match.
    8455           0 :             if (memcmp(Mnemonic.data()+4, "v_fed_b32_sdwa", 14) != 0)
    8456             :               break;
    8457           0 :             Mnemonic = "v_mov_fed_b32";        // "v_mov_fed_b32_sdwa"
    8458           0 :             return;
    8459             :           case 'u':      // 2 strings to match.
    8460           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    8461             :               break;
    8462             :             switch (Mnemonic[6]) {
    8463             :             default: break;
    8464             :             case 'i':    // 1 string to match.
    8465           0 :               if (memcmp(Mnemonic.data()+7, "32_i24_sdwa", 11) != 0)
    8466             :                 break;
    8467           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_i32_i24_sdwa"
    8468           0 :                 Mnemonic = "v_mul_i32_i24";
    8469             :               return;
    8470             :             case 'u':    // 1 string to match.
    8471           0 :               if (memcmp(Mnemonic.data()+7, "32_u24_sdwa", 11) != 0)
    8472             :                 break;
    8473           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_u32_u24_sdwa"
    8474           0 :                 Mnemonic = "v_mul_u32_u24";
    8475             :               return;
    8476             :             }
    8477             :             break;
    8478             :           }
    8479             :           break;
    8480             :         case 's':        // 1 string to match.
    8481           0 :           if (memcmp(Mnemonic.data()+3, "ubbrev_u32_sdwa", 15) != 0)
    8482             :             break;
    8483           0 :           if ((Features & Feature_isGCN) == Feature_isGCN)   // "v_subbrev_u32_sdwa"
    8484           0 :             Mnemonic = "v_subbrev_u32";
    8485             :           return;
    8486             :         }
    8487             :         break;
    8488             :       case 19:   // 27 strings to match.
    8489         422 :         if (memcmp(Mnemonic.data()+0, "v_cmp", 5) != 0)
    8490             :           break;
    8491             :         switch (Mnemonic[5]) {
    8492             :         default: break;
    8493           0 :         case 's':        // 13 strings to match.
    8494             :           switch (Mnemonic[6]) {
    8495             :           default: break;
    8496           0 :           case '_':      // 7 strings to match.
    8497             :             switch (Mnemonic[7]) {
    8498             :             default: break;
    8499           0 :             case 'n':    // 6 strings to match.
    8500             :               switch (Mnemonic[8]) {
    8501             :               default: break;
    8502             :               case 'e':  // 1 string to match.
    8503           0 :                 if (memcmp(Mnemonic.data()+9, "q_f32_sdwa", 10) != 0)
    8504             :                   break;
    8505           0 :                 Mnemonic = "v_cmps_neq_f32";   // "v_cmps_neq_f32_sdwa"
    8506           0 :                 return;
    8507           0 :               case 'g':  // 2 strings to match.
    8508             :                 switch (Mnemonic[9]) {
    8509             :                 default: break;
    8510             :                 case 'e':        // 1 string to match.
    8511           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8512             :                     break;
    8513           0 :                   Mnemonic = "v_cmps_nge_f32";         // "v_cmps_nge_f32_sdwa"
    8514           0 :                   return;
    8515             :                 case 't':        // 1 string to match.
    8516           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8517             :                     break;
    8518           0 :                   Mnemonic = "v_cmps_ngt_f32";         // "v_cmps_ngt_f32_sdwa"
    8519           0 :                   return;
    8520             :                 }
    8521             :                 break;
    8522           0 :               case 'l':  // 3 strings to match.
    8523             :                 switch (Mnemonic[9]) {
    8524             :                 default: break;
    8525             :                 case 'e':        // 1 string to match.
    8526           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8527             :                     break;
    8528           0 :                   Mnemonic = "v_cmps_nle_f32";         // "v_cmps_nle_f32_sdwa"
    8529           0 :                   return;
    8530             :                 case 'g':        // 1 string to match.
    8531           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8532             :                     break;
    8533           0 :                   Mnemonic = "v_cmps_nlg_f32";         // "v_cmps_nlg_f32_sdwa"
    8534           0 :                   return;
    8535             :                 case 't':        // 1 string to match.
    8536           0 :                   if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8537             :                     break;
    8538           0 :                   Mnemonic = "v_cmps_nlt_f32";         // "v_cmps_nlt_f32_sdwa"
    8539           0 :                   return;
    8540             :                 }
    8541             :                 break;
    8542             :               }
    8543             :               break;
    8544             :             case 't':    // 1 string to match.
    8545           0 :               if (memcmp(Mnemonic.data()+8, "ru_f32_sdwa", 11) != 0)
    8546             :                 break;
    8547           0 :               Mnemonic = "v_cmps_tru_f32";     // "v_cmps_tru_f32_sdwa"
    8548           0 :               return;
    8549             :             }
    8550             :             break;
    8551           0 :           case 'x':      // 6 strings to match.
    8552           0 :             if (Mnemonic[7] != '_')
    8553             :               break;
    8554             :             switch (Mnemonic[8]) {
    8555             :             default: break;
    8556             :             case 'e':    // 1 string to match.
    8557           0 :               if (memcmp(Mnemonic.data()+9, "q_f32_sdwa", 10) != 0)
    8558             :                 break;
    8559           0 :               Mnemonic = "v_cmpsx_eq_f32";     // "v_cmpsx_eq_f32_sdwa"
    8560           0 :               return;
    8561           0 :             case 'g':    // 2 strings to match.
    8562             :               switch (Mnemonic[9]) {
    8563             :               default: break;
    8564             :               case 'e':  // 1 string to match.
    8565           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8566             :                   break;
    8567           0 :                 Mnemonic = "v_cmpsx_ge_f32";   // "v_cmpsx_ge_f32_sdwa"
    8568           0 :                 return;
    8569             :               case 't':  // 1 string to match.
    8570           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8571             :                   break;
    8572           0 :                 Mnemonic = "v_cmpsx_gt_f32";   // "v_cmpsx_gt_f32_sdwa"
    8573           0 :                 return;
    8574             :               }
    8575             :               break;
    8576           0 :             case 'l':    // 3 strings to match.
    8577             :               switch (Mnemonic[9]) {
    8578             :               default: break;
    8579             :               case 'e':  // 1 string to match.
    8580           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8581             :                   break;
    8582           0 :                 Mnemonic = "v_cmpsx_le_f32";   // "v_cmpsx_le_f32_sdwa"
    8583           0 :                 return;
    8584             :               case 'g':  // 1 string to match.
    8585           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8586             :                   break;
    8587           0 :                 Mnemonic = "v_cmpsx_lg_f32";   // "v_cmpsx_lg_f32_sdwa"
    8588           0 :                 return;
    8589             :               case 't':  // 1 string to match.
    8590           0 :                 if (memcmp(Mnemonic.data()+10, "_f32_sdwa", 9) != 0)
    8591             :                   break;
    8592           0 :                 Mnemonic = "v_cmpsx_lt_f32";   // "v_cmpsx_lt_f32_sdwa"
    8593           0 :                 return;
    8594             :               }
    8595             :               break;
    8596             :             }
    8597             :             break;
    8598             :           }
    8599             :           break;
    8600           0 :         case 'x':        // 14 strings to match.
    8601           0 :           if (Mnemonic[6] != '_')
    8602             :             break;
    8603             :           switch (Mnemonic[7]) {
    8604             :           default: break;
    8605           0 :           case 'n':      // 12 strings to match.
    8606             :             switch (Mnemonic[8]) {
    8607             :             default: break;
    8608             :             case 'e':    // 2 strings to match.
    8609           0 :               if (memcmp(Mnemonic.data()+9, "q_f", 3) != 0)
    8610             :                 break;
    8611             :               switch (Mnemonic[12]) {
    8612             :               default: break;
    8613             :               case '1':  // 1 string to match.
    8614           0 :                 if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8615             :                   break;
    8616           0 :                 Mnemonic = "v_cmpx_neq_f16";   // "v_cmpx_neq_f16_sdwa"
    8617           0 :                 return;
    8618             :               case '3':  // 1 string to match.
    8619           0 :                 if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8620             :                   break;
    8621           0 :                 Mnemonic = "v_cmpx_neq_f32";   // "v_cmpx_neq_f32_sdwa"
    8622           0 :                 return;
    8623             :               }
    8624             :               break;
    8625           0 :             case 'g':    // 4 strings to match.
    8626             :               switch (Mnemonic[9]) {
    8627             :               default: break;
    8628             :               case 'e':  // 2 strings to match.
    8629           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8630             :                   break;
    8631             :                 switch (Mnemonic[12]) {
    8632             :                 default: break;
    8633             :                 case '1':        // 1 string to match.
    8634           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8635             :                     break;
    8636           0 :                   Mnemonic = "v_cmpx_nge_f16";         // "v_cmpx_nge_f16_sdwa"
    8637           0 :                   return;
    8638             :                 case '3':        // 1 string to match.
    8639           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8640             :                     break;
    8641           0 :                   Mnemonic = "v_cmpx_nge_f32";         // "v_cmpx_nge_f32_sdwa"
    8642           0 :                   return;
    8643             :                 }
    8644             :                 break;
    8645             :               case 't':  // 2 strings to match.
    8646           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8647             :                   break;
    8648             :                 switch (Mnemonic[12]) {
    8649             :                 default: break;
    8650             :                 case '1':        // 1 string to match.
    8651           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8652             :                     break;
    8653           0 :                   Mnemonic = "v_cmpx_ngt_f16";         // "v_cmpx_ngt_f16_sdwa"
    8654           0 :                   return;
    8655             :                 case '3':        // 1 string to match.
    8656           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8657             :                     break;
    8658           0 :                   Mnemonic = "v_cmpx_ngt_f32";         // "v_cmpx_ngt_f32_sdwa"
    8659           0 :                   return;
    8660             :                 }
    8661             :                 break;
    8662             :               }
    8663             :               break;
    8664           0 :             case 'l':    // 6 strings to match.
    8665             :               switch (Mnemonic[9]) {
    8666             :               default: break;
    8667             :               case 'e':  // 2 strings to match.
    8668           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8669             :                   break;
    8670             :                 switch (Mnemonic[12]) {
    8671             :                 default: break;
    8672             :                 case '1':        // 1 string to match.
    8673           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8674             :                     break;
    8675           0 :                   Mnemonic = "v_cmpx_nle_f16";         // "v_cmpx_nle_f16_sdwa"
    8676           0 :                   return;
    8677             :                 case '3':        // 1 string to match.
    8678           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8679             :                     break;
    8680           0 :                   Mnemonic = "v_cmpx_nle_f32";         // "v_cmpx_nle_f32_sdwa"
    8681           0 :                   return;
    8682             :                 }
    8683             :                 break;
    8684             :               case 'g':  // 2 strings to match.
    8685           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8686             :                   break;
    8687             :                 switch (Mnemonic[12]) {
    8688             :                 default: break;
    8689             :                 case '1':        // 1 string to match.
    8690           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8691             :                     break;
    8692           0 :                   Mnemonic = "v_cmpx_nlg_f16";         // "v_cmpx_nlg_f16_sdwa"
    8693           0 :                   return;
    8694             :                 case '3':        // 1 string to match.
    8695           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8696             :                     break;
    8697           0 :                   Mnemonic = "v_cmpx_nlg_f32";         // "v_cmpx_nlg_f32_sdwa"
    8698           0 :                   return;
    8699             :                 }
    8700             :                 break;
    8701             :               case 't':  // 2 strings to match.
    8702           0 :                 if (memcmp(Mnemonic.data()+10, "_f", 2) != 0)
    8703             :                   break;
    8704             :                 switch (Mnemonic[12]) {
    8705             :                 default: break;
    8706             :                 case '1':        // 1 string to match.
    8707           0 :                   if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8708             :                     break;
    8709           0 :                   Mnemonic = "v_cmpx_nlt_f16";         // "v_cmpx_nlt_f16_sdwa"
    8710           0 :                   return;
    8711             :                 case '3':        // 1 string to match.
    8712           0 :                   if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8713             :                     break;
    8714           0 :                   Mnemonic = "v_cmpx_nlt_f32";         // "v_cmpx_nlt_f32_sdwa"
    8715           0 :                   return;
    8716             :                 }
    8717             :                 break;
    8718             :               }
    8719             :               break;
    8720             :             }
    8721             :             break;
    8722             :           case 't':      // 2 strings to match.
    8723           0 :             if (memcmp(Mnemonic.data()+8, "ru_f", 4) != 0)
    8724             :               break;
    8725             :             switch (Mnemonic[12]) {
    8726             :             default: break;
    8727             :             case '1':    // 1 string to match.
    8728           0 :               if (memcmp(Mnemonic.data()+13, "6_sdwa", 6) != 0)
    8729             :                 break;
    8730           0 :               Mnemonic = "v_cmpx_tru_f16";     // "v_cmpx_tru_f16_sdwa"
    8731           0 :               return;
    8732             :             case '3':    // 1 string to match.
    8733           0 :               if (memcmp(Mnemonic.data()+13, "2_sdwa", 6) != 0)
    8734             :                 break;
    8735           0 :               Mnemonic = "v_cmpx_tru_f32";     // "v_cmpx_tru_f32_sdwa"
    8736           0 :               return;
    8737             :             }
    8738             :             break;
    8739             :           }
    8740             :           break;
    8741             :         }
    8742             :         break;
    8743             :       case 20:   // 14 strings to match.
    8744         133 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    8745             :           break;
    8746             :         switch (Mnemonic[2]) {
    8747             :         default: break;
    8748             :         case 'c':        // 9 strings to match.
    8749          15 :           if (memcmp(Mnemonic.data()+3, "mp", 2) != 0)
    8750             :             break;
    8751             :           switch (Mnemonic[5]) {
    8752             :           default: break;
    8753             :           case '_':      // 2 strings to match.
    8754           0 :             if (memcmp(Mnemonic.data()+6, "class_f", 7) != 0)
    8755             :               break;
    8756             :             switch (Mnemonic[13]) {
    8757             :             default: break;
    8758             :             case '1':    // 1 string to match.
    8759           0 :               if (memcmp(Mnemonic.data()+14, "6_sdwa", 6) != 0)
    8760             :                 break;
    8761           0 :               Mnemonic = "v_cmp_class_f16";    // "v_cmp_class_f16_sdwa"
    8762           0 :               return;
    8763             :             case '3':    // 1 string to match.
    8764           0 :               if (memcmp(Mnemonic.data()+14, "2_sdwa", 6) != 0)
    8765             :                 break;
    8766           0 :               Mnemonic = "v_cmp_class_f32";    // "v_cmp_class_f32_sdwa"
    8767           0 :               return;
    8768             :             }
    8769             :             break;
    8770             :           case 's':      // 7 strings to match.
    8771           0 :             if (memcmp(Mnemonic.data()+6, "x_", 2) != 0)
    8772             :               break;
    8773             :             switch (Mnemonic[8]) {
    8774             :             default: break;
    8775           0 :             case 'n':    // 6 strings to match.
    8776             :               switch (Mnemonic[9]) {
    8777             :               default: break;
    8778             :               case 'e':  // 1 string to match.
    8779           0 :                 if (memcmp(Mnemonic.data()+10, "q_f32_sdwa", 10) != 0)
    8780             :                   break;
    8781           0 :                 Mnemonic = "v_cmpsx_neq_f32";  // "v_cmpsx_neq_f32_sdwa"
    8782           0 :                 return;
    8783           0 :               case 'g':  // 2 strings to match.
    8784             :                 switch (Mnemonic[10]) {
    8785             :                 default: break;
    8786             :                 case 'e':        // 1 string to match.
    8787           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8788             :                     break;
    8789           0 :                   Mnemonic = "v_cmpsx_nge_f32";        // "v_cmpsx_nge_f32_sdwa"
    8790           0 :                   return;
    8791             :                 case 't':        // 1 string to match.
    8792           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8793             :                     break;
    8794           0 :                   Mnemonic = "v_cmpsx_ngt_f32";        // "v_cmpsx_ngt_f32_sdwa"
    8795           0 :                   return;
    8796             :                 }
    8797             :                 break;
    8798           0 :               case 'l':  // 3 strings to match.
    8799             :                 switch (Mnemonic[10]) {
    8800             :                 default: break;
    8801             :                 case 'e':        // 1 string to match.
    8802           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8803             :                     break;
    8804           0 :                   Mnemonic = "v_cmpsx_nle_f32";        // "v_cmpsx_nle_f32_sdwa"
    8805           0 :                   return;
    8806             :                 case 'g':        // 1 string to match.
    8807           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8808             :                     break;
    8809           0 :                   Mnemonic = "v_cmpsx_nlg_f32";        // "v_cmpsx_nlg_f32_sdwa"
    8810           0 :                   return;
    8811             :                 case 't':        // 1 string to match.
    8812           0 :                   if (memcmp(Mnemonic.data()+11, "_f32_sdwa", 9) != 0)
    8813             :                     break;
    8814           0 :                   Mnemonic = "v_cmpsx_nlt_f32";        // "v_cmpsx_nlt_f32_sdwa"
    8815           0 :                   return;
    8816             :                 }
    8817             :                 break;
    8818             :               }
    8819             :               break;
    8820             :             case 't':    // 1 string to match.
    8821           0 :               if (memcmp(Mnemonic.data()+9, "ru_f32_sdwa", 11) != 0)
    8822             :                 break;
    8823           0 :               Mnemonic = "v_cmpsx_tru_f32";    // "v_cmpsx_tru_f32_sdwa"
    8824           0 :               return;
    8825             :             }
    8826             :             break;
    8827             :           }
    8828             :           break;
    8829             :         case 'l':        // 1 string to match.
    8830           0 :           if (memcmp(Mnemonic.data()+3, "og_clamp_f32_sdwa", 17) != 0)
    8831             :             break;
    8832           0 :           Mnemonic = "v_log_clamp_f32";        // "v_log_clamp_f32_sdwa"
    8833           0 :           return;
    8834           0 :         case 'r':        // 3 strings to match.
    8835             :           switch (Mnemonic[3]) {
    8836             :           default: break;
    8837             :           case 'c':      // 2 strings to match.
    8838           0 :             if (memcmp(Mnemonic.data()+4, "p_", 2) != 0)
    8839             :               break;
    8840             :             switch (Mnemonic[6]) {
    8841             :             default: break;
    8842             :             case 'c':    // 1 string to match.
    8843           0 :               if (memcmp(Mnemonic.data()+7, "lamp_f32_sdwa", 13) != 0)
    8844             :                 break;
    8845           0 :               Mnemonic = "v_rcp_clamp_f32";    // "v_rcp_clamp_f32_sdwa"
    8846           0 :               return;
    8847             :             case 'i':    // 1 string to match.
    8848           0 :               if (memcmp(Mnemonic.data()+7, "flag_f32_sdwa", 13) != 0)
    8849             :                 break;
    8850           0 :               Mnemonic = "v_rcp_iflag_f32";    // "v_rcp_iflag_f32_sdwa"
    8851           0 :               return;
    8852             :             }
    8853             :             break;
    8854             :           case 's':      // 1 string to match.
    8855           0 :             if (memcmp(Mnemonic.data()+4, "q_clamp_f32_sdwa", 16) != 0)
    8856             :               break;
    8857           0 :             Mnemonic = "v_rsq_clamp_f32";      // "v_rsq_clamp_f32_sdwa"
    8858           0 :             return;
    8859             :           }
    8860             :           break;
    8861             :         case 's':        // 1 string to match.
    8862           0 :           if (memcmp(Mnemonic.data()+3, "at_pk_u8_i16_sdwa", 17) != 0)
    8863             :             break;
    8864           0 :           Mnemonic = "v_sat_pk_u8_i16";        // "v_sat_pk_u8_i16_sdwa"
    8865           0 :           return;
    8866             :         }
    8867             :         break;
    8868             :       case 21:   // 19 strings to match.
    8869          37 :         if (memcmp(Mnemonic.data()+0, "v_", 2) != 0)
    8870             :           break;
    8871             :         switch (Mnemonic[2]) {
    8872             :         default: break;
    8873           0 :         case 'c':        // 7 strings to match.
    8874             :           switch (Mnemonic[3]) {
    8875             :           default: break;
    8876             :           case 'm':      // 2 strings to match.
    8877           0 :             if (memcmp(Mnemonic.data()+4, "px_class_f", 10) != 0)
    8878             :               break;
    8879             :             switch (Mnemonic[14]) {
    8880             :             default: break;
    8881             :             case '1':    // 1 string to match.
    8882           0 :               if (memcmp(Mnemonic.data()+15, "6_sdwa", 6) != 0)
    8883             :                 break;
    8884           0 :               Mnemonic = "v_cmpx_class_f16";   // "v_cmpx_class_f16_sdwa"
    8885           0 :               return;
    8886             :             case '3':    // 1 string to match.
    8887           0 :               if (memcmp(Mnemonic.data()+15, "2_sdwa", 6) != 0)
    8888             :                 break;
    8889           0 :               Mnemonic = "v_cmpx_class_f32";   // "v_cmpx_class_f32_sdwa"
    8890           0 :               return;
    8891             :             }
    8892             :             break;
    8893             :           case 'v':      // 5 strings to match.
    8894           0 :             if (memcmp(Mnemonic.data()+4, "t_", 2) != 0)
    8895             :               break;
    8896             :             switch (Mnemonic[6]) {
    8897             :             default: break;
    8898             :             case 'f':    // 4 strings to match.
    8899           0 :               if (memcmp(Mnemonic.data()+7, "32_ubyte", 8) != 0)
    8900             :                 break;
    8901             :               switch (Mnemonic[15]) {
    8902             :               default: break;
    8903             :               case '0':  // 1 string to match.
    8904           0 :                 if (memcmp(Mnemonic.data()+16, "_sdwa", 5) != 0)
    8905             :                   break;
    8906           0 :                 Mnemonic = "v_cvt_f32_ubyte0";         // "v_cvt_f32_ubyte0_sdwa"
    8907           0 :                 return;
    8908             :               case '1':  // 1 string to match.
    8909           0 :                 if (memcmp(Mnemonic.data()+16, "_sdwa", 5) != 0)
    8910             :                   break;
    8911           0 :                 Mnemonic = "v_cvt_f32_ubyte1";         // "v_cvt_f32_ubyte1_sdwa"
    8912           0 :                 return;
    8913             :               case '2':  // 1 string to match.
    8914           0 :                 if (memcmp(Mnemonic.data()+16, "_sdwa", 5) != 0)
    8915             :                   break;
    8916           0 :                 Mnemonic = "v_cvt_f32_ubyte2";         // "v_cvt_f32_ubyte2_sdwa"
    8917           0 :                 return;
    8918             :               case '3':  // 1 string to match.
    8919           0 :                 if (memcmp(Mnemonic.data()+16, "_sdwa", 5) != 0)
    8920             :                   break;
    8921           0 :                 Mnemonic = "v_cvt_f32_ubyte3";         // "v_cvt_f32_ubyte3_sdwa"
    8922           0 :                 return;
    8923             :               }
    8924             :               break;
    8925             :             case 'o':    // 1 string to match.
    8926           0 :               if (memcmp(Mnemonic.data()+7, "ff_f32_i4_sdwa", 14) != 0)
    8927             :                 break;
    8928           0 :               Mnemonic = "v_cvt_off_f32_i4";   // "v_cvt_off_f32_i4_sdwa"
    8929           0 :               return;
    8930             :             }
    8931             :             break;
    8932             :           }
    8933             :           break;
    8934             :         case 'e':        // 1 string to match.
    8935           0 :           if (memcmp(Mnemonic.data()+3, "xp_legacy_f32_sdwa", 18) != 0)
    8936             :             break;
    8937           0 :           Mnemonic = "v_exp_legacy_f32";       // "v_exp_legacy_f32_sdwa"
    8938           0 :           return;
    8939             :         case 'f':        // 2 strings to match.
    8940           0 :           if (memcmp(Mnemonic.data()+3, "rexp_mant_f", 11) != 0)
    8941             :             break;
    8942             :           switch (Mnemonic[14]) {
    8943             :           default: break;
    8944             :           case '1':      // 1 string to match.
    8945           0 :             if (memcmp(Mnemonic.data()+15, "6_sdwa", 6) != 0)
    8946             :               break;
    8947           0 :             Mnemonic = "v_frexp_mant_f16";     // "v_frexp_mant_f16_sdwa"
    8948           0 :             return;
    8949             :           case '3':      // 1 string to match.
    8950           0 :             if (memcmp(Mnemonic.data()+15, "2_sdwa", 6) != 0)
    8951             :               break;
    8952           0 :             Mnemonic = "v_frexp_mant_f32";     // "v_frexp_mant_f32_sdwa"
    8953           0 :             return;
    8954             :           }
    8955             :           break;
    8956             :         case 'l':        // 1 string to match.
    8957           0 :           if (memcmp(Mnemonic.data()+3, "og_legacy_f32_sdwa", 18) != 0)
    8958             :             break;
    8959           0 :           Mnemonic = "v_log_legacy_f32";       // "v_log_legacy_f32_sdwa"
    8960           0 :           return;
    8961           0 :         case 'm':        // 6 strings to match.
    8962             :           switch (Mnemonic[3]) {
    8963             :           default: break;
    8964           0 :           case 'a':      // 2 strings to match.
    8965             :             switch (Mnemonic[4]) {
    8966             :             default: break;
    8967             :             case 'c':    // 1 string to match.
    8968           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_sdwa", 16) != 0)
    8969             :                 break;
    8970           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_mac_legacy_f32_sdwa"
    8971           0 :                 Mnemonic = "v_mac_legacy_f32";
    8972             :               return;
    8973             :             case 'x':    // 1 string to match.
    8974           0 :               if (memcmp(Mnemonic.data()+5, "_legacy_f32_sdwa", 16) != 0)
    8975             :                 break;
    8976           0 :               if ((Features & Feature_isSICI) == Feature_isSICI)     // "v_max_legacy_f32_sdwa"
    8977           0 :                 Mnemonic = "v_max_legacy_f32";
    8978             :               return;
    8979             :             }
    8980             :             break;
    8981             :           case 'i':      // 1 string to match.
    8982           0 :             if (memcmp(Mnemonic.data()+4, "n_legacy_f32_sdwa", 17) != 0)
    8983             :               break;
    8984           0 :             if ((Features & Feature_isSICI) == Feature_isSICI)       // "v_min_legacy_f32_sdwa"
    8985           0 :               Mnemonic = "v_min_legacy_f32";
    8986             :             return;
    8987             :           case 'u':      // 3 strings to match.
    8988           0 :             if (memcmp(Mnemonic.data()+4, "l_", 2) != 0)
    8989             :               break;
    8990             :             switch (Mnemonic[6]) {
    8991             :             default: break;
    8992             :             case 'h':    // 2 strings to match.
    8993           0 :               if (memcmp(Mnemonic.data()+7, "i_", 2) != 0)
    8994             :                 break;
    8995             :               switch (Mnemonic[9]) {
    8996             :               default: break;
    8997             :               case 'i':  // 1 string to match.
    8998           0 :                 if (memcmp(Mnemonic.data()+10, "32_i24_sdwa", 11) != 0)
    8999             :                   break;
    9000           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_i32_i24_sdwa"
    9001           0 :                   Mnemonic = "v_mul_hi_i32_i24";
    9002             :                 return;
    9003             :               case 'u':  // 1 string to match.
    9004           0 :                 if (memcmp(Mnemonic.data()+10, "32_u24_sdwa", 11) != 0)
    9005             :                   break;
    9006           0 :                 if ((Features & Feature_isGCN) == Feature_isGCN)     // "v_mul_hi_u32_u24_sdwa"
    9007           0 :                   Mnemonic = "v_mul_hi_u32_u24";
    9008             :                 return;
    9009             :               }
    9010             :               break;
    9011             :             case 'l':    // 1 string to match.
    9012           0 :               if (memcmp(Mnemonic.data()+7, "egacy_f32_sdwa", 14) != 0)
    9013             :                 break;
    9014           0 :               if ((Features & Feature_isGCN) == Feature_isGCN)       // "v_mul_legacy_f32_sdwa"
    9015           0 :                 Mnemonic = "v_mul_legacy_f32";
    9016             :               return;
    9017             :             }
    9018             :             break;
    9019             :           }
    9020             :           break;
    9021           0 :         case 'r':        // 2 strings to match.
    9022             :           switch (Mnemonic[3]) {
    9023             :           default: break;
    9024             :           case 'c':      // 1 string to match.
    9025           0 :             if (memcmp(Mnemonic.data()+4, "p_legacy_f32_sdwa", 17) != 0)
    9026             :               break;
    9027           0 :             Mnemonic = "v_rcp_legacy_f32";     // "v_rcp_legacy_f32_sdwa"
    9028           0 :             return;
    9029             :           case 's':      // 1 string to match.
    9030           0 :             if (memcmp(Mnemonic.data()+4, "q_legacy_f32_sdwa", 17) != 0)
    9031             :               break;
    9032           0 :             Mnemonic = "v_rsq_legacy_f32";     // "v_rsq_legacy_f32_sdwa"
    9033           0 :             return;
    9034             :           }
    9035             :           break;
    9036             :         }
    9037             :         break;
    9038             :       case 22:   // 2 strings to match.
    9039         141 :         if (memcmp(Mnemonic.data()+0, "v_cvt_", 6) != 0)
    9040             :           break;
    9041             :         switch (Mnemonic[6]) {
    9042             :         default: break;
    9043             :         case 'f':        // 1 string to match.
    9044           0 :           if (memcmp(Mnemonic.data()+7, "lr_i32_f32_sdwa", 15) != 0)
    9045             :             break;
    9046           0 :           Mnemonic = "v_cvt_flr_i32_f32";      // "v_cvt_flr_i32_f32_sdwa"
    9047           0 :           return;
    9048             :         case 'r':        // 1 string to match.
    9049           0 :           if (memcmp(Mnemonic.data()+7, "pi_i32_f32_sdwa", 15) != 0)
    9050             :             break;
    9051           0 :           Mnemonic = "v_cvt_rpi_i32_f32";      // "v_cvt_rpi_i32_f32_sdwa"
    9052           0 :           return;
    9053             :         }
    9054             :         break;
    9055             :       case 23:   // 2 strings to match.
    9056          80 :         if (memcmp(Mnemonic.data()+0, "v_cvt_norm_", 11) != 0)
    9057             :           break;
    9058             :         switch (Mnemonic[11]) {
    9059             :         default: break;
    9060             :         case 'i':        // 1 string to match.
    9061           0 :           if (memcmp(Mnemonic.data()+12, "16_f16_sdwa", 11) != 0)
    9062             :             break;
    9063           0 :           Mnemonic = "v_cvt_norm_i16_f16";     // "v_cvt_norm_i16_f16_sdwa"
    9064           0 :           return;
    9065             :         case 'u':        // 1 string to match.
    9066           0 :           if (memcmp(Mnemonic.data()+12, "16_f16_sdwa", 11) != 0)
    9067             :             break;
    9068           0 :           Mnemonic = "v_cvt_norm_u16_f16";     // "v_cvt_norm_u16_f16_sdwa"
    9069           0 :           return;
    9070             :         }
    9071             :         break;
    9072             :       case 24:   // 2 strings to match.
    9073          15 :         if (memcmp(Mnemonic.data()+0, "v_frexp_exp_i", 13) != 0)
    9074             :           break;
    9075             :         switch (Mnemonic[13]) {
    9076             :         default: break;
    9077             :         case '1':        // 1 string to match.
    9078           0 :           if (memcmp(Mnemonic.data()+14, "6_f16_sdwa", 10) != 0)
    9079             :             break;
    9080           0 :           Mnemonic = "v_frexp_exp_i16_f16";    // "v_frexp_exp_i16_f16_sdwa"
    9081           0 :           return;
    9082             :         case '3':        // 1 string to match.
    9083           0 :           if (memcmp(Mnemonic.data()+14, "2_f32_sdwa", 10) != 0)
    9084             :             break;
    9085           0 :           Mnemonic = "v_frexp_exp_i32_f32";    // "v_frexp_exp_i32_f32_sdwa"
    9086           0 :           return;
    9087             :         }
    9088             :         break;
    9089             :       case 31:   // 1 string to match.
    9090           0 :         if (memcmp(Mnemonic.data()+0, "v_screen_partition_4se_b32_sdwa", 31) != 0)
    9091             :           break;
    9092           0 :         Mnemonic = "v_screen_partition_4se_b32";       // "v_screen_partition_4se_b32_sdwa"
    9093           0 :         return;
    9094             :       }
    9095             :     break;
    9096             :     case 3:
    9097             :     break;
    9098             :     case 4:
    9099             :     break;
    9100             :   }
    9101             : }
    9102             : 
    9103             : enum {
    9104             :   Tie0_1_1,
    9105             :   Tie1_2_2,
    9106             : };
    9107             : 
    9108             : static const uint8_t TiedAsmOperandTable[][3] = {
    9109             :   /* Tie0_1_1 */ { 0, 1, 1 },
    9110             :   /* Tie1_2_2 */ { 1, 2, 2 },
    9111             : };
    9112             : 
    9113             : namespace {
    9114             : enum OperatorConversionKind {
    9115             :   CVT_Done,
    9116             :   CVT_Reg,
    9117             :   CVT_Tied,
    9118             :   CVT_cvtMubufAtomic,
    9119             :   CVT_cvtMubufAtomicReturn,
    9120             :   CVT_cvtMubufLds,
    9121             :   CVT_cvtMubuf,
    9122             :   CVT_cvtDS,
    9123             :   CVT_cvtDSGds,
    9124             :   CVT_cvtDSOffset01,
    9125             :   CVT_cvtExp,
    9126             :   CVT_95_Reg,
    9127             :   CVT_95_addImmOperands_95_defaultOffsetU12,
    9128             :   CVT_95_addImmOperands_95_defaultSLC,
    9129             :   CVT_95_addImmOperands_95_defaultGLC,
    9130             :   CVT_imm_95_0,
    9131             :   CVT_95_addImmOperands_95_defaultOffsetS13,
    9132             :   CVT_cvtMIMGAtomic,
    9133             :   CVT_cvtMIMG,
    9134             :   CVT_95_addRegOrImmOperands,
    9135             :   CVT_95_addImmOperands,
    9136             :   CVT_95_addImmOperands_95_defaultSMRDOffset20,
    9137             :   CVT_95_addSoppBrTargetOperands,
    9138             :   CVT_95_addImmOperands_95_defaultSMRDOffset8,
    9139             :   CVT_95_addImmOperands_95_defaultSMRDLiteralOffset,
    9140             :   CVT_cvtMtbuf,
    9141             :   CVT_95_addImmOperands_95_defaultRowMask,
    9142             :   CVT_95_addImmOperands_95_defaultBankMask,
    9143             :   CVT_95_addImmOperands_95_defaultBoundCtrl,
    9144             :   CVT_cvtSdwaVOP2b,
    9145             :   CVT_cvtVOP3,
    9146             :   CVT_cvtDPP,
    9147             :   CVT_cvtSdwaVOP2,
    9148             :   CVT_cvtVOP3OpSel,
    9149             :   CVT_cvtSdwaVOP1,
    9150             :   CVT_cvtSdwaVOPC,
    9151             :   CVT_cvtVOP3P,
    9152             :   CVT_cvtVOP3Interp,
    9153             :   CVT_95_addKImmFP16Operands,
    9154             :   CVT_95_addKImmFP32Operands,
    9155             :   CVT_NUM_CONVERTERS
    9156             : };
    9157             : 
    9158             : enum InstructionConversionKind {
    9159             :   ConvertCustom_cvtMubufAtomic,
    9160             :   ConvertCustom_cvtMubufAtomicReturn,
    9161             :   ConvertCustom_cvtMubufLds,
    9162             :   ConvertCustom_cvtMubuf,
    9163             :   Convert_NoOperands,
    9164             :   ConvertCustom_cvtDS,
    9165             :   ConvertCustom_cvtDSGds,
    9166             :   ConvertCustom_cvtDSOffset01,
    9167             :   ConvertCustom_cvtExp,
    9168             :   Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmSLC1_3,
    9169             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetU121_3__ImmSLC1_5,
    9170             :   Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmGLC1_3__ImmSLC1_4,
    9171             :   Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmGLC1_3__ImmSLC1_4__imm_95_0,
    9172             :   Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmSLC1_4,
    9173             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmSLC1_4,
    9174             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_4__ImmSLC1_6,
    9175             :   Convert__Reg1_0__Reg1_1__Reg1_2__Reg1_3__ImmOffsetS131_4__ImmSLC1_6,
    9176             :   Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9177             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9178             :   Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5__imm_95_0,
    9179             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5__imm_95_0,
    9180             :   ConvertCustom_cvtMIMGAtomic,
    9181             :   ConvertCustom_cvtMIMG,
    9182             :   Convert__Reg1_0__SSrcB321_1,
    9183             :   Convert__Reg1_0__SSrcB321_1__SSrcB321_2,
    9184             :   Convert__Reg1_0__Tie0_1_1__S16Imm1_1,
    9185             :   Convert__Reg1_0__SSrcB641_1__SSrcB641_2,
    9186             :   Convert__Reg1_0__SSrcB641_1,
    9187             :   Convert__Reg1_0__SSrcB641_1__SSrcB321_2,
    9188             :   Convert__Imm1_0__Reg1_1__Reg1_2,
    9189             :   Convert__Imm1_0__Reg1_1__ImmSMRDOffset201_2,
    9190             :   Convert__Reg1_0__Reg1_1__Reg1_2,
    9191             :   Convert__Reg1_0__Reg1_1__ImmSMRDOffset201_2,
    9192             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2,
    9193             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__ImmSMRDOffset201_2,
    9194             :   Convert__SSrcB321_0__SSrcB321_1,
    9195             :   Convert__SSrcB641_0__SSrcB321_1,
    9196             :   Convert__SoppBrTarget1_0,
    9197             :   Convert__Reg1_0__Reg1_1__Reg1_2__ImmGLC1_3,
    9198             :   Convert__Reg1_0__Reg1_1__ImmSMRDOffset81_2__ImmGLC1_3,
    9199             :   Convert__Reg1_0__Reg1_1__ImmSMRDOffset201_2__ImmGLC1_3,
    9200             :   Convert__Reg1_0__Reg1_1__ImmSMRDLiteralOffset1_2__ImmGLC1_3,
    9201             :   Convert__Reg1_0__S16Imm1_1,
    9202             :   Convert__SCSrcB641_0__SCSrcB641_1,
    9203             :   Convert__Reg1_0,
    9204             :   Convert__SSrcB641_0__SSrcB641_1,
    9205             :   Convert__Reg1_0__U16Imm1_1,
    9206             :   Convert__Reg1_0__Reg1_1,
    9207             :   Convert__Reg1_0__ImmSMRDOffset201_1,
    9208             :   Convert__Imm1_0,
    9209             :   Convert__Reg1_0__ImmHwreg1_1,
    9210             :   Convert__SendMsg1_0,
    9211             :   Convert__SSrcB321_0,
    9212             :   Convert__GPRIdxMode1_0,
    9213             :   Convert__SSrcB321_0__GPRIdxMode1_1,
    9214             :   Convert__Reg1_1__ImmHwreg1_0,
    9215             :   Convert__Imm1_1__ImmHwreg1_0,
    9216             :   Convert__SWaitCnt1_0,
    9217             :   Convert__Reg1_0__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9218             :   Convert__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9219             :   Convert__Reg1_1__Reg1_0__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5,
    9220             :   ConvertCustom_cvtMtbuf,
    9221             :   Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2__VCSrcB321_3,
    9222             :   Convert__Reg1_0__VSrcB321_2__Reg1_3,
    9223             :   Convert__Reg1_0__Reg1_1__VCSrcB321_2__VCSrcB321_3,
    9224             :   Convert__Reg1_0__Tie0_1_1__Reg1_2__Reg1_3__ImmDPPCtrl1_4__ImmRowMask1_5__ImmBankMask1_6__ImmBoundCtrl1_7,
    9225             :   ConvertCustom_cvtSdwaVOP2b,
    9226             :   Convert__Reg1_0__VSrcF161_1__Reg1_2,
    9227             :   ConvertCustom_cvtVOP3,
    9228             :   ConvertCustom_cvtDPP,
    9229             :   ConvertCustom_cvtSdwaVOP2,
    9230             :   Convert__Reg1_0__VSrcF321_1__Reg1_2,
    9231             :   ConvertCustom_cvtVOP3OpSel,
    9232             :   Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2,
    9233             :   Convert__Reg1_0__VSrcB161_1__Reg1_2,
    9234             :   Convert__Reg1_0__VCSrcB161_1__VCSrcB161_2,
    9235             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2__ImmDPPCtrl1_3__ImmRowMask1_4__ImmBankMask1_5__ImmBoundCtrl1_6,
    9236             :   Convert__Reg1_0__VSrcB321_1__Reg1_2,
    9237             :   Convert__Reg1_0__VCSrcB321_2__Reg1_3,
    9238             :   Convert__Reg1_0__Reg1_1__VCSrcB321_2__VCSrcB321_3__Reg1_4,
    9239             :   Convert__Reg1_0__Tie0_1_1__Reg1_2__Reg1_3__ImmDPPCtrl1_5__ImmRowMask1_6__ImmBankMask1_7__ImmBoundCtrl1_8,
    9240             :   Convert__Reg1_0__VCSrcB641_1__VCSrcB321_2,
    9241             :   Convert__Reg1_0__VCSrcB321_1__VCSrcB641_2,
    9242             :   Convert__Reg1_0__VSrcB321_1,
    9243             :   Convert__Reg1_0__VCSrcB321_1,
    9244             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__ImmDPPCtrl1_2__ImmRowMask1_3__ImmBankMask1_4__ImmBoundCtrl1_5,
    9245             :   ConvertCustom_cvtSdwaVOP1,
    9246             :   Convert__Reg1_0__VSrcF161_1,
    9247             :   Convert__Reg1_0__VSrcF321_1,
    9248             :   Convert__Reg1_0__VSrcF641_1,
    9249             :   Convert__VSrcF161_1__Reg1_2,
    9250             :   ConvertCustom_cvtSdwaVOPC,
    9251             :   Convert__VSrcF321_1__Reg1_2,
    9252             :   Convert__VSrcF641_1__Reg1_2,
    9253             :   Convert__VSrcB161_1__Reg1_2,
    9254             :   Convert__VSrcB321_1__Reg1_2,
    9255             :   Convert__VSrcB641_1__Reg1_2,
    9256             :   Convert__Reg1_0__VCSrcB641_1__VCSrcB641_2,
    9257             :   Convert__Reg1_0__VCSrcB321_1__Reg1_2,
    9258             :   Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2__Reg1_3,
    9259             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2__ImmDPPCtrl1_4__ImmRowMask1_5__ImmBankMask1_6__ImmBoundCtrl1_7,
    9260             :   Convert__Reg1_0__VSrcB161_1,
    9261             :   Convert__Reg1_0__imm_95_0__VCSrcF321_1__imm_95_0__VCSrcF321_2__imm_95_0,
    9262             :   Convert__Reg1_0__imm_95_0__VCSrcF321_1__imm_95_0__VCSrcF321_2__imm_95_0__imm_95_0,
    9263             :   Convert__Reg1_0__Reg1_1__VCSrcF321_2__VCSrcF321_3__VCSrcF321_4,
    9264             :   Convert__Reg1_0__Reg1_1__VCSrcF641_2__VCSrcF641_3__VCSrcF641_4,
    9265             :   ConvertCustom_cvtVOP3P,
    9266             :   Convert__Reg1_0__VSrcF321_1__Reg1_2__Tie0_1_1,
    9267             :   Convert__Reg1_0__InterpSlot1_1__Attr1_2__AttrChan1_3,
    9268             :   ConvertCustom_cvtVOP3Interp,
    9269             :   Convert__Reg1_0__Reg1_1__Attr1_2__AttrChan1_3,
    9270             :   Convert__Reg1_0__Tie0_1_1__Reg1_1__Attr1_2__AttrChan1_3,
    9271             :   Convert__Reg1_0__VSrcF161_1__Reg1_2__Tie0_1_1,
    9272             :   Convert__Reg1_0__VCSrcF321_1__Reg1_2__KImmFP161_3,
    9273             :   Convert__Reg1_0__VCSrcF321_1__Reg1_2__KImmFP321_3,
    9274             :   Convert__Reg1_0__VCSrcF321_1__KImmFP161_2__Reg1_3,
    9275             :   Convert__Reg1_0__VCSrcF321_1__KImmFP321_2__Reg1_3,
    9276             :   Convert__ImmDPPCtrl1_0__ImmRowMask1_1__ImmBankMask1_2__ImmBoundCtrl1_3,
    9277             :   Convert__Reg1_0__Reg1_1__SCSrcB321_2,
    9278             :   Convert__Reg1_0__Reg1_1__Tie1_2_2__Tie0_1_1,
    9279             :   Convert__Reg1_0__SSrcB321_1__SCSrcB321_2__Tie0_1_1,
    9280             :   Convert__Reg1_0__SCSrcB321_1__SCSrcB321_2__Tie0_1_1,
    9281             :   CVT_NUM_SIGNATURES
    9282             : };
    9283             : 
    9284             : } // end anonymous namespace
    9285             : 
    9286             : static const uint8_t ConversionTable[CVT_NUM_SIGNATURES][17] = {
    9287             :   // ConvertCustom_cvtMubufAtomic
    9288             :   { CVT_cvtMubufAtomic, 0, CVT_Done },
    9289             :   // ConvertCustom_cvtMubufAtomicReturn
    9290             :   { CVT_cvtMubufAtomicReturn, 0, CVT_Done },
    9291             :   // ConvertCustom_cvtMubufLds
    9292             :   { CVT_cvtMubufLds, 0, CVT_Done },
    9293             :   // ConvertCustom_cvtMubuf
    9294             :   { CVT_cvtMubuf, 0, CVT_Done },
    9295             :   // Convert_NoOperands
    9296             :   { CVT_Done },
    9297             :   // ConvertCustom_cvtDS
    9298             :   { CVT_cvtDS, 0, CVT_Done },
    9299             :   // ConvertCustom_cvtDSGds
    9300             :   { CVT_cvtDSGds, 0, CVT_Done },
    9301             :   // ConvertCustom_cvtDSOffset01
    9302             :   { CVT_cvtDSOffset01, 0, CVT_Done },
    9303             :   // ConvertCustom_cvtExp
    9304             :   { CVT_cvtExp, 0, CVT_Done },
    9305             :   // Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmSLC1_3
    9306             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultOffsetU12, 3, CVT_95_addImmOperands_95_defaultSLC, 4, CVT_Done },
    9307             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetU121_3__ImmSLC1_5
    9308             :   { 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 },
    9309             :   // Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmGLC1_3__ImmSLC1_4
    9310             :   { 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 },
    9311             :   // Convert__Reg1_0__Reg1_1__ImmOffsetU121_2__ImmGLC1_3__ImmSLC1_4__imm_95_0
    9312             :   { 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 },
    9313             :   // Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmSLC1_4
    9314             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultOffsetS13, 4, CVT_95_addImmOperands_95_defaultSLC, 5, CVT_Done },
    9315             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmSLC1_4
    9316             :   { 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 },
    9317             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_4__ImmSLC1_6
    9318             :   { 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 },
    9319             :   // Convert__Reg1_0__Reg1_1__Reg1_2__Reg1_3__ImmOffsetS131_4__ImmSLC1_6
    9320             :   { 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 },
    9321             :   // Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    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_Done },
    9323             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    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_Done },
    9325             :   // Convert__Reg1_0__Reg1_1__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5__imm_95_0
    9326             :   { 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 },
    9327             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5__imm_95_0
    9328             :   { 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 },
    9329             :   // ConvertCustom_cvtMIMGAtomic
    9330             :   { CVT_cvtMIMGAtomic, 0, CVT_Done },
    9331             :   // ConvertCustom_cvtMIMG
    9332             :   { CVT_cvtMIMG, 0, CVT_Done },
    9333             :   // Convert__Reg1_0__SSrcB321_1
    9334             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9335             :   // Convert__Reg1_0__SSrcB321_1__SSrcB321_2
    9336             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9337             :   // Convert__Reg1_0__Tie0_1_1__S16Imm1_1
    9338             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_addImmOperands, 2, CVT_Done },
    9339             :   // Convert__Reg1_0__SSrcB641_1__SSrcB641_2
    9340             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9341             :   // Convert__Reg1_0__SSrcB641_1
    9342             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9343             :   // Convert__Reg1_0__SSrcB641_1__SSrcB321_2
    9344             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9345             :   // Convert__Imm1_0__Reg1_1__Reg1_2
    9346             :   { CVT_95_addImmOperands, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_Done },
    9347             :   // Convert__Imm1_0__Reg1_1__ImmSMRDOffset201_2
    9348             :   { CVT_95_addImmOperands, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset20, 3, CVT_Done },
    9349             :   // Convert__Reg1_0__Reg1_1__Reg1_2
    9350             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_Done },
    9351             :   // Convert__Reg1_0__Reg1_1__ImmSMRDOffset201_2
    9352             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset20, 3, CVT_Done },
    9353             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2
    9354             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_Done },
    9355             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__ImmSMRDOffset201_2
    9356             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset20, 3, CVT_Done },
    9357             :   // Convert__SSrcB321_0__SSrcB321_1
    9358             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9359             :   // Convert__SSrcB641_0__SSrcB321_1
    9360             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9361             :   // Convert__SoppBrTarget1_0
    9362             :   { CVT_95_addSoppBrTargetOperands, 1, CVT_Done },
    9363             :   // Convert__Reg1_0__Reg1_1__Reg1_2__ImmGLC1_3
    9364             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_Reg, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_Done },
    9365             :   // Convert__Reg1_0__Reg1_1__ImmSMRDOffset81_2__ImmGLC1_3
    9366             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset8, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_Done },
    9367             :   // Convert__Reg1_0__Reg1_1__ImmSMRDOffset201_2__ImmGLC1_3
    9368             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDOffset20, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_Done },
    9369             :   // Convert__Reg1_0__Reg1_1__ImmSMRDLiteralOffset1_2__ImmGLC1_3
    9370             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands_95_defaultSMRDLiteralOffset, 3, CVT_95_addImmOperands_95_defaultGLC, 4, CVT_Done },
    9371             :   // Convert__Reg1_0__S16Imm1_1
    9372             :   { CVT_95_Reg, 1, CVT_95_addImmOperands, 2, CVT_Done },
    9373             :   // Convert__SCSrcB641_0__SCSrcB641_1
    9374             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9375             :   // Convert__Reg1_0
    9376             :   { CVT_95_Reg, 1, CVT_Done },
    9377             :   // Convert__SSrcB641_0__SSrcB641_1
    9378             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9379             :   // Convert__Reg1_0__U16Imm1_1
    9380             :   { CVT_95_Reg, 1, CVT_95_addImmOperands, 2, CVT_Done },
    9381             :   // Convert__Reg1_0__Reg1_1
    9382             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_Done },
    9383             :   // Convert__Reg1_0__ImmSMRDOffset201_1
    9384             :   { CVT_95_Reg, 1, CVT_95_addImmOperands_95_defaultSMRDOffset20, 2, CVT_Done },
    9385             :   // Convert__Imm1_0
    9386             :   { CVT_95_addImmOperands, 1, CVT_Done },
    9387             :   // Convert__Reg1_0__ImmHwreg1_1
    9388             :   { CVT_95_Reg, 1, CVT_95_addImmOperands, 2, CVT_Done },
    9389             :   // Convert__SendMsg1_0
    9390             :   { CVT_95_addImmOperands, 1, CVT_Done },
    9391             :   // Convert__SSrcB321_0
    9392             :   { CVT_95_addRegOrImmOperands, 1, CVT_Done },
    9393             :   // Convert__GPRIdxMode1_0
    9394             :   { CVT_95_addImmOperands, 1, CVT_Done },
    9395             :   // Convert__SSrcB321_0__GPRIdxMode1_1
    9396             :   { CVT_95_addRegOrImmOperands, 1, CVT_95_addImmOperands, 2, CVT_Done },
    9397             :   // Convert__Reg1_1__ImmHwreg1_0
    9398             :   { CVT_95_Reg, 2, CVT_95_addImmOperands, 1, CVT_Done },
    9399             :   // Convert__Imm1_1__ImmHwreg1_0
    9400             :   { CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 1, CVT_Done },
    9401             :   // Convert__SWaitCnt1_0
    9402             :   { CVT_95_addImmOperands, 1, CVT_Done },
    9403             :   // Convert__Reg1_0__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    9404             :   { 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 },
    9405             :   // Convert__Reg1_1__Reg1_2__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    9406             :   { 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 },
    9407             :   // Convert__Reg1_1__Reg1_0__ImmOffsetS131_3__ImmGLC1_4__ImmSLC1_5
    9408             :   { 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 },
    9409             :   // ConvertCustom_cvtMtbuf
    9410             :   { CVT_cvtMtbuf, 0, CVT_Done },
    9411             :   // Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2__VCSrcB321_3
    9412             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_Done },
    9413             :   // Convert__Reg1_0__VSrcB321_2__Reg1_3
    9414             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 3, CVT_95_Reg, 4, CVT_Done },
    9415             :   // Convert__Reg1_0__Reg1_1__VCSrcB321_2__VCSrcB321_3
    9416             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_Done },
    9417             :   // Convert__Reg1_0__Tie0_1_1__Reg1_2__Reg1_3__ImmDPPCtrl1_4__ImmRowMask1_5__ImmBankMask1_6__ImmBoundCtrl1_7
    9418             :   { 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 },
    9419             :   // ConvertCustom_cvtSdwaVOP2b
    9420             :   { CVT_cvtSdwaVOP2b, 0, CVT_Done },
    9421             :   // Convert__Reg1_0__VSrcF161_1__Reg1_2
    9422             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9423             :   // ConvertCustom_cvtVOP3
    9424             :   { CVT_cvtVOP3, 0, CVT_Done },
    9425             :   // ConvertCustom_cvtDPP
    9426             :   { CVT_cvtDPP, 0, CVT_Done },
    9427             :   // ConvertCustom_cvtSdwaVOP2
    9428             :   { CVT_cvtSdwaVOP2, 0, CVT_Done },
    9429             :   // Convert__Reg1_0__VSrcF321_1__Reg1_2
    9430             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9431             :   // ConvertCustom_cvtVOP3OpSel
    9432             :   { CVT_cvtVOP3OpSel, 0, CVT_Done },
    9433             :   // Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2
    9434             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9435             :   // Convert__Reg1_0__VSrcB161_1__Reg1_2
    9436             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9437             :   // Convert__Reg1_0__VCSrcB161_1__VCSrcB161_2
    9438             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9439             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2__ImmDPPCtrl1_3__ImmRowMask1_4__ImmBankMask1_5__ImmBoundCtrl1_6
    9440             :   { 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 },
    9441             :   // Convert__Reg1_0__VSrcB321_1__Reg1_2
    9442             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9443             :   // Convert__Reg1_0__VCSrcB321_2__Reg1_3
    9444             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 3, CVT_95_Reg, 4, CVT_Done },
    9445             :   // Convert__Reg1_0__Reg1_1__VCSrcB321_2__VCSrcB321_3__Reg1_4
    9446             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_95_Reg, 5, CVT_Done },
    9447             :   // Convert__Reg1_0__Tie0_1_1__Reg1_2__Reg1_3__ImmDPPCtrl1_5__ImmRowMask1_6__ImmBankMask1_7__ImmBoundCtrl1_8
    9448             :   { 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 },
    9449             :   // Convert__Reg1_0__VCSrcB641_1__VCSrcB321_2
    9450             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9451             :   // Convert__Reg1_0__VCSrcB321_1__VCSrcB641_2
    9452             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9453             :   // Convert__Reg1_0__VSrcB321_1
    9454             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9455             :   // Convert__Reg1_0__VCSrcB321_1
    9456             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9457             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__ImmDPPCtrl1_2__ImmRowMask1_3__ImmBankMask1_4__ImmBoundCtrl1_5
    9458             :   { 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 },
    9459             :   // ConvertCustom_cvtSdwaVOP1
    9460             :   { CVT_cvtSdwaVOP1, 0, CVT_Done },
    9461             :   // Convert__Reg1_0__VSrcF161_1
    9462             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9463             :   // Convert__Reg1_0__VSrcF321_1
    9464             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9465             :   // Convert__Reg1_0__VSrcF641_1
    9466             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9467             :   // Convert__VSrcF161_1__Reg1_2
    9468             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9469             :   // ConvertCustom_cvtSdwaVOPC
    9470             :   { CVT_cvtSdwaVOPC, 0, CVT_Done },
    9471             :   // Convert__VSrcF321_1__Reg1_2
    9472             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9473             :   // Convert__VSrcF641_1__Reg1_2
    9474             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9475             :   // Convert__VSrcB161_1__Reg1_2
    9476             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9477             :   // Convert__VSrcB321_1__Reg1_2
    9478             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9479             :   // Convert__VSrcB641_1__Reg1_2
    9480             :   { CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9481             :   // Convert__Reg1_0__VCSrcB641_1__VCSrcB641_2
    9482             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9483             :   // Convert__Reg1_0__VCSrcB321_1__Reg1_2
    9484             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Done },
    9485             :   // Convert__Reg1_0__VCSrcB321_1__VCSrcB321_2__Reg1_3
    9486             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_Reg, 4, CVT_Done },
    9487             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__Reg1_2__ImmDPPCtrl1_4__ImmRowMask1_5__ImmBankMask1_6__ImmBoundCtrl1_7
    9488             :   { 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 },
    9489             :   // Convert__Reg1_0__VSrcB161_1
    9490             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_Done },
    9491             :   // Convert__Reg1_0__imm_95_0__VCSrcF321_1__imm_95_0__VCSrcF321_2__imm_95_0
    9492             :   { 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 },
    9493             :   // Convert__Reg1_0__imm_95_0__VCSrcF321_1__imm_95_0__VCSrcF321_2__imm_95_0__imm_95_0
    9494             :   { 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 },
    9495             :   // Convert__Reg1_0__Reg1_1__VCSrcF321_2__VCSrcF321_3__VCSrcF321_4
    9496             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_95_addRegOrImmOperands, 5, CVT_Done },
    9497             :   // Convert__Reg1_0__Reg1_1__VCSrcF641_2__VCSrcF641_3__VCSrcF641_4
    9498             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_95_addRegOrImmOperands, 4, CVT_95_addRegOrImmOperands, 5, CVT_Done },
    9499             :   // ConvertCustom_cvtVOP3P
    9500             :   { CVT_cvtVOP3P, 0, CVT_Done },
    9501             :   // Convert__Reg1_0__VSrcF321_1__Reg1_2__Tie0_1_1
    9502             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Tied, Tie0_1_1, CVT_Done },
    9503             :   // Convert__Reg1_0__InterpSlot1_1__Attr1_2__AttrChan1_3
    9504             :   { CVT_95_Reg, 1, CVT_95_addImmOperands, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done },
    9505             :   // ConvertCustom_cvtVOP3Interp
    9506             :   { CVT_cvtVOP3Interp, 0, CVT_Done },
    9507             :   // Convert__Reg1_0__Reg1_1__Attr1_2__AttrChan1_3
    9508             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done },
    9509             :   // Convert__Reg1_0__Tie0_1_1__Reg1_1__Attr1_2__AttrChan1_3
    9510             :   { CVT_95_Reg, 1, CVT_Tied, Tie0_1_1, CVT_95_Reg, 2, CVT_95_addImmOperands, 3, CVT_95_addImmOperands, 4, CVT_Done },
    9511             :   // Convert__Reg1_0__VSrcF161_1__Reg1_2__Tie0_1_1
    9512             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_Tied, Tie0_1_1, CVT_Done },
    9513             :   // Convert__Reg1_0__VCSrcF321_1__Reg1_2__KImmFP161_3
    9514             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_95_addKImmFP16Operands, 4, CVT_Done },
    9515             :   // Convert__Reg1_0__VCSrcF321_1__Reg1_2__KImmFP321_3
    9516             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_Reg, 3, CVT_95_addKImmFP32Operands, 4, CVT_Done },
    9517             :   // Convert__Reg1_0__VCSrcF321_1__KImmFP161_2__Reg1_3
    9518             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addKImmFP16Operands, 3, CVT_95_Reg, 4, CVT_Done },
    9519             :   // Convert__Reg1_0__VCSrcF321_1__KImmFP321_2__Reg1_3
    9520             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addKImmFP32Operands, 3, CVT_95_Reg, 4, CVT_Done },
    9521             :   // Convert__ImmDPPCtrl1_0__ImmRowMask1_1__ImmBankMask1_2__ImmBoundCtrl1_3
    9522             :   { CVT_95_addImmOperands, 1, CVT_95_addImmOperands_95_defaultRowMask, 2, CVT_95_addImmOperands_95_defaultBankMask, 3, CVT_95_addImmOperands_95_defaultBoundCtrl, 4, CVT_Done },
    9523             :   // Convert__Reg1_0__Reg1_1__SCSrcB321_2
    9524             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_95_addRegOrImmOperands, 3, CVT_Done },
    9525             :   // Convert__Reg1_0__Reg1_1__Tie1_2_2__Tie0_1_1
    9526             :   { CVT_95_Reg, 1, CVT_95_Reg, 2, CVT_Tied, Tie1_2_2, CVT_Tied, Tie0_1_1, CVT_Done },
    9527             :   // Convert__Reg1_0__SSrcB321_1__SCSrcB321_2__Tie0_1_1
    9528             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Tied, Tie0_1_1, CVT_Done },
    9529             :   // Convert__Reg1_0__SCSrcB321_1__SCSrcB321_2__Tie0_1_1
    9530             :   { CVT_95_Reg, 1, CVT_95_addRegOrImmOperands, 2, CVT_95_addRegOrImmOperands, 3, CVT_Tied, Tie0_1_1, CVT_Done },
    9531             : };
    9532             : 
    9533      160392 : void AMDGPUAsmParser::
    9534             : convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
    9535             :                 const OperandVector &Operands,
    9536             :                 const SmallBitVector &OptionalOperandsMask) {
    9537             :   assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
    9538      160392 :   const uint8_t *Converter = ConversionTable[Kind];
    9539      160392 :   unsigned DefaultsOffset[14] = { 0 };
    9540             :   assert(OptionalOperandsMask.size() == 13);
    9541     2245488 :   for (unsigned i = 0, NumDefaults = 0; i < 13; ++i) {
    9542     2085096 :     DefaultsOffset[i + 1] = NumDefaults;
    9543     2671651 :     NumDefaults += (OptionalOperandsMask[i] ? 1 : 0);
    9544             :   }
    9545             :   unsigned OpIdx;
    9546             :   Inst.setOpcode(Opcode);
    9547      476323 :   for (const uint8_t *p = Converter; *p; p+= 2) {
<