| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
Ask for the record name as a string explicitly to avoid a potential
assert.
llvm-svn: 142504
|
|
|
|
|
|
| |
Add an init function to be shared among Record constructors.
llvm-svn: 142501
|
|
|
|
|
|
|
|
| |
Allow template arg names to be Inits. This is further work to
implement paste as it allows template names to participate in paste
operations.
llvm-svn: 142500
|
|
|
|
|
|
|
| |
Convert SetValue to take the value name as an Init. This allows us to
set values for variables whose names are not yet fully resolved.
llvm-svn: 142499
|
|
|
|
|
|
|
|
| |
Add a couple of utility functions to take a variable name and qualify
it with the namespace of the enclosing class and/or multiclass. This
is inpreparation for making template arg names first-class Inits.
llvm-svn: 142498
|
|
|
|
|
|
|
|
| |
Make the VarInit name an Init itself. We need this to implement paste
functionality so we can reference variables whose names are not yet
completely resolved.
llvm-svn: 142497
|
|
|
|
|
|
|
|
| |
Add accessors to get Record values by Init name. This lets us look up
Record values whose names are not yet fully resolved. More work
toward paste.
llvm-svn: 142496
|
|
|
|
|
|
|
|
| |
note/warning/error as a
string, pass it around as an enum.
llvm-svn: 142107
|
|
|
|
| |
llvm-svn: 141492
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Multidefs are a bit unwieldy and incomplete. Remove them in favor of
another mechanism, probably for loops.
Revert "Make Test More Thorough"
Revert "Fix a typo."
Revert "Vim Support for Multidefs"
Revert "Emacs Support for Multidefs"
Revert "Document Multidefs"
Revert "Add a Multidef Test"
Revert "Update Test for Multidefs"
Revert "Process Multidefs"
Revert "Parser Multidef Support"
Revert "Lexer Support for Multidefs"
Revert "Add Multidef Data Structures"
llvm-svn: 141378
|
|
|
|
|
|
|
|
|
| |
Fix VarListElementInit::resolveListElementReference to return a
partially resolved VarListElementInint in the case where full
resolution is not possible. This allows TableGen to make forward
progress resolving certain complex list expressions.
llvm-svn: 141315
|
|
|
|
| |
llvm-svn: 141305
|
|
|
|
| |
llvm-svn: 141299
|
|
|
|
|
|
| |
Compare the entire keyword string.
llvm-svn: 141295
|
|
|
|
|
|
|
|
| |
For consistency, prefix multiclass template arg names with the
multiclass name followed by "::" to avoid name clashes among
multiclass arguments and other entities in the multiclass.
llvm-svn: 141239
|
|
|
|
|
|
|
|
|
|
| |
Process each multidef declared in a multiclass. Iterate through the
list and instantiate a def in the multiclass for each item, resolving
the list item to the temporary iterator (possibly) used in the
multidef ObjectBody. We then process each generated def in the normal
way.
llvm-svn: 141233
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add parser support to recognize multidefs. No processing on the
multidef is done at this point. The grammar is:
MultiDef = MULTIDEF ObjectName < Value, Declaration, Value > ObjectBody
The first Value must be resolveable to a list and the second Value
must be resolveable to an integer. The Declaration is a temporary
value used as an iterator to refer to list items during processing.
It may be passed into the ObjectBody where it will be substituted with
the list value used to instantiate each def.
llvm-svn: 141232
|
|
|
|
|
|
| |
Add keyword support for multidefs.
llvm-svn: 141231
|
|
|
|
|
|
|
|
| |
Move the code to instantiate a multiclass def, bind its arguments and
resolve its members into three helper functions. These will be reused
to support a new kind of multiclass def: a multidef.
llvm-svn: 141229
|
|
|
|
| |
llvm-svn: 141178
|
|
|
|
| |
llvm-svn: 141116
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When resolving an operator list element reference, resolve all
operator operands and try to fold the operator first. This allows the
operator to collapse to a list which may then be indexed.
Before, it was not possible to do this:
class D<int a, int b> { ... }
class C<list<int> A> : D<A[0], A[1]>;
class B<list<int> b> : C<!foreach(...,b)>;
Now it is.
llvm-svn: 141101
|
|
|
|
| |
llvm-svn: 141093
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds a preprocessor that can expand nested for-loops for
saving some copy-n-paste in *.td files.
The preprocessor is not yet integrated with TGParser, and so it has
no direct effect on *.td inputs. However, you may preprocess an td
input (and only preprocess it).
To test the proprecessor, type:
tblgen -E -o $@ $<
llvm-svn: 141079
|
|
This is the first step towards splitting LLVM and Clang's tblgen executables.
llvm-svn: 140951
|