libgomp.texi: Add OpenMP 5.2 implementation status

Message ID 0dd4b123-47a3-4f49-3d28-5efb937bdf61@mentor.com
State New
Headers
Series libgomp.texi: Add OpenMP 5.2 implementation status |

Commit Message

Tobias Burnus May 14, 2022, 9:33 p.m. UTC
  This patch adds the new-in-5.2 features table to the OpenMP Implementation Status
chapter of libgomp.
It is based on appendix 5.1 and a mix of my wording and Jakub's wording,
used when he did the implemented-in-GCC-xx archeology.

( The entries should be/should remain aligned with the just-posted wwwdocs patch,
https://gcc.gnu.org/pipermail/gcc-patches/2022-May/594865.html )

OK?

Tobias
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
  

Comments

Jakub Jelinek May 17, 2022, 7:50 a.m. UTC | #1
On Sat, May 14, 2022 at 11:33:52PM +0200, Tobias Burnus wrote:
> libgomp/
> 	* libgomp.texi (OpenMP Implementation Status): Add 5.2 table.
> 
> diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi
> index b5e5fbb8cca..903b3cc8904 100644
> --- a/libgomp/libgomp.texi
> +++ b/libgomp/libgomp.texi
> @@ -283,21 +285,21 @@ The OpenMP 4.5 specification is fully supported.
>        @code{append_args} @tab N @tab
>  @item @code{dispatch} construct @tab N @tab
>  @item device-specific ICV settings the environment variables @tab N @tab
> -@item assume directive @tab N @tab
> +@item @code{assume} directive @tab N @tab
>  @item @code{nothing} directive @tab Y @tab
>  @item @code{error} directive @tab Y @tab

The above change will clash with your change in the other patch, just
change it once, perhaps better in this patch.

> +@item @code{omp}/@code{ompx}/@code{ompx} sentinels and @code{omp_}/@code{ompx_} namespaces @tab N @tab

The second ompx should be omx.

Not really sure if there is anything to change for the above item, we do
handle omp sentinels, handling ompx and omx sentinels really depends on
whether we have some extension directives, when we don't, there is no
point supporting those...  And for the namespaces, it is just a declaration
that the prefixes are reserved, we can't warn on them because we don't know
if they aren't actually the implementation of those extensions...
So perhaps N/A instead of N?

> +@item Clauses on @code{end} directive can be on directive @tab N @tab
> +@item Deprecation of no-argument @code{destroy} clause on @code{depobj} @tab N @tab
> +@item @code{linear} clause syntax changes and @code{step} modifier @tab N @tab
> +@item Deprecation of minus operator for reductions @tab N @tab
> +@item Deprecation of separating @code{map} modifiers without comma @tab N @tab
> +@item @code{declare mapper} with iterator and @code{present} modifiers @tab N @tab
> +@item If a matching mapped list item is not found in the data environment, the pointer retains its original value @tab N @tab
> +@item New @code{enter} clause replacing @code{to} on declare target directive @tab N @tab

See below for 2 bullets.

> +@item Extended list of directives permitted in Fortran pure procedures @tab N @tab
> +@item New @code{allocators} directive for Fortran @tab N @tab
> +@item Optional paired @code{end} directive with @code{dispatch} @tab N @tab
> +@item New @code{memspace} and @code{traits} modifiers for @code{uses_allocators} @tab N @tab
> +@item New @code{otherwise} clause replacing @code{default} on metadirectives @tab N @tab

Don't we want to split this into 2 bullets?
One for otherwise clause, one for deprecation of default clause?
Because I'm pretty sure that is how we are going to implement it, the
first one can be done very soon, the latter should be done as late as
possible (only when we have at least whole 5.1 or better most of 5.2 too
implemented).

> +@item Deprecation of delimited form of @code{declare target} @tab N @tab
> +@item Reproducible semantics changed for @code{order(concurrent)} @tab N @tab
> +@item @code{allocate} and @code{firstprivate} clauses on @code{scope} @tab N @tab
> +@item @code{ompt_callback_work} @tab N @tab
> +@item Extended map-type handling of @code{target enter/exit data} @tab N @tab
> +@item New @code{doacross} clause replacing @code{depend} with @code{sourch}/@code{sink} modifier @tab N @tab

s/sourch/source/  and see above for 2 bullets.

> +@item @code{omp_cur_iteration} keyword @tab N @tab
> +@end multitable

Otherwise LGTM.

	Jakub
  

Patch

libgomp.texi: Add OpenMP 5.2 implementation status

libgomp/
	* libgomp.texi (OpenMP Implementation Status): Add 5.2 table.

diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi
index b5e5fbb8cca..903b3cc8904 100644
--- a/libgomp/libgomp.texi
+++ b/libgomp/libgomp.texi
@@ -158,6 +159,7 @@  See also @ref{OpenMP Implementation Status}.
 * OpenMP 4.5:: Feature completion status to 4.5 specification
 * OpenMP 5.0:: Feature completion status to 5.0 specification
 * OpenMP 5.1:: Feature completion status to 5.1 specification
+* OpenMP 5.2:: Feature completion status to 5.2 specification
 @end menu
 
 The @code{_OPENMP} preprocessor macro and Fortran's @code{openmp_version}
@@ -182,7 +184,7 @@  The OpenMP 4.5 specification is fully supported.
 @item Iterators @tab Y @tab
 @item @code{metadirective} directive @tab N @tab
 @item @code{declare variant} directive
-      @tab P @tab simd traits not handled correctly
+      @tab P @tab @emph{simd} traits not handled correctly
 @item @emph{target-offload-var} ICV and @code{OMP_TARGET_OFFLOAD}
       env variable @tab Y @tab
 @item Nested-parallel changes to @emph{max-active-levels-var} ICV @tab Y @tab
@@ -220,7 +222,7 @@  The OpenMP 4.5 specification is fully supported.
       @tab Y @tab Some are only stubs
 @item Memory management routines @tab Y @tab
 @item @code{allocate} directive @tab N @tab
-@item @code{allocate} clause @tab P @tab initial support
+@item @code{allocate} clause @tab P @tab Initial support
 @item @code{use_device_addr} clause on @code{target data} @tab Y @tab
 @item @code{ancestor} modifier on @code{device} clause
       @tab P @tab Reverse offload unsupported
@@ -283,21 +285,21 @@  The OpenMP 4.5 specification is fully supported.
       @code{append_args} @tab N @tab
 @item @code{dispatch} construct @tab N @tab
 @item device-specific ICV settings the environment variables @tab N @tab
-@item assume directive @tab N @tab
+@item @code{assume} directive @tab N @tab
 @item @code{nothing} directive @tab Y @tab
 @item @code{error} directive @tab Y @tab
 @item @code{masked} construct @tab Y @tab
 @item @code{scope} directive @tab Y @tab
 @item Loop transformation constructs @tab N @tab
 @item @code{strict} modifier in the @code{grainsize} and @code{num_tasks}
-      clauses of the taskloop construct @tab Y @tab
+      clauses of the @code{taskloop} construct @tab Y @tab
 @item @code{align} clause/modifier in @code{allocate} directive/clause
       and @code{allocator} directive @tab P @tab C/C++ on clause only
 @item @code{thread_limit} clause to @code{target} construct @tab Y @tab
 @item @code{has_device_addr} clause to @code{target} construct @tab Y @tab
-@item iterators in @code{target update} motion clauses and @code{map}
+@item Iterators in @code{target update} motion clauses and @code{map}
       clauses @tab N @tab
-@item indirect calls to the device version of a procedure or function in
+@item Indirect calls to the device version of a procedure or function in
       @code{target} regions @tab N @tab
 @item @code{interop} directive @tab N @tab
 @item @code{omp_interop_t} object support in runtime routines @tab N @tab
@@ -345,6 +347,37 @@  The OpenMP 4.5 specification is fully supported.
 @end multitable
 
 
+@node OpenMP 5.2
+@section OpenMP 5.2
+
+@unnumberedsubsec New features listed in Appendix B of the OpenMP specification
+
+@multitable @columnfractions .60 .10 .25
+@item @code{omp_in_explicit_task} routine and @emph{implicit-task-var} ICV @tab N @tab
+@item @code{omp}/@code{ompx}/@code{ompx} sentinels and @code{omp_}/@code{ompx_} namespaces @tab N @tab
+@item Clauses on @code{end} directive can be on directive @tab N @tab
+@item Deprecation of no-argument @code{destroy} clause on @code{depobj} @tab N @tab
+@item @code{linear} clause syntax changes and @code{step} modifier @tab N @tab
+@item Deprecation of minus operator for reductions @tab N @tab
+@item Deprecation of separating @code{map} modifiers without comma @tab N @tab
+@item @code{declare mapper} with iterator and @code{present} modifiers @tab N @tab
+@item If a matching mapped list item is not found in the data environment, the pointer retains its original value @tab N @tab
+@item New @code{enter} clause replacing @code{to} on declare target directive @tab N @tab
+@item Extended list of directives permitted in Fortran pure procedures @tab N @tab
+@item New @code{allocators} directive for Fortran @tab N @tab
+@item Optional paired @code{end} directive with @code{dispatch} @tab N @tab
+@item New @code{memspace} and @code{traits} modifiers for @code{uses_allocators} @tab N @tab
+@item New @code{otherwise} clause replacing @code{default} on metadirectives @tab N @tab
+@item Deprecation of delimited form of @code{declare target} @tab N @tab
+@item Reproducible semantics changed for @code{order(concurrent)} @tab N @tab
+@item @code{allocate} and @code{firstprivate} clauses on @code{scope} @tab N @tab
+@item @code{ompt_callback_work} @tab N @tab
+@item Extended map-type handling of @code{target enter/exit data} @tab N @tab
+@item New @code{doacross} clause replacing @code{depend} with @code{sourch}/@code{sink} modifier @tab N @tab
+@item @code{omp_cur_iteration} keyword @tab N @tab
+@end multitable
+
+
 @c ---------------------------------------------------------------------
 @c OpenMP Runtime Library Routines
 @c ---------------------------------------------------------------------