| <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> |