<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>TableGen Fundamentals</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<div class="doc_title">TableGen Fundamentals</div>

<div class="doc_text">
<ul>
  <li><a href="#introduction">Introduction</a>
  <ol>
    <li><a href="#concepts">Basic concepts</a></li>
    <li><a href="#example">An example record</a></li>
    <li><a href="#running">Running TableGen</a></li>
  </ol></li>
  <li><a href="#syntax">TableGen syntax</a>
  <ol>
    <li><a href="#primitives">TableGen primitives</a>
    <ol>
      <li><a href="#comments">TableGen comments</a></li>
      <li><a href="#types">The TableGen type system</a></li>
      <li><a href="#values">TableGen values and expressions</a></li>
    </ol></li>
    <li><a href="#classesdefs">Classes and definitions</a>
    <ol>
      <li><a href="#valuedef">Value definitions</a></li>
      <li><a href="#recordlet">'let' expressions</a></li>
      <li><a href="#templateargs">Class template arguments</a></li>
      <li><a href="#multiclass">Multiclass definitions and instances</a></li>
    </ol></li>
    <li><a href="#filescope">File scope entities</a>
    <ol>
      <li><a href="#include">File inclusion</a></li>
      <li><a href="#globallet">'let' expressions</a></li>
    </ol></li>
  </ol></li>
  <li><a href="#backends">TableGen backends</a>
  <ol>
    <li><a href="#">todo</a></li>
  </ol></li>
</ul>
</div>

<div class="doc_author">
  <p>Written by <a href="mailto:sabre@nondot.org">Chris Lattner</a></p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>TableGen's purpose is to help a human develop and maintain records of
domain-specific information.  Because there may be a large number of these
records, it is specifically designed to allow writing flexible descriptions and
for common features of these records to be factored out.  This reduces the
amount of duplication in the description, reduces the chance of error, and
makes it easier to structure domain specific information.</p>

<p>The core part of TableGen <a href="#syntax">parses a file</a>, instantiates
the declarations, and hands the result off to a domain-specific "<a
href="#backends">TableGen backend</a>" for processing.  The current major user
of TableGen is the <a href="CodeGenerator.html">LLVM code generator</a>.</p>

<p>Note that if you work on TableGen much, and use emacs or vim, that you can
find an emacs "TableGen mode" and a vim language file in the
<tt>llvm/utils/emacs</tt> and <tt>llvm/utils/vim</tt> directories of your LLVM
distribution, respectively.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="concepts">Basic concepts</a></div>

<div class="doc_text">

<p>TableGen files consist of two key parts: 'classes' and 'definitions', both
of which are considered 'records'.</p>

<p><b>TableGen records</b> have a unique name, a list of values, and a list of
superclasses.  The list of values is the main data that TableGen builds for each
record; it is this that holds the domain specific information for the
application.  The interpretation of this data is left to a specific <a
href="#backends">TableGen backend</a>, but the structure and format rules are
taken care of and are fixed by TableGen.</p>

<p><b>TableGen definitions</b> are the concrete form of 'records'.  These
generally do not have any undefined values, and are marked with the
'<tt>def</tt>' keyword.</p>

<p><b>TableGen classes</b> are abstract records that are used to build and
describe other records.  These 'classes' allow the end-user to build
abstractions for either the domain they are targeting (such as "Register",
"RegisterClass", and "Instruction" in the LLVM code generator) or for the
implementor to help factor out common properties of records (such as "FPInst",
which is used to represent floating point instructions in the X86 backend).
TableGen keeps track of all of the classes that are used to build up a
definition, so the backend can find all definitions of a particular class, such
as "Instruction".</p>

<p><b>TableGen multiclasses</b> are groups of abstract records that are
instantiated all at once.  Each instantiation can result in multiple
TableGen definitions.  If a multiclass inherits from another multiclass,
the definitions in the sub-multiclass become part of the current
multiclass, as if they were declared in the current multiclass.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="example">An example record</a></div>

<div class="doc_text">

<p>With no other arguments, TableGen parses the specified file and prints out
all of the classes, then all of the definitions.  This is a good way to see what
the various definitions expand to fully.  Running this on the <tt>X86.td</tt>
file prints this (at the time of this writing):</p>

<div class="doc_code">
<pre>
...
<b>def</b> ADD32rr {   <i>// Instruction X86Inst I</i>
  <b>string</b> Namespace = "X86";
  <b>dag</b> OutOperandList = (outs GR32:$dst);
  <b>dag</b> InOperandList = (ins GR32:$src1, GR32:$src2);
  <b>string</b> AsmString = "add{l}\t{$src2, $dst|$dst, $src2}";
  <b>list</b>&lt;dag&gt; Pattern = [(set GR32:$dst, (add GR32:$src1, GR32:$src2))];
  <b>list</b>&lt;Register&gt; Uses = [];
  <b>list</b>&lt;Register&gt; Defs = [EFLAGS];
  <b>list</b>&lt;Predicate&gt; Predicates = [];
  <b>int</b> CodeSize = 3;
  <b>int</b> AddedComplexity = 0;
  <b>bit</b> isReturn = 0;
  <b>bit</b> isBranch = 0;
  <b>bit</b> isIndirectBranch = 0;
  <b>bit</b> isBarrier = 0;
  <b>bit</b> isCall = 0;
  <b>bit</b> canFoldAsLoad = 0;
  <b>bit</b> mayLoad = 0;
  <b>bit</b> mayStore = 0;
  <b>bit</b> isImplicitDef = 0;
  <b>bit</b> isConvertibleToThreeAddress = 1;
  <b>bit</b> isCommutable = 1;
  <b>bit</b> isTerminator = 0;
  <b>bit</b> isReMaterializable = 0;
  <b>bit</b> isPredicable = 0;
  <b>bit</b> hasDelaySlot = 0;
  <b>bit</b> usesCustomInserter = 0;
  <b>bit</b> hasCtrlDep = 0;
  <b>bit</b> isNotDuplicable = 0;
  <b>bit</b> hasSideEffects = 0;
  <b>bit</b> neverHasSideEffects = 0;
  InstrItinClass Itinerary = NoItinerary;
  <b>string</b> Constraints = "";
  <b>string</b> DisableEncoding = "";
  <b>bits</b>&lt;8&gt; Opcode = { 0, 0, 0, 0, 0, 0, 0, 1 };
  Format Form = MRMDestReg;
  <b>bits</b>&lt;6&gt; FormBits = { 0, 0, 0, 0, 1, 1 };
  ImmType ImmT = NoImm;
  <b>bits</b>&lt;3&gt; ImmTypeBits = { 0, 0, 0 };
  <b>bit</b> hasOpSizePrefix = 0;
  <b>bit</b> hasAdSizePrefix = 0;
  <b>bits</b>&lt;4&gt; Prefix = { 0, 0, 0, 0 };
  <b>bit</b> hasREX_WPrefix = 0;
  FPFormat FPForm = ?;
  <b>bits</b>&lt;3&gt; FPFormBits = { 0, 0, 0 };
}
...
</pre>
</div>

<p>This definition corresponds to a 32-bit register-register add instruction in
the X86.  The string after the '<tt>def</tt>' string indicates the name of the
record&mdash;"<tt>ADD32rr</tt>" in this case&mdash;and the comment at the end of
the line indicates the superclasses of the definition.  The body of the record
contains all of the data that TableGen assembled for the record, indicating that
the instruction is part of the "X86" namespace, the pattern indicating how the
the instruction should be emitted into the assembly file, that it is a
two-address instruction, has a particular encoding, etc.  The contents and
semantics of the information in the record is specific to the needs of the X86
backend, and is only shown as an example.</p>

<p>As you can see, a lot of information is needed for every instruction
supported by the code generator, and specifying it all manually would be
unmaintainable, prone to bugs, and tiring to do in the first place.  Because we
are using TableGen, all of the information was derived from the following
definition:</p>

<div class="doc_code">
<pre>
let Defs = [EFLAGS],
    isCommutable = 1,                  <i>// X = ADD Y,Z --&gt; X = ADD Z,Y</i>
    isConvertibleToThreeAddress = 1 <b>in</b> <i>// Can transform into LEA.</i>
def ADD32rr  : I&lt;0x01, MRMDestReg, (outs GR32:$dst),
                                   (ins GR32:$src1, GR32:$src2),
                 "add{l}\t{$src2, $dst|$dst, $src2}",
                 [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]&gt;;
</pre>
</div>

<p>This definition makes use of the custom class <tt>I</tt> (extended from the
custom class <tt>X86Inst</tt>), which is defined in the X86-specific TableGen
file, to factor out the common features that instructions of its class share.  A
key feature of TableGen is that it allows the end-user to define the
abstractions they prefer to use when describing their information.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="running">Running TableGen</a></div>

<div class="doc_text">

<p>TableGen runs just like any other LLVM tool.  The first (optional) argument
specifies the file to read.  If a filename is not specified, <tt>tblgen</tt>
reads from standard input.</p>

<p>To be useful, one of the <a href="#backends">TableGen backends</a> must be
used.  These backends are selectable on the command line (type '<tt>tblgen
-help</tt>' for a list).  For example, to get a list of all of the definitions
that subclass a particular type (which can be useful for building up an enum
list of these records), use the <tt>-print-enums</tt> option:</p>

<div class="doc_code">
<pre>
$ tblgen X86.td -print-enums -class=Register
AH, AL, AX, BH, BL, BP, BPL, BX, CH, CL, CX, DH, DI, DIL, DL, DX, EAX, EBP, EBX,
ECX, EDI, EDX, EFLAGS, EIP, ESI, ESP, FP0, FP1, FP2, FP3, FP4, FP5, FP6, IP,
MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7, R10, R10B, R10D, R10W, R11, R11B, R11D,
R11W, R12, R12B, R12D, R12W, R13, R13B, R13D, R13W, R14, R14B, R14D, R14W, R15,
R15B, R15D, R15W, R8, R8B, R8D, R8W, R9, R9B, R9D, R9W, RAX, RBP, RBX, RCX, RDI,
RDX, RIP, RSI, RSP, SI, SIL, SP, SPL, ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7,
XMM0, XMM1, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, XMM2, XMM3, XMM4, XMM5,
XMM6, XMM7, XMM8, XMM9,

$ tblgen X86.td -print-enums -class=Instruction 
ABS_F, ABS_Fp32, ABS_Fp64, ABS_Fp80, ADC32mi, ADC32mi8, ADC32mr, ADC32ri,
ADC32ri8, ADC32rm, ADC32rr, ADC64mi32, ADC64mi8, ADC64mr, ADC64ri32, ADC64ri8,
ADC64rm, ADC64rr, ADD16mi, ADD16mi8, ADD16mr, ADD16ri, ADD16ri8, ADD16rm,
ADD16rr, ADD32mi, ADD32mi8, ADD32mr, ADD32ri, ADD32ri8, ADD32rm, ADD32rr,
ADD64mi32, ADD64mi8, ADD64mr, ADD64ri32, ...
</pre>
</div>

<p>The default backend prints out all of the records, as described <a
href="#example">above</a>.</p>

<p>If you plan to use TableGen, you will most likely have to <a
href="#backends">write a backend</a> that extracts the information specific to
what you need and formats it in the appropriate way.</p>

</div>


<!-- *********************************************************************** -->
<div class="doc_section"><a name="syntax">TableGen syntax</a></div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>TableGen doesn't care about the meaning of data (that is up to the backend to
define), but it does care about syntax, and it enforces a simple type system.
This section describes the syntax and the constructs allowed in a TableGen file.
</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="primitives">TableGen primitives</a></div>

<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection"><a name="comments">TableGen comments</a></div>

<div class="doc_text">

<p>TableGen supports BCPL style "<tt>//</tt>" comments, which run to the end of
the line, and it also supports <b>nestable</b> "<tt>/* */</tt>" comments.</p>

</div>

<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
  <a name="types">The TableGen type system</a>
</div>

<div class="doc_text">

<p>TableGen files are strongly typed, in a simple (but complete) type-system.
These types are used to perform automatic conversions, check for errors, and to
help interface designers constrain the input that they allow.  Every <a
href="#valuedef">value definition</a> is required to have an associated type.
</p>

<p>TableGen supports a mixture of very low-level types (such as <tt>bit</tt>)
and very high-level types (such as <tt>dag</tt>).  This flexibility is what
allows it to describe a wide range of information conveniently and compactly.
The TableGen types are:</p>

<dl>
<dt><tt><b>bit</b></tt></dt>
  <dd>A 'bit' is a boolean value that can hold either 0 or 1.</dd>

<dt><tt><b>int</b></tt></dt>
  <dd>The 'int' type represents a simple 32-bit integer value, such as 5.</dd>

<dt><tt><b>string</b></tt></dt>
  <dd>The 'string' type represents an ordered sequence of characters of
  arbitrary length.</dd>

<dt><tt><b>bits</b>&lt;n&gt;</tt></dt>
  <dd>A 'bits' type is an arbitrary, but fixed, size integer that is broken up
  into individual bits.  This type is useful because it can handle some bits
  being defined while others are undefined.</dd>

<dt><tt><b>list</b>&lt;ty&gt;</tt></dt>
  <dd>This type represents a list whose elements are some other type.  The
  contained type is arbitrary: it can even be another list type.</dd>

<dt>Class type</dt>
  <dd>Specifying a class name in a type context means that the defined value
  must be a subclass of the specified class.  This is useful in conjunction with
  the <b><tt>list</tt></b> type, for example, to constrain the elements of the
  list to a common base class (e.g., a <tt><b>list</b>&lt;Register&gt;</tt> can
  only contain definitions derived from the "<tt>Register</tt>" class).</dd>

<dt><tt><b>dag</b></tt></dt>
  <dd>This type represents a nestable directed graph of elements.</dd>

<dt><tt><b>code</b></tt></dt>
  <dd>This represents a big hunk of text.  This is lexically distinct from 
  string values because it doesn't require escapeing double quotes and other
  common characters that occur in code.</dd>
</dl>

<p>To date, these types have been sufficient for describing things that
TableGen has been used for, but it is straight-forward to extend this list if
needed.</p>

</div>

<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
  <a name="values">TableGen values and expressions</a>
</div>

<div class="doc_text">

<p>TableGen allows for a pretty reasonable number of different expression forms
when building up values.  These forms allow the TableGen file to be written in a
natural syntax and flavor for the application.  The current expression forms
supported include:</p>

<dl>
<dt><tt>?</tt></dt>
  <dd>uninitialized field</dd>
<dt><tt>0b1001011</tt></dt>
  <dd>binary integer value</dd>
<dt><tt>07654321</tt></dt>
  <dd>octal integer value (indicated by a leading 0)</dd>
<dt><tt>7</tt></dt>
  <dd>decimal integer value</dd>
<dt><tt>0x7F</tt></dt>
  <dd>hexadecimal integer value</dd>
<dt><tt>"foo"</tt></dt>
  <dd>string value</dd>
<dt><tt>[{ ... }]</tt></dt>
  <dd>code fragment</dd>
<dt><tt>[ X, Y, Z ]&lt;type&gt;</tt></dt>
  <dd>list value.  &lt;type&gt; is the type of the list 
element and is usually optional.  In rare cases,
TableGen is unable to deduce the element type in
which case the user must specify it explicitly.</dd>
<dt><tt>{ a, b, c }</tt></dt>
  <dd>initializer for a "bits&lt;3&gt;" value</dd>
<dt><tt>value</tt></dt>
  <dd>value reference</dd>
<dt><tt>value{17}</tt></dt>
  <dd>access to one bit of a value</dd>
<dt><tt>value{15-17}</tt></dt>
  <dd>access to multiple bits of a value</dd>
<dt><tt>DEF</tt></dt>
  <dd>reference to a record definition</dd>
<dt><tt>CLASS&lt;val list&gt;</tt></dt>
  <dd>reference to a new anonymous definition of CLASS with the specified
      template arguments.</dd>
<dt><tt>X.Y</tt></dt>
  <dd>reference to the subfield of a value</dd>
<dt><tt>list[4-7,17,2-3]</tt></dt>
  <dd>A slice of the 'list' list, including elements 4,5,6,7,17,2, and 3 from
  it.  Elements may be included multiple times.</dd>
<dt><tt>(DEF a, b)</tt></dt>
  <dd>a dag value.  The first element is required to be a record definition, the
  remaining elements in the list may be arbitrary other values, including nested
  `<tt>dag</tt>' values.</dd>
<dt><tt>!strconcat(a, b)</tt></dt>
  <dd>A string value that is the result of concatenating the 'a' and 'b'
  strings.</dd>
<dt><tt>!cast&lt;type&gt;(a)</tt></dt>
  <dd>A symbol of type <em>type</em> obtained by looking up the string 'a' in
the symbol table.  If the type of 'a' does not match <em>type</em>, TableGen
aborts with an error. !cast&lt;string&gt; is a special case in that the argument must
be an object defined by a 'def' construct.</dd>
<dt><tt>!nameconcat&lt;type&gt;(a, b)</tt></dt>
  <dd>Shorthand for !cast&lt;type&gt;(!strconcat(a, b))</dd>
<dt><tt>!subst(a, b, c)</tt></dt>
  <dd>If 'a' and 'b' are of string type or are symbol references, substitute 
'b' for 'a' in 'c.'  This operation is analogous to $(subst) in GNU make.</dd>
<dt><tt>!foreach(a, b, c)</tt></dt>
  <dd>For each member 'b' of dag or list 'a' apply operator 'c.'  'b' is a 
dummy variable that should be declared as a member variable of an instantiated 
class.  This operation is analogous to $(foreach) in GNU make.</dd>
<dt><tt>!car(a)</tt></dt>
  <dd>The first element of list 'a.'</dd>
<dt><tt>!cdr(a)</tt></dt>
  <dd>The 2nd-N elements of list 'a.'</dd>
<dt><tt>!null(a)</tt></dt>
  <dd>An integer {0,1} indicating whether list 'a' is empty.</dd>
<dt><tt>!if(a,b,c)</tt></dt>
  <dd>'b' if the result of 'int' or 'bit' operator 'a' is nonzero,
      'c' otherwise.</dd>
<dt><tt>!eq(a,b)</tt></dt>
  <dd>Integer one if string a is equal to string b, zero otherwise.  This
      only operates on string, int and bit objects.  Use !cast<string> to
      compare other types of objects.</dd>
</dl>

<p>Note that all of the values have rules specifying how they convert to values
for different types.  These rules allow you to assign a value like "<tt>7</tt>"
to a "<tt>bits&lt;4&gt;</tt>" value, for example.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="classesdefs">Classes and definitions</a>
</div>

<div class="doc_text">

<p>As mentioned in the <a href="#concepts">intro</a>, classes and definitions
(collectively known as 'records') in TableGen are the main high-level unit of
information that TableGen collects.  Records are defined with a <tt>def</tt> or
<tt>class</tt> keyword, the record name, and an optional list of "<a
href="#templateargs">template arguments</a>".  If the record has superclasses,
they are specified as a comma separated list that starts with a colon character
("<tt>:</tt>").  If <a href="#valuedef">value definitions</a> or <a
href="#recordlet">let expressions</a> are needed for the class, they are
enclosed in curly braces ("<tt>{}</tt>"); otherwise, the record ends with a
semicolon.</p>

<p>Here is a simple TableGen file:</p>

<div class="doc_code">
<pre>
<b>class</b> C { <b>bit</b> V = 1; }
<b>def</b> X : C;
<b>def</b> Y : C {
  <b>string</b> Greeting = "hello";
}
</pre>
</div>

<p>This example defines two definitions, <tt>X</tt> and <tt>Y</tt>, both of
which derive from the <tt>C</tt> class.  Because of this, they both get the
<tt>V</tt> bit value.  The <tt>Y</tt> definition also gets the Greeting member
as well.</p>

<p>In general, classes are useful for collecting together the commonality
between a group of records and isolating it in a single place.  Also, classes
permit the specification of default values for their subclasses, allowing the
subclasses to override them as they wish.</p>

</div>

<!---------------------------------------------------------------------------->
<div class="doc_subsubsection">
  <a name="valuedef">Value definitions</a>
</div>

<div class="doc_text">

<p>Value definitions define named entries in records.  A value must be defined
before it can be referred to as the operand for another value definition or
before the value is reset with a <a href="#recordlet">let expression</a>.  A
value is defined by specifying a <a href="#types">TableGen type</a> and a name.
If an initial value is available, it may be specified after the type with an
equal sign.  Value definitions require terminating semicolons.</p>

</div>

<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
  <a name="recordlet">'let' expressions</a>
</div>

<div class="doc_text">

<p>A record-level let expression is used to change the value of a value
definition in a record.  This is primarily useful when a superclass defines a
value that a derived class or definition wants to override.  Let expressions
consist of the '<tt>let</tt>' keyword followed by a value name, an equal sign
("<tt>=</tt>"), and a new value.  For example, a new class could be added to the
example above, redefining the <tt>V</tt> field for all of its subclasses:</p>

<div class="doc_code">
<pre>
<b>class</b> D : C { let V = 0; }
<b>def</b> Z : D;
</pre>
</div>

<p>In this case, the <tt>Z</tt> definition will have a zero value for its "V"
value, despite the fact that it derives (indirectly) from the <tt>C</tt> class,
because the <tt>D</tt> class overrode its value.</p>

</div>

<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
  <a name="templateargs">Class template arguments</a>
</div>

<div class="doc_text">

<p>TableGen permits the definition of parameterized classes as well as normal
concrete classes.  Parameterized TableGen classes specify a list of variable
bindings (which may optionally have defaults) that are bound when used.  Here is
a simple example:</p>

<div class="doc_code">
<pre>
<b>class</b> FPFormat&lt;<b>bits</b>&lt;3&gt; val&gt; {
  <b>bits</b>&lt;3&gt; Value = val;
}
<b>def</b> NotFP      : FPFormat&lt;0&gt;;
<b>def</b> ZeroArgFP  : FPFormat&lt;1&gt;;
<b>def</b> OneArgFP   : FPFormat&lt;2&gt;;
<b>def</b> OneArgFPRW : FPFormat&lt;3&gt;;
<b>def</b> TwoArgFP   : FPFormat&lt;4&gt;;
<b>def</b> CompareFP  : FPFormat&lt;5&gt;;
<b>def</b> CondMovFP  : FPFormat&lt;6&gt;;
<b>def</b> SpecialFP  : FPFormat&lt;7&gt;;
</pre>
</div>

<p>In this case, template arguments are used as a space efficient way to specify
a list of "enumeration values", each with a "<tt>Value</tt>" field set to the
specified integer.</p>

<p>The more esoteric forms of <a href="#values">TableGen expressions</a> are
useful in conjunction with template arguments.  As an example:</p>

<div class="doc_code">
<pre>
<b>class</b> ModRefVal&lt;<b>bits</b>&lt;2&gt; val&gt; {
  <b>bits</b>&lt;2&gt; Value = val;
}

<b>def</b> None   : ModRefVal&lt;0&gt;;
<b>def</b> Mod    : ModRefVal&lt;1&gt;;
<b>def</b> Ref    : ModRefVal&lt;2&gt;;
<b>def</b> ModRef : ModRefVal&lt;3&gt;;

<b>class</b> Value&lt;ModRefVal MR&gt; {
  <i>// Decode some information into a more convenient format, while providing
  // a nice interface to the user of the "Value" class.</i>
  <b>bit</b> isMod = MR.Value{0};
  <b>bit</b> isRef = MR.Value{1};

  <i>// other stuff...</i>
}

<i>// Example uses</i>
<b>def</b> bork : Value&lt;Mod&gt;;
<b>def</b> zork : Value&lt;Ref&gt;;
<b>def</b> hork : Value&lt;ModRef&gt;;
</pre>
</div>

<p>This is obviously a contrived example, but it shows how template arguments
can be used to decouple the interface provided to the user of the class from the
actual internal data representation expected by the class.  In this case,
running <tt>tblgen</tt> on the example prints the following definitions:</p>

<div class="doc_code">
<pre>
<b>def</b> bork {      <i>// Value</i>
  <b>bit</b> isMod = 1;
  <b>bit</b> isRef = 0;
}
<b>def</b> hork {      <i>// Value</i>
  <b>bit</b> isMod = 1;
  <b>bit</b> isRef = 1;
}
<b>def</b> zork {      <i>// Value</i>
  <b>bit</b> isMod = 0;
  <b>bit</b> isRef = 1;
}
</pre>
</div>

<p> This shows that TableGen was able to dig into the argument and extract a
piece of information that was requested by the designer of the "Value" class.
For more realistic examples, please see existing users of TableGen, such as the
X86 backend.</p>

</div>

<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
  <a name="multiclass">Multiclass definitions and instances</a>
</div>

<div class="doc_text">

<p>
While classes with template arguments are a good way to factor commonality
between two instances of a definition, multiclasses allow a convenient notation
for defining multiple definitions at once (instances of implicitly constructed
classes).  For example, consider an 3-address instruction set whose instructions
come in two forms: "<tt>reg = reg op reg</tt>" and "<tt>reg = reg op imm</tt>"
(e.g. SPARC). In this case, you'd like to specify in one place that this
commonality exists, then in a separate place indicate what all the ops are.
</p>

<p>
Here is an example TableGen fragment that shows this idea:
</p>

<div class="doc_code">
<pre>
<b>def</b> ops;
<b>def</b> GPR;
<b>def</b> Imm;
<b>class</b> inst&lt;<b>int</b> opc, <b>string</b> asmstr, <b>dag</b> operandlist&gt;;

<b>multiclass</b> ri_inst&lt;<b>int</b> opc, <b>string</b> asmstr&gt; {
  def _rr : inst&lt;opc, !strconcat(asmstr, " $dst, $src1, $src2"),
                 (ops GPR:$dst, GPR:$src1, GPR:$src2)&gt;;
  def _ri : inst&lt;opc, !strconcat(asmstr, " $dst, $src1, $src2"),
                 (ops GPR:$dst, GPR:$src1, Imm:$src2)&gt;;
}

<i>// Instantiations of the ri_inst multiclass.</i>
<b>defm</b> ADD : ri_inst&lt;0b111, "add"&gt;;
<b>defm</b> SUB : ri_inst&lt;0b101, "sub"&gt;;
<b>defm</b> MUL : ri_inst&lt;0b100, "mul"&gt;;
...
</pre>
</div>

<p>The name of the resultant definitions has the multidef fragment names
   appended to them, so this defines <tt>ADD_rr</tt>, <tt>ADD_ri</tt>,
   <tt>SUB_rr</tt>, etc.  A defm may inherit from multiple multiclasses,
   instantiating definitions from each multiclass.  Using a multiclass
   this way is exactly equivalent to instantiating the classes multiple
   times yourself, e.g. by writing:</p>

<div class="doc_code">
<pre>
<b>def</b> ops;
<b>def</b> GPR;
<b>def</b> Imm;
<b>class</b> inst&lt;<b>int</b> opc, <b>string</b> asmstr, <b>dag</b> operandlist&gt;;

<b>class</b> rrinst&lt;<b>int</b> opc, <b>string</b> asmstr&gt;
  : inst&lt;opc, !strconcat(asmstr, " $dst, $src1, $src2"),
         (ops GPR:$dst, GPR:$src1, GPR:$src2)&gt;;

<b>class</b> riinst&lt;<b>int</b> opc, <b>string</b> asmstr&gt;
  : inst&lt;opc, !strconcat(asmstr, " $dst, $src1, $src2"),
         (ops GPR:$dst, GPR:$src1, Imm:$src2)&gt;;

<i>// Instantiations of the ri_inst multiclass.</i>
<b>def</b> ADD_rr : rrinst&lt;0b111, "add"&gt;;
<b>def</b> ADD_ri : riinst&lt;0b111, "add"&gt;;
<b>def</b> SUB_rr : rrinst&lt;0b101, "sub"&gt;;
<b>def</b> SUB_ri : riinst&lt;0b101, "sub"&gt;;
<b>def</b> MUL_rr : rrinst&lt;0b100, "mul"&gt;;
<b>def</b> MUL_ri : riinst&lt;0b100, "mul"&gt;;
...
</pre>
</div>

<p>
A defm can also be used inside a multiclass providing several levels of
multiclass instanciations.
</p>

<div class="doc_code">
<pre>
<b>class</b> Instruction&lt;bits&lt;4&gt; opc, string Name&gt; {
  bits&lt;4&gt; opcode = opc;
  string name = Name;
}

<b>multiclass</b> basic_r&lt;bits&lt;4&gt; opc&gt; {
  <b>def</b> rr : Instruction&lt;opc, "rr"&gt;;
  <b>def</b> rm : Instruction&lt;opc, "rm"&gt;;
}

<b>multiclass</b> basic_s&lt;bits&lt;4&gt; opc&gt; {
  <b>defm</b> SS : basic_r&lt;opc&gt;;
  <b>defm</b> SD : basic_r&lt;opc&gt;;
  <b>def</b> X : Instruction&lt;opc, "x"&gt;;
}

<b>multiclass</b> basic_p&lt;bits&lt;4&gt; opc&gt; {
  <b>defm</b> PS : basic_r&lt;opc&gt;;
  <b>defm</b> PD : basic_r&lt;opc&gt;;
  <b>def</b> Y : Instruction&lt;opc, "y"&gt;;
}

<b>defm</b> ADD : basic_s&lt;0xf&gt;, basic_p&lt;0xf&gt;;
...

<i>// Results</i>
<b>def</b> ADDPDrm { ...
<b>def</b> ADDPDrr { ...
<b>def</b> ADDPSrm { ...
<b>def</b> ADDPSrr { ...
<b>def</b> ADDSDrm { ...
<b>def</b> ADDSDrr { ...
<b>def</b> ADDY { ...
<b>def</b> ADDX { ...
</pre>
</div>

<p>
defm declarations can inherit from classes too, the
rule to follow is that the class list must start after the
last multiclass, and there must be at least one multiclass
before them.
</p>

<div class="doc_code">
<pre>
<b>class</b> XD { bits&lt;4&gt; Prefix = 11; }
<b>class</b> XS { bits&lt;4&gt; Prefix = 12; }

<b>class</b> I&lt;bits<4&gt; op> {
  bits&lt;4&gt; opcode = op;
}

<b>multiclass</b> R {
  <b>def</b> rr : I&lt;4&gt;;
  <b>def</b> rm : I&lt;2&gt;;
}

<b>multiclass</b> Y {
  <b>defm</b> SS : R, XD;
  <b>defm</b> SD : R, XS;
}

<b>defm</b> Instr : Y;

<i>// Results</i>
<b>def</b> InstrSDrm {
  bits&lt;4&gt; opcode = { 0, 0, 1, 0 };
  bits&lt;4&gt; Prefix = { 1, 1, 0, 0 };
}
...
<b>def</b> InstrSSrr {
  bits&lt;4&gt; opcode = { 0, 1, 0, 0 };
  bits&lt;4&gt; Prefix = { 1, 0, 1, 1 };
}
</pre>
</div>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="filescope">File scope entities</a>
</div>

<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
  <a name="include">File inclusion</a>
</div>

<div class="doc_text">
<p>TableGen supports the '<tt>include</tt>' token, which textually substitutes
the specified file in place of the include directive.  The filename should be
specified as a double quoted string immediately after the '<tt>include</tt>'
keyword.  Example:</p>

<div class="doc_code">
<pre>
<b>include</b> "foo.td"
</pre>
</div>

</div>

<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
  <a name="globallet">'let' expressions</a>
</div>

<div class="doc_text">

<p>"Let" expressions at file scope are similar to <a href="#recordlet">"let"
expressions within a record</a>, except they can specify a value binding for
multiple records at a time, and may be useful in certain other cases.
File-scope let expressions are really just another way that TableGen allows the
end-user to factor out commonality from the records.</p>

<p>File-scope "let" expressions take a comma-separated list of bindings to
apply, and one or more records to bind the values in.  Here are some
examples:</p>

<div class="doc_code">
<pre>
<b>let</b> isTerminator = 1, isReturn = 1, isBarrier = 1, hasCtrlDep = 1 <b>in</b>
  <b>def</b> RET : I&lt;0xC3, RawFrm, (outs), (ins), "ret", [(X86retflag 0)]&gt;;

<b>let</b> isCall = 1 <b>in</b>
  <i>// All calls clobber the non-callee saved registers...</i>
  <b>let</b> Defs = [EAX, ECX, EDX, FP0, FP1, FP2, FP3, FP4, FP5, FP6, ST0,
              MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7,
              XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, EFLAGS] <b>in</b> {
    <b>def</b> CALLpcrel32 : Ii32&lt;0xE8, RawFrm, (outs), (ins i32imm:$dst,variable_ops),
                           "call\t${dst:call}", []&gt;;
    <b>def</b> CALL32r     : I&lt;0xFF, MRM2r, (outs), (ins GR32:$dst, variable_ops),
                        "call\t{*}$dst", [(X86call GR32:$dst)]&gt;;
    <b>def</b> CALL32m     : I&lt;0xFF, MRM2m, (outs), (ins i32mem:$dst, variable_ops),
                        "call\t{*}$dst", []&gt;;
  }
</pre>
</div>

<p>File-scope "let" expressions are often useful when a couple of definitions
need to be added to several records, and the records do not otherwise need to be
opened, as in the case with the <tt>CALL*</tt> instructions above.</p>

<p>It's also possible to use "let" expressions inside multiclasses, providing
more ways to factor out commonality from the records, specially if using
several levels of multiclass instanciations. This also avoids the need of using
"let" expressions within subsequent records inside a multiclass.</p> 

<div class="doc_code">
<pre>
<b>multiclass </b>basic_r&lt;bits&lt;4&gt; opc&gt; {
  <b>let </b>Predicates = [HasSSE2] in {
    <b>def </b>rr : Instruction&lt;opc, "rr"&gt;;
    <b>def </b>rm : Instruction&lt;opc, "rm"&gt;;
  }
  <b>let </b>Predicates = [HasSSE3] in
    <b>def </b>rx : Instruction&lt;opc, "rx"&gt;;
}

<b>multiclass </b>basic_ss&lt;bits&lt;4&gt; opc&gt; {
  <b>let </b>IsDouble = 0 in
    <b>defm </b>SS : basic_r&lt;opc&gt;;

  <b>let </b>IsDouble = 1 in
    <b>defm </b>SD : basic_r&lt;opc&gt;;
}

<b>defm </b>ADD : basic_ss&lt;0xf&gt;;
</pre>
</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="codegen">Code Generator backend info</a></div>
<!-- *********************************************************************** -->

<p>Expressions used by code generator to describe instructions and isel
patterns:</p>

<div class="doc_text">

<dt><tt>(implicit a)</tt></dt>
  <dd>an implicitly defined physical register.  This tells the dag instruction
  selection emitter the input pattern's extra definitions matches implicit
  physical register definitions.</dd>

</div>

<!-- *********************************************************************** -->
<div class="doc_section"><a name="backends">TableGen backends</a></div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>TODO: How they work, how to write one.  This section should not contain
details about any particular backend, except maybe -print-enums as an example.
This should highlight the APIs in <tt>TableGen/Record.h</tt>.</p>

</div>

<!-- *********************************************************************** -->

<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>

  <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
  <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>

</body>
</html>
