Issue 135557
Summary [ConstraintElim] Failure to eliminate cmp of usub.sat
Labels llvm:optimizations, missed-optimization
Assignees
Reporter nikic
    https://alive2.llvm.org/ce/z/4ZG-nD
```llvm
define i1 @src(i64 %index, i64 %limit) {
  %precond = icmp ult i64 %index, %limit
 call void @llvm.assume(i1 %precond)
  %sub.sat = call i64 @llvm.usub.sat.i64(i64 %index, i64 1)
  %cmp = icmp ult i64 %sub.sat, %limit
  ret i1 %cmp
}

define i1 @tgt(i64 %index, i64 %limit) {
  ret i1 true
}
```

I think we should be able to handle this by adding a fact that the usub.sat result is ule its first argument, similar to what we do for min/max/abs.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to