/* { dg-options "-std=gnu99 -fopenmp" } */ extern void abort (); #define M(x, y, z) O(x, y, z) #define O(x, y, z) x ## _ ## y ## _ ## z #pragma omp declare target #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 #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 #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 #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 #define F distribute parallel for #define G dpf #include "for-1.h" #undef F #undef G #define F distribute parallel for dist_schedule(static, 128) #define G dpf_ds128 #include "for-1.h" #undef F #undef G #define F distribute parallel for simd #define G dpfs #include "for-1.h" #undef F #undef G #define F distribute parallel for simd dist_schedule(static, 128) #define G dpfs_ds128 #include "for-1.h" #undef F #undef G #pragma omp end declare target int main () { int err = 0; #pragma omp target teams reduction(|:err) { err |= test_d_normal (); err |= test_d_ds128_normal (); err |= test_ds_normal (); err |= test_ds_ds128_normal (); err |= test_dpf_static (); err |= test_dpf_static32 (); err |= test_dpf_auto (); err |= test_dpf_guided32 (); err |= test_dpf_runtime (); err |= test_dpf_ds128_static (); err |= test_dpf_ds128_static32 (); err |= test_dpf_ds128_auto (); err |= test_dpf_ds128_guided32 (); err |= test_dpf_ds128_runtime (); err |= test_dpfs_static (); err |= test_dpfs_static32 (); err |= test_dpfs_auto (); err |= test_dpfs_guided32 (); err |= test_dpfs_runtime (); err |= test_dpfs_ds128_static (); err |= test_dpfs_ds128_static32 (); err |= test_dpfs_ds128_auto (); err |= test_dpfs_ds128_guided32 (); err |= test_dpfs_ds128_runtime (); } if (err) abort (); return 0; }