<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/126569>126569</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[HLSL] Implement the Root Signature Parser for Descriptor Tables
</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 implementation of parsing the root signature in its token form into the in-memory representation of `RootElement`s. Specifically, it handles all Descriptor Table related tokens and parses these into the `DescriptorTable` and `DescriptorTableClause` struct representation.
This will define all the helper methods of Root Signature Parser needed for the other Root Element types and so it constitutes the "first 90%" of work for implementing the complete parser.
Note that this parser definition will be completely self-contained and can be invoked externally when creating the `HLSLRootSignatureAttr`
AC:
- [ ] Define the in-memory representation of `RootElement`, `DescriptorTable` and `DescriptorTableClause` in `HLSLRootSignatures.h`
- [ ] Define `RootSignatureParser` and provide a public `Parse` that will take an input `RootSignatureLexer` and generate a list of `RootElement`s
- [ ] Implement the internal methods and helper methods required to parse the different types of `RootElements`
- [ ] Add unit testing in `ParseHLSLRootSignatureTest.cpp`
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVMtu87YSfhpqM7Ah0ZZiLbTwnxzjFAiKoskLUOLImoYiVXKU_H77gpRit3E27UqAODPfZS4qBDpbxEaUP4SUZFs01AkpRfmUqZkH55v1Z9Y6fWleBwpAIcwYYFBWGwzAAwKNk8ERLSsmZ8H1MCkfyJ7Tq3eOISIpnj0CWSAOwO4NLfTOj0CW3VLHbkYcnb-Ax8lj-HtFUeW_O8f_W4BElYctvEzYUU-dMuYi5CMQX2kpY-AJQ-dpYufhVbUGwaNRjHrBDqCsTkQXFQFvRESV35JTrqjyFH__8mjUHNJ7YD93_IX7VuRHkR-TdR9kDGjsyWIiGKEGNBN6GJEHp0NUGmXCy9Wv3yJDDxZRo46GpTTHA_oldLUE-DLhIiq4aEXnbGDimdcuCSl78oGhzoUshZQR7MP5t1T02sPPtnUu_mFcLPKrjl8dI_CgGDgqWt4WTZRalTS2t3RzgYCm33TOsiKLOjHslI1BZN_dG2rAn4zexjbCx4AWOo_qSkRU-f-fX56j1qsrR2YvqnzhdHwUu_jdgCh_gCif4Gnx-F_PVByi_9Z7st_yDNthoXnHbcW-Ri5t_oSavHsnjaBgmltDXQxPETEg2Z98ZvWGoCyQnWa-K_mMP28Vz2jRK44lDQX-fqX-QfSXz4lYfVxadJ3UWPTL8Hr8cyafFmyZjJSpqe_R3yb0Djl8teioNcyWGBhDGoPF3WTAncWvGHjbTZOo8kw3O13vapVhUzzsalnIYrfPhibXRbHL9eHhsC_VoVZF0Zd1XXTtA5a4O-wyamQuy1wWeXGQh3K_1XVxKNV-L9u6LbCSYp_jqMhsjXkft86fs3QHm0JWZVVnRrVownpII8X1ivomxm_a-RzEPo_Gh1sFJjbp-KaEO8e_vwNxV78etpDN3jQD8xTiJsiTkKcz8TC3286NQp4i5PrZTN79gR0LeVouuZCnVcR7I_8KAAD__2xMEyc">