| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- // 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 unroll_count(16)
- // CHECK: #pragma clang loop interleave_count(8)
- // CHECK: #pragma clang loop vectorize_width(4)
- // CHECK: #pragma clang loop unroll(disable)
- // CHECK: #pragma clang loop interleave(disable)
- // CHECK: #pragma clang loop vectorize(enable)
- // CHECK: #pragma clang loop unroll(full)
- // CHECK: #pragma clang loop interleave(enable)
- // CHECK: #pragma clang loop vectorize(disable)
- // CHECK: #pragma unroll
- // CHECK: #pragma unroll (32)
- // CHECK: #pragma nounroll
- // CHECK: #pragma clang loop interleave_count(I)
- // CHECK: #pragma clang loop vectorize_width(V)
- #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)
- #pragma clang loop unroll_count(16)
- 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)
- #pragma clang loop unroll(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)
- #pragma clang loop unroll(full)
- while (i - 3 < Length) {
- List[i] = i;
- i++;
- }
- }
- inline void run4(int *List, int Length) {
- int i = 0;
- #pragma unroll
- while (i - 3 < Length) {
- List[i] = i;
- i++;
- }
- }
- inline void run5(int *List, int Length) {
- int i = 0;
- #pragma unroll 32
- while (i - 3 < Length) {
- List[i] = i;
- i++;
- }
- }
- inline void run6(int *List, int Length) {
- int i = 0;
- #pragma nounroll
- while (i - 3 < Length) {
- List[i] = i;
- i++;
- }
- }
- template <int V, int I>
- inline void run7(int *List, int Length) {
- #pragma clang loop vectorize_width(V)
- #pragma clang loop interleave_count(I)
- for (int i = 0; i < Length; i++) {
- List[i] = i;
- }
- }
- };
- #else
- void test() {
- int List[100];
- pragma_test pt;
- pt.run1(List, 100);
- pt.run2(List, 100);
- pt.run3(List, 100);
- pt.run4(List, 100);
- pt.run5(List, 100);
- pt.run6(List, 100);
- pt.run7<2, 4>(List, 100);
- }
- #endif
|