; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -instcombine -S | FileCheck %s

; Should fold
;   (%y ^ -1) u>= %x
; to
;   @llvm.uadd.with.overflow(%x, %y) + extractvalue + not
;
; All tests here have extra uses, to ensure that the pattern isn't perturbed.

declare void @use8(i8)
declare void @use2x8(<2 x i8>)

define i1 @t0_basic(i8 %x, i8 %y) {
; CHECK-LABEL: @t0_basic(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp uge i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp uge i8 %t0, %x
  ret i1 %r
}

define <2 x i1> @t1_vec(<2 x i8> %x, <2 x i8> %y) {
; CHECK-LABEL: @t1_vec(
; CHECK-NEXT:    [[T0:%.*]] = xor <2 x i8> [[Y:%.*]], <i8 -1, i8 -1>
; CHECK-NEXT:    call void @use2x8(<2 x i8> [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp uge <2 x i8> [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret <2 x i1> [[R]]
;
  %t0 = xor <2 x i8> %y, <i8 -1, i8 -1>
  call void @use2x8(<2 x i8> %t0)
  %r = icmp uge <2 x i8> %t0, %x
  ret <2 x i1> %r
}

; Commutativity

declare i8 @gen8()

define i1 @t2_commutative(i8 %y) {
; CHECK-LABEL: @t2_commutative(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[X:%.*]] = call i8 @gen8()
; CHECK-NEXT:    [[R:%.*]] = icmp ule i8 [[X]], [[T0]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %x = call i8 @gen8()
  %r = icmp ule i8 %x, %t0 ; swapped
  ret i1 %r
}

; Extra-use tests

define i1 @t3_no_extrause(i8 %x, i8 %y) {
; CHECK-LABEL: @t3_no_extrause(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    [[R:%.*]] = icmp uge i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  %r = icmp uge i8 %t0, %x
  ret i1 %r
}

; Negative tests

define i1 @n4_wrong_pred0(i8 %x, i8 %y) {
; CHECK-LABEL: @n4_wrong_pred0(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp ule i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp ule i8 %t0, %x
  ret i1 %r
}

define i1 @n5_wrong_pred1(i8 %x, i8 %y) {
; CHECK-LABEL: @n5_wrong_pred1(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp ugt i8 %t0, %x
  ret i1 %r
}

define i1 @n6_wrong_pred2(i8 %x, i8 %y) {
; CHECK-LABEL: @n6_wrong_pred2(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp eq i8 %t0, %x
  ret i1 %r
}

define i1 @n7_wrong_pred3(i8 %x, i8 %y) {
; CHECK-LABEL: @n7_wrong_pred3(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp ne i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp ne i8 %t0, %x
  ret i1 %r
}

define i1 @n8_wrong_pred4(i8 %x, i8 %y) {
; CHECK-LABEL: @n8_wrong_pred4(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp slt i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp slt i8 %t0, %x
  ret i1 %r
}

define i1 @n9_wrong_pred5(i8 %x, i8 %y) {
; CHECK-LABEL: @n9_wrong_pred5(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp sle i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp sle i8 %t0, %x
  ret i1 %r
}

define i1 @n10_wrong_pred6(i8 %x, i8 %y) {
; CHECK-LABEL: @n10_wrong_pred6(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp sgt i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp sgt i8 %t0, %x
  ret i1 %r
}

define i1 @n11_wrong_pred7(i8 %x, i8 %y) {
; CHECK-LABEL: @n11_wrong_pred7(
; CHECK-NEXT:    [[T0:%.*]] = xor i8 [[Y:%.*]], -1
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp sge i8 [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %t0 = xor i8 %y, -1
  call void @use8(i8 %t0)
  %r = icmp sge i8 %t0, %x
  ret i1 %r
}

define <2 x i1> @n12_vec_nonsplat(<2 x i8> %x, <2 x i8> %y) {
; CHECK-LABEL: @n12_vec_nonsplat(
; CHECK-NEXT:    [[T0:%.*]] = xor <2 x i8> [[Y:%.*]], <i8 -1, i8 -2>
; CHECK-NEXT:    call void @use2x8(<2 x i8> [[T0]])
; CHECK-NEXT:    [[R:%.*]] = icmp uge <2 x i8> [[T0]], [[X:%.*]]
; CHECK-NEXT:    ret <2 x i1> [[R]]
;
  %t0 = xor <2 x i8> %y, <i8 -1, i8 -2> ; must be -1.
  call void @use2x8(<2 x i8> %t0)
  %r = icmp uge <2 x i8> %t0, %x
  ret <2 x i1> %r
}
