[CVP] Add additional tests for PR63330 (NFC)

This commit is contained in:
Nikita Popov 2023-06-19 17:04:49 +02:00
parent b4bb6211a5
commit bb4f4a3efe
2 changed files with 37 additions and 0 deletions

View File

@ -298,3 +298,21 @@ define i8 @large.divisor.with.overflow.v2.unbound.x(i8 %x) {
%div = udiv i8 %x, 128
ret i8 %div
}
define i8 @known_uge(i8 noundef %x) {
; CHECK-LABEL: @known_uge(
; CHECK-NEXT: [[CMP_X_UPPER:%.*]] = icmp ult i8 [[X:%.*]], 6
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_X_UPPER]])
; CHECK-NEXT: [[CMP_X_LOWER:%.*]] = icmp uge i8 [[X]], 3
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_X_LOWER]])
; CHECK-NEXT: [[DIV_CMP:%.*]] = icmp uge i8 [[X]], 3
; CHECK-NEXT: [[DIV:%.*]] = zext i1 [[DIV_CMP]] to i8
; CHECK-NEXT: ret i8 [[DIV]]
;
%cmp.x.upper = icmp ult i8 %x, 6
call void @llvm.assume(i1 %cmp.x.upper)
%cmp.x.lower = icmp uge i8 %x, 3
call void @llvm.assume(i1 %cmp.x.lower)
%div = udiv i8 %x, 3
ret i8 %div
}

View File

@ -342,3 +342,22 @@ define i1 @icmp_after_expansion(i8 noundef %x) {
%cmp = icmp eq i8 %rem, 3
ret i1 %cmp
}
define i8 @known_uge(i8 noundef %x) {
; CHECK-LABEL: @known_uge(
; CHECK-NEXT: [[CMP_X_UPPER:%.*]] = icmp ult i8 [[X:%.*]], 6
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_X_UPPER]])
; CHECK-NEXT: [[CMP_X_LOWER:%.*]] = icmp uge i8 [[X]], 3
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_X_LOWER]])
; CHECK-NEXT: [[REM_UREM:%.*]] = sub nuw i8 [[X]], 3
; CHECK-NEXT: [[REM_CMP:%.*]] = icmp ult i8 [[X]], 3
; CHECK-NEXT: [[REM:%.*]] = select i1 [[REM_CMP]], i8 [[X]], i8 [[REM_UREM]]
; CHECK-NEXT: ret i8 [[REM]]
;
%cmp.x.upper = icmp ult i8 %x, 6
call void @llvm.assume(i1 %cmp.x.upper)
%cmp.x.lower = icmp uge i8 %x, 3
call void @llvm.assume(i1 %cmp.x.lower)
%rem = urem i8 %x, 3
ret i8 %rem
}