Description
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