1 // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm -o - %s | FileCheck %s 2 3 void test0(int *List, int Length) { 4 // CHECK-LABEL: @{{.*}}test0{{.*}}( 5 // CHECK: br label {{.*}}, !llvm.loop ![[LOOP0:.*]] 6 7 #pragma clang loop vectorize(enable) 8 for (int i = 0; i < Length; i++) 9 List[i] = i * 2; 10 } 11 12 void test1(int *List, int Length) { 13 // CHECK-LABEL: @{{.*}}test1{{.*}}( 14 // CHECK: br label {{.*}}, !llvm.loop ![[LOOP1:.*]] 15 16 #pragma clang loop vectorize(enable) vectorize_predicate(enable) 17 for (int i = 0; i < Length; i++) 18 List[i] = i * 2; 19 } 20 21 void test2(int *List, int Length) { 22 // CHECK-LABEL: @{{.*}}test2{{.*}}( 23 // CHECK: br label {{.*}}, !llvm.loop ![[LOOP2:.*]] 24 25 #pragma clang loop vectorize(enable) vectorize_predicate(disable) 26 for (int i = 0; i < Length; i++) 27 List[i] = i * 2; 28 } 29 30 // CHECK: ![[LOOP0]] = distinct !{![[LOOP0]], !3} 31 // CHECK-NEXT: !3 = !{!"llvm.loop.vectorize.enable", i1 true} 32 // CHECK-NEXT: ![[LOOP1]] = distinct !{![[LOOP1]], !5, !3} 33 // CHECK-NEXT: !5 = !{!"llvm.loop.vectorize.predicate.enable", i1 true} 34 // CHECK-NEXT: ![[LOOP2]] = distinct !{![[LOOP2]], !7, !3} 35 // CHECK-NEXT: !7 = !{!"llvm.loop.vectorize.predicate.enable", i1 false} 36