[llvm] [InstCombine] Fix fail to fold (A >> C1) Pred C2 if shr is used multple times #83430 (PR #83563)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 19 23:55:18 PDT 2024
SahilPatidar wrote:
@dtcxzyw in first iteration:
```IR
IC: Visiting: %switch.i = icmp ult i1 %cmp4.i, true
IC: Old = %switch.i = icmp ult i1 %cmp4.i, true
New = <badref> = xor i1 %cmp4.i, true
ADD: %switch.i = xor i1 %cmp4.i, true
IC: ERASE %1 = icmp ult i1 %cmp4.i, true
ADD DEFERRED: %cmp4.i = icmp sgt i64 %shr, 348731
ADD DEFERRED: %switch.i = xor i1 %cmp4.i, true
ADD: %cmp4.i = icmp sgt i64 %shr, 348731
IC: Visiting: %cmp4.i = icmp sgt i64 %shr, 348731
```
second:
```IR
IC: Visiting: %switch.i = xor i1 %cmp4.i, true
IC: Replacing %switch.i = xor i1 %cmp4.i, true
with %cmp4.i = icmp sle i64 %shr, 348731
ADD: %switch.i = xor i1 %cmp4.i, true
IC: Mod = %switch.i = xor i1 %cmp4.i, true
New = %switch.i = xor i1 %cmp4.i, true
IC: ERASE %switch.i = xor i1 %cmp4.i, true
ADD DEFERRED: %cmp4.i = icmp sle i64 %shr, 348731
ADD DEFERRED: %spec.select.i = select i1 %cmp4.i, i64 %shr, i64 348731
ADD: %cmp4.i = icmp sle i64 %shr, 348731
IC: Visiting: %cmp4.i = icmp sle i64 %shr, 348731
IC: Old = %cmp4.i = icmp sle i64 %shr, 348731
New = <badref> = icmp slt i64 %shr, 348732
ADD: %cmp4.i = icmp slt i64 %shr, 348732
IC: ERASE %1 = icmp sle i64 %shr, 348731
ADD DEFERRED: %shr = ashr i64 %mul, 4
ADD: %shr = ashr i64 %mul, 4
IC: Visiting: %shr = ashr i64 %mul, 4
IC: Visiting: %cmp4.i = icmp slt i64 %shr, 348732
```
third:
```IR
IC: Old = %cmp4.i = icmp slt i64 %shr, 348732
New = <badref> = icmp slt i64 %mul, 5579712
ADD: %cmp4.i = icmp slt i64 %mul, 5579712
IC: ERASE %1 = icmp slt i64 %shr, 348732
ADD DEFERRED: %shr = ashr i64 %mul, 4
ADD DEFERRED: %spec.select.i = select i1 %cmp4.i, i64 %shr, i64 348731
ADD: %shr = ashr i64 %mul, 4
IC: Visiting: %shr = ashr i64 %mul, 4
IC: Visiting: %cmp4.i = icmp slt i64 %mul, 5579712
IC: Visiting: %spec.select.i = select i1 %cmp4.i, i64 %shr, i64 348731
IC: Visiting: ret i64 %spec.select.i
```
https://github.com/llvm/llvm-project/pull/83563
More information about the llvm-commits
mailing list