<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/152339>152339</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Documenting the usage of TableGen records and expected behaviors in each TableGen backend
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          mshockwave
      </td>
    </tr>
</table>

<pre>
    (Original context: https://discourse.llvm.org/t/llvm-tablegen-friendlytablegen-an-initiative-to-make-llvm-tablegen-more-user-friendly/87613/7)

LLVM doesn't have a good documentation on how individual TableGen backend uses and interprets TableGen records and classes. Take the most common example: we don't have a formal specs on what we can put in an instruction operand list like `(ins GPR32:$rs1, ...)`; a single TableGen record might also be interpreted in a completely different way depends on the TableGen backend. For instance, `add` could be an `ADD` SDNode or an operator to build a collection of registers for register class.

This high-level issue is meant to track efforts in this area.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxsVEuP4zYM_jXyhYjhyK_k4EO2QfayfaAd9E5LtK1GlgxRTmb-fSFnmsFM9yhaFL8HPyOzGR1RJ-pvoj5nuMbJh27myavrHW-U9V6_dUIefg9mNA4tKO8ivUZRnmCKcWFRnoS8CHnRhpVfA1Nu7W3OfRiFvEQhL-m4i9hbGsnthmDIafv2LKDbGWeiwWhutIt-N-OVdp-bZh9otzKFZ7uQl0Pb7EshL62QR1GcRHH68ePvX0F7YidkG2HCGwHC6L0G7dU6k4sYjXfgHUz-DsZpczN6RQsvadR3ctCjupLTsDIxoNNgXKSwBIr8cSmQ8kE_viuLzMQ5vOCVIE4Es-cIys-zd0CvOC-Wklx3Au0_IRt8mNECL6Q4YbpPGNM1hQ6WNYJxgA6M4xhW9QC-UEhDreEI1lwJRFMIeTCO4fsff5Zys6MKvBfyF8jzPGnTFKL8Bghs3GjpKwuYzThFQMseevqgS3qbn4gsliLZN9BmGCiQi3DHN9C0kNMb8MT6q4I5XHzYwKNTlOCIpkCtRVOA8qvVaRq6VD2dz6n61_k3rwl8SOWNafQBood-NVZvUKyldyEGCDQajhQ46fg8PfzIHwvxMhmGyYzTztKNLBjmlcAwzIQupqdjQHUFGgYfIifCMbVgIMwz3ZX6WB4xo27f1lV1PNZlm03dUBx0f6yo1sdSF21VFs2gSj2odpCHotWZ6WQh6-JQNPumPtRtjropqqLEQdfVoe17URU0o7HPqGQbsm5fy7I8ZhZ7sryFUkpH9wduIWXKaOi2bPTryKIq0iLwxzPRREvd-X3ZjRs3a1bGkZJkP11gel1IJbt7mvBmfNh0IFTT_zzN1mC7z7EfTZzWPld-fo_6f4lfgv-HVPoBbOhZyMs7vVsn_w0AAP__nm2Fsg">