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

; Fold
;   x - ((x / y) * y)
; to
;   x % y

; Also,
;   ((x / y) * y)
; can then be simplified to
;   x - (x % y)

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

define i8 @t0_basic(i8 %x, i8 %y) {
; CHECK-LABEL: @t0_basic(
; CHECK-NEXT:    [[DIV:%.*]] = udiv i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[DIV]])
; CHECK-NEXT:    [[ROUNDXDOWNTOMULTIPLEOFY:%.*]] = mul i8 [[DIV]], [[Y]]
; CHECK-NEXT:    [[REM:%.*]] = sub i8 [[X]], [[ROUNDXDOWNTOMULTIPLEOFY]]
; CHECK-NEXT:    ret i8 [[REM]]
;
  %div = udiv i8 %x, %y
  call void @use8(i8 %div)
  %roundXdownToMultipleOfY = mul i8 %div, %y
  %rem = sub i8 %x, %roundXdownToMultipleOfY
  ret i8 %rem
}

define <2 x i8> @t1_vector(<2 x i8> %x, <2 x i8> %y) {
; CHECK-LABEL: @t1_vector(
; CHECK-NEXT:    [[DIV:%.*]] = udiv <2 x i8> [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    call void @use2xi8(<2 x i8> [[DIV]])
; CHECK-NEXT:    [[ROUNDXDOWNTOMULTIPLEOFY:%.*]] = mul <2 x i8> [[DIV]], [[Y]]
; CHECK-NEXT:    [[REM:%.*]] = sub <2 x i8> [[X]], [[ROUNDXDOWNTOMULTIPLEOFY]]
; CHECK-NEXT:    ret <2 x i8> [[REM]]
;
  %div = udiv <2 x i8> %x, %y
  call void @use2xi8(<2 x i8> %div)
  %roundXdownToMultipleOfY = mul <2 x i8> %div, %y
  %rem = sub <2 x i8> %x, %roundXdownToMultipleOfY
  ret <2 x i8> %rem
}

; Extra use

define i8 @t4_extrause(i8 %x, i8 %y) {
; CHECK-LABEL: @t4_extrause(
; CHECK-NEXT:    [[DIV:%.*]] = udiv i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[DIV]])
; CHECK-NEXT:    [[ROUNDXDOWNTOMULTIPLEOFY:%.*]] = mul i8 [[DIV]], [[Y]]
; CHECK-NEXT:    call void @use8(i8 [[ROUNDXDOWNTOMULTIPLEOFY]])
; CHECK-NEXT:    [[REM:%.*]] = sub i8 [[X]], [[ROUNDXDOWNTOMULTIPLEOFY]]
; CHECK-NEXT:    ret i8 [[REM]]
;
  %div = udiv i8 %x, %y
  call void @use8(i8 %div)
  %roundXdownToMultipleOfY = mul i8 %div, %y
  call void @use8(i8 %roundXdownToMultipleOfY)
  %rem = sub i8 %x, %roundXdownToMultipleOfY
  ret i8 %rem
}

; Commutativity

declare i8 @gen8()

define i8 @t5_commutative(i8 %x) {
; CHECK-LABEL: @t5_commutative(
; CHECK-NEXT:    [[Y:%.*]] = call i8 @gen8()
; CHECK-NEXT:    [[DIV:%.*]] = udiv i8 [[X:%.*]], [[Y]]
; CHECK-NEXT:    call void @use8(i8 [[DIV]])
; CHECK-NEXT:    [[ROUNDXDOWNTOMULTIPLEOFY:%.*]] = mul i8 [[Y]], [[DIV]]
; CHECK-NEXT:    [[REM:%.*]] = sub i8 [[X]], [[ROUNDXDOWNTOMULTIPLEOFY]]
; CHECK-NEXT:    ret i8 [[REM]]
;
  %y = call i8 @gen8()
  %div = udiv i8 %x, %y
  call void @use8(i8 %div)
  %roundXdownToMultipleOfY = mul i8 %y, %div ; swapped
  %rem = sub i8 %x, %roundXdownToMultipleOfY
  ret i8 %rem
}

; Negative tests

define i8 @n6_different_x(i8 %x0, i8 %x1, i8 %y) {
; CHECK-LABEL: @n6_different_x(
; CHECK-NEXT:    [[DIV:%.*]] = udiv i8 [[X0:%.*]], [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[DIV]])
; CHECK-NEXT:    [[ROUNDXDOWNTOMULTIPLEOFY:%.*]] = mul i8 [[DIV]], [[Y]]
; CHECK-NEXT:    [[REM:%.*]] = sub i8 [[X1:%.*]], [[ROUNDXDOWNTOMULTIPLEOFY]]
; CHECK-NEXT:    ret i8 [[REM]]
;
  %div = udiv i8 %x0, %y
  call void @use8(i8 %div)
  %roundXdownToMultipleOfY = mul i8 %div, %y
  %rem = sub i8 %x1, %roundXdownToMultipleOfY
  ret i8 %rem
}

define i8 @n6_different_y(i8 %x, i8 %y0, i8 %y1) {
; CHECK-LABEL: @n6_different_y(
; CHECK-NEXT:    [[DIV:%.*]] = udiv i8 [[X:%.*]], [[Y0:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[DIV]])
; CHECK-NEXT:    [[ROUNDXDOWNTOMULTIPLEOFY:%.*]] = mul i8 [[DIV]], [[Y1:%.*]]
; CHECK-NEXT:    [[REM:%.*]] = sub i8 [[X]], [[ROUNDXDOWNTOMULTIPLEOFY]]
; CHECK-NEXT:    ret i8 [[REM]]
;
  %div = udiv i8 %x, %y0
  call void @use8(i8 %div)
  %roundXdownToMultipleOfY = mul i8 %div, %y1
  %rem = sub i8 %x, %roundXdownToMultipleOfY
  ret i8 %rem
}
