<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/142674>142674</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Missed Optimization: umul.with.overflow(x, C0).overflow || (prod > C1) —> x > C1 // C0
</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(i64 %0) {
%2 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %0, i64 168)
%3 = extractvalue { i64, i1 } %2, 0
%4 = extractvalue { i64, i1 } %2, 1
%5 = icmp ugt i64 %3, -16
%6 = or i1 %4, %5
ret i1 %6
}
define i1 @tgt(i64 %0) {
%2 = icmp ugt i64 %0, 109802048057794950
ret i1 %2
}
```
Alive2: https://alive2.llvm.org/ce/z/ubxNYr
A real world pattern: https://github.com/dtcxzyw/llvm-opt-benchmark/blob/a0891f2d52a309965f6aacf4eea993c8e913a614/bench/uv-rs/optimized/9pno5nkqeqshs01abwz0hzted.ll#L2049-L2053
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVE2P2zYQ_TWjC2GDHJISedDB8UantD33SEmUxYaWFIqyHf_6grSdFLtFiwCGAc7Me_PxZmTW1Z0ma2uQn0C-FWaL4xzqo5k6670v2rn_XkNJHz_vL2egh94ObrLEMQKCrqEDVK4UBFBSQE2g-gT0QNIbCfA30hnvk5W4UgAeM7B6S-BEuN_Om99fXRz388WGwc_XfQ78B-kxQQkrFaB-cfPMbW8xmC5ejN_sv-VAielJXyjxKyj2QsmMct15IdspkmdhPMXsWPmKKnPUHDINysyYwNkfbHzaUzxUb-n_3SzjKf7fLN_XkIfDqFYUqVBUVpUWWtJ3KfFnypeWQA8H7y4WgR_IGOOyAj8ANoCNyfZ9FmcOJ8Cms4DNHbDZ2tvvf4ZH6QcSrPHkOgffk8XEaMP0kezk4ri1-24-AzZ97G7371fAJpHv5iXuWjt149mEr4BN6-c25adKswF7iYZTrUs5lMZ0g7DWaM07ZTXjpmQiIRI61XXZhRWwmZfozu5ue8BGL9Msp6_f7Ld1XCkz7fVOx3u0_d57QP4FqdC7L0glL_qa95prU9iaVUJpJTXDYqyrjpqhs6VhWvVCDmglQyO4LgehlKKFq5GipCXlyFAy3BshWyWGilne8lZyENSejfM_plm4dd1szQSWlSi8aa1f8_UhTvZKshcQ0zGGOk-p3U5ruhW3xvUnTXTR2_o3t662J3882jbRzVmCjycFqG5pVY5prX5YCVRHqNKWqiXMPQH-mRxZXrzPCIqCFsl0ezrIQ1JypMUWfP0fQucvxVPlJcx_2S4CNrm5JNOz-0uNfwcAAP__aVdEww">