]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/passes.def
Decompose OpenACC 'kernels' constructs into parts, a sequence of compute constructs
authorGergö Barany <gergo@codesourcery.com>
Thu, 31 Jan 2019 23:59:30 +0000 (00:59 +0100)
committerThomas Schwinge <thomas@codesourcery.com>
Fri, 13 Nov 2020 21:58:57 +0000 (22:58 +0100)
commite898ce7997733c29dcab9c3c62ca102c7f9fa6eb
tree332bb0438f3383bc22d777c3b0008c269dba4d8a
parentbd7885755405bc9947ebe805a53d6100c78c8e82
Decompose OpenACC 'kernels' constructs into parts, a sequence of compute constructs

Not yet enabled by default: for now, the current mode of OpenACC 'kernels'
constructs handling still remains '-fopenacc-kernels=parloops', but that is to
change later.

gcc/
* omp-oacc-kernels-decompose.cc: New.
* Makefile.in (OBJS): Add it.
* passes.def: Instantiate it.
* tree-pass.h (make_pass_omp_oacc_kernels_decompose): Declare.
* flag-types.h (enum openacc_kernels): Add.
* doc/invoke.texi (-fopenacc-kernels): Document.
* gimple.h (enum gf_mask): Add
'GF_OMP_TARGET_KIND_OACC_PARALLEL_KERNELS_PARALLELIZED',
'GF_OMP_TARGET_KIND_OACC_PARALLEL_KERNELS_GANG_SINGLE',
'GF_OMP_TARGET_KIND_OACC_DATA_KERNELS'.
(is_gimple_omp_oacc, is_gimple_omp_offloaded): Handle these.
* gimple-pretty-print.c (dump_gimple_omp_target): Likewise.
* omp-expand.c (expand_omp_target, build_omp_regions_1)
(omp_make_gimple_edges): Likewise.
* omp-low.c (scan_sharing_clauses, scan_omp_for)
(check_omp_nesting_restrictions, lower_oacc_reductions)
(lower_oacc_head_mark, lower_omp_target): Likewise.
* omp-offload.c (execute_oacc_device_lower): Likewise.
gcc/c-family/
* c.opt (fopenacc-kernels): Add.
gcc/fortran/
* lang.opt (fopenacc-kernels): Add.
gcc/testsuite/
* c-c++-common/goacc/kernels-decompose-1.c: New.
* c-c++-common/goacc/kernels-decompose-2.c: New.
* c-c++-common/goacc/kernels-decompose-ice-1.c: New.
* c-c++-common/goacc/kernels-decompose-ice-2.c: New.
* gfortran.dg/goacc/kernels-decompose-1.f95: New.
* gfortran.dg/goacc/kernels-decompose-2.f95: New.
* c-c++-common/goacc/if-clause-2.c: Adjust.
* gfortran.dg/goacc/kernels-tree.f95: Likewise.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c:
New.
* testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/declare-vla.c: Adjust.
* testsuite/libgomp.oacc-fortran/pr94358-1.f90: Likewise.

Co-authored-by: Thomas Schwinge <thomas@codesourcery.com>
26 files changed:
gcc/Makefile.in
gcc/c-family/c.opt
gcc/doc/invoke.texi
gcc/flag-types.h
gcc/fortran/lang.opt
gcc/gimple-pretty-print.c
gcc/gimple.h
gcc/omp-expand.c
gcc/omp-low.c
gcc/omp-oacc-kernels-decompose.cc [new file with mode: 0644]
gcc/omp-offload.c
gcc/passes.def
gcc/testsuite/c-c++-common/goacc/if-clause-2.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
gcc/tree-pass.h
libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose.c [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90