Skip to content

Commit 28439a1

Browse files
committed
[SCEV] Add tests with non-power-of-2 steps for #108777.
Adds extra tests for #108777.
1 parent 100fd0c commit 28439a1

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

llvm/test/Analysis/ScalarEvolution/max-backedge-taken-count-guard-info.ll

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1595,6 +1595,59 @@ exit:
15951595
ret i32 0
15961596
}
15971597

1598+
define i32 @ptr_induction_ult_3_step_6(ptr %a, ptr %b) {
1599+
; CHECK-LABEL: 'ptr_induction_ult_3_step_6'
1600+
; CHECK-NEXT: Classifying expressions for: @ptr_induction_ult_3_step_6
1601+
; CHECK-NEXT: %ptr.iv = phi ptr [ %ptr.iv.next, %loop ], [ %a, %entry ]
1602+
; CHECK-NEXT: --> {%a,+,6}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1603+
; CHECK-NEXT: %ptr.iv.next = getelementptr i8, ptr %ptr.iv, i64 6
1604+
; CHECK-NEXT: --> {(6 + %a),+,6}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1605+
; CHECK-NEXT: Determining loop execution counts for: @ptr_induction_ult_3_step_6
1606+
; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
1607+
; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
1608+
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
1609+
;
1610+
entry:
1611+
%cmp.6 = icmp ult ptr %a, %b
1612+
br i1 %cmp.6, label %loop, label %exit
1613+
1614+
loop:
1615+
%ptr.iv = phi ptr [ %ptr.iv.next, %loop ], [ %a, %entry ]
1616+
%ptr.iv.next = getelementptr i8, ptr %ptr.iv, i64 6
1617+
%exitcond = icmp eq ptr %ptr.iv, %b
1618+
br i1 %exitcond, label %exit, label %loop
1619+
1620+
exit:
1621+
ret i32 0
1622+
}
1623+
1624+
define i32 @ptr_induction_ult_3_step_7(ptr %a, ptr %b) {
1625+
; CHECK-LABEL: 'ptr_induction_ult_3_step_7'
1626+
; CHECK-NEXT: Classifying expressions for: @ptr_induction_ult_3_step_7
1627+
; CHECK-NEXT: %ptr.iv = phi ptr [ %ptr.iv.next, %loop ], [ %a, %entry ]
1628+
; CHECK-NEXT: --> {%a,+,7}<%loop> U: full-set S: full-set Exits: ((-1 * (ptrtoint ptr %a to i64)) + (ptrtoint ptr %b to i64) + %a) LoopDispositions: { %loop: Computable }
1629+
; CHECK-NEXT: %ptr.iv.next = getelementptr i8, ptr %ptr.iv, i64 7
1630+
; CHECK-NEXT: --> {(7 + %a),+,7}<%loop> U: full-set S: full-set Exits: (7 + (-1 * (ptrtoint ptr %a to i64)) + (ptrtoint ptr %b to i64) + %a) LoopDispositions: { %loop: Computable }
1631+
; CHECK-NEXT: Determining loop execution counts for: @ptr_induction_ult_3_step_7
1632+
; CHECK-NEXT: Loop %loop: backedge-taken count is ((7905747460161236407 * (ptrtoint ptr %b to i64)) + (-7905747460161236407 * (ptrtoint ptr %a to i64)))
1633+
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i64 -1
1634+
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is ((7905747460161236407 * (ptrtoint ptr %b to i64)) + (-7905747460161236407 * (ptrtoint ptr %a to i64)))
1635+
; CHECK-NEXT: Loop %loop: Trip multiple is 1
1636+
;
1637+
entry:
1638+
%cmp.6 = icmp ult ptr %a, %b
1639+
br i1 %cmp.6, label %loop, label %exit
1640+
1641+
loop:
1642+
%ptr.iv = phi ptr [ %ptr.iv.next, %loop ], [ %a, %entry ]
1643+
%ptr.iv.next = getelementptr i8, ptr %ptr.iv, i64 7
1644+
%exitcond = icmp eq ptr %ptr.iv, %b
1645+
br i1 %exitcond, label %exit, label %loop
1646+
1647+
exit:
1648+
ret i32 0
1649+
}
1650+
15981651
define void @ptr_induction_eq_1(ptr %a, ptr %b) {
15991652
; CHECK-LABEL: 'ptr_induction_eq_1'
16001653
; CHECK-NEXT: Classifying expressions for: @ptr_induction_eq_1

0 commit comments

Comments
 (0)