llvm-project/llvm/lib/TableGen
Simon Tatham ddbc0b1e51 [TableGen] Introduce an if/then/else statement.
Summary:
This allows you to make some of the defs in a multiclass or `foreach`
conditional on an expression computed from the parameters or iteration
variables.

It was already possible to simulate an if statement using a `foreach`
with a dummy iteration variable and a list constructed using `!if` so
that it had length 0 or 1 depending on the condition, e.g.

  foreach unusedIterationVar = !if(condition, [1], []<int>) in { ... }

But this syntax is nicer to read, and also more convenient because it
allows an else clause.

To avoid upheaval in the implementation, I've implemented `if` as pure
syntactic sugar on the `foreach` implementation: internally, `ParseIf`
actually does construct exactly the kind of foreach shown above (and
another reversed one for the else clause if present).

Reviewers: nhaehnle, hfinkel

Reviewed By: hfinkel

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71474
2020-01-14 10:19:53 +00:00
..
CMakeLists.txt [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
Error.cpp [gicombiner] Hoist pure C++ combine into the tablegen definition 2019-10-16 23:53:35 +00:00
JSONBackend.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Main.cpp Tablegen: Remove the error for duplicate include files. 2019-11-20 18:24:10 -08:00
Record.cpp [TableGen] Add bang-operators !getop and !setop. 2019-12-11 12:05:22 +00:00
SetTheory.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
StringMatcher.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TGLexer.cpp [TableGen] Introduce an if/then/else statement. 2020-01-14 10:19:53 +00:00
TGLexer.h [TableGen] Introduce an if/then/else statement. 2020-01-14 10:19:53 +00:00
TGParser.cpp [TableGen] Introduce an if/then/else statement. 2020-01-14 10:19:53 +00:00
TGParser.h [TableGen] Introduce an if/then/else statement. 2020-01-14 10:19:53 +00:00
TableGenBackend.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00