forked from OSchip/llvm-project
Add Multidef Data Structures
Add a set of data structures and members analogous to those used for multiclass defs. These will represent a new kind of multiclass def: a multidef. The idea behind the multidef is to process a list of items and create a def record for each one inside the enclosing multiclass. This allows the user to dynamically create a set of defs based on the contents of a list. llvm-svn: 141230
This commit is contained in:
parent
db44597494
commit
87cf662fbd
|
@ -1568,6 +1568,23 @@ struct MultiClass {
|
|||
typedef std::vector<Record*> RecordVector;
|
||||
RecordVector DefPrototypes;
|
||||
|
||||
struct MultiDef {
|
||||
Record *Rec; // The base record for all defs generated.
|
||||
// This serves as the multiclass def prototype.
|
||||
TypedInit *List; // A list of values to process.
|
||||
// Each one generates a new def.
|
||||
IntInit *Start; // This specified the list index from which to start
|
||||
// processing.
|
||||
std::string ItemName; // The name of a temporary iterator value to
|
||||
// track the current list item being processed.
|
||||
|
||||
MultiDef(Record *R, TypedInit *L, IntInit *S, const std::string &I)
|
||||
: Rec(R), List(L), Start(S), ItemName(I) {};
|
||||
};
|
||||
|
||||
typedef std::vector<MultiDef> MultiDefVector;
|
||||
MultiDefVector MultiDefPrototypes;
|
||||
|
||||
void dump() const;
|
||||
|
||||
MultiClass(const std::string &Name, SMLoc Loc, RecordKeeper &Records) :
|
||||
|
|
Loading…
Reference in New Issue