Lines Matching refs:Classes
58 // For register classes, we can generate these subgroups automatically. For
59 // arbitrary operands, we expect the user to define the classes and their
64 // tuple of classes, any single instruction must match either all or none
67 // In addition, the subset relation amongst classes induces a partial order
70 // 2. The input can now be treated as a tuple of classes (static tokens are
136 /// The (first) register class, subsequent register classes are
140 /// The (first) user defined class, subsequent user defined classes are
149 /// SuperClasses - The super classes of this class. Note that for simplicities
177 /// For register classes, the records for all the registers in this class.
191 /// isRelatedTo - Check whether this class is "related" to \arg RHS. Classes
198 // Registers classes are only related to registers classes, and only if
236 // ... or if any of its super classes are a subset of RHS.
245 /// operator< - Compare two classes.
250 // Unrelated classes can be ordered by kind.
568 /// The classes which are needed for matching.
569 std::vector<ClassInfo*> Classes;
603 /// classes.
607 /// operand classes.
875 Classes.push_back(Entry);
987 // Construct the register classes.
1000 Classes.push_back(CI);
1016 // Name the register classes which correspond to a user defined RegisterClass.
1020 // Def will be NULL for non-user defined register classes.
1041 // Name the register classes which correspond to singleton registers.
1116 Classes.push_back(CI);
1179 // singleton register classes.
1267 // Build info for the register classes.
1270 // Build info for the user defined assembly operand classes.
1274 // classes.
1338 // Reorder classes so that classes precede super classes.
1339 std::sort(Classes.begin(), Classes.end(), less_ptr<ClassInfo>());
1670 OS << "/// MatchClassKind - The kinds of classes which participate in\n"
1712 // Check for register operands, including sub-classes.
1727 // Check the user classes. We don't care what order since we're only
1729 for (std::vector<ClassInfo*>::iterator it = Info.Classes.begin(),
1730 ie = Info.Classes.end(); it != ie; ++it) {
2036 OS << " " << getMinimalTypeForRange(Info.Classes.size())
2117 for (std::vector<ClassInfo*>::const_iterator it = Info.Classes.begin(),
2118 ie = Info.Classes.end(); it != ie; ++it) {
2198 // Sort the instruction table using the partial order on classes. We use
2294 // Emit the enumeration for classes which participate in matching.
2295 EmitMatchClassEnumeration(Target, Info.Classes, OS);
2298 EmitMatchTokenString(Target, Info.Classes, OS);
2301 EmitIsSubclass(Target, Info.Classes, OS);
2316 // Emit the static match table; unused classes get initalized to 0 which is
2321 // only needs to be the max width used for classes at that index (we also need
2335 OS << " " << getMinimalTypeForRange(Info.Classes.size())
2336 << " Classes[" << MaxNumOperands << "];\n";
2473 OS << " OperandsValid = (it->Classes[i] == " <<"InvalidMatchClass);\n";
2477 "(MatchClassKind)it->Classes[i]))\n";