-supported include:
-</p>
-
-<p><ul>
-<li>? - Uninitialized field.</li>
-<li>0b1001011 - Binary integer value.</li>
-<li>07654321 - Octal integer value (indicated by a leading 0).</li>
-<li>7 - Decimal integer value.</li>
-<li>0x7F - Hexadecimal integer value.</li>
-<li>"foo" - String value.</li>
-<li>[{ .... }] - Code fragment.</li>
-<li>[ X, Y, Z ] - List value.</li>
-<li>{ a, b, c } - Initializer for a "bits<3>" value.</li>
-<li>value - Value reference.</li>
-<li>value{17} - Access to one or more bits of a value.</li>
-<li>DEF - Reference to a record definition.</li>
-<li>X.Y - Reference to the subfield of a value.</li>
-
-<li>(DEF a, b) - 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 'dag' values.</li>
-
-</ul></p>
-
-<p>
-Note that all of the values have rules specifying how they convert to to values
-for different types. These rules allow you to assign a value like "7" to a
-"bits<4>" value, for example.
-</p>
-
-
+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 ]<type></tt></dt>
+ <dd>list value. <type> 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<3>" 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<val list></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>(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>
+<dt><tt>(parallel (a), (b))</tt></dt>
+ <dd>a list of dags specifying parallel operations which map to the same
+ instruction.</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<type>(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<string> is a special case in that the argument must
+be an object defined by a 'def' construct.</dd>
+<dt><tt>!nameconcat<type>(a, b)</tt></dt>
+ <dd>Shorthand for !cast<type>(!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 integer operator 'a' is nonzero, 'c' otherwise.</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<4></tt>" value, for example.</p>