Home | History | Annotate | Download | only in TableGen

Lines Matching defs: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
156 /// The (first) register class, subsequent register classes are
160 /// The (first) user defined class, subsequent user defined classes are
169 /// SuperClasses - The super classes of this class. Note that for simplicities
197 /// For register classes: the records for all the registers in this class.
200 /// For custom match classes: the diagnostic kind for when the predicate fails.
221 /// isRelatedTo - Check whether this class is "related" to \p RHS. Classes
228 // Registers classes are only related to registers classes, and only if
266 // ... or if any of its super classes are a subset of RHS.
291 /// Compare two classes. This does not produce a total ordering, but does
299 // Tokens sort before registers, which sort before user classes.
319 // Related tokens and user classes get sorted by depth in the inheritence
327 // Unrelated tokens and user classes are ordered by the name of their
704 /// The classes which are needed for matching.
705 std::forward_list<ClassInfo> Classes;
740 /// classes.
744 /// operand classes.
777 return std::find_if(Classes.begin(), Classes.end(),
779 != Classes.end();
1121 Classes.emplace_front();
1122 Entry = &Classes.front();
1252 // Construct the register classes.
1256 Classes.emplace_front();
1257 ClassInfo *CI = &Classes.front();
1284 // Name the register classes which correspond to a user defined RegisterClass.
1286 // Def will be NULL for non-user defined register classes.
1307 // Name the register classes which correspond to singleton registers.
1327 Classes.emplace_front();
1328 AsmOperandClasses[Rec] = &Classes.front();
1459 // singleton register classes.
1526 // Build info for the register classes.
1529 // Build info for the user defined assembly operand classes.
1533 // classes.
1613 // Reorder classes so that classes precede super classes.
1614 Classes.sort();
1618 for (auto I = Classes.begin(), E = Classes.end(); I != E; ++I) {
2169 OS << "/// MatchClassKind - The kinds of classes which participate in\n"
2212 // Check the user classes. We don't care what order since we're only
2216 for (const auto &CI : Info.Classes) {
2232 // Check for register operands, including sub-classes.
2421 // Get the set of diagnostic types from all of the operand classes.
2654 Info.Classes.begin(), Info.Classes.end())) << " Class;\n";
2728 for (const auto &CI : Info.Classes) {
2817 // Sort the instruction table using the partial order on classes. We use
2957 // Emit the enumeration for classes which participate in matching.
2958 emitMatchClassEnumeration(Target, Info.Classes, OS);
2961 emitMatchTokenString(Target, Info.Classes, OS);
2964 emitIsSubclass(Target, Info.Classes, OS);
2991 // Emit the static match table; unused classes get initalized to 0 which is
2996 // only needs to be the max width used for classes at that index (we also need
3011 std::distance(Info.Classes.begin(), Info.Classes.end()))
3012 << " Classes[" << MaxNumOperands << "];\n";
3191 << "static_cast<MatchClassKind>(it->Classes[FormalIdx]);\n";