forked from OSchip/llvm-project
63 lines
1.4 KiB
C++
63 lines
1.4 KiB
C++
|
// RUN: %clang_cc1 -emit-pch -o %t.a %s
|
||
|
// RUN: %clang_cc1 -include-pch %t.a %s -ast-print -o - | FileCheck %s
|
||
|
|
||
|
// FIXME: A bug in ParsedAttributes causes the order of the attributes to be
|
||
|
// reversed. The checks are consequently in the reverse order below.
|
||
|
|
||
|
// CHECK: #pragma clang loop interleave_count(8)
|
||
|
// CHECK: #pragma clang loop vectorize_width(4)
|
||
|
// CHECK: #pragma clang loop interleave(disable)
|
||
|
// CHECK: #pragma clang loop vectorize(enable)
|
||
|
// CHECK: #pragma clang loop interleave(enable)
|
||
|
// CHECK: #pragma clang loop vectorize(disable)
|
||
|
|
||
|
#ifndef HEADER
|
||
|
#define HEADER
|
||
|
|
||
|
class pragma_test {
|
||
|
public:
|
||
|
inline void run1(int *List, int Length) {
|
||
|
int i = 0;
|
||
|
#pragma clang loop vectorize_width(4)
|
||
|
#pragma clang loop interleave_count(8)
|
||
|
while (i < Length) {
|
||
|
List[i] = i;
|
||
|
i++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
inline void run2(int *List, int Length) {
|
||
|
int i = 0;
|
||
|
#pragma clang loop vectorize(enable)
|
||
|
#pragma clang loop interleave(disable)
|
||
|
while (i - 1 < Length) {
|
||
|
List[i] = i;
|
||
|
i++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
inline void run3(int *List, int Length) {
|
||
|
int i = 0;
|
||
|
#pragma clang loop vectorize(disable)
|
||
|
#pragma clang loop interleave(enable)
|
||
|
while (i - 3 < Length) {
|
||
|
List[i] = i;
|
||
|
i++;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#else
|
||
|
|
||
|
void test() {
|
||
|
int List[100];
|
||
|
|
||
|
pragma_test pt;
|
||
|
|
||
|
pt.run1(List, 100);
|
||
|
pt.run2(List, 100);
|
||
|
pt.run3(List, 100);
|
||
|
}
|
||
|
|
||
|
#endif
|