@@ -85,6 +85,34 @@ for.body: ; preds = %for.body.preheader,
8585 br i1 %exitcond , label %for.body , label %for.cond.cleanup.loopexit , !llvm.loop !3
8686}
8787
88+ ; LOOP-UNROLL-LABEL: Loop Unroll: F[pragma_unroll_count2] Loop %
89+ ; LOOP-UNROLL-NEXT: Loop Size = 4
90+ ; LOOP-UNROLL-NEXT: Exiting block %: TripCount=0, TripMultiple=1, BreakoutTrip=1
91+ ; LOOP-UNROLL-NEXT: Trying runtime unrolling on Loop:
92+ ; LOOP-UNROLL-NEXT: Loop at depth 1 containing: %2<header><exiting>,%5<latch>
93+ ; LOOP-UNROLL-NEXT: Using epilog remainder.
94+ ; LOOP-UNROLL-NEXT: Loop latch not terminated by a conditional branch.
95+ ; LOOP-UNROLL-NEXT: UNROLLING loop % by 5!
96+
97+ ; LOOP-UNROLL-FULL-LABEL: Loop Unroll: F[pragma_unroll_count2] Loop %
98+ ; LOOP-UNROLL-FULL-NEXT: Loop Size = 4
99+ ; LOOP-UNROLL-FULL-NEXT: Not attempting partial/runtime unroll in FullLoopUnroll
100+ define void @pragma_unroll_count2 (i64 %0 ) {
101+ br label %2
102+
103+ 2 : ; preds = %5, %1
104+ %3 = phi i64 [ 0 , %1 ], [ %6 , %5 ]
105+ %4 = icmp ult i64 %3 , %0
106+ br i1 %4 , label %5 , label %7
107+
108+ 5 : ; preds = %2
109+ %6 = add i64 %3 , 8
110+ br label %2 , !llvm.loop !3
111+
112+ 7 : ; preds = %2
113+ ret void
114+ }
115+
88116; LOOP-UNROLL: llvm.loop.unroll.disable
89117; LOOP-UNROLL-FULL: llvm.loop.unroll.enable
90118!0 = !{!"llvm.loop.unroll.enable" }
0 commit comments