<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55563>55563</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AMDGPU][MC][GFX8+] Incorrect SMEM encoding of cache policy modifiers
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AMDGPU,
mc
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
dpreobra
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dpreobra
</td>
</tr>
</table>
<pre>
llvm assembler enables SMEM syntax with missing (s)offset:
s_load_dword s1, s[2:3] // accepted, assumed offset=0
This syntax may be used with cache policy modifiers:
// GFX10
s_load_dword s1, s[2:3] glc dlc
However, in this case cache policy modifiers are interpreted as an offset:
// GFX10
s_load_dword s1, s[2:3], 0x5 ; encoding: [0x41,0x00,0x00,0xf4,0x05,0x00,0x00,0xfa]
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydU02PmzAQ_TXmYm1kDCZw4LDZNNseIlVqK_W28sdA3BqIbLNJ_n3H-VBz2EhVLcQwzNPMezNjNZlT69z7QGUIMCgHnsIo0Qb6bftpS8NpjPJIDzbu6GBDsGNPCa8D4c3UdQEiKZ4JWxN2fVM84c1N0ryZw-QNDTnhLzQQseIILYhY08shfIMPlVrDPoJJKOQwD2DoLfOa3af-vrPhxmeQJ6qAzgHRZ25a6h3Q_eSsPtFhMraz4MMH5K5lXzc_c_bvlHunqXH6Ptnn6QDv4BPUjjQmcloGeMCESg-Ii-D3HlAuaqVypA97-F80k8-OgpJihVPUWHvsMUQRwo5lgrMjY_emKy-e-CgmU8pL7cy0hWmKRmbRRgctZnzerl-__kgQsdq-XCzSrQlfpY59wfreg46XPbrRQcUPOpTN3rW7GPfnqZ3l9zjZWS30NKCTtvRqnvZ--oWp0cWVnAG3cSOEqIps1_Kqq6HIlwJqlctiWSyruoNG6Up0quFl5qQCF5ICwrmS-jeMBite5XCemohm0OlbrDPbcsY5E3mdV0XD2QIqXZbCiNI0S6UaRkoGg7RukagtJt9n_nylntTcBww6G2L4G8Qlt_0IcGVgcB8m5eW1mpzjbvLt7W921teexf0BHB4ZHw">