[LLVMdev] Summary of TableNextGen BOF

Sean Silva chisophugis at gmail.com
Thu Dec 12 13:50:21 PST 2013


On Tue, Dec 10, 2013 at 6:38 AM, Mihail Popa <mihail.popa at gmail.com> wrote:

> Hello everyone.
>
> I apologise for the sizeable delay in sending this.
>
> The BoF was attended by quite a lot of people and there was general
> agreement that tablegen needs improvement in some shape of 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.
>
> Part of the attendees focused on missing features. Feature requests
> include:
>
>
>    1.
>
>    support for vector literals
>    2.
>
>    support for instruction/patterns with multiple outputs
>    3.
>
>    support complex transforms where types of input and output differ
>    4.
>
>    remove need of magic vars in complex patterns
>    5.
>
>    improve support for permutations of operands
>    6.
>
>    ability to implement DAG combines in tablegen
>    7.
>
>    auto detect/infer constraints
>    8.
>
>    add support or missing patterns and/or selectable insts
>    9.
>
>    extend tablegen unit tests to go beyond simple syntactic constructs
>    10.
>
>    automatically add MCDesc fields
>    11.
>
>    improve debug-ability
>    12.
>
>    improve error reporting
>    13. auto-inversion for predicates
>
>
> Someone in the room (I forgot the name, I'm sorry) said something which I
> found quite interesting, namely that he 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.
>
> 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.
>
> The root cause for lack of documentation was identified as:
>
> *"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".*
>

The say I got http://llvm.org/docs/TableGen/LangRef.html up and running is
by going through the source code of the parser and lexer line by line. It
still has a long way to go, because it only barely talks about the
semantics of the constructs; it's mostly just a grammar at the moment.

I was only able to do that line-by-line walkthrough after getting some
familiarity with the code. I urge all people who have some familiarity (not
even very much) with particular parts of tablegen, in particular the
emitters in utils/TableGen, to try to do a "sprint" walking through the
code to build up a skeleton description, like I did for
docs/TableGen/LangRef.rst. <
http://llvm.org/docs/SphinxQuickstartTemplate.html> has everything you need
to get up and running with writing docs.


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

Once we have some initial "skeletons" for describing various parts,
hopefully people will be able to find a place to describe whatever small
piece of "local" knowledge of TableGen that that they may have, to help
piece together the "global" picture.

-- Sean Silva


>
> Renato Golin was kind enough to offer to work on the documentation
> project. I myself intend to get involved too.
>
> Best regards,
> Mihai
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131212/a92cd26b/attachment.html>


More information about the llvm-dev mailing list