public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [RFC] Generate sub-tests from libgomp.c/for-{3,5,6}.c
       [not found] <6df8f8dd-4880-0828-4c0c-1719fed02c01@mentor.com>
@ 2017-11-24 16:00 ` Tom de Vries
  0 siblings, 0 replies; only message in thread
From: Tom de Vries @ 2017-11-24 16:00 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Thomas Schwinge, GCC Patches

[ add missing cc gcc-patches ]

On 11/24/2017 04:31 PM, Tom de Vries wrote:
> Hi,
> 
> The libgomp offloading tests libgomp.c/for-{3,5,6}.c are monolithic 
> tests which test lots of subtests, and if any of them fail, it would be 
> good to be able to quickly known which subtest(s) fail. [ And if you fix 
> or break one of the subtests during accel target bringup, it would be 
> nice if that shows up in the PASS/FAIL status. ]
> 
> I've written a patch to generate standalone subtests from the original 
> ones, and add them to the test list in c.exp. This adds a total of 84 
> tests.
> 
> I've scaled the timeout for each subtest with factor 0.1. If all new 
> subtests time out, and we have a standard timeout of 300s, this adds 7 
> hrs testing time). But AFAIK, it's an open issue that dg-timeout and 
> dg-timeout-factor don't work on remote setups, so that problem may still 
> present itself.
> 
> I'm not sure if it makes sense to enable this by default on a normal 
> host-only setup, but perhaps this approach is acceptable if we require 
> effective target offload_device for the sub-test testcases?
> 
> If not, I think it would already be good to have this in the sources 
> disabled by default, and allow it to be enabled by editing a variable in 
> c.exp or some such.
> 
> WDYT?
> 
> Tested on x86_64 without offloading device (compile+run times listed in 
> patch).
> 
> Tested on x86_64 with gcn device.
> 
> TODO:
> - generate only one copy of the subtests, to be used by each parallel
>    invocation.
> - improve tcl, f.i. extracting the DO_TEST arguments could be done
>    better.
> 
> Thanks,
> - Tom
> 
> 0001-Generate-sub-tests-from-libgomp.c-for-3-5-6-.c.patch
> 
> 
> Generate sub-tests from libgomp.c/for-{3,5,6}.c
> 
> With compiler build at -O0 --enable-checking=yes,rtl:
> for-3.c: 33s
> for-3-*.c: 2m31s
> for-5.c: 59s
> for-5-*.c: 5m5s
> for-6.c: 43s
> for-6-*.c: 3m39s
> 
> With compiler build at -O2 --enable-checking=release:
> for-3.c: 10s
> for-3-*.c: 22s
> for-5.c: 8s
> for-5-*.c: 42s
> for-6.c: 6s
> for-6-*.c: 29s
> 
> 2017-11-24  Tom de Vries  <tom@codesourcery.com>
> 
> 	* testsuite/libgomp.c/c.exp: Generate tests from .list files, and add
> 	them to test to be run.
> 	(generate_tests): New proc.
> 	* testsuite/libgomp.c/for-3.list: New test list, factored out of ...
> 	* testsuite/libgomp.c/for-3.c (main): ... here.  Use for-3.list to
> 	iterate over tests, or just run ONE_TEST.
> 	(TEST_ALL): Define.
> 	* testsuite/libgomp.c/for-5.list: New test list, factored out of ...
> 	* testsuite/libgomp.c/for-5.c (main): ... here.  Use for-5.list to
> 	iterate over tests, or just run ONE_TEST.
> 	(TEST_ALL): Define.
> 	* testsuite/libgomp.c/for-6.list: New test list, factored out of ...
> 	* testsuite/libgomp.c/for-6.c (main): ... here.  Use for-6.list to
> 	iterate over tests, or just run ONE_TEST.
> 	(TEST_ALL): Define.
> 
> ---
>   libgomp/testsuite/libgomp.c/c.exp      | 74 ++++++++++++++++++++++++++++++-
>   libgomp/testsuite/libgomp.c/for-3.c    | 65 +++++++++++++++++-----------
>   libgomp/testsuite/libgomp.c/for-3.list | 24 +++++++++++
>   libgomp/testsuite/libgomp.c/for-5.c    | 79 ++++++++++++++++++----------------
>   libgomp/testsuite/libgomp.c/for-5.list | 35 +++++++++++++++
>   libgomp/testsuite/libgomp.c/for-6.c    | 62 +++++++++++++++-----------
>   libgomp/testsuite/libgomp.c/for-6.list | 24 +++++++++++
>   7 files changed, 275 insertions(+), 88 deletions(-)
> 
> diff --git a/libgomp/testsuite/libgomp.c/c.exp b/libgomp/testsuite/libgomp.c/c.exp
> index 31bdd57..791788b 100644
> --- a/libgomp/testsuite/libgomp.c/c.exp
> +++ b/libgomp/testsuite/libgomp.c/c.exp
> @@ -23,10 +23,82 @@ dg-init
>   # Turn on OpenMP.
>   lappend ALWAYS_CFLAGS "additional_flags=-fopenmp"
>   
> +# Generate new tests for each DO_TEST entry in TEST_LIST.
> +proc generate_tests { test_list } {
> +    global srcdir
> +    global subdir
> +
> +    # Get corresponding source file.
> +    set base_file [regsub "\.list" $test_list ""]
> +    set base_file [regsub "$srcdir/$subdir/" $base_file ""]
> +    set c_file $base_file.c
> +
> +    # Get dg directives from c file.
> +    set dg_directives ""
> +    set fp [open "$srcdir/$subdir/$c_file" r]
> +    while {[gets $fp line] >= 0} {
> +	if {[regexp -line -- "^/\\* \{ dg-" $line]} {
> +	    if { "$dg_directives" == "" } {
> +		set sep ""
> +	    } else {
> +		set sep "\n"
> +	    }
> +	    set dg_directives "$dg_directives$sep$line"
> +	}
> +    }
> +    close $fp
> +
> +    # Get list of tests.
> +    set fp [open "$test_list" r]
> +    set file_data [read $fp]
> +    close $fp
> +    set file_data [regsub -all "DO_TEST" $file_data ""]
> +    set file_data [regsub -all "\\(" $file_data ""]
> +    set file_data [regsub -all "\\)" $file_data ""]
> +    set file_data [regsub -all \[\n\] $file_data ""]
> +    set file_data [string trimleft $file_data " "]
> +    set tests [split $file_data]
> +
> +    # Create directory to generate files.
> +    set test_dir [pwd]
> +    set generated_dir $test_dir/generated/libgomp.c
> +    file mkdir $generated_dir
> +
> +    # Generate tests.
> +    set new_files []
> +    set i 1
> +    foreach test $tests {
> +	set new_file "$generated_dir/$base_file-$test.c"
> +
> +	set fp [open "$new_file" w]
> +	puts $fp "$dg_directives"
> +	puts $fp "/* { dg-timeout-factor 0.1 } */"
> +	puts $fp "#define ONE_TEST $test"
> +	puts $fp "#define TEST_NR $i"
> +	puts $fp "#include \"$srcdir/$subdir/$c_file\""
> +	close $fp
> +
> +	set i [expr $i + 1]
> +	lappend new_files $new_file
> +    }
> +
> +    return $new_files
> +}
> +
> +# Generate tests for each .list file
> +set test_lists [find $srcdir/$subdir *.list]
> +set generated_tests []
> +foreach test_list $test_lists {
> +    set generated_tests [concat \
> +			     $generated_tests \
> +			     [generate_tests $test_list]]
> +}
> +
>   # Gather a list of all tests.
>   set tests [lsort [concat \
>   		      [find $srcdir/$subdir *.c] \
> -		      [find $srcdir/$subdir/../libgomp.c-c++-common *.c]]]
> +		      [find $srcdir/$subdir/../libgomp.c-c++-common *.c] \
> +		      $generated_tests]]
>   
>   set ld_library_path $always_ld_library_path
>   append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
> diff --git a/libgomp/testsuite/libgomp.c/for-3.c b/libgomp/testsuite/libgomp.c/for-3.c
> index f4cd115..d040f11 100644
> --- a/libgomp/testsuite/libgomp.c/for-3.c
> +++ b/libgomp/testsuite/libgomp.c/for-3.c
> @@ -5,8 +5,15 @@ 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
> @@ -16,7 +23,9 @@ extern void abort ();
>   #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)
> @@ -26,7 +35,9 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 3
>   #define F distribute simd
>   #define G ds
>   #define S
> @@ -36,7 +47,9 @@ extern void abort ();
>   #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)
> @@ -46,30 +59,39 @@ extern void abort ();
>   #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
>   
> @@ -77,33 +99,24 @@ 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 ();
> -    }
> +  {
> +#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;
> diff --git a/libgomp/testsuite/libgomp.c/for-3.list b/libgomp/testsuite/libgomp.c/for-3.list
> new file mode 100644
> index 0000000..6fb25a5
> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.c/for-3.list
> @@ -0,0 +1,24 @@
> +DO_TEST (test_d_normal)
> +DO_TEST (test_d_ds128_normal)
> +DO_TEST (test_ds_normal)
> +DO_TEST (test_ds_ds128_normal)
> +DO_TEST (test_dpf_static)
> +DO_TEST (test_dpf_static32)
> +DO_TEST (test_dpf_auto)
> +DO_TEST (test_dpf_guided32)
> +DO_TEST (test_dpf_runtime)
> +DO_TEST (test_dpf_ds128_static)
> +DO_TEST (test_dpf_ds128_static32)
> +DO_TEST (test_dpf_ds128_auto)
> +DO_TEST (test_dpf_ds128_guided32)
> +DO_TEST (test_dpf_ds128_runtime)
> +DO_TEST (test_dpfs_static)
> +DO_TEST (test_dpfs_static32)
> +DO_TEST (test_dpfs_auto)
> +DO_TEST (test_dpfs_guided32)
> +DO_TEST (test_dpfs_runtime)
> +DO_TEST (test_dpfs_ds128_static)
> +DO_TEST (test_dpfs_ds128_static32)
> +DO_TEST (test_dpfs_ds128_auto)
> +DO_TEST (test_dpfs_ds128_guided32)
> +DO_TEST (test_dpfs_ds128_runtime)
> diff --git a/libgomp/testsuite/libgomp.c/for-5.c b/libgomp/testsuite/libgomp.c/for-5.c
> index 84e636a..8f12579 100644
> --- a/libgomp/testsuite/libgomp.c/for-5.c
> +++ b/libgomp/testsuite/libgomp.c/for-5.c
> @@ -5,6 +5,12 @@ 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
>   
>   #define F for
> @@ -25,12 +31,15 @@ extern void abort ();
>   #define OMPFROM(v) DO_PRAGMA (omp target update from(v))
>   #define OMPTO(v) DO_PRAGMA (omp target update to(v))
>   
> +#if TEST_ALL || (1 <= TEST_NR && TEST_NR <= 5)
>   #define F target parallel for
>   #define G tpf
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 6
>   #define F target simd
>   #define G t_simd
>   #define S
> @@ -40,13 +49,17 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (7 <= TEST_NR && TEST_NR <= 11)
>   #define F target parallel for simd
>   #define G tpf_simd
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 12
>   #define F target teams distribute
>   #define G ttd
>   #define S
> @@ -56,7 +69,9 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 13
>   #define F target teams distribute
>   #define G ttd_ds128
>   #define S dist_schedule(static, 128)
> @@ -66,7 +81,9 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 14
>   #define F target teams distribute simd
>   #define G ttds
>   #define S
> @@ -76,7 +93,9 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 15
>   #define F target teams distribute simd
>   #define G ttds_ds128
>   #define S dist_schedule(static, 128)
> @@ -86,69 +105,57 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (16 <= TEST_NR && TEST_NR <= 20)
>   #define F target teams distribute parallel for
>   #define G ttdpf
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (21 <= TEST_NR && TEST_NR <= 25)
>   #define F target teams distribute parallel for dist_schedule(static, 128)
>   #define G ttdpf_ds128
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (26 <= TEST_NR && TEST_NR <= 30)
>   #define F target teams distribute parallel for simd
>   #define G ttdpfs
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (31 <= TEST_NR && TEST_NR <= 35)
>   #define F target teams distribute parallel for simd dist_schedule(static, 128)
>   #define G ttdpfs_ds128
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
>   int
>   main ()
>   {
> -  if (test_tpf_static ()
> -      || test_tpf_static32 ()
> -      || test_tpf_auto ()
> -      || test_tpf_guided32 ()
> -      || test_tpf_runtime ()
> -      || test_t_simd_normal ()
> -      || test_tpf_simd_static ()
> -      || test_tpf_simd_static32 ()
> -      || test_tpf_simd_auto ()
> -      || test_tpf_simd_guided32 ()
> -      || test_tpf_simd_runtime ()
> -      || test_ttd_normal ()
> -      || test_ttd_ds128_normal ()
> -      || test_ttds_normal ()
> -      || test_ttds_ds128_normal ()
> -      || test_ttdpf_static ()
> -      || test_ttdpf_static32 ()
> -      || test_ttdpf_auto ()
> -      || test_ttdpf_guided32 ()
> -      || test_ttdpf_runtime ()
> -      || test_ttdpf_ds128_static ()
> -      || test_ttdpf_ds128_static32 ()
> -      || test_ttdpf_ds128_auto ()
> -      || test_ttdpf_ds128_guided32 ()
> -      || test_ttdpf_ds128_runtime ()
> -      || test_ttdpfs_static ()
> -      || test_ttdpfs_static32 ()
> -      || test_ttdpfs_auto ()
> -      || test_ttdpfs_guided32 ()
> -      || test_ttdpfs_runtime ()
> -      || test_ttdpfs_ds128_static ()
> -      || test_ttdpfs_ds128_static32 ()
> -      || test_ttdpfs_ds128_auto ()
> -      || test_ttdpfs_ds128_guided32 ()
> -      || test_ttdpfs_ds128_runtime ())
> -    abort ();
> +#define DO_TEST_1(test)				\
> +  do {						\
> +    if (test ())				\
> +      abort ();					\
> +  } while (0)
> +
> +#ifdef ONE_TEST
> +  DO_TEST_1 (ONE_TEST);
> +#else
> +#define DO_TEST(test) DO_TEST_1 (test);
> +#include "for-5.list"
> +#undef DO_TEST
> +#endif
> +#undef DO_TEST_1
> +
>     return 0;
>   }
> diff --git a/libgomp/testsuite/libgomp.c/for-5.list b/libgomp/testsuite/libgomp.c/for-5.list
> new file mode 100644
> index 0000000..48d0c3a
> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.c/for-5.list
> @@ -0,0 +1,35 @@
> +DO_TEST (test_tpf_static)
> +DO_TEST (test_tpf_static32)
> +DO_TEST (test_tpf_auto)
> +DO_TEST (test_tpf_guided32)
> +DO_TEST (test_tpf_runtime)
> +DO_TEST (test_t_simd_normal)
> +DO_TEST (test_tpf_simd_static)
> +DO_TEST (test_tpf_simd_static32)
> +DO_TEST (test_tpf_simd_auto)
> +DO_TEST (test_tpf_simd_guided32)
> +DO_TEST (test_tpf_simd_runtime)
> +DO_TEST (test_ttd_normal)
> +DO_TEST (test_ttd_ds128_normal)
> +DO_TEST (test_ttds_normal)
> +DO_TEST (test_ttds_ds128_normal)
> +DO_TEST (test_ttdpf_static)
> +DO_TEST (test_ttdpf_static32)
> +DO_TEST (test_ttdpf_auto)
> +DO_TEST (test_ttdpf_guided32)
> +DO_TEST (test_ttdpf_runtime)
> +DO_TEST (test_ttdpf_ds128_static)
> +DO_TEST (test_ttdpf_ds128_static32)
> +DO_TEST (test_ttdpf_ds128_auto)
> +DO_TEST (test_ttdpf_ds128_guided32)
> +DO_TEST (test_ttdpf_ds128_runtime)
> +DO_TEST (test_ttdpfs_static)
> +DO_TEST (test_ttdpfs_static32)
> +DO_TEST (test_ttdpfs_auto)
> +DO_TEST (test_ttdpfs_guided32)
> +DO_TEST (test_ttdpfs_runtime)
> +DO_TEST (test_ttdpfs_ds128_static)
> +DO_TEST (test_ttdpfs_ds128_static32)
> +DO_TEST (test_ttdpfs_ds128_auto)
> +DO_TEST (test_ttdpfs_ds128_guided32)
> +DO_TEST (test_ttdpfs_ds128_runtime)
> diff --git a/libgomp/testsuite/libgomp.c/for-6.c b/libgomp/testsuite/libgomp.c/for-6.c
> index 7f3c65e..50a866a 100644
> --- a/libgomp/testsuite/libgomp.c/for-6.c
> +++ b/libgomp/testsuite/libgomp.c/for-6.c
> @@ -5,6 +5,12 @@ 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
>   
>   #define F for
> @@ -27,6 +33,7 @@ extern void abort ();
>   #define OMPFROM(v) DO_PRAGMA (omp target update from(v))
>   #define OMPTO(v) DO_PRAGMA (omp target update to(v))
>   
> +#if TEST_ALL || TEST_NR == 1
>   #define F teams distribute
>   #define G td
>   #define S
> @@ -36,7 +43,9 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 2
>   #define F teams distribute
>   #define G td_ds128
>   #define S dist_schedule(static, 128)
> @@ -46,7 +55,9 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 3
>   #define F teams distribute simd
>   #define G tds
>   #define S
> @@ -56,7 +67,9 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || TEST_NR == 4
>   #define F teams distribute simd
>   #define G tds_ds128
>   #define S dist_schedule(static, 128)
> @@ -66,58 +79,57 @@ extern void abort ();
>   #undef N
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (5 <= TEST_NR && TEST_NR <= 9)
>   #define F teams distribute parallel for
>   #define G tdpf
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (10 <= TEST_NR && TEST_NR <= 14)
>   #define F teams distribute parallel for dist_schedule(static, 128)
>   #define G tdpf_ds128
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (15 <= TEST_NR && TEST_NR <= 19)
>   #define F teams distribute parallel for simd
>   #define G tdpfs
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
> +#if TEST_ALL || (20 <= TEST_NR && TEST_NR <= 24)
>   #define F teams distribute parallel for simd dist_schedule(static, 128)
>   #define G tdpfs_ds128
>   #include "for-1.h"
>   #undef F
>   #undef G
> +#endif
>   
>   int
>   main ()
>   {
> -  if (test_td_normal ()
> -      || test_td_ds128_normal ()
> -      || test_tds_normal ()
> -      || test_tds_ds128_normal ()
> -      || test_tdpf_static ()
> -      || test_tdpf_static32 ()
> -      || test_tdpf_auto ()
> -      || test_tdpf_guided32 ()
> -      || test_tdpf_runtime ()
> -      || test_tdpf_ds128_static ()
> -      || test_tdpf_ds128_static32 ()
> -      || test_tdpf_ds128_auto ()
> -      || test_tdpf_ds128_guided32 ()
> -      || test_tdpf_ds128_runtime ()
> -      || test_tdpfs_static ()
> -      || test_tdpfs_static32 ()
> -      || test_tdpfs_auto ()
> -      || test_tdpfs_guided32 ()
> -      || test_tdpfs_runtime ()
> -      || test_tdpfs_ds128_static ()
> -      || test_tdpfs_ds128_static32 ()
> -      || test_tdpfs_ds128_auto ()
> -      || test_tdpfs_ds128_guided32 ()
> -      || test_tdpfs_ds128_runtime ())
> -    abort ();
> +#define DO_TEST_1(test)				\
> +  do {						\
> +    if (test ())				\
> +      abort ();					\
> +  } while (0)
> +
> +#ifdef ONE_TEST
> +  DO_TEST_1 (ONE_TEST);
> +#else
> +#define DO_TEST(test) DO_TEST_1 (test);
> +#include "for-6.list"
> +#undef DO_TEST
> +#endif
> +#undef DO_TEST_1
> +
>     return 0;
>   }
> diff --git a/libgomp/testsuite/libgomp.c/for-6.list b/libgomp/testsuite/libgomp.c/for-6.list
> new file mode 100644
> index 0000000..438ecff
> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.c/for-6.list
> @@ -0,0 +1,24 @@
> +DO_TEST (test_td_normal)
> +DO_TEST (test_td_ds128_normal)
> +DO_TEST (test_tds_normal)
> +DO_TEST (test_tds_ds128_normal)
> +DO_TEST (test_tdpf_static)
> +DO_TEST (test_tdpf_static32)
> +DO_TEST (test_tdpf_auto)
> +DO_TEST (test_tdpf_guided32)
> +DO_TEST (test_tdpf_runtime)
> +DO_TEST (test_tdpf_ds128_static)
> +DO_TEST (test_tdpf_ds128_static32)
> +DO_TEST (test_tdpf_ds128_auto)
> +DO_TEST (test_tdpf_ds128_guided32)
> +DO_TEST (test_tdpf_ds128_runtime)
> +DO_TEST (test_tdpfs_static)
> +DO_TEST (test_tdpfs_static32)
> +DO_TEST (test_tdpfs_auto)
> +DO_TEST (test_tdpfs_guided32)
> +DO_TEST (test_tdpfs_runtime)
> +DO_TEST (test_tdpfs_ds128_static)
> +DO_TEST (test_tdpfs_ds128_static32)
> +DO_TEST (test_tdpfs_ds128_auto)
> +DO_TEST (test_tdpfs_ds128_guided32)
> +DO_TEST (test_tdpfs_ds128_runtime)
> 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2017-11-24 15:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <6df8f8dd-4880-0828-4c0c-1719fed02c01@mentor.com>
2017-11-24 16:00 ` [RFC] Generate sub-tests from libgomp.c/for-{3,5,6}.c Tom de Vries

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).