#ifdef GET_ASSEMBLER_HEADER
#undef GET_ASSEMBLER_HEADER
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
#ifdef GET_OPERAND_DIAGNOSTIC_TYPES
#undef GET_OPERAND_DIAGNOSTIC_TYPES
#endif
#ifdef GET_REGISTER_MATCHER
#undef GET_REGISTER_MATCHER
enum SubtargetFeatureBits : uint8_t { … }return Hexagon::V9;
}
break;
}
break;
case 3:
switch (Name[0]) { … }
default: break;
case 'c':
switch (Name[1]) { … }
default: break;
case 'c':
if (Name[2] != 'r')
break;
return Hexagon::CCR;
case 's':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::CS0;
case '1':
return Hexagon::CS1;
}
break;
}
break;
case 'e':
switch (Name[1]) { … }
default: break;
case 'l':
if (Name[2] != 'r')
break;
return Hexagon::ELR;
case 'v':
if (Name[2] != 'b')
break;
return Hexagon::EVB;
}
break;
case 'g':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::G10;
case '1':
return Hexagon::G11;
case '2':
return Hexagon::G12;
case '3':
return Hexagon::G13;
case '4':
return Hexagon::G14;
case '5':
return Hexagon::G15;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::G20;
case '1':
return Hexagon::G21;
case '2':
return Hexagon::G22;
case '3':
return Hexagon::G23;
}
break;
case '3':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::G30;
case '1':
return Hexagon::G31;
}
break;
case 's':
if (Name[2] != 'r')
break;
return Hexagon::GSR;
}
break;
case 'l':
if (Name[1] != 'c')
break;
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::LC0;
case '1':
return Hexagon::LC1;
}
break;
case 'r':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::R10;
case '1':
return Hexagon::R11;
case '2':
return Hexagon::R12;
case '3':
return Hexagon::R13;
case '4':
return Hexagon::R14;
case '5':
return Hexagon::R15;
case '6':
return Hexagon::R16;
case '7':
return Hexagon::R17;
case '8':
return Hexagon::R18;
case '9':
return Hexagon::R19;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::R20;
case '1':
return Hexagon::R21;
case '2':
return Hexagon::R22;
case '3':
return Hexagon::R23;
case '4':
return Hexagon::R24;
case '5':
return Hexagon::R25;
case '6':
return Hexagon::R26;
case '7':
return Hexagon::R27;
case '8':
return Hexagon::R28;
case '9':
return Hexagon::R29;
}
break;
case '3':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::R30;
case '1':
return Hexagon::R31;
}
break;
case 'e':
if (Name[2] != 'v')
break;
return Hexagon::REV;
}
break;
case 's':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '1':
return Hexagon::S11;
case '2':
return Hexagon::S12;
case '3':
return Hexagon::S13;
case '4':
return Hexagon::S14;
case '5':
return Hexagon::S15;
case '9':
return Hexagon::S19;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::S20;
case '2':
return Hexagon::S22;
case '3':
return Hexagon::S23;
case '4':
return Hexagon::S24;
case '5':
return Hexagon::S25;
case '6':
return Hexagon::S26;
}
break;
case '3':
if (Name[2] != '5')
break;
return Hexagon::S35;
case '4':
switch (Name[2]) { … }
default: break;
case '4':
return Hexagon::S44;
case '5':
return Hexagon::S45;
case '6':
return Hexagon::S46;
case '7':
return Hexagon::S47;
}
break;
case '5':
switch (Name[2]) { … }
default: break;
case '4':
return Hexagon::S54;
case '5':
return Hexagon::S55;
case '6':
return Hexagon::S56;
case '7':
return Hexagon::S57;
case '8':
return Hexagon::S58;
case '9':
return Hexagon::S59;
}
break;
case '6':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::S60;
case '1':
return Hexagon::S61;
case '2':
return Hexagon::S62;
case '3':
return Hexagon::S63;
case '4':
return Hexagon::S64;
case '5':
return Hexagon::S65;
case '6':
return Hexagon::S66;
case '7':
return Hexagon::S67;
case '8':
return Hexagon::S68;
case '9':
return Hexagon::S69;
}
break;
case '7':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::S70;
case '1':
return Hexagon::S71;
case '2':
return Hexagon::S72;
case '3':
return Hexagon::S73;
case '4':
return Hexagon::S74;
case '5':
return Hexagon::S75;
case '6':
return Hexagon::S76;
case '7':
return Hexagon::S77;
case '8':
return Hexagon::S78;
case '9':
return Hexagon::S79;
}
break;
case '8':
if (Name[2] != '0')
break;
return Hexagon::S80;
case 'a':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::SA0;
case '1':
return Hexagon::SA1;
}
break;
case 's':
if (Name[2] != 'r')
break;
return Hexagon::SSR;
}
break;
case 'u':
switch (Name[1]) { … }
default: break;
case 'g':
if (Name[2] != 'p')
break;
return Hexagon::UGP;
case 's':
if (Name[2] != 'r')
break;
return Hexagon::USR;
}
break;
case 'v':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::V10;
case '1':
return Hexagon::V11;
case '2':
return Hexagon::V12;
case '3':
return Hexagon::V13;
case '4':
return Hexagon::V14;
case '5':
return Hexagon::V15;
case '6':
return Hexagon::V16;
case '7':
return Hexagon::V17;
case '8':
return Hexagon::V18;
case '9':
return Hexagon::V19;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::V20;
case '1':
return Hexagon::V21;
case '2':
return Hexagon::V22;
case '3':
return Hexagon::V23;
case '4':
return Hexagon::V24;
case '5':
return Hexagon::V25;
case '6':
return Hexagon::V26;
case '7':
return Hexagon::V27;
case '8':
return Hexagon::V28;
case '9':
return Hexagon::V29;
}
break;
case '3':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::V30;
case '1':
return Hexagon::V31;
}
break;
case 'i':
if (Name[2] != 'd')
break;
return Hexagon::VID;
}
break;
}
break;
case 4:
switch (Name[0]) { … }
default: break;
case 'c':
switch (Name[1]) { … }
default: break;
case '1':
if (memcmp(Name.data()+2, ":0", 2) != 0)
break;
return Hexagon::C1_0;
case '3':
if (memcmp(Name.data()+2, ":2", 2) != 0)
break;
return Hexagon::C3_2;
case '5':
if (memcmp(Name.data()+2, ":4", 2) != 0)
break;
return Hexagon::C5_4;
case '7':
if (memcmp(Name.data()+2, ":6", 2) != 0)
break;
return Hexagon::C7_6;
case '9':
if (memcmp(Name.data()+2, ":8", 2) != 0)
break;
return Hexagon::C9_8;
}
break;
case 'd':
if (memcmp(Name.data()+1, "iag", 3) != 0)
break;
return Hexagon::DIAG;
case 'g':
switch (Name[1]) { … }
default: break;
case '1':
if (memcmp(Name.data()+2, ":0", 2) != 0)
break;
return Hexagon::G1_0;
case '3':
if (memcmp(Name.data()+2, ":2", 2) != 0)
break;
return Hexagon::G3_2;
case '5':
if (memcmp(Name.data()+2, ":4", 2) != 0)
break;
return Hexagon::G5_4;
case '7':
if (memcmp(Name.data()+2, ":6", 2) != 0)
break;
return Hexagon::G7_6;
case '9':
if (memcmp(Name.data()+2, ":8", 2) != 0)
break;
return Hexagon::G9_8;
case 'e':
if (memcmp(Name.data()+2, "lr", 2) != 0)
break;
return Hexagon::GELR;
case 'o':
if (memcmp(Name.data()+2, "sp", 2) != 0)
break;
return Hexagon::GOSP;
}
break;
case 'h':
if (memcmp(Name.data()+1, "tid", 3) != 0)
break;
return Hexagon::HTID;
case 'p':
if (memcmp(Name.data()+1, "3:0", 3) != 0)
break;
return Hexagon::P3_0;
case 'r':
switch (Name[1]) { … }
default: break;
case '1':
if (memcmp(Name.data()+2, ":0", 2) != 0)
break;
return Hexagon::D0;
case '3':
if (memcmp(Name.data()+2, ":2", 2) != 0)
break;
return Hexagon::D1;
case '5':
if (memcmp(Name.data()+2, ":4", 2) != 0)
break;
return Hexagon::D2;
case '7':
if (memcmp(Name.data()+2, ":6", 2) != 0)
break;
return Hexagon::D3;
case '9':
if (memcmp(Name.data()+2, ":8", 2) != 0)
break;
return Hexagon::D4;
}
break;
case 's':
switch (Name[1]) { … }
default: break;
case '1':
if (memcmp(Name.data()+2, ":0", 2) != 0)
break;
return Hexagon::SGP1_0;
case '3':
if (memcmp(Name.data()+2, ":2", 2) != 0)
break;
return Hexagon::S3_2;
case '5':
if (memcmp(Name.data()+2, ":4", 2) != 0)
break;
return Hexagon::S5_4;
case '7':
if (memcmp(Name.data()+2, ":6", 2) != 0)
break;
return Hexagon::S7_6;
case '9':
if (memcmp(Name.data()+2, ":8", 2) != 0)
break;
return Hexagon::S9_8;
case 'g':
if (Name[2] != 'p')
break;
switch (Name[3]) { … }
default: break;
case '0':
return Hexagon::SGP0;
case '1':
return Hexagon::SGP1;
}
break;
case 't':
if (memcmp(Name.data()+2, "id", 2) != 0)
break;
return Hexagon::STID;
}
break;
case 'v':
switch (Name[1]) { … }
default: break;
case '0':
if (memcmp(Name.data()+2, ":1", 2) != 0)
break;
return Hexagon::WR0;
case '1':
if (memcmp(Name.data()+2, ":0", 2) != 0)
break;
return Hexagon::W0;
case '2':
if (memcmp(Name.data()+2, ":3", 2) != 0)
break;
return Hexagon::WR1;
case '3':
if (Name[2] != ':')
break;
switch (Name[3]) { … }
default: break;
case '0':
return Hexagon::VQ0;
case '2':
return Hexagon::W1;
}
break;
case '4':
if (memcmp(Name.data()+2, ":5", 2) != 0)
break;
return Hexagon::WR2;
case '5':
if (memcmp(Name.data()+2, ":4", 2) != 0)
break;
return Hexagon::W2;
case '6':
if (memcmp(Name.data()+2, ":7", 2) != 0)
break;
return Hexagon::WR3;
case '7':
if (Name[2] != ':')
break;
switch (Name[3]) { … }
default: break;
case '4':
return Hexagon::VQ1;
case '6':
return Hexagon::W3;
}
break;
case '8':
if (memcmp(Name.data()+2, ":9", 2) != 0)
break;
return Hexagon::WR4;
case '9':
if (memcmp(Name.data()+2, ":8", 2) != 0)
break;
return Hexagon::W4;
case 't':
if (memcmp(Name.data()+2, "mp", 2) != 0)
break;
return Hexagon::VTMP;
}
break;
}
break;
case 5:
switch (Name[0]) { … }
default: break;
case 'b':
if (memcmp(Name.data()+1, "adva", 4) != 0)
break;
return Hexagon::BADVA;
case 'i':
if (memcmp(Name.data()+1, "mask", 4) != 0)
break;
return Hexagon::IMASK;
case 'v':
if (memcmp(Name.data()+1, "11:8", 4) != 0)
break;
return Hexagon::VQ2;
}
break;
case 6:
switch (Name[0]) { … }
default: break;
case 'b':
if (memcmp(Name.data()+1, "adva", 4) != 0)
break;
switch (Name[5]) { … }
default: break;
case '0':
return Hexagon::BADVA0;
case '1':
return Hexagon::BADVA1;
}
break;
case 'c':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":10", 3) != 0)
break;
return Hexagon::C11_10;
case '3':
if (memcmp(Name.data()+3, ":12", 3) != 0)
break;
return Hexagon::CS;
case '5':
if (memcmp(Name.data()+3, ":14", 3) != 0)
break;
return Hexagon::UPCYCLE;
case '7':
if (memcmp(Name.data()+3, ":16", 3) != 0)
break;
return Hexagon::C17_16;
case '9':
if (memcmp(Name.data()+3, ":18", 3) != 0)
break;
return Hexagon::PKTCOUNT;
}
break;
case '3':
if (memcmp(Name.data()+2, "1:30", 4) != 0)
break;
return Hexagon::UTIMER;
}
break;
case 'g':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":10", 3) != 0)
break;
return Hexagon::G11_10;
case '3':
if (memcmp(Name.data()+3, ":12", 3) != 0)
break;
return Hexagon::G13_12;
case '5':
if (memcmp(Name.data()+3, ":14", 3) != 0)
break;
return Hexagon::G15_14;
case '7':
if (memcmp(Name.data()+3, ":16", 3) != 0)
break;
return Hexagon::G17_16;
case '9':
if (memcmp(Name.data()+3, ":18", 3) != 0)
break;
return Hexagon::G19_18;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":20", 3) != 0)
break;
return Hexagon::G21_20;
case '3':
if (memcmp(Name.data()+3, ":22", 3) != 0)
break;
return Hexagon::G23_22;
case '5':
if (memcmp(Name.data()+3, ":24", 3) != 0)
break;
return Hexagon::G25_24;
case '7':
if (memcmp(Name.data()+3, ":26", 3) != 0)
break;
return Hexagon::G27_26;
case '9':
if (memcmp(Name.data()+3, ":28", 3) != 0)
break;
return Hexagon::G29_28;
}
break;
case '3':
if (memcmp(Name.data()+2, "1:30", 4) != 0)
break;
return Hexagon::G31_30;
case 'b':
if (memcmp(Name.data()+2, "adva", 4) != 0)
break;
return Hexagon::G3;
}
break;
case 'i':
if (memcmp(Name.data()+1, "sdb", 3) != 0)
break;
switch (Name[4]) { … }
default: break;
case 'e':
if (Name[5] != 'n')
break;
return Hexagon::ISDBEN;
case 's':
if (Name[5] != 't')
break;
return Hexagon::ISDBST;
}
break;
case 'p':
if (memcmp(Name.data()+1, "mucfg", 5) != 0)
break;
return Hexagon::PMUCFG;
case 'r':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":10", 3) != 0)
break;
return Hexagon::D5;
case '3':
if (memcmp(Name.data()+3, ":12", 3) != 0)
break;
return Hexagon::D6;
case '5':
if (memcmp(Name.data()+3, ":14", 3) != 0)
break;
return Hexagon::D7;
case '7':
if (memcmp(Name.data()+3, ":16", 3) != 0)
break;
return Hexagon::D8;
case '9':
if (memcmp(Name.data()+3, ":18", 3) != 0)
break;
return Hexagon::D9;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":20", 3) != 0)
break;
return Hexagon::D10;
case '3':
if (memcmp(Name.data()+3, ":22", 3) != 0)
break;
return Hexagon::D11;
case '5':
if (memcmp(Name.data()+3, ":24", 3) != 0)
break;
return Hexagon::D12;
case '7':
if (memcmp(Name.data()+3, ":26", 3) != 0)
break;
return Hexagon::D13;
case '9':
if (memcmp(Name.data()+3, ":28", 3) != 0)
break;
return Hexagon::D14;
}
break;
case '3':
if (memcmp(Name.data()+2, "1:30", 4) != 0)
break;
return Hexagon::D15;
}
break;
case 's':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":10", 3) != 0)
break;
return Hexagon::S11_10;
case '3':
if (memcmp(Name.data()+3, ":12", 3) != 0)
break;
return Hexagon::S13_12;
case '5':
if (memcmp(Name.data()+3, ":14", 3) != 0)
break;
return Hexagon::S15_14;
case '7':
if (memcmp(Name.data()+3, ":16", 3) != 0)
break;
return Hexagon::S17_16;
case '9':
if (memcmp(Name.data()+3, ":18", 3) != 0)
break;
return Hexagon::S19_18;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":20", 3) != 0)
break;
return Hexagon::S21_20;
case '3':
if (memcmp(Name.data()+3, ":22", 3) != 0)
break;
return Hexagon::S23_22;
case '5':
if (memcmp(Name.data()+3, ":24", 3) != 0)
break;
return Hexagon::S25_24;
case '7':
if (memcmp(Name.data()+3, ":26", 3) != 0)
break;
return Hexagon::S27_26;
case '9':
if (memcmp(Name.data()+3, ":28", 3) != 0)
break;
return Hexagon::S29_28;
}
break;
case '3':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":30", 3) != 0)
break;
return Hexagon::S31_30;
case '3':
if (memcmp(Name.data()+3, ":32", 3) != 0)
break;
return Hexagon::S33_32;
case '5':
if (memcmp(Name.data()+3, ":34", 3) != 0)
break;
return Hexagon::S35_34;
case '7':
if (memcmp(Name.data()+3, ":36", 3) != 0)
break;
return Hexagon::S37_36;
case '9':
if (memcmp(Name.data()+3, ":38", 3) != 0)
break;
return Hexagon::S39_38;
}
break;
case '4':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":40", 3) != 0)
break;
return Hexagon::S41_40;
case '3':
if (memcmp(Name.data()+3, ":42", 3) != 0)
break;
return Hexagon::S43_42;
case '5':
if (memcmp(Name.data()+3, ":44", 3) != 0)
break;
return Hexagon::S45_44;
case '7':
if (memcmp(Name.data()+3, ":46", 3) != 0)
break;
return Hexagon::S47_46;
case '9':
if (memcmp(Name.data()+3, ":48", 3) != 0)
break;
return Hexagon::S49_48;
}
break;
case '5':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":50", 3) != 0)
break;
return Hexagon::S51_50;
case '3':
if (memcmp(Name.data()+3, ":52", 3) != 0)
break;
return Hexagon::S53_52;
case '5':
if (memcmp(Name.data()+3, ":54", 3) != 0)
break;
return Hexagon::S55_54;
case '7':
if (memcmp(Name.data()+3, ":56", 3) != 0)
break;
return Hexagon::S57_56;
case '9':
if (memcmp(Name.data()+3, ":58", 3) != 0)
break;
return Hexagon::S59_58;
}
break;
case '6':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":60", 3) != 0)
break;
return Hexagon::S61_60;
case '3':
if (memcmp(Name.data()+3, ":62", 3) != 0)
break;
return Hexagon::S63_62;
case '5':
if (memcmp(Name.data()+3, ":64", 3) != 0)
break;
return Hexagon::S65_64;
case '7':
if (memcmp(Name.data()+3, ":66", 3) != 0)
break;
return Hexagon::S67_66;
case '9':
if (memcmp(Name.data()+3, ":68", 3) != 0)
break;
return Hexagon::S69_68;
}
break;
case '7':
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, ":70", 3) != 0)
break;
return Hexagon::S71_70;
case '3':
if (memcmp(Name.data()+3, ":72", 3) != 0)
break;
return Hexagon::S73_72;
case '5':
if (memcmp(Name.data()+3, ":74", 3) != 0)
break;
return Hexagon::S75_74;
case '7':
if (memcmp(Name.data()+3, ":76", 3) != 0)
break;
return Hexagon::S77_76;
case '9':
if (memcmp(Name.data()+3, ":78", 3) != 0)
break;
return Hexagon::S79_78;
}
break;
case 'y':
if (memcmp(Name.data()+2, "scfg", 4) != 0)
break;
return Hexagon::SYSCFG;
}
break;
case 'v':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '0':
if (memcmp(Name.data()+3, ":11", 3) != 0)
break;
return Hexagon::WR5;
case '1':
if (memcmp(Name.data()+3, ":10", 3) != 0)
break;
return Hexagon::W5;
case '2':
if (memcmp(Name.data()+3, ":13", 3) != 0)
break;
return Hexagon::WR6;
case '3':
if (memcmp(Name.data()+3, ":12", 3) != 0)
break;
return Hexagon::W6;
case '4':
if (memcmp(Name.data()+3, ":15", 3) != 0)
break;
return Hexagon::WR7;
case '5':
if (memcmp(Name.data()+3, ":1", 2) != 0)
break;
switch (Name[5]) { … }
default: break;
case '2':
return Hexagon::VQ3;
case '4':
return Hexagon::W7;
}
break;
case '6':
if (memcmp(Name.data()+3, ":17", 3) != 0)
break;
return Hexagon::WR8;
case '7':
if (memcmp(Name.data()+3, ":16", 3) != 0)
break;
return Hexagon::W8;
case '8':
if (memcmp(Name.data()+3, ":19", 3) != 0)
break;
return Hexagon::WR9;
case '9':
if (memcmp(Name.data()+3, ":1", 2) != 0)
break;
switch (Name[5]) { … }
default: break;
case '6':
return Hexagon::VQ4;
case '8':
return Hexagon::W9;
}
break;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '0':
if (memcmp(Name.data()+3, ":21", 3) != 0)
break;
return Hexagon::WR10;
case '1':
if (memcmp(Name.data()+3, ":20", 3) != 0)
break;
return Hexagon::W10;
case '2':
if (memcmp(Name.data()+3, ":23", 3) != 0)
break;
return Hexagon::WR11;
case '3':
if (memcmp(Name.data()+3, ":2", 2) != 0)
break;
switch (Name[5]) { … }
default: break;
case '0':
return Hexagon::VQ5;
case '2':
return Hexagon::W11;
}
break;
case '4':
if (memcmp(Name.data()+3, ":25", 3) != 0)
break;
return Hexagon::WR12;
case '5':
if (memcmp(Name.data()+3, ":24", 3) != 0)
break;
return Hexagon::W12;
case '6':
if (memcmp(Name.data()+3, ":27", 3) != 0)
break;
return Hexagon::WR13;
case '7':
if (memcmp(Name.data()+3, ":2", 2) != 0)
break;
switch (Name[5]) { … }
default: break;
case '4':
return Hexagon::VQ6;
case '6':
return Hexagon::W13;
}
break;
case '8':
if (memcmp(Name.data()+3, ":29", 3) != 0)
break;
return Hexagon::WR14;
case '9':
if (memcmp(Name.data()+3, ":28", 3) != 0)
break;
return Hexagon::W14;
}
break;
case '3':
switch (Name[2]) { … }
default: break;
case '0':
if (memcmp(Name.data()+3, ":31", 3) != 0)
break;
return Hexagon::WR15;
case '1':
if (Name[3] != ':')
break;
switch (Name[4]) { … }
default: break;
case '2':
if (Name[5] != '8')
break;
return Hexagon::VQ7;
case '3':
if (Name[5] != '0')
break;
return Hexagon::W15;
}
break;
}
break;
}
break;
}
break;
case 7:
switch (Name[0]) { … }
default: break;
case 'c':
if (memcmp(Name.data()+1, "fgbase", 6) != 0)
break;
return Hexagon::CFGBASE;
case 'i':
if (memcmp(Name.data()+1, "sdbgpr", 6) != 0)
break;
return Hexagon::ISDBGPR;
case 'm':
if (memcmp(Name.data()+1, "odectl", 6) != 0)
break;
return Hexagon::MODECTL;
case 'p':
if (memcmp(Name.data()+1, "mucnt", 5) != 0)
break;
switch (Name[6]) { … }
default: break;
case '0':
return Hexagon::PMUCNT0;
case '1':
return Hexagon::PMUCNT1;
case '2':
return Hexagon::PMUCNT2;
case '3':
return Hexagon::PMUCNT3;
}
break;
case 'u':
if (memcmp(Name.data()+1, "sr.ovf", 6) != 0)
break;
return Hexagon::USR_OVF;
}
break;
case 8:
switch (Name[0]) { … }
default: break;
case '_':
if (memcmp(Name.data()+1, "_999999", 7) != 0)
break;
return Hexagon::VF0;
case 'b':
if (memcmp(Name.data()+1, "rkptpc", 6) != 0)
break;
switch (Name[7]) { … }
default: break;
case '0':
return Hexagon::BRKPTPC0;
case '1':
return Hexagon::BRKPTPC1;
}
break;
case 'f':
if (memcmp(Name.data()+1, "ramekey", 7) != 0)
break;
return Hexagon::FRAMEKEY;
case 'g':
if (memcmp(Name.data()+1, "pmucnt", 6) != 0)
break;
switch (Name[7]) { … }
default: break;
case '0':
return Hexagon::GPMUCNT0;
case '1':
return Hexagon::GPMUCNT1;
case '2':
return Hexagon::GPMUCNT2;
case '3':
return Hexagon::GPMUCNT3;
case '4':
return Hexagon::GPMUCNT4;
case '5':
return Hexagon::GPMUCNT5;
case '6':
return Hexagon::GPMUCNT6;
case '7':
return Hexagon::GPMUCNT7;
}
break;
case 'i':
if (memcmp(Name.data()+1, "sdbcfg", 6) != 0)
break;
switch (Name[7]) { … }
default: break;
case '0':
return Hexagon::ISDBCFG0;
case '1':
return Hexagon::ISDBCFG1;
}
break;
case 'p':
if (memcmp(Name.data()+1, "cycle", 5) != 0)
break;
switch (Name[6]) { … }
default: break;
case 'h':
if (Name[7] != 'i')
break;
return Hexagon::PCYCLEHI;
case 'l':
if (Name[7] != 'o')
break;
return Hexagon::PCYCLELO;
}
break;
case 'u':
if (memcmp(Name.data()+1, "timer", 5) != 0)
break;
switch (Name[6]) { … }
default: break;
case 'h':
if (Name[7] != 'i')
break;
return Hexagon::UTIMERHI;
case 'l':
if (Name[7] != 'o')
break;
return Hexagon::UTIMERLO;
}
break;
}
break;
case 9:
switch (Name[0]) { … }
default: break;
case '_':
if (Name[1] != '_')
break;
switch (Name[2]) { … }
default: break;
case '1':
if (memcmp(Name.data()+3, "0000", 4) != 0)
break;
switch (Name[7]) { … }
default: break;
case '0':
switch (Name[8]) { … }
default: break;
case '0':
return Hexagon::VF1;
case '1':
return Hexagon::VF2;
case '2':
return Hexagon::VF3;
case '3':
return Hexagon::VF4;
case '4':
return Hexagon::VF5;
case '5':
return Hexagon::VF6;
case '6':
return Hexagon::VF7;
case '7':
return Hexagon::VF8;
case '8':
return Hexagon::VF9;
case '9':
return Hexagon::VF10;
}
break;
case '1':
switch (Name[8]) { … }
default: break;
case '0':
return Hexagon::VF11;
case '1':
return Hexagon::VF12;
case '2':
return Hexagon::VF13;
case '3':
return Hexagon::VF14;
case '4':
return Hexagon::VF15;
case '5':
return Hexagon::VF16;
case '6':
return Hexagon::VF17;
case '7':
return Hexagon::VF18;
case '8':
return Hexagon::VF19;
case '9':
return Hexagon::VF20;
}
break;
case '2':
switch (Name[8]) { … }
default: break;
case '0':
return Hexagon::VF21;
case '1':
return Hexagon::VF22;
case '2':
return Hexagon::VF23;
case '3':
return Hexagon::VF24;
case '4':
return Hexagon::VF25;
case '5':
return Hexagon::VF26;
case '6':
return Hexagon::VF27;
case '7':
return Hexagon::VF28;
case '8':
return Hexagon::VF29;
case '9':
return Hexagon::VF30;
}
break;
case '3':
if (Name[8] != '0')
break;
return Hexagon::VF31;
}
break;
case '9':
if (memcmp(Name.data()+3, "999999", 6) != 0)
break;
return Hexagon::VFR0;
}
break;
case 'b':
if (memcmp(Name.data()+1, "rkptcfg", 7) != 0)
break;
switch (Name[8]) { … }
default: break;
case '0':
return Hexagon::BRKPTCFG0;
case '1':
return Hexagon::BRKPTCFG1;
}
break;
case 'g':
if (memcmp(Name.data()+1, "pcycle", 6) != 0)
break;
switch (Name[7]) { … }
default: break;
case 'h':
if (Name[8] != 'i')
break;
return Hexagon::GPCYCLEHI;
case 'l':
if (Name[8] != 'o')
break;
return Hexagon::GPCYCLELO;
}
break;
case 'i':
if (memcmp(Name.data()+1, "sdbmbxin", 8) != 0)
break;
return Hexagon::ISDBMBXIN;
case 'p':
if (memcmp(Name.data()+1, "muevtcfg", 8) != 0)
break;
return Hexagon::PMUEVTCFG;
case 'u':
if (memcmp(Name.data()+1, "pcycle", 6) != 0)
break;
switch (Name[7]) { … }
default: break;
case 'h':
if (Name[8] != 'i')
break;
return Hexagon::UPCYCLEHI;
case 'l':
if (Name[8] != 'o')
break;
return Hexagon::UPCYCLELO;
}
break;
}
break;
case 10:
switch (Name[0]) { … }
default: break;
case '_':
if (memcmp(Name.data()+1, "_100000", 7) != 0)
break;
switch (Name[8]) { … }
default: break;
case '0':
switch (Name[9]) { … }
default: break;
case '0':
return Hexagon::VFR1;
case '1':
return Hexagon::VFR2;
case '2':
return Hexagon::VFR3;
case '3':
return Hexagon::VFR4;
case '4':
return Hexagon::VFR5;
case '5':
return Hexagon::VFR6;
case '6':
return Hexagon::VFR7;
case '7':
return Hexagon::VFR8;
case '8':
return Hexagon::VFR9;
case '9':
return Hexagon::VFR10;
}
break;
case '1':
switch (Name[9]) { … }
default: break;
case '0':
return Hexagon::VFR11;
case '1':
return Hexagon::VFR12;
case '2':
return Hexagon::VFR13;
case '3':
return Hexagon::VFR14;
case '4':
return Hexagon::VFR15;
case '5':
return Hexagon::VFR16;
case '6':
return Hexagon::VFR17;
case '7':
return Hexagon::VFR18;
case '8':
return Hexagon::VFR19;
case '9':
return Hexagon::VFR20;
}
break;
case '2':
switch (Name[9]) { … }
default: break;
case '0':
return Hexagon::VFR21;
case '1':
return Hexagon::VFR22;
case '2':
return Hexagon::VFR23;
case '3':
return Hexagon::VFR24;
case '4':
return Hexagon::VFR25;
case '5':
return Hexagon::VFR26;
case '6':
return Hexagon::VFR27;
case '7':
return Hexagon::VFR28;
case '8':
return Hexagon::VFR29;
case '9':
return Hexagon::VFR30;
}
break;
case '3':
if (Name[9] != '0')
break;
return Hexagon::VFR31;
}
break;
case 'f':
if (memcmp(Name.data()+1, "ramelimit", 9) != 0)
break;
return Hexagon::FRAMELIMIT;
case 'i':
if (memcmp(Name.data()+1, "sdbmbxout", 9) != 0)
break;
return Hexagon::ISDBMBXOUT;
case 'p':
if (memcmp(Name.data()+1, "ktcount", 7) != 0)
break;
switch (Name[8]) { … }
default: break;
case 'h':
if (Name[9] != 'i')
break;
return Hexagon::PKTCOUNTHI;
case 'l':
if (Name[9] != 'o')
break;
return Hexagon::PKTCOUNTLO;
}
break;
}
break;
}
return Hexagon::NoRegister;
}
static MCRegister MatchRegisterAltName(StringRef Name) { … }
switch (Name.size()) { … }
default: break;
case 2:
switch (Name[0]) { … }
default: break;
case 'c':
switch (Name[1]) { … }
default: break;
case '0':
return Hexagon::SA0;
case '1':
return Hexagon::LC0;
case '2':
return Hexagon::SA1;
case '3':
return Hexagon::LC1;
case '4':
return Hexagon::P3_0;
case '5':
return Hexagon::C5;
case '6':
return Hexagon::M0;
case '7':
return Hexagon::M1;
case '8':
return Hexagon::USR;
case '9':
return Hexagon::PC;
}
break;
case 'f':
if (Name[1] != 'p')
break;
return Hexagon::R30;
case 'g':
switch (Name[1]) { … }
default: break;
case '0':
return Hexagon::GELR;
case '1':
return Hexagon::GSR;
case '2':
return Hexagon::GOSP;
case '3':
return Hexagon::G3;
}
break;
case 'l':
if (Name[1] != 'r')
break;
return Hexagon::R31;
case 's':
switch (Name[1]) { … }
default: break;
case '0':
return Hexagon::SGP0;
case '1':
return Hexagon::SGP1;
case '2':
return Hexagon::STID;
case '3':
return Hexagon::ELR;
case '4':
return Hexagon::BADVA0;
case '5':
return Hexagon::BADVA1;
case '6':
return Hexagon::SSR;
case '7':
return Hexagon::CCR;
case '8':
return Hexagon::HTID;
case '9':
return Hexagon::BADVA;
case 'p':
return Hexagon::R29;
}
break;
}
break;
case 3:
switch (Name[0]) { … }
default: break;
case 'c':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::UGP;
case '1':
return Hexagon::GP;
case '2':
return Hexagon::CS0;
case '3':
return Hexagon::CS1;
case '4':
return Hexagon::UPCYCLELO;
case '5':
return Hexagon::UPCYCLEHI;
case '6':
return Hexagon::FRAMELIMIT;
case '7':
return Hexagon::FRAMEKEY;
case '8':
return Hexagon::PKTCOUNTLO;
case '9':
return Hexagon::PKTCOUNTHI;
}
break;
case '3':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::UTIMERLO;
case '1':
return Hexagon::UTIMERHI;
}
break;
}
break;
case 'g':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '6':
return Hexagon::GPMUCNT4;
case '7':
return Hexagon::GPMUCNT5;
case '8':
return Hexagon::GPMUCNT6;
case '9':
return Hexagon::GPMUCNT7;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '4':
return Hexagon::GPCYCLELO;
case '5':
return Hexagon::GPCYCLEHI;
case '6':
return Hexagon::GPMUCNT0;
case '7':
return Hexagon::GPMUCNT1;
case '8':
return Hexagon::GPMUCNT2;
case '9':
return Hexagon::GPMUCNT3;
}
break;
}
break;
case 's':
switch (Name[1]) { … }
default: break;
case '1':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::IMASK;
case '6':
return Hexagon::EVB;
case '7':
return Hexagon::MODECTL;
case '8':
return Hexagon::SYSCFG;
case '9':
return Hexagon::S19;
}
break;
case '2':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::S20;
case '1':
return Hexagon::VID;
case '2':
return Hexagon::S22;
case '7':
return Hexagon::CFGBASE;
case '8':
return Hexagon::DIAG;
case '9':
return Hexagon::REV;
}
break;
case '3':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::PCYCLELO;
case '1':
return Hexagon::PCYCLEHI;
case '2':
return Hexagon::ISDBST;
case '3':
return Hexagon::ISDBCFG0;
case '4':
return Hexagon::ISDBCFG1;
case '6':
return Hexagon::BRKPTPC0;
case '7':
return Hexagon::BRKPTCFG0;
case '8':
return Hexagon::BRKPTPC1;
case '9':
return Hexagon::BRKPTCFG1;
}
break;
case '4':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::ISDBMBXIN;
case '1':
return Hexagon::ISDBMBXOUT;
case '2':
return Hexagon::ISDBEN;
case '3':
return Hexagon::ISDBGPR;
case '8':
return Hexagon::PMUCNT0;
case '9':
return Hexagon::PMUCNT1;
}
break;
case '5':
switch (Name[2]) { … }
default: break;
case '0':
return Hexagon::PMUCNT2;
case '1':
return Hexagon::PMUCNT3;
case '2':
return Hexagon::PMUEVTCFG;
case '3':
return Hexagon::PMUCFG;
}
break;
}
break;
}
break;
case 4:
if (memcmp(Name.data()+0, "m1:0", 4) != 0)
break;
return Hexagon::C7_6;
case 5:
switch (Name[0]) { … }
default: break;
case 'c':
if (memcmp(Name.data()+1, "s1:0", 4) != 0)
break;
return Hexagon::CS;
case 'l':
if (memcmp(Name.data()+1, "r:fp", 4) != 0)
break;
return Hexagon::D15;
}
break;
case 6:
switch (Name[0]) { … }
default: break;
case 'p':
if (memcmp(Name.data()+1, "cycle", 5) != 0)
break;
return Hexagon::S31_30;
case 's':
if (memcmp(Name.data()+1, "gp1:0", 5) != 0)
break;
return Hexagon::SGP1_0;
case 'u':
if (memcmp(Name.data()+1, "timer", 5) != 0)
break;
return Hexagon::UTIMER;
}
break;
case 7:
switch (Name[0]) { … }
default: break;
case 'c':
if (memcmp(Name.data()+1, "cr:ssr", 6) != 0)
break;
return Hexagon::S7_6;
case 'l':
if (Name[1] != 'c')
break;
switch (Name[2]) { … }
default: break;
case '0':
if (memcmp(Name.data()+3, ":sa0", 4) != 0)
break;
return Hexagon::C1_0;
case '1':
if (memcmp(Name.data()+3, ":sa1", 4) != 0)
break;
return Hexagon::C3_2;
}
break;
case 'u':
if (memcmp(Name.data()+1, "pcycle", 6) != 0)
break;
return Hexagon::UPCYCLE;
}
break;
case 8:
switch (Name[0]) { … }
default: break;
case 'b':
if (memcmp(Name.data()+1, "adva1:0", 7) != 0)
break;
return Hexagon::S5_4;
case 'p':
if (memcmp(Name.data()+1, "ktcount", 7) != 0)
break;
return Hexagon::PKTCOUNT;
}
break;
}
return Hexagon::NoRegister;
}
#endif
#ifdef GET_SUBTARGET_FEATURE_NAME
#undef GET_SUBTARGET_FEATURE_NAME
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
#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] = …