blob: d040f11b8e61a6b56e05176361ee29aa0a3f620e [file] [log] [blame] [edit]
/* { dg-additional-options "-std=gnu99" } */
extern void abort ();
#define M(x, y, z) O(x, y, z)
#define O(x, y, z) x ## _ ## y ## _ ## z
#ifndef ONE_TEST
#define TEST_ALL 1
#else
#define TEST_ALL 0
#endif
#pragma omp declare target
#if TEST_ALL || TEST_NR == 1
#define F distribute
#define G d
#define S
#define N(x) M(x, G, normal)
#include "for-2.h"
#undef S
#undef N
#undef F
#undef G
#endif
#if TEST_ALL || TEST_NR == 2
#define F distribute
#define G d_ds128
#define S dist_schedule(static, 128)
#define N(x) M(x, G, normal)
#include "for-2.h"
#undef S
#undef N
#undef F
#undef G
#endif
#if TEST_ALL || TEST_NR == 3
#define F distribute simd
#define G ds
#define S
#define N(x) M(x, G, normal)
#include "for-2.h"
#undef S
#undef N
#undef F
#undef G
#endif
#if TEST_ALL || TEST_NR == 4
#define F distribute simd
#define G ds_ds128
#define S dist_schedule(static, 128)
#define N(x) M(x, G, normal)
#include "for-2.h"
#undef S
#undef N
#undef F
#undef G
#endif
#if TEST_ALL || (5 <= TEST_NR && TEST_NR <= 9)
#define F distribute parallel for
#define G dpf
#include "for-1.h"
#undef F
#undef G
#endif
#if TEST_ALL || (10 <= TEST_NR && TEST_NR <= 14)
#define F distribute parallel for dist_schedule(static, 128)
#define G dpf_ds128
#include "for-1.h"
#undef F
#undef G
#endif
#if TEST_ALL || (15 <= TEST_NR && TEST_NR <= 19)
#define F distribute parallel for simd
#define G dpfs
#include "for-1.h"
#undef F
#undef G
#endif
#if TEST_ALL || (20 <= TEST_NR && TEST_NR <= 24)
#define F distribute parallel for simd dist_schedule(static, 128)
#define G dpfs_ds128
#include "for-1.h"
#undef F
#undef G
#endif
#pragma omp end declare target
int
main ()
{
int err = 0;
#pragma omp target teams reduction(|:err)
{
#define DO_TEST_1(test) \
do { \
err |= test (); \
} while (0)
#ifdef ONE_TEST
DO_TEST_1 (ONE_TEST);
#else
#define DO_TEST(test) DO_TEST_1(test);
#include "for-3.list"
#undef DO_TEST
#endif
#undef DO_TEST_1
}
if (err)
abort ();
return 0;
}