Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / Transforms / LoopVectorize / AArch64 / unsafe-vf-hint-remark.ll
blobfc20277b1d85885039e1080d168b5366df5c7d11
1 ; REQUIRES: asserts
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.
9 ; CHECK-LABEL: @test
10 ; CHECK: <16 x i64>
11 define void @test(ptr nocapture %a, ptr nocapture readonly %b) {
12 entry:
13   br label %loop.header
15 loop.header:
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
27 then:
28   store i64 %add, ptr %arrayidx5, align 4
29   br label %latch
31 latch:
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
36 exit:
37   ret void
40 !0 = !{!0, !1, !2}
41 !1 = !{!"llvm.loop.vectorize.width", i64 32}
42 !2 = !{!"llvm.loop.vectorize.enable", i1 true}