Issue 167096
Summary Missed Optimization: Fold Trunc/ZExt around Unsigned Min
Labels new issue
Assignees
Reporter Leo0506
    ```
define i16 @src(i32 %arg1, i32 %arg2, ptr %arg0) {
  %v0 = udiv i32 %arg2, %arg1
  %v1 = load i16, ptr %arg0, align 2
  %v2 = and i32 %v0, 65535
  %v3 = zext i16 %v1 to i32
  %v4 = call i32 @llvm.umin.i32(i32 %v2, i32 %v3)
  %v5 = trunc nuw i32 %v4 to i16
  ret i16 %v5
}

define i16 @tgt(i32 %arg1, i32 %arg2, ptr %arg0) {
  %v0 = udiv i32 %arg2, %arg1
  %v1 = load i16, ptr %arg0, align 2
  %v2 = trunc i32 %v0 to i16
  %v3 = call i16 @llvm.umin.i16(i16 %v2, i16 %v1)
  ret i16 %v3
}
```
alive2: https://alive2.llvm.org/ce/z/CyiY6W
godbolt: https://godbolt.org/z/sffPM5f8K
Pattern found in: https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/linux/optimized/tcp.ll
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to