blob: c5ac3c4348a8f037e8ff4f5d6ba9f8d6c9fbaac2 [file] [log] [blame]
#include <omp.h>
#include <stdlib.h>
#include <string.h>
int
test1 (void)
{
short int buf[64], *p;
int i;
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for
for (p = &buf[10]; &buf[54] > p; p++)
*p = 5;
for (i = 0; i < 64; i++)
if (buf[i] != 5 * (i >= 10 && i < 54))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for
for (p = &buf[3]; &buf[63] >= p; p += 2)
p[-2] = 6;
for (i = 0; i < 64; i++)
if (buf[i] != 6 * ((i & 1) && i <= 61))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for
for (p = &buf[16]; &buf[51] > p; p = 4 + p)
p[2] = 7;
for (i = 0; i < 64; i++)
if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for
for (p = &buf[16]; &buf[40] >= p; p = p + 4ULL)
p[2] = -7;
for (i = 0; i < 64; i++)
if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for
for (p = &buf[53]; &buf[9] < p; --p)
*p = 5;
for (i = 0; i < 64; i++)
if (buf[i] != 5 * (i >= 10 && i < 54))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for
for (p = &buf[63]; &buf[3] <= p; p -= 2)
p[-2] = 6;
for (i = 0; i < 64; i++)
if (buf[i] != 6 * ((i & 1) && i <= 61))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for
for (p = &buf[48]; &buf[15] < p; p = -4 + p)
p[2] = 7;
for (i = 0; i < 64; i++)
if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for
for (p = &buf[40]; &buf[16] <= p; p = p - 4ULL)
p[2] = -7;
for (i = 0; i < 64; i++)
if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
abort ();
return 0;
}
int
test2 (void)
{
int buf[64], *p;
int i;
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (static, 3)
for (p = &buf[10]; &buf[54] > p; p++)
*p = 5;
for (i = 0; i < 64; i++)
if (buf[i] != 5 * (i >= 10 && i < 54))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (static, 3)
for (p = &buf[3]; &buf[63] >= p; p += 2)
p[-2] = 6;
for (i = 0; i < 64; i++)
if (buf[i] != 6 * ((i & 1) && i <= 61))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (static, 3)
for (p = &buf[16]; &buf[51] > p; p = 4 + p)
p[2] = 7;
for (i = 0; i < 64; i++)
if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (static, 3)
for (p = &buf[16]; &buf[40] >= p; p = p + 4ULL)
p[2] = -7;
for (i = 0; i < 64; i++)
if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (static, 3)
for (p = &buf[53]; &buf[9] < p; --p)
*p = 5;
for (i = 0; i < 64; i++)
if (buf[i] != 5 * (i >= 10 && i < 54))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (static, 3)
for (p = &buf[63]; &buf[3] <= p; p -= 2)
p[-2] = 6;
for (i = 0; i < 64; i++)
if (buf[i] != 6 * ((i & 1) && i <= 61))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (static, 3)
for (p = &buf[48]; &buf[15] < p; p = -4 + p)
p[2] = 7;
for (i = 0; i < 64; i++)
if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (static, 3)
for (p = &buf[40]; &buf[16] <= p; p = p - 4ULL)
p[2] = -7;
for (i = 0; i < 64; i++)
if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
abort ();
return 0;
}
int
test3 (void)
{
int buf[64], *p;
int i;
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (dynamic, 3)
for (p = &buf[10]; &buf[54] > p; p++)
*p = 5;
for (i = 0; i < 64; i++)
if (buf[i] != 5 * (i >= 10 && i < 54))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (dynamic, 3)
for (p = &buf[3]; &buf[63] >= p; p += 2)
p[-2] = 6;
for (i = 0; i < 64; i++)
if (buf[i] != 6 * ((i & 1) && i <= 61))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (dynamic, 3)
for (p = &buf[16]; &buf[51] > p; p = 4 + p)
p[2] = 7;
for (i = 0; i < 64; i++)
if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (dynamic, 3)
for (p = &buf[16]; &buf[40] >= p; p = p + 4ULL)
p[2] = -7;
for (i = 0; i < 64; i++)
if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (dynamic, 3)
for (p = &buf[53]; &buf[9] < p; --p)
*p = 5;
for (i = 0; i < 64; i++)
if (buf[i] != 5 * (i >= 10 && i < 54))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (dynamic, 3)
for (p = &buf[63]; &buf[3] <= p; p -= 2)
p[-2] = 6;
for (i = 0; i < 64; i++)
if (buf[i] != 6 * ((i & 1) && i <= 61))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (dynamic, 3)
for (p = &buf[48]; &buf[15] < p; p = -4 + p)
p[2] = 7;
for (i = 0; i < 64; i++)
if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (dynamic, 3)
for (p = &buf[40]; &buf[16] <= p; p = p - 4ULL)
p[2] = -7;
for (i = 0; i < 64; i++)
if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
abort ();
return 0;
}
int
test4 (void)
{
int buf[64], *p;
int i;
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (runtime)
for (p = &buf[10]; &buf[54] > p; p++)
*p = 5;
for (i = 0; i < 64; i++)
if (buf[i] != 5 * (i >= 10 && i < 54))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (runtime)
for (p = &buf[3]; &buf[63] >= p; p += 2)
p[-2] = 6;
for (i = 0; i < 64; i++)
if (buf[i] != 6 * ((i & 1) && i <= 61))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (runtime)
for (p = &buf[16]; &buf[51] > p; p = 4 + p)
p[2] = 7;
for (i = 0; i < 64; i++)
if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (runtime)
for (p = &buf[16]; &buf[40] >= p; p = p + 4ULL)
p[2] = -7;
for (i = 0; i < 64; i++)
if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (runtime)
for (p = &buf[53]; &buf[9] < p; --p)
*p = 5;
for (i = 0; i < 64; i++)
if (buf[i] != 5 * (i >= 10 && i < 54))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (runtime)
for (p = &buf[63]; &buf[3] <= p; p -= 2)
p[-2] = 6;
for (i = 0; i < 64; i++)
if (buf[i] != 6 * ((i & 1) && i <= 61))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (runtime)
for (p = &buf[48]; &buf[15] < p; p = -4 + p)
p[2] = 7;
for (i = 0; i < 64; i++)
if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
abort ();
memset (buf, '\0', sizeof (buf));
#pragma omp parallel for schedule (runtime)
for (p = &buf[40]; &buf[16] <= p; p = p - 4ULL)
p[2] = -7;
for (i = 0; i < 64; i++)
if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
abort ();
return 0;
}
int
main (void)
{
test1 ();
test2 ();
test3 ();
omp_set_schedule (omp_sched_static, 0);
test4 ();
omp_set_schedule (omp_sched_static, 3);
test4 ();
omp_set_schedule (omp_sched_dynamic, 5);
test4 ();
omp_set_schedule (omp_sched_guided, 2);
test4 ();
return 0;
}