; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; This test makes sure that all icmp instructions are eliminated.
; RUN: opt < %s -passes=instcombine -S | FileCheck %s

@X = external global i32

declare void @use(i1)

define i1 @test1(i32 %A) {
; CHECK-LABEL: @test1(
; CHECK-NEXT:    ret i1 false
;
  %B = icmp eq i32 %A, %A
  ; Never true
  %C = icmp eq ptr @X, null
  %D = and i1 %B, %C
  ret i1 %D
}

define i1 @test1_logical(i32 %A) {
; CHECK-LABEL: @test1_logical(
; CHECK-NEXT:    ret i1 false
;
  %B = icmp eq i32 %A, %A
  ; Never true
  %C = icmp eq ptr @X, null
  %D = select i1 %B, i1 %C, i1 false
  ret i1 %D
}

define i1 @test2(i32 %A) {
; CHECK-LABEL: @test2(
; CHECK-NEXT:    ret i1 true
;
  %B = icmp ne i32 %A, %A
  ; Never false
  %C = icmp ne ptr @X, null
  %D = or i1 %B, %C
  ret i1 %D
}

define i1 @test2_logical(i32 %A) {
; CHECK-LABEL: @test2_logical(
; CHECK-NEXT:    ret i1 true
;
  %B = icmp ne i32 %A, %A
  ; Never false
  %C = icmp ne ptr @X, null
  %D = select i1 %B, i1 true, i1 %C
  ret i1 %D
}

define i1 @test3(i32 %A) {
; CHECK-LABEL: @test3(
; CHECK-NEXT:    ret i1 false
;
  %B = icmp slt i32 %A, %A
  ret i1 %B
}


define i1 @test4(i32 %A) {
; CHECK-LABEL: @test4(
; CHECK-NEXT:    ret i1 false
;
  %B = icmp sgt i32 %A, %A
  ret i1 %B
}

define i1 @test5(i32 %A) {
; CHECK-LABEL: @test5(
; CHECK-NEXT:    ret i1 true
;
  %B = icmp sle i32 %A, %A
  ret i1 %B
}

define i1 @test6(i32 %A) {
; CHECK-LABEL: @test6(
; CHECK-NEXT:    ret i1 true
;
  %B = icmp sge i32 %A, %A
  ret i1 %B
}

define i1 @test7(i32 %A) {
; CHECK-LABEL: @test7(
; CHECK-NEXT:    ret i1 true
;
  %B = icmp uge i32 %A, 0
  ret i1 %B
}

define i1 @test8(i32 %A) {
; CHECK-LABEL: @test8(
; CHECK-NEXT:    ret i1 false
;
  %B = icmp ult i32 %A, 0
  ret i1 %B
}

;; test operations on boolean values these should all be eliminated$a
define i1 @test9(i1 %A) {
; CHECK-LABEL: @test9(
; CHECK-NEXT:    ret i1 false
;
  %B = icmp ult i1 %A, false
  ret i1 %B
}

define i1 @test10(i1 %A) {
; CHECK-LABEL: @test10(
; CHECK-NEXT:    ret i1 false
;
  %B = icmp ugt i1 %A, true
  ret i1 %B
}

define i1 @test11(i1 %A) {
; CHECK-LABEL: @test11(
; CHECK-NEXT:    ret i1 true
;
  %B = icmp ule i1 %A, true
  ret i1 %B
}

define i1 @test12(i1 %A) {
; CHECK-LABEL: @test12(
; CHECK-NEXT:    ret i1 true
;
  %B = icmp uge i1 %A, false
  ret i1 %B
}

define i1 @test13(i1 %A, i1 %B) {
; CHECK-LABEL: @test13(
; CHECK-NEXT:    [[TMP1:%.*]] = xor i1 [[B:%.*]], true
; CHECK-NEXT:    [[C:%.*]] = or i1 [[TMP1]], [[A:%.*]]
; CHECK-NEXT:    ret i1 [[C]]
;
  %C = icmp uge i1 %A, %B
  ret i1 %C
}

define <2 x i1> @test13vec(<2 x i1> %A, <2 x i1> %B) {
; CHECK-LABEL: @test13vec(
; CHECK-NEXT:    [[TMP1:%.*]] = xor <2 x i1> [[B:%.*]], <i1 true, i1 true>
; CHECK-NEXT:    [[C:%.*]] = or <2 x i1> [[TMP1]], [[A:%.*]]
; CHECK-NEXT:    ret <2 x i1> [[C]]
;
  %C = icmp uge <2 x i1> %A, %B
  ret <2 x i1> %C
}

define i1 @test14(i1 %A, i1 %B) {
; CHECK-LABEL: @test14(
; CHECK-NEXT:    [[TMP1:%.*]] = xor i1 [[A:%.*]], [[B:%.*]]
; CHECK-NEXT:    [[C:%.*]] = xor i1 [[TMP1]], true
; CHECK-NEXT:    ret i1 [[C]]
;
  %C = icmp eq i1 %A, %B
  ret i1 %C
}

define <3 x i1> @test14vec(<3 x i1> %A, <3 x i1> %B) {
; CHECK-LABEL: @test14vec(
; CHECK-NEXT:    [[TMP1:%.*]] = xor <3 x i1> [[A:%.*]], [[B:%.*]]
; CHECK-NEXT:    [[C:%.*]] = xor <3 x i1> [[TMP1]], <i1 true, i1 true, i1 true>
; CHECK-NEXT:    ret <3 x i1> [[C]]
;
  %C = icmp eq <3 x i1> %A, %B
  ret <3 x i1> %C
}

define i1 @bool_eq0(i64 %a) {
; CHECK-LABEL: @bool_eq0(
; CHECK-NEXT:    [[AND:%.*]] = icmp sgt i64 [[A:%.*]], 1
; CHECK-NEXT:    ret i1 [[AND]]
;
  %b = icmp sgt i64 %a, 0
  %c = icmp eq i64 %a, 1
  %notc = icmp eq i1 %c, false
  %and = and i1 %b, %notc
  ret i1 %and
}

define i1 @bool_eq0_logical(i64 %a) {
; CHECK-LABEL: @bool_eq0_logical(
; CHECK-NEXT:    [[AND:%.*]] = icmp sgt i64 [[A:%.*]], 1
; CHECK-NEXT:    ret i1 [[AND]]
;
  %b = icmp sgt i64 %a, 0
  %c = icmp eq i64 %a, 1
  %notc = icmp eq i1 %c, false
  %and = select i1 %b, i1 %notc, i1 false
  ret i1 %and
}

; This is equivalent to the previous test.

define i1 @xor_of_icmps(i64 %a) {
; CHECK-LABEL: @xor_of_icmps(
; CHECK-NEXT:    [[XOR:%.*]] = icmp sgt i64 [[A:%.*]], 1
; CHECK-NEXT:    ret i1 [[XOR]]
;
  %b = icmp sgt i64 %a, 0
  %c = icmp eq i64 %a, 1
  %xor = xor i1 %c, %b
  ret i1 %xor
}

; This is also equivalent to the previous test.

define i1 @xor_of_icmps_commute(i64 %a) {
; CHECK-LABEL: @xor_of_icmps_commute(
; CHECK-NEXT:    [[XOR:%.*]] = icmp sgt i64 [[A:%.*]], 1
; CHECK-NEXT:    ret i1 [[XOR]]
;
  %b = icmp sgt i64 %a, 0
  %c = icmp eq i64 %a, 1
  %xor = xor i1 %b, %c
  ret i1 %xor
}

define i1 @xor_of_icmps_to_ne(i64 %a) {
; CHECK-LABEL: @xor_of_icmps_to_ne(
; CHECK-NEXT:    [[XOR:%.*]] = icmp ne i64 [[A:%.*]], 5
; CHECK-NEXT:    ret i1 [[XOR]]
;
  %b = icmp sgt i64 %a, 4
  %c = icmp slt i64 %a, 6
  %xor = xor i1 %b, %c
  ret i1 %xor
}

define i1 @xor_of_icmps_to_ne_commute(i64 %a) {
; CHECK-LABEL: @xor_of_icmps_to_ne_commute(
; CHECK-NEXT:    [[XOR:%.*]] = icmp ne i64 [[A:%.*]], 5
; CHECK-NEXT:    ret i1 [[XOR]]
;
  %c = icmp sgt i64 %a, 4
  %b = icmp slt i64 %a, 6
  %xor = xor i1 %b, %c
  ret i1 %xor
}

define i1 @xor_of_icmps_neg_to_ne(i64 %a) {
; CHECK-LABEL: @xor_of_icmps_neg_to_ne(
; CHECK-NEXT:    [[XOR:%.*]] = icmp ne i64 [[A:%.*]], -5
; CHECK-NEXT:    ret i1 [[XOR]]
;
  %b = icmp sgt i64 %a, -6
  %c = icmp slt i64 %a, -4
  %xor = xor i1 %b, %c
  ret i1 %xor
}

define <2 x i1> @xor_of_icmps_to_ne_vector(<2 x i64> %a) {
; CHECK-LABEL: @xor_of_icmps_to_ne_vector(
; CHECK-NEXT:    [[XOR:%.*]] = icmp ne <2 x i64> [[A:%.*]], <i64 5, i64 5>
; CHECK-NEXT:    ret <2 x i1> [[XOR]]
;
  %b = icmp sgt <2 x i64> %a, <i64 4, i64 4>
  %c = icmp slt <2 x i64> %a, <i64 6, i64 6>
  %xor = xor <2 x i1> %b, %c
  ret <2 x i1> %xor
}

define i1 @xor_of_icmps_to_ne_no_common_operand(i64 %a, i64 %z) {
; CHECK-LABEL: @xor_of_icmps_to_ne_no_common_operand(
; CHECK-NEXT:    [[B:%.*]] = icmp sgt i64 [[Z:%.*]], 4
; CHECK-NEXT:    [[C:%.*]] = icmp slt i64 [[A:%.*]], 6
; CHECK-NEXT:    [[XOR:%.*]] = xor i1 [[B]], [[C]]
; CHECK-NEXT:    ret i1 [[XOR]]
;
  %b = icmp sgt i64 %z, 4
  %c = icmp slt i64 %a, 6
  %xor = xor i1 %b, %c
  ret i1 %xor
}

define i1 @xor_of_icmps_to_ne_extra_use_one(i64 %a) {
; CHECK-LABEL: @xor_of_icmps_to_ne_extra_use_one(
; CHECK-NEXT:    [[B:%.*]] = icmp sgt i64 [[A:%.*]], 4
; CHECK-NEXT:    call void @use(i1 [[B]])
; CHECK-NEXT:    [[XOR:%.*]] = icmp ne i64 [[A]], 5
; CHECK-NEXT:    ret i1 [[XOR]]
;
  %b = icmp sgt i64 %a, 4
  %c = icmp slt i64 %a, 6
  call void @use(i1 %b)
  %xor = xor i1 %b, %c
  ret i1 %xor
}

define i1 @xor_of_icmps_to_ne_extra_use_two(i64 %a) {
; CHECK-LABEL: @xor_of_icmps_to_ne_extra_use_two(
; CHECK-NEXT:    [[B:%.*]] = icmp sgt i64 [[A:%.*]], 4
; CHECK-NEXT:    [[C:%.*]] = icmp slt i64 [[A]], 6
; CHECK-NEXT:    call void @use(i1 [[B]])
; CHECK-NEXT:    call void @use(i1 [[C]])
; CHECK-NEXT:    [[XOR:%.*]] = xor i1 [[B]], [[C]]
; CHECK-NEXT:    ret i1 [[XOR]]
;
  %b = icmp sgt i64 %a, 4
  %c = icmp slt i64 %a, 6
  call void @use(i1 %b)
  call void @use(i1 %c)
  %xor = xor i1 %b, %c
  ret i1 %xor
}

define i1 @xor_of_icmps_to_eq(i8 %a) {
; CHECK-LABEL: @xor_of_icmps_to_eq(
; CHECK-NEXT:    [[C:%.*]] = icmp eq i8 [[A:%.*]], 127
; CHECK-NEXT:    ret i1 [[C]]
;
  %c = icmp sgt i8 %a, 126
  %b = icmp slt i8 %a, 128
  %xor = xor i1 %b, %c
  ret i1 %xor
}

; https://bugs.llvm.org/show_bug.cgi?id=2844

define i32 @PR2844(i32 %x) {
; CHECK-LABEL: @PR2844(
; CHECK-NEXT:    [[A:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    [[B:%.*]] = icmp sgt i32 [[X]], -638208502
; CHECK-NEXT:    [[OR_NOT:%.*]] = and i1 [[A]], [[B]]
; CHECK-NEXT:    [[SEL:%.*]] = zext i1 [[OR_NOT]] to i32
; CHECK-NEXT:    ret i32 [[SEL]]
;
  %A = icmp eq i32 %x, 0
  %B = icmp slt i32 %x, -638208501
  %or = or i1 %A, %B
  %sel = select i1 %or, i32 0, i32 1
  ret i32 %sel
}

define i32 @PR2844_logical(i32 %x) {
; CHECK-LABEL: @PR2844_logical(
; CHECK-NEXT:    [[A:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT:    [[B:%.*]] = icmp sgt i32 [[X]], -638208502
; CHECK-NEXT:    [[OR_NOT:%.*]] = and i1 [[A]], [[B]]
; CHECK-NEXT:    [[SEL:%.*]] = zext i1 [[OR_NOT]] to i32
; CHECK-NEXT:    ret i32 [[SEL]]
;
  %A = icmp eq i32 %x, 0
  %B = icmp slt i32 %x, -638208501
  %or = select i1 %A, i1 true, i1 %B
  %sel = select i1 %or, i32 0, i32 1
  ret i32 %sel
}

define i1 @test16(i32 %A) {
; CHECK-LABEL: @test16(
; CHECK-NEXT:    ret i1 false
;
  %B = and i32 %A, 5
  ; Is never true
  %C = icmp eq i32 %B, 8
  ret i1 %C
}

define i1 @test17(i8 %A) {
; CHECK-LABEL: @test17(
; CHECK-NEXT:    ret i1 false
;
  %B = or i8 %A, 1
  ; Always false
  %C = icmp eq i8 %B, 2
  ret i1 %C
}

define i1 @test18(i1 %C, i32 %a) {
; CHECK-LABEL: @test18(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br i1 [[C:%.*]], label [[ENDIF:%.*]], label [[ELSE:%.*]]
; CHECK:       else:
; CHECK-NEXT:    br label [[ENDIF]]
; CHECK:       endif:
; CHECK-NEXT:    ret i1 true
;
entry:
  br i1 %C, label %endif, label %else

else:
  br label %endif

endif:
  %b.0 = phi i32 [ 0, %entry ], [ 1, %else ]
  %tmp.4 = icmp slt i32 %b.0, 123
  ret i1 %tmp.4
}

define i1 @test19(i1 %A, i1 %B) {
; CHECK-LABEL: @test19(
; CHECK-NEXT:    [[TMP1:%.*]] = xor i1 [[A:%.*]], [[B:%.*]]
; CHECK-NEXT:    [[C:%.*]] = xor i1 [[TMP1]], true
; CHECK-NEXT:    ret i1 [[C]]
;
  %a = zext i1 %A to i32
  %b = zext i1 %B to i32
  %C = icmp eq i32 %a, %b
  ret i1 %C
}

define i32 @test20(i32 %A) {
; CHECK-LABEL: @test20(
; CHECK-NEXT:    [[B:%.*]] = and i32 [[A:%.*]], 1
; CHECK-NEXT:    ret i32 [[B]]
;
  %B = and i32 %A, 1
  %C = icmp ne i32 %B, 0
  %D = zext i1 %C to i32
  ret i32 %D
}

define <2 x i32> @test20vec(<2 x i32> %A) {
; CHECK-LABEL: @test20vec(
; CHECK-NEXT:    [[D:%.*]] = and <2 x i32> [[A:%.*]], <i32 1, i32 1>
; CHECK-NEXT:    ret <2 x i32> [[D]]
;
  %B = and <2 x i32> %A, <i32 1, i32 1>
  %C = icmp ne <2 x i32> %B, zeroinitializer
  %D = zext <2 x i1> %C to <2 x i32>
  ret <2 x i32> %D
}

define i32 @test21(i32 %a) {
; CHECK-LABEL: @test21(
; CHECK-NEXT:    [[TMP_6:%.*]] = lshr i32 [[A:%.*]], 2
; CHECK-NEXT:    [[TMP_6_LOBIT:%.*]] = and i32 [[TMP_6]], 1
; CHECK-NEXT:    ret i32 [[TMP_6_LOBIT]]
;
  %tmp.6 = and i32 %a, 4
  %not.tmp.7 = icmp ne i32 %tmp.6, 0
  %retval = zext i1 %not.tmp.7 to i32
  ret i32 %retval
}

define <2 x i32> @test21vec(<2 x i32> %a) {
; CHECK-LABEL: @test21vec(
; CHECK-NEXT:    [[TMP_6:%.*]] = lshr <2 x i32> [[A:%.*]], <i32 2, i32 2>
; CHECK-NEXT:    [[TMP_6_LOBIT:%.*]] = and <2 x i32> [[TMP_6]], <i32 1, i32 1>
; CHECK-NEXT:    ret <2 x i32> [[TMP_6_LOBIT]]
;
  %tmp.6 = and <2 x i32> %a, <i32 4, i32 4>
  %not.tmp.7 = icmp ne <2 x i32> %tmp.6, zeroinitializer
  %retval = zext <2 x i1> %not.tmp.7 to <2 x i32>
  ret <2 x i32> %retval
}

define i1 @test22(i32 %A, i32 %X) {
; CHECK-LABEL: @test22(
; CHECK-NEXT:    ret i1 true
;
  %B = and i32 %A, 100663295
  %C = icmp ult i32 %B, 268435456
  %Y = and i32 %X, 7
  %Z = icmp sgt i32 %Y, -1
  %R = or i1 %C, %Z
  ret i1 %R
}

define i1 @test22_logical(i32 %A, i32 %X) {
; CHECK-LABEL: @test22_logical(
; CHECK-NEXT:    ret i1 true
;
  %B = and i32 %A, 100663295
  %C = icmp ult i32 %B, 268435456
  %Y = and i32 %X, 7
  %Z = icmp sgt i32 %Y, -1
  %R = select i1 %C, i1 true, i1 %Z
  ret i1 %R
}

define i32 @test23(i32 %a) {
; CHECK-LABEL: @test23(
; CHECK-NEXT:    [[TMP_1:%.*]] = and i32 [[A:%.*]], 1
; CHECK-NEXT:    [[TMP_3:%.*]] = xor i32 [[TMP_1]], 1
; CHECK-NEXT:    ret i32 [[TMP_3]]
;
  %tmp.1 = and i32 %a, 1
  %tmp.2 = icmp eq i32 %tmp.1, 0
  %tmp.3 = zext i1 %tmp.2 to i32
  ret i32 %tmp.3
}

define <2 x i32> @test23vec(<2 x i32> %a) {
; CHECK-LABEL: @test23vec(
; CHECK-NEXT:    [[TMP_1:%.*]] = and <2 x i32> [[A:%.*]], <i32 1, i32 1>
; CHECK-NEXT:    [[TMP_3:%.*]] = xor <2 x i32> [[TMP_1]], <i32 1, i32 1>
; CHECK-NEXT:    ret <2 x i32> [[TMP_3]]
;
  %tmp.1 = and <2 x i32> %a, <i32 1, i32 1>
  %tmp.2 = icmp eq <2 x i32> %tmp.1, zeroinitializer
  %tmp.3 = zext <2 x i1> %tmp.2 to <2 x i32>
  ret <2 x i32> %tmp.3
}

define i32 @test24(i32 %a) {
; CHECK-LABEL: @test24(
; CHECK-NEXT:    [[TMP1:%.*]] = lshr i32 [[A:%.*]], 2
; CHECK-NEXT:    [[DOTLOBIT:%.*]] = and i32 [[TMP1]], 1
; CHECK-NEXT:    [[TMP_3:%.*]] = xor i32 [[DOTLOBIT]], 1
; CHECK-NEXT:    ret i32 [[TMP_3]]
;
  %tmp1 = and i32 %a, 4
  %tmp.1 = lshr i32 %tmp1, 2
  %tmp.2 = icmp eq i32 %tmp.1, 0
  %tmp.3 = zext i1 %tmp.2 to i32
  ret i32 %tmp.3
}

define <2 x i32> @test24vec(<2 x i32> %a) {
; CHECK-LABEL: @test24vec(
; CHECK-NEXT:    [[TMP1:%.*]] = lshr <2 x i32> [[A:%.*]], <i32 2, i32 2>
; CHECK-NEXT:    [[DOTLOBIT:%.*]] = and <2 x i32> [[TMP1]], <i32 1, i32 1>
; CHECK-NEXT:    [[TMP_3:%.*]] = xor <2 x i32> [[DOTLOBIT]], <i32 1, i32 1>
; CHECK-NEXT:    ret <2 x i32> [[TMP_3]]
;
  %tmp1 = and <2 x i32> %a, <i32 4, i32 4>
  %tmp.1 = lshr <2 x i32> %tmp1, <i32 2, i32 2>
  %tmp.2 = icmp eq <2 x i32> %tmp.1, zeroinitializer
  %tmp.3 = zext <2 x i1> %tmp.2 to <2 x i32>
  ret <2 x i32> %tmp.3
}

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