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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine] The sign bit of NaN is not preserved when folding `(X <= +/-0.0) ? (0.0 - X) : X to fabs(X)`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            llvm:instcombine
      </td>
    </tr>

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

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

<pre>
    Reproducer: https://alive2.llvm.org/ce/z/2JaLU9
```

----------------------------------------
define half @src(half %x) {
#0:
  %gtzero = fcmp ugt half %x, 0x0000
  %negx = fsub half 0x0000, %x
  %fabs = select i1 %gtzero, half %x, half %negx
  ret half %fabs
}
=>
define half @src(half %x) nofree willreturn memory(none) {
#0:
  %fabs = fabs half %x
  ret half %fabs
}
Transformation doesn't verify!

ERROR: Value mismatch

Example:
half %x = #xfd00 (SNaN)

Source:
i1 %gtzero = #x1 (1)
half %negx = #xff00 (QNaN)
half %fabs = #xfd00 (SNaN)

Target:
half %fabs = #x7d00 (SNaN)
Source value: #xfd00 (SNaN)
Target value: #x7d00 (SNaN)

Summary:
  0 correct transformations
  1 incorrect transformations
  0 failed-to-prove transformations
  0 Alive2 errors
```
Related issues:
https://github.com/AliveToolkit/alive2/pull/1155
https://github.com/llvm/llvm-project/issues/59279

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVF2P6jYQ_TXmZbTImXxAHvKQhRupVbVVudtqXx1nAm6dGNkOC_vrKydZWHp7V1cXIULsM2eOZ8ZHOKf2PVHB0keG2Hh5fru8MkSWbhdi8Adji3lxUZvmUuzoaE0zSLIsLuHg_dGxuGRYMayEVifCpdanbmnsnmEliWH1xrDCX8Vvf-aMlyzj85eXjJcPP_hhvGyoVT3BQegWWMKdlQzX0xumZ4Y5sNVjYMWYB0m8hLCz929kDbB4C63sjjDsPXyI2gA_c875O7yn_XkCu6GegDMAN1PIDGxF7UagI03Sg4pu2QL2Lsf7S2AfCSzdVASmoHu1Db_xlsVffui4vWktEbwqrS35wfbQUWfsheG6Nz19tyJX5eOfG-Wnup6t6F1rbCe8Mj00hlzPcOXhRFa1F4bR1NAvu93vuzAafwk9EHTKdcLLw7x5Ft1R06TlmnjUwjA-tw3nwHD99Uk8McynmK9msHIO-Vjja1RYW0cT_mOdb7TtRPvHlfbjCT_P_izsnvy94Luo1TdRk2A4hfOHQvw_90R8j_qWK9ANXSfs5b1_HKSxNgycv-uIG3cjUP1n-xxaoTQ1D948HK050XdQ5XiTgaw11v3n1u5IC08NKOcGcnNp7nxgr_xhqJfSdAyrkerZGP2P8lePYFgdB60ZVlGUpp8TBDuZH0Hz3yQDz5wdqzTHVSjVoiniJo9zsaAiWiUp5nyVRotDgVLIpG2aPKmzNmnzNMkkj5oMo0zmshULVSDHlCcYHnkULRvKeVanspFZlKdCsIRTJ5S-OttizF5EcZYl2UKLmrSbHbRTTpruqPRYz2CkuGGI4yHiUvXOS9PVKlzP0WNtMR6sHvaOJVwr590tjVdej9b8S-_8Zo5Lt_B8IAi-DbXyYFp4Ek-gHPTGw9GSI3uiBl4P1ENrdKP6PYTW4foFWLyZJveRYfXAl3x0ibgKY8eXHB7gZVop4QW8GS0iBIZxzPhisLr4-VbN9ToV-G8AAAD__y7i5nc">