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

    <tr>
        <th>Summary</th>
        <td>
            NVPTX atomic/volatile memory operations to some state spaces loose forward progress
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Currently, the NVPTX backend compiles atomic and volatile memory operations to some state spaces (e.g. local) as weak memory operations. Like in C++, weak memory operations in PTX do not have the same forward progress guarantees as atomic/volatile memory operations (for example of clang miscompiling C++, see: #62057).

The fix is for the backend to preserve atomic/volatile when compiling to PTX.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMkkFvnDAQhX-NuYyCYGCX5eBDstGeqqqHqOrVhllwYzzIY3aT_voKkiiVklaVLPvgGft7854RcUMg0mp3p3b3mVnSyFEPHH4Zz3bILPfP-rjESCH5Z4VHSCPB1-_fHn6ANd0jhR46nmbnScAknlwHJvRwYW-S8wQTTRyfgWeKJjkOAolBeCKQZBKBzKYjAYUHyoccPHfGK2zBCFzJPH7sz-GLeyRwAY4K77Z1_EvpWrSC9gyBE4zmQhu-mIngzPFqYg9z5CGSCAyLiSYkWoW8aVF4-ocShYczR6AnM82egM_QeRMGmJy8zMSF4U9KIVLVLSis9ljsGoVtrop7Vdy-7A8jwdk9gZMVbiN9G3FimCMJxQt9QnYdKcD7j4lX1XnW66pvq9ZkpMsGsd4fyhKzUTe27av2gG1j28LWB7T7A3W27mhHxraUOY0F1kVTlVhhucPclrbvmr49N7Wlft-quqDJOJ97f5lyjkPmRBbSZVHW2GbeWPKyZQox0BW2W4W4RizqtenGLoOouvBOkrw_k1zypF_i9T8OfJolzywf_c2W6PWY0iyqulV4UngaXBoXm3c8KTytDK_HzRz5J3VJ4WkjF4WnV2kXjb8DAAD__7TaFZA">