@@ -1568,86 +1568,6 @@ exit:
1568
1568
ret i32 0
1569
1569
}
1570
1570
1571
-
1572
- define i32 @ptr_induction_ult_2 (ptr %a , ptr %b ) {
1573
- ; CHECK-LABEL: 'ptr_induction_ult_2'
1574
- ; CHECK-NEXT: Classifying expressions for: @ptr_induction_ult_2
1575
- ; CHECK-NEXT: %ptr.iv = phi ptr [ %ptr.iv.next, %loop ], [ %a, %entry ]
1576
- ; CHECK-NEXT: --> {%a,+,4}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1577
- ; CHECK-NEXT: %ptr.iv.next = getelementptr i32, ptr %ptr.iv, i64 1
1578
- ; CHECK-NEXT: --> {(4 + %a),+,4}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1579
- ; CHECK-NEXT: Determining loop execution counts for: @ptr_induction_ult_2
1580
- ; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
1581
- ; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
1582
- ; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
1583
- ;
1584
- entry:
1585
- %cmp.6 = icmp ult ptr %a , %b
1586
- br i1 %cmp.6 , label %loop , label %exit
1587
-
1588
- loop:
1589
- %ptr.iv = phi ptr [ %ptr.iv.next , %loop ], [ %a , %entry ]
1590
- %ptr.iv.next = getelementptr i32 , ptr %ptr.iv , i64 1
1591
- %exitcond = icmp eq ptr %ptr.iv , %b
1592
- br i1 %exitcond , label %exit , label %loop
1593
-
1594
- exit:
1595
- ret i32 0
1596
- }
1597
-
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
-
1651
1571
define void @ptr_induction_eq_1 (ptr %a , ptr %b ) {
1652
1572
; CHECK-LABEL: 'ptr_induction_eq_1'
1653
1573
; CHECK-NEXT: Classifying expressions for: @ptr_induction_eq_1
@@ -1705,47 +1625,6 @@ exit:
1705
1625
ret void
1706
1626
}
1707
1627
1708
- ; TODO: It feels like we should be able to calculate the symbolic max
1709
- ; exit count for the loop.inc block here, in the same way as
1710
- ; ptr_induction_eq_1. The problem seems to be in howFarToZero when the
1711
- ; ControlsOnlyExit is set to false.
1712
- define void @ptr_induction_early_exit_eq_1 (ptr %a , ptr %b , ptr %c ) {
1713
- ; CHECK-LABEL: 'ptr_induction_early_exit_eq_1'
1714
- ; CHECK-NEXT: Classifying expressions for: @ptr_induction_early_exit_eq_1
1715
- ; CHECK-NEXT: %ptr.iv = phi ptr [ %ptr.iv.next, %loop.inc ], [ %a, %entry ]
1716
- ; CHECK-NEXT: --> {%a,+,8}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1717
- ; CHECK-NEXT: %ld1 = load ptr, ptr %ptr.iv, align 8
1718
- ; CHECK-NEXT: --> %ld1 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Variant }
1719
- ; CHECK-NEXT: %ptr.iv.next = getelementptr inbounds i8, ptr %ptr.iv, i64 8
1720
- ; CHECK-NEXT: --> {(8 + %a),+,8}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1721
- ; CHECK-NEXT: Determining loop execution counts for: @ptr_induction_early_exit_eq_1
1722
- ; CHECK-NEXT: Loop %loop: <multiple exits> Unpredictable backedge-taken count.
1723
- ; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
1724
- ; CHECK-NEXT: exit count for loop.inc: ***COULDNOTCOMPUTE***
1725
- ; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
1726
- ; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
1727
- ; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
1728
- ; CHECK-NEXT: symbolic max exit count for loop.inc: ***COULDNOTCOMPUTE***
1729
- ;
1730
- entry:
1731
- %cmp = icmp eq ptr %a , %b
1732
- br i1 %cmp , label %exit , label %loop
1733
-
1734
- loop:
1735
- %ptr.iv = phi ptr [ %ptr.iv.next , %loop.inc ], [ %a , %entry ]
1736
- %ld1 = load ptr , ptr %ptr.iv , align 8
1737
- %earlyexitcond = icmp eq ptr %ld1 , %c
1738
- br i1 %earlyexitcond , label %exit , label %loop.inc
1739
-
1740
- loop.inc:
1741
- %ptr.iv.next = getelementptr inbounds i8 , ptr %ptr.iv , i64 8
1742
- %exitcond = icmp eq ptr %ptr.iv.next , %b
1743
- br i1 %exitcond , label %exit , label %loop
1744
-
1745
- exit:
1746
- ret void
1747
- }
1748
-
1749
1628
define void @ptr_induction_early_exit_eq_2 (ptr %a , i64 %n , ptr %c ) {
1750
1629
; CHECK-LABEL: 'ptr_induction_early_exit_eq_2'
1751
1630
; CHECK-NEXT: Classifying expressions for: @ptr_induction_early_exit_eq_2
@@ -1786,7 +1665,6 @@ exit:
1786
1665
ret void
1787
1666
}
1788
1667
1789
-
1790
1668
define void @gep_addrec_nw (ptr %a ) {
1791
1669
; CHECK-LABEL: 'gep_addrec_nw'
1792
1670
; CHECK-NEXT: Classifying expressions for: @gep_addrec_nw
0 commit comments