Issue |
153991
|
Summary |
Missed optimization: fold x*a == b -> x == b/a
|
Labels |
new issue
|
Assignees |
|
Reporter |
zxt5
|
```
define i1 @src(i64 %arg0, ptr %arg1) {
%v0 = getelementptr inbounds nuw float, ptr %arg1, i64 %arg0
%v1 = load float, ptr %v0, align 4
%v2 = fmul nsz float %v1, 5.000000e-01
%v3 = fcmp nsz olt float %v2, 8.000000e+00
ret i1 %v3
}
define i1 @tgt(i64 %arg0, ptr %arg1) {
%v0 = getelementptr inbounds nuw float, ptr %arg1, i64 %arg0
%v1 = load float, ptr %v0, align 4
%v2 = fcmp nsz olt float %v1, 1.600000e+01
ret i1 %v2
}
```
Alive2: https://alive2.llvm.org/ce/z/LcL7YT
Godbolt: https://godbolt.org/z/WPMbTh7GP
Pattern found in https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/ffmpeg/optimized/af_arnndn.ll
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs