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

; There are 12 basic patterns (or 6 with DeMorganized equivalent) with
;    2 (commute logic op) *
;    2 (swap compare operands) *
;    2 (signed/unsigned) *
;    2 (not of input operand)
; variations for a total of 192 tests.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MAX) && (X < Y) --> false
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @slt_and_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_and_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp slt i8 %x, %y
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define <2 x i1> @slt_and_max_commute(<2 x i8> %x, <2 x i8> %y)  {
; CHECK-LABEL: @slt_and_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt <2 x i8> [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq <2 x i8> [[X]], <i8 127, i8 127>
; CHECK-NEXT:    [[R:%.*]] = and <2 x i1> [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret <2 x i1> [[R]]
;
  %cmp = icmp slt <2 x i8> %x, %y
  %cmpeq = icmp eq <2 x i8> %x, <i8 127, i8 127>
  %r = and <2 x i1> %cmpeq, %cmp
  ret <2 x i1> %r
}

define i1 @slt_swap_and_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_and_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sgt i8 %y, %x
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_swap_and_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_and_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sgt i8 %y, %x
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_and_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_and_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ult i8 %x, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_and_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_and_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ult i8 %x, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_swap_and_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_and_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ugt i8 %y, %x
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_swap_and_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_and_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ugt i8 %y, %x
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MIN) && (X > Y) --> false
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sgt_and_min(i9 %x, i9 %y)  {
; CHECK-LABEL: @sgt_and_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i9 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i9 [[X]], -256
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sgt i9 %x, %y
  %cmpeq = icmp eq i9 %x, 256
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_and_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_and_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sgt i8 %x, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sgt_swap_and_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_and_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp slt i8 %y, %x
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_swap_and_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_and_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp slt i8 %y, %x
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_and_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_and_min(
; CHECK-NEXT:    ret i1 false
;
  %cmp = icmp ugt i8 %x, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_and_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_and_min_commute(
; CHECK-NEXT:    ret i1 false
;
  %cmp = icmp ugt i8 %x, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_swap_and_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_and_min(
; CHECK-NEXT:    ret i1 false
;
  %cmp = icmp ult i8 %y, %x
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_swap_and_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_and_min_commute(
; CHECK-NEXT:    ret i1 false
;
  %cmp = icmp ult i8 %y, %x
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MAX) || (X >= Y) --> true
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sge_or_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_or_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sge i8 %x, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_or_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_or_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sge i8 %x, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sge_swap_or_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_or_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sle i8 %y, %x
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_swap_or_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_or_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sle i8 %y, %x
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_or_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_or_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp uge i8 %x, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_or_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_or_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp uge i8 %x, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_swap_or_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_or_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ule i8 %y, %x
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_swap_or_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_or_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ule i8 %y, %x
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MIN) || (X <= Y) --> true
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sle_or_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_or_not_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sle i8 %x, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_or_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_or_not_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sle i8 %x, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sle_swap_or_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_or_not_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sge i8 %y, %x
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_swap_or_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_or_not_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sge i8 %y, %x
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_or_not_min(i427 %x, i427 %y)  {
; CHECK-LABEL: @ule_or_not_min(
; CHECK-NEXT:    ret i1 true
;
  %cmp = icmp ule i427 %x, %y
  %cmpeq = icmp ne i427 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_or_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_or_not_min_commute(
; CHECK-NEXT:    ret i1 true
;
  %cmp = icmp ule i8 %x, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_swap_or_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_or_not_min(
; CHECK-NEXT:    ret i1 true
;
  %cmp = icmp uge i8 %y, %x
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_swap_or_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_or_not_min_commute(
; CHECK-NEXT:    ret i1 true
;
  %cmp = icmp uge i8 %y, %x
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MAX) && (X >= Y) --> X == MAX
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sge_and_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_and_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sge i8 %x, %y
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_and_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_and_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sge i8 %x, %y
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sge_swap_and_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_and_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sle i8 %y, %x
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_swap_and_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_and_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sle i8 %y, %x
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_and_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_and_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp uge i8 %x, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_and_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_and_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp uge i8 %x, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_swap_and_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_and_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ule i8 %y, %x
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_swap_and_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_and_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ule i8 %y, %x
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MIN) && (X <= Y) --> X == MIN
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sle_and_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_and_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sle i8 %x, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_and_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_and_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sle i8 %x, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sle_swap_and_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_and_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sge i8 %y, %x
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_swap_and_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_and_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sge i8 %y, %x
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_and_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_and_min(
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0
; CHECK-NEXT:    ret i1 [[CMPEQ]]
;
  %cmp = icmp ule i8 %x, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_and_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_and_min_commute(
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0
; CHECK-NEXT:    ret i1 [[CMPEQ]]
;
  %cmp = icmp ule i8 %x, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_swap_and_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_and_min(
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0
; CHECK-NEXT:    ret i1 [[CMPEQ]]
;
  %cmp = icmp uge i8 %y, %x
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_swap_and_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_and_min_commute(
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X:%.*]], 0
; CHECK-NEXT:    ret i1 [[CMPEQ]]
;
  %cmp = icmp uge i8 %y, %x
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MAX) || (X >= Y) --> X >= Y
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sge_or_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_or_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sge i8 %x, %y
  %cmpeq = icmp eq i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_or_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_or_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sge i8 %x, %y
  %cmpeq = icmp eq i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sge_swap_or_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_or_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sle i8 %y, %x
  %cmpeq = icmp eq i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_swap_or_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_or_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sle i8 %y, %x
  %cmpeq = icmp eq i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_or_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_or_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp uge i8 %x, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_or_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_or_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp uge i8 %x, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_swap_or_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_or_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ule i8 %y, %x
  %cmpeq = icmp eq i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_swap_or_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_or_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ule i8 %y, %x
  %cmpeq = icmp eq i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MIN) || (X <= Y) --> X <= Y
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sle_or_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_or_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sle i8 %x, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_or_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_or_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sle i8 %x, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sle_swap_or_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_or_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sge i8 %y, %x
  %cmpeq = icmp eq i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_swap_or_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_or_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sge i8 %y, %x
  %cmpeq = icmp eq i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_or_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_or_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ule i8 %x, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_or_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_or_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ule i8 %x, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_swap_or_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_or_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp uge i8 %y, %x
  %cmpeq = icmp eq i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_swap_or_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_or_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp uge i8 %y, %x
  %cmpeq = icmp eq i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MAX) && (X < Y) --> X < Y
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @slt_and_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_and_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp slt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_and_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_and_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp slt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @slt_swap_and_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_and_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sgt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_swap_and_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_and_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sgt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_and_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_and_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ult i8 %x, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_and_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_and_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ult i8 %x, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_swap_and_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_and_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ugt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_swap_and_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_and_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ugt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MIN) && (X > Y) --> X > Y
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sgt_and_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_and_not_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sgt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_and_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_and_not_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp sgt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sgt_swap_and_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_and_not_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp slt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_swap_and_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_and_not_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp slt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_and_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_and_not_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ugt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_and_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_and_not_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ugt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_swap_and_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_and_not_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ult i8 %y, %x
  %cmpeq = icmp ne i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_swap_and_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_and_not_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %cmp = icmp ult i8 %y, %x
  %cmpeq = icmp ne i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MAX) || (X < Y) --> X != MAX
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @slt_or_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_or_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp slt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_or_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_or_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp slt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @slt_swap_or_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_or_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sgt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_swap_or_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_or_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sgt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_or_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_or_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ult i8 %x, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_or_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_or_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ult i8 %x, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_swap_or_not_max(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_or_not_max(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ugt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_swap_or_not_max_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_or_not_max_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp ugt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MIN) || (X > Y) --> X != MIN
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sgt_or_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_or_not_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sgt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_or_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_or_not_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp sgt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sgt_swap_or_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_or_not_min(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp slt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_swap_or_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_or_not_min_commute(
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %cmp = icmp slt i8 %y, %x
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_or_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_or_not_min(
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 0
; CHECK-NEXT:    ret i1 [[CMPEQ]]
;
  %cmp = icmp ugt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_or_not_min_commute(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_or_not_min_commute(
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 0
; CHECK-NEXT:    ret i1 [[CMPEQ]]
;
  %cmp = icmp ugt i8 %x, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_swap_or_not_min(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_or_not_min(
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X:%.*]], 0
; CHECK-NEXT:    ret i1 [[CMPEQ]]
;
  %cmp = icmp ult i8 %y, %x
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_swap_or_not_min_commute(i823 %x, i823 %y)  {
; CHECK-LABEL: @ugt_swap_or_not_min_commute(
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i823 [[X:%.*]], 0
; CHECK-NEXT:    ret i1 [[CMPEQ]]
;
  %cmp = icmp ult i823 %y, %x
  %cmpeq = icmp ne i823 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MIN) && (!X < Y) --> false
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @slt_and_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_and_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define <2 x i1> @slt_and_max_commute_not_op(<2 x i8> %x, <2 x i8> %y)  {
; CHECK-LABEL: @slt_and_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor <2 x i8> [[X:%.*]], <i8 -1, i8 -1>
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt <2 x i8> [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq <2 x i8> [[X]], <i8 -128, i8 -128>
; CHECK-NEXT:    [[R:%.*]] = and <2 x i1> [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret <2 x i1> [[R]]
;
  %notx = xor <2 x i8> %x, <i8 -1, i8 -1>
  %cmp = icmp slt <2 x i8> %notx, %y
  %cmpeq = icmp eq <2 x i8> %x, <i8 128, i8 128>
  %r = and <2 x i1> %cmpeq, %cmp
  ret <2 x i1> %r
}

define i1 @slt_swap_and_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_and_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_swap_and_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_and_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_and_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_and_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_and_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_and_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_swap_and_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_and_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_swap_and_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_and_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MAX) && (!X > Y) --> false
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sgt_and_min_not_op(i9 %x, i9 %y)  {
; CHECK-LABEL: @sgt_and_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i9 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i9 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i9 [[X]], 255
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i9 %x, -1
  %cmp = icmp sgt i9 %notx, %y
  %cmpeq = icmp eq i9 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_and_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_and_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sgt_swap_and_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_and_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_swap_and_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_and_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_and_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_and_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_and_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_and_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_swap_and_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_and_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_swap_and_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_and_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MIN) || (!X >= Y) --> true
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sge_or_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_or_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_or_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_or_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sge_swap_or_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_or_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_swap_or_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_or_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_or_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_or_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_or_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_or_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_swap_or_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_or_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_swap_or_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_or_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MAX) || (!X <= Y) --> true
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sle_or_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_or_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_or_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_or_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sle_swap_or_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_or_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_swap_or_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_or_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_or_not_min_not_op(i427 %x, i427 %y)  {
; CHECK-LABEL: @ule_or_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i427 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i427 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i427 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i427 %x, -1
  %cmp = icmp ule i427 %notx, %y
  %cmpeq = icmp ne i427 %x, -1
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_or_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_or_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_swap_or_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_or_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_swap_or_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_or_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MIN) && (!X >= Y) --> X == MIN
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sge_and_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_and_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_and_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_and_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sge_swap_and_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_and_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_swap_and_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_and_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_and_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_and_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_and_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_and_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_swap_and_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_and_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_swap_and_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_and_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MIN) && (!X <= Y) --> X == MIN
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sle_and_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_and_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_and_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_and_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sle_swap_and_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_and_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_swap_and_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_and_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_and_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_and_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_and_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_and_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_swap_and_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_and_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_swap_and_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_and_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp eq i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = and i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MIN) || (!X >= Y) --> !X >= Y
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sge_or_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_or_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_or_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_or_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sge_swap_or_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_or_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sge_swap_or_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sge_swap_or_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_or_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_or_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_or_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_or_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @uge_swap_or_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_or_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @uge_swap_or_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @uge_swap_or_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X == MAX) || (!X <= Y) --> !X <= Y
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sle_or_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_or_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_or_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_or_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sle i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sle_swap_or_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_or_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sle_swap_or_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sle_swap_or_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sge i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_or_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_or_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_or_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_or_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ule i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ule i8 %notx, %y
  %cmpeq = icmp eq i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ule_swap_or_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_or_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ule_swap_or_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ule_swap_or_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp uge i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp uge i8 %y, %notx
  %cmpeq = icmp eq i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MIN) && (!X < Y) --> !X < Y
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @slt_and_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_and_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_and_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_and_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @slt_swap_and_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_and_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 128
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_swap_and_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_and_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 128
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_and_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_and_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_and_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_and_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_swap_and_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_and_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 0
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_swap_and_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_and_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 0
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MAX) && (!X > Y) --> !X > Y
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sgt_and_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_and_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_and_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_and_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sgt_swap_and_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_and_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 127
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_swap_and_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_and_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 127
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_and_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_and_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_and_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_and_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_swap_and_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_and_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 255
  %r = and i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_swap_and_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_and_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 255
  %r = and i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MIN) || (!X < Y) --> X != MIN
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @slt_or_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_or_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_or_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_or_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @slt_swap_or_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_or_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @slt_swap_or_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @slt_swap_or_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -128
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 128
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_or_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_or_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_or_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_or_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ult_swap_or_not_max_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_or_not_max_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ult_swap_or_not_max_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ult_swap_or_not_max_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 0
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 0
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; (X != MAX) || (!X > Y) --> X != MAX
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define i1 @sgt_or_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_or_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_or_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_or_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp sgt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @sgt_swap_or_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_or_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @sgt_swap_or_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @sgt_swap_or_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], 127
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp slt i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 127
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_or_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_or_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_or_not_min_commute_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_or_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i8 [[NOTX]], [[Y:%.*]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ugt i8 %notx, %y
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}

define i1 @ugt_swap_or_not_min_not_op(i8 %x, i8 %y)  {
; CHECK-LABEL: @ugt_swap_or_not_min_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i8 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i8 [[X]], -1
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMP]], [[CMPEQ]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i8 %x, -1
  %cmp = icmp ult i8 %y, %notx
  %cmpeq = icmp ne i8 %x, 255
  %r = or i1 %cmp, %cmpeq
  ret i1 %r
}

define i1 @ugt_swap_or_not_min_commute_not_op(i823 %x, i823 %y)  {
; CHECK-LABEL: @ugt_swap_or_not_min_commute_not_op(
; CHECK-NEXT:    [[NOTX:%.*]] = xor i823 [[X:%.*]], -1
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i823 [[Y:%.*]], [[NOTX]]
; CHECK-NEXT:    [[CMPEQ:%.*]] = icmp ne i823 [[X]], 255
; CHECK-NEXT:    [[R:%.*]] = or i1 [[CMPEQ]], [[CMP]]
; CHECK-NEXT:    ret i1 [[R]]
;
  %notx = xor i823 %x, -1
  %cmp = icmp ult i823 %y, %notx
  %cmpeq = icmp ne i823 %x, 255
  %r = or i1 %cmpeq, %cmp
  ret i1 %r
}
