simd-14.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /* { dg-do run } */
  2. /* { dg-additional-options "-msse2" { target sse2_runtime } } */
  3. /* { dg-additional-options "-mavx" { target avx_runtime } } */
  4. int
  5. main ()
  6. {
  7. int i, j, b, c = 0;
  8. i = 4; j = 4; b = 7;
  9. #pragma omp simd linear(b:2) reduction(+:c)
  10. for (i = 0; i < 64; i++)
  11. {
  12. c = c + (b != 7 + 2 * i);
  13. b = b + 2;
  14. }
  15. if (c || i != 64 || b != 7 + 64 * 2)
  16. __builtin_abort ();
  17. i = 4; j = 4; b = 7;
  18. #pragma omp simd linear(b:3) reduction(+:c)
  19. for (i = 0; i < 64; i += 4)
  20. {
  21. c = c + (b != 7 + i / 4 * 3);
  22. b = b + 3;
  23. }
  24. if (c || i != 64 || b != 7 + 16 * 3)
  25. __builtin_abort ();
  26. i = 4; j = 4; b = 7;
  27. #pragma omp simd linear(i) linear(b:2) reduction(+:c)
  28. for (i = 0; i < 64; i++)
  29. {
  30. c = c + (b != 7 + 2 * i);
  31. b = b + 2;
  32. }
  33. if (c || i != 64 || b != 7 + 64 * 2)
  34. __builtin_abort ();
  35. i = 4; j = 4; b = 7;
  36. #pragma omp simd linear(i:4) linear(b:3) reduction(+:c)
  37. for (i = 0; i < 64; i += 4)
  38. {
  39. c = c + (b != 7 + i / 4 * 3);
  40. b = b + 3;
  41. }
  42. if (c || i != 64 || b != 7 + 16 * 3)
  43. __builtin_abort ();
  44. i = 4; j = 4; b = 7;
  45. #pragma omp simd collapse (2) linear(b:2) reduction(+:c)
  46. for (i = 0; i < 8; i++)
  47. for (j = 0; j < 8; j++)
  48. {
  49. c = c + (b != 7 + 2 * j + 2 * 8 * i);
  50. b = b + 2;
  51. }
  52. if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
  53. __builtin_abort ();
  54. i = 4; j = 4; b = 7;
  55. #pragma omp simd collapse (2) lastprivate (i, j) linear(b:2) reduction(+:c)
  56. for (i = 0; i < 8; i++)
  57. for (j = 0; j < 8; j++)
  58. {
  59. c = c + (b != 7 + 2 * j + 2 * 8 * i);
  60. b = b + 2;
  61. }
  62. if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
  63. __builtin_abort ();
  64. i = 4; j = 4; b = 7;
  65. #pragma omp parallel for simd schedule (static, 4) linear(b:2) reduction(+:c)
  66. for (i = 0; i < 64; i++)
  67. {
  68. c = c + (b != 7 + 2 * i);
  69. b = b + 2;
  70. }
  71. if (c || i != 64 || b != 7 + 64 * 2)
  72. __builtin_abort ();
  73. i = 4; j = 4; b = 7;
  74. #pragma omp parallel for simd schedule (static, 4) linear(b:3) reduction(+:c)
  75. for (i = 0; i < 64; i += 4)
  76. {
  77. c = c + (b != 7 + i / 4 * 3);
  78. b = b + 3;
  79. }
  80. if (c || i != 64 || b != 7 + 16 * 3)
  81. __builtin_abort ();
  82. i = 4; j = 4; b = 7;
  83. #pragma omp parallel for simd schedule (static, 4) linear(i) linear(b:2) reduction(+:c)
  84. for (i = 0; i < 64; i++)
  85. {
  86. c = c + (b != 7 + 2 * i);
  87. b = b + 2;
  88. }
  89. if (c || i != 64 || b != 7 + 64 * 2)
  90. __builtin_abort ();
  91. i = 4; j = 4; b = 7;
  92. #pragma omp parallel for simd schedule (static, 4) linear(i:4) linear(b:3) reduction(+:c)
  93. for (i = 0; i < 64; i += 4)
  94. {
  95. c = c + (b != 7 + i / 4 * 3);
  96. b = b + 3;
  97. }
  98. if (c || i != 64 || b != 7 + 16 * 3)
  99. __builtin_abort ();
  100. i = 4; j = 4; b = 7;
  101. #pragma omp parallel for simd lastprivate (i, j) collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
  102. for (i = 0; i < 8; i++)
  103. for (j = 0; j < 8; j++)
  104. {
  105. c = c + (b != 7 + 2 * j + 2 * 8 * i);
  106. b = b + 2;
  107. }
  108. if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
  109. __builtin_abort ();
  110. i = 4; j = 4; b = 7;
  111. #pragma omp parallel for simd collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
  112. for (i = 0; i < 8; i++)
  113. for (j = 0; j < 8; j++)
  114. {
  115. c = c + (b != 7 + 2 * j + 2 * 8 * i);
  116. b = b + 2;
  117. }
  118. if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
  119. __builtin_abort ();
  120. return 0;
  121. }