Lines Matching refs:ClassInfo
136 /// ClassInfo - Helper class for storing the information about a particular
138 struct ClassInfo {
162 std::vector<ClassInfo*> SuperClasses;
205 bool isRelatedTo(const ClassInfo &RHS) const {
231 const ClassInfo *Root = this;
235 const ClassInfo *RHSRoot = &RHS;
243 bool isSubsetOf(const ClassInfo &RHS) const {
249 for (std::vector<ClassInfo*>::const_iterator it = SuperClasses.begin(),
258 bool operator<(const ClassInfo &RHS) const {
284 /// Sort ClassInfo pointers independently of pointer value.
286 bool operator()(const ClassInfo *LHS, const ClassInfo *RHS) const {
300 ClassInfo *Class;
533 AsmOperands[i].Class->Kind == ClassInfo::Token)
578 ClassInfo *CI;
580 static OperandMatchEntry create(MatchableInfo* mi, ClassInfo *ci,
603 std::vector<ClassInfo*> Classes;
612 typedef std::map<Record*, ClassInfo*, LessRecordByID> RegisterClassesTy;
619 std::map<Record*, ClassInfo*> AsmOperandClasses;
623 std::map<std::string, ClassInfo*> TokenClasses;
626 std::map<Record*, ClassInfo*> RegisterClassClasses;
630 ClassInfo *getTokenClass(StringRef Token);
633 ClassInfo *getOperandClass(const CGIOperandList::OperandInfo &OI,
635 ClassInfo *getOperandClass(Record *Rec, int SubOpIdx);
637 /// buildRegisterClasses - Build the ClassInfo* instances for register
641 /// buildOperandClasses - Build the ClassInfo* instances for user defined
979 ClassInfo *AsmMatcherInfo::getTokenClass(StringRef Token) {
980 ClassInfo *&Entry = TokenClasses[Token];
983 Entry = new ClassInfo();
984 Entry->Kind = ClassInfo::Token;
998 ClassInfo *
1007 ClassInfo *
1019 if (ClassInfo *CI = AsmOperandClasses[MatchClass])
1028 if (ClassInfo *CI = RegisterClassClasses[ClassRec])
1035 if (ClassInfo *CI = RegisterClassClasses[Rec])
1044 if (ClassInfo *CI = AsmOperandClasses[MatchClass])
1107 std::map<std::set<Record*>, ClassInfo*> RegisterSetClasses;
1111 ClassInfo *CI = new ClassInfo();
1112 CI->Kind = ClassInfo::RegisterClass0 + Index;
1129 ClassInfo *CI = RegisterSetClasses[*it];
1145 ClassInfo *CI = RegisterSetClasses[std::set<Record*>(RC.getOrder().begin(),
1166 ClassInfo *CI = RegisterClasses[Rec];
1185 AsmOperandClasses[*it] = new ClassInfo();
1190 ClassInfo *CI = AsmOperandClasses[*it];
1191 CI->Kind = ClassInfo::UserClass0 + Index;
1201 ClassInfo *SC = AsmOperandClasses[DI->getDef()];
1257 typedef std::map<ClassInfo*, unsigned, LessClassInfoPtr> OpClassMaskTy;
1280 ClassInfo *CI = iit->first;
1454 ClassInfo *FromClass = getTokenClass(Rec->getValueAsString("FromToken"));
1455 ClassInfo *ToClass = getTokenClass(Rec->getValueAsString("ToToken"));
1463 std::sort(Classes.begin(), Classes.end(), less_ptr<ClassInfo>());
1974 std::vector<ClassInfo*> &Infos,
1982 for (std::vector<ClassInfo*>::iterator it = Infos.begin(),
1984 ClassInfo &CI = **it;
1986 if (CI.Kind == ClassInfo::Token) {
2024 for (std::vector<ClassInfo*>::iterator it = Info.Classes.begin(),
2026 ClassInfo &CI = **it;
2065 std::vector<ClassInfo*> &Infos,
2078 for (std::vector<ClassInfo*>::iterator it = Infos.begin(),
2080 ClassInfo &A = **it;
2083 for (std::vector<ClassInfo*>::iterator it = Infos.begin(),
2085 ClassInfo &B = **it;
2128 std::vector<ClassInfo*> &Infos,
2132 for (std::vector<ClassInfo*>::iterator it = Infos.begin(),
2134 ClassInfo &CI = **it;
2136 if (CI.Kind == ClassInfo::Token)
2196 for (std::map<Record*, ClassInfo*>::const_iterator
2527 for (std::vector<ClassInfo*>::const_iterator it = Info.Classes.begin(),
2529 ClassInfo *CI = *it;