Lines Matching refs:loop
2 ; RUN: opt -S %s -passes=loop-instsimplify | FileCheck %s
3 ; RUN: opt -S %s -passes='loop-mssa(loop-instsimplify)' -verify-memoryssa | FileCheck %s
5 ; Test very basic folding and propagation occurs within a loop body. This should
6 ; collapse to the loop iteration structure and the LCSSA PHI node.
11 ; CHECK: loop:
21 br label %loop
23 loop:
24 %i = phi i32 [ 0, %entry ], [ %i.next, %loop ]
30 br i1 %i.cmp, label %loop, label %exit
33 %x.lcssa = phi i32 [ %x.and, %loop ]
37 ; Test basic loop structure that still has a simplification feed a prior PHI.
42 ; CHECK: loop:
52 br label %loop
54 loop:
55 %i = phi i32 [ 0, %entry ], [ %i.next, %loop ]
56 %x.loop = phi i32 [ %x, %entry ], [ %x.next, %loop ]
57 %x.next = add nsw i32 %x.loop, 0
60 br i1 %i.cmp, label %loop, label %exit
63 %x.lcssa = phi i32 [ %x.loop, %loop ]
72 ; CHECK: loop:
76 ; CHECK: loop.lhs:
78 ; CHECK: loop.rhs:
80 ; CHECK: loop.latch:
89 br label %loop
91 loop:
92 %i = phi i32 [ 0, %entry ], [ %i.next, %loop.latch ]
93 %x.loop = phi i32 [ %x, %entry ], [ %x.phi, %loop.latch ]
94 %x.add = add nsw i32 %x.loop, 0
96 br i1 %x.cmp, label %loop.lhs, label %loop.rhs
98 loop.lhs:
100 br label %loop.latch
102 loop.rhs:
104 br label %loop.latch
106 loop.latch:
107 %x.phi = phi i32 [ %x.l.add, %loop.lhs ], [ %x.r.sub, %loop.rhs ]
110 br i1 %i.cmp, label %loop, label %exit
113 %x.lcssa = phi i32 [ %x.loop, %loop.latch ]
117 ; Test an inner loop that is only simplified when processing the outer loop, and
118 ; an outer loop only simplified when processing the inner loop.
123 ; CHECK: loop:
126 ; CHECK: loop.inner:
131 ; CHECK: loop.latch:
140 br label %loop
142 loop:
143 %i = phi i32 [ 0, %entry ], [ %i.next, %loop.latch ]
144 %x.loop = phi i32 [ %x, %entry ], [ %x.inner.lcssa, %loop.latch ]
145 %x.add = add nsw i32 %x.loop, 0
146 br label %loop.inner
148 loop.inner:
149 %j = phi i32 [ 0, %loop ], [ %j.next, %loop.inner ]
150 %x.inner.loop = phi i32 [ %x.add, %loop ], [ %x.inner.add, %loop.inner ]
151 %x.inner.add = add nsw i32 %x.inner.loop, 0
154 br i1 %j.cmp, label %loop.inner, label %loop.latch
156 loop.latch:
157 %x.inner.lcssa = phi i32 [ %x.inner.loop, %loop.inner ]
160 br i1 %i.cmp, label %loop, label %exit
163 %x.lcssa = phi i32 [ %x.loop, %loop.latch ]