<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/113988>113988</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Wrong simplification of nested `select` using an implied condition
</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>
https://github.com/llvm/llvm-project/blob/1ceccbb0dd9d8539fec2213566fe6cc2a05b7993/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp#L2785-L2798
```llvm
----------------------------------------
define float @fmin_fmin_zero_mismatch.2(float %x) {
#0:
%cmp1 = fcmp olt float %x, -0.000000
%#1 = fmul float %x, 1.000000
%min1 = select i1 %cmp1, float %#1, float 0.000000
%cmp2 = fcmp olt float %min1, 0.000000
%min2 = select i1 %cmp2, float %min1, float 0.000000
ret float %min2
}
=>
define float @fmin_fmin_zero_mismatch.2(float %x) {
#0:
%cmp1 = fcmp olt float %x, 0.000000
%min2 = select i1 %cmp1, float %x, float 0.000000
ret float %min2
}
Transformation doesn't verify!
ERROR: Value mismatch
Example:
float %x = undef
Source:
i1 %cmp1 = #x0 (0) [based on undef value]
float %#1 = #x00000000 (+0.0) [based on undef value]
float %min1 = #x00000000 (+0.0)
i1 %cmp2 = #x0 (0)
float %min2 = #x00000000 (+0.0)
Target:
i1 %cmp1 = #x1 (1)
float %min2 = #x7f801090 (SNaN)
Source value: #x00000000 (+0.0)
Target value: #x7f801090 (SNaN)
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/eJzEVU2P4ygQ_TXkghJB4c-DD-nJRFppNCt1r3aPI4zLCS0MFuBs9_76lR3nqz-2e_YyKHJs_Oq9egW4ZAh6ZxErkt6RdLOQQ9w7X9XO7h4H-7ioXfNc7WPsAxFrAlsC252O-6FeKdcR2BpzOP0te-8eUUUC29q4msCWK1SqrlnTlE2RirJFBcBFmmUtZkqBZGmdl6W44tFj3B9e2tA63wUC299siF9cV2uLt08PaFDFlep7AuIb5EW6_AZ5WRC2IWw9XzN2_E3809Tyk-OIbrDVFmlrnIyUJKzttP0xXf5B7350OnQyqv0KCBQzCNInAiUl-d2cAwg2Fm96oON71fWcErGhrep66kyk16Ff6JKt2DSuYgiIOaYbzAs8fw3vtD3Cw1QlqvlJeAw4h4-sl4k3ZFXXwzupjhJj7BtRnbbwpjrcqJ8Y3lb3eCsGcznzzXwjNkR8_YXL9DPGb8v-9P9dn8-GjNpZ2jgMlkAe6QG9bp8J8Ov9__X-_vd7Itb0T2kGpKc63ECeZNcbPFu_JDkZGWyD7TX-wQ1eXeAXhxOcgHhilEDBxuJOg6R3tQzYUGePbPQwJkPSzQvB8xafSOYxchG4Y6uZ8NNs5xPwLtsLA_DawGtK-AzlvFLS7zD-V6HGmYJ_oJO3BeOsnHQevsvvZ_hxIWb7Yv1RUsd0buHvcs8KQ9dJ_3x1KhhVzvtxZ8ebfRhOAE61_QDCaCu1wWYZ3dgyDvg-cG30AYGi986HF1_0RVOJphSlXGDFc8F4JrKELfZViqoEVai2RFStTJskq3nCkyTL00aV-UJXwCDhDErGGUvYKs15wWsBomlzgUlLEoad1GY1do2V87uFDmHAinNRFsXCyBpNmDomgMW_6fSWAIwN1FdTL6yHXSAJMzrEcKGJOhqs_vLO7mjQXW90q9XxILuWWgwRG0oydvx6kIzRIWi7o9LSCY0NVc42eoxYDN78fGeeUh3b6uzlUMG_AQAA__-eLEBV">