Issue 167183
Summary Missed Optimization: Failure to simplify ((x << 2) + 31) & -4 to (x << 2) + 28
Labels new issue
Assignees
Reporter Leo0506
    ```
define i32 @src(ptr %arg0) {
  %v0 = load i32, ptr %arg0, align 4
  %v1 = shl i32 %v0, 2
  %v2 = add i32 %v1, 31
 %v3 = and i32 %v2, -4
  ret i32 %v3
}


define i32 @tgt(ptr %arg0) {
 %v0 = load i32, ptr %arg0, align 4
  %v1 = shl i32 %v0, 2
  %v2 = add i32 %v1, 28
  ret i32 %v2
}
```
alive2: https://alive2.llvm.org/ce/z/a-NFt_
godbolt: https://godbolt.org/z/3jb6xKr8n
Pattern found in: https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/linux/optimized/xfrm_user.ll
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to