Issue 142674
Summary Missed Optimization: umul.with.overflow(x, C0).overflow || (prod > C1) —> x > C1 // C0
Labels new issue
Assignees
Reporter Cancelll
    ```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
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to