for-2.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. #ifndef VARS
  2. #define VARS
  3. int a[1500];
  4. float b[10][15][10];
  5. __attribute__((noreturn)) void
  6. noreturn (void)
  7. {
  8. for (;;);
  9. }
  10. #endif
  11. #ifndef SC
  12. #define SC
  13. #endif
  14. __attribute__((noinline, noclone)) void
  15. N(f0) (void)
  16. {
  17. int i;
  18. #pragma omp F S
  19. for (i = 0; i < 1500; i++)
  20. a[i] += 2;
  21. }
  22. __attribute__((noinline, noclone)) void
  23. N(f1) (void)
  24. {
  25. #pragma omp F S
  26. for (unsigned int i = __INT_MAX__; i < 3000U + __INT_MAX__; i += 2)
  27. a[(i - __INT_MAX__) >> 1] -= 2;
  28. }
  29. __attribute__((noinline, noclone)) void
  30. N(f2) (void)
  31. {
  32. unsigned long long i;
  33. #pragma omp F S
  34. for (i = __LONG_LONG_MAX__ + 4500ULL - 27;
  35. i > __LONG_LONG_MAX__ - 27ULL; i -= 3)
  36. a[(i + 26LL - __LONG_LONG_MAX__) / 3] -= 4;
  37. }
  38. __attribute__((noinline, noclone)) void
  39. N(f3) (long long n1, long long n2, long long s3)
  40. {
  41. #pragma omp F S
  42. for (long long i = n1 + 23; i > n2 - 25; i -= s3)
  43. a[i + 48] += 7;
  44. }
  45. __attribute__((noinline, noclone)) void
  46. N(f4) (void)
  47. {
  48. unsigned int i;
  49. #pragma omp F S
  50. for (i = 30; i < 20; i += 2)
  51. a[i] += 10;
  52. }
  53. __attribute__((noinline, noclone)) void
  54. N(f5) (int n11, int n12, int n21, int n22, int n31, int n32,
  55. int s1, int s2, int s3)
  56. {
  57. SC int v1, v2, v3;
  58. #pragma omp F S collapse(3)
  59. for (v1 = n11; v1 < n12; v1 += s1)
  60. for (v2 = n21; v2 < n22; v2 += s2)
  61. for (v3 = n31; v3 < n32; v3 += s3)
  62. b[v1][v2][v3] += 2.5;
  63. }
  64. __attribute__((noinline, noclone)) void
  65. N(f6) (int n11, int n12, int n21, int n22, long long n31, long long n32,
  66. int s1, int s2, long long int s3)
  67. {
  68. SC int v1, v2;
  69. SC long long v3;
  70. #pragma omp F S collapse(3)
  71. for (v1 = n11; v1 > n12; v1 += s1)
  72. for (v2 = n21; v2 > n22; v2 += s2)
  73. for (v3 = n31; v3 > n32; v3 += s3)
  74. b[v1][v2 / 2][v3] -= 4.5;
  75. }
  76. __attribute__((noinline, noclone)) void
  77. N(f7) (void)
  78. {
  79. SC unsigned int v1, v3;
  80. SC unsigned long long v2;
  81. #pragma omp F S collapse(3)
  82. for (v1 = 0; v1 < 20; v1 += 2)
  83. for (v2 = __LONG_LONG_MAX__ + 16ULL;
  84. v2 > __LONG_LONG_MAX__ - 29ULL; v2 -= 3)
  85. for (v3 = 10; v3 > 0; v3--)
  86. b[v1 >> 1][(v2 - __LONG_LONG_MAX__ + 64) / 3 - 12][v3 - 1] += 5.5;
  87. }
  88. __attribute__((noinline, noclone)) void
  89. N(f8) (void)
  90. {
  91. SC long long v1, v2, v3;
  92. #pragma omp F S collapse(3)
  93. for (v1 = 0; v1 < 20; v1 += 2)
  94. for (v2 = 30; v2 < 20; v2++)
  95. for (v3 = 10; v3 < 0; v3--)
  96. b[v1][v2][v3] += 5.5;
  97. }
  98. __attribute__((noinline, noclone)) void
  99. N(f9) (void)
  100. {
  101. int i;
  102. #pragma omp F S
  103. for (i = 20; i < 10; i++)
  104. {
  105. a[i] += 2;
  106. noreturn ();
  107. a[i] -= 4;
  108. }
  109. }
  110. __attribute__((noinline, noclone)) void
  111. N(f10) (void)
  112. {
  113. SC int i;
  114. #pragma omp F S collapse(3)
  115. for (i = 0; i < 10; i++)
  116. for (int j = 10; j < 8; j++)
  117. for (long k = -10; k < 10; k++)
  118. {
  119. b[i][j][k] += 4;
  120. noreturn ();
  121. b[i][j][k] -= 8;
  122. }
  123. }
  124. __attribute__((noinline, noclone)) void
  125. N(f11) (int n)
  126. {
  127. int i;
  128. #pragma omp F S
  129. for (i = 20; i < n; i++)
  130. {
  131. a[i] += 8;
  132. noreturn ();
  133. a[i] -= 16;
  134. }
  135. }
  136. __attribute__((noinline, noclone)) void
  137. N(f12) (int n)
  138. {
  139. SC int i;
  140. #pragma omp F S collapse(3)
  141. for (i = 0; i < 10; i++)
  142. for (int j = n; j < 8; j++)
  143. for (long k = -10; k < 10; k++)
  144. {
  145. b[i][j][k] += 16;
  146. noreturn ();
  147. b[i][j][k] -= 32;
  148. }
  149. }
  150. __attribute__((noinline, noclone)) void
  151. N(f13) (void)
  152. {
  153. int *i;
  154. #pragma omp F S
  155. for (i = a; i < &a[1500]; i++)
  156. i[0] += 2;
  157. }
  158. __attribute__((noinline, noclone)) void
  159. N(f14) (void)
  160. {
  161. SC float *i;
  162. #pragma omp F S collapse(3)
  163. for (i = &b[0][0][0]; i < &b[0][0][10]; i++)
  164. for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10)
  165. for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k)
  166. b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1]
  167. -= 3.5;
  168. }
  169. __attribute__((noinline, noclone)) int
  170. N(test) (void)
  171. {
  172. int i, j, k;
  173. for (i = 0; i < 1500; i++)
  174. a[i] = i - 25;
  175. N(f0) ();
  176. for (i = 0; i < 1500; i++)
  177. if (a[i] != i - 23)
  178. return 1;
  179. N(f1) ();
  180. for (i = 0; i < 1500; i++)
  181. if (a[i] != i - 25)
  182. return 1;
  183. N(f2) ();
  184. for (i = 0; i < 1500; i++)
  185. if (a[i] != i - 29)
  186. return 1;
  187. N(f3) (1500LL - 1 - 23 - 48, -1LL + 25 - 48, 1LL);
  188. for (i = 0; i < 1500; i++)
  189. if (a[i] != i - 22)
  190. return 1;
  191. N(f3) (1500LL - 1 - 23 - 48, 1500LL - 1, 7LL);
  192. for (i = 0; i < 1500; i++)
  193. if (a[i] != i - 22)
  194. return 1;
  195. N(f4) ();
  196. for (i = 0; i < 1500; i++)
  197. if (a[i] != i - 22)
  198. return 1;
  199. for (i = 0; i < 10; i++)
  200. for (j = 0; j < 15; j++)
  201. for (k = 0; k < 10; k++)
  202. b[i][j][k] = i - 2.5 + 1.5 * j - 1.5 * k;
  203. N(f5) (0, 10, 0, 15, 0, 10, 1, 1, 1);
  204. for (i = 0; i < 10; i++)
  205. for (j = 0; j < 15; j++)
  206. for (k = 0; k < 10; k++)
  207. if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
  208. return 1;
  209. N(f5) (0, 10, 30, 15, 0, 10, 4, 5, 6);
  210. for (i = 0; i < 10; i++)
  211. for (j = 0; j < 15; j++)
  212. for (k = 0; k < 10; k++)
  213. if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
  214. return 1;
  215. N(f6) (9, -1, 29, 0, 9, -1, -1, -2, -1);
  216. for (i = 0; i < 10; i++)
  217. for (j = 0; j < 15; j++)
  218. for (k = 0; k < 10; k++)
  219. if (b[i][j][k] != i - 4.5 + 1.5 * j - 1.5 * k)
  220. return 1;
  221. N(f7) ();
  222. for (i = 0; i < 10; i++)
  223. for (j = 0; j < 15; j++)
  224. for (k = 0; k < 10; k++)
  225. if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
  226. return 1;
  227. N(f8) ();
  228. for (i = 0; i < 10; i++)
  229. for (j = 0; j < 15; j++)
  230. for (k = 0; k < 10; k++)
  231. if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
  232. return 1;
  233. N(f9) ();
  234. N(f10) ();
  235. N(f11) (10);
  236. N(f12) (12);
  237. for (i = 0; i < 1500; i++)
  238. if (a[i] != i - 22)
  239. return 1;
  240. for (i = 0; i < 10; i++)
  241. for (j = 0; j < 15; j++)
  242. for (k = 0; k < 10; k++)
  243. if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
  244. return 1;
  245. N(f13) ();
  246. N(f14) ();
  247. for (i = 0; i < 1500; i++)
  248. if (a[i] != i - 20)
  249. return 1;
  250. for (i = 0; i < 10; i++)
  251. for (j = 0; j < 15; j++)
  252. for (k = 0; k < 10; k++)
  253. if (b[i][j][k] != i - 2.5 + 1.5 * j - 1.5 * k)
  254. return 1;
  255. return 0;
  256. }