simd-2.C 653 B

1234567891011121314151617181920212223242526272829303132333435
  1. // { dg-do run }
  2. // { dg-additional-options "-msse2" { target sse2_runtime } }
  3. // { dg-additional-options "-mavx" { target avx_runtime } }
  4. extern "C" void abort ();
  5. __UINTPTR_TYPE__ arr[1027];
  6. __attribute__((noinline, noclone)) void
  7. foo ()
  8. {
  9. int i, v;
  10. #pragma omp simd private (v) safelen(16)
  11. for (i = 0; i < 1027; i++)
  12. arr[i] = (__UINTPTR_TYPE__) &v;
  13. }
  14. int
  15. main ()
  16. {
  17. int i, j, cnt = 0;
  18. __UINTPTR_TYPE__ arr2[16];
  19. foo ();
  20. for (i = 0; i < 1027; i++)
  21. {
  22. for (j = 0; j < cnt; j++)
  23. if (arr[i] == arr2[j])
  24. break;
  25. if (j != cnt)
  26. continue;
  27. if (cnt == 16)
  28. abort ();
  29. arr2[cnt++] = arr[i];
  30. }
  31. return 0;
  32. }