diff options
Diffstat (limited to 'clang/docs')
| -rw-r--r-- | clang/docs/AMDGPUSupport.rst | 4 | ||||
| -rw-r--r-- | clang/docs/ClangFormatStyleOptions.rst | 192 | ||||
| -rw-r--r-- | clang/docs/HIPSupport.rst | 3 | ||||
| -rw-r--r-- | clang/docs/Modules.rst | 17 | ||||
| -rw-r--r-- | clang/docs/OpenMPSupport.rst | 1324 | ||||
| -rw-r--r-- | clang/docs/ReleaseNotes.rst | 10 | 
6 files changed, 827 insertions, 723 deletions
| diff --git a/clang/docs/AMDGPUSupport.rst b/clang/docs/AMDGPUSupport.rst index 3eada5f..18e3de8 100644 --- a/clang/docs/AMDGPUSupport.rst +++ b/clang/docs/AMDGPUSupport.rst @@ -49,10 +49,6 @@ Predefined Macros       - Defined as 1 if the CU mode is enabled and 0 if the WGP mode is enabled.     * - ``__AMDGCN_UNSAFE_FP_ATOMICS__``       - Defined if unsafe floating-point atomics are allowed. -   * - ``__AMDGCN_WAVEFRONT_SIZE__`` -     - Defines the wavefront size. Allowed values are 32 and 64 (deprecated). -   * - ``__AMDGCN_WAVEFRONT_SIZE`` -     - Alias to ``__AMDGCN_WAVEFRONT_SIZE__`` (deprecated).     * - ``__HAS_FMAF__``       - Defined if FMAF instruction is available (deprecated).     * - ``__HAS_LDEXPF__`` diff --git a/clang/docs/ClangFormatStyleOptions.rst b/clang/docs/ClangFormatStyleOptions.rst index 570cab2..0b4a484 100644 --- a/clang/docs/ClangFormatStyleOptions.rst +++ b/clang/docs/ClangFormatStyleOptions.rst @@ -197,57 +197,29 @@ the configuration (without a prefix: ``Auto``).  .. _AlignAfterOpenBracket: -**AlignAfterOpenBracket** (``BracketAlignmentStyle``) :versionbadge:`clang-format 3.8` :ref:`¶ <AlignAfterOpenBracket>` +**AlignAfterOpenBracket** (``Boolean``) :versionbadge:`clang-format 3.8` :ref:`¶ <AlignAfterOpenBracket>`    If ``true``, horizontally aligns arguments after an open bracket. -  This applies to round brackets (parentheses), angle brackets and square -  brackets. - -  Possible values: - -  * ``BAS_Align`` (in configuration: ``Align``) -    Align parameters on the open bracket, e.g.: - -    .. code-block:: c++ - -      someLongFunction(argument1, -                       argument2); - -  * ``BAS_DontAlign`` (in configuration: ``DontAlign``) -    Don't align, instead use ``ContinuationIndentWidth``, e.g.: - -    .. code-block:: c++ - -      someLongFunction(argument1, -          argument2); - -  * ``BAS_AlwaysBreak`` (in configuration: ``AlwaysBreak``) -    Always break after an open bracket, if the parameters don't fit -    on a single line, e.g.: - -    .. code-block:: c++ -      someLongFunction( -          argument1, argument2); - -  * ``BAS_BlockIndent`` (in configuration: ``BlockIndent``) -    Always break after an open bracket, if the parameters don't fit -    on a single line. Closing brackets will be placed on a new line. -    E.g.: - -    .. code-block:: c++ +  .. code-block:: c++ -      someLongFunction( -          argument1, argument2 -      ) +    true:                         vs.   false +    someLongFunction(argument1,         someLongFunction(argument1, +                     argument2);            argument2); -    .. note:: - -     This currently only applies to braced initializer lists (when -     ``Cpp11BracedListStyle`` is not ``Block``) and parentheses. +  .. note:: +    As of clang-format 22 this option is a bool with the previous +    option of ``Align`` replaced with ``true``, ``DontAlign`` replaced +    with ``false``, and the options of ``AlwaysBreak`` and ``BlockIndent`` +    replaced with ``true`` and with setting of new style options using +    ``BreakAfterOpenBracketBracedList``, ``BreakAfterOpenBracketFunction``, +    ``BreakAfterOpenBracketIf``, ``BreakBeforeCloseBracketBracedList``, +    ``BreakBeforeCloseBracketFunction``, and ``BreakBeforeCloseBracketIf``. +  This applies to round brackets (parentheses), angle brackets and square +  brackets.  .. _AlignArrayOfStructures: @@ -2746,6 +2718,67 @@ the configuration (without a prefix: ``Auto``).       @Mock       DataLoad loader; +.. _BreakAfterOpenBracketBracedList: + +**BreakAfterOpenBracketBracedList** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakAfterOpenBracketBracedList>` +  Force break after the left bracket of a braced initializer list (when +  ``Cpp11BracedListStyle`` is ``true``) when the list exceeds the column +  limit. + +  .. code-block:: c++ + +    true:                             false: +    vector<int> x {         vs.       vector<int> x {1, +       1, 2, 3}                            2, 3} + +.. _BreakAfterOpenBracketFunction: + +**BreakAfterOpenBracketFunction** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakAfterOpenBracketFunction>` +  Force break after the left parenthesis of a function (declaration, +  definition, call) when the parameters exceed the column limit. + +  .. code-block:: c++ + +    true:                             false: +    foo (                   vs.       foo (a, +       a , b)                              b) + +.. _BreakAfterOpenBracketIf: + +**BreakAfterOpenBracketIf** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakAfterOpenBracketIf>` +  Force break after the left parenthesis of an if control statement +  when the expression exceeds the column limit. + +  .. code-block:: c++ + +    true:                             false: +    if constexpr (          vs.       if constexpr (a || +       a || b)                                      b) + +.. _BreakAfterOpenBracketLoop: + +**BreakAfterOpenBracketLoop** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakAfterOpenBracketLoop>` +  Force break after the left parenthesis of a loop control statement +  when the expression exceeds the column limit. + +  .. code-block:: c++ + +    true:                             false: +    while (                  vs.      while (a && +       a && b) {                             b) { + +.. _BreakAfterOpenBracketSwitch: + +**BreakAfterOpenBracketSwitch** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakAfterOpenBracketSwitch>` +  Force break after the left parenthesis of a switch control statement +  when the expression exceeds the column limit. + +  .. code-block:: c++ + +    true:                             false: +    switch (                 vs.      switch (a + +       a + b) {                               b) { +  .. _BreakAfterReturnType:  **BreakAfterReturnType** (``ReturnTypeBreakingStyle``) :versionbadge:`clang-format 19` :ref:`¶ <BreakAfterReturnType>` @@ -3383,6 +3416,79 @@ the configuration (without a prefix: ``Auto``). +.. _BreakBeforeCloseBracketBracedList: + +**BreakBeforeCloseBracketBracedList** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakBeforeCloseBracketBracedList>` +  Force break before the right bracket of a braced initializer list (when +  ``Cpp11BracedListStyle`` is ``true``) when the list exceeds the column +  limit. The break before the right bracket is only made if there is a +  break after the opening bracket. + +  .. code-block:: c++ + +    true:                             false: +    vector<int> x {         vs.       vector<int> x { +       1, 2, 3                           1, 2, 3} +    } + +.. _BreakBeforeCloseBracketFunction: + +**BreakBeforeCloseBracketFunction** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakBeforeCloseBracketFunction>` +  Force break before the right parenthesis of a function (declaration, +  definition, call) when the parameters exceed the column limit. + +  .. code-block:: c++ + +    true:                             false: +    foo (                   vs.       foo ( +       a , b                             a , b) +    ) + +.. _BreakBeforeCloseBracketIf: + +**BreakBeforeCloseBracketIf** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakBeforeCloseBracketIf>` +  Force break before the right parenthesis of an if control statement +  when the expression exceeds the column limit. The break before the +  closing parenthesis is only made if there is a break after the opening +  parenthesis. + +  .. code-block:: c++ + +    true:                             false: +    if constexpr (          vs.       if constexpr ( +       a || b                            a || b ) +    ) + +.. _BreakBeforeCloseBracketLoop: + +**BreakBeforeCloseBracketLoop** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakBeforeCloseBracketLoop>` +  Force break before the right parenthesis of a loop control statement +  when the expression exceeds the column limit. The break before the +  closing parenthesis is only made if there is a break after the opening +  parenthesis. + +  .. code-block:: c++ + +    true:                             false: +    while (                  vs.      while ( +       a && b                            a && b) { +    ) { + +.. _BreakBeforeCloseBracketSwitch: + +**BreakBeforeCloseBracketSwitch** (``Boolean``) :versionbadge:`clang-format 22` :ref:`¶ <BreakBeforeCloseBracketSwitch>` +  Force break before the right parenthesis of a switch control statement +  when the expression exceeds the column limit. The break before the +  closing parenthesis is only made if there is a break after the opening +  parenthesis. + +  .. code-block:: c++ + +    true:                             false: +    switch (                 vs.      switch ( +       a + b                             a + b) { +    ) { +  .. _BreakBeforeConceptDeclarations:  **BreakBeforeConceptDeclarations** (``BreakBeforeConceptDeclarationsStyle``) :versionbadge:`clang-format 12` :ref:`¶ <BreakBeforeConceptDeclarations>` diff --git a/clang/docs/HIPSupport.rst b/clang/docs/HIPSupport.rst index ec2af2a..ab9ea11 100644 --- a/clang/docs/HIPSupport.rst +++ b/clang/docs/HIPSupport.rst @@ -180,8 +180,7 @@ Predefined Macros       - Alias to ``__HIP_API_PER_THREAD_DEFAULT_STREAM__``. Deprecated.  Note that some architecture specific AMDGPU macros will have default values when -used from the HIP host compilation. Other :doc:`AMDGPU macros <AMDGPUSupport>` -like ``__AMDGCN_WAVEFRONT_SIZE__`` (deprecated) will default to 64 for example. +used from the HIP host compilation.  Compilation Modes  ================= diff --git a/clang/docs/Modules.rst b/clang/docs/Modules.rst index acbe45e..e45ee9f 100644 --- a/clang/docs/Modules.rst +++ b/clang/docs/Modules.rst @@ -421,13 +421,7 @@ As an example, the module map file for the C standard library might look a bit l  .. parsed-literal:: -  module std [system] [extern_c] { -    module assert { -      textual header "assert.h" -      header "bits/assert-decls.h" -      export * -    } - +  module std [system] {      module complex {        header "complex.h"        export * @@ -440,7 +434,6 @@ As an example, the module map file for the C standard library might look a bit l      module errno {        header "errno.h" -      header "sys/errno.h"        export *      } @@ -673,14 +666,14 @@ of checking *use-declaration*\s, and must still be a lexically-valid header  file. In the future, we intend to pre-tokenize such headers and include the  token sequence within the prebuilt module representation. -A header with the ``exclude`` specifier is excluded from the module. It will not be included when the module is built, nor will it be considered to be part of the module, even if an ``umbrella`` header or directory would otherwise make it part of the module. +A header with the ``exclude`` specifier is excluded from the module. It will not be included when the module is built, nor will it be considered to be part of the module, even if an ``umbrella`` directory would otherwise make it part of the module. -**Example:** The C header ``assert.h`` is an excellent candidate for a textual header, because it is meant to be included multiple times (possibly with different ``NDEBUG`` settings). However, declarations within it should typically be split into a separate modular header. +**Example:** A "X macro" header is an excellent candidate for a textual header, because it is can't be compiled standalone, and by itself does not contain any declarations.  .. parsed-literal:: -  module std [system] { -    textual header "assert.h" +  module MyLib [system] { +    textual header "xmacros.h"    }  A given header shall not be referenced by more than one *header-declaration*. diff --git a/clang/docs/OpenMPSupport.rst b/clang/docs/OpenMPSupport.rst index 61b5bab..10a8d09 100644 --- a/clang/docs/OpenMPSupport.rst +++ b/clang/docs/OpenMPSupport.rst @@ -1,662 +1,662 @@ -.. raw:: html
 -
 -  <style type="text/css">
 -    .none { background-color: #FFCCCC }
 -    .part { background-color: #FFFF99 }
 -    .good { background-color: #CCFF99 }
 -  </style>
 -
 -.. role:: none
 -.. role:: part
 -.. role:: good
 -
 -.. contents::
 -   :local:
 -
 -==============
 -OpenMP Support
 -==============
 -
 -Clang fully supports OpenMP 4.5, almost all of 5.0 and most of 5.1/2.
 -Clang supports offloading to X86_64, AArch64, PPC64[LE], NVIDIA GPUs (all models) and AMD GPUs (all models).
 -
 -In addition, the LLVM OpenMP runtime `libomp` supports the OpenMP Tools
 -Interface (OMPT) on x86, x86_64, AArch64, and PPC64 on Linux, Windows, and macOS.
 -OMPT is also supported for NVIDIA and AMD GPUs.
 -
 -For the list of supported features from OpenMP 5.0 and 5.1
 -see `OpenMP implementation details`_ and `OpenMP 51 implementation details`_.
 -
 -General improvements
 -====================
 -- New collapse clause scheme to avoid expensive remainder operations.
 -  Compute loop index variables after collapsing a loop nest via the
 -  collapse clause by replacing the expensive remainder operation with
 -  multiplications and additions.
 -
 -- When using the collapse clause on a loop nest the default behavior
 -  is to automatically extend the representation of the loop counter to
 -  64 bits for the cases where the sizes of the collapsed loops are not
 -  known at compile time. To prevent this conservative choice and use
 -  at most 32 bits, compile your program with the
 -  `-fopenmp-optimistic-collapse`.
 -
 -
 -GPU devices support
 -===================
 -
 -Data-sharing modes
 -------------------
 -
 -Clang supports two data-sharing models for Cuda devices: `Generic` and `Cuda`
 -modes. The default mode is `Generic`. `Cuda` mode can give an additional
 -performance and can be activated using the `-fopenmp-cuda-mode` flag. In
 -`Generic` mode all local variables that can be shared in the parallel regions
 -are stored in the global memory. In `Cuda` mode local variables are not shared
 -between the threads and it is user responsibility to share the required data
 -between the threads in the parallel regions. Often, the optimizer is able to
 -reduce the cost of `Generic` mode to the level of `Cuda` mode, but the flag,
 -as well as other assumption flags, can be used for tuning.
 -
 -Features not supported or with limited support for Cuda devices
 ----------------------------------------------------------------
 -
 -- Cancellation constructs are not supported.
 -
 -- Doacross loop nest is not supported.
 -
 -- User-defined reductions are supported only for trivial types.
 -
 -- Nested parallelism: inner parallel regions are executed sequentially.
 -
 -- Debug information for OpenMP target regions is supported, but sometimes it may
 -  be required to manually specify the address class of the inspected variables.
 -  In some cases the local variables are actually allocated in the global memory,
 -  but the debug info may be not aware of it.
 -
 -
 -.. _OpenMP implementation details:
 -
 -OpenMP 5.0 Implementation Details
 -=================================
 -
 -The following table provides a quick overview over various OpenMP 5.0 features
 -and their implementation status. Please post on the
 -`Discourse forums (Runtimes - OpenMP category)`_ for more
 -information or if you want to help with the
 -implementation.
 -
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -|Category                      | Feature                                                      | Status                   | Reviews                                                               |
 -+==============================+==============================================================+==========================+=======================================================================+
 -| loop                         | support != in the canonical loop form                        | :good:`done`             | D54441                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | #pragma omp loop (directive)                                 | :part:`partial`          | D145823 (combined forms)                                              |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | #pragma omp loop bind                                        | :part:`worked on`        | D144634 (needs review)                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | collapse imperfectly nested loop                             | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | collapse non-rectangular nested loop                         | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | C++ range-base for loop                                      | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | clause: if for SIMD directives                               | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | inclusive scan (matching C++17 PSTL)                         | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory management            | memory allocators                                            | :good:`done`             | r341687,r357929                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory management            | allocate directive and allocate clause                       | :good:`done`             | r355614,r335952                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| OMPD                         | OMPD interfaces                                              | :good:`done`             | https://reviews.llvm.org/D99914   (Supports only HOST(CPU) and Linux  |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| OMPT                         | OMPT interfaces (callback support)                           | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| thread affinity              | thread affinity                                              | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | taskloop reduction                                           | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | task affinity                                                | :part:`not upstream`     | https://github.com/jklinkenberg/openmp/tree/task-affinity             |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | clause: depend on the taskwait construct                     | :good:`done`             | D113540 (regular codegen only)                                        |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | depend objects and detachable tasks                          | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | mutexinoutset dependence-type for tasks                      | :good:`done`             | D53380,D57576                                                         |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | combined taskloop constructs                                 | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | master taskloop                                              | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | parallel master taskloop                                     | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | master taskloop simd                                         | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | parallel master taskloop simd                                | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| SIMD                         | atomic and simd constructs inside SIMD code                  | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| SIMD                         | SIMD nontemporal                                             | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | infer target functions from initializers                     | :part:`worked on`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | infer target variables from initializers                     | :good:`done`             | D146418                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | OMP_TARGET_OFFLOAD environment variable                      | :good:`done`             | D50522                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | support full 'defaultmap' functionality                      | :good:`done`             | D69204                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | device specific functions                                    | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: device_type                                          | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: extended device                                      | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: uses_allocators clause                               | :good:`done`             | https://github.com/llvm/llvm-project/pull/157025                      |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: in_reduction                                         | :part:`worked on`        | r308768                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | omp_get_device_num()                                         | :good:`done`             | D54342,D128347                                                        |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | structure mapping of references                              | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | nested target declare                                        | :good:`done`             | D51378                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | implicitly map 'this' (this[:1])                             | :good:`done`             | D55982                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | allow access to the reference count (omp_target_is_present)  | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | requires directive                                           | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: unified_shared_memory                                | :good:`done`             | D52625,D52359                                                         |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: unified_address                                      | :part:`partial`          |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: reverse_offload                                      | :part:`partial`          | D52780,D155003                                                        |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: atomic_default_mem_order                             | :good:`done`             | D53513                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: dynamic_allocators                                   | :part:`unclaimed parts`  | D53079                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | user-defined mappers                                         | :good:`done`             | D56326,D58638,D58523,D58074,D60972,D59474                             |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | map array-section with implicit mapper                       | :good:`done`             |  https://github.com/llvm/llvm-project/pull/101101                     |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | mapping lambda expression                                    | :good:`done`             | D51107                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | clause: use_device_addr for target data                      | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | support close modifier on map clause                         | :good:`done`             | D55719,D55892                                                         |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | teams construct on the host device                           | :good:`done`             | r371553                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | support non-contiguous array sections for target update      | :good:`done`             | https://github.com/llvm/llvm-project/pull/144635                      |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | pointer attachment                                           | :part:`being repaired`   | @abhinavgaba (https://github.com/llvm/llvm-project/pull/153683)       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| atomic                       | hints for the atomic construct                               | :good:`done`             | D51233                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| base language                | C11 support                                                  | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| base language                | C++11/14/17 support                                          | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| base language                | lambda support                                               | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | array shaping                                                | :good:`done`             | D74144                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | library shutdown (omp_pause_resource[_all])                  | :good:`done`             | D55078                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | metadirectives                                               | :part:`mostly done`      | D91944, https://github.com/llvm/llvm-project/pull/128640              |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | conditional modifier for lastprivate clause                  | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | iterator and multidependences                                | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | depobj directive and depobj dependency kind                  | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | user-defined function variants                               | :good:`done`.            | D67294, D64095, D71847, D71830, D109635                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | pointer/reference to pointer based array reductions          | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | prevent new type definitions in clauses                      | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory model                 | memory model update (seq_cst, acq_rel, release, acquire,...) | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -
 -
 -.. _OpenMP 51 implementation details:
 -
 -OpenMP 5.1 Implementation Details
 -=================================
 -
 -The following table provides a quick overview over various OpenMP 5.1 features
 -and their implementation status.
 -Please post on the
 -`Discourse forums (Runtimes - OpenMP category)`_ for more
 -information or if you want to help with the
 -implementation.
 -
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -|Category                      | Feature                                                      | Status                   | Reviews                                                               |
 -+==============================+==============================================================+==========================+=======================================================================+
 -| atomic                       | 'compare' clause on atomic construct                         | :good:`done`             | D120290, D120007, D118632, D120200, D116261, D118547, D116637         |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| atomic                       | 'fail' clause on atomic construct                            | :part:`worked on`        | D123235 (in progress)                                                 |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| base language                | C++ attribute specifier syntax                               | :good:`done`             | D105648                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | 'present' map type modifier                                  | :good:`done`             | D83061, D83062, D84422                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | 'present' motion modifier                                    | :good:`done`             | D84711, D84712                                                        |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | 'present' in defaultmap clause                               | :good:`done`             | D92427                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | map clause reordering based on 'present' modifier            | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | device-specific environment variables                        | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | omp_target_is_accessible routine                             | :good:`done`             | https://github.com/llvm/llvm-project/pull/138294                      |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | omp_get_mapped_ptr routine                                   | :good:`done`             | D141545                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | new async target memory copy routines                        | :good:`done`             | D136103                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | thread_limit clause on target construct                      | :part:`partial`          | D141540 (offload), D152054 (host, in progress)                        |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | has_device_addr clause on target construct                   | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | iterators in map clause or motion clauses                    | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | indirect clause on declare target directive                  | :part:`In Progress`      |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | allow virtual functions calls for mapped object on device    | :part:`partial`          |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | interop construct                                            | :part:`partial`          | parsing/sema done: D98558, D98834, D98815                             |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| device                       | assorted routines for querying interoperable properties      | :part:`partial`          | D106674                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | Loop tiling transformation                                   | :good:`done`             | D76342                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | Loop unrolling transformation                                | :good:`done`             | D99459                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| loop                         | 'reproducible'/'unconstrained' modifiers in 'order' clause   | :part:`partial`          | D127855                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory management            | alignment for allocate directive and clause                  | :good:`done`             | D115683                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory management            | 'allocator' modifier for allocate clause                     | :good:`done`             | https://github.com/llvm/llvm-project/pull/114883                      |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory management            | 'align' modifier for allocate clause                         | :good:`done`             | https://github.com/llvm/llvm-project/pull/121814                      |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory management            | new memory management routines                               | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory management            | changes to omp_alloctrait_key enum                           | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| memory model                 | seq_cst clause on flush construct                            | :good:`done`             | https://github.com/llvm/llvm-project/pull/114072                      |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | 'omp_all_memory' keyword and use in 'depend' clause          | :good:`done`             | D125828, D126321                                                      |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | error directive                                              | :good:`done`             | D139166                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | scope construct                                              | :good:`done`             | D157933, https://github.com/llvm/llvm-project/pull/109197             |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | routines for controlling and querying team regions           | :part:`partial`          | D95003 (libomp only)                                                  |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | changes to ompt_scope_endpoint_t enum                        | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | omp_display_env routine                                      | :good:`done`             | D74956                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | extended OMP_PLACES syntax                                   | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | OMP_NUM_TEAMS and OMP_TEAMS_THREAD_LIMIT env vars            | :good:`done`             | D138769                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | 'target_device' selector in context specifier                | :none:`worked on`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | begin/end declare variant                                    | :good:`done`             | D71179                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | dispatch construct and function variant argument adjustment  | :part:`worked on`        | D99537, D99679                                                        |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | assumes directives                                           | :part:`worked on`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | assume directive                                             | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | nothing directive                                            | :good:`done`             | D123286                                                               |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | masked construct and related combined constructs             | :good:`done`             | D99995, D100514, PR-121741(parallel_masked_taskloop)                  |
 -|                              |                                                              |                          | PR-121746(parallel_masked_task_loop_simd),PR-121914(masked_taskloop)  |
 -|                              |                                                              |                          | PR-121916(masked_taskloop_simd)                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| misc                         | default(firstprivate) & default(private)                     | :good:`done`             | D75591 (firstprivate), D125912 (private)                              |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| other                        | deprecating master construct                                 | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| OMPT                         | new barrier types added to ompt_sync_region_t enum           | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| OMPT                         | async data transfers added to ompt_target_data_op_t enum     | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| OMPT                         | new barrier state values added to ompt_state_t enum          | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| OMPT                         | new 'emi' callbacks for external monitoring interfaces       | :good:`done`             |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| OMPT                         | device tracing interface                                     | :none:`in progress`      | jplehr                                                                |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | 'strict' modifier for taskloop construct                     | :none:`unclaimed`        |                                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | inoutset in depend clause                                    | :good:`done`             | D97085, D118383                                                       |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -| task                         | nowait clause on taskwait                                    | :part:`partial`          | parsing/sema done: D131830, D141531                                   |
 -+------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+
 -
 -
 -.. _OpenMP 5.2 implementation details:
 -
 -OpenMP 5.2 Implementation Details
 -=================================
 -
 -The following table provides a quick overview of various OpenMP 5.2 features
 -and their implementation status. Please post on the
 -`Discourse forums (Runtimes - OpenMP category)`_ for more
 -information or if you want to help with the
 -implementation.
 -
 -
 -
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -|Feature                                                      | C/C++ Status              |  Fortran Status           | Reviews                                                                  |
 -+=============================================================+===========================+===========================+==========================================================================+
 -| omp_in_explicit_task()                                      | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| semantics of explicit_task_var and implicit_task_var        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| ompx sentinel for C/C++ directive extensions                | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| ompx prefix for clause extensions                           | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| if clause on teams construct                                | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| step modifier added                                         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| declare mapper: Add iterator modifier on map clause         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| declare mapper: Add iterator modifier on map clause         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| memspace and traits modifiers to uses allocator         i   | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Add otherwise clause to metadirectives                      | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| doacross clause with support for omp_cur_iteration          | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| position of interop_type in init clause on iterop           | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| implicit map type for target enter/exit data                | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| work OMPT type for work-sharing loop constructs             | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| allocate and firstprivate on scope directive                | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Change loop consistency for order clause                    | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Add memspace and traits modifiers to uses_allocators        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Keep original base pointer on map w/o matched candidate     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Pure procedure support for certain directives               | :none:`N/A`               | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| ALLOCATE statement support for allocators                   | :none:`N/A`               | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| dispatch construct extension to support end directive       | :none:`N/A`               | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -
 -
 -
 -.. _OpenMP 5.2 Deprecations:
 -
 -OpenMP 5.2 Deprecations
 -=======================
 -
 -
 -
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -|                                                             | C/C++ Status              |  Fortran Status           | Reviews                                                                  |
 -+=============================================================+===========================+===========================+==========================================================================+
 -| Linear clause syntax                                        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| The minus operator                                          | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Map clause modifiers without commas                         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| The use of allocate directives with ALLOCATE statement      | :good:`N/A`               | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| uses_allocators list syntax                                 | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| The default clause on metadirectives                        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| The delimited form of the declare target directive          | :none:`unclaimed`         | :good:`N/A`               |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| The use of the to clause on the declare target directive    | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| The syntax of the destroy clause on the depobj construct    | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| keyword source and sink as task-dependence modifiers        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| interop types in any position on init clause of interop     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| ompd prefix usage for some ICVs                             | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -
 -.. _OpenMP 6.0 implementation details:
 -
 -OpenMP 6.0 Implementation Details
 -=================================
 -
 -The following table provides a quick overview of various OpenMP 6.0 features
 -and their implementation status. Please post on the
 -`Discourse forums (Runtimes - OpenMP category)`_ for more
 -information or if you want to help with the
 -implementation.
 -
 -
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -|Feature                                                      | C/C++ Status              |  Fortran Status           | Reviews                                                                  |
 -+=============================================================+===========================+===========================+==========================================================================+
 -| free-agent threads                                          | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| threadset clause                                            | :part:`in progress`       | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Recording of task graphs                                    | :part:`in progress`       | :part:`in progress`       | clang: jtb20, flang: kparzysz                                            |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Parallel inductions                                         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| init_complete for scan directive                            | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop interchange transformation                             | :good:`done`              | :none:`unclaimed`         | Clang (interchange): https://github.com/llvm/llvm-project/pull/93022     |
 -|                                                             |                           |                           | Clang (permutation): https://github.com/llvm/llvm-project/pull/92030     |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop reverse transformation                                 | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/92916                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop stripe transformation                                  | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/119891                         |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop fusion transformation                                  | :part:`in progress`       | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/139293                         |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop index set splitting transformation                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop transformation apply clause                            | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop fuse transformation                                    | :good:`done`              | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| workdistribute construct                                    |                           | :none:`in progress`       | @skc7, @mjklemm                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| task_iteration                                              | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| memscope clause for atomic and flush                        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| transparent clause (hull tasks)                             | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| rule-based compound directives                              | :part:`In Progress`       | :part:`In Progress`       | kparzysz                                                                 |
 -|                                                             |                           |                           | Testing for Fortran missing                                              |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| C23, C++23                                                  | :none:`unclaimed`         |                           |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Fortran 2023                                                |                           | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| decl attribute for declarative directives                   | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| C attribute syntax                                          | :none:`unclaimed`         |                           |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| pure directives in DO CONCURRENT                            |                           | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Optional argument for all clauses                           | :none:`partial`           | :none:`In Progress`       | Parse/Sema (nowait): https://github.com/llvm/llvm-project/pull/159628    |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Function references for locator list items                  | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| All clauses accept directive name modifier                  | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Extensions to depobj construct                              | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Extensions to atomic construct                              | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Private reductions                                          | :good:`mostly`            | :none:`unclaimed`         | Parse/Sema:https://github.com/llvm/llvm-project/pull/129938              |
 -|                                                             |                           |                           | Codegen: https://github.com/llvm/llvm-project/pull/134709                |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Self maps                                                   | :part:`partial`           | :none:`unclaimed`         | parsing/sema done: https://github.com/llvm/llvm-project/pull/129888      |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Release map type for declare mapper                         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Extensions to interop construct                             | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| no_openmp_constructs                                        | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/125933                         |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| safe_sync and progress with identifier and API              | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| OpenMP directives in concurrent loop regions                | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/125621                         |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| atomics constructs on concurrent loop regions               | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/125621                         |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Loop construct with DO CONCURRENT                           |                           | :part:`In Progress`       |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| device_type clause for target construct                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| nowait for ancestor target directives                       | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| New API for devices' num_teams/thread_limit                 | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Host and device environment variables                       | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| num_threads ICV and clause accepts list                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Numeric names for environment variables                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Increment between places for OMP_PLACES                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| OMP_AVAILABLE_DEVICES envirable                             | :none:`unclaimed`         | :none:`unclaimed`         | (should wait for "Traits for default device envirable" being done)       |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Traits for default device envirable                         | :part:`in progress`       | :none:`unclaimed`         | ro-i                                                                     |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Optionally omit array length expression                     | :good:`done`              | :none:`unclaimed`         | (Parse) https://github.com/llvm/llvm-project/pull/148048,                |
 -|                                                             |                           |                           | (Sema) https://github.com/llvm/llvm-project/pull/152786                  |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Canonical loop sequences                                    | :part:`in progress`       | :part:`in progress`       | Clang: https://github.com/llvm/llvm-project/pull/139293                  |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Clarifications to Fortran map semantics                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| default clause at target construct                          | :part:`In Progress`       | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| ref count update use_device_{ptr, addr}                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Clarifications to implicit reductions                       | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| ref modifier for map clauses                                | :part:`In Progress`       | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| map-type modifiers in arbitrary position                    | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/90499                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Lift nesting restriction on concurrent loop                 | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/125621                         |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| priority clause for target constructs                       | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| changes to target_data construct                            | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Non-const do_not_sync for nowait/nogroup                    | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| need_device_addr modifier for adjust_args clause            | :part:`partial`           | :none:`unclaimed`         | Parsing/Sema: https://github.com/llvm/llvm-project/pull/143442           |
 -|                                                             |                           |                           |               https://github.com/llvm/llvm-project/pull/149586           |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Prescriptive num_threads                                    | :good:`done`              | :none:`unclaimed`         |  https://github.com/llvm/llvm-project/pull/160659                        |
 -|                                                             |                           |                           |  https://github.com/llvm/llvm-project/pull/146403                        |
 -|                                                             |                           |                           |  https://github.com/llvm/llvm-project/pull/146404                        |
 -|                                                             |                           |                           |  https://github.com/llvm/llvm-project/pull/146405                        |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Message and severity clauses                                | :good:`done`              | :none:`unclaimed`         |  https://github.com/llvm/llvm-project/pull/146093                        |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Local clause on declare target                              | :part:`In Progress`       | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| groupprivate directive                                      | :part:`In Progress`       | :part:`partial`           | Flang: kparzysz, mjklemm                                                 |
 -|                                                             |                           |                           |                                                                          |
 -|                                                             |                           |                           | Flang parser: https://github.com/llvm/llvm-project/pull/153807           |
 -|                                                             |                           |                           | Flang sema: https://github.com/llvm/llvm-project/pull/154779             |
 -|                                                             |                           |                           | Clang parse/sema: https://github.com/llvm/llvm-project/pull/158134       |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| variable-category on default clause                         | :good:`done`              | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| Changes to omp_target_is_accessible                         | :part:`In Progress`       | :part:`In Progress`       |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| defaultmap implicit-behavior 'storage'                      | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/158336                         |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| defaultmap implicit-behavior 'private'                      | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/158712                         |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -
 -.. _OpenMP 6.1 implementation details:
 -
 -OpenMP 6.1 Implementation Details (Experimental)
 -================================================
 -
 -The following table provides a quick overview over various OpenMP 6.1 features
 -and their implementation status. Since OpenMP 6.1 has not yet been released, the
 -following features are experimental and are subject to change at any time.
 -Please post on the `Discourse forums (Runtimes - OpenMP category)`_ for more
 -information or if you want to help with the
 -implementation.
 -
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -|Feature                                                      | C/C++ Status              | Fortran Status            | Reviews                                                                  |
 -+=============================================================+===========================+===========================+==========================================================================+
 -| dyn_groupprivate clause                                     | :part:`In Progress`       | :part:`In Progress`       | C/C++: kevinsala (https://github.com/llvm/llvm-project/pull/152651       |
 -|                                                             |                           |                           | https://github.com/llvm/llvm-project/pull/152830                         |
 -|                                                             |                           |                           | https://github.com/llvm/llvm-project/pull/152831)                        |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop flatten transformation                                 | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| loop grid/tile modifiers for sizes clause                   | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -| attach map-type modifier                                    | :part:`In Progress`       | :none:`unclaimed`         | C/C++: @abhinavgaba;                                                     |
 -|                                                             |                           |                           | RT: @abhinavgaba (https://github.com/llvm/llvm-project/pull/149036,      |
 -|                                                             |                           |                           | https://github.com/llvm/llvm-project/pull/158370)                        |
 -+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
 -
 -
 -OpenMP Extensions
 -=================
 -
 -The following table provides a quick overview over various OpenMP
 -extensions and their implementation status.  These extensions are not
 -currently defined by any standard, so links to associated LLVM
 -documentation are provided.  As these extensions mature, they will be
 -considered for standardization. Please post on the
 -`Discourse forums (Runtimes - OpenMP category)`_ to provide feedback.
 -
 -+------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+
 -|Category                      | Feature                                                                           | Status                   | Reviews                                                |
 -+==============================+===================================================================================+==========================+========================================================+
 -| atomic extension             | `'atomic' strictly nested within 'teams'                                          | :good:`prototyped`       | D126323                                                |
 -|                              | <https://openmp.llvm.org/docs/openacc/OpenMPExtensions.html#atomicWithinTeams>`_  |                          |                                                        |
 -+------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+
 -| device extension             | `'ompx_hold' map type modifier                                                    | :good:`prototyped`       | D106509, D106510                                       |
 -|                              | <https://openmp.llvm.org/docs/openacc/OpenMPExtensions.html#ompx-hold>`_          |                          |                                                        |
 -+------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+
 -| device extension             | `'ompx_bare' clause on 'target teams' construct                                   | :good:`prototyped`       | #66844, #70612                                         |
 -|                              | <https://www.osti.gov/servlets/purl/2205717>`_                                    |                          |                                                        |
 -+------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+
 -| device extension             | Multi-dim 'num_teams' and 'thread_limit' clause on 'target teams ompx_bare'       | :good:`partial`          | #99732, #101407, #102715                               |
 -|                              | construct                                                                         |                          |                                                        |
 -+------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+
 -
 -.. _Discourse forums (Runtimes - OpenMP category): https://discourse.llvm.org/c/runtimes/openmp/35
 +.. raw:: html + +  <style type="text/css"> +    .none { background-color: #FFCCCC } +    .part { background-color: #FFFF99 } +    .good { background-color: #CCFF99 } +  </style> + +.. role:: none +.. role:: part +.. role:: good + +.. contents:: +   :local: + +============== +OpenMP Support +============== + +Clang fully supports OpenMP 4.5, almost all of 5.0 and most of 5.1/2. +Clang supports offloading to X86_64, AArch64, PPC64[LE], NVIDIA GPUs (all models) and AMD GPUs (all models). + +In addition, the LLVM OpenMP runtime `libomp` supports the OpenMP Tools +Interface (OMPT) on x86, x86_64, AArch64, and PPC64 on Linux, Windows, and macOS. +OMPT is also supported for NVIDIA and AMD GPUs. + +For the list of supported features from OpenMP 5.0 and 5.1 +see `OpenMP implementation details`_ and `OpenMP 51 implementation details`_. + +General improvements +==================== +- New collapse clause scheme to avoid expensive remainder operations. +  Compute loop index variables after collapsing a loop nest via the +  collapse clause by replacing the expensive remainder operation with +  multiplications and additions. + +- When using the collapse clause on a loop nest the default behavior +  is to automatically extend the representation of the loop counter to +  64 bits for the cases where the sizes of the collapsed loops are not +  known at compile time. To prevent this conservative choice and use +  at most 32 bits, compile your program with the +  `-fopenmp-optimistic-collapse`. + + +GPU devices support +=================== + +Data-sharing modes +------------------ + +Clang supports two data-sharing models for Cuda devices: `Generic` and `Cuda` +modes. The default mode is `Generic`. `Cuda` mode can give an additional +performance and can be activated using the `-fopenmp-cuda-mode` flag. In +`Generic` mode all local variables that can be shared in the parallel regions +are stored in the global memory. In `Cuda` mode local variables are not shared +between the threads and it is user responsibility to share the required data +between the threads in the parallel regions. Often, the optimizer is able to +reduce the cost of `Generic` mode to the level of `Cuda` mode, but the flag, +as well as other assumption flags, can be used for tuning. + +Features not supported or with limited support for Cuda devices +--------------------------------------------------------------- + +- Cancellation constructs are not supported. + +- Doacross loop nest is not supported. + +- User-defined reductions are supported only for trivial types. + +- Nested parallelism: inner parallel regions are executed sequentially. + +- Debug information for OpenMP target regions is supported, but sometimes it may +  be required to manually specify the address class of the inspected variables. +  In some cases the local variables are actually allocated in the global memory, +  but the debug info may be not aware of it. + + +.. _OpenMP implementation details: + +OpenMP 5.0 Implementation Details +================================= + +The following table provides a quick overview over various OpenMP 5.0 features +and their implementation status. Please post on the +`Discourse forums (Runtimes - OpenMP category)`_ for more +information or if you want to help with the +implementation. + ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +|Category                      | Feature                                                      | Status                   | Reviews                                                               | ++==============================+==============================================================+==========================+=======================================================================+ +| loop                         | support != in the canonical loop form                        | :good:`done`             | D54441                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | #pragma omp loop (directive)                                 | :part:`partial`          | D145823 (combined forms)                                              | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | #pragma omp loop bind                                        | :part:`worked on`        | D144634 (needs review)                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | collapse imperfectly nested loop                             | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | collapse non-rectangular nested loop                         | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | C++ range-base for loop                                      | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | clause: if for SIMD directives                               | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | inclusive scan (matching C++17 PSTL)                         | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory management            | memory allocators                                            | :good:`done`             | r341687,r357929                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory management            | allocate directive and allocate clause                       | :good:`done`             | r355614,r335952                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| OMPD                         | OMPD interfaces                                              | :good:`done`             | https://reviews.llvm.org/D99914   (Supports only HOST(CPU) and Linux  | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| OMPT                         | OMPT interfaces (callback support)                           | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| thread affinity              | thread affinity                                              | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | taskloop reduction                                           | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | task affinity                                                | :part:`not upstream`     | https://github.com/jklinkenberg/openmp/tree/task-affinity             | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | clause: depend on the taskwait construct                     | :good:`done`             | D113540 (regular codegen only)                                        | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | depend objects and detachable tasks                          | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | mutexinoutset dependence-type for tasks                      | :good:`done`             | D53380,D57576                                                         | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | combined taskloop constructs                                 | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | master taskloop                                              | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | parallel master taskloop                                     | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | master taskloop simd                                         | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | parallel master taskloop simd                                | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| SIMD                         | atomic and simd constructs inside SIMD code                  | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| SIMD                         | SIMD nontemporal                                             | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | infer target functions from initializers                     | :part:`worked on`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | infer target variables from initializers                     | :good:`done`             | D146418                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | OMP_TARGET_OFFLOAD environment variable                      | :good:`done`             | D50522                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | support full 'defaultmap' functionality                      | :good:`done`             | D69204                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | device specific functions                                    | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: device_type                                          | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: extended device                                      | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: uses_allocators clause                               | :good:`done`             | https://github.com/llvm/llvm-project/pull/157025                      | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: in_reduction                                         | :part:`worked on`        | r308768                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | omp_get_device_num()                                         | :good:`done`             | D54342,D128347                                                        | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | structure mapping of references                              | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | nested target declare                                        | :good:`done`             | D51378                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | implicitly map 'this' (this[:1])                             | :good:`done`             | D55982                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | allow access to the reference count (omp_target_is_present)  | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | requires directive                                           | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: unified_shared_memory                                | :good:`done`             | D52625,D52359                                                         | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: unified_address                                      | :part:`partial`          |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: reverse_offload                                      | :part:`partial`          | D52780,D155003                                                        | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: atomic_default_mem_order                             | :good:`done`             | D53513                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: dynamic_allocators                                   | :part:`unclaimed parts`  | D53079                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | user-defined mappers                                         | :good:`done`             | D56326,D58638,D58523,D58074,D60972,D59474                             | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | map array-section with implicit mapper                       | :good:`done`             |  https://github.com/llvm/llvm-project/pull/101101                     | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | mapping lambda expression                                    | :good:`done`             | D51107                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | clause: use_device_addr for target data                      | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | support close modifier on map clause                         | :good:`done`             | D55719,D55892                                                         | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | teams construct on the host device                           | :good:`done`             | r371553                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | support non-contiguous array sections for target update      | :good:`done`             | https://github.com/llvm/llvm-project/pull/144635                      | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | pointer attachment                                           | :part:`being repaired`   | @abhinavgaba (https://github.com/llvm/llvm-project/pull/153683)       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| atomic                       | hints for the atomic construct                               | :good:`done`             | D51233                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| base language                | C11 support                                                  | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| base language                | C++11/14/17 support                                          | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| base language                | lambda support                                               | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | array shaping                                                | :good:`done`             | D74144                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | library shutdown (omp_pause_resource[_all])                  | :good:`done`             | D55078                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | metadirectives                                               | :part:`mostly done`      | D91944, https://github.com/llvm/llvm-project/pull/128640              | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | conditional modifier for lastprivate clause                  | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | iterator and multidependences                                | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | depobj directive and depobj dependency kind                  | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | user-defined function variants                               | :good:`done`.            | D67294, D64095, D71847, D71830, D109635                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | pointer/reference to pointer based array reductions          | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | prevent new type definitions in clauses                      | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory model                 | memory model update (seq_cst, acq_rel, release, acquire,...) | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ + + +.. _OpenMP 51 implementation details: + +OpenMP 5.1 Implementation Details +================================= + +The following table provides a quick overview over various OpenMP 5.1 features +and their implementation status. +Please post on the +`Discourse forums (Runtimes - OpenMP category)`_ for more +information or if you want to help with the +implementation. + ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +|Category                      | Feature                                                      | Status                   | Reviews                                                               | ++==============================+==============================================================+==========================+=======================================================================+ +| atomic                       | 'compare' clause on atomic construct                         | :good:`done`             | D120290, D120007, D118632, D120200, D116261, D118547, D116637         | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| atomic                       | 'fail' clause on atomic construct                            | :part:`worked on`        | D123235 (in progress)                                                 | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| base language                | C++ attribute specifier syntax                               | :good:`done`             | D105648                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | 'present' map type modifier                                  | :good:`done`             | D83061, D83062, D84422                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | 'present' motion modifier                                    | :good:`done`             | D84711, D84712                                                        | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | 'present' in defaultmap clause                               | :good:`done`             | D92427                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | map clause reordering based on 'present' modifier            | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | device-specific environment variables                        | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | omp_target_is_accessible routine                             | :good:`done`             | https://github.com/llvm/llvm-project/pull/138294                      | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | omp_get_mapped_ptr routine                                   | :good:`done`             | D141545                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | new async target memory copy routines                        | :good:`done`             | D136103                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | thread_limit clause on target construct                      | :part:`partial`          | D141540 (offload), D152054 (host, in progress)                        | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | has_device_addr clause on target construct                   | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | iterators in map clause or motion clauses                    | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | indirect clause on declare target directive                  | :part:`In Progress`      |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | allow virtual functions calls for mapped object on device    | :part:`partial`          |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | interop construct                                            | :part:`partial`          | parsing/sema done: D98558, D98834, D98815                             | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| device                       | assorted routines for querying interoperable properties      | :part:`partial`          | D106674                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | Loop tiling transformation                                   | :good:`done`             | D76342                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | Loop unrolling transformation                                | :good:`done`             | D99459                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| loop                         | 'reproducible'/'unconstrained' modifiers in 'order' clause   | :part:`partial`          | D127855                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory management            | alignment for allocate directive and clause                  | :good:`done`             | D115683                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory management            | 'allocator' modifier for allocate clause                     | :good:`done`             | https://github.com/llvm/llvm-project/pull/114883                      | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory management            | 'align' modifier for allocate clause                         | :good:`done`             | https://github.com/llvm/llvm-project/pull/121814                      | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory management            | new memory management routines                               | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory management            | changes to omp_alloctrait_key enum                           | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| memory model                 | seq_cst clause on flush construct                            | :good:`done`             | https://github.com/llvm/llvm-project/pull/114072                      | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | 'omp_all_memory' keyword and use in 'depend' clause          | :good:`done`             | D125828, D126321                                                      | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | error directive                                              | :good:`done`             | D139166                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | scope construct                                              | :good:`done`             | D157933, https://github.com/llvm/llvm-project/pull/109197             | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | routines for controlling and querying team regions           | :part:`partial`          | D95003 (libomp only)                                                  | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | changes to ompt_scope_endpoint_t enum                        | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | omp_display_env routine                                      | :good:`done`             | D74956                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | extended OMP_PLACES syntax                                   | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | OMP_NUM_TEAMS and OMP_TEAMS_THREAD_LIMIT env vars            | :good:`done`             | D138769                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | 'target_device' selector in context specifier                | :none:`worked on`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | begin/end declare variant                                    | :good:`done`             | D71179                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | dispatch construct and function variant argument adjustment  | :part:`worked on`        | D99537, D99679                                                        | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | assumes directives                                           | :part:`worked on`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | assume directive                                             | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | nothing directive                                            | :good:`done`             | D123286                                                               | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | masked construct and related combined constructs             | :good:`done`             | D99995, D100514, PR-121741(parallel_masked_taskloop)                  | +|                              |                                                              |                          | PR-121746(parallel_masked_task_loop_simd),PR-121914(masked_taskloop)  | +|                              |                                                              |                          | PR-121916(masked_taskloop_simd)                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| misc                         | default(firstprivate) & default(private)                     | :good:`done`             | D75591 (firstprivate), D125912 (private)                              | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| other                        | deprecating master construct                                 | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| OMPT                         | new barrier types added to ompt_sync_region_t enum           | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| OMPT                         | async data transfers added to ompt_target_data_op_t enum     | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| OMPT                         | new barrier state values added to ompt_state_t enum          | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| OMPT                         | new 'emi' callbacks for external monitoring interfaces       | :good:`done`             |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| OMPT                         | device tracing interface                                     | :none:`in progress`      | jplehr                                                                | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | 'strict' modifier for taskloop construct                     | :none:`unclaimed`        |                                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | inoutset in depend clause                                    | :good:`done`             | D97085, D118383                                                       | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ +| task                         | nowait clause on taskwait                                    | :part:`partial`          | parsing/sema done: D131830, D141531                                   | ++------------------------------+--------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------+ + + +.. _OpenMP 5.2 implementation details: + +OpenMP 5.2 Implementation Details +================================= + +The following table provides a quick overview of various OpenMP 5.2 features +and their implementation status. Please post on the +`Discourse forums (Runtimes - OpenMP category)`_ for more +information or if you want to help with the +implementation. + + + ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +|Feature                                                      | C/C++ Status              |  Fortran Status           | Reviews                                                                  | ++=============================================================+===========================+===========================+==========================================================================+ +| omp_in_explicit_task()                                      | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| semantics of explicit_task_var and implicit_task_var        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| ompx sentinel for C/C++ directive extensions                | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| ompx prefix for clause extensions                           | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| if clause on teams construct                                | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| step modifier added                                         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| declare mapper: Add iterator modifier on map clause         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| declare mapper: Add iterator modifier on map clause         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| memspace and traits modifiers to uses allocator         i   | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Add otherwise clause to metadirectives                      | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| doacross clause with support for omp_cur_iteration          | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| position of interop_type in init clause on iterop           | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| implicit map type for target enter/exit data                | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| work OMPT type for work-sharing loop constructs             | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| allocate and firstprivate on scope directive                | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Change loop consistency for order clause                    | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Add memspace and traits modifiers to uses_allocators        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Keep original base pointer on map w/o matched candidate     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Pure procedure support for certain directives               | :none:`N/A`               | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| ALLOCATE statement support for allocators                   | :none:`N/A`               | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| dispatch construct extension to support end directive       | :none:`N/A`               | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ + + + +.. _OpenMP 5.2 Deprecations: + +OpenMP 5.2 Deprecations +======================= + + + ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +|                                                             | C/C++ Status              |  Fortran Status           | Reviews                                                                  | ++=============================================================+===========================+===========================+==========================================================================+ +| Linear clause syntax                                        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| The minus operator                                          | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Map clause modifiers without commas                         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| The use of allocate directives with ALLOCATE statement      | :good:`N/A`               | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| uses_allocators list syntax                                 | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| The default clause on metadirectives                        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| The delimited form of the declare target directive          | :none:`unclaimed`         | :good:`N/A`               |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| The use of the to clause on the declare target directive    | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| The syntax of the destroy clause on the depobj construct    | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| keyword source and sink as task-dependence modifiers        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| interop types in any position on init clause of interop     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| ompd prefix usage for some ICVs                             | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ + +.. _OpenMP 6.0 implementation details: + +OpenMP 6.0 Implementation Details +================================= + +The following table provides a quick overview of various OpenMP 6.0 features +and their implementation status. Please post on the +`Discourse forums (Runtimes - OpenMP category)`_ for more +information or if you want to help with the +implementation. + + ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +|Feature                                                      | C/C++ Status              |  Fortran Status           | Reviews                                                                  | ++=============================================================+===========================+===========================+==========================================================================+ +| free-agent threads                                          | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| threadset clause                                            | :part:`partial`           | :none:`unclaimed`         | Parse/Sema/Codegen : https://github.com/llvm/llvm-project/pull/13580     | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Recording of task graphs                                    | :part:`in progress`       | :part:`in progress`       | clang: jtb20, flang: kparzysz                                            | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Parallel inductions                                         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| init_complete for scan directive                            | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop interchange transformation                             | :good:`done`              | :none:`unclaimed`         | Clang (interchange): https://github.com/llvm/llvm-project/pull/93022     | +|                                                             |                           |                           | Clang (permutation): https://github.com/llvm/llvm-project/pull/92030     | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop reverse transformation                                 | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/92916                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop stripe transformation                                  | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/119891                         | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop fusion transformation                                  | :part:`in progress`       | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/139293                         | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop index set splitting transformation                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop transformation apply clause                            | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop fuse transformation                                    | :good:`done`              | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| workdistribute construct                                    |                           | :none:`in progress`       | @skc7, @mjklemm                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| task_iteration                                              | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| memscope clause for atomic and flush                        | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| transparent clause (hull tasks)                             | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| rule-based compound directives                              | :part:`In Progress`       | :part:`In Progress`       | kparzysz                                                                 | +|                                                             |                           |                           | Testing for Fortran missing                                              | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| C23, C++23                                                  | :none:`unclaimed`         |                           |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Fortran 2023                                                |                           | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| decl attribute for declarative directives                   | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| C attribute syntax                                          | :none:`unclaimed`         |                           |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| pure directives in DO CONCURRENT                            |                           | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Optional argument for all clauses                           | :none:`partial`           | :none:`In Progress`       | Parse/Sema (nowait): https://github.com/llvm/llvm-project/pull/159628    | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Function references for locator list items                  | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| All clauses accept directive name modifier                  | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Extensions to depobj construct                              | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Extensions to atomic construct                              | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Private reductions                                          | :good:`mostly`            | :none:`unclaimed`         | Parse/Sema:https://github.com/llvm/llvm-project/pull/129938              | +|                                                             |                           |                           | Codegen: https://github.com/llvm/llvm-project/pull/134709                | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Self maps                                                   | :part:`partial`           | :none:`unclaimed`         | parsing/sema done: https://github.com/llvm/llvm-project/pull/129888      | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Release map type for declare mapper                         | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Extensions to interop construct                             | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| no_openmp_constructs                                        | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/125933                         | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| safe_sync and progress with identifier and API              | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| OpenMP directives in concurrent loop regions                | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/125621                         | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| atomics constructs on concurrent loop regions               | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/125621                         | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Loop construct with DO CONCURRENT                           |                           | :part:`In Progress`       |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| device_type clause for target construct                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| nowait for ancestor target directives                       | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| New API for devices' num_teams/thread_limit                 | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Host and device environment variables                       | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| num_threads ICV and clause accepts list                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Numeric names for environment variables                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Increment between places for OMP_PLACES                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| OMP_AVAILABLE_DEVICES envirable                             | :none:`unclaimed`         | :none:`unclaimed`         | (should wait for "Traits for default device envirable" being done)       | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Traits for default device envirable                         | :part:`in progress`       | :none:`unclaimed`         | ro-i                                                                     | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Optionally omit array length expression                     | :good:`done`              | :none:`unclaimed`         | (Parse) https://github.com/llvm/llvm-project/pull/148048,                | +|                                                             |                           |                           | (Sema) https://github.com/llvm/llvm-project/pull/152786                  | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Canonical loop sequences                                    | :part:`in progress`       | :part:`in progress`       | Clang: https://github.com/llvm/llvm-project/pull/139293                  | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Clarifications to Fortran map semantics                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| default clause at target construct                          | :part:`In Progress`       | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| ref count update use_device_{ptr, addr}                     | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Clarifications to implicit reductions                       | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| ref modifier for map clauses                                | :part:`In Progress`       | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| map-type modifiers in arbitrary position                    | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/90499                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Lift nesting restriction on concurrent loop                 | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/125621                         | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| priority clause for target constructs                       | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| changes to target_data construct                            | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Non-const do_not_sync for nowait/nogroup                    | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| need_device_addr modifier for adjust_args clause            | :part:`partial`           | :none:`unclaimed`         | Parsing/Sema: https://github.com/llvm/llvm-project/pull/143442           | +|                                                             |                           |                           |               https://github.com/llvm/llvm-project/pull/149586           | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Prescriptive num_threads                                    | :good:`done`              | :none:`unclaimed`         |  https://github.com/llvm/llvm-project/pull/160659                        | +|                                                             |                           |                           |  https://github.com/llvm/llvm-project/pull/146403                        | +|                                                             |                           |                           |  https://github.com/llvm/llvm-project/pull/146404                        | +|                                                             |                           |                           |  https://github.com/llvm/llvm-project/pull/146405                        | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Message and severity clauses                                | :good:`done`              | :none:`unclaimed`         |  https://github.com/llvm/llvm-project/pull/146093                        | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Local clause on declare target                              | :part:`In Progress`       | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| groupprivate directive                                      | :part:`In Progress`       | :part:`partial`           | Flang: kparzysz, mjklemm                                                 | +|                                                             |                           |                           |                                                                          | +|                                                             |                           |                           | Flang parser: https://github.com/llvm/llvm-project/pull/153807           | +|                                                             |                           |                           | Flang sema: https://github.com/llvm/llvm-project/pull/154779             | +|                                                             |                           |                           | Clang parse/sema: https://github.com/llvm/llvm-project/pull/158134       | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| variable-category on default clause                         | :good:`done`              | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| Changes to omp_target_is_accessible                         | :part:`In Progress`       | :part:`In Progress`       |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| defaultmap implicit-behavior 'storage'                      | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/158336                         | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| defaultmap implicit-behavior 'private'                      | :good:`done`              | :none:`unclaimed`         | https://github.com/llvm/llvm-project/pull/158712                         | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ + +.. _OpenMP 6.1 implementation details: + +OpenMP 6.1 Implementation Details (Experimental) +================================================ + +The following table provides a quick overview over various OpenMP 6.1 features +and their implementation status. Since OpenMP 6.1 has not yet been released, the +following features are experimental and are subject to change at any time. +Please post on the `Discourse forums (Runtimes - OpenMP category)`_ for more +information or if you want to help with the +implementation. + ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +|Feature                                                      | C/C++ Status              | Fortran Status            | Reviews                                                                  | ++=============================================================+===========================+===========================+==========================================================================+ +| dyn_groupprivate clause                                     | :part:`In Progress`       | :part:`In Progress`       | C/C++: kevinsala (https://github.com/llvm/llvm-project/pull/152651       | +|                                                             |                           |                           | https://github.com/llvm/llvm-project/pull/152830                         | +|                                                             |                           |                           | https://github.com/llvm/llvm-project/pull/152831)                        | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop flatten transformation                                 | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| loop grid/tile modifiers for sizes clause                   | :none:`unclaimed`         | :none:`unclaimed`         |                                                                          | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ +| attach map-type modifier                                    | :part:`In Progress`       | :none:`unclaimed`         | C/C++: @abhinavgaba;                                                     | +|                                                             |                           |                           | RT: @abhinavgaba (https://github.com/llvm/llvm-project/pull/149036,      | +|                                                             |                           |                           | https://github.com/llvm/llvm-project/pull/158370)                        | ++-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+ + + +OpenMP Extensions +================= + +The following table provides a quick overview over various OpenMP +extensions and their implementation status.  These extensions are not +currently defined by any standard, so links to associated LLVM +documentation are provided.  As these extensions mature, they will be +considered for standardization. Please post on the +`Discourse forums (Runtimes - OpenMP category)`_ to provide feedback. + ++------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+ +|Category                      | Feature                                                                           | Status                   | Reviews                                                | ++==============================+===================================================================================+==========================+========================================================+ +| atomic extension             | `'atomic' strictly nested within 'teams'                                          | :good:`prototyped`       | D126323                                                | +|                              | <https://openmp.llvm.org/docs/openacc/OpenMPExtensions.html#atomicWithinTeams>`_  |                          |                                                        | ++------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+ +| device extension             | `'ompx_hold' map type modifier                                                    | :good:`prototyped`       | D106509, D106510                                       | +|                              | <https://openmp.llvm.org/docs/openacc/OpenMPExtensions.html#ompx-hold>`_          |                          |                                                        | ++------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+ +| device extension             | `'ompx_bare' clause on 'target teams' construct                                   | :good:`prototyped`       | #66844, #70612                                         | +|                              | <https://www.osti.gov/servlets/purl/2205717>`_                                    |                          |                                                        | ++------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+ +| device extension             | Multi-dim 'num_teams' and 'thread_limit' clause on 'target teams ompx_bare'       | :good:`partial`          | #99732, #101407, #102715                               | +|                              | construct                                                                         |                          |                                                        | ++------------------------------+-----------------------------------------------------------------------------------+--------------------------+--------------------------------------------------------+ + +.. _Discourse forums (Runtimes - OpenMP category): https://discourse.llvm.org/c/runtimes/openmp/35 diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index add1582..73aaaad 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -613,6 +613,14 @@ clang-format    literals.  - Add ``Leave`` suboption to ``IndentPPDirectives``.  - Add ``AllowBreakBeforeQtProperty`` option. +- Add ``BreakAfterOpenBracketBracedList'', ``BreakAfterOpenBracketFunction'', +  ``BreakAfterOpenBracketIf``, ``BreakAfterOpenBracketLoop``, +  ``BreakAfterOpenBracketSwitch``, ``BreakBeforeCloseBracketBracedList'', +  ``BreakBeforeCloseBracketFunction``, ``BreakBeforeCloseBracketIf``, +  ``BreakBeforeCloseBracketLoop``, ``BreakBeforeCloseBracketSwitch`` options. +- Deprecate ``AlwaysBreak`` and ``BlockIndent`` suboptions from the +  ``AlignAfterOpenBracket`` option, and make ``AlignAfterOpenBracket`` a +  ``bool`` type.  libclang  -------- @@ -651,6 +659,7 @@ Sanitizers  Python Binding Changes  ---------------------- +- Exposed ``clang_Cursor_isFunctionInlined``.  - Exposed ``clang_getCursorLanguage`` via ``Cursor.language``.  - Add all missing ``CursorKind``s, ``TypeKind``s and    ``ExceptionSpecificationKind``s from ``Index.h`` @@ -661,6 +670,7 @@ OpenMP Support    modifier in the ``adjust_args`` clause.  - Allow array length to be omitted in array section subscript expression.  - Fixed non-contiguous strided update in the ``omp target update`` directive with the ``from`` clause. +- Added support for threadset clause in task and taskloop directives.  - Properly handle array section/assumed-size array privatization in C/C++.  - Added support to handle new syntax of the ``uses_allocators`` clause.  - Added support for ``variable-category`` modifier in ``default clause``. | 
