Accepting feedback on the spec?

Hi TOSA-authors, following from the LLVM discourse, I was wondering how you would like to organize discussion around the spec (and whether there are legal processes involved to contributing)?

We have a number of feedback points around “ergonomics” of the IR that likely fall somewhere between the spec and its realization as a dialect in MLIR (i.e. when to use operands vs attributes, availability of explicit broadcasting ops, some questions about the possibility of expanding the lookup table facility, etc). Before just inviting the people on my team in who have that feedback, I wanted to check point on the process a bit. Should we just have such discussions here and then if items only impact the MLIR implementation, move them to that venue?

We absolutely want to have these discussions as soon as possible and are very keen that TOSA is developed in the open and in a collaborative way, with contributions from many others. However, we also want to make sure that TOSA remains a royalty-free standard which anyone can implement. In order to achieve that second goal, we need to make sure all the contributions we accept into the specification are provided with appropriate rights to any IP owned on the contribution. We’re currently working out some form of contribution agreement to enable us to do that, which might take a few weeks. In the meantime, I can at least write up the contribution process on the wiki somewhere. Once I have that, I’ll post a link on this thread.

Sorry it has been nearly a month - I had actually written up the proposed contribution model on the wiki a few weeks ago however I had neglected to post the link on this thread. Scroll down to “Contributing to TOSA” on the wiki:

At the moment, we still don’t have the final text for the click-through contribution agreement or the technical ability to host such a facility on the website yet - it’s taking longer than I expected. However, on a more positive note we are close to having a “proper” license for the specification, one which grants anyone/everyone the appropriate rights to implement the TOSA specification as software or as hardware.

In the mean-time, if anyone wants to start making contributions before we iron out all the wrinkles, please feel free to send me a message and we’ll see what we can do in the interim.

Just a quick update on this… TL/DR - we’re now able to accept contributions to both the software components and the specification itself.

Contributions to the TOSA related software components (reference model, unit test framework, etc.) follows the same process as other projects on (see

Contributing to the TOSA specification itself is slightly more involved. Details on the wiki page ( under “Specification Contributions”), which I’ve pasted below:

The TOSA Specification is released under a different kind of licence to the software, one which enables vendors to create completely independent implementations of the TOSA specification which are not derivatives of anything on This license is posted at the start of the TOSA Specification document (sources here). To enable vendors to implement the TOSA Specification in this way, contributions need to be provided under a different license, the TOSA Specification Contributor Agreement.

Practically, contributions to the TOSA Specification are made by modifying the AsciiDoc markup of the specification. Those patches are then reviewed using Gerrit on as usual. However, before uploading patches to a gerrit review, users must read and agree to the TOSA Specification Contributors License Agreement. This can be achieved by doing the following:

  • Login to Gerrit (
  • Navigate to User Settings
  • Open the “Agreements” section
  • Click the “New Contributor Agreement” link
  • Select the “TOSA” radio button
  • Open the link to the TOSA Specification and read
  • If you agree to these terms, type “I agree” in the text box and click “SUBMIT”
  • Note: You may get an error saying “Agreement already submitted.”. This is harmless, please ignore it.
  • Start uploading patches to the specification!

Note: More significant contributions should be discussed on the’s Discourse, under the “TOSA” Category. Decisions on accepting more significant changes will be made largely based on the principals laid out above. I.e. Adding new operators to TOSA which can be trivially decomposed into a sequence of existing TOSA operators are unlikely to be accepted! :slight_smile: