2 ; RUN: opt -passes=loop-vectorize -mtriple=arm64-apple-iphoneos -pass-remarks-analysis=loop-vectorize -debug-only=loop-vectorize -S < %s 2>&1 | FileCheck %s
4 ; Specify a large unsafe vectorization factor of 32 that gets clamped to 16.
6 ; CHECK: LV: User VF=32 is unsafe, clamping to max safe VF=16.
7 ; CHECK: remark: <unknown>:0:0: User-specified vectorization factor 32 is unsafe, clamping to maximum safe vectorization factor 16
8 ; CHECK: LV: Selecting VF: 16.
11 define void @test(ptr nocapture %a, ptr nocapture readonly %b) {
16 %iv = phi i64 [ 0, %entry ], [ %iv.next, %latch ]
17 %arrayidx = getelementptr inbounds i64, ptr %a, i64 %iv
18 %0 = load i64, ptr %arrayidx, align 4
19 %arrayidx2 = getelementptr inbounds i64, ptr %b, i64 %iv
20 %1 = load i64, ptr %arrayidx2, align 4
21 %add = add nsw i64 %1, %0
22 %2 = add nuw nsw i64 %iv, 16
23 %arrayidx5 = getelementptr inbounds i64, ptr %a, i64 %2
24 %c = icmp eq i64 %1, 120
25 br i1 %c, label %then, label %latch
28 store i64 %add, ptr %arrayidx5, align 4
32 %iv.next = add nuw nsw i64 %iv, 1
33 %exitcond.not = icmp eq i64 %iv.next, 1024
34 br i1 %exitcond.not, label %exit, label %loop.header, !llvm.loop !0
41 !1 = !{!"llvm.loop.vectorize.width", i64 32}
42 !2 = !{!"llvm.loop.vectorize.enable", i1 true}