[clang] [llvm] [ValueTracking] Add dominating condition support in computeKnownBits() (PR #73662)
Björn Pettersson via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 8 08:48:08 PST 2023
bjope wrote:
Is the behavior seen in this example expected?
https://godbolt.org/z/f8eqEnsq6
The comments in InstCombineCompares kind of indicates that you try to avoid changing a signed predicate to a unsigned. But isn't that what happens here. As well as increasing the instruction count by introducing a zext instruction.
Main problem I have with this example is that downstream indvars later is doing
```
INDVARS: Rewriting loop exit condition to:
LHS: %inc = add nuw nsw i16 %j.046, 1
op: !=
RHS: %umax = call i16 @llvm.umax.i16(i16 %shr, i16 1)
ExitCount: (-1 + (1 umax (%n2.053 /u 2)))<nsw>
was: %cmp2 = icmp ult i16 %inc, %shr
```
and that increases the instruction count by inserting an umax in the for.body3.preheader. This later seem to result in a cycle regression.
I think you can see something a bit similar if running `opt -passes=instcombine,indvars -mtriple i386`.
https://github.com/llvm/llvm-project/pull/73662
More information about the cfe-commits
mailing list