ordered-5.c 540 B

123456789101112131415161718192021222324252627282930
  1. /* { dg-do run } */
  2. /* { dg-additional-options "-msse2" { target sse2_runtime } } */
  3. /* { dg-additional-options "-mavx" { target avx_runtime } } */
  4. extern void abort (void);
  5. int a[1024], b = -1;
  6. int
  7. main ()
  8. {
  9. int i;
  10. #pragma omp parallel for simd ordered
  11. for (i = 0; i < 1024; i++)
  12. {
  13. a[i] = i;
  14. #pragma omp ordered threads simd
  15. {
  16. if (b + 1 != i)
  17. abort ();
  18. b = i;
  19. }
  20. a[i] += 3;
  21. }
  22. if (b != 1023)
  23. abort ();
  24. for (i = 0; i < 1024; i++)
  25. if (a[i] != i + 3)
  26. abort ();
  27. return 0;
  28. }