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

    <tr>
        <th>Summary</th>
        <td>
            AMDGPUAtomicOptimizer: re-enable uniform path for fadd/fsub with result
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AMDGPU
      </td>
    </tr>

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

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

<pre>
    See #96479: the uniform path for fadd/fsub was disabled because it can return the wrong value in the first active lane of the result in the presence of NaNs and signed zeros.

We should find a way to fix and re-enable it, e.g. by overwriting the first active lane of `%y * +0.0` with -0.0. And maybe this can be optimized more if certain values are known not to be zero or nan.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8Uk1v2zAM_TXyhYjByh-ZDz64K7LTugHDsDNl0TZbWwokOVn66wc7HXraLhIgkk_vPT6KUUbH3KrqUVVPGa1p8qF9odvgyWbG21v7gxmULpq6PDaq6CBNDKuTwYcFzpQmGHyAgaxV-jTE1cCVIliJZGa2YLinNTJIgp4cBE5rcDvGNXg3woXmlUHuT4OEmID6JBeGmRyDH_ZC4LjO6W_bOXBk1-_VZ3qOQM7CLsTCGwcfc4VPCrv7-YshTn6dLQziLBBc6QbJwyC_98HAB3YbWZCk9GfgfMzB3MBfOFyDJHHjv8mpGpWubqB0B0o_Yo6qRrhKmuCAOebQOQsL3QxDmiTuHhgGf06yyBtbWHxgkAF6DonE3f2IQIHh1fmrA-fTxtbwLg18AEcuz2xb2KZoKOP24agRsdClzqa2LrEiQ1VVFvWn_gGboT4WjNpQj0iFyaTVqEs8YvGAJZY6t7VBO_QGTWOxrFCVyAvJnM_zZcl9GDOJceW2OVZVmc1keI57XvQG-srOqqLrvj59-f5Tab2lKLTb6MGsY1QlzhJT_ABLkmZu7_1d8ov0397NCFu6Prbx_4xtDt9Tka1hbqeUzlEVndInpU-jpGk1ee8XpU_bz-_X4Rz8C_dJ6dOuKSp9usu6tPpPAAAA___8YwGg">