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

    <tr>
        <th>Summary</th>
        <td>
            [SPIRV] Incorrect translation of load/store atomic
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:SPIR-V
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            jmmartinez
      </td>
    </tr>

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

<pre>
    See https://github.com/llvm/llvm-project/pull/185628 for the broken tests.

```llvm-ir
define void @store_i32_unordered(ptr addrspace(1) %ptr, i32 %val) {
  store atomic i32 %val, ptr addrspace(1) %ptr unordered, align 4
  ret void
}
```

Is lowered to

```spirv
        %11 = OpFunction %4 None %5             ; -- Begin function store_i32_unordered
        %9 = OpFunctionParameter %3
        %10 = OpFunctionParameter %2
        %24 = OpLabel
        OpStore %9 %10 Aligned 4
        OpReturn
 OpFunctionEnd
```

Which drops the atomic qualifier.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUU91q4zwQfRr5ZkiQxz-xL3yRNF-g8LEtLXQvi2yNY7WK5JXkLLtPv1hJtml3KawQJB7NnNEZnSO8V3tD1LBiwxBfDgfhgjL0kyGyYpuIKQzWNW_xpLXyR_NIBEMIo2fZmuGO4W6vwjC1y84eGO60Pl5-FqOzL9QFhrtx0prhLq2KEivorYMwELTOvpKBQD74JePreZf8tCOAcoyvJfXKEBytksBy7oN19KwyfJ6MdZIcSYbVGBwIKZ0fRUcMq5RhDQyLMTiGN6AynL-OQsf4asP4GiBCgQj2oLp3KTfwCR5c9b0BodXeQB7xHIV4zZnHanvN5kTu1oO23-dKCPYDXz8qd4wop8WwSFNg2Rbuxt1kuqCsmYM5fLGG5n8FXC-WbWCxgA3tlYH-UvC3Yb3rUX9ocS-cOFAgNx9mH-7DP0vG98mYn5P_Fy3pq7O78TGO_dQ8oq7nGZI8T_GS9kBhcmYOvXX8z8g_x_p1UN0A0tnRR1mdH_TbJLTqFbllIptM1lktEmrS1SpL8zwrq2RoWtGRbCvqeVumSIiros_7IqMyT2Vd8UQ1yLHkWcpT5CWvljUK7GlVYJf2bdmlLOd0EEovZ70urdsnyvuJmqj0OtEzeX92WCu6VzKSZevH-9uHxdPZZ66JWm-nvWc512o2w2-0oIKODp1LnlixhVvTWeeoCxCcMF6L-NC2B22FZLi7FnUyOd38s1kjA3-xa50cG_wVAAD__1utQNA">