jdoerfert updated this revision to Diff 209073.
jdoerfert marked 29 inline comments as done.
jdoerfert added a comment.

Add colors, updates according to comments


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64375/new/

https://reviews.llvm.org/D64375

Files:
  clang/docs/OpenMPSupport.rst

Index: clang/docs/OpenMPSupport.rst
===================================================================
--- clang/docs/OpenMPSupport.rst
+++ clang/docs/OpenMPSupport.rst
@@ -2,12 +2,12 @@
 
   <style type="text/css">
     .none { background-color: #FFCCCC }
-    .partial { background-color: #FFFF99 }
+    .part { background-color: #FFFF99 }
     .good { background-color: #CCFF99 }
   </style>
 
 .. role:: none
-.. role:: partial
+.. role:: part
 .. role:: good
 
 .. contents::
@@ -17,7 +17,7 @@
 OpenMP Support
 ==================
 
-Clang supports the following OpenMP 5.0 features
+Clang supports the following OpenMP 5.0 features (see also `OpenMP implementation details`_):
 
 * The `reduction`-based clauses in the `task` and `target`-based directives.
 
@@ -37,7 +37,7 @@
 Clang fully supports OpenMP 4.5. Clang supports offloading to X86_64, AArch64,
 PPC64[LE] and has `basic support for Cuda devices`_.
 
-* #pragma omp declare simd: :partial:`Partial`.  We support parsing/semantic
+* #pragma omp declare simd: :part:`Partial`.  We support parsing/semantic
   analysis + generation of special attributes for X86 target, but still
   missing the LLVM pass for vectorization.
 
@@ -129,3 +129,134 @@
   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 contact *openmp-dev* at
+*lists.llvm.org* for more information or if you want to help with the
+implementation.
+
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+|Category                      | Feature                                                      | Status               | Reviews                                    |
++==============================+==============================================================+======================+============================================+
+| loop extension               | support != in the canonical loop form                        | :good:`done`         | D54441                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| loop extension               | #pragma omp loop (directive)                                 | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| loop extension               | collapse imperfectly nested loop                             | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| loop extension               | collapse non-rectangular nested loop                         | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| loop extension               | C++ range-base for loop                                      | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| loop extension               | clause: nosimd for SIMD directives                           | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| loop extension               | inclusive scan extension (matching C++17 PSTL)               | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| memory mangagement           | memory allocators                                            | :good:`done`         | r341687,r357929                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| memory mangagement           | allocate directive and allocate clause                       | :good:`done`         | r355614,r335952                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| OMPD                         | OMPD interfaces                                              | :part:`not upstream` |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| OMPT                         | OMPT interfaces                                              | :part:`mostly done`  |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| thread affinity extension    | thread affinity extension                                    | :good:`done`         |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | taskloop reduction                                           | :good:`done`         |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | task affinity                                                | :part:`not upstream` |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | clause: depend on the taskwait construct                     | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | depend objects and detachable tasks                          | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | mutexinoutset dependence-type for tasks                      | :good:`done`         | D53380,D57576                              |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | combined taskloop constructs                                 | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | master taskloop                                              | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | parallell master taskloop                                    | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | master taskloop simd                                         | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| task extension               | parallell master taskloop simd                               | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| SIMD extension               | atomic and critical constructs inside SIMD code              | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| SIMD extension               | SIMD nontemporal                                             | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | infer target functions from initializers                     | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | infer target variables from initializers                     | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | OMP_TARGET_FALLBACK env variable                             | :part:`worked on`    | D50522                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | support full 'defaultmap' functionality                      | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | device specific functions                                    | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | clause: device_type                                          | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | clause: in_reduction                                         | :part:`worked on`    | r308768                                    |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | omp_get_device_num()                                         | :part:`worked on`    | D54342                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | structure mapping of references                              | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | nested target declare                                        | :good:`done`         | D51378                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | implicitly map 'this' (this[:1])                             | :good:`done`         | D55982                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | allow access to the reference count (omp_target_is_present)  | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | requires directive (unified shared memory)                   | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | clause: unified_address, unified_shared_memory               | :part:`worked on`    | D52625,D52359                              |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | clause: reverse_offload                                      | :good:`done`         | D52780                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | clause: atomic_default_mem_order                             | :good:`done`         | D53513                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | clause: dynamic_allocators                                   | :good:`done`         | D53079                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | user-defined mappers                                         | :part:`worked on`    | D56326,D58638,D58523,D58074,D60972,D59474  |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | mapping lambda expression                                    | :good:`done`         | D51107                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | clause: use_device_addr for target data                      | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | map(replicate) or map(local) when requires unified_shared_me | :part:`worked on`    | D55719,D55892                              |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | reverse offload                                              | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| device extension             | teams construct on the host device                           | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| atomic extension             | hints for the atomic construct                               | :part:`worked on`    | D51233                                     |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| base language                | C11 support                                                  | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| base language                | C++11/14/17 support                                          | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| base language                | lambda support                                               | :good:`done`         |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| misc extension               | array shaping                                                | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| misc extension               | library shutdown (omp_pause_resource[_all])                  | :part:`worked on`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| misc extension               | metadirectives                                               | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| misc extension               | conditional modifier for lastprivate clause                  | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| misc extension               | user-defined function variants                               | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| misc extensions              | pointer/reference to pointer based array reductions          | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+| misc extensions              | prevent new type definitions in clauses                      | :none:`unclaimed`    |                                            |
++------------------------------+--------------------------------------------------------------+----------------------+--------------------------------------------+
+
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to