1ea14bdb0SFlorian Hahn; REQUIRES: asserts 2*c836b895SDavid Sherwood; RUN: opt -p loop-vectorize -debug-only=loop-vectorize --disable-output -S %s 2>&1 | FileCheck %s 3ea14bdb0SFlorian Hahn 4ea14bdb0SFlorian Hahn 5ea14bdb0SFlorian Hahn; CHECK-LABEL: LV: Checking a loop in 'latch_exit_cannot_compute_btc_due_to_step' 6ea14bdb0SFlorian Hahn; CHECK: LV: Did not find one integer induction var. 7b0697dc1SFlorian Hahn; CHECK-NEXT: LV: Not vectorizing: Cannot vectorize uncountable loop. 8ea14bdb0SFlorian Hahn; CHECK-NEXT: LV: Interleaving disabled by the pass manager 9ea14bdb0SFlorian Hahn; CHECK-NEXT: LV: Not vectorizing: Cannot prove legality. 10ea14bdb0SFlorian Hahn 11ea14bdb0SFlorian Hahn; CHECK-LABEL: LV: Checking a loop in 'header_exit_cannot_compute_btc_due_to_step' 12ea14bdb0SFlorian Hahn; CHECK: LV: Found an induction variable. 13ea14bdb0SFlorian Hahn; CHECK-NEXT: LV: Did not find one integer induction var. 14b0697dc1SFlorian Hahn; CHECK-NEXT: LV: Not vectorizing: Cannot vectorize uncountable loop. 15ea14bdb0SFlorian Hahn; CHECK-NEXT: LV: Interleaving disabled by the pass manager 16ea14bdb0SFlorian Hahn; CHECK-NEXT: LV: Not vectorizing: Cannot prove legality. 17ea14bdb0SFlorian Hahn 18ea14bdb0SFlorian Hahn; CHECK-NOT: vector.body 19ea14bdb0SFlorian Hahndefine void @latch_exit_cannot_compute_btc_due_to_step(ptr %dst, i64 %step) { 20ea14bdb0SFlorian Hahnentry: 21ea14bdb0SFlorian Hahn br label %loop 22ea14bdb0SFlorian Hahn 23ea14bdb0SFlorian Hahnloop: ; preds = %loop, %for.cond.us 24ea14bdb0SFlorian Hahn %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ] 25ea14bdb0SFlorian Hahn %iv.next = add i64 %iv, %step 26ea14bdb0SFlorian Hahn %gep = getelementptr i8, ptr %dst, i64 %iv 27ea14bdb0SFlorian Hahn store i8 0, ptr %gep, align 1 28ea14bdb0SFlorian Hahn %ec = icmp eq i64 %iv.next, 1000 29ea14bdb0SFlorian Hahn br i1 %ec, label %loop, label %exit 30ea14bdb0SFlorian Hahn 31ea14bdb0SFlorian Hahnexit: 32ea14bdb0SFlorian Hahn ret void 33ea14bdb0SFlorian Hahn} 34ea14bdb0SFlorian Hahn 35ea14bdb0SFlorian Hahndefine void @header_exit_cannot_compute_btc_due_to_step(ptr %dst, i64 %step) { 36ea14bdb0SFlorian Hahnentry: 37ea14bdb0SFlorian Hahn br label %loop.header 38ea14bdb0SFlorian Hahn 39ea14bdb0SFlorian Hahnloop.header: 40ea14bdb0SFlorian Hahn %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ] 41ea14bdb0SFlorian Hahn %iv.next = add i64 %iv, %step 42ea14bdb0SFlorian Hahn %ec = icmp eq i64 %iv.next, 1000 43ea14bdb0SFlorian Hahn br i1 %ec, label %loop.latch, label %exit 44ea14bdb0SFlorian Hahn 45ea14bdb0SFlorian Hahnloop.latch: 46ea14bdb0SFlorian Hahn %gep = getelementptr i8, ptr %dst, i64 %iv 47ea14bdb0SFlorian Hahn store i8 0, ptr %gep, align 1 48ea14bdb0SFlorian Hahn br label %loop.header 49ea14bdb0SFlorian Hahn 50ea14bdb0SFlorian Hahnexit: 51ea14bdb0SFlorian Hahn ret void 52ea14bdb0SFlorian Hahn} 53