123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /* { dg-do run } */
- int v, x;
- __attribute__((noipa)) void
- foo (int *a)
- {
- #pragma omp for simd lastprivate (conditional: x) schedule(simd: static) if (simd: 0)
- for (int i = 0; i < 128; i++)
- if (a[i])
- x = a[i];
- }
- __attribute__((noipa)) void
- bar (int *a, int *b)
- {
- #pragma omp for simd lastprivate (conditional: x, v) schedule(static, 16) simdlen(1)
- for (int i = 16; i < 128; ++i)
- {
- if (a[i])
- x = a[i];
- if (b[i])
- v = b[i] + 10;
- }
- }
- __attribute__((noipa)) void
- baz (int *a)
- {
- #pragma omp for simd lastprivate (conditional: x) schedule(simd: dynamic, 16) if (0)
- for (int i = 0; i < 128; i++)
- if (a[i])
- x = a[i] + 5;
- }
- int
- main ()
- {
- int a[128], b[128], i;
- for (i = 0; i < 128; i++)
- {
- a[i] = ((i % 11) == 2) ? i + 10 : 0;
- asm volatile ("" : "+g" (i));
- b[i] = ((i % 13) == 5) ? i * 2 : 0;
- }
- #pragma omp parallel
- foo (a);
- if (x != 133)
- __builtin_abort ();
- x = -3;
- #pragma omp parallel
- bar (b, a);
- if (x != 244 || v != 143)
- __builtin_abort ();
- #pragma omp parallel
- baz (b);
- if (x != 249)
- __builtin_abort ();
- return 0;
- }
|