<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/112984>112984</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[HLSL] Implement `GetDimensions` method on structured buffers
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hekota
</td>
</tr>
</table>
<pre>
Introduce a clang builtin that will be used to implement the implement `GetDimensions` method on structured buffers. The builtin could be something like this:
`void __builtin_hlsl_resource_get_dimensions(resource_t x, uint &numStructs, uint &stride);`
It would be lowered to appropriate LLVM DirectX intrinsic during clang codegen. Depends on llvm/llvm-project#112982.
Applieds to:
`StructuredBuffer`
`RWStructuredBuffer`
`RasterizerOrderedStructuredBuffer `
`AppendStructuredBuffer`
`ConsumeStructuredBuffer`
Docs:
https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/sm5-object-structuredbuffer-getdimensions
Example:
https://godbolt.org/z/bz7zxsf5n
AC:
- The builtin is available and lowers to appropriate LLVM DirectX intrinsics during clang codegen
- `GetDimensions` method can be implemented using this builtin
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyclMFu4zYQhp-GugxsUJRlRwcdkrhuA6Qo0BRtbwYljiR2KVIgh3Hqpy8oO7Y32A2KvdCmSM78_PnNyBB0bxFrVj6wcpvJSIPz9YBfHMmscerf-smSdyq2CBJaI20PTdSGtAUaJMFBGwMNQgyogBzocTI4oiWgAW9mbM1_RtrqEW3Qzga25jAiDU6BsxDIx5aiRwVN7Dr0YQl_DHhJ1bpoVEoTXDqkbQ9Gf0GgQQdW3DO-Zfw8AkBK9uq0gv3-HGA_mGD2HoOLvsV9j7RXVyni7rJC8MbEI0SdJIu1jePLLC3cfg3ktUImKlY8sDW_zf5EcHjXatwB_ckVOU3eTV5LQnh-_vNX2GqPLf0N2pLXNugWVPTpWieLW6ewR7uELU5oVUgeGfM6MrFLP4vJu3-wJSaKPBfVnVjearifJqNRBSD3wRu25i8Xpx9mo6_61_z3vz5dlYHQ6yP637xKF_u4GW53309J-GfxHp0NccTvb5nHrWuvLzwQTfNM7JITKL1djrr1LriOlq1L_qBdxMDE7qCtcofzv0IwsVOz54VKLDCxC2O5cE2ycXHF70Tfoke64eNGzk9vMiH9HUW9U40ztHS-Z2J3ZGLXHDfHt9CV9qsHerycX3yFuQ4gX6U2sjEI0qoTQuH_ERS-idB7mk_qr5U24XqpVVQQQwqUqutd2ylOpupCVUUlM6zzjajEXZlvqmyoqzJHJQouuhzLpmtXVbdq5Fq0vGzzjpeZrgUXq5znd4KXVVEtqw3mq3JTdlwU5abkbMVxlNosE-DJwUyHELGeAV9lRjZowtynhLB4gHmVCZHalq_nqmhiH9iKGx0oXMOQJjM3uF-eX55ZuYWnH25KWfSm_vDkmobYnNn7ZonuZqUJxPNVXmvxXwAAAP__t6jNug">