InstCombine: Fold X-C1 <u 2 -> (X & -2) == C1
[oota-llvm.git] / test / Transforms / InstCombine / icmp.ll
index 929688195fe5328cf9b2604be264f8696016018b..cf8305df2a9c8fadb7112e370cea61c73b5d2f51 100644 (file)
@@ -1113,3 +1113,13 @@ define i1 @or_icmp_eq_B_0_icmp_ult_A_B(i64 %a, i64 %b) {
   %3 = or i1 %1, %2
   ret i1 %3
 }
+
+; CHECK: @icmp_add_ult_2
+; CHECK-NEXT: [[AND:%[a-z0-9]+]] = and i32 %X, -2
+; CHECK-NEXT: [[CMP:%[a-z0-9]+]] = icmp eq i32 [[AND]], 14
+; CHECK-NEXT: ret i1 [[CMP]]
+define i1 @icmp_add_ult_2(i32 %X) {
+  %add = add i32 %X, -14
+  %cmp = icmp ult i32 %add, 2
+  ret i1 %cmp
+}