Skip to content

Commit dc2cfd0

Browse files
committed
[CVP] Add additional sdiv tests (NFC)
1 parent 5967375 commit dc2cfd0

File tree

1 file changed

+78
-0
lines changed
  • llvm/test/Transforms/CorrelatedValuePropagation

1 file changed

+78
-0
lines changed

llvm/test/Transforms/CorrelatedValuePropagation/sdiv.ll

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,3 +632,81 @@ entry:
632632
%div = sdiv exact i64 %x, %y
633633
ret i64 %div
634634
}
635+
636+
define void @sdiv_zero(ptr %p, i32 %arg) {
637+
; CHECK-LABEL: @sdiv_zero(
638+
; CHECK-NEXT: [[ADD:%.*]] = add i32 [[ARG:%.*]], 5
639+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[ADD]], 11
640+
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]])
641+
; CHECK-NEXT: [[DIV_LHS_TRUNC:%.*]] = trunc i32 [[ARG]] to i8
642+
; CHECK-NEXT: [[DIV1:%.*]] = sdiv i8 [[DIV_LHS_TRUNC]], 6
643+
; CHECK-NEXT: [[DIV_SEXT:%.*]] = sext i8 [[DIV1]] to i32
644+
; CHECK-NEXT: store i32 [[DIV_SEXT]], ptr [[P:%.*]], align 4
645+
; CHECK-NEXT: ret void
646+
;
647+
%add = add i32 %arg, 5
648+
%cmp = icmp ult i32 %add, 11
649+
call void @llvm.assume(i1 %cmp)
650+
%div = sdiv i32 %arg, 6
651+
store i32 %div, ptr %p
652+
ret void
653+
}
654+
655+
define void @sdiv_not_zero(ptr %p, i32 %arg) {
656+
; CHECK-LABEL: @sdiv_not_zero(
657+
; CHECK-NEXT: [[ADD:%.*]] = add i32 [[ARG:%.*]], 5
658+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[ADD]], 12
659+
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]])
660+
; CHECK-NEXT: [[DIV_LHS_TRUNC:%.*]] = trunc i32 [[ARG]] to i8
661+
; CHECK-NEXT: [[DIV1:%.*]] = sdiv i8 [[DIV_LHS_TRUNC]], 6
662+
; CHECK-NEXT: [[DIV_SEXT:%.*]] = sext i8 [[DIV1]] to i32
663+
; CHECK-NEXT: store i32 [[DIV_SEXT]], ptr [[P:%.*]], align 4
664+
; CHECK-NEXT: ret void
665+
;
666+
%add = add i32 %arg, 5
667+
%cmp = icmp ult i32 %add, 12
668+
call void @llvm.assume(i1 %cmp)
669+
%div = sdiv i32 %arg, 6
670+
store i32 %div, ptr %p
671+
ret void
672+
}
673+
674+
define void @sdiv_pos(ptr %p, i32 %arg) {
675+
; CHECK-LABEL: @sdiv_pos(
676+
; CHECK-NEXT: [[ADD:%.*]] = add i32 [[ARG:%.*]], -12
677+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[ADD]], 6
678+
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]])
679+
; CHECK-NEXT: [[DIV1_LHS_TRUNC:%.*]] = trunc i32 [[ARG]] to i8
680+
; CHECK-NEXT: [[DIV12:%.*]] = udiv i8 [[DIV1_LHS_TRUNC]], 6
681+
; CHECK-NEXT: [[DIV1_ZEXT:%.*]] = zext i8 [[DIV12]] to i32
682+
; CHECK-NEXT: store i32 [[DIV1_ZEXT]], ptr [[P:%.*]], align 4
683+
; CHECK-NEXT: ret void
684+
;
685+
%add = add i32 %arg, -12
686+
%cmp = icmp ult i32 %add, 6
687+
call void @llvm.assume(i1 %cmp)
688+
%div = sdiv i32 %arg, 6
689+
store i32 %div, ptr %p
690+
ret void
691+
}
692+
693+
define void @sdiv_neg(ptr %p, i32 %arg) {
694+
; CHECK-LABEL: @sdiv_neg(
695+
; CHECK-NEXT: [[ADD:%.*]] = add i32 [[ARG:%.*]], 17
696+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[ADD]], 6
697+
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]])
698+
; CHECK-NEXT: [[ARG_NONNEG:%.*]] = sub i32 0, [[ARG]]
699+
; CHECK-NEXT: [[DIV1_LHS_TRUNC:%.*]] = trunc i32 [[ARG_NONNEG]] to i8
700+
; CHECK-NEXT: [[DIV12:%.*]] = udiv i8 [[DIV1_LHS_TRUNC]], 6
701+
; CHECK-NEXT: [[DIV1_ZEXT:%.*]] = zext i8 [[DIV12]] to i32
702+
; CHECK-NEXT: [[DIV1_NEG:%.*]] = sub i32 0, [[DIV1_ZEXT]]
703+
; CHECK-NEXT: store i32 [[DIV1_NEG]], ptr [[P:%.*]], align 4
704+
; CHECK-NEXT: ret void
705+
;
706+
%add = add i32 %arg, 17
707+
%cmp = icmp ult i32 %add, 6
708+
call void @llvm.assume(i1 %cmp)
709+
%div = sdiv i32 %arg, 6
710+
store i32 %div, ptr %p
711+
ret void
712+
}

0 commit comments

Comments
 (0)