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