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
134 /// The (first) register class, subsequent register classes are
138 /// The (first) user defined class, subsequent user defined classes are
147 /// SuperClasses - The super classes of this class. Note that for simplicities
175 /// For register classes, the records for all the registers in this class.
189 /// isRelatedTo - Check whether this class is "related" to \arg RHS. Classes
196 // Registers classes are only related to registers classes, and only if
234 // ... or if any of its super classes are a subset of RHS.
243 /// operator< - Compare two classes.
248 // Unrelated classes can be ordered by kind.
563 /// The classes which are needed for matching.
564 std::vector<ClassInfo*> Classes;
597 /// classes.
601 /// operand classes.
861 Classes.push_back(Entry);
969 // Construct the register classes.
982 Classes.push_back(CI);
998 // Name the register classes which correspond to a user defined RegisterClass.
1002 // Def will be NULL for non-user defined register classes.
1023 // Name the register classes which correspond to singleton registers.
1098 Classes.push_back(CI);
1164 // singleton register classes.
1243 // Build info for the register classes.
1246 // Build info for the user defined assembly operand classes.
1250 // classes.
1300 // Reorder classes so that classes precede super classes.
1301 std::sort(Classes.begin(), Classes.end(), less_ptr<ClassInfo>());
1631 OS << "/// MatchClassKind - The kinds of classes which participate in\n"
1672 // Check for register operands, including sub-classes.
1687 // Check the user classes. We don't care what order since we're only
1689 for (std::vector<ClassInfo*>::iterator it = Info.Classes.begin(),
1690 ie = Info.Classes.end(); it != ie; ++it) {
2061 for (std::vector<ClassInfo*>::const_iterator it = Info.Classes.begin(),
2062 ie = Info.Classes.end(); it != ie; ++it) {
2142 // Sort the instruction table using the partial order on classes. We use
2238 // Emit the enumeration for classes which participate in matching.
2239 EmitMatchClassEnumeration(Target, Info.Classes, OS);
2242 EmitMatchTokenString(Target, Info.Classes, OS);
2245 EmitIsSubclass(Target, Info.Classes, OS);
2260 // Emit the static match table; unused classes get initalized to 0 which is
2265 // only needs to be the max width used for classes at that index (we also need
2276 OS << " " << getMinimalTypeForRange(Info.Classes.size())
2277 << " Classes[" << MaxNumOperands << "];\n";
2396 OS << " OperandsValid = (it->Classes[i] == " <<"InvalidMatchClass);\n";
2400 "(MatchClassKind)it->Classes[i]))\n";