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

    <tr>
        <th>Summary</th>
        <td>
            [HLSL] Implement the Root Signature parser
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            HLSL
      </td>
    </tr>

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

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

<pre>
    This issues handles the parsing of a root signature string into a list of `HLSLRootElement`s.

It should be self-contained from the parsing of `HLSLRootSignatureAttr`.

Note that the parsing of the root signature will take place in SemaHLSL so we have the capability to do semantic analysis when parsing, but we will defer much of this work to issue https://github.com/llvm/llvm-project/issues/119019.

AC:
- [ ] Define `HLSLRootElement` in `HLSLResource.h`
- [ ] Define and implement `ParseHLSLRootSignature` in `Sema/ParseHLSLRootSignature.[h|cpp]`
- [ ] Add unit testing of generated `HLSLRootElements` in `clang/unittests/Sema/ParseHLSLRootSignatureTest.cpp`
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykU89u2zwMfxr5QtSQlNiJDz6kzRd8BYphWPsCtE3HWmXJkOgWfftBTtIOWbDLTkEs_v6QPxJjNEdHVIviXmhtXEPWtEJrUewznHnwoT5_zBrffdQvg4lgYpwpwoCusxSBB4IJQzTuCL4HhOA9QyJGngNB5JCejGMPCNZETmWilP8_PT_98J7_szSSY1HKmAu5E3L3yBAHP9sOGoJItr9rvWM0jjrogx-vNX8je77o7piDKOWZ8ZtnAh6Qr6Hp75Xhd2MtML4STBZbAuPgmUZMChA9vBMM-EYLssUJG2MNfwB76DxEGtGxaQEd2o9oIrwP5C6CQj9AM3OiWEQ66inAOLfDyUoq9-E1cS1DhoF5imK1E_og9OFoeJibvPWj0Adr3y4_d1PwP6lloQ-nbIQ-KFVJVZ273z0kDrm7A1Hcgyj2sKfeOLqdQmr48kDRz6GlfBClvEWArgMzTidsQn3HEOmPML5Y0ySFPtwuy0VxP4jNQztNothfS-66DmZnGJgin-M7kqOATN2NVuKXamsxTf-Q4AmdJvRXJy8UOU82Spl19aqrVhVmVKvNal0UcrWpsqFuZFf2jdqqUlVKbSsqy64krNZlWxJikZlaS71WWm1VtdLFJldrVVXNttUV6r7aVmItaURj85Ri7sMxW_KrlZbrjc4sNmTj-TiTxfNlhnpJvZmPUaxluqj4xcCG7XLQC6DYw-NnPGljU5fw2eaymBSyOdj6H3btZPet1r8CAAD__4MXamI">