blob: c2b237c41d7628f3bb1342b6551bae486913c12e [file] [log] [blame]
<html>
<head><title>TableGen BOF</title></head>
<body>
<h1>TableGen BOF</h1>
<h3><i>Mihail Popa</i></h3>
<p>The BoF was attended by quite a lot of people and there was general agreement
that tablegen needs improvement in some shape or form. However there are many
divergent ideas as to how to go about this improvement. Of course this is
completely natural, tablegen being a versatile tool used by many different
people for many different purposes.</p>
<p>Part of the attendees focused on missing features. Feature requests include:</p>
<ul>
<li>support for vector literals</li>
<li>support for instruction/patterns with multiple outputs</li>
<li>support complex transforms where types of input and output differ</li>
<li>remove need of magic vars in complex patterns</li>
<li>improve support for permutations of operands</li>
<li>ability to implement DAG combines in tablegen</li>
<li>auto detect/infer constraints</li>
<li>add support or missing patterns and/or selectable insts</li>
<li>extend tablegen unit tests to go beyond simple syntactic constructs</li>
<li>automatically add MCDesc fields</li>
<li>improve debug-ability and error reporting</li>
<li>auto-inversion for predicates</li>
</ul>
<p>It was commented that the current state of tablegen is due to its quite rapid
growth through the past years. Then point was raised that, probably, we will
not be fixing anything by simply bolting on top further functionality.</p>
<p>My desire was to steer the discussion towards how to design tablegen as a
proper domain specific language targeted at compiler construction. I think
it was generally agreed that this is a distant goal worth pursuing and that
the first steps is to first document what tablegen currently has.</p>
<p>The root cause for lack of documentation was identified as:</p>
<blockquote><i>
"People don't feel authoritative enough to go ahead and write docs.
Many community members are knowledgeable in small pieces,
but don’t feel are qualified to author documentation".</i>
</blockquote>
<p>It was generally agreed that a way to solve this is to create a shared
repository where everyone can commit any pieces of information they might
have. We hope it will grow to a proper documentation for tablegen's features.
Once gotten there we would be in a much better position to decide how to
further develop this tool.</p>
</body>