@@ -1709,37 +1709,23 @@ define void @ptr_induction_early_exit_eq_1_align_assumption_1(ptr %a, ptr %b, pt
1709
1709
; CHECK-LABEL: 'ptr_induction_early_exit_eq_1_align_assumption_1'
1710
1710
; CHECK-NEXT: Classifying expressions for: @ptr_induction_early_exit_eq_1_align_assumption_1
1711
1711
; CHECK-NEXT: %a_ = load ptr, ptr %a, align 8
1712
- ; CHECK-NEXT: --> %a_ U: full-set S: full-set
1712
+ ; CHECK-NEXT: --> %a_ U: [0,-7) S: [-9223372036854775808,9223372036854775801)
1713
1713
; CHECK-NEXT: %b_ = load ptr, ptr %b, align 8
1714
- ; CHECK-NEXT: --> %b_ U: full-set S: full-set
1714
+ ; CHECK-NEXT: --> %b_ U: [0,-7) S: [-9223372036854775808,9223372036854775801)
1715
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 }
1716
+ ; CHECK-NEXT: --> {%a_,+,8}<nuw><%loop> U: [0,-7) S: [-9223372036854775808,9223372036854775801) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1717
1717
; CHECK-NEXT: %ld1 = load ptr, ptr %ptr.iv, align 8
1718
1718
; CHECK-NEXT: --> %ld1 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Variant }
1719
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 }
1720
+ ; CHECK-NEXT: --> {(8 + %a_),+,8}<nw><%loop> U: [0,-7) S: [-9223372036854775808,9223372036854775801) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1721
1721
; CHECK-NEXT: Determining loop execution counts for: @ptr_induction_early_exit_eq_1_align_assumption_1
1722
1722
; CHECK-NEXT: Loop %loop: <multiple exits> Unpredictable backedge-taken count.
1723
1723
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
1724
- ; CHECK-NEXT: exit count for loop.inc: ***COULDNOTCOMPUTE***
1725
- ; CHECK-NEXT: predicated exit count for loop.inc: ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1726
- ; CHECK-NEXT: Predicates:
1727
- ; CHECK-NEXT: Equal predicate: (zext i3 ((trunc i64 (ptrtoint ptr %b_ to i64) to i3) + (-1 * (trunc i64 (ptrtoint ptr %a_ to i64) to i3))) to i64) == 0
1728
- ; CHECK-EMPTY:
1729
- ; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
1730
- ; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
1724
+ ; CHECK-NEXT: exit count for loop.inc: ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1725
+ ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i64 2305843009213693951
1726
+ ; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1731
1727
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
1732
- ; CHECK-NEXT: symbolic max exit count for loop.inc: ***COULDNOTCOMPUTE***
1733
- ; CHECK-NEXT: predicated symbolic max exit count for loop.inc: ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1734
- ; CHECK-NEXT: Predicates:
1735
- ; CHECK-NEXT: Equal predicate: (zext i3 ((trunc i64 (ptrtoint ptr %b_ to i64) to i3) + (-1 * (trunc i64 (ptrtoint ptr %a_ to i64) to i3))) to i64) == 0
1736
- ; CHECK-EMPTY:
1737
- ; CHECK-NEXT: Loop %loop: Predicated constant max backedge-taken count is i64 2305843009213693951
1738
- ; CHECK-NEXT: Predicates:
1739
- ; CHECK-NEXT: Equal predicate: (zext i3 ((trunc i64 (ptrtoint ptr %b_ to i64) to i3) + (-1 * (trunc i64 (ptrtoint ptr %a_ to i64) to i3))) to i64) == 0
1740
- ; CHECK-NEXT: Loop %loop: Predicated symbolic max backedge-taken count is ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1741
- ; CHECK-NEXT: Predicates:
1742
- ; CHECK-NEXT: Equal predicate: (zext i3 ((trunc i64 (ptrtoint ptr %b_ to i64) to i3) + (-1 * (trunc i64 (ptrtoint ptr %a_ to i64) to i3))) to i64) == 0
1728
+ ; CHECK-NEXT: symbolic max exit count for loop.inc: ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1743
1729
;
1744
1730
entry:
1745
1731
%a_ = load ptr , ptr %a
@@ -1768,37 +1754,23 @@ define void @ptr_induction_early_exit_eq_1_align_assumption_2(ptr %a, ptr %b, pt
1768
1754
; CHECK-LABEL: 'ptr_induction_early_exit_eq_1_align_assumption_2'
1769
1755
; CHECK-NEXT: Classifying expressions for: @ptr_induction_early_exit_eq_1_align_assumption_2
1770
1756
; CHECK-NEXT: %a_ = load ptr, ptr %a, align 8
1771
- ; CHECK-NEXT: --> %a_ U: full-set S: full-set
1757
+ ; CHECK-NEXT: --> %a_ U: [0,-7) S: [-9223372036854775808,9223372036854775801)
1772
1758
; CHECK-NEXT: %b_ = load ptr, ptr %b, align 8
1773
- ; CHECK-NEXT: --> %b_ U: full-set S: full-set
1759
+ ; CHECK-NEXT: --> %b_ U: [0,-7) S: [-9223372036854775808,9223372036854775801)
1774
1760
; CHECK-NEXT: %ptr.iv = phi ptr [ %ptr.iv.next, %loop.inc ], [ %a_, %entry ]
1775
- ; CHECK-NEXT: --> {%a_,+,8}<nuw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1761
+ ; CHECK-NEXT: --> {%a_,+,8}<nuw><%loop> U: [0,-7) S: [-9223372036854775808,9223372036854775801) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1776
1762
; CHECK-NEXT: %ld1 = load ptr, ptr %ptr.iv, align 8
1777
1763
; CHECK-NEXT: --> %ld1 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Variant }
1778
1764
; CHECK-NEXT: %ptr.iv.next = getelementptr inbounds i8, ptr %ptr.iv, i64 8
1779
- ; CHECK-NEXT: --> {(8 + %a_),+,8}<nw><%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1765
+ ; CHECK-NEXT: --> {(8 + %a_),+,8}<nw><%loop> U: [0,-7) S: [-9223372036854775808,9223372036854775801) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
1780
1766
; CHECK-NEXT: Determining loop execution counts for: @ptr_induction_early_exit_eq_1_align_assumption_2
1781
1767
; CHECK-NEXT: Loop %loop: <multiple exits> Unpredictable backedge-taken count.
1782
1768
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
1783
- ; CHECK-NEXT: exit count for loop.inc: ***COULDNOTCOMPUTE***
1784
- ; CHECK-NEXT: predicated exit count for loop.inc: ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1785
- ; CHECK-NEXT: Predicates:
1786
- ; CHECK-NEXT: Equal predicate: (zext i3 ((trunc i64 (ptrtoint ptr %b_ to i64) to i3) + (-1 * (trunc i64 (ptrtoint ptr %a_ to i64) to i3))) to i64) == 0
1787
- ; CHECK-EMPTY:
1788
- ; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
1789
- ; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
1769
+ ; CHECK-NEXT: exit count for loop.inc: ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1770
+ ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i64 2305843009213693951
1771
+ ; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1790
1772
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
1791
- ; CHECK-NEXT: symbolic max exit count for loop.inc: ***COULDNOTCOMPUTE***
1792
- ; CHECK-NEXT: predicated symbolic max exit count for loop.inc: ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1793
- ; CHECK-NEXT: Predicates:
1794
- ; CHECK-NEXT: Equal predicate: (zext i3 ((trunc i64 (ptrtoint ptr %b_ to i64) to i3) + (-1 * (trunc i64 (ptrtoint ptr %a_ to i64) to i3))) to i64) == 0
1795
- ; CHECK-EMPTY:
1796
- ; CHECK-NEXT: Loop %loop: Predicated constant max backedge-taken count is i64 2305843009213693951
1797
- ; CHECK-NEXT: Predicates:
1798
- ; CHECK-NEXT: Equal predicate: (zext i3 ((trunc i64 (ptrtoint ptr %b_ to i64) to i3) + (-1 * (trunc i64 (ptrtoint ptr %a_ to i64) to i3))) to i64) == 0
1799
- ; CHECK-NEXT: Loop %loop: Predicated symbolic max backedge-taken count is ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1800
- ; CHECK-NEXT: Predicates:
1801
- ; CHECK-NEXT: Equal predicate: (zext i3 ((trunc i64 (ptrtoint ptr %b_ to i64) to i3) + (-1 * (trunc i64 (ptrtoint ptr %a_ to i64) to i3))) to i64) == 0
1773
+ ; CHECK-NEXT: symbolic max exit count for loop.inc: ((-8 + (-1 * (ptrtoint ptr %a_ to i64)) + (ptrtoint ptr %b_ to i64)) /u 8)
1802
1774
;
1803
1775
entry:
1804
1776
%a_ = load ptr , ptr %a
0 commit comments