Lines Matching defs:ClassInfo
154 /// ClassInfo - Helper class for storing the information about a particular
156 struct ClassInfo {
180 std::vector<ClassInfo *> SuperClasses;
234 bool isRelatedTo(const ClassInfo &RHS) const {
259 const ClassInfo *Root = this;
263 const ClassInfo *RHSRoot = &RHS;
271 bool isSubsetOf(const ClassInfo &RHS) const {
277 SmallVector<const ClassInfo *, 16> Worklist(SuperClasses.begin(),
279 SmallPtrSet<const ClassInfo *, 16> Visited;
294 const ClassInfo *Root = this;
302 const ClassInfo *findRoot() const {
303 const ClassInfo *Root = this;
312 bool operator<(const ClassInfo &RHS) const {
390 ClassInfo *Class;
697 LHSOp.Class->Kind == ClassInfo::Token)
727 ClassInfo *CI;
729 static OperandMatchEntry create(const MatchableInfo *mi, ClassInfo *ci,
751 std::forward_list<ClassInfo> Classes;
760 typedef std::map<const Record *, ClassInfo *, LessRecordByID>
768 std::map<const Record *, ClassInfo *> AsmOperandClasses;
771 std::map<const Record *, ClassInfo *> RegisterClassClasses;
775 std::map<std::string, ClassInfo *> TokenClasses;
779 ClassInfo *getTokenClass(StringRef Token);
782 ClassInfo *getOperandClass(const CGIOperandList::OperandInfo &OI,
784 ClassInfo *getOperandClass(const Record *Rec, int SubOpIdx);
786 /// buildRegisterClasses - Build the ClassInfo* instances for register
791 /// buildOperandClasses - Build the ClassInfo* instances for user defined
823 [](const ClassInfo &Class) { return Class.IsOptional; });
1171 ClassInfo *AsmMatcherInfo::getTokenClass(StringRef Token) {
1172 ClassInfo *&Entry = TokenClasses[std::string(Token)];
1177 Entry->Kind = ClassInfo::Token;
1192 ClassInfo *
1201 ClassInfo *AsmMatcherInfo::getOperandClass(const Record *Rec, int SubOpIdx) {
1213 if (ClassInfo *CI = AsmOperandClasses[MatchClass])
1223 if (ClassInfo *CI = RegisterClassClasses[ClassRec])
1229 if (ClassInfo *CI = RegisterClassClasses[Rec])
1239 if (ClassInfo *CI = AsmOperandClasses[MatchClass])
1307 std::map<RegisterSet, ClassInfo *, LessRegisterSet> RegisterSetClasses;
1311 ClassInfo *CI = &Classes.front();
1312 CI->Kind = ClassInfo::RegisterClass0 + Index;
1330 ClassInfo *CI = RegisterSetClasses[RS];
1343 ClassInfo *CI = RegisterSetClasses[RegisterSet(RC.getOrder().begin(),
1374 ClassInfo *CI = RegisterClasses[Rec];
1398 ClassInfo *CI = AsmOperandClasses[Rec];
1399 CI->Kind = ClassInfo::UserClass0 + Index;
1409 ClassInfo *SC = AsmOperandClasses[DI->getDef()];
1481 typedef std::map<ClassInfo *, unsigned, deref<std::less<>>> OpClassMaskTy;
1681 ClassInfo *FromClass = getTokenClass(Rec->getValueAsString("FromToken"));
1682 ClassInfo *ToClass = getTokenClass(Rec->getValueAsString("ToToken"));
2371 std::forward_list<ClassInfo> &Infos,
2380 ClassInfo::ClassInfoKind LastKind = ClassInfo::Token;
2383 if (LastKind == ClassInfo::Token && CI.Kind != ClassInfo::Token) {
2385 } else if (LastKind < ClassInfo::UserClass0 &&
2386 CI.Kind >= ClassInfo::UserClass0) {
2389 LastKind = (ClassInfo::ClassInfoKind)CI.Kind;
2393 if (CI.Kind == ClassInfo::Token) {
2416 if (llvm::all_of(Info.Classes, [](const ClassInfo &CI) {
2446 if (none_of(Info.Classes, [](const ClassInfo &CI) {
2544 std::forward_list<ClassInfo> &Infos,
2609 std::forward_list<ClassInfo> &Infos,
2614 if (CI.Kind == ClassInfo::Token)
3214 static void emitMatchClassKindNames(std::forward_list<ClassInfo> &Infos,