Issue 143211
Summary Missed optimization: fold a-b > a+b to b<0
Labels new issue
Assignees
Reporter Cancelll
    ```
define i1 @src(i8 %0, i8 %1) {
  %3 = sub nsw i8 %1, %0
  %4 = add nsw i8 %1, %0
  %5 = icmp sgt i8 %3, %4
  ret i1 %5
}

define i1 @tgt(i8 %0, i8 %1) {
  %3 = icmp slt i8 %0, 0
  ret i1 %3
}
```
Alive2: https://alive2.llvm.org/ce/z/pt1WOK
godbolt: https://godbolt.org/z/sPYv63zdo

Patterns found in llvm-opt-benchmark:

ffmpeg/optimized/flacenc.ll
%3 = sub nsw i8 %1, %0 ->  %302 = sub nsw i32 %.8542.i, %.0331543.i
%4 = add nsw i8 %1, %0  -> %303 = add nsw i32 %.8542.i, %.0331543.i
%5 = icmp sgt i8 %3, %4  -> %.not358535.i = icmp sgt i32 %302, %303

ffmpeg/optimized/g722enc.ll
%3 = sub nsw i8 %1, %0  ->  %125 = sub nsw i32 %124, %99
%4 = add nsw i8 %1, %0 ->  %126 = add nsw i32 %124, %99
%5 = icmp sgt i8 %3, %4  ->  %127 = icmp sle i32 %125, %126

zxing/optimized/AZEncoder.ll
%3 = sub nsw i8 %1, %0 ->  %79 = sub nsw i32 %1, %.05496
%4 = add nsw i8 %1, %0  ->  %80 = add nsw i32 %.05496, %1
%5 = icmp sgt i8 %3, %4  ->  %.not94 = icmp sgt i32 %79, %80

darktable/optimized/introspection_sharpen.ll
%3 = sub nsw i8 %1, %0 ->  %164 = sub nsw i64 %indvars.iv287, %94
%4 = add nsw i8 %1, %0  ->  %165 = add nsw i64 %indvars.iv287, %94
%5 = icmp sgt i8 %3, %4  ->  %.not217247 = icmp sgt i64 %164, %165

darktable/optimized/ext_preprocess.ll
%3 = sub nsw i8 %1, %0  ->  %50 = sub nsw i32 %.ph, %.04182
%4 = add nsw i8 %1, %0 ->  %51 = add nsw i32 %.ph, %.04182
%5 = icmp sgt i8 %3, %4  ->  %.not5873 = icmp sgt i32 %50, %51

opencv/optimized/cornersubpix.ll
%3 = sub nsw i8 %1, %0  ->  %168 = sub nsw i32 %.sroa.10.0.extract.trunc, %.sroa.5.0.extract.trunc
%4 = add nsw i8 %1, %0  ->  %169 = add nuw nsw i32 %.sroa.5.0.extract.trunc, %.sroa.10.0.extract.trunc
%5 = icmp sgt i8 %3, %4 ->  %.not228323 = icmp sgt i32 %168, %169

opencv/optimized/msd.ll
%3 = sub nsw i8 %1, %0  ->  %236 = sub nsw i64 %indvars.iv761, %168
%4 = add nsw i8 %1, %0  ->  %237 = add nsw i64 %indvars.iv761, %168
%5 = icmp sgt i8 %3, %4  ->  %.not408573 = icmp sgt i64 %236, %237

opencv/optimized/stardetector.ll
%3 = sub nsw i8 %1, %0  ->  %2708 = sub nsw i32 %.sroa.10211.2.us.i, %2658
%4 = add nsw i8 %1, %0  ->  %2709 = add nsw i32 %.sroa.10211.2.us.i, %2658
%5 = icmp sgt i8 %3, %4  -> %.not134259.us.i = icmp sgt i32 %2708, %2709

opencv/optimized/descriptor.ll
%3 = sub nsw i8 %1, %0  ->  %85 = sub nsw i32 %indvars191, %indvars167
%4 = add nsw i8 %1, %0  ->  %86 = add nsw i32 %indvars167, %indvars191
%5 = icmp sgt i8 %3, %4  ->  %.not100111 = icmp sgt i32 %85, %86

opencv/optimized/fuzzy_F0_math.ll
%3 = sub nsw i8 %1, %0  ->  %95 = sub nsw i64 %indvars.iv450, %91
%4 = add nsw i8 %1, %0  -> %indvars.iv.next451 = add nsw i64 %indvars.iv450, %91
%5 = icmp sgt i8 %3, %4  ->  %.not219373.us = icmp sgt i64 %95, %indvars.iv.next451

opencv/optimized/AKAZEFeatures.ll
%3 = sub nsw i8 %1, %0  ->  %98 = sub nsw i64 %97, %91
%4 = add nsw i8 %1, %0  ->  %99 = add nsw i64 %97, %91
%5 = icmp sgt i8 %3, %4  ->  %.not4350.i = icmp slt i64 %98, %99

opencv/optimized/edgeboxes.ll
%3 = sub nsw i8 %1, %0  ->  %119 = sub nsw i32 %118, %.064210
%4 = add nsw i8 %1, %0  ->  %120 = add nsw i32 %118, %.064210
%5 = icmp sgt i8 %3, %4  ->  %.not202 = icmp sgt i32 %119, %120

openvdb/optimized/LevelSetFilter.ll
%3 = sub nsw i8 %1, %0  -> %sub.i18 = sub nsw i32 %98, %99
%4 = add nsw i8 %1, %0  ->  %add.i = add nsw i32 %99, %98
%5 = icmp sgt i8 %3, %4  ->  %cmp.not5.i = icmp sgt i32 %sub.i18, %add.i

openvdb/optimized/Filter.ll
%3 = sub nsw i8 %1, %0  -> %sub.i14 = sub nsw i32 %93, %94
%4 = add nsw i8 %1, %0  ->  %add.i = add nsw i32 %94, %93
%5 = icmp sgt i8 %3, %4  ->  %cmp.not5.i = icmp sgt i32 %sub.i14, %add.i

14 Occurrences

openvdb/optimized/LevelSetFilter.ll
%3 = sub nsw i8 %1, %0  ->  %sub.i18 = sub nsw i32 %98, %99
%4 = add nsw i8 %1, %0  ->  %add.i = add nsw i32 %99, %98
%5 = icmp sgt i8 %3, %4  -> %cmp.not5.i = icmp sgt i32 %sub.i18, %add.i

openvdb/optimized/Filter.ll
%3 = sub nsw i8 %1, %0  ->  %sub.i14 = sub nsw i32 %93, %94
%4 = add nsw i8 %1, %0  ->  %add.i = add nsw i32 %94, %93
%5 = icmp sgt i8 %3, %4  ->  %cmp.not5.i = icmp sgt i32 %sub.i14, %add.i

14 Occurrences
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to