<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/143123>143123</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[InstCombine] fcmp is incorrectly inverted
</td>
</tr>
<tr>
<th>Labels</th>
<td>
miscompilation,
llvm:instcombine,
floating-point,
generated by fuzzer
</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/yVw9wM
```
define float @src(float %x) {
%cmp = fcmp olt float %x, 0.000000e+00
%sel = select nnan nsz i1 %cmp, float %x, float -0.000000e+00
ret float %sel
}
define float @tgt(float %x) {
%.inv = fcmp oge float %x, 0.000000e+00
%sel1 = select i1 %.inv, float -0.000000e+00, float %x
ret float %sel1
}
```
```
----------------------------------------
define float @src(float %x) {
#0:
%cmp = fcmp olt float %x, 0.000000
%sel = select nnan nsz i1 %cmp, float %x, float -0.000000
ret float %sel
}
=>
define float @tgt(float %x) {
#0:
%.inv = fcmp oge float %x, 0.000000
%sel1 = select i1 %.inv, float -0.000000, float %x
ret float %sel1
}
Transformation doesn't verify!
ERROR: Value mismatch
Example:
float %x = #x7f800002 (SNaN)
Source:
i1 %cmp = #x0 (0)
float %sel = #x80000000 (-0.0)
Target:
i1 %.inv = #x0 (0)
float %sel1 = #x7f800002 (SNaN)
Source value: #x80000000 (-0.0)
Target value: #x7f800002 (SNaN)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVU2PozgQ_TXFxUpkFyGEA4d090Taw85KPaO5O6YgXhkT2Sbdya9fGRBN707vpFeLooDtquf36vlDeq8bS1RC9gCIVVCvt-sLIEL2lMg-nDpXTp3Jsauu5TOdXVf1ihyke3YK4ewh3QMeAA_S6Avh2phLu-5cA3hQBHi4AR6uP16Kl9-B72HLpx_fV1RrS6w2nQwMNtw7Bbibmpi9AhYM8gfg-9hU7ZlB-sTq-NGZwJaBj4yv-fAQ4AOP6CwOeTJDkidDKjBrpWXW35gWE2RMfQ80tlY_wXO0mNSTiXLyp_j_Ty2hCR9pie21tpeFmobuVSOWckYVEetj4u_1_UyGeNOxMGf5vbrz-ZSngCmPS2fSdqe9_5-xv7A0fYL0y6eM_Zugey3-T-Z-ytbvTlpfd66VQXeWVR15C5gHdiGn6yugGNfwl-fnP57jtv4hTU-s1b6VQZ2mwVfZng2NAt-mHhgDpq95vYvEkAHuvn2VXwGLMfFb1zs15c3uzGk8xvMxeMl-DtiNgoe4KH_G_S5dQ2GJO1f834DFLxiPdNklliDW4mMOI4H3kR9UYbGXkqpMqyItZEKlyDcFCrHbFsmpzIVC3AiijdzidpfmeSa2qSoKEts0y3aJLpFjxrd8K1AIXqyVorzeZKLIj-KYiho2nFqpzXwCJ9r7nkqxSQWmiZFHMn466VvtVdeetRnWRDzw8REQYyake219UF171JbmoaGI2jarc6dtmLsbsuRkoIodr6zubzdy0_Xhyoi2OvaNhw032gf_xizoYIZb5zfrw-M0VTZtFu2ZtqpzjlQwV6bthVygKumdKd9fOY0Op_64Vl0LeBjIj6_V2XV_kgqAh6EGHvAwleFS4l8BAAD___kI8ks">