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

define i8 @test0(i8 %a) {
; CHECK-LABEL: @test0(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[A:%.*]], 3
; CHECK-NEXT:    br i1 [[CMP]], label [[BB:%.*]], label [[EXIT:%.*]]
; CHECK:       bb:
; CHECK-NEXT:    [[MUL:%.*]] = mul nuw nsw i8 [[A]], 50
; CHECK-NEXT:    ret i8 [[MUL]]
; CHECK:       exit:
; CHECK-NEXT:    ret i8 0
;
entry:
  %cmp = icmp ult i8 %a, 3
  br i1 %cmp, label %bb, label %exit

bb:
  %mul = mul i8 %a, 50
  ret i8 %mul

exit:
  ret i8 0
}

define i8 @test1(i8 %a) {
; CHECK-LABEL: @test1(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[A:%.*]], 4
; CHECK-NEXT:    br i1 [[CMP]], label [[BB:%.*]], label [[EXIT:%.*]]
; CHECK:       bb:
; CHECK-NEXT:    [[MUL:%.*]] = mul nuw i8 [[A]], 50
; CHECK-NEXT:    ret i8 [[MUL]]
; CHECK:       exit:
; CHECK-NEXT:    ret i8 0
;
entry:
  %cmp = icmp ult i8 %a, 4
  br i1 %cmp, label %bb, label %exit

bb:
  %mul = mul i8 %a, 50
  ret i8 %mul

exit:
  ret i8 0
}

define i8 @test2(i8 %a) {
; CHECK-LABEL: @test2(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[A:%.*]], 6
; CHECK-NEXT:    br i1 [[CMP]], label [[BB:%.*]], label [[EXIT:%.*]]
; CHECK:       bb:
; CHECK-NEXT:    [[MUL:%.*]] = mul nuw i8 [[A]], 50
; CHECK-NEXT:    ret i8 [[MUL]]
; CHECK:       exit:
; CHECK-NEXT:    ret i8 0
;
entry:
  %cmp = icmp ult i8 %a, 6
  br i1 %cmp, label %bb, label %exit

bb:
  %mul = mul i8 %a, 50
  ret i8 %mul

exit:
  ret i8 0
}

define i8 @test3(i8 %a) {
; CHECK-LABEL: @test3(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[A:%.*]], 7
; CHECK-NEXT:    br i1 [[CMP]], label [[BB:%.*]], label [[EXIT:%.*]]
; CHECK:       bb:
; CHECK-NEXT:    [[MUL:%.*]] = mul i8 [[A]], 50
; CHECK-NEXT:    ret i8 [[MUL]]
; CHECK:       exit:
; CHECK-NEXT:    ret i8 0
;
entry:
  %cmp = icmp ult i8 %a, 7
  br i1 %cmp, label %bb, label %exit

bb:
  %mul = mul i8 %a, 50
  ret i8 %mul

exit:
  ret i8 0
}

define i8 @test4(i8 %a) {
; CHECK-LABEL: @test4(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP1:%.*]] = icmp slt i8 [[A:%.*]], 3
; CHECK-NEXT:    [[CMP2:%.*]] = icmp sgt i8 [[A]], -3
; CHECK-NEXT:    [[COND:%.*]] = and i1 [[CMP1]], [[CMP2]]
; CHECK-NEXT:    br i1 [[COND]], label [[BB:%.*]], label [[EXIT:%.*]]
; CHECK:       bb:
; CHECK-NEXT:    [[MUL:%.*]] = mul nsw i8 [[A]], 50
; CHECK-NEXT:    ret i8 [[MUL]]
; CHECK:       exit:
; CHECK-NEXT:    ret i8 0
;
entry:
  %cmp1 = icmp slt i8 %a, 3
  %cmp2 = icmp sgt i8 %a, -3
  %cond = and i1 %cmp1, %cmp2
  br i1 %cond, label %bb, label %exit

bb:
  %mul = mul i8 %a, 50
  ret i8 %mul

exit:
  ret i8 0
}

define i8 @test5(i8 %a) {
; CHECK-LABEL: @test5(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP1:%.*]] = icmp slt i8 [[A:%.*]], 3
; CHECK-NEXT:    [[CMP2:%.*]] = icmp sgt i8 [[A]], -4
; CHECK-NEXT:    [[COND:%.*]] = and i1 [[CMP1]], [[CMP2]]
; CHECK-NEXT:    br i1 [[COND]], label [[BB:%.*]], label [[EXIT:%.*]]
; CHECK:       bb:
; CHECK-NEXT:    [[MUL:%.*]] = mul i8 [[A]], 50
; CHECK-NEXT:    ret i8 [[MUL]]
; CHECK:       exit:
; CHECK-NEXT:    ret i8 0
;
entry:
  %cmp1 = icmp slt i8 %a, 3
  %cmp2 = icmp sgt i8 %a, -4
  %cond = and i1 %cmp1, %cmp2
  br i1 %cond, label %bb, label %exit

bb:
  %mul = mul i8 %a, 50
  ret i8 %mul

exit:
  ret i8 0
}

define i8 @test6(i8 %a) {
; CHECK-LABEL: @test6(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CMP1:%.*]] = icmp slt i8 [[A:%.*]], 4
; CHECK-NEXT:    [[CMP2:%.*]] = icmp sgt i8 [[A]], -3
; CHECK-NEXT:    [[COND:%.*]] = and i1 [[CMP1]], [[CMP2]]
; CHECK-NEXT:    br i1 [[COND]], label [[BB:%.*]], label [[EXIT:%.*]]
; CHECK:       bb:
; CHECK-NEXT:    [[MUL:%.*]] = mul i8 [[A]], 50
; CHECK-NEXT:    ret i8 [[MUL]]
; CHECK:       exit:
; CHECK-NEXT:    ret i8 0
;
entry:
  %cmp1 = icmp slt i8 %a, 4
  %cmp2 = icmp sgt i8 %a, -3
  %cond = and i1 %cmp1, %cmp2
  br i1 %cond, label %bb, label %exit

bb:
  %mul = mul i8 %a, 50
  ret i8 %mul

exit:
  ret i8 0
}

define i1 @nuw_range1(i8 %b) {
; CHECK-LABEL: @nuw_range1(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[C:%.*]] = add nuw nsw i8 [[B:%.*]], 1
; CHECK-NEXT:    [[MUL:%.*]] = mul nuw i8 [[C]], 4
; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i8 [[MUL]], 0
; CHECK-NEXT:    ret i1 [[CMP]]
;
entry:
  %c = add nuw nsw i8 %b, 1
  %mul = mul nuw i8 %c, 4
  %cmp = icmp eq i8 %mul, 0
  ret i1 %cmp
}

define i1 @nuw_range2(i8 %b) {
; CHECK-LABEL: @nuw_range2(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[C:%.*]] = add nuw nsw i8 [[B:%.*]], 3
; CHECK-NEXT:    [[MUL:%.*]] = mul nuw i8 [[C]], 4
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[MUL]], 2
; CHECK-NEXT:    ret i1 [[CMP]]
;
entry:
  %c = add nuw nsw i8 %b, 3
  %mul = mul nuw i8 %c, 4
  %cmp = icmp ult i8 %mul, 2
  ret i1 %cmp
}

define i1 @nsw_range1(i8 %b) {
; CHECK-LABEL: @nsw_range1(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[C:%.*]] = add nuw nsw i8 [[B:%.*]], -3
; CHECK-NEXT:    [[MUL:%.*]] = mul nsw i8 [[C]], 4
; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i8 [[C]], [[MUL]]
; CHECK-NEXT:    ret i1 [[CMP]]
;
entry:
  %c = add nuw nsw i8 %b, -3
  %mul = mul nsw i8 %c, 4
  %cmp = icmp slt i8 %c, %mul
  ret i1 %cmp
}
