Issue |
143957
|
Summary |
Missed optimization: fold (icmp eq a, c1) | (icmp ult f(a), c2) to icmp ult f(a), c2
|
Labels |
new issue
|
Assignees |
|
Reporter |
Cancelll
|
```llvm
define i1 @src(i64 %arg0) {
%1 = lshr i64 %arg0, 32
%2 = trunc nuw i64 %1 to i32
%3 = xor i32 %2, 55296
%4 = add i32 %3, -1114112
%5 = icmp ult i32 %4, -1112064
%6 = icmp eq i64 %1, 1114112
%7 = or i1 %6, %5
ret i1 %7
}
define i1 @tgt(i64 %arg0) {
%1 = lshr i64 %arg0, 32
%2 = trunc nuw i64 %1 to i32
%3 = xor i32 %2, 55296
%4 = add i32 %3, -1114112
%5 = icmp ult i32 %4, -1112064
ret i1 %5
}
```
alive2: https://alive2.llvm.org/ce/z/wc2PXT
godbolt: https://godbolt.org/z/o8nqYz577
Occurrences in llvm-opt-benchmarks:
typst-rs/optimized/18cop7j4xops9f9h.ll
%1 = lshr i64 %arg0, %c0 -> %.sroa.510.0.extract.shift = lshr i64 %.fr39, 32
%2 = trunc nuw i64 %1 to i32 -> %.sroa.510.0.extract.trunc = trunc nuw i64 %.sroa.510.0.extract.shift to i32
%3 = xor i32 %2, %c1 -> %130 = xor i32 %.sroa.510.0.extract.trunc, 55296
%4 = add i32 %3, %c2 -> %131 = add i32 %130, -1114112
%5 = icmp ult i32 %4, %c3 -> %132 = icmp ult i32 %131, -1112064
%6 = icmp eq i64 %1, %c4 -> %133 = icmp eq i64 %.sroa.510.0.extract.shift, 1114112
%7 = or i1 %6, %5 -> %or.cond38 = or i1 %132, %133
typst-rs/optimized/1mrwywpkq81cby93.ll
%1 = lshr i64 %arg0, %c0 -> %.sroa.514.0.extract.shift = lshr i64 %142, 32
%2 = trunc nuw i64 %1 to i32 -> %.sroa.514.0.extract.trunc = trunc nuw i64 %.sroa.514.0.extract.shift to i32
%3 = xor i32 %2, %c1 -> %145 = xor i32 %.sroa.514.0.extract.trunc, 55296
%4 = add i32 %3, %c2 -> %146 = add i32 %145, -1114112
%5 = icmp ult i32 %4, %c3 -> %147 = icmp ult i32 %146, -1112064
%6 = icmp eq i64 %1, %c4 -> %.not27 = icmp eq i64 %.sroa.514.0.extract.shift, 1114112
%7 = or i1 %6, %5 -> %.not = or i1 %.not27, %147
regex-rs/optimized/1rguw48xrsv49k4z.ll
%1 = lshr i64 %arg0, %c0 -> %.sroa.6.0.extract.shift.i.i = lshr i64 %754, 32
%2 = trunc nuw i64 %1 to i32 -> %.sroa.6.0.extract.trunc.i.i = trunc nuw i64 %.sroa.6.0.extract.shift.i.i to i32
%3 = xor i32 %2, %c1 -> %756 = xor i32 %.sroa.6.0.extract.trunc.i.i, 55296
%4 = add i32 %3, %c2 -> %757 = add i32 %756, -1114112
%5 = icmp ult i32 %4, %c3 -> %758 = icmp ult i32 %757, -1112064
%6 = icmp eq i64 %1, %c4 -> %759 = icmp eq i64 %.sroa.6.0.extract.shift.i.i, 1114112
%7 = or i1 %6, %5 -> %760 = or i1 %759, %758
3 Occurrences
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs