llvm/lib/Target/Hexagon/HexagonGenAsmMatcher.inc

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Assembly Matcher Source Fragment                                           *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|* From: Hexagon.td                                                           *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/


#ifdef GET_ASSEMBLER_HEADER
#undef GET_ASSEMBLER_HEADER
  // This should be included into the middle of the declaration of
  // your subclasses implementation of MCTargetAsmParser.
  FeatureBitset ComputeAvailableFeatures(const FeatureBitset &FB) const;
  void convertToMCInst(unsigned Kind, MCInst &Inst, unsigned Opcode,
                       const OperandVector &Operands);
  void convertToMapAndConstraints(unsigned Kind,
                           const OperandVector &Operands) override;
  unsigned MatchInstructionImpl(const OperandVector &Operands,
                                MCInst &Inst,
                                uint64_t &ErrorInfo,
                                FeatureBitset &MissingFeatures,
                                bool matchingInlineAsm,
                                unsigned VariantID =MissingFeatures;
    return MatchInstructionImpl(Operands, Inst, ErrorInfo, MissingFeatures,
                                matchingInlineAsm, VariantID);
  }

#endif // GET_ASSEMBLER_HEADER


#ifdef GET_OPERAND_DIAGNOSTIC_TYPES
#undef GET_OPERAND_DIAGNOSTIC_TYPES

#endif // GET_OPERAND_DIAGNOSTIC_TYPES


#ifdef GET_REGISTER_MATCHER
#undef GET_REGISTER_MATCHER

// Bits for subtarget features that participate in instruction matching.
enum SubtargetFeatureBits : uint8_t {} Hexagon::V9;	 // "v9"
      }
      break;
    }
    break;
  case 3:	 // 115 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'c':	 // 3 strings to match.
      switch (Name[1]) {}
      default: break;
      case 'c':	 // 1 string to match.
        if (Name[2] != 'r')
          break;
        return Hexagon::CCR;	 // "ccr"
      case 's':	 // 2 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::CS0;	 // "cs0"
        case '1':	 // 1 string to match.
          return Hexagon::CS1;	 // "cs1"
        }
        break;
      }
      break;
    case 'e':	 // 2 strings to match.
      switch (Name[1]) {}
      default: break;
      case 'l':	 // 1 string to match.
        if (Name[2] != 'r')
          break;
        return Hexagon::ELR;	 // "elr"
      case 'v':	 // 1 string to match.
        if (Name[2] != 'b')
          break;
        return Hexagon::EVB;	 // "evb"
      }
      break;
    case 'g':	 // 13 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 6 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::G10;	 // "g10"
        case '1':	 // 1 string to match.
          return Hexagon::G11;	 // "g11"
        case '2':	 // 1 string to match.
          return Hexagon::G12;	 // "g12"
        case '3':	 // 1 string to match.
          return Hexagon::G13;	 // "g13"
        case '4':	 // 1 string to match.
          return Hexagon::G14;	 // "g14"
        case '5':	 // 1 string to match.
          return Hexagon::G15;	 // "g15"
        }
        break;
      case '2':	 // 4 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::G20;	 // "g20"
        case '1':	 // 1 string to match.
          return Hexagon::G21;	 // "g21"
        case '2':	 // 1 string to match.
          return Hexagon::G22;	 // "g22"
        case '3':	 // 1 string to match.
          return Hexagon::G23;	 // "g23"
        }
        break;
      case '3':	 // 2 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::G30;	 // "g30"
        case '1':	 // 1 string to match.
          return Hexagon::G31;	 // "g31"
        }
        break;
      case 's':	 // 1 string to match.
        if (Name[2] != 'r')
          break;
        return Hexagon::GSR;	 // "gsr"
      }
      break;
    case 'l':	 // 2 strings to match.
      if (Name[1] != 'c')
        break;
      switch (Name[2]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::LC0;	 // "lc0"
      case '1':	 // 1 string to match.
        return Hexagon::LC1;	 // "lc1"
      }
      break;
    case 'r':	 // 23 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 10 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::R10;	 // "r10"
        case '1':	 // 1 string to match.
          return Hexagon::R11;	 // "r11"
        case '2':	 // 1 string to match.
          return Hexagon::R12;	 // "r12"
        case '3':	 // 1 string to match.
          return Hexagon::R13;	 // "r13"
        case '4':	 // 1 string to match.
          return Hexagon::R14;	 // "r14"
        case '5':	 // 1 string to match.
          return Hexagon::R15;	 // "r15"
        case '6':	 // 1 string to match.
          return Hexagon::R16;	 // "r16"
        case '7':	 // 1 string to match.
          return Hexagon::R17;	 // "r17"
        case '8':	 // 1 string to match.
          return Hexagon::R18;	 // "r18"
        case '9':	 // 1 string to match.
          return Hexagon::R19;	 // "r19"
        }
        break;
      case '2':	 // 10 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::R20;	 // "r20"
        case '1':	 // 1 string to match.
          return Hexagon::R21;	 // "r21"
        case '2':	 // 1 string to match.
          return Hexagon::R22;	 // "r22"
        case '3':	 // 1 string to match.
          return Hexagon::R23;	 // "r23"
        case '4':	 // 1 string to match.
          return Hexagon::R24;	 // "r24"
        case '5':	 // 1 string to match.
          return Hexagon::R25;	 // "r25"
        case '6':	 // 1 string to match.
          return Hexagon::R26;	 // "r26"
        case '7':	 // 1 string to match.
          return Hexagon::R27;	 // "r27"
        case '8':	 // 1 string to match.
          return Hexagon::R28;	 // "r28"
        case '9':	 // 1 string to match.
          return Hexagon::R29;	 // "r29"
        }
        break;
      case '3':	 // 2 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::R30;	 // "r30"
        case '1':	 // 1 string to match.
          return Hexagon::R31;	 // "r31"
        }
        break;
      case 'e':	 // 1 string to match.
        if (Name[2] != 'v')
          break;
        return Hexagon::REV;	 // "rev"
      }
      break;
    case 's':	 // 47 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 6 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          return Hexagon::S11;	 // "s11"
        case '2':	 // 1 string to match.
          return Hexagon::S12;	 // "s12"
        case '3':	 // 1 string to match.
          return Hexagon::S13;	 // "s13"
        case '4':	 // 1 string to match.
          return Hexagon::S14;	 // "s14"
        case '5':	 // 1 string to match.
          return Hexagon::S15;	 // "s15"
        case '9':	 // 1 string to match.
          return Hexagon::S19;	 // "s19"
        }
        break;
      case '2':	 // 6 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::S20;	 // "s20"
        case '2':	 // 1 string to match.
          return Hexagon::S22;	 // "s22"
        case '3':	 // 1 string to match.
          return Hexagon::S23;	 // "s23"
        case '4':	 // 1 string to match.
          return Hexagon::S24;	 // "s24"
        case '5':	 // 1 string to match.
          return Hexagon::S25;	 // "s25"
        case '6':	 // 1 string to match.
          return Hexagon::S26;	 // "s26"
        }
        break;
      case '3':	 // 1 string to match.
        if (Name[2] != '5')
          break;
        return Hexagon::S35;	 // "s35"
      case '4':	 // 4 strings to match.
        switch (Name[2]) {}
        default: break;
        case '4':	 // 1 string to match.
          return Hexagon::S44;	 // "s44"
        case '5':	 // 1 string to match.
          return Hexagon::S45;	 // "s45"
        case '6':	 // 1 string to match.
          return Hexagon::S46;	 // "s46"
        case '7':	 // 1 string to match.
          return Hexagon::S47;	 // "s47"
        }
        break;
      case '5':	 // 6 strings to match.
        switch (Name[2]) {}
        default: break;
        case '4':	 // 1 string to match.
          return Hexagon::S54;	 // "s54"
        case '5':	 // 1 string to match.
          return Hexagon::S55;	 // "s55"
        case '6':	 // 1 string to match.
          return Hexagon::S56;	 // "s56"
        case '7':	 // 1 string to match.
          return Hexagon::S57;	 // "s57"
        case '8':	 // 1 string to match.
          return Hexagon::S58;	 // "s58"
        case '9':	 // 1 string to match.
          return Hexagon::S59;	 // "s59"
        }
        break;
      case '6':	 // 10 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::S60;	 // "s60"
        case '1':	 // 1 string to match.
          return Hexagon::S61;	 // "s61"
        case '2':	 // 1 string to match.
          return Hexagon::S62;	 // "s62"
        case '3':	 // 1 string to match.
          return Hexagon::S63;	 // "s63"
        case '4':	 // 1 string to match.
          return Hexagon::S64;	 // "s64"
        case '5':	 // 1 string to match.
          return Hexagon::S65;	 // "s65"
        case '6':	 // 1 string to match.
          return Hexagon::S66;	 // "s66"
        case '7':	 // 1 string to match.
          return Hexagon::S67;	 // "s67"
        case '8':	 // 1 string to match.
          return Hexagon::S68;	 // "s68"
        case '9':	 // 1 string to match.
          return Hexagon::S69;	 // "s69"
        }
        break;
      case '7':	 // 10 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::S70;	 // "s70"
        case '1':	 // 1 string to match.
          return Hexagon::S71;	 // "s71"
        case '2':	 // 1 string to match.
          return Hexagon::S72;	 // "s72"
        case '3':	 // 1 string to match.
          return Hexagon::S73;	 // "s73"
        case '4':	 // 1 string to match.
          return Hexagon::S74;	 // "s74"
        case '5':	 // 1 string to match.
          return Hexagon::S75;	 // "s75"
        case '6':	 // 1 string to match.
          return Hexagon::S76;	 // "s76"
        case '7':	 // 1 string to match.
          return Hexagon::S77;	 // "s77"
        case '8':	 // 1 string to match.
          return Hexagon::S78;	 // "s78"
        case '9':	 // 1 string to match.
          return Hexagon::S79;	 // "s79"
        }
        break;
      case '8':	 // 1 string to match.
        if (Name[2] != '0')
          break;
        return Hexagon::S80;	 // "s80"
      case 'a':	 // 2 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::SA0;	 // "sa0"
        case '1':	 // 1 string to match.
          return Hexagon::SA1;	 // "sa1"
        }
        break;
      case 's':	 // 1 string to match.
        if (Name[2] != 'r')
          break;
        return Hexagon::SSR;	 // "ssr"
      }
      break;
    case 'u':	 // 2 strings to match.
      switch (Name[1]) {}
      default: break;
      case 'g':	 // 1 string to match.
        if (Name[2] != 'p')
          break;
        return Hexagon::UGP;	 // "ugp"
      case 's':	 // 1 string to match.
        if (Name[2] != 'r')
          break;
        return Hexagon::USR;	 // "usr"
      }
      break;
    case 'v':	 // 23 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 10 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::V10;	 // "v10"
        case '1':	 // 1 string to match.
          return Hexagon::V11;	 // "v11"
        case '2':	 // 1 string to match.
          return Hexagon::V12;	 // "v12"
        case '3':	 // 1 string to match.
          return Hexagon::V13;	 // "v13"
        case '4':	 // 1 string to match.
          return Hexagon::V14;	 // "v14"
        case '5':	 // 1 string to match.
          return Hexagon::V15;	 // "v15"
        case '6':	 // 1 string to match.
          return Hexagon::V16;	 // "v16"
        case '7':	 // 1 string to match.
          return Hexagon::V17;	 // "v17"
        case '8':	 // 1 string to match.
          return Hexagon::V18;	 // "v18"
        case '9':	 // 1 string to match.
          return Hexagon::V19;	 // "v19"
        }
        break;
      case '2':	 // 10 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::V20;	 // "v20"
        case '1':	 // 1 string to match.
          return Hexagon::V21;	 // "v21"
        case '2':	 // 1 string to match.
          return Hexagon::V22;	 // "v22"
        case '3':	 // 1 string to match.
          return Hexagon::V23;	 // "v23"
        case '4':	 // 1 string to match.
          return Hexagon::V24;	 // "v24"
        case '5':	 // 1 string to match.
          return Hexagon::V25;	 // "v25"
        case '6':	 // 1 string to match.
          return Hexagon::V26;	 // "v26"
        case '7':	 // 1 string to match.
          return Hexagon::V27;	 // "v27"
        case '8':	 // 1 string to match.
          return Hexagon::V28;	 // "v28"
        case '9':	 // 1 string to match.
          return Hexagon::V29;	 // "v29"
        }
        break;
      case '3':	 // 2 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::V30;	 // "v30"
        case '1':	 // 1 string to match.
          return Hexagon::V31;	 // "v31"
        }
        break;
      case 'i':	 // 1 string to match.
        if (Name[2] != 'd')
          break;
        return Hexagon::VID;	 // "vid"
      }
      break;
    }
    break;
  case 4:	 // 41 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'c':	 // 5 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":0", 2) != 0)
          break;
        return Hexagon::C1_0;	 // "c1:0"
      case '3':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":2", 2) != 0)
          break;
        return Hexagon::C3_2;	 // "c3:2"
      case '5':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":4", 2) != 0)
          break;
        return Hexagon::C5_4;	 // "c5:4"
      case '7':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":6", 2) != 0)
          break;
        return Hexagon::C7_6;	 // "c7:6"
      case '9':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":8", 2) != 0)
          break;
        return Hexagon::C9_8;	 // "c9:8"
      }
      break;
    case 'd':	 // 1 string to match.
      if (memcmp(Name.data()+1, "iag", 3) != 0)
        break;
      return Hexagon::DIAG;	 // "diag"
    case 'g':	 // 7 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":0", 2) != 0)
          break;
        return Hexagon::G1_0;	 // "g1:0"
      case '3':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":2", 2) != 0)
          break;
        return Hexagon::G3_2;	 // "g3:2"
      case '5':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":4", 2) != 0)
          break;
        return Hexagon::G5_4;	 // "g5:4"
      case '7':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":6", 2) != 0)
          break;
        return Hexagon::G7_6;	 // "g7:6"
      case '9':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":8", 2) != 0)
          break;
        return Hexagon::G9_8;	 // "g9:8"
      case 'e':	 // 1 string to match.
        if (memcmp(Name.data()+2, "lr", 2) != 0)
          break;
        return Hexagon::GELR;	 // "gelr"
      case 'o':	 // 1 string to match.
        if (memcmp(Name.data()+2, "sp", 2) != 0)
          break;
        return Hexagon::GOSP;	 // "gosp"
      }
      break;
    case 'h':	 // 1 string to match.
      if (memcmp(Name.data()+1, "tid", 3) != 0)
        break;
      return Hexagon::HTID;	 // "htid"
    case 'p':	 // 1 string to match.
      if (memcmp(Name.data()+1, "3:0", 3) != 0)
        break;
      return Hexagon::P3_0;	 // "p3:0"
    case 'r':	 // 5 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":0", 2) != 0)
          break;
        return Hexagon::D0;	 // "r1:0"
      case '3':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":2", 2) != 0)
          break;
        return Hexagon::D1;	 // "r3:2"
      case '5':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":4", 2) != 0)
          break;
        return Hexagon::D2;	 // "r5:4"
      case '7':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":6", 2) != 0)
          break;
        return Hexagon::D3;	 // "r7:6"
      case '9':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":8", 2) != 0)
          break;
        return Hexagon::D4;	 // "r9:8"
      }
      break;
    case 's':	 // 8 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":0", 2) != 0)
          break;
        return Hexagon::SGP1_0;	 // "s1:0"
      case '3':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":2", 2) != 0)
          break;
        return Hexagon::S3_2;	 // "s3:2"
      case '5':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":4", 2) != 0)
          break;
        return Hexagon::S5_4;	 // "s5:4"
      case '7':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":6", 2) != 0)
          break;
        return Hexagon::S7_6;	 // "s7:6"
      case '9':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":8", 2) != 0)
          break;
        return Hexagon::S9_8;	 // "s9:8"
      case 'g':	 // 2 strings to match.
        if (Name[2] != 'p')
          break;
        switch (Name[3]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::SGP0;	 // "sgp0"
        case '1':	 // 1 string to match.
          return Hexagon::SGP1;	 // "sgp1"
        }
        break;
      case 't':	 // 1 string to match.
        if (memcmp(Name.data()+2, "id", 2) != 0)
          break;
        return Hexagon::STID;	 // "stid"
      }
      break;
    case 'v':	 // 13 strings to match.
      switch (Name[1]) {}
      default: break;
      case '0':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":1", 2) != 0)
          break;
        return Hexagon::WR0;	 // "v0:1"
      case '1':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":0", 2) != 0)
          break;
        return Hexagon::W0;	 // "v1:0"
      case '2':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":3", 2) != 0)
          break;
        return Hexagon::WR1;	 // "v2:3"
      case '3':	 // 2 strings to match.
        if (Name[2] != ':')
          break;
        switch (Name[3]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::VQ0;	 // "v3:0"
        case '2':	 // 1 string to match.
          return Hexagon::W1;	 // "v3:2"
        }
        break;
      case '4':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":5", 2) != 0)
          break;
        return Hexagon::WR2;	 // "v4:5"
      case '5':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":4", 2) != 0)
          break;
        return Hexagon::W2;	 // "v5:4"
      case '6':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":7", 2) != 0)
          break;
        return Hexagon::WR3;	 // "v6:7"
      case '7':	 // 2 strings to match.
        if (Name[2] != ':')
          break;
        switch (Name[3]) {}
        default: break;
        case '4':	 // 1 string to match.
          return Hexagon::VQ1;	 // "v7:4"
        case '6':	 // 1 string to match.
          return Hexagon::W3;	 // "v7:6"
        }
        break;
      case '8':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":9", 2) != 0)
          break;
        return Hexagon::WR4;	 // "v8:9"
      case '9':	 // 1 string to match.
        if (memcmp(Name.data()+2, ":8", 2) != 0)
          break;
        return Hexagon::W4;	 // "v9:8"
      case 't':	 // 1 string to match.
        if (memcmp(Name.data()+2, "mp", 2) != 0)
          break;
        return Hexagon::VTMP;	 // "vtmp"
      }
      break;
    }
    break;
  case 5:	 // 3 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(Name.data()+1, "adva", 4) != 0)
        break;
      return Hexagon::BADVA;	 // "badva"
    case 'i':	 // 1 string to match.
      if (memcmp(Name.data()+1, "mask", 4) != 0)
        break;
      return Hexagon::IMASK;	 // "imask"
    case 'v':	 // 1 string to match.
      if (memcmp(Name.data()+1, "11:8", 4) != 0)
        break;
      return Hexagon::VQ2;	 // "v11:8"
    }
    break;
  case 6:	 // 97 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'b':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "adva", 4) != 0)
        break;
      switch (Name[5]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::BADVA0;	 // "badva0"
      case '1':	 // 1 string to match.
        return Hexagon::BADVA1;	 // "badva1"
      }
      break;
    case 'c':	 // 6 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":10", 3) != 0)
            break;
          return Hexagon::C11_10;	 // "c11:10"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":12", 3) != 0)
            break;
          return Hexagon::CS;	 // "c13:12"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":14", 3) != 0)
            break;
          return Hexagon::UPCYCLE;	 // "c15:14"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":16", 3) != 0)
            break;
          return Hexagon::C17_16;	 // "c17:16"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":18", 3) != 0)
            break;
          return Hexagon::PKTCOUNT;	 // "c19:18"
        }
        break;
      case '3':	 // 1 string to match.
        if (memcmp(Name.data()+2, "1:30", 4) != 0)
          break;
        return Hexagon::UTIMER;	 // "c31:30"
      }
      break;
    case 'g':	 // 12 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":10", 3) != 0)
            break;
          return Hexagon::G11_10;	 // "g11:10"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":12", 3) != 0)
            break;
          return Hexagon::G13_12;	 // "g13:12"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":14", 3) != 0)
            break;
          return Hexagon::G15_14;	 // "g15:14"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":16", 3) != 0)
            break;
          return Hexagon::G17_16;	 // "g17:16"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":18", 3) != 0)
            break;
          return Hexagon::G19_18;	 // "g19:18"
        }
        break;
      case '2':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":20", 3) != 0)
            break;
          return Hexagon::G21_20;	 // "g21:20"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":22", 3) != 0)
            break;
          return Hexagon::G23_22;	 // "g23:22"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":24", 3) != 0)
            break;
          return Hexagon::G25_24;	 // "g25:24"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":26", 3) != 0)
            break;
          return Hexagon::G27_26;	 // "g27:26"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":28", 3) != 0)
            break;
          return Hexagon::G29_28;	 // "g29:28"
        }
        break;
      case '3':	 // 1 string to match.
        if (memcmp(Name.data()+2, "1:30", 4) != 0)
          break;
        return Hexagon::G31_30;	 // "g31:30"
      case 'b':	 // 1 string to match.
        if (memcmp(Name.data()+2, "adva", 4) != 0)
          break;
        return Hexagon::G3;	 // "gbadva"
      }
      break;
    case 'i':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "sdb", 3) != 0)
        break;
      switch (Name[4]) {}
      default: break;
      case 'e':	 // 1 string to match.
        if (Name[5] != 'n')
          break;
        return Hexagon::ISDBEN;	 // "isdben"
      case 's':	 // 1 string to match.
        if (Name[5] != 't')
          break;
        return Hexagon::ISDBST;	 // "isdbst"
      }
      break;
    case 'p':	 // 1 string to match.
      if (memcmp(Name.data()+1, "mucfg", 5) != 0)
        break;
      return Hexagon::PMUCFG;	 // "pmucfg"
    case 'r':	 // 11 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":10", 3) != 0)
            break;
          return Hexagon::D5;	 // "r11:10"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":12", 3) != 0)
            break;
          return Hexagon::D6;	 // "r13:12"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":14", 3) != 0)
            break;
          return Hexagon::D7;	 // "r15:14"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":16", 3) != 0)
            break;
          return Hexagon::D8;	 // "r17:16"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":18", 3) != 0)
            break;
          return Hexagon::D9;	 // "r19:18"
        }
        break;
      case '2':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":20", 3) != 0)
            break;
          return Hexagon::D10;	 // "r21:20"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":22", 3) != 0)
            break;
          return Hexagon::D11;	 // "r23:22"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":24", 3) != 0)
            break;
          return Hexagon::D12;	 // "r25:24"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":26", 3) != 0)
            break;
          return Hexagon::D13;	 // "r27:26"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":28", 3) != 0)
            break;
          return Hexagon::D14;	 // "r29:28"
        }
        break;
      case '3':	 // 1 string to match.
        if (memcmp(Name.data()+2, "1:30", 4) != 0)
          break;
        return Hexagon::D15;	 // "r31:30"
      }
      break;
    case 's':	 // 36 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":10", 3) != 0)
            break;
          return Hexagon::S11_10;	 // "s11:10"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":12", 3) != 0)
            break;
          return Hexagon::S13_12;	 // "s13:12"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":14", 3) != 0)
            break;
          return Hexagon::S15_14;	 // "s15:14"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":16", 3) != 0)
            break;
          return Hexagon::S17_16;	 // "s17:16"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":18", 3) != 0)
            break;
          return Hexagon::S19_18;	 // "s19:18"
        }
        break;
      case '2':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":20", 3) != 0)
            break;
          return Hexagon::S21_20;	 // "s21:20"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":22", 3) != 0)
            break;
          return Hexagon::S23_22;	 // "s23:22"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":24", 3) != 0)
            break;
          return Hexagon::S25_24;	 // "s25:24"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":26", 3) != 0)
            break;
          return Hexagon::S27_26;	 // "s27:26"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":28", 3) != 0)
            break;
          return Hexagon::S29_28;	 // "s29:28"
        }
        break;
      case '3':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":30", 3) != 0)
            break;
          return Hexagon::S31_30;	 // "s31:30"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":32", 3) != 0)
            break;
          return Hexagon::S33_32;	 // "s33:32"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":34", 3) != 0)
            break;
          return Hexagon::S35_34;	 // "s35:34"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":36", 3) != 0)
            break;
          return Hexagon::S37_36;	 // "s37:36"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":38", 3) != 0)
            break;
          return Hexagon::S39_38;	 // "s39:38"
        }
        break;
      case '4':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":40", 3) != 0)
            break;
          return Hexagon::S41_40;	 // "s41:40"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":42", 3) != 0)
            break;
          return Hexagon::S43_42;	 // "s43:42"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":44", 3) != 0)
            break;
          return Hexagon::S45_44;	 // "s45:44"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":46", 3) != 0)
            break;
          return Hexagon::S47_46;	 // "s47:46"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":48", 3) != 0)
            break;
          return Hexagon::S49_48;	 // "s49:48"
        }
        break;
      case '5':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":50", 3) != 0)
            break;
          return Hexagon::S51_50;	 // "s51:50"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":52", 3) != 0)
            break;
          return Hexagon::S53_52;	 // "s53:52"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":54", 3) != 0)
            break;
          return Hexagon::S55_54;	 // "s55:54"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":56", 3) != 0)
            break;
          return Hexagon::S57_56;	 // "s57:56"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":58", 3) != 0)
            break;
          return Hexagon::S59_58;	 // "s59:58"
        }
        break;
      case '6':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":60", 3) != 0)
            break;
          return Hexagon::S61_60;	 // "s61:60"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":62", 3) != 0)
            break;
          return Hexagon::S63_62;	 // "s63:62"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":64", 3) != 0)
            break;
          return Hexagon::S65_64;	 // "s65:64"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":66", 3) != 0)
            break;
          return Hexagon::S67_66;	 // "s67:66"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":68", 3) != 0)
            break;
          return Hexagon::S69_68;	 // "s69:68"
        }
        break;
      case '7':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":70", 3) != 0)
            break;
          return Hexagon::S71_70;	 // "s71:70"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":72", 3) != 0)
            break;
          return Hexagon::S73_72;	 // "s73:72"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":74", 3) != 0)
            break;
          return Hexagon::S75_74;	 // "s75:74"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":76", 3) != 0)
            break;
          return Hexagon::S77_76;	 // "s77:76"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":78", 3) != 0)
            break;
          return Hexagon::S79_78;	 // "s79:78"
        }
        break;
      case 'y':	 // 1 string to match.
        if (memcmp(Name.data()+2, "scfg", 4) != 0)
          break;
        return Hexagon::SYSCFG;	 // "syscfg"
      }
      break;
    case 'v':	 // 27 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 12 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":11", 3) != 0)
            break;
          return Hexagon::WR5;	 // "v10:11"
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":10", 3) != 0)
            break;
          return Hexagon::W5;	 // "v11:10"
        case '2':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":13", 3) != 0)
            break;
          return Hexagon::WR6;	 // "v12:13"
        case '3':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":12", 3) != 0)
            break;
          return Hexagon::W6;	 // "v13:12"
        case '4':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":15", 3) != 0)
            break;
          return Hexagon::WR7;	 // "v14:15"
        case '5':	 // 2 strings to match.
          if (memcmp(Name.data()+3, ":1", 2) != 0)
            break;
          switch (Name[5]) {}
          default: break;
          case '2':	 // 1 string to match.
            return Hexagon::VQ3;	 // "v15:12"
          case '4':	 // 1 string to match.
            return Hexagon::W7;	 // "v15:14"
          }
          break;
        case '6':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":17", 3) != 0)
            break;
          return Hexagon::WR8;	 // "v16:17"
        case '7':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":16", 3) != 0)
            break;
          return Hexagon::W8;	 // "v17:16"
        case '8':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":19", 3) != 0)
            break;
          return Hexagon::WR9;	 // "v18:19"
        case '9':	 // 2 strings to match.
          if (memcmp(Name.data()+3, ":1", 2) != 0)
            break;
          switch (Name[5]) {}
          default: break;
          case '6':	 // 1 string to match.
            return Hexagon::VQ4;	 // "v19:16"
          case '8':	 // 1 string to match.
            return Hexagon::W9;	 // "v19:18"
          }
          break;
        }
        break;
      case '2':	 // 12 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":21", 3) != 0)
            break;
          return Hexagon::WR10;	 // "v20:21"
        case '1':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":20", 3) != 0)
            break;
          return Hexagon::W10;	 // "v21:20"
        case '2':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":23", 3) != 0)
            break;
          return Hexagon::WR11;	 // "v22:23"
        case '3':	 // 2 strings to match.
          if (memcmp(Name.data()+3, ":2", 2) != 0)
            break;
          switch (Name[5]) {}
          default: break;
          case '0':	 // 1 string to match.
            return Hexagon::VQ5;	 // "v23:20"
          case '2':	 // 1 string to match.
            return Hexagon::W11;	 // "v23:22"
          }
          break;
        case '4':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":25", 3) != 0)
            break;
          return Hexagon::WR12;	 // "v24:25"
        case '5':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":24", 3) != 0)
            break;
          return Hexagon::W12;	 // "v25:24"
        case '6':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":27", 3) != 0)
            break;
          return Hexagon::WR13;	 // "v26:27"
        case '7':	 // 2 strings to match.
          if (memcmp(Name.data()+3, ":2", 2) != 0)
            break;
          switch (Name[5]) {}
          default: break;
          case '4':	 // 1 string to match.
            return Hexagon::VQ6;	 // "v27:24"
          case '6':	 // 1 string to match.
            return Hexagon::W13;	 // "v27:26"
          }
          break;
        case '8':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":29", 3) != 0)
            break;
          return Hexagon::WR14;	 // "v28:29"
        case '9':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":28", 3) != 0)
            break;
          return Hexagon::W14;	 // "v29:28"
        }
        break;
      case '3':	 // 3 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          if (memcmp(Name.data()+3, ":31", 3) != 0)
            break;
          return Hexagon::WR15;	 // "v30:31"
        case '1':	 // 2 strings to match.
          if (Name[3] != ':')
            break;
          switch (Name[4]) {}
          default: break;
          case '2':	 // 1 string to match.
            if (Name[5] != '8')
              break;
            return Hexagon::VQ7;	 // "v31:28"
          case '3':	 // 1 string to match.
            if (Name[5] != '0')
              break;
            return Hexagon::W15;	 // "v31:30"
          }
          break;
        }
        break;
      }
      break;
    }
    break;
  case 7:	 // 8 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(Name.data()+1, "fgbase", 6) != 0)
        break;
      return Hexagon::CFGBASE;	 // "cfgbase"
    case 'i':	 // 1 string to match.
      if (memcmp(Name.data()+1, "sdbgpr", 6) != 0)
        break;
      return Hexagon::ISDBGPR;	 // "isdbgpr"
    case 'm':	 // 1 string to match.
      if (memcmp(Name.data()+1, "odectl", 6) != 0)
        break;
      return Hexagon::MODECTL;	 // "modectl"
    case 'p':	 // 4 strings to match.
      if (memcmp(Name.data()+1, "mucnt", 5) != 0)
        break;
      switch (Name[6]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::PMUCNT0;	 // "pmucnt0"
      case '1':	 // 1 string to match.
        return Hexagon::PMUCNT1;	 // "pmucnt1"
      case '2':	 // 1 string to match.
        return Hexagon::PMUCNT2;	 // "pmucnt2"
      case '3':	 // 1 string to match.
        return Hexagon::PMUCNT3;	 // "pmucnt3"
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(Name.data()+1, "sr.ovf", 6) != 0)
        break;
      return Hexagon::USR_OVF;	 // "usr.ovf"
    }
    break;
  case 8:	 // 18 strings to match.
    switch (Name[0]) {}
    default: break;
    case '_':	 // 1 string to match.
      if (memcmp(Name.data()+1, "_999999", 7) != 0)
        break;
      return Hexagon::VF0;	 // "__999999"
    case 'b':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "rkptpc", 6) != 0)
        break;
      switch (Name[7]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::BRKPTPC0;	 // "brkptpc0"
      case '1':	 // 1 string to match.
        return Hexagon::BRKPTPC1;	 // "brkptpc1"
      }
      break;
    case 'f':	 // 1 string to match.
      if (memcmp(Name.data()+1, "ramekey", 7) != 0)
        break;
      return Hexagon::FRAMEKEY;	 // "framekey"
    case 'g':	 // 8 strings to match.
      if (memcmp(Name.data()+1, "pmucnt", 6) != 0)
        break;
      switch (Name[7]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::GPMUCNT0;	 // "gpmucnt0"
      case '1':	 // 1 string to match.
        return Hexagon::GPMUCNT1;	 // "gpmucnt1"
      case '2':	 // 1 string to match.
        return Hexagon::GPMUCNT2;	 // "gpmucnt2"
      case '3':	 // 1 string to match.
        return Hexagon::GPMUCNT3;	 // "gpmucnt3"
      case '4':	 // 1 string to match.
        return Hexagon::GPMUCNT4;	 // "gpmucnt4"
      case '5':	 // 1 string to match.
        return Hexagon::GPMUCNT5;	 // "gpmucnt5"
      case '6':	 // 1 string to match.
        return Hexagon::GPMUCNT6;	 // "gpmucnt6"
      case '7':	 // 1 string to match.
        return Hexagon::GPMUCNT7;	 // "gpmucnt7"
      }
      break;
    case 'i':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "sdbcfg", 6) != 0)
        break;
      switch (Name[7]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::ISDBCFG0;	 // "isdbcfg0"
      case '1':	 // 1 string to match.
        return Hexagon::ISDBCFG1;	 // "isdbcfg1"
      }
      break;
    case 'p':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "cycle", 5) != 0)
        break;
      switch (Name[6]) {}
      default: break;
      case 'h':	 // 1 string to match.
        if (Name[7] != 'i')
          break;
        return Hexagon::PCYCLEHI;	 // "pcyclehi"
      case 'l':	 // 1 string to match.
        if (Name[7] != 'o')
          break;
        return Hexagon::PCYCLELO;	 // "pcyclelo"
      }
      break;
    case 'u':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "timer", 5) != 0)
        break;
      switch (Name[6]) {}
      default: break;
      case 'h':	 // 1 string to match.
        if (Name[7] != 'i')
          break;
        return Hexagon::UTIMERHI;	 // "utimerhi"
      case 'l':	 // 1 string to match.
        if (Name[7] != 'o')
          break;
        return Hexagon::UTIMERLO;	 // "utimerlo"
      }
      break;
    }
    break;
  case 9:	 // 40 strings to match.
    switch (Name[0]) {}
    default: break;
    case '_':	 // 32 strings to match.
      if (Name[1] != '_')
        break;
      switch (Name[2]) {}
      default: break;
      case '1':	 // 31 strings to match.
        if (memcmp(Name.data()+3, "0000", 4) != 0)
          break;
        switch (Name[7]) {}
        default: break;
        case '0':	 // 10 strings to match.
          switch (Name[8]) {}
          default: break;
          case '0':	 // 1 string to match.
            return Hexagon::VF1;	 // "__1000000"
          case '1':	 // 1 string to match.
            return Hexagon::VF2;	 // "__1000001"
          case '2':	 // 1 string to match.
            return Hexagon::VF3;	 // "__1000002"
          case '3':	 // 1 string to match.
            return Hexagon::VF4;	 // "__1000003"
          case '4':	 // 1 string to match.
            return Hexagon::VF5;	 // "__1000004"
          case '5':	 // 1 string to match.
            return Hexagon::VF6;	 // "__1000005"
          case '6':	 // 1 string to match.
            return Hexagon::VF7;	 // "__1000006"
          case '7':	 // 1 string to match.
            return Hexagon::VF8;	 // "__1000007"
          case '8':	 // 1 string to match.
            return Hexagon::VF9;	 // "__1000008"
          case '9':	 // 1 string to match.
            return Hexagon::VF10;	 // "__1000009"
          }
          break;
        case '1':	 // 10 strings to match.
          switch (Name[8]) {}
          default: break;
          case '0':	 // 1 string to match.
            return Hexagon::VF11;	 // "__1000010"
          case '1':	 // 1 string to match.
            return Hexagon::VF12;	 // "__1000011"
          case '2':	 // 1 string to match.
            return Hexagon::VF13;	 // "__1000012"
          case '3':	 // 1 string to match.
            return Hexagon::VF14;	 // "__1000013"
          case '4':	 // 1 string to match.
            return Hexagon::VF15;	 // "__1000014"
          case '5':	 // 1 string to match.
            return Hexagon::VF16;	 // "__1000015"
          case '6':	 // 1 string to match.
            return Hexagon::VF17;	 // "__1000016"
          case '7':	 // 1 string to match.
            return Hexagon::VF18;	 // "__1000017"
          case '8':	 // 1 string to match.
            return Hexagon::VF19;	 // "__1000018"
          case '9':	 // 1 string to match.
            return Hexagon::VF20;	 // "__1000019"
          }
          break;
        case '2':	 // 10 strings to match.
          switch (Name[8]) {}
          default: break;
          case '0':	 // 1 string to match.
            return Hexagon::VF21;	 // "__1000020"
          case '1':	 // 1 string to match.
            return Hexagon::VF22;	 // "__1000021"
          case '2':	 // 1 string to match.
            return Hexagon::VF23;	 // "__1000022"
          case '3':	 // 1 string to match.
            return Hexagon::VF24;	 // "__1000023"
          case '4':	 // 1 string to match.
            return Hexagon::VF25;	 // "__1000024"
          case '5':	 // 1 string to match.
            return Hexagon::VF26;	 // "__1000025"
          case '6':	 // 1 string to match.
            return Hexagon::VF27;	 // "__1000026"
          case '7':	 // 1 string to match.
            return Hexagon::VF28;	 // "__1000027"
          case '8':	 // 1 string to match.
            return Hexagon::VF29;	 // "__1000028"
          case '9':	 // 1 string to match.
            return Hexagon::VF30;	 // "__1000029"
          }
          break;
        case '3':	 // 1 string to match.
          if (Name[8] != '0')
            break;
          return Hexagon::VF31;	 // "__1000030"
        }
        break;
      case '9':	 // 1 string to match.
        if (memcmp(Name.data()+3, "999999", 6) != 0)
          break;
        return Hexagon::VFR0;	 // "__9999999"
      }
      break;
    case 'b':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "rkptcfg", 7) != 0)
        break;
      switch (Name[8]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::BRKPTCFG0;	 // "brkptcfg0"
      case '1':	 // 1 string to match.
        return Hexagon::BRKPTCFG1;	 // "brkptcfg1"
      }
      break;
    case 'g':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "pcycle", 6) != 0)
        break;
      switch (Name[7]) {}
      default: break;
      case 'h':	 // 1 string to match.
        if (Name[8] != 'i')
          break;
        return Hexagon::GPCYCLEHI;	 // "gpcyclehi"
      case 'l':	 // 1 string to match.
        if (Name[8] != 'o')
          break;
        return Hexagon::GPCYCLELO;	 // "gpcyclelo"
      }
      break;
    case 'i':	 // 1 string to match.
      if (memcmp(Name.data()+1, "sdbmbxin", 8) != 0)
        break;
      return Hexagon::ISDBMBXIN;	 // "isdbmbxin"
    case 'p':	 // 1 string to match.
      if (memcmp(Name.data()+1, "muevtcfg", 8) != 0)
        break;
      return Hexagon::PMUEVTCFG;	 // "pmuevtcfg"
    case 'u':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "pcycle", 6) != 0)
        break;
      switch (Name[7]) {}
      default: break;
      case 'h':	 // 1 string to match.
        if (Name[8] != 'i')
          break;
        return Hexagon::UPCYCLEHI;	 // "upcyclehi"
      case 'l':	 // 1 string to match.
        if (Name[8] != 'o')
          break;
        return Hexagon::UPCYCLELO;	 // "upcyclelo"
      }
      break;
    }
    break;
  case 10:	 // 35 strings to match.
    switch (Name[0]) {}
    default: break;
    case '_':	 // 31 strings to match.
      if (memcmp(Name.data()+1, "_100000", 7) != 0)
        break;
      switch (Name[8]) {}
      default: break;
      case '0':	 // 10 strings to match.
        switch (Name[9]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::VFR1;	 // "__10000000"
        case '1':	 // 1 string to match.
          return Hexagon::VFR2;	 // "__10000001"
        case '2':	 // 1 string to match.
          return Hexagon::VFR3;	 // "__10000002"
        case '3':	 // 1 string to match.
          return Hexagon::VFR4;	 // "__10000003"
        case '4':	 // 1 string to match.
          return Hexagon::VFR5;	 // "__10000004"
        case '5':	 // 1 string to match.
          return Hexagon::VFR6;	 // "__10000005"
        case '6':	 // 1 string to match.
          return Hexagon::VFR7;	 // "__10000006"
        case '7':	 // 1 string to match.
          return Hexagon::VFR8;	 // "__10000007"
        case '8':	 // 1 string to match.
          return Hexagon::VFR9;	 // "__10000008"
        case '9':	 // 1 string to match.
          return Hexagon::VFR10;	 // "__10000009"
        }
        break;
      case '1':	 // 10 strings to match.
        switch (Name[9]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::VFR11;	 // "__10000010"
        case '1':	 // 1 string to match.
          return Hexagon::VFR12;	 // "__10000011"
        case '2':	 // 1 string to match.
          return Hexagon::VFR13;	 // "__10000012"
        case '3':	 // 1 string to match.
          return Hexagon::VFR14;	 // "__10000013"
        case '4':	 // 1 string to match.
          return Hexagon::VFR15;	 // "__10000014"
        case '5':	 // 1 string to match.
          return Hexagon::VFR16;	 // "__10000015"
        case '6':	 // 1 string to match.
          return Hexagon::VFR17;	 // "__10000016"
        case '7':	 // 1 string to match.
          return Hexagon::VFR18;	 // "__10000017"
        case '8':	 // 1 string to match.
          return Hexagon::VFR19;	 // "__10000018"
        case '9':	 // 1 string to match.
          return Hexagon::VFR20;	 // "__10000019"
        }
        break;
      case '2':	 // 10 strings to match.
        switch (Name[9]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::VFR21;	 // "__10000020"
        case '1':	 // 1 string to match.
          return Hexagon::VFR22;	 // "__10000021"
        case '2':	 // 1 string to match.
          return Hexagon::VFR23;	 // "__10000022"
        case '3':	 // 1 string to match.
          return Hexagon::VFR24;	 // "__10000023"
        case '4':	 // 1 string to match.
          return Hexagon::VFR25;	 // "__10000024"
        case '5':	 // 1 string to match.
          return Hexagon::VFR26;	 // "__10000025"
        case '6':	 // 1 string to match.
          return Hexagon::VFR27;	 // "__10000026"
        case '7':	 // 1 string to match.
          return Hexagon::VFR28;	 // "__10000027"
        case '8':	 // 1 string to match.
          return Hexagon::VFR29;	 // "__10000028"
        case '9':	 // 1 string to match.
          return Hexagon::VFR30;	 // "__10000029"
        }
        break;
      case '3':	 // 1 string to match.
        if (Name[9] != '0')
          break;
        return Hexagon::VFR31;	 // "__10000030"
      }
      break;
    case 'f':	 // 1 string to match.
      if (memcmp(Name.data()+1, "ramelimit", 9) != 0)
        break;
      return Hexagon::FRAMELIMIT;	 // "framelimit"
    case 'i':	 // 1 string to match.
      if (memcmp(Name.data()+1, "sdbmbxout", 9) != 0)
        break;
      return Hexagon::ISDBMBXOUT;	 // "isdbmbxout"
    case 'p':	 // 2 strings to match.
      if (memcmp(Name.data()+1, "ktcount", 7) != 0)
        break;
      switch (Name[8]) {}
      default: break;
      case 'h':	 // 1 string to match.
        if (Name[9] != 'i')
          break;
        return Hexagon::PKTCOUNTHI;	 // "pktcounthi"
      case 'l':	 // 1 string to match.
        if (Name[9] != 'o')
          break;
        return Hexagon::PKTCOUNTLO;	 // "pktcountlo"
      }
      break;
    }
    break;
  }
  return Hexagon::NoRegister;
}

static MCRegister MatchRegisterAltName(StringRef Name) {}
  switch (Name.size()) {}
  default: break;
  case 2:	 // 27 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'c':	 // 10 strings to match.
      switch (Name[1]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::SA0;	 // "c0"
      case '1':	 // 1 string to match.
        return Hexagon::LC0;	 // "c1"
      case '2':	 // 1 string to match.
        return Hexagon::SA1;	 // "c2"
      case '3':	 // 1 string to match.
        return Hexagon::LC1;	 // "c3"
      case '4':	 // 1 string to match.
        return Hexagon::P3_0;	 // "c4"
      case '5':	 // 1 string to match.
        return Hexagon::C5;	 // "c5"
      case '6':	 // 1 string to match.
        return Hexagon::M0;	 // "c6"
      case '7':	 // 1 string to match.
        return Hexagon::M1;	 // "c7"
      case '8':	 // 1 string to match.
        return Hexagon::USR;	 // "c8"
      case '9':	 // 1 string to match.
        return Hexagon::PC;	 // "c9"
      }
      break;
    case 'f':	 // 1 string to match.
      if (Name[1] != 'p')
        break;
      return Hexagon::R30;	 // "fp"
    case 'g':	 // 4 strings to match.
      switch (Name[1]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::GELR;	 // "g0"
      case '1':	 // 1 string to match.
        return Hexagon::GSR;	 // "g1"
      case '2':	 // 1 string to match.
        return Hexagon::GOSP;	 // "g2"
      case '3':	 // 1 string to match.
        return Hexagon::G3;	 // "g3"
      }
      break;
    case 'l':	 // 1 string to match.
      if (Name[1] != 'r')
        break;
      return Hexagon::R31;	 // "lr"
    case 's':	 // 11 strings to match.
      switch (Name[1]) {}
      default: break;
      case '0':	 // 1 string to match.
        return Hexagon::SGP0;	 // "s0"
      case '1':	 // 1 string to match.
        return Hexagon::SGP1;	 // "s1"
      case '2':	 // 1 string to match.
        return Hexagon::STID;	 // "s2"
      case '3':	 // 1 string to match.
        return Hexagon::ELR;	 // "s3"
      case '4':	 // 1 string to match.
        return Hexagon::BADVA0;	 // "s4"
      case '5':	 // 1 string to match.
        return Hexagon::BADVA1;	 // "s5"
      case '6':	 // 1 string to match.
        return Hexagon::SSR;	 // "s6"
      case '7':	 // 1 string to match.
        return Hexagon::CCR;	 // "s7"
      case '8':	 // 1 string to match.
        return Hexagon::HTID;	 // "s8"
      case '9':	 // 1 string to match.
        return Hexagon::BADVA;	 // "s9"
      case 'p':	 // 1 string to match.
        return Hexagon::R29;	 // "sp"
      }
      break;
    }
    break;
  case 3:	 // 52 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'c':	 // 12 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 10 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::UGP;	 // "c10"
        case '1':	 // 1 string to match.
          return Hexagon::GP;	 // "c11"
        case '2':	 // 1 string to match.
          return Hexagon::CS0;	 // "c12"
        case '3':	 // 1 string to match.
          return Hexagon::CS1;	 // "c13"
        case '4':	 // 1 string to match.
          return Hexagon::UPCYCLELO;	 // "c14"
        case '5':	 // 1 string to match.
          return Hexagon::UPCYCLEHI;	 // "c15"
        case '6':	 // 1 string to match.
          return Hexagon::FRAMELIMIT;	 // "c16"
        case '7':	 // 1 string to match.
          return Hexagon::FRAMEKEY;	 // "c17"
        case '8':	 // 1 string to match.
          return Hexagon::PKTCOUNTLO;	 // "c18"
        case '9':	 // 1 string to match.
          return Hexagon::PKTCOUNTHI;	 // "c19"
        }
        break;
      case '3':	 // 2 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::UTIMERLO;	 // "c30"
        case '1':	 // 1 string to match.
          return Hexagon::UTIMERHI;	 // "c31"
        }
        break;
      }
      break;
    case 'g':	 // 10 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 4 strings to match.
        switch (Name[2]) {}
        default: break;
        case '6':	 // 1 string to match.
          return Hexagon::GPMUCNT4;	 // "g16"
        case '7':	 // 1 string to match.
          return Hexagon::GPMUCNT5;	 // "g17"
        case '8':	 // 1 string to match.
          return Hexagon::GPMUCNT6;	 // "g18"
        case '9':	 // 1 string to match.
          return Hexagon::GPMUCNT7;	 // "g19"
        }
        break;
      case '2':	 // 6 strings to match.
        switch (Name[2]) {}
        default: break;
        case '4':	 // 1 string to match.
          return Hexagon::GPCYCLELO;	 // "g24"
        case '5':	 // 1 string to match.
          return Hexagon::GPCYCLEHI;	 // "g25"
        case '6':	 // 1 string to match.
          return Hexagon::GPMUCNT0;	 // "g26"
        case '7':	 // 1 string to match.
          return Hexagon::GPMUCNT1;	 // "g27"
        case '8':	 // 1 string to match.
          return Hexagon::GPMUCNT2;	 // "g28"
        case '9':	 // 1 string to match.
          return Hexagon::GPMUCNT3;	 // "g29"
        }
        break;
      }
      break;
    case 's':	 // 30 strings to match.
      switch (Name[1]) {}
      default: break;
      case '1':	 // 5 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::IMASK;	 // "s10"
        case '6':	 // 1 string to match.
          return Hexagon::EVB;	 // "s16"
        case '7':	 // 1 string to match.
          return Hexagon::MODECTL;	 // "s17"
        case '8':	 // 1 string to match.
          return Hexagon::SYSCFG;	 // "s18"
        case '9':	 // 1 string to match.
          return Hexagon::S19;	 // "s19"
        }
        break;
      case '2':	 // 6 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::S20;	 // "s20"
        case '1':	 // 1 string to match.
          return Hexagon::VID;	 // "s21"
        case '2':	 // 1 string to match.
          return Hexagon::S22;	 // "s22"
        case '7':	 // 1 string to match.
          return Hexagon::CFGBASE;	 // "s27"
        case '8':	 // 1 string to match.
          return Hexagon::DIAG;	 // "s28"
        case '9':	 // 1 string to match.
          return Hexagon::REV;	 // "s29"
        }
        break;
      case '3':	 // 9 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::PCYCLELO;	 // "s30"
        case '1':	 // 1 string to match.
          return Hexagon::PCYCLEHI;	 // "s31"
        case '2':	 // 1 string to match.
          return Hexagon::ISDBST;	 // "s32"
        case '3':	 // 1 string to match.
          return Hexagon::ISDBCFG0;	 // "s33"
        case '4':	 // 1 string to match.
          return Hexagon::ISDBCFG1;	 // "s34"
        case '6':	 // 1 string to match.
          return Hexagon::BRKPTPC0;	 // "s36"
        case '7':	 // 1 string to match.
          return Hexagon::BRKPTCFG0;	 // "s37"
        case '8':	 // 1 string to match.
          return Hexagon::BRKPTPC1;	 // "s38"
        case '9':	 // 1 string to match.
          return Hexagon::BRKPTCFG1;	 // "s39"
        }
        break;
      case '4':	 // 6 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::ISDBMBXIN;	 // "s40"
        case '1':	 // 1 string to match.
          return Hexagon::ISDBMBXOUT;	 // "s41"
        case '2':	 // 1 string to match.
          return Hexagon::ISDBEN;	 // "s42"
        case '3':	 // 1 string to match.
          return Hexagon::ISDBGPR;	 // "s43"
        case '8':	 // 1 string to match.
          return Hexagon::PMUCNT0;	 // "s48"
        case '9':	 // 1 string to match.
          return Hexagon::PMUCNT1;	 // "s49"
        }
        break;
      case '5':	 // 4 strings to match.
        switch (Name[2]) {}
        default: break;
        case '0':	 // 1 string to match.
          return Hexagon::PMUCNT2;	 // "s50"
        case '1':	 // 1 string to match.
          return Hexagon::PMUCNT3;	 // "s51"
        case '2':	 // 1 string to match.
          return Hexagon::PMUEVTCFG;	 // "s52"
        case '3':	 // 1 string to match.
          return Hexagon::PMUCFG;	 // "s53"
        }
        break;
      }
      break;
    }
    break;
  case 4:	 // 1 string to match.
    if (memcmp(Name.data()+0, "m1:0", 4) != 0)
      break;
    return Hexagon::C7_6;	 // "m1:0"
  case 5:	 // 2 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(Name.data()+1, "s1:0", 4) != 0)
        break;
      return Hexagon::CS;	 // "cs1:0"
    case 'l':	 // 1 string to match.
      if (memcmp(Name.data()+1, "r:fp", 4) != 0)
        break;
      return Hexagon::D15;	 // "lr:fp"
    }
    break;
  case 6:	 // 3 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'p':	 // 1 string to match.
      if (memcmp(Name.data()+1, "cycle", 5) != 0)
        break;
      return Hexagon::S31_30;	 // "pcycle"
    case 's':	 // 1 string to match.
      if (memcmp(Name.data()+1, "gp1:0", 5) != 0)
        break;
      return Hexagon::SGP1_0;	 // "sgp1:0"
    case 'u':	 // 1 string to match.
      if (memcmp(Name.data()+1, "timer", 5) != 0)
        break;
      return Hexagon::UTIMER;	 // "utimer"
    }
    break;
  case 7:	 // 4 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(Name.data()+1, "cr:ssr", 6) != 0)
        break;
      return Hexagon::S7_6;	 // "ccr:ssr"
    case 'l':	 // 2 strings to match.
      if (Name[1] != 'c')
        break;
      switch (Name[2]) {}
      default: break;
      case '0':	 // 1 string to match.
        if (memcmp(Name.data()+3, ":sa0", 4) != 0)
          break;
        return Hexagon::C1_0;	 // "lc0:sa0"
      case '1':	 // 1 string to match.
        if (memcmp(Name.data()+3, ":sa1", 4) != 0)
          break;
        return Hexagon::C3_2;	 // "lc1:sa1"
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(Name.data()+1, "pcycle", 6) != 0)
        break;
      return Hexagon::UPCYCLE;	 // "upcycle"
    }
    break;
  case 8:	 // 2 strings to match.
    switch (Name[0]) {}
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(Name.data()+1, "adva1:0", 7) != 0)
        break;
      return Hexagon::S5_4;	 // "badva1:0"
    case 'p':	 // 1 string to match.
      if (memcmp(Name.data()+1, "ktcount", 7) != 0)
        break;
      return Hexagon::PKTCOUNT;	 // "pktcount"
    }
    break;
  }
  return Hexagon::NoRegister;
}

#endif // GET_REGISTER_MATCHER


#ifdef GET_SUBTARGET_FEATURE_NAME
#undef GET_SUBTARGET_FEATURE_NAME

// User-level names for subtarget features that participate in
// instruction matching.
static const char *getSubtargetFeatureName(uint64_t Val) {}
  switch(Val) {}
  case Feature_HasV5Bit: return "";
  case Feature_HasV55Bit: return "";
  case Feature_HasV60Bit: return "";
  case Feature_HasV62Bit: return "";
  case Feature_HasV65Bit: return "";
  case Feature_HasV66Bit: return "";
  case Feature_HasV67Bit: return "";
  case Feature_HasV68Bit: return "";
  case Feature_HasV69Bit: return "";
  case Feature_HasV71Bit: return "";
  case Feature_HasV73Bit: return "";
  case Feature_UseHVX64BBit: return "";
  case Feature_UseHVX128BBit: return "";
  case Feature_UseHVXBit: return "";
  case Feature_UseHVXV60Bit: return "";
  case Feature_UseHVXV62Bit: return "";
  case Feature_UseHVXV65Bit: return "";
  case Feature_UseHVXV66Bit: return "";
  case Feature_UseHVXV67Bit: return "";
  case Feature_UseHVXV68Bit: return "";
  case Feature_UseHVXV69Bit: return "";
  case Feature_UseHVXV71Bit: return "";
  case Feature_UseHVXV73Bit: return "";
  case Feature_UseAudioBit: return "";
  case Feature_UseZRegBit: return "";
  case Feature_HasPreV65Bit: return "";
  case Feature_UseHVXIEEEFPBit: return "";
  case Feature_UseHVXQFloatBit: return "";
  case Feature_HasMemNoShufBit: return "";
  case Feature_UseCabacBit: return "";
  default: return "(unknown)";
  }
}

#endif // GET_SUBTARGET_FEATURE_NAME


#ifdef GET_MATCHER_IMPLEMENTATION
#undef GET_MATCHER_IMPLEMENTATION

enum {}
  Tie0_0_0,
  Tie0_0_6,
  Tie0_0_7,
  Tie0_0_8,
  Tie0_2_2,
  Tie0_6_6,
  Tie0_7_7,
  Tie1_0_0,
  Tie1_3_3,
  Tie1_9_9,
  Tie1_10_10,
  Tie1_11_11,
};

static const uint8_t TiedAsmOperandTable[][3] =