Commit d8ab4e54 by Tom de Vries Committed by Tom de Vries

[nvptx] Postpone warnings in nvptx_goacc_validate_dims_1

Move warnings in nvptx_goacc_validate_dims_1 to as late as possible.  This
allows us more flexibility in setting the dimensions.

2019-01-07  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Move warnings to
	as late as possible.

From-SVN: r267627
parent 764ecad4
2019-01-07 Tom de Vries <tdevries@suse.de> 2019-01-07 Tom de Vries <tdevries@suse.de>
* config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Move warnings to
as late as possible.
2019-01-07 Tom de Vries <tdevries@suse.de>
* config/nvptx/nvptx.c (PTX_VECTOR_LENGTH): Remove. * config/nvptx/nvptx.c (PTX_VECTOR_LENGTH): Remove.
(PTX_DEFAULT_VECTOR_LENGTH, PTX_MAX_VECTOR_LENGTH): Define. (PTX_DEFAULT_VECTOR_LENGTH, PTX_MAX_VECTOR_LENGTH): Define.
(nvptx_goacc_validate_dims_1, nvptx_dim_limit) (nvptx_goacc_validate_dims_1, nvptx_dim_limit)
......
...@@ -5376,25 +5376,37 @@ nvptx_goacc_validate_dims_1 (tree decl, int dims[], int fn_level) ...@@ -5376,25 +5376,37 @@ nvptx_goacc_validate_dims_1 (tree decl, int dims[], int fn_level)
gcc_assert (dims[GOMP_DIM_GANG] >= -1); gcc_assert (dims[GOMP_DIM_GANG] >= -1);
} }
if (dims[GOMP_DIM_VECTOR] >= 0 int old_dims[GOMP_DIM_MAX];
&& dims[GOMP_DIM_VECTOR] != PTX_WARP_SIZE) unsigned int i;
for (i = 0; i < GOMP_DIM_MAX; ++i)
old_dims[i] = dims[i];
const char *vector_reason = NULL;
if (dims[GOMP_DIM_VECTOR] == 0)
{ {
warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0, vector_reason = G_("using vector_length (%d), ignoring runtime setting");
dims[GOMP_DIM_VECTOR]
? G_("using vector_length (%d), ignoring %d")
: G_("using vector_length (%d), ignoring runtime setting"),
PTX_DEFAULT_VECTOR_LENGTH, dims[GOMP_DIM_VECTOR]);
dims[GOMP_DIM_VECTOR] = PTX_DEFAULT_VECTOR_LENGTH; dims[GOMP_DIM_VECTOR] = PTX_DEFAULT_VECTOR_LENGTH;
} }
if (dims[GOMP_DIM_VECTOR] > 0
&& dims[GOMP_DIM_VECTOR] != PTX_WARP_SIZE)
dims[GOMP_DIM_VECTOR] = PTX_DEFAULT_VECTOR_LENGTH;
/* Check the num workers is not too large. */ /* Check the num workers is not too large. */
if (dims[GOMP_DIM_WORKER] > PTX_WORKER_LENGTH) if (dims[GOMP_DIM_WORKER] > PTX_WORKER_LENGTH)
{ dims[GOMP_DIM_WORKER] = PTX_WORKER_LENGTH;
warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0,
"using num_workers (%d), ignoring %d", if (dims[GOMP_DIM_VECTOR] != old_dims[GOMP_DIM_VECTOR])
PTX_WORKER_LENGTH, dims[GOMP_DIM_WORKER]); warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0,
dims[GOMP_DIM_WORKER] = PTX_WORKER_LENGTH; vector_reason != NULL
} ? vector_reason
: G_("using vector_length (%d), ignoring %d"),
dims[GOMP_DIM_VECTOR], old_dims[GOMP_DIM_VECTOR]);
if (dims[GOMP_DIM_WORKER] != old_dims[GOMP_DIM_WORKER])
warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0,
G_("using num_workers (%d), ignoring %d"),
dims[GOMP_DIM_WORKER], old_dims[GOMP_DIM_WORKER]);
if (oacc_default_dims_p) if (oacc_default_dims_p)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment