<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/142711>142711</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Missed Optimization: fold fcmp ord + select before fcmp oeq (x, C) into a single fcmp oeq (x, C)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Cancelll
</td>
</tr>
</table>
<pre>
```llvm
define i1 @src(ptr %0) {
%2 = getelementptr inbounds nuw i8, ptr %0, i64 48
%3 = load double, ptr %2, align 8
%4 = getelementptr inbounds nuw i8, ptr %0, i64 24
%5 = load double, ptr %4, align 8
%6 = fadd double %3, %5
%7 = fcmp ord double %6, 0.000000e+00
%8 = select i1 %7, double %6, double 0.000000e+00
%9 = fcmp oeq double %8, 1.000000e+00
ret i1 %9
}
define i1 @tgt(ptr %0) {
%2 = getelementptr inbounds nuw i8, ptr %0, i64 48
%3 = load double, ptr %2, align 8
%4 = getelementptr inbounds nuw i8, ptr %0, i64 24
%5 = load double, ptr %4, align 8
%6 = fadd double %3, %5
%7 = fcmp oeq double %6, 1.000000e+00
ret i1 %7
}
```
Alive2: https://alive2.llvm.org/ce/z/2T-D5v
Found this pattern in https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/typst-rs/optimized/4m3ebbqd1xx21e5m.ll
godbolt: https://godbolt.org/z/vMhzj9eP3
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsVE2TozYQ_TXNRTUu0QgwBw6emeK2lRzyByTUxtoIiUXC8_HrU8Jm7cxuJpWc1-WiEHr9Wv2eumUIZnBELZSPUD5ncoknP7dP0vVkrc2U128tVPzyt_Y8Aj9oOhpHzOQMBA9zD7if4swASw7YMKgfgR9YWiOD4pkNFMnSSC4mmHHKL04H5pYXZvaAT-wW_cRMJZjYbwTFSmC91Ez7RVm6g2N6l9YMjn3Hi_-XEMVGUH6SUPwkYbXij1Jv-PXUCZjINlR9QfXjxPx8j6wSku_4-iPAR863mP0aE8hSH1etsawT-kPwdflzjuYuL327C11VyH-MmWnL1QA_QP2cnh8cj0P85fh_cfxvylf_qnx9U35rPOCHgzVnQigO7BTjFKA4AHaAnVy_71Jr7vw8AHY9AXbvgB3-8fBcni8OdkkQFk8msEnGSLNjxn2gGkw8LWrX-xGw07F_fX97AewS9YOf4oMi159GOf8J2CnrFWA3SuPSKu0AdvFtCvFhDoCdn6IZzTtpwE6MBSn1Teevr5hTOe6svZxq8Fp5G3-s6rpxrSgVc_5yev_a0O9FpttCN0UjM2rzWjSco-D77NT2Sh7rnAtVNJoUyqquqKj3Ddf9sZeVzEyLHEteccGRc17tjvmx5FVTai1EhVUBgtMojf2uZmZCWKjNBdZ5nlmpyIZ1VCI6emHrLiCmyTm3q05qGQIIbk2I4UYTTbTUfjEhkGa_XZSR0XiXKj96q2-zAfBxa3pFRz_T7RIB7l_T7XlKPWdc9EyyYNxg_wGTLbNtP7F4HedXf6fZf6U-AnZrUcnBa9XnFv8KAAD__6Qnxu4">