; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -instsimplify -S | FileCheck %s
target datalayout = "p:32:32-p1:64:64"

declare void @llvm.assume(i1)

define i1 @ptrtoint() {
; CHECK-LABEL: @ptrtoint(
; CHECK-NEXT:    ret i1 false
;
  %a = alloca i8
  %tmp = ptrtoint i8* %a to i32
  %r = icmp eq i32 %tmp, 0
  ret i1 %r
}

define i1 @bitcast() {
; CHECK-LABEL: @bitcast(
; CHECK-NEXT:    ret i1 false
;
  %a = alloca i32
  %b = alloca i64
  %x = bitcast i32* %a to i8*
  %y = bitcast i64* %b to i8*
  %cmp = icmp eq i8* %x, %y
  ret i1 %cmp
}

define i1 @gep() {
; CHECK-LABEL: @gep(
; CHECK-NEXT:    ret i1 false
;
  %a = alloca [3 x i8], align 8
  %x = getelementptr inbounds [3 x i8], [3 x i8]* %a, i32 0, i32 0
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @gep2() {
; CHECK-LABEL: @gep2(
; CHECK-NEXT:    ret i1 true
;
  %a = alloca [3 x i8], align 8
  %x = getelementptr inbounds [3 x i8], [3 x i8]* %a, i32 0, i32 0
  %y = getelementptr inbounds [3 x i8], [3 x i8]* %a, i32 0, i32 0
  %cmp = icmp eq i8* %x, %y
  ret i1 %cmp
}

; PR11238
%gept = type { i32, i32 }
@gepy = global %gept zeroinitializer, align 8
@gepz = extern_weak global %gept

define i1 @gep3() {
; CHECK-LABEL: @gep3(
; CHECK-NEXT:    ret i1 false
;
  %x = alloca %gept, align 8
  %a = getelementptr %gept, %gept* %x, i64 0, i32 0
  %b = getelementptr %gept, %gept* %x, i64 0, i32 1
  %equal = icmp eq i32* %a, %b
  ret i1 %equal
}

define i1 @gep4() {
; CHECK-LABEL: @gep4(
; CHECK-NEXT:    ret i1 false
;
  %x = alloca %gept, align 8
  %a = getelementptr %gept, %gept* @gepy, i64 0, i32 0
  %b = getelementptr %gept, %gept* @gepy, i64 0, i32 1
  %equal = icmp eq i32* %a, %b
  ret i1 %equal
}

@a = common global [1 x i32] zeroinitializer, align 4

define i1 @PR31262() {
; CHECK-LABEL: @PR31262(
; CHECK-NEXT:    ret i1 icmp uge (i32* getelementptr ([1 x i32], [1 x i32]* @a, i32 0, i32 undef), i32* getelementptr inbounds ([1 x i32], [1 x i32]* @a, i32 0, i32 0))
;
  %idx = getelementptr inbounds [1 x i32], [1 x i32]* @a, i64 0, i64 undef
  %cmp = icmp uge i32* %idx, getelementptr inbounds ([1 x i32], [1 x i32]* @a, i32 0, i32 0)
  ret i1 %cmp
}

define i1 @gep5() {
; CHECK-LABEL: @gep5(
; CHECK-NEXT:    ret i1 false
;
  %x = alloca %gept, align 8
  %a = getelementptr inbounds %gept, %gept* %x, i64 0, i32 1
  %b = getelementptr %gept, %gept* @gepy, i64 0, i32 0
  %equal = icmp eq i32* %a, %b
  ret i1 %equal
}

define i1 @gep6(%gept* %x) {
; Same as @gep3 but potentially null.
; CHECK-LABEL: @gep6(
; CHECK-NEXT:    ret i1 false
;
  %a = getelementptr %gept, %gept* %x, i64 0, i32 0
  %b = getelementptr %gept, %gept* %x, i64 0, i32 1
  %equal = icmp eq i32* %a, %b
  ret i1 %equal
}

define i1 @gep7(%gept* %x) {
; CHECK-LABEL: @gep7(
; CHECK-NEXT:    [[A:%.*]] = getelementptr [[GEPT:%.*]], %gept* [[X:%.*]], i64 0, i32 0
; CHECK-NEXT:    [[EQUAL:%.*]] = icmp eq i32* [[A]], getelementptr ([[GEPT]], %gept* @gepz, i32 0, i32 0)
; CHECK-NEXT:    ret i1 [[EQUAL]]
;
  %a = getelementptr %gept, %gept* %x, i64 0, i32 0
  %b = getelementptr %gept, %gept* @gepz, i64 0, i32 0
  %equal = icmp eq i32* %a, %b
  ret i1 %equal
}

define i1 @gep8(%gept* %x) {
; CHECK-LABEL: @gep8(
; CHECK-NEXT:    [[A:%.*]] = getelementptr [[GEPT:%.*]], %gept* [[X:%.*]], i32 1
; CHECK-NEXT:    [[B:%.*]] = getelementptr [[GEPT]], %gept* [[X]], i32 -1
; CHECK-NEXT:    [[EQUAL:%.*]] = icmp ugt %gept* [[A]], [[B]]
; CHECK-NEXT:    ret i1 [[EQUAL]]
;
  %a = getelementptr %gept, %gept* %x, i32 1
  %b = getelementptr %gept, %gept* %x, i32 -1
  %equal = icmp ugt %gept* %a, %b
  ret i1 %equal
}

define i1 @gep9(i8* %ptr) {
; CHECK-LABEL: @gep9(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    ret i1 true
;
entry:
  %first1 = getelementptr inbounds i8, i8* %ptr, i32 0
  %first2 = getelementptr inbounds i8, i8* %first1, i32 1
  %first3 = getelementptr inbounds i8, i8* %first2, i32 2
  %first4 = getelementptr inbounds i8, i8* %first3, i32 4
  %last1 = getelementptr inbounds i8, i8* %first2, i32 48
  %last2 = getelementptr inbounds i8, i8* %last1, i32 8
  %last3 = getelementptr inbounds i8, i8* %last2, i32 -4
  %last4 = getelementptr inbounds i8, i8* %last3, i32 -4
  %first.int = ptrtoint i8* %first4 to i32
  %last.int = ptrtoint i8* %last4 to i32
  %cmp = icmp ne i32 %last.int, %first.int
  ret i1 %cmp
}

define i1 @gep10(i8* %ptr) {
; CHECK-LABEL: @gep10(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    ret i1 true
;
entry:
  %first1 = getelementptr inbounds i8, i8* %ptr, i32 -2
  %first2 = getelementptr inbounds i8, i8* %first1, i32 44
  %last1 = getelementptr inbounds i8, i8* %ptr, i32 48
  %last2 = getelementptr inbounds i8, i8* %last1, i32 -6
  %first.int = ptrtoint i8* %first2 to i32
  %last.int = ptrtoint i8* %last2 to i32
  %cmp = icmp eq i32 %last.int, %first.int
  ret i1 %cmp
}

define i1 @gep11(i8* %ptr) {
; CHECK-LABEL: @gep11(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    ret i1 true
;
entry:
  %first1 = getelementptr inbounds i8, i8* %ptr, i32 -2
  %last1 = getelementptr inbounds i8, i8* %ptr, i32 48
  %last2 = getelementptr inbounds i8, i8* %last1, i32 -6
  %cmp = icmp ult i8* %first1, %last2
  ret i1 %cmp
}

define i1 @gep12(i8* %ptr) {
; CHECK-LABEL: @gep12(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[FIRST1:%.*]] = getelementptr inbounds i8, i8* [[PTR:%.*]], i32 -2
; CHECK-NEXT:    [[LAST1:%.*]] = getelementptr inbounds i8, i8* [[PTR]], i32 48
; CHECK-NEXT:    [[LAST2:%.*]] = getelementptr inbounds i8, i8* [[LAST1]], i32 -6
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8* [[FIRST1]], [[LAST2]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
entry:
  %first1 = getelementptr inbounds i8, i8* %ptr, i32 -2
  %last1 = getelementptr inbounds i8, i8* %ptr, i32 48
  %last2 = getelementptr inbounds i8, i8* %last1, i32 -6
  %cmp = icmp slt i8* %first1, %last2
  ret i1 %cmp
}

define i1 @gep13(i8* %ptr) {
; CHECK-LABEL: @gep13(
; CHECK-NEXT:    ret i1 false
;
; We can prove this GEP is non-null because it is inbounds.
  %x = getelementptr inbounds i8, i8* %ptr, i32 1
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @gep13_no_null_opt(i8* %ptr) #0 {
; We can't prove this GEP is non-null.
; CHECK-LABEL: @gep13_no_null_opt(
; CHECK-NEXT:    [[X:%.*]] = getelementptr inbounds i8, i8* [[PTR:%.*]], i32 1
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8* [[X]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %x = getelementptr inbounds i8, i8* %ptr, i32 1
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @gep14({ {}, i8 }* %ptr) {
; CHECK-LABEL: @gep14(
; CHECK-NEXT:    [[X:%.*]] = getelementptr inbounds { {}, i8 }, { {}, i8 }* [[PTR:%.*]], i32 0, i32 1
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8* [[X]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
; We can't simplify this because the offset of one in the GEP actually doesn't
; move the pointer.
  %x = getelementptr inbounds { {}, i8 }, { {}, i8 }* %ptr, i32 0, i32 1
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @gep15({ {}, [4 x {i8, i8}]}* %ptr, i32 %y) {
; CHECK-LABEL: @gep15(
; CHECK-NEXT:    ret i1 false
;
; We can prove this GEP is non-null even though there is a user value, as we
; would necessarily violate inbounds on one side or the other.
  %x = getelementptr inbounds { {}, [4 x {i8, i8}]}, { {}, [4 x {i8, i8}]}* %ptr, i32 0, i32 1, i32 %y, i32 1
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @gep15_no_null_opt({ {}, [4 x {i8, i8}]}* %ptr, i32 %y) #0 {
; We can't prove this GEP is non-null.
; CHECK-LABEL: @gep15_no_null_opt(
; CHECK-NEXT:    [[X:%.*]] = getelementptr inbounds { {}, [4 x { i8, i8 }] }, { {}, [4 x { i8, i8 }] }* [[PTR:%.*]], i32 0, i32 1, i32 [[Y:%.*]], i32 1
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8* [[X]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %x = getelementptr inbounds { {}, [4 x {i8, i8}]}, { {}, [4 x {i8, i8}]}* %ptr, i32 0, i32 1, i32 %y, i32 1
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @gep16(i8* %ptr, i32 %a) {
; CHECK-LABEL: @gep16(
; CHECK-NEXT:    ret i1 false
;
; We can prove this GEP is non-null because it is inbounds and because we know
; %b is non-zero even though we don't know its value.
  %b = or i32 %a, 1
  %x = getelementptr inbounds i8, i8* %ptr, i32 %b
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @gep16_no_null_opt(i8* %ptr, i32 %a) #0 {
; We can't prove this GEP is non-null.
; CHECK-LABEL: @gep16_no_null_opt(
; CHECK-NEXT:    [[B:%.*]] = or i32 [[A:%.*]], 1
; CHECK-NEXT:    [[X:%.*]] = getelementptr inbounds i8, i8* [[PTR:%.*]], i32 [[B]]
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8* [[X]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %b = or i32 %a, 1
  %x = getelementptr inbounds i8, i8* %ptr, i32 %b
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @gep17() {
; CHECK-LABEL: @gep17(
; CHECK-NEXT:    ret i1 true
;
  %alloca = alloca i32, align 4
  %bc = bitcast i32* %alloca to [4 x i8]*
  %gep1 = getelementptr inbounds i32, i32* %alloca, i32 1
  %pti1 = ptrtoint i32* %gep1 to i32
  %gep2 = getelementptr inbounds [4 x i8], [4 x i8]* %bc, i32 0, i32 1
  %pti2 = ptrtoint i8* %gep2 to i32
  %cmp = icmp ugt i32 %pti1, %pti2
  ret i1 %cmp
}

; Negative test: GEP inbounds may cross sign boundary.
define i1 @gep_same_base_constant_indices(i8* %a) {
; CHECK-LABEL: @gep_same_base_constant_indices(
; CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds i8, i8* [[A:%.*]], i64 1
; CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds i8, i8* [[A]], i64 10
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8* [[ARRAYIDX1]], [[ARRAYIDX2]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %arrayidx1 = getelementptr inbounds i8, i8* %a, i64 1
  %arrayidx2 = getelementptr inbounds i8, i8* %a, i64 10
  %cmp = icmp slt i8* %arrayidx1, %arrayidx2
  ret i1 %cmp
}

define i1 @zext(i32 %x) {
; CHECK-LABEL: @zext(
; CHECK-NEXT:    ret i1 true
;
  %e1 = zext i32 %x to i64
  %e2 = zext i32 %x to i64
  %r = icmp eq i64 %e1, %e2
  ret i1 %r
}

define i1 @zext2(i1 %x) {
; CHECK-LABEL: @zext2(
; CHECK-NEXT:    ret i1 [[X:%.*]]
;
  %e = zext i1 %x to i32
  %c = icmp ne i32 %e, 0
  ret i1 %c
}

define i1 @zext3() {
; CHECK-LABEL: @zext3(
; CHECK-NEXT:    ret i1 true
;
  %e = zext i1 1 to i32
  %c = icmp ne i32 %e, 0
  ret i1 %c
}

define i1 @sext(i32 %x) {
; CHECK-LABEL: @sext(
; CHECK-NEXT:    ret i1 true
;
  %e1 = sext i32 %x to i64
  %e2 = sext i32 %x to i64
  %r = icmp eq i64 %e1, %e2
  ret i1 %r
}

define i1 @sext2(i1 %x) {
; CHECK-LABEL: @sext2(
; CHECK-NEXT:    ret i1 [[X:%.*]]
;
  %e = sext i1 %x to i32
  %c = icmp ne i32 %e, 0
  ret i1 %c
}

define i1 @sext3() {
; CHECK-LABEL: @sext3(
; CHECK-NEXT:    ret i1 true
;
  %e = sext i1 1 to i32
  %c = icmp ne i32 %e, 0
  ret i1 %c
}

define i1 @add(i32 %x, i32 %y) {
; CHECK-LABEL: @add(
; CHECK-NEXT:    ret i1 false
;
  %l = lshr i32 %x, 1
  %q = lshr i32 %y, 1
  %r = or i32 %q, 1
  %s = add i32 %l, %r
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define i1 @addv(<2 x i32> %x, <2 x i32> %y) {
; CHECK-LABEL: @addv(
; CHECK-NEXT:    ret i1 false
;
  %l = lshr <2 x i32> %x, <i32 1, i32 0>
  %q = lshr <2 x i32> %y, <i32 1, i32 0>
  %r = or <2 x i32> %q, <i32 1, i32 0>
  %s = add <2 x i32> %l, %r
  %e = extractelement <2 x i32> %s, i32 0
  %c = icmp eq i32 %e, 0
  ret i1 %c
}

define i1 @add2(i8 %x, i8 %y) {
; CHECK-LABEL: @add2(
; CHECK-NEXT:    ret i1 false
;
  %l = or i8 %x, 128
  %r = or i8 %y, 129
  %s = add i8 %l, %r
  %c = icmp eq i8 %s, 0
  ret i1 %c
}

define i1 @add2v(<2 x i8> %x, <2 x i8> %y) {
; CHECK-LABEL: @add2v(
; CHECK-NEXT:    ret i1 false
;
  %l = or <2 x i8> %x, <i8 0, i8 128>
  %r = or <2 x i8> %y, <i8 0, i8 129>
  %s = add <2 x i8> %l, %r
  %e = extractelement <2 x i8> %s, i32 1
  %c = icmp eq i8 %e, 0
  ret i1 %c
}

define i1 @add3(i8 %x, i8 %y) {
; CHECK-LABEL: @add3(
; CHECK-NEXT:    [[L:%.*]] = zext i8 [[X:%.*]] to i32
; CHECK-NEXT:    [[R:%.*]] = zext i8 [[Y:%.*]] to i32
; CHECK-NEXT:    [[S:%.*]] = add i32 [[L]], [[R]]
; CHECK-NEXT:    [[C:%.*]] = icmp eq i32 [[S]], 0
; CHECK-NEXT:    ret i1 [[C]]
;
  %l = zext i8 %x to i32
  %r = zext i8 %y to i32
  %s = add i32 %l, %r
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define i1 @add4(i32 %x, i32 %y) {
; CHECK-LABEL: @add4(
; CHECK-NEXT:    ret i1 true
;
  %z = add nsw i32 %y, 1
  %s1 = add nsw i32 %x, %y
  %s2 = add nsw i32 %x, %z
  %c = icmp slt i32 %s1, %s2
  ret i1 %c
}

define i1 @add5(i32 %x, i32 %y) {
; CHECK-LABEL: @add5(
; CHECK-NEXT:    ret i1 true
;
  %z = add nuw i32 %y, 1
  %s1 = add nuw i32 %x, %z
  %s2 = add nuw i32 %x, %y
  %c = icmp ugt i32 %s1, %s2
  ret i1 %c
}

define i1 @add6(i64 %A, i64 %B) {
; CHECK-LABEL: @add6(
; CHECK-NEXT:    ret i1 true
;
  %s1 = add i64 %A, %B
  %s2 = add i64 %B, %A
  %cmp = icmp eq i64 %s1, %s2
  ret i1 %cmp
}

define i1 @addpowtwo(i32 %x, i32 %y) {
; CHECK-LABEL: @addpowtwo(
; CHECK-NEXT:    ret i1 false
;
  %l = lshr i32 %x, 1
  %r = shl i32 1, %y
  %s = add i32 %l, %r
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define i1 @addpowtwov(<2 x i32> %x, <2 x i32> %y) {
; CHECK-LABEL: @addpowtwov(
; CHECK-NEXT:    [[L:%.*]] = lshr <2 x i32> [[X:%.*]], <i32 1, i32 0>
; CHECK-NEXT:    [[R:%.*]] = shl <2 x i32> <i32 1, i32 0>, [[Y:%.*]]
; CHECK-NEXT:    [[S:%.*]] = add <2 x i32> [[L]], [[R]]
; CHECK-NEXT:    [[E:%.*]] = extractelement <2 x i32> [[S]], i32 0
; CHECK-NEXT:    [[C:%.*]] = icmp eq i32 [[E]], 0
; CHECK-NEXT:    ret i1 [[C]]
;
  %l = lshr <2 x i32> %x, <i32 1, i32 0>
  %r = shl <2 x i32> <i32 1, i32 0>, %y
  %s = add <2 x i32> %l, %r
  %e = extractelement <2 x i32> %s, i32 0
  %c = icmp eq i32 %e, 0
  ret i1 %c
}

define i1 @or(i32 %x) {
; CHECK-LABEL: @or(
; CHECK-NEXT:    ret i1 false
;
  %o = or i32 %x, 1
  %c = icmp eq i32 %o, 0
  ret i1 %c
}

; Do not simplify if we cannot guarantee that the ConstantExpr is a non-zero
; constant.
@GV = common global i32* null
define i1 @or_constexp(i32 %x) {
; CHECK-LABEL: @or_constexp(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[O:%.*]] = or i32 [[X:%.*]], and (i32 ptrtoint (i32** @GV to i32), i32 32)
; CHECK-NEXT:    [[C:%.*]] = icmp eq i32 [[O]], 0
; CHECK-NEXT:    ret i1 [[C]]
;
entry:
  %0 = and i32 ptrtoint (i32** @GV to i32), 32
  %o = or i32 %x, %0
  %c = icmp eq i32 %o, 0
  ret i1 %c
}

define i1 @shl1(i32 %x) {
; CHECK-LABEL: @shl1(
; CHECK-NEXT:    ret i1 false
;
  %s = shl i32 1, %x
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define i1 @lshr1(i32 %x) {
; CHECK-LABEL: @lshr1(
; CHECK-NEXT:    ret i1 false
;
  %s = lshr i32 -1, %x
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define i1 @lshr3(i32 %x) {
; CHECK-LABEL: @lshr3(
; CHECK-NEXT:    ret i1 true
;
  %s = lshr i32 %x, %x
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define i1 @lshr4(i32 %X, i32 %Y) {
; CHECK-LABEL: @lshr4(
; CHECK-NEXT:    ret i1 true
;
  %A = lshr i32 %X, %Y
  %C = icmp ule i32 %A, %X
  ret i1 %C
}

define i1 @lshr5(i32 %X, i32 %Y) {
; CHECK-LABEL: @lshr5(
; CHECK-NEXT:    ret i1 false
;
  %A = lshr i32 %X, %Y
  %C = icmp ugt i32 %A, %X
  ret i1 %C
}

define i1 @lshr6(i32 %X, i32 %Y) {
; CHECK-LABEL: @lshr6(
; CHECK-NEXT:    ret i1 false
;
  %A = lshr i32 %X, %Y
  %C = icmp ult i32 %X, %A
  ret i1 %C
}

define i1 @lshr7(i32 %X, i32 %Y) {
; CHECK-LABEL: @lshr7(
; CHECK-NEXT:    ret i1 true
;
  %A = lshr i32 %X, %Y
  %C = icmp uge i32 %X, %A
  ret i1 %C
}

define i1 @lshr_nonzero_eq(i32 %x) {
; CHECK-LABEL: @lshr_nonzero_eq(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    ret i1 false
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = lshr i32 %x, 1
  %cmp = icmp eq i32 %lhs, %x
  ret i1 %cmp
}

define i1 @lshr_nonzero_uge(i32 %x) {
; CHECK-LABEL: @lshr_nonzero_uge(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    ret i1 false
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = lshr i32 %x, 1
  %cmp = icmp uge i32 %lhs, %x
  ret i1 %cmp
}

define i1 @lshr_nonzero_ne(i32 %x) {
; CHECK-LABEL: @lshr_nonzero_ne(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    ret i1 true
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = lshr i32 %x, 1
  %cmp = icmp ne i32 %lhs, %x
  ret i1 %cmp
}

define i1 @lshr_nonzero_ult(i32 %x) {
; CHECK-LABEL: @lshr_nonzero_ult(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    ret i1 true
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = lshr i32 %x, 1
  %cmp = icmp ult i32 %lhs, %x
  ret i1 %cmp
}

; Negative test - unknown shift amount
define i1 @lshr_nonzero_neg_unknown(i32 %x, i32 %c) {
; CHECK-LABEL: @lshr_nonzero_neg_unknown(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    [[LHS:%.*]] = lshr i32 [[X]], [[C:%.*]]
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[LHS]], [[X]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = lshr i32 %x, %c
  %cmp = icmp ult i32 %lhs, %x
  ret i1 %cmp
}

; Negative test - x may be zero
define i1 @lshr_nonzero_neg_maybe_zero(i32 %x) {
; CHECK-LABEL: @lshr_nonzero_neg_maybe_zero(
; CHECK-NEXT:    [[LHS:%.*]] = lshr i32 [[X:%.*]], 1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[LHS]], [[X]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %lhs = lshr i32 %x, 1
  %cmp = icmp ult i32 %lhs, %x
  ret i1 %cmp
}

; Negative test - signed pred
define i1 @lshr_nonzero_neg_signed(i32 %x, i32 %c) {
; CHECK-LABEL: @lshr_nonzero_neg_signed(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    [[LHS:%.*]] = lshr i32 [[X]], 1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[LHS]], [[X]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = lshr i32 %x, 1
  %cmp = icmp slt i32 %lhs, %x
  ret i1 %cmp
}

define i1 @ashr1(i32 %x) {
; CHECK-LABEL: @ashr1(
; CHECK-NEXT:    ret i1 false
;
  %s = ashr i32 -1, %x
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define i1 @ashr3(i32 %x) {
; CHECK-LABEL: @ashr3(
; CHECK-NEXT:    ret i1 true
;
  %s = ashr i32 %x, %x
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define i1 @select1(i1 %cond) {
; CHECK-LABEL: @select1(
; CHECK-NEXT:    ret i1 [[COND:%.*]]
;
  %s = select i1 %cond, i32 1, i32 0
  %c = icmp eq i32 %s, 1
  ret i1 %c
}

define i1 @select2(i1 %cond) {
; CHECK-LABEL: @select2(
; CHECK-NEXT:    ret i1 [[COND:%.*]]
;
  %x = zext i1 %cond to i32
  %s = select i1 %cond, i32 %x, i32 0
  %c = icmp ne i32 %s, 0
  ret i1 %c
}

define i1 @select3(i1 %cond) {
; CHECK-LABEL: @select3(
; CHECK-NEXT:    ret i1 [[COND:%.*]]
;
  %x = zext i1 %cond to i32
  %s = select i1 %cond, i32 1, i32 %x
  %c = icmp ne i32 %s, 0
  ret i1 %c
}

define i1 @select4(i1 %cond) {
; CHECK-LABEL: @select4(
; CHECK-NEXT:    ret i1 [[COND:%.*]]
;
  %invert = xor i1 %cond, 1
  %s = select i1 %invert, i32 0, i32 1
  %c = icmp ne i32 %s, 0
  ret i1 %c
}

define i1 @select5(i32 %x) {
; CHECK-LABEL: @select5(
; CHECK-NEXT:    ret i1 false
;
  %c = icmp eq i32 %x, 0
  %s = select i1 %c, i32 1, i32 %x
  %c2 = icmp eq i32 %s, 0
  ret i1 %c2
}

define i1 @select6(i32 %x) {
; CHECK-LABEL: @select6(
; CHECK-NEXT:    [[C:%.*]] = icmp sgt i32 [[X:%.*]], 0
; CHECK-NEXT:    [[S:%.*]] = select i1 [[C]], i32 [[X]], i32 4
; CHECK-NEXT:    [[C2:%.*]] = icmp eq i32 [[S]], 0
; CHECK-NEXT:    ret i1 [[C2]]
;
  %c = icmp sgt i32 %x, 0
  %s = select i1 %c, i32 %x, i32 4
  %c2 = icmp eq i32 %s, 0
  ret i1 %c2
}

define i1 @urem1(i32 %X, i32 %Y) {
; CHECK-LABEL: @urem1(
; CHECK-NEXT:    ret i1 true
;
  %A = urem i32 %X, %Y
  %B = icmp ult i32 %A, %Y
  ret i1 %B
}

define i1 @urem2(i32 %X, i32 %Y) {
; CHECK-LABEL: @urem2(
; CHECK-NEXT:    ret i1 false
;
  %A = urem i32 %X, %Y
  %B = icmp eq i32 %A, %Y
  ret i1 %B
}

define i1 @urem4(i32 %X) {
; CHECK-LABEL: @urem4(
; CHECK-NEXT:    [[A:%.*]] = urem i32 [[X:%.*]], 15
; CHECK-NEXT:    [[B:%.*]] = icmp ult i32 [[A]], 10
; CHECK-NEXT:    ret i1 [[B]]
;
  %A = urem i32 %X, 15
  %B = icmp ult i32 %A, 10
  ret i1 %B
}

define i1 @urem5(i16 %X, i32 %Y) {
; CHECK-LABEL: @urem5(
; CHECK-NEXT:    [[A:%.*]] = zext i16 [[X:%.*]] to i32
; CHECK-NEXT:    [[B:%.*]] = urem i32 [[A]], [[Y:%.*]]
; CHECK-NEXT:    [[C:%.*]] = icmp slt i32 [[B]], [[Y]]
; CHECK-NEXT:    ret i1 [[C]]
;
  %A = zext i16 %X to i32
  %B = urem i32 %A, %Y
  %C = icmp slt i32 %B, %Y
  ret i1 %C
}

define i1 @urem6(i32 %X, i32 %Y) {
; CHECK-LABEL: @urem6(
; CHECK-NEXT:    ret i1 true
;
  %A = urem i32 %X, %Y
  %B = icmp ugt i32 %Y, %A
  ret i1 %B
}

define i1 @urem7(i32 %X) {
; CHECK-LABEL: @urem7(
; CHECK-NEXT:    [[A:%.*]] = urem i32 1, [[X:%.*]]
; CHECK-NEXT:    [[B:%.*]] = icmp sgt i32 [[A]], [[X]]
; CHECK-NEXT:    ret i1 [[B]]
;
  %A = urem i32 1, %X
  %B = icmp sgt i32 %A, %X
  ret i1 %B
}

define i1 @urem8(i8 %X, i8 %Y) {
; CHECK-LABEL: @urem8(
; CHECK-NEXT:    ret i1 true
;
  %A = urem i8 %X, %Y
  %B = icmp ule i8 %A, %X
  ret i1 %B
}

define i1 @urem9(i8 %X, i8 %Y) {
; CHECK-LABEL: @urem9(
; CHECK-NEXT:    ret i1 false
;
  %A = urem i8 %X, %Y
  %B = icmp ugt i8 %A, %X
  ret i1 %B
}

define i1 @urem10(i8 %X, i8 %Y) {
; CHECK-LABEL: @urem10(
; CHECK-NEXT:    ret i1 true
;
  %A = urem i8 %X, %Y
  %B = icmp uge i8 %X, %A
  ret i1 %B
}

define i1 @urem11(i8 %X, i8 %Y) {
; CHECK-LABEL: @urem11(
; CHECK-NEXT:    ret i1 false
;
  %A = urem i8 %X, %Y
  %B = icmp ult i8 %X, %A
  ret i1 %B
}

; PR9343 #15
define i1 @srem2(i16 %X, i32 %Y) {
; CHECK-LABEL: @srem2(
; CHECK-NEXT:    ret i1 false
;
  %A = zext i16 %X to i32
  %B = add nsw i32 %A, 1
  %C = srem i32 %B, %Y
  %D = icmp slt i32 %C, 0
  ret i1 %D
}

define i1 @srem2v(<2 x i16> %X, <2 x i32> %Y) {
; CHECK-LABEL: @srem2v(
; CHECK-NEXT:    ret i1 false
;
  %A = zext <2 x i16> %X to <2 x i32>
  %B = add nsw <2 x i32> %A, <i32 1, i32 0>
  %C = srem <2 x i32> %B, %Y
  %D = extractelement <2 x i32> %C, i32 0
  %E = icmp slt i32 %D, 0
  ret i1 %E
}

define i1 @srem3(i16 %X, i32 %Y) {
; CHECK-LABEL: @srem3(
; CHECK-NEXT:    ret i1 false
;
  %A = zext i16 %X to i32
  %B = or i32 2147483648, %A
  %C = sub nsw i32 1, %B
  %D = srem i32 %C, %Y
  %E = icmp slt i32 %D, 0
  ret i1 %E
}

define i1 @srem3v(<2 x i16> %X, <2 x i32> %Y) {
; CHECK-LABEL: @srem3v(
; CHECK-NEXT:    ret i1 false
;
  %A = zext <2 x i16> %X to <2 x i32>
  %B = or <2 x i32> <i32 1, i32 2147483648>, %A
  %C = sub nsw <2 x i32> <i32 0, i32 1>, %B
  %D = srem <2 x i32> %C, %Y
  %E = extractelement <2 x i32> %C, i32 1
  %F = icmp slt i32 %E, 0
  ret i1 %F
}

define i1 @udiv2(i32 %Z) {
; CHECK-LABEL: @udiv2(
; CHECK-NEXT:    ret i1 true
;
  %A = udiv exact i32 10, %Z
  %B = udiv exact i32 20, %Z
  %C = icmp ult i32 %A, %B
  ret i1 %C
}

; Exact sdiv and equality preds can simplify.

define i1 @sdiv_exact_equality(i32 %Z) {
; CHECK-LABEL: @sdiv_exact_equality(
; CHECK-NEXT:    ret i1 false
;
  %A = sdiv exact i32 10, %Z
  %B = sdiv exact i32 20, %Z
  %C = icmp eq i32 %A, %B
  ret i1 %C
}

; But not other preds: PR32949 - https://bugs.llvm.org/show_bug.cgi?id=32949

define i1 @sdiv_exact_not_equality(i32 %Z) {
; CHECK-LABEL: @sdiv_exact_not_equality(
; CHECK-NEXT:    [[A:%.*]] = sdiv exact i32 10, [[Z:%.*]]
; CHECK-NEXT:    [[B:%.*]] = sdiv exact i32 20, [[Z]]
; CHECK-NEXT:    [[C:%.*]] = icmp ult i32 [[A]], [[B]]
; CHECK-NEXT:    ret i1 [[C]]
;
  %A = sdiv exact i32 10, %Z
  %B = sdiv exact i32 20, %Z
  %C = icmp ult i32 %A, %B
  ret i1 %C
}

define i1 @udiv3(i32 %X, i32 %Y) {
; CHECK-LABEL: @udiv3(
; CHECK-NEXT:    ret i1 false
;
  %A = udiv i32 %X, %Y
  %C = icmp ugt i32 %A, %X
  ret i1 %C
}

define i1 @udiv4(i32 %X, i32 %Y) {
; CHECK-LABEL: @udiv4(
; CHECK-NEXT:    ret i1 true
;
  %A = udiv i32 %X, %Y
  %C = icmp ule i32 %A, %X
  ret i1 %C
}

; PR11340
define i1 @udiv6(i32 %X) nounwind {
; CHECK-LABEL: @udiv6(
; CHECK-NEXT:    [[A:%.*]] = udiv i32 1, [[X:%.*]]
; CHECK-NEXT:    [[C:%.*]] = icmp eq i32 [[A]], 0
; CHECK-NEXT:    ret i1 [[C]]
;
  %A = udiv i32 1, %X
  %C = icmp eq i32 %A, 0
  ret i1 %C
}

define i1 @udiv7(i32 %X, i32 %Y) {
; CHECK-LABEL: @udiv7(
; CHECK-NEXT:    ret i1 false
;
  %A = udiv i32 %X, %Y
  %C = icmp ult i32 %X, %A
  ret i1 %C
}

define i1 @udiv8(i32 %X, i32 %Y) {
; CHECK-LABEL: @udiv8(
; CHECK-NEXT:    ret i1 true
;
  %A = udiv i32 %X, %Y
  %C = icmp uge i32 %X, %A
  ret i1 %C
}

define i1 @udiv_nonzero_eq(i32 %x) {
; CHECK-LABEL: @udiv_nonzero_eq(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    ret i1 false
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = udiv i32 %x, 3
  %cmp = icmp eq i32 %lhs, %x
  ret i1 %cmp
}

define i1 @udiv_nonzero_uge(i32 %x) {
; CHECK-LABEL: @udiv_nonzero_uge(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    ret i1 false
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = udiv i32 %x, 3
  %cmp = icmp uge i32 %lhs, %x
  ret i1 %cmp
}

define i1 @udiv_nonzero_ne(i32 %x) {
; CHECK-LABEL: @udiv_nonzero_ne(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    ret i1 true
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = udiv i32 %x, 3
  %cmp = icmp ne i32 %lhs, %x
  ret i1 %cmp
}

define i1 @udiv_nonzero_ult(i32 %x) {
; CHECK-LABEL: @udiv_nonzero_ult(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    ret i1 true
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = udiv i32 %x, 3
  %cmp = icmp ult i32 %lhs, %x
  ret i1 %cmp
}

; Negative test - unknown divisor
define i1 @udiv_nonzero_neg_unknown(i32 %x, i32 %c) {
; CHECK-LABEL: @udiv_nonzero_neg_unknown(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    [[LHS:%.*]] = udiv i32 [[X]], [[C:%.*]]
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[LHS]], [[X]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = udiv i32 %x, %c
  %cmp = icmp ult i32 %lhs, %x
  ret i1 %cmp
}

; Negative test - x may be zero
define i1 @udiv_nonzero_neg_maybe_zero(i32 %x) {
; CHECK-LABEL: @udiv_nonzero_neg_maybe_zero(
; CHECK-NEXT:    [[LHS:%.*]] = udiv i32 [[X:%.*]], 3
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[LHS]], [[X]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %lhs = udiv i32 %x, 3
  %cmp = icmp ult i32 %lhs, %x
  ret i1 %cmp
}

; Negative test - signed pred
define i1 @udiv_nonzero_neg_signed(i32 %x) {
; CHECK-LABEL: @udiv_nonzero_neg_signed(
; CHECK-NEXT:    [[X_NE_0:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    call void @llvm.assume(i1 [[X_NE_0]])
; CHECK-NEXT:    [[LHS:%.*]] = udiv i32 [[X]], 3
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[LHS]], [[X]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %x_ne_0 = icmp ne i32 %x, 0
  call void @llvm.assume(i1 %x_ne_0)
  %lhs = udiv i32 %x, 3
  %cmp = icmp slt i32 %lhs, %x
  ret i1 %cmp
}

; Square of a non-zero number is non-zero if there is no overflow.
define i1 @mul1(i32 %X) {
; CHECK-LABEL: @mul1(
; CHECK-NEXT:    ret i1 false
;
  %Y = or i32 %X, 1
  %M = mul nuw i32 %Y, %Y
  %C = icmp eq i32 %M, 0
  ret i1 %C
}

define i1 @mul1v(<2 x i32> %X) {
; CHECK-LABEL: @mul1v(
; CHECK-NEXT:    ret i1 false
;
  %Y = or <2 x i32> %X, <i32 1, i32 0>
  %M = mul nuw <2 x i32> %Y, %Y
  %E = extractelement <2 x i32> %M, i32 0
  %C = icmp eq i32 %E, 0
  ret i1 %C
}

; Square of a non-zero number is positive if there is no signed overflow.
define i1 @mul2(i32 %X) {
; CHECK-LABEL: @mul2(
; CHECK-NEXT:    ret i1 true
;
  %Y = or i32 %X, 1
  %M = mul nsw i32 %Y, %Y
  %C = icmp sgt i32 %M, 0
  ret i1 %C
}

define i1 @mul2v(<2 x i32> %X) {
; CHECK-LABEL: @mul2v(
; CHECK-NEXT:    ret i1 true
;
  %Y = or <2 x i32> %X, <i32 0, i32 1>
  %M = mul nsw <2 x i32> %Y, %Y
  %E = extractelement <2 x i32> %M, i32 1
  %C = icmp sgt i32 %E, 0
  ret i1 %C
}

; Product of non-negative numbers is non-negative if there is no signed overflow.
define i1 @mul3(i32 %X, i32 %Y) {
; CHECK-LABEL: @mul3(
; CHECK-NEXT:    ret i1 true
;
  %XX = mul nsw i32 %X, %X
  %YY = mul nsw i32 %Y, %Y
  %M = mul nsw i32 %XX, %YY
  %C = icmp sge i32 %M, 0
  ret i1 %C
}

define <2 x i1> @mul3v(<2 x i32> %X, <2 x i32> %Y) {
; CHECK-LABEL: @mul3v(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %XX = mul nsw <2 x i32> %X, %X
  %YY = mul nsw <2 x i32> %Y, %Y
  %M = mul nsw <2 x i32> %XX, %YY
  %C = icmp sge <2 x i32> %M, zeroinitializer
  ret <2 x i1> %C
}

define <2 x i1> @vectorselect1(<2 x i1> %cond) {
; CHECK-LABEL: @vectorselect1(
; CHECK-NEXT:    ret <2 x i1> [[COND:%.*]]
;
  %invert = xor <2 x i1> %cond, <i1 1, i1 1>
  %s = select <2 x i1> %invert, <2 x i32> <i32 0, i32 0>, <2 x i32> <i32 1, i32 1>
  %c = icmp ne <2 x i32> %s, <i32 0, i32 0>
  ret <2 x i1> %c
}

; PR11948
define <2 x i1> @vectorselectcrash(i32 %arg1) {
; CHECK-LABEL: @vectorselectcrash(
; CHECK-NEXT:    [[TOBOOL40:%.*]] = icmp ne i32 [[ARG1:%.*]], 0
; CHECK-NEXT:    [[COND43:%.*]] = select i1 [[TOBOOL40]], <2 x i16> <i16 -5, i16 66>, <2 x i16> <i16 46, i16 1>
; CHECK-NEXT:    [[CMP45:%.*]] = icmp ugt <2 x i16> [[COND43]], <i16 73, i16 21>
; CHECK-NEXT:    ret <2 x i1> [[CMP45]]
;
  %tobool40 = icmp ne i32 %arg1, 0
  %cond43 = select i1 %tobool40, <2 x i16> <i16 -5, i16 66>, <2 x i16> <i16 46, i16 1>
  %cmp45 = icmp ugt <2 x i16> %cond43, <i16 73, i16 21>
  ret <2 x i1> %cmp45
}

; PR12013
define i1 @alloca_compare(i64 %idx) {
; CHECK-LABEL: @alloca_compare(
; CHECK-NEXT:    ret i1 false
;
  %sv = alloca { i32, i32, [124 x i32] }
  %1 = getelementptr inbounds { i32, i32, [124 x i32] }, { i32, i32, [124 x i32] }* %sv, i32 0, i32 2, i64 %idx
  %2 = icmp eq i32* %1, null
  ret i1 %2
}

define i1 @alloca_compare_no_null_opt(i64 %idx) #0 {
; CHECK-LABEL: @alloca_compare_no_null_opt(
; CHECK-NEXT:    [[SV:%.*]] = alloca { i32, i32, [124 x i32] }, align 8
; CHECK-NEXT:    [[CMP:%.*]] = getelementptr inbounds { i32, i32, [124 x i32] }, { i32, i32, [124 x i32] }* [[SV]], i32 0, i32 2, i64 [[IDX:%.*]]
; CHECK-NEXT:    [[X:%.*]] = icmp eq i32* [[CMP]], null
; CHECK-NEXT:    ret i1 [[X]]
;
  %sv = alloca { i32, i32, [124 x i32] }
  %cmp = getelementptr inbounds { i32, i32, [124 x i32] }, { i32, i32, [124 x i32] }* %sv, i32 0, i32 2, i64 %idx
  %X = icmp eq i32* %cmp, null
  ret i1 %X
}
; PR12075
define i1 @infinite_gep() {
; CHECK-LABEL: @infinite_gep(
; CHECK-NEXT:    ret i1 true
; CHECK:       unreachableblock:
; CHECK-NEXT:    [[X:%.*]] = getelementptr i32, i32* [[X]], i32 1
; CHECK-NEXT:    [[Y:%.*]] = icmp eq i32* [[X]], null
; CHECK-NEXT:    ret i1 [[Y]]
;
  ret i1 1

unreachableblock:
  %X = getelementptr i32, i32 *%X, i32 1
  %Y = icmp eq i32* %X, null
  ret i1 %Y
}

; It's not valid to fold a comparison of an argument with an alloca, even though
; that's tempting. An argument can't *alias* an alloca, however the aliasing rule
; relies on restrictions against guessing an object's address and dereferencing.
; There are no restrictions against guessing an object's address and comparing.

define i1 @alloca_argument_compare(i64* %arg) {
; CHECK-LABEL: @alloca_argument_compare(
; CHECK-NEXT:    [[ALLOC:%.*]] = alloca i64, align 8
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i64* [[ARG:%.*]], [[ALLOC]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %alloc = alloca i64
  %cmp = icmp eq i64* %arg, %alloc
  ret i1 %cmp
}

; As above, but with the operands reversed.

define i1 @alloca_argument_compare_swapped(i64* %arg) {
; CHECK-LABEL: @alloca_argument_compare_swapped(
; CHECK-NEXT:    [[ALLOC:%.*]] = alloca i64, align 8
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i64* [[ALLOC]], [[ARG:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %alloc = alloca i64
  %cmp = icmp eq i64* %alloc, %arg
  ret i1 %cmp
}

; Don't assume that a noalias argument isn't equal to a global variable's
; address. This is an example where AliasAnalysis' NoAlias concept is
; different from actual pointer inequality.

@y = external global i32
define zeroext i1 @external_compare(i32* noalias %x) {
; CHECK-LABEL: @external_compare(
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32* [[X:%.*]], @y
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp eq i32* %x, @y
  ret i1 %cmp
}

define i1 @alloca_gep(i64 %a, i64 %b) {
; CHECK-LABEL: @alloca_gep(
; CHECK-NEXT:    ret i1 false
;
; We can prove this GEP is non-null because it is inbounds and the pointer
; is non-null.
  %strs = alloca [1000 x [1001 x i8]], align 16
  %x = getelementptr inbounds [1000 x [1001 x i8]], [1000 x [1001 x i8]]* %strs, i64 0, i64 %a, i64 %b
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @alloca_gep_no_null_opt(i64 %a, i64 %b) #0 {
; CHECK-LABEL: @alloca_gep_no_null_opt(
; CHECK-NEXT:    [[STRS:%.*]] = alloca [1000 x [1001 x i8]], align 16
; CHECK-NEXT:    [[X:%.*]] = getelementptr inbounds [1000 x [1001 x i8]], [1000 x [1001 x i8]]* [[STRS]], i64 0, i64 [[A:%.*]], i64 [[B:%.*]]
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8* [[X]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
; We can't prove this GEP is non-null.
  %strs = alloca [1000 x [1001 x i8]], align 16
  %x = getelementptr inbounds [1000 x [1001 x i8]], [1000 x [1001 x i8]]* %strs, i64 0, i64 %a, i64 %b
  %cmp = icmp eq i8* %x, null
  ret i1 %cmp
}

define i1 @non_inbounds_gep_compare(i64* %a) {
; CHECK-LABEL: @non_inbounds_gep_compare(
; CHECK-NEXT:    ret i1 true
;
; Equality compares with non-inbounds GEPs can be folded.
  %x = getelementptr i64, i64* %a, i64 42
  %y = getelementptr inbounds i64, i64* %x, i64 -42
  %z = getelementptr i64, i64* %a, i64 -42
  %w = getelementptr inbounds i64, i64* %z, i64 42
  %cmp = icmp eq i64* %y, %w
  ret i1 %cmp
}

define i1 @non_inbounds_gep_compare2(i64* %a) {
; CHECK-LABEL: @non_inbounds_gep_compare2(
; CHECK-NEXT:    ret i1 true
;
; Equality compares with non-inbounds GEPs can be folded.
  %x = getelementptr i64, i64* %a, i64 4294967297
  %y = getelementptr i64, i64* %a, i64 1
  %cmp = icmp eq i64* %y, %y
  ret i1 %cmp
}

define i1 @compare_always_true_slt(i16 %a) {
; CHECK-LABEL: @compare_always_true_slt(
; CHECK-NEXT:    ret i1 true
;
  %t1 = zext i16 %a to i32
  %t2 = sub i32 0, %t1
  %t3 = icmp slt i32 %t2, 1
  ret i1 %t3
}

define <2 x i1> @compare_always_true_slt_splat(<2 x i16> %a) {
; CHECK-LABEL: @compare_always_true_slt_splat(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %t1 = zext <2 x i16> %a to <2 x i32>
  %t2 = sub <2 x i32> zeroinitializer, %t1
  %t3 = icmp slt <2 x i32> %t2, <i32 1, i32 1>
  ret <2 x i1> %t3
}

define i1 @compare_always_true_sle(i16 %a) {
; CHECK-LABEL: @compare_always_true_sle(
; CHECK-NEXT:    ret i1 true
;
  %t1 = zext i16 %a to i32
  %t2 = sub i32 0, %t1
  %t3 = icmp sle i32 %t2, 0
  ret i1 %t3
}

define <2 x i1> @compare_always_true_sle_splat(<2 x i16> %a) {
; CHECK-LABEL: @compare_always_true_sle_splat(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %t1 = zext <2 x i16> %a to <2 x i32>
  %t2 = sub <2 x i32> zeroinitializer, %t1
  %t3 = icmp sle <2 x i32> %t2, zeroinitializer
  ret <2 x i1> %t3
}

define i1 @compare_always_false_sgt(i16 %a) {
; CHECK-LABEL: @compare_always_false_sgt(
; CHECK-NEXT:    ret i1 false
;
  %t1 = zext i16 %a to i32
  %t2 = sub i32 0, %t1
  %t3 = icmp sgt i32 %t2, 0
  ret i1 %t3
}

define <2 x i1> @compare_always_false_sgt_splat(<2 x i16> %a) {
; CHECK-LABEL: @compare_always_false_sgt_splat(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %t1 = zext <2 x i16> %a to <2 x i32>
  %t2 = sub <2 x i32> zeroinitializer, %t1
  %t3 = icmp sgt <2 x i32> %t2, zeroinitializer
  ret <2 x i1> %t3
}

define i1 @compare_always_false_sge(i16 %a) {
; CHECK-LABEL: @compare_always_false_sge(
; CHECK-NEXT:    ret i1 false
;
  %t1 = zext i16 %a to i32
  %t2 = sub i32 0, %t1
  %t3 = icmp sge i32 %t2, 1
  ret i1 %t3
}

define <2 x i1> @compare_always_false_sge_splat(<2 x i16> %a) {
; CHECK-LABEL: @compare_always_false_sge_splat(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %t1 = zext <2 x i16> %a to <2 x i32>
  %t2 = sub <2 x i32> zeroinitializer, %t1
  %t3 = icmp sge <2 x i32> %t2, <i32 1, i32 1>
  ret <2 x i1> %t3
}

define i1 @compare_always_false_eq(i16 %a) {
; CHECK-LABEL: @compare_always_false_eq(
; CHECK-NEXT:    ret i1 false
;
  %t1 = zext i16 %a to i32
  %t2 = sub i32 0, %t1
  %t3 = icmp eq i32 %t2, 1
  ret i1 %t3
}

define <2 x i1> @compare_always_false_eq_splat(<2 x i16> %a) {
; CHECK-LABEL: @compare_always_false_eq_splat(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %t1 = zext <2 x i16> %a to <2 x i32>
  %t2 = sub <2 x i32> zeroinitializer, %t1
  %t3 = icmp eq <2 x i32> %t2, <i32 1, i32 1>
  ret <2 x i1> %t3
}

define i1 @compare_always_true_ne(i16 %a) {
; CHECK-LABEL: @compare_always_true_ne(
; CHECK-NEXT:    ret i1 true
;
  %t1 = zext i16 %a to i32
  %t2 = sub i32 0, %t1
  %t3 = icmp ne i32 %t2, 1
  ret i1 %t3
}

define <2 x i1> @compare_always_true_ne_splat(<2 x i16> %a) {
; CHECK-LABEL: @compare_always_true_ne_splat(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %t1 = zext <2 x i16> %a to <2 x i32>
  %t2 = sub <2 x i32> zeroinitializer, %t1
  %t3 = icmp ne <2 x i32> %t2, <i32 1, i32 1>
  ret <2 x i1> %t3
}

define i1 @lshr_ugt_false(i32 %a) {
; CHECK-LABEL: @lshr_ugt_false(
; CHECK-NEXT:    ret i1 false
;
  %shr = lshr i32 1, %a
  %cmp = icmp ugt i32 %shr, 1
  ret i1 %cmp
}

define i1 @nonnull_arg(i32* nonnull %i) {
; CHECK-LABEL: @nonnull_arg(
; CHECK-NEXT:    ret i1 false
;
  %cmp = icmp eq i32* %i, null
  ret i1 %cmp
}

define i1 @nonnull_arg_no_null_opt(i32* nonnull %i) #0 {
; CHECK-LABEL: @nonnull_arg_no_null_opt(
; CHECK-NEXT:    ret i1 false
;
  %cmp = icmp eq i32* %i, null
  ret i1 %cmp
}

define i1 @nonnull_deref_arg(i32* dereferenceable(4) %i) {
; CHECK-LABEL: @nonnull_deref_arg(
; CHECK-NEXT:    ret i1 false
;
  %cmp = icmp eq i32* %i, null
  ret i1 %cmp
}

define i1 @nonnull_deref_arg_no_null_opt(i32* dereferenceable(4) %i) #0 {
; CHECK-LABEL: @nonnull_deref_arg_no_null_opt(
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32* [[I:%.*]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp eq i32* %i, null
  ret i1 %cmp
}
define i1 @nonnull_deref_as_arg(i32 addrspace(1)* dereferenceable(4) %i) {
; CHECK-LABEL: @nonnull_deref_as_arg(
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 addrspace(1)* [[I:%.*]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp eq i32 addrspace(1)* %i, null
  ret i1 %cmp
}

declare nonnull i32* @returns_nonnull_helper()
define i1 @returns_nonnull() {
; CHECK-LABEL: @returns_nonnull(
; CHECK-NEXT:    [[CALL:%.*]] = call nonnull i32* @returns_nonnull_helper()
; CHECK-NEXT:    ret i1 false
;
  %call = call nonnull i32* @returns_nonnull_helper()
  %cmp = icmp eq i32* %call, null
  ret i1 %cmp
}

declare dereferenceable(4) i32* @returns_nonnull_deref_helper()
define i1 @returns_nonnull_deref() {
; CHECK-LABEL: @returns_nonnull_deref(
; CHECK-NEXT:    [[CALL:%.*]] = call dereferenceable(4) i32* @returns_nonnull_deref_helper()
; CHECK-NEXT:    ret i1 false
;
  %call = call dereferenceable(4) i32* @returns_nonnull_deref_helper()
  %cmp = icmp eq i32* %call, null
  ret i1 %cmp
}

define i1 @returns_nonnull_deref_no_null_opt () #0 {
; CHECK-LABEL: @returns_nonnull_deref_no_null_opt(
; CHECK-NEXT:    [[CALL:%.*]] = call dereferenceable(4) i32* @returns_nonnull_deref_helper()
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32* [[CALL]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %call = call dereferenceable(4) i32* @returns_nonnull_deref_helper()
  %cmp = icmp eq i32* %call, null
  ret i1 %cmp
}

declare dereferenceable(4) i32 addrspace(1)* @returns_nonnull_deref_as_helper()
define i1 @returns_nonnull_as_deref() {
; CHECK-LABEL: @returns_nonnull_as_deref(
; CHECK-NEXT:    [[CALL:%.*]] = call dereferenceable(4) i32 addrspace(1)* @returns_nonnull_deref_as_helper()
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 addrspace(1)* [[CALL]], null
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %call = call dereferenceable(4) i32 addrspace(1)* @returns_nonnull_deref_as_helper()
  %cmp = icmp eq i32 addrspace(1)* %call, null
  ret i1 %cmp
}

define i1 @nonnull_load(i32** %addr) {
; CHECK-LABEL: @nonnull_load(
; CHECK-NEXT:    ret i1 false
;
  %ptr = load i32*, i32** %addr, !nonnull !{}
  %cmp = icmp eq i32* %ptr, null
  ret i1 %cmp
}

define i1 @nonnull_load_as_outer(i32* addrspace(1)* %addr) {
; CHECK-LABEL: @nonnull_load_as_outer(
; CHECK-NEXT:    ret i1 false
;
  %ptr = load i32*, i32* addrspace(1)* %addr, !nonnull !{}
  %cmp = icmp eq i32* %ptr, null
  ret i1 %cmp
}
define i1 @nonnull_load_as_inner(i32 addrspace(1)** %addr) {
; CHECK-LABEL: @nonnull_load_as_inner(
; CHECK-NEXT:    ret i1 false
;
  %ptr = load i32 addrspace(1)*, i32 addrspace(1)** %addr, !nonnull !{}
  %cmp = icmp eq i32 addrspace(1)* %ptr, null
  ret i1 %cmp
}

; If a bit is known to be zero for A and known to be one for B,
; then A and B cannot be equal.
define i1 @icmp_eq_const(i32 %a) {
; CHECK-LABEL: @icmp_eq_const(
; CHECK-NEXT:    ret i1 false
;
  %b = mul nsw i32 %a, -2
  %c = icmp eq i32 %b, 1
  ret i1 %c
}

define <2 x i1> @icmp_eq_const_vec(<2 x i32> %a) {
; CHECK-LABEL: @icmp_eq_const_vec(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %b = mul nsw <2 x i32> %a, <i32 -2, i32 -2>
  %c = icmp eq <2 x i32> %b, <i32 1, i32 1>
  ret <2 x i1> %c
}

define i1 @icmp_ne_const(i32 %a) {
; CHECK-LABEL: @icmp_ne_const(
; CHECK-NEXT:    ret i1 true
;
  %b = mul nsw i32 %a, -2
  %c = icmp ne i32 %b, 1
  ret i1 %c
}

define <2 x i1> @icmp_ne_const_vec(<2 x i32> %a) {
; CHECK-LABEL: @icmp_ne_const_vec(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %b = mul nsw <2 x i32> %a, <i32 -2, i32 -2>
  %c = icmp ne <2 x i32> %b, <i32 1, i32 1>
  ret <2 x i1> %c
}

define i1 @icmp_sdiv_int_min(i32 %a) {
; CHECK-LABEL: @icmp_sdiv_int_min(
; CHECK-NEXT:    [[DIV:%.*]] = sdiv i32 -2147483648, [[A:%.*]]
; CHECK-NEXT:    [[CMP:%.*]] = icmp ne i32 [[DIV]], -1073741824
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %div = sdiv i32 -2147483648, %a
  %cmp = icmp ne i32 %div, -1073741824
  ret i1 %cmp

}

define i1 @icmp_sdiv_pr20288(i64 %a) {
; CHECK-LABEL: @icmp_sdiv_pr20288(
; CHECK-NEXT:    [[DIV:%.*]] = sdiv i64 [[A:%.*]], -8589934592
; CHECK-NEXT:    [[CMP:%.*]] = icmp ne i64 [[DIV]], 1073741824
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %div = sdiv i64 %a, -8589934592
  %cmp = icmp ne i64 %div, 1073741824
  ret i1 %cmp

}

define i1 @icmp_sdiv_neg1(i64 %a) {
; CHECK-LABEL: @icmp_sdiv_neg1(
; CHECK-NEXT:    [[DIV:%.*]] = sdiv i64 [[A:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ne i64 [[DIV]], 1073741824
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %div = sdiv i64 %a, -1
  %cmp = icmp ne i64 %div, 1073741824
  ret i1 %cmp

}

define i1 @icmp_known_bits(i4 %x, i4 %y) {
; CHECK-LABEL: @icmp_known_bits(
; CHECK-NEXT:    ret i1 false
;
  %and1 = and i4 %y, -7
  %and2 = and i4 %x, -7
  %or1 = or i4 %and1, 2
  %or2 = or i4 %and2, 2
  %add = add i4 %or1, %or2
  %cmp = icmp eq i4 %add, 0
  ret i1 %cmp
}

define i1 @icmp_known_bits_vec(<2 x i4> %x, <2 x i4> %y) {
; CHECK-LABEL: @icmp_known_bits_vec(
; CHECK-NEXT:    ret i1 false
;
  %and1 = and <2 x i4> %y, <i4 -7, i4 -1>
  %and2 = and <2 x i4> %x, <i4 -7, i4 -1>
  %or1 = or <2 x i4> %and1, <i4 2, i4 2>
  %or2 = or <2 x i4> %and2, <i4 2, i4 2>
  %add = add <2 x i4> %or1, %or2
  %ext = extractelement <2 x i4> %add,i32 0
  %cmp = icmp eq i4 %ext, 0
  ret i1 %cmp
}

define i1 @icmp_shl_nuw_1(i64 %a) {
; CHECK-LABEL: @icmp_shl_nuw_1(
; CHECK-NEXT:    ret i1 true
;
  %shl = shl nuw i64 1, %a
  %cmp = icmp ne i64 %shl, 0
  ret i1 %cmp
}

define i1 @icmp_shl_1_V_ugt_2147483648(i32 %V) {
; CHECK-LABEL: @icmp_shl_1_V_ugt_2147483648(
; CHECK-NEXT:    ret i1 false
;
  %shl = shl i32 1, %V
  %cmp = icmp ugt i32 %shl, 2147483648
  ret i1 %cmp
}

define <2 x i1> @icmp_shl_1_ugt_signmask(<2 x i8> %V) {
; CHECK-LABEL: @icmp_shl_1_ugt_signmask(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %shl = shl <2 x i8> <i8 1, i8 1>, %V
  %cmp = icmp ugt <2 x i8> %shl, <i8 128, i8 128>
  ret <2 x i1> %cmp
}

define <2 x i1> @icmp_shl_1_ugt_signmask_undef(<2 x i8> %V) {
; CHECK-LABEL: @icmp_shl_1_ugt_signmask_undef(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %shl = shl <2 x i8> <i8 1, i8 1>, %V
  %cmp = icmp ugt <2 x i8> %shl, <i8 128, i8 undef>
  ret <2 x i1> %cmp
}

define <2 x i1> @icmp_shl_1_ugt_signmask_undef2(<2 x i8> %V) {
; CHECK-LABEL: @icmp_shl_1_ugt_signmask_undef2(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %shl = shl <2 x i8> <i8 1, i8 undef>, %V
  %cmp = icmp ugt <2 x i8> %shl, <i8 undef, i8 128>
  ret <2 x i1> %cmp
}

define i1 @icmp_shl_1_V_ule_2147483648(i32 %V) {
; CHECK-LABEL: @icmp_shl_1_V_ule_2147483648(
; CHECK-NEXT:    ret i1 true
;
  %shl = shl i32 1, %V
  %cmp = icmp ule i32 %shl, 2147483648
  ret i1 %cmp
}

define <2 x i1> @icmp_shl_1_ule_signmask(<2 x i8> %V) {
; CHECK-LABEL: @icmp_shl_1_ule_signmask(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %shl = shl <2 x i8> <i8 1, i8 1>, %V
  %cmp = icmp ule <2 x i8> %shl, <i8 128, i8 128>
  ret <2 x i1> %cmp
}

define <2 x i1> @icmp_shl_1_ule_signmask_undef(<2 x i8> %V) {
; CHECK-LABEL: @icmp_shl_1_ule_signmask_undef(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %shl = shl <2 x i8> <i8 1, i8 1>, %V
  %cmp = icmp ule <2 x i8> %shl, <i8 128, i8 undef>
  ret <2 x i1> %cmp
}

define <2 x i1> @icmp_shl_1_ule_signmask_undef2(<2 x i8> %V) {
; CHECK-LABEL: @icmp_shl_1_ule_signmask_undef2(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %shl = shl <2 x i8> <i8 1, i8 undef>, %V
  %cmp = icmp ule <2 x i8> %shl, <i8 undef, i8 128>
  ret <2 x i1> %cmp
}

define i1 @shl_1_cmp_eq_nonpow2(i32 %x) {
; CHECK-LABEL: @shl_1_cmp_eq_nonpow2(
; CHECK-NEXT:    ret i1 false
;
  %s = shl i32 1, %x
  %c = icmp eq i32 %s, 31
  ret i1 %c
}

define <2 x i1> @shl_1_cmp_eq_nonpow2_splat(<2 x i32> %x) {
; CHECK-LABEL: @shl_1_cmp_eq_nonpow2_splat(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %s = shl <2 x i32> <i32 1, i32 1>, %x
  %c = icmp eq <2 x i32> %s, <i32 31, i32 31>
  ret <2 x i1> %c
}

define <2 x i1> @shl_1_cmp_eq_nonpow2_splat_undef(<2 x i32> %x) {
; CHECK-LABEL: @shl_1_cmp_eq_nonpow2_splat_undef(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %s = shl <2 x i32> <i32 1, i32 1>, %x
  %c = icmp eq <2 x i32> %s, <i32 31, i32 undef>
  ret <2 x i1> %c
}

define i1 @shl_1_cmp_ne_nonpow2(i32 %x) {
; CHECK-LABEL: @shl_1_cmp_ne_nonpow2(
; CHECK-NEXT:    ret i1 true
;
  %s = shl i32 1, %x
  %c = icmp ne i32 %s, 42
  ret i1 %c
}

define <2 x i1> @shl_1_cmp_ne_nonpow2_splat(<2 x i32> %x) {
; CHECK-LABEL: @shl_1_cmp_ne_nonpow2_splat(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %s = shl <2 x i32> <i32 1, i32 1>, %x
  %c = icmp ne <2 x i32> %s, <i32 42, i32 42>
  ret <2 x i1> %c
}

define <2 x i1> @shl_1_cmp_ne_nonpow2_splat_undef(<2 x i32> %x) {
; CHECK-LABEL: @shl_1_cmp_ne_nonpow2_splat_undef(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %s = shl <2 x i32> <i32 undef, i32 1>, %x
  %c = icmp ne <2 x i32> %s, <i32 42, i32 undef>
  ret <2 x i1> %c
}

define i1 @shl_pow2_cmp_eq_nonpow2(i32 %x) {
; CHECK-LABEL: @shl_pow2_cmp_eq_nonpow2(
; CHECK-NEXT:    ret i1 false
;
  %s = shl i32 4, %x
  %c = icmp eq i32 %s, 31
  ret i1 %c
}

define <2 x i1> @shl_pow21_cmp_ne_nonpow2_splat_undef(<2 x i32> %x) {
; CHECK-LABEL: @shl_pow21_cmp_ne_nonpow2_splat_undef(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %s = shl <2 x i32> <i32 undef, i32 4>, %x
  %c = icmp ne <2 x i32> %s, <i32 31, i32 undef>
  ret <2 x i1> %c
}

; Negative test - overflowing shift could be zero.

define i1 @shl_pow2_cmp_ne_zero(i32 %x) {
; CHECK-LABEL: @shl_pow2_cmp_ne_zero(
; CHECK-NEXT:    [[S:%.*]] = shl i32 16, [[X:%.*]]
; CHECK-NEXT:    [[C:%.*]] = icmp ne i32 [[S]], 0
; CHECK-NEXT:    ret i1 [[C]]
;
  %s = shl i32 16, %x
  %c = icmp ne i32 %s, 0
  ret i1 %c
}

; Negative test - overflowing shift could be zero.

define <2 x i1> @shl_pow2_cmp_ne_zero_splat(<2 x i32> %x) {
; CHECK-LABEL: @shl_pow2_cmp_ne_zero_splat(
; CHECK-NEXT:    [[S:%.*]] = shl <2 x i32> <i32 16, i32 16>, [[X:%.*]]
; CHECK-NEXT:    [[C:%.*]] = icmp ne <2 x i32> [[S]], zeroinitializer
; CHECK-NEXT:    ret <2 x i1> [[C]]
;
  %s = shl <2 x i32> <i32 16, i32 16>, %x
  %c = icmp ne <2 x i32> %s, zeroinitializer
  ret <2 x i1> %c
}

define i1 @shl_pow2_cmp_eq_zero_nuw(i32 %x) {
; CHECK-LABEL: @shl_pow2_cmp_eq_zero_nuw(
; CHECK-NEXT:    ret i1 false
;
  %s = shl nuw i32 16, %x
  %c = icmp eq i32 %s, 0
  ret i1 %c
}

define <2 x i1> @shl_pow2_cmp_ne_zero_nuw_splat_undef(<2 x i32> %x) {
; CHECK-LABEL: @shl_pow2_cmp_ne_zero_nuw_splat_undef(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %s = shl nuw <2 x i32> <i32 16, i32 undef>, %x
  %c = icmp ne <2 x i32> %s, <i32 undef, i32 0>
  ret <2 x i1> %c
}

define i1 @shl_pow2_cmp_ne_zero_nsw(i32 %x) {
; CHECK-LABEL: @shl_pow2_cmp_ne_zero_nsw(
; CHECK-NEXT:    ret i1 true
;
  %s = shl nsw i32 16, %x
  %c = icmp ne i32 %s, 0
  ret i1 %c
}

define <2 x i1> @shl_pow2_cmp_eq_zero_nsw_splat_undef(<2 x i32> %x) {
; CHECK-LABEL: @shl_pow2_cmp_eq_zero_nsw_splat_undef(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %s = shl nsw <2 x i32> <i32 undef, i32 16>, %x
  %c = icmp eq <2 x i32> %s, <i32 0, i32 undef>
  ret <2 x i1> %c
}

define i1 @tautological1(i32 %A, i32 %B) {
; CHECK-LABEL: @tautological1(
; CHECK-NEXT:    ret i1 false
;
  %C = and i32 %A, %B
  %D = icmp ugt i32 %C, %A
  ret i1 %D
}

define i1 @tautological2(i32 %A, i32 %B) {
; CHECK-LABEL: @tautological2(
; CHECK-NEXT:    ret i1 true
;
  %C = and i32 %A, %B
  %D = icmp ule i32 %C, %A
  ret i1 %D
}

define i1 @tautological3(i32 %A, i32 %B) {
; CHECK-LABEL: @tautological3(
; CHECK-NEXT:    ret i1 true
;
  %C = or i32 %A, %B
  %D = icmp ule i32 %A, %C
  ret i1 %D
}

define i1 @tautological4(i32 %A, i32 %B) {
; CHECK-LABEL: @tautological4(
; CHECK-NEXT:    ret i1 false
;
  %C = or i32 %A, %B
  %D = icmp ugt i32 %A, %C
  ret i1 %D
}

define i1 @tautological5(i32 %A, i32 %B) {
; CHECK-LABEL: @tautological5(
; CHECK-NEXT:    ret i1 false
;
  %C = or i32 %A, %B
  %D = icmp ult i32 %C, %A
  ret i1 %D
}

define i1 @tautological6(i32 %A, i32 %B) {
; CHECK-LABEL: @tautological6(
; CHECK-NEXT:    ret i1 true
;
  %C = or i32 %A, %B
  %D = icmp uge i32 %C, %A
  ret i1 %D
}

define i1 @tautological7(i32 %A, i32 %B) {
; CHECK-LABEL: @tautological7(
; CHECK-NEXT:    ret i1 true
;
  %C = and i32 %A, %B
  %D = icmp uge i32 %A, %C
  ret i1 %D
}

define i1 @tautological8(i32 %A, i32 %B) {
; CHECK-LABEL: @tautological8(
; CHECK-NEXT:    ret i1 false
;
  %C = and i32 %A, %B
  %D = icmp ult i32 %A, %C
  ret i1 %D
}

declare void @helper_i1(i1)
; Series of tests for icmp s[lt|ge] (or A, B), A and icmp s[gt|le] A, (or A, B)
define void @icmp_slt_sge_or(i32 %Ax, i32 %Bx) {
; 'p' for positive, 'n' for negative, 'x' for potentially either.
; %D is 'icmp slt (or A, B), A'
; %E is 'icmp sge (or A, B), A' making it the not of %D
; %F is 'icmp sgt A, (or A, B)' making it the same as %D
; %G is 'icmp sle A, (or A, B)' making it the not of %D
; CHECK-LABEL: @icmp_slt_sge_or(
; CHECK-NEXT:    [[APOS:%.*]] = and i32 [[AX:%.*]], 2147483647
; CHECK-NEXT:    [[BNEG:%.*]] = or i32 [[BX:%.*]], -2147483648
; CHECK-NEXT:    [[CPX:%.*]] = or i32 [[APOS]], [[BX]]
; CHECK-NEXT:    [[DPX:%.*]] = icmp slt i32 [[CPX]], [[APOS]]
; CHECK-NEXT:    [[EPX:%.*]] = icmp sge i32 [[CPX]], [[APOS]]
; CHECK-NEXT:    [[FPX:%.*]] = icmp sgt i32 [[APOS]], [[CPX]]
; CHECK-NEXT:    [[GPX:%.*]] = icmp sle i32 [[APOS]], [[CPX]]
; CHECK-NEXT:    [[CXX:%.*]] = or i32 [[AX]], [[BX]]
; CHECK-NEXT:    [[DXX:%.*]] = icmp slt i32 [[CXX]], [[AX]]
; CHECK-NEXT:    [[EXX:%.*]] = icmp sge i32 [[CXX]], [[AX]]
; CHECK-NEXT:    [[FXX:%.*]] = icmp sgt i32 [[AX]], [[CXX]]
; CHECK-NEXT:    [[GXX:%.*]] = icmp sle i32 [[AX]], [[CXX]]
; CHECK-NEXT:    [[CXN:%.*]] = or i32 [[AX]], [[BNEG]]
; CHECK-NEXT:    [[DXN:%.*]] = icmp slt i32 [[CXN]], [[AX]]
; CHECK-NEXT:    [[EXN:%.*]] = icmp sge i32 [[CXN]], [[AX]]
; CHECK-NEXT:    [[FXN:%.*]] = icmp sgt i32 [[AX]], [[CXN]]
; CHECK-NEXT:    [[GXN:%.*]] = icmp sle i32 [[AX]], [[CXN]]
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 [[DPX]])
; CHECK-NEXT:    call void @helper_i1(i1 [[EPX]])
; CHECK-NEXT:    call void @helper_i1(i1 [[FPX]])
; CHECK-NEXT:    call void @helper_i1(i1 [[GPX]])
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 [[DXX]])
; CHECK-NEXT:    call void @helper_i1(i1 [[EXX]])
; CHECK-NEXT:    call void @helper_i1(i1 [[FXX]])
; CHECK-NEXT:    call void @helper_i1(i1 [[GXX]])
; CHECK-NEXT:    call void @helper_i1(i1 [[DXN]])
; CHECK-NEXT:    call void @helper_i1(i1 [[EXN]])
; CHECK-NEXT:    call void @helper_i1(i1 [[FXN]])
; CHECK-NEXT:    call void @helper_i1(i1 [[GXN]])
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    call void @helper_i1(i1 false)
; CHECK-NEXT:    call void @helper_i1(i1 true)
; CHECK-NEXT:    ret void
;
  %Aneg = or i32 %Ax, 2147483648
  %Apos = and i32 %Ax, 2147483647
  %Bneg = or i32 %Bx, 2147483648
  %Bpos = and i32 %Bx, 2147483647

  %Cpp = or i32 %Apos, %Bpos
  %Dpp = icmp slt i32 %Cpp, %Apos
  %Epp = icmp sge i32 %Cpp, %Apos
  %Fpp = icmp sgt i32 %Apos, %Cpp
  %Gpp = icmp sle i32 %Apos, %Cpp
  %Cpx = or i32 %Apos, %Bx
  %Dpx = icmp slt i32 %Cpx, %Apos
  %Epx = icmp sge i32 %Cpx, %Apos
  %Fpx = icmp sgt i32 %Apos, %Cpx
  %Gpx = icmp sle i32 %Apos, %Cpx
  %Cpn = or i32 %Apos, %Bneg
  %Dpn = icmp slt i32 %Cpn, %Apos
  %Epn = icmp sge i32 %Cpn, %Apos
  %Fpn = icmp sgt i32 %Apos, %Cpn
  %Gpn = icmp sle i32 %Apos, %Cpn

  %Cxp = or i32 %Ax, %Bpos
  %Dxp = icmp slt i32 %Cxp, %Ax
  %Exp = icmp sge i32 %Cxp, %Ax
  %Fxp = icmp sgt i32 %Ax, %Cxp
  %Gxp = icmp sle i32 %Ax, %Cxp
  %Cxx = or i32 %Ax, %Bx
  %Dxx = icmp slt i32 %Cxx, %Ax
  %Exx = icmp sge i32 %Cxx, %Ax
  %Fxx = icmp sgt i32 %Ax, %Cxx
  %Gxx = icmp sle i32 %Ax, %Cxx
  %Cxn = or i32 %Ax, %Bneg
  %Dxn = icmp slt i32 %Cxn, %Ax
  %Exn = icmp sge i32 %Cxn, %Ax
  %Fxn = icmp sgt i32 %Ax, %Cxn
  %Gxn = icmp sle i32 %Ax, %Cxn

  %Cnp = or i32 %Aneg, %Bpos
  %Dnp = icmp slt i32 %Cnp, %Aneg
  %Enp = icmp sge i32 %Cnp, %Aneg
  %Fnp = icmp sgt i32 %Aneg, %Cnp
  %Gnp = icmp sle i32 %Aneg, %Cnp
  %Cnx = or i32 %Aneg, %Bx
  %Dnx = icmp slt i32 %Cnx, %Aneg
  %Enx = icmp sge i32 %Cnx, %Aneg
  %Fnx = icmp sgt i32 %Aneg, %Cnx
  %Gnx = icmp sle i32 %Aneg, %Cnx
  %Cnn = or i32 %Aneg, %Bneg
  %Dnn = icmp slt i32 %Cnn, %Aneg
  %Enn = icmp sge i32 %Cnn, %Aneg
  %Fnn = icmp sgt i32 %Aneg, %Cnn
  %Gnn = icmp sle i32 %Aneg, %Cnn

  call void @helper_i1(i1 %Dpp)
  call void @helper_i1(i1 %Epp)
  call void @helper_i1(i1 %Fpp)
  call void @helper_i1(i1 %Gpp)
  call void @helper_i1(i1 %Dpx)
  call void @helper_i1(i1 %Epx)
  call void @helper_i1(i1 %Fpx)
  call void @helper_i1(i1 %Gpx)
  call void @helper_i1(i1 %Dpn)
  call void @helper_i1(i1 %Epn)
  call void @helper_i1(i1 %Fpn)
  call void @helper_i1(i1 %Gpn)
  call void @helper_i1(i1 %Dxp)
  call void @helper_i1(i1 %Exp)
  call void @helper_i1(i1 %Fxp)
  call void @helper_i1(i1 %Gxp)
  call void @helper_i1(i1 %Dxx)
  call void @helper_i1(i1 %Exx)
  call void @helper_i1(i1 %Fxx)
  call void @helper_i1(i1 %Gxx)
  call void @helper_i1(i1 %Dxn)
  call void @helper_i1(i1 %Exn)
  call void @helper_i1(i1 %Fxn)
  call void @helper_i1(i1 %Gxn)
  call void @helper_i1(i1 %Dnp)
  call void @helper_i1(i1 %Enp)
  call void @helper_i1(i1 %Fnp)
  call void @helper_i1(i1 %Gnp)
  call void @helper_i1(i1 %Dnx)
  call void @helper_i1(i1 %Enx)
  call void @helper_i1(i1 %Fnx)
  call void @helper_i1(i1 %Gnx)
  call void @helper_i1(i1 %Dnn)
  call void @helper_i1(i1 %Enn)
  call void @helper_i1(i1 %Fnn)
  call void @helper_i1(i1 %Gnn)
  ret void
}

define i1 @constant_fold_inttoptr_null() {
; CHECK-LABEL: @constant_fold_inttoptr_null(
; CHECK-NEXT:    ret i1 false
;
  %x = icmp eq i32* inttoptr (i64 32 to i32*), null
  ret i1 %x
}

define i1 @constant_fold_null_inttoptr() {
; CHECK-LABEL: @constant_fold_null_inttoptr(
; CHECK-NEXT:    ret i1 false
;
  %x = icmp eq i32* null, inttoptr (i64 32 to i32*)
  ret i1 %x
}

define i1 @cmp_through_addrspacecast(i32 addrspace(1)* %p1) {
; CHECK-LABEL: @cmp_through_addrspacecast(
; CHECK-NEXT:    ret i1 true
;
  %p0 = addrspacecast i32 addrspace(1)* %p1 to i32*
  %p0.1 = getelementptr inbounds i32, i32* %p0, i64 1
  %cmp = icmp ne i32* %p0, %p0.1
  ret i1 %cmp
}

; Test simplifications for: icmp (X+Y), (X+Z) -> icmp Y,Z
; Test the overflow check when the RHS has NSW set and constant Z is greater
; than Y, then we know X+Y also can't overflow.

define i1 @icmp_nsw_1(i32 %V) {
; CHECK-LABEL: @icmp_nsw_1(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add i32 %V, 5
  %add6 = add nsw i32 %V, 6
  %s1 = sext i32 %add5 to i64
  %s2 = sext i32 %add6 to i64
  %cmp = icmp slt i64 %s1, %s2
  ret i1 %cmp
}

define i1 @icmp_nsw_2(i32 %V) {
; CHECK-LABEL: @icmp_nsw_2(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add i32 %V, 5
  %add6 = add nsw i32 %V, 6
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_commute(i32 %V) {
; CHECK-LABEL: @icmp_nsw_commute(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add i32 5, %V
  %add6 = add nsw i32 %V, 6
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_commute2(i32 %V) {
; CHECK-LABEL: @icmp_nsw_commute2(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add i32 %V, 5
  %add6 = add nsw i32 6, %V
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_commute3(i32 %V) {
; CHECK-LABEL: @icmp_nsw_commute3(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add i32 5, %V
  %add6 = add nsw i32 6, %V
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_22(i32 %V) {
; CHECK-LABEL: @icmp_nsw_22(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add nsw i32 %V, 5
  %add6 = add nsw i32 %V, 6
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_23(i32 %V) {
; CHECK-LABEL: @icmp_nsw_23(
; CHECK-NEXT:    [[ADD5:%.*]] = add nsw i32 [[V:%.*]], 5
; CHECK-NEXT:    [[ADD6:%.*]] = add i32 [[V]], 6
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[ADD6]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add nsw i32 %V, 5
  %add6 = add i32 %V, 6
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_false(i32 %V) {
; CHECK-LABEL: @icmp_nsw_false(
; CHECK-NEXT:    ret i1 false
;
  %add5 = add nsw i32 %V, 6
  %add6 = add i32 %V, 5
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_false_2(i32 %V) {
; CHECK-LABEL: @icmp_nsw_false_2(
; CHECK-NEXT:    ret i1 false
;
  %add5 = add nsw i32 %V, 6
  %add6 = add nsw i32 %V, 5
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_false_3(i32 %V) {
; CHECK-LABEL: @icmp_nsw_false_3(
; CHECK-NEXT:    [[ADD5:%.*]] = add nsw i32 [[V:%.*]], 5
; CHECK-NEXT:    [[ADD6:%.*]] = add i32 [[V]], 5
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[ADD6]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add nsw i32 %V, 5
  %add6 = add i32 %V, 5
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_false_4(i32 %V) {
; CHECK-LABEL: @icmp_nsw_false_4(
; CHECK-NEXT:    [[ADD5:%.*]] = add i32 [[V:%.*]], 6
; CHECK-NEXT:    [[ADD6:%.*]] = add nsw i32 [[V]], 5
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[ADD6]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add i32 %V, 6
  %add6 = add nsw i32 %V, 5
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_false_5(i8 %V) {
; CHECK-LABEL: @icmp_nsw_false_5(
; CHECK-NEXT:    [[ADD:%.*]] = add i8 [[V:%.*]], 121
; CHECK-NEXT:    [[ADDNSW:%.*]] = add nsw i8 [[V]], -104
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[ADD]], [[ADDNSW]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add = add i8 %V, 121
  %addnsw = add nsw i8 %V, -104
  %cmp = icmp slt i8 %add, %addnsw
  ret i1 %cmp
}

define i1 @icmp_nsw_i8(i8 %V) {
; CHECK-LABEL: @icmp_nsw_i8(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add i8 %V, 5
  %add6 = add nsw i8 %V, 6
  %cmp = icmp slt i8 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_i16(i16 %V) {
; CHECK-LABEL: @icmp_nsw_i16(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add i16 %V, 0
  %add6 = add nsw i16 %V, 1
  %cmp = icmp slt i16 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_i64(i64 %V) {
; CHECK-LABEL: @icmp_nsw_i64(
; CHECK-NEXT:    ret i1 true
;
  %add5 = add i64 %V, 5
  %add6 = add nsw i64 %V, 6
  %cmp = icmp slt i64 %add5, %add6
  ret i1 %cmp
}

define <4 x i1> @icmp_nsw_vec(<4 x i32> %V) {
; CHECK-LABEL: @icmp_nsw_vec(
; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 true, i1 true>
;
  %add5 = add <4 x i32> %V, <i32 5, i32 5, i32 5, i32 5>
  %add6 = add nsw <4 x i32> %V, <i32 6, i32 6, i32 6, i32 6>
  %cmp = icmp slt <4 x i32> %add5, %add6
  ret <4 x i1> %cmp
}

define i1 @icmp_nsw_3(i32 %V) {
; CHECK-LABEL: @icmp_nsw_3(
; CHECK-NEXT:    [[ADD5:%.*]] = add i32 [[V:%.*]], 5
; CHECK-NEXT:    [[ADD5_2:%.*]] = add nsw i32 [[V]], 5
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[ADD5_2]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add i32 %V, 5
  %add5_2 = add nsw i32 %V, 5
  %cmp = icmp slt i32 %add5, %add5_2
  ret i1 %cmp
}

define i1 @icmp_nsw_4(i32 %V) {
; CHECK-LABEL: @icmp_nsw_4(
; CHECK-NEXT:    [[ADD5:%.*]] = add i32 [[V:%.*]], 5
; CHECK-NEXT:    [[ADD4:%.*]] = add nsw i32 [[V]], 4
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[ADD4]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add i32 %V, 5
  %add4 = add nsw i32 %V, 4
  %cmp = icmp slt i32 %add5, %add4
  ret i1 %cmp
}

define i1 @icmp_nsw_5(i32 %V) {
; CHECK-LABEL: @icmp_nsw_5(
; CHECK-NEXT:    [[ADD5:%.*]] = add nsw i32 [[V:%.*]], 5
; CHECK-NEXT:    [[ADD6:%.*]] = add i32 [[V]], 6
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[ADD6]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add nsw i32 %V, 5
  %add6 = add i32 %V, 6
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_7(i32 %V, i32 %arg) {
; CHECK-LABEL: @icmp_nsw_7(
; CHECK-NEXT:    [[ADD5:%.*]] = add i32 [[V:%.*]], 5
; CHECK-NEXT:    [[ADDARG:%.*]] = add nsw i32 [[V]], [[ARG:%.*]]
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[ADDARG]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add i32 %V, 5
  %addarg = add nsw i32 %V, %arg
  %cmp = icmp slt i32 %add5, %addarg
  ret i1 %cmp
}

define i1 @icmp_nsw_8(i32 %V, i32 %arg) {
; CHECK-LABEL: @icmp_nsw_8(
; CHECK-NEXT:    [[ADDARG:%.*]] = add i32 [[V:%.*]], [[ARG:%.*]]
; CHECK-NEXT:    [[ADD6:%.*]] = add nsw i32 [[V]], 5
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADDARG]], [[ADD6]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %addarg = add i32 %V, %arg
  %add6 = add nsw i32 %V, 5
  %cmp = icmp slt i32 %addarg, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_9(i32 %V1, i32 %V2) {
; CHECK-LABEL: @icmp_nsw_9(
; CHECK-NEXT:    [[ADD_V1:%.*]] = add i32 [[V1:%.*]], 5
; CHECK-NEXT:    [[ADD_V2:%.*]] = add nsw i32 [[V2:%.*]], 6
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD_V1]], [[ADD_V2]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add_V1 = add i32 %V1, 5
  %add_V2 = add nsw i32 %V2, 6
  %cmp = icmp slt i32 %add_V1, %add_V2
  ret i1 %cmp
}

define i1 @icmp_nsw_10(i32 %V) {
; CHECK-LABEL: @icmp_nsw_10(
; CHECK-NEXT:    [[ADD5:%.*]] = add i32 [[V:%.*]], 5
; CHECK-NEXT:    [[ADD6:%.*]] = add nsw i32 [[V]], 6
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[ADD6]], [[ADD5]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add i32 %V, 5
  %add6 = add nsw i32 %V, 6
  %cmp = icmp sgt i32 %add6, %add5
  ret i1 %cmp
}

define i1 @icmp_nsw_11(i32 %V) {
; CHECK-LABEL: @icmp_nsw_11(
; CHECK-NEXT:    [[ADD5:%.*]] = add i32 [[V:%.*]], -125
; CHECK-NEXT:    [[ADD6:%.*]] = add nsw i32 [[V]], -99
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[ADD6]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add i32 %V, -125
  %add6 = add nsw i32 %V, -99
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_nonpos(i32 %V) {
; CHECK-LABEL: @icmp_nsw_nonpos(
; CHECK-NEXT:    ret i1 false
;
  %add5 = add i32 %V, 0
  %add6 = add nsw i32 %V, -1
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

define i1 @icmp_nsw_nonpos2(i32 %V) {
; CHECK-LABEL: @icmp_nsw_nonpos2(
; CHECK-NEXT:    [[ADD5:%.*]] = add i32 [[V:%.*]], 1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[ADD5]], [[V]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %add5 = add i32 %V, 1
  %add6 = add nsw i32 %V, 0
  %cmp = icmp slt i32 %add5, %add6
  ret i1 %cmp
}

declare i11 @llvm.ctpop.i11(i11)
declare i73 @llvm.ctpop.i73(i73)
declare <2 x i13> @llvm.ctpop.v2i13(<2 x i13>)

define i1 @ctpop_sgt_bitwidth(i11 %x) {
; CHECK-LABEL: @ctpop_sgt_bitwidth(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i11 @llvm.ctpop.i11(i11 %x)
  %cmp = icmp sgt i11 %pop, 11
  ret i1 %cmp
}

define i1 @ctpop_sle_minus1(i11 %x) {
; CHECK-LABEL: @ctpop_sle_minus1(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i11 @llvm.ctpop.i11(i11 %x)
  %cmp = icmp sle i11 %pop, -1
  ret i1 %cmp
}

define i1 @ctpop_ugt_bitwidth(i73 %x) {
; CHECK-LABEL: @ctpop_ugt_bitwidth(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i73 @llvm.ctpop.i73(i73 %x)
  %cmp = icmp ugt i73 %pop, 73
  ret i1 %cmp
}

; Negative test - does not simplify, but instcombine could reduce this.

define i1 @ctpop_ugt_bitwidth_minus1(i73 %x) {
; CHECK-LABEL: @ctpop_ugt_bitwidth_minus1(
; CHECK-NEXT:    [[POP:%.*]] = call i73 @llvm.ctpop.i73(i73 [[X:%.*]])
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i73 [[POP]], 72
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %pop = call i73 @llvm.ctpop.i73(i73 %x)
  %cmp = icmp ugt i73 %pop, 72
  ret i1 %cmp
}

define <2 x i1> @ctpop_sgt_bitwidth_splat(<2 x i13> %x) {
; CHECK-LABEL: @ctpop_sgt_bitwidth_splat(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %pop = call <2 x i13> @llvm.ctpop.v2i13(<2 x i13> %x)
  %cmp = icmp sgt <2 x i13> %pop, <i13 13, i13 13>
  ret <2 x i1> %cmp
}

define i1 @ctpop_ult_plus1_bitwidth(i11 %x) {
; CHECK-LABEL: @ctpop_ult_plus1_bitwidth(
; CHECK-NEXT:    ret i1 true
;
  %pop = call i11 @llvm.ctpop.i11(i11 %x)
  %cmp = icmp ult i11 %pop, 12
  ret i1 %cmp
}

define i1 @ctpop_ne_big_bitwidth(i73 %x) {
; CHECK-LABEL: @ctpop_ne_big_bitwidth(
; CHECK-NEXT:    ret i1 true
;
  %pop = call i73 @llvm.ctpop.i73(i73 %x)
  %cmp = icmp ne i73 %pop, 75
  ret i1 %cmp
}

define <2 x i1> @ctpop_slt_bitwidth_plus1_splat(<2 x i13> %x) {
; CHECK-LABEL: @ctpop_slt_bitwidth_plus1_splat(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %pop = call <2 x i13> @llvm.ctpop.v2i13(<2 x i13> %x)
  %cmp = icmp slt <2 x i13> %pop, <i13 14, i13 14>
  ret <2 x i1> %cmp
}

; Negative test - does not simplify, but instcombine could reduce this.

define <2 x i1> @ctpop_slt_bitwidth_splat(<2 x i13> %x) {
; CHECK-LABEL: @ctpop_slt_bitwidth_splat(
; CHECK-NEXT:    [[POP:%.*]] = call <2 x i13> @llvm.ctpop.v2i13(<2 x i13> [[X:%.*]])
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt <2 x i13> [[POP]], <i13 13, i13 13>
; CHECK-NEXT:    ret <2 x i1> [[CMP]]
;
  %pop = call <2 x i13> @llvm.ctpop.v2i13(<2 x i13> %x)
  %cmp = icmp slt <2 x i13> %pop, <i13 13, i13 13>
  ret <2 x i1> %cmp
}

declare i11 @llvm.ctlz.i11(i11)
declare i73 @llvm.ctlz.i73(i73)
declare <2 x i13> @llvm.ctlz.v2i13(<2 x i13>)

define i1 @ctlz_sgt_bitwidth(i11 %x) {
; CHECK-LABEL: @ctlz_sgt_bitwidth(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i11 @llvm.ctlz.i11(i11 %x)
  %cmp = icmp sgt i11 %pop, 11
  ret i1 %cmp
}

define i1 @ctlz_sle_minus1(i11 %x) {
; CHECK-LABEL: @ctlz_sle_minus1(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i11 @llvm.ctlz.i11(i11 %x)
  %cmp = icmp sle i11 %pop, -1
  ret i1 %cmp
}

define i1 @ctlz_ugt_bitwidth(i73 %x) {
; CHECK-LABEL: @ctlz_ugt_bitwidth(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i73 @llvm.ctlz.i73(i73 %x)
  %cmp = icmp ugt i73 %pop, 73
  ret i1 %cmp
}

; Negative test - does not simplify, but instcombine could reduce this.

define i1 @ctlz_ugt_bitwidth_minus1(i73 %x) {
; CHECK-LABEL: @ctlz_ugt_bitwidth_minus1(
; CHECK-NEXT:    [[POP:%.*]] = call i73 @llvm.ctlz.i73(i73 [[X:%.*]], i1 false)
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i73 [[POP]], 72
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %pop = call i73 @llvm.ctlz.i73(i73 %x)
  %cmp = icmp ugt i73 %pop, 72
  ret i1 %cmp
}

define <2 x i1> @ctlz_sgt_bitwidth_splat(<2 x i13> %x) {
; CHECK-LABEL: @ctlz_sgt_bitwidth_splat(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %pop = call <2 x i13> @llvm.ctlz.v2i13(<2 x i13> %x)
  %cmp = icmp sgt <2 x i13> %pop, <i13 13, i13 13>
  ret <2 x i1> %cmp
}

define i1 @ctlz_ult_plus1_bitwidth(i11 %x) {
; CHECK-LABEL: @ctlz_ult_plus1_bitwidth(
; CHECK-NEXT:    ret i1 true
;
  %pop = call i11 @llvm.ctlz.i11(i11 %x)
  %cmp = icmp ult i11 %pop, 12
  ret i1 %cmp
}

define i1 @ctlz_ne_big_bitwidth(i73 %x) {
; CHECK-LABEL: @ctlz_ne_big_bitwidth(
; CHECK-NEXT:    ret i1 true
;
  %pop = call i73 @llvm.ctlz.i73(i73 %x)
  %cmp = icmp ne i73 %pop, 75
  ret i1 %cmp
}

define <2 x i1> @ctlz_slt_bitwidth_plus1_splat(<2 x i13> %x) {
; CHECK-LABEL: @ctlz_slt_bitwidth_plus1_splat(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %pop = call <2 x i13> @llvm.ctlz.v2i13(<2 x i13> %x)
  %cmp = icmp slt <2 x i13> %pop, <i13 14, i13 14>
  ret <2 x i1> %cmp
}

; Negative test - does not simplify, but instcombine could reduce this.

define <2 x i1> @ctlz_slt_bitwidth_splat(<2 x i13> %x) {
; CHECK-LABEL: @ctlz_slt_bitwidth_splat(
; CHECK-NEXT:    [[POP:%.*]] = call <2 x i13> @llvm.ctlz.v2i13(<2 x i13> [[X:%.*]], i1 false)
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt <2 x i13> [[POP]], <i13 13, i13 13>
; CHECK-NEXT:    ret <2 x i1> [[CMP]]
;
  %pop = call <2 x i13> @llvm.ctlz.v2i13(<2 x i13> %x)
  %cmp = icmp slt <2 x i13> %pop, <i13 13, i13 13>
  ret <2 x i1> %cmp
}

declare i11 @llvm.cttz.i11(i11)
declare i73 @llvm.cttz.i73(i73)
declare <2 x i13> @llvm.cttz.v2i13(<2 x i13>)

define i1 @cttz_sgt_bitwidth(i11 %x) {
; CHECK-LABEL: @cttz_sgt_bitwidth(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i11 @llvm.cttz.i11(i11 %x)
  %cmp = icmp sgt i11 %pop, 11
  ret i1 %cmp
}

define i1 @cttz_sle_minus1(i11 %x) {
; CHECK-LABEL: @cttz_sle_minus1(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i11 @llvm.cttz.i11(i11 %x)
  %cmp = icmp sle i11 %pop, -1
  ret i1 %cmp
}

define i1 @cttz_ugt_bitwidth(i73 %x) {
; CHECK-LABEL: @cttz_ugt_bitwidth(
; CHECK-NEXT:    ret i1 false
;
  %pop = call i73 @llvm.cttz.i73(i73 %x)
  %cmp = icmp ugt i73 %pop, 73
  ret i1 %cmp
}

; Negative test - does not simplify, but instcombine could reduce this.

define i1 @cttz_ugt_bitwidth_minus1(i73 %x) {
; CHECK-LABEL: @cttz_ugt_bitwidth_minus1(
; CHECK-NEXT:    [[POP:%.*]] = call i73 @llvm.cttz.i73(i73 [[X:%.*]], i1 false)
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i73 [[POP]], 72
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %pop = call i73 @llvm.cttz.i73(i73 %x)
  %cmp = icmp ugt i73 %pop, 72
  ret i1 %cmp
}

define <2 x i1> @cttz_sgt_bitwidth_splat(<2 x i13> %x) {
; CHECK-LABEL: @cttz_sgt_bitwidth_splat(
; CHECK-NEXT:    ret <2 x i1> zeroinitializer
;
  %pop = call <2 x i13> @llvm.cttz.v2i13(<2 x i13> %x)
  %cmp = icmp sgt <2 x i13> %pop, <i13 13, i13 13>
  ret <2 x i1> %cmp
}

define i1 @cttz_ult_plus1_bitwidth(i11 %x) {
; CHECK-LABEL: @cttz_ult_plus1_bitwidth(
; CHECK-NEXT:    ret i1 true
;
  %pop = call i11 @llvm.cttz.i11(i11 %x)
  %cmp = icmp ult i11 %pop, 12
  ret i1 %cmp
}

define i1 @cttz_ne_big_bitwidth(i73 %x) {
; CHECK-LABEL: @cttz_ne_big_bitwidth(
; CHECK-NEXT:    ret i1 true
;
  %pop = call i73 @llvm.cttz.i73(i73 %x)
  %cmp = icmp ne i73 %pop, 75
  ret i1 %cmp
}

define <2 x i1> @cttz_slt_bitwidth_plus1_splat(<2 x i13> %x) {
; CHECK-LABEL: @cttz_slt_bitwidth_plus1_splat(
; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
;
  %pop = call <2 x i13> @llvm.cttz.v2i13(<2 x i13> %x)
  %cmp = icmp slt <2 x i13> %pop, <i13 14, i13 14>
  ret <2 x i1> %cmp
}

; Negative test - does not simplify, but instcombine could reduce this.

define <2 x i1> @cttz_slt_bitwidth_splat(<2 x i13> %x) {
; CHECK-LABEL: @cttz_slt_bitwidth_splat(
; CHECK-NEXT:    [[POP:%.*]] = call <2 x i13> @llvm.cttz.v2i13(<2 x i13> [[X:%.*]], i1 false)
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt <2 x i13> [[POP]], <i13 13, i13 13>
; CHECK-NEXT:    ret <2 x i1> [[CMP]]
;
  %pop = call <2 x i13> @llvm.cttz.v2i13(<2 x i13> %x)
  %cmp = icmp slt <2 x i13> %pop, <i13 13, i13 13>
  ret <2 x i1> %cmp
}

attributes #0 = { null_pointer_is_valid }
