<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/113423>113423</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Wrong folding of `select` into ops
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bongjunj
</td>
</tr>
</table>
<pre>
The compiler explorer's alive2 times out for this case.
But I post a proof that the optimization actually happens: https://alive2.llvm.org/ce/z/oJb3ii
This is the Alive2 report on my machine:
```llvm
----------------------------------------
define float @fmul_by_self_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz.2(float %x) {
#0:
%#1 = fcmp ule float %x, 0.000000
%scaled.x = fmul nnan ninf nsz float %x, %x
%scaled.if.denormal = select nnan i1 %#1, float %x, float %scaled.x
ret float %scaled.if.denormal
}
=>
define float @fmul_by_self_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz.2(float %x) {
#0:
%#1 = fcmp ule float %x, 0.000000
%scaled.x = select nnan i1 %#1, float 1.000000, float %x
%scaled.if.denormal = fmul nnan ninf nsz float %scaled.x, %x
ret float %scaled.if.denormal
}
Transformation doesn't verify!
ERROR: Target is more poisonous than source
Example:
float %x = #xff800000 (-oo)
Source:
i1 %#1 = #x1 (1)
float %scaled.x = poison
float %scaled.if.denormal = #xff800000 (-oo)
Target:
i1 %#1 = #x1 (1)
float %scaled.x = #x3f800000 (1)
float %scaled.if.denormal = poison
Source value: #xff800000 (-oo)
Target value: poison
Summary:
0 correct transformations
1 incorrect transformations
0 failed-to-prove transformations
0 Alive2 errors
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVV9vqzYU_zTOy1EjsCk0Dzy0y420vUzqKu0RGTgOrowPs02W5NNPhiRN0t3bTXsaqgrB5_fHP3Ns6b3eWsSSPb6wx_VCjqEjV9Zkt--jfV_U1B7Ktw6hoX7QBh3gfjDk0DFeeJBG75BD0D16oDGAIgeh0x4a6XHJkjVLnl_GAD_DQD6AhMERKQidDBA6BBqC7vVRBk0WZBNGacwBOjkMaD0Tz9CFMMQHxjeMb2a9pTG7fkluy_imQcY3R8Y39EsttJ4Vr_-_RTfaT2rPs12HA7kAZKE_QC-bTluMEjMqT-a_KDK_eviH11zdotIWQRmSAViWqH40VX2oPBpVaVUlFeEf1REdVUrwahq2VtrKaqsq649LzvjTCc4f94yvgBUvJ3dcJBerEMcZFykwsQbV9AOM5qI8QX-CZJlM1xXEN9Jgu9zPsH40EPUh6oP1xzuC6f4JrNWyRUuul2ai8WiwCTORTs_GIv6W7fLrbOJM7TB8GrwSOU2_WJ8exJqJb__LwL9KKj3jb7P7cgV-tJCXsO_W89-F_uak9SqOTO3aEnrLeBFgh06rA-PpdeN9e3399TW28Jt0WwyxB3tyCANpT5bG2JLSgqfRNXgD3Mt-MB8d-RHCNE_GxV6ppykjYPzpgYjx1TXBbzPlGf8R8gUf3zylF9innKbC2ejfV9yH_7WpOYX_bCoWiiuh79ffW7yezpwQ7KQZY04_tH9avkvtNc-Jbex76Q5XbZJAQ87FzzzcfDP-XJCCtl-UJKCkNtg-BHoYHO3w-4WnfR2dI-fvtvFFW4p2JVZygWVa8FWeF3maLbpSFm2TiVVeizR_qjPZFnWRqRrzArOVWqmFLnnCszThIilSIbJlkz22icpV8lg0mVoJliXYS20u59FCez9imaYi42JhZI3GTycr5xb_hGmUcR4PWldG0EM9bj3LEqN98B80QQeD5e-O7BYUmVbbLZAClifz5sHyBLQNBDT4xehMeXtKbnXoxnrZUM_4ZjrG5luM8T3C-Way4hnfnLzuSv5XAAAA__8uOWVq">