<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">