[OpenACC 'kernels'] '-fopenacc-kernels=[...]' -> '--param=openacc-kernels=[...]'

This configuration knob is temporary, and isn't really meant to be exposed to
users.

	gcc/
	* params.opt (-param=openacc-kernels=): Add.
	* omp-oacc-kernels-decompose.cc
	(pass_omp_oacc_kernels_decompose::gate): Use it.
	* doc/invoke.texi (-fopenacc-kernels=@var{mode}): Move...
	(--param): ... here, 'openacc-kernels'.
	gcc/c-family/
	* c.opt (fopenacc-kernels=): Remove.
	gcc/fortran/
	* lang.opt (fopenacc-kernels=): Remove.
	gcc/testsuite/
	* c-c++-common/goacc/if-clause-2.c: '-fopenacc-kernels=[...]' ->
	'--param=openacc-kernels=[...]'.
	* c-c++-common/goacc/kernels-decompose-1.c: Likewise.
	* c-c++-common/goacc/kernels-decompose-2.c: Likewise.
	* c-c++-common/goacc/kernels-decompose-ice-1.c: Likewise.
	* c-c++-common/goacc/kernels-decompose-ice-2.c: Likewise.
	* gfortran.dg/goacc/kernels-decompose-1.f95: Likewise.
	* gfortran.dg/goacc/kernels-decompose-2.f95: Likewise.
	* gfortran.dg/goacc/kernels-tree.f95: Likewise.
	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c:
	'-fopenacc-kernels=[...]' -> '--param=openacc-kernels=[...]'.
	* 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-fortran/pr94358-1.f90: Likewise.
This commit is contained in:
Thomas Schwinge 2021-04-19 10:24:49 +02:00
parent 15cfa8ddac
commit 3395dfc4da
17 changed files with 37 additions and 43 deletions

View file

@ -1873,19 +1873,6 @@ fopenacc-dim=
C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
Specify default OpenACC compute dimensions.
fopenacc-kernels=
C ObjC C++ ObjC++ RejectNegative Joined Enum(openacc_kernels) Var(flag_openacc_kernels) Init(OPENACC_KERNELS_PARLOOPS)
-fopenacc-kernels=[decompose|parloops] Specify mode of OpenACC 'kernels' constructs handling.
Enum
Name(openacc_kernels) Type(enum openacc_kernels)
EnumValue
Enum(openacc_kernels) String(decompose) Value(OPENACC_KERNELS_DECOMPOSE)
EnumValue
Enum(openacc_kernels) String(parloops) Value(OPENACC_KERNELS_PARLOOPS)
fopenmp
C ObjC C++ ObjC++ LTO Var(flag_openmp)
Enable OpenMP (implies -frecursive in Fortran).

View file

@ -202,7 +202,7 @@ in the following sections.
-aux-info @var{filename} -fallow-parameterless-variadic-functions @gol
-fno-asm -fno-builtin -fno-builtin-@var{function} -fgimple@gol
-fhosted -ffreestanding @gol
-fopenacc -fopenacc-dim=@var{geom} -fopenacc-kernels=@var{mode} @gol
-fopenacc -fopenacc-dim=@var{geom} @gol
-fopenmp -fopenmp-simd @gol
-fms-extensions -fplan9-extensions -fsso-struct=@var{endianness} @gol
-fallow-single-precision -fcond-mismatch -flax-vector-conversions @gol
@ -2619,18 +2619,6 @@ not explicitly specify. The @var{geom} value is a triple of
':'-separated sizes, in order 'gang', 'worker' and, 'vector'. A size
can be omitted, to use a target-specific default value.
@item -fopenacc-kernels=@var{mode}
@opindex fopenacc-kernels
@cindex OpenACC accelerator programming
Specify mode of OpenACC `kernels' constructs handling.
With @option{-fopenacc-kernels=decompose}, OpenACC `kernels'
constructs are decomposed into parts, a sequence of compute
constructs, each then handled individually.
This is work in progress.
With @option{-fopenacc-kernels=parloops}, OpenACC `kernels' constructs
are handled by the @samp{parloops} pass, en bloc.
This is the current default.
@item -fopenmp
@opindex fopenmp
@cindex OpenMP parallel
@ -14376,6 +14364,16 @@ The parameter is used only in GIMPLE FE.
The maximum number of 'after supernode' exploded nodes within the analyzer
per supernode, before terminating analysis.
@item openacc-kernels
Specify mode of OpenACC `kernels' constructs handling.
With @option{--param=openacc-kernels=decompose}, OpenACC `kernels'
constructs are decomposed into parts, a sequence of compute
constructs, each then handled individually.
This is work in progress.
With @option{--param=openacc-kernels=parloops}, OpenACC `kernels'
constructs are handled by the @samp{parloops} pass, en bloc.
This is the current default.
@end table
The following choices of @var{name} are available on AArch64 targets:

View file

@ -691,10 +691,6 @@ fopenacc-dim=
Fortran LTO Joined Var(flag_openacc_dims)
; Documented in C
fopenacc-kernels=
Fortran RejectNegative Joined Enum(openacc_kernels) Var(flag_openacc_kernels) Init(OPENACC_KERNELS_PARLOOPS)
; Documented in C
fopenmp
Fortran LTO
; Documented in C

View file

@ -1527,7 +1527,7 @@ public:
virtual bool gate (function *)
{
return (flag_openacc
&& flag_openacc_kernels == OPENACC_KERNELS_DECOMPOSE);
&& param_openacc_kernels == OPENACC_KERNELS_DECOMPOSE);
}
virtual unsigned int execute (function *)
{

View file

@ -777,6 +777,19 @@ The minimum probability of reaching a source block for interblock speculative sc
Common Joined UInteger Var(param_min_vect_loop_bound) Param Optimization
If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization.
-param=openacc-kernels=
Common Joined Enum(openacc_kernels) Var(param_openacc_kernels) Init(OPENACC_KERNELS_PARLOOPS) Param
--param=openacc-kernels=[decompose|parloops] Specify mode of OpenACC 'kernels' constructs handling.
Enum
Name(openacc_kernels) Type(enum openacc_kernels)
EnumValue
Enum(openacc_kernels) String(decompose) Value(OPENACC_KERNELS_DECOMPOSE)
EnumValue
Enum(openacc_kernels) String(parloops) Value(OPENACC_KERNELS_PARLOOPS)
-param=parloops-chunk-size=
Common Joined UInteger Var(param_parloops_chunk_size) Param Optimization
Chunk size of omp schedule for loops parallelized by parloops.

View file

@ -1,5 +1,5 @@
/* { dg-additional-options "-fdump-tree-gimple" } */
/* { dg-additional-options "-fopenacc-kernels=decompose" }
/* { dg-additional-options "--param=openacc-kernels=decompose" }
{ dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" } */
void

View file

@ -2,7 +2,7 @@
/* { dg-additional-options "-fopt-info-omp-all" } */
/* { dg-additional-options "-fdump-tree-gimple" } */
/* { dg-additional-options "-fopenacc-kernels=decompose" }
/* { dg-additional-options "--param=openacc-kernels=decompose" }
{ dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" } */
/* See also '../../gfortran.dg/goacc/kernels-decompose-1.f95'. */

View file

@ -1,7 +1,7 @@
/* Test OpenACC 'kernels' construct decomposition. */
/* { dg-additional-options "-fopt-info-omp-all" } */
/* { dg-additional-options "-fopenacc-kernels=decompose" }
/* { dg-additional-options "--param=openacc-kernels=decompose" }
/* { dg-additional-options "-O2" } for 'parloops'. */
/* See also '../../gfortran.dg/goacc/kernels-decompose-2.f95'. */

View file

@ -1,7 +1,7 @@
/* Test OpenACC 'kernels' construct decomposition. */
/* { dg-additional-options "-fopt-info-omp-all" } */
/* { dg-additional-options "-fopenacc-kernels=decompose" } */
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
/* { dg-ice "TODO" }
{ dg-prune-output "during GIMPLE pass: omplower" } */

View file

@ -1,6 +1,6 @@
/* Test OpenACC 'kernels' construct decomposition. */
/* { dg-additional-options "-fopenacc-kernels=decompose" } */
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
/* { dg-ice "TODO" }
{ dg-prune-output "during GIMPLE pass: omplower" } */

View file

@ -2,7 +2,7 @@
! { dg-additional-options "-fopt-info-omp-all" }
! { dg-additional-options "-fdump-tree-gimple" }
! { dg-additional-options "-fopenacc-kernels=decompose" }
! { dg-additional-options "--param=openacc-kernels=decompose" }
! { dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" }
! See also '../../c-c++-common/goacc/kernels-decompose-1.c'.

View file

@ -1,7 +1,7 @@
! Test OpenACC 'kernels' construct decomposition.
! { dg-additional-options "-fopt-info-omp-all" }
! { dg-additional-options "-fopenacc-kernels=decompose" }
! { dg-additional-options "--param=openacc-kernels=decompose" }
! { dg-additional-options "-O2" } for 'parloops'.
! See also '../../c-c++-common/goacc/kernels-decompose-2.c'.

View file

@ -1,6 +1,6 @@
! { dg-do compile }
! { dg-additional-options "-fdump-tree-original" }
! { dg-additional-options "-fopenacc-kernels=decompose" }
! { dg-additional-options "--param=openacc-kernels=decompose" }
! { dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" }
program test

View file

@ -1,4 +1,4 @@
/* { dg-additional-options "-fopenacc-kernels=decompose" } */
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
/* Hopefully, this is the same issue as '../../../gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c'.
{ dg-ice "TODO" }
TODO { dg-prune-output "during GIMPLE pass: omplower" }

View file

@ -1,4 +1,4 @@
/* { dg-additional-options "-fopenacc-kernels=decompose" } */
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
/* See also 'declare-vla-kernels-decompose-ice-1.c'. */

View file

@ -1,7 +1,7 @@
/* Test OpenACC 'kernels' construct decomposition. */
/* { dg-additional-options "-fopt-info-omp-all" } */
/* { dg-additional-options "-fopenacc-kernels=decompose" } */
/* { dg-additional-options "--param=openacc-kernels=decompose" } */
/* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
passed to 'incr' may be unset, and in that case, it will be set to [...]",

View file

@ -1,6 +1,6 @@
! { dg-do run }
! { dg-additional-options "-fopt-info-omp-all" }
! { dg-additional-options "-fopenacc-kernels=decompose" }
! { dg-additional-options "--param=openacc-kernels=decompose" }
! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
! passed to 'incr' may be unset, and in that case, it will be set to [...]",