Re: r351580 - [OPENMP][DOCS] Release notes/OpenMP support updates, NFC.

2019-01-22 Thread Hans Wennborg via cfe-commits
Thanks, I've merged it to 8.0 in r351839.

Since the release notes are for 8.0 and not trunk, I've removed the
change from trunk in r351841.

On Fri, Jan 18, 2019 at 12:05 PM Kelvin Li  wrote:
>
> Hi Hans,
>
> I am not sure if it is the proper way to request the change committed
> to the release_80 branch.  Please let me know if I need to do
> something else.
>
> Thanks,
> Kelvin
>
> -- Forwarded message -
> From: Kelvin Li via cfe-commits 
> Date: Fri, Jan 18, 2019 at 3:01 PM
> Subject: r351580 - [OPENMP][DOCS] Release notes/OpenMP support updates, NFC.
> To: 
>
>
> Author: kli
> Date: Fri Jan 18 11:57:37 2019
> New Revision: 351580
>
> URL: http://llvm.org/viewvc/llvm-project?rev=351580=rev
> Log:
> [OPENMP][DOCS] Release notes/OpenMP support updates, NFC.
>
> Differential Revision: https://reviews.llvm.org/D56733
>
> Modified:
> cfe/trunk/docs/OpenMPSupport.rst
> cfe/trunk/docs/ReleaseNotes.rst
>
> Modified: cfe/trunk/docs/OpenMPSupport.rst
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/OpenMPSupport.rst?rev=351580=351579=351580=diff
> ==
> --- cfe/trunk/docs/OpenMPSupport.rst (original)
> +++ cfe/trunk/docs/OpenMPSupport.rst Fri Jan 18 11:57:37 2019
> @@ -17,60 +17,50 @@
>  OpenMP Support
>  ==
>
> -Clang fully supports OpenMP 4.5. Clang supports offloading to X86_64, 
> AArch64,
> -PPC64[LE] and has `basic support for Cuda devices`_.
> -
> -Standalone directives
> -=
> -
> -* #pragma omp [for] simd: :good:`Complete`.
> -
> -* #pragma omp declare simd: :partial:`Partial`.  We support parsing/semantic
> -  analysis + generation of special attributes for X86 target, but still
> -  missing the LLVM pass for vectorization.
> -
> -* #pragma omp taskloop [simd]: :good:`Complete`.
> -
> -* #pragma omp target [enter|exit] data: :good:`Complete`.
> -
> -* #pragma omp target update: :good:`Complete`.
> -
> -* #pragma omp target: :good:`Complete`.
> +Clang supports the following OpenMP 5.0 features
>
> -* #pragma omp declare target: :good:`Complete`.
> +* The `reduction`-based clauses in the `task` and `target`-based directives.
>
> -* #pragma omp teams: :good:`Complete`.
> +* Support relational-op != (not-equal) as one of the canonical forms of 
> random
> +  access iterator.
>
> -* #pragma omp distribute [simd]: :good:`Complete`.
> +* Support for mapping of the lambdas in target regions.
>
> -* #pragma omp distribute parallel for [simd]: :good:`Complete`.
> +* Parsing/sema analysis for the requires directive.
>
> -Combined directives
> -===
> +* Nested declare target directives.
>
> -* #pragma omp parallel for simd: :good:`Complete`.
> +* Make the `this` pointer implicitly mapped as `map(this[:1])`.
>
> -* #pragma omp target parallel: :good:`Complete`.
> +* The `close` *map-type-modifier*.
>
> -* #pragma omp target parallel for [simd]: :good:`Complete`.
> -
> -* #pragma omp target simd: :good:`Complete`.
> -
> -* #pragma omp target teams: :good:`Complete`.
> -
> -* #pragma omp teams distribute [simd]: :good:`Complete`.
> -
> -* #pragma omp target teams distribute [simd]: :good:`Complete`.
> -
> -* #pragma omp teams distribute parallel for [simd]: :good:`Complete`.
> -
> -* #pragma omp target teams distribute parallel for [simd]: :good:`Complete`.
> +Clang fully supports OpenMP 4.5. Clang supports offloading to X86_64, 
> AArch64,
> +PPC64[LE] and has `basic support for Cuda devices`_.
>
> -Clang does not support any constructs/updates from OpenMP 5.0 except
> -for `reduction`-based clauses in the `task` and `target`-based directives.
> +* #pragma omp declare simd: :partial:`Partial`.  We support parsing/semantic
> +  analysis + generation of special attributes for X86 target, but still
> +  missing the LLVM pass for vectorization.
>
>  In addition, the LLVM OpenMP runtime `libomp` supports the OpenMP Tools
> -Interface (OMPT) on x86, x86_64, AArch64, and PPC64 on Linux,
> Windows, and mac OS.
> +Interface (OMPT) on x86, x86_64, AArch64, and PPC64 on Linux,
> Windows, and macOS.
> +
> +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.
> +
> +- The default schedules for the `distribute` and `for` constructs in a
> +  parallel region and in SPMD mode have changed to ensure coalesced
> +  accesses. For the `distribute` construct, a s

r351580 - [OPENMP][DOCS] Release notes/OpenMP support updates, NFC.

2019-01-18 Thread Kelvin Li via cfe-commits
Author: kli
Date: Fri Jan 18 11:57:37 2019
New Revision: 351580

URL: http://llvm.org/viewvc/llvm-project?rev=351580=rev
Log:
[OPENMP][DOCS] Release notes/OpenMP support updates, NFC.

Differential Revision: https://reviews.llvm.org/D56733

Modified:
cfe/trunk/docs/OpenMPSupport.rst
cfe/trunk/docs/ReleaseNotes.rst

Modified: cfe/trunk/docs/OpenMPSupport.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/OpenMPSupport.rst?rev=351580=351579=351580=diff
==
--- cfe/trunk/docs/OpenMPSupport.rst (original)
+++ cfe/trunk/docs/OpenMPSupport.rst Fri Jan 18 11:57:37 2019
@@ -17,60 +17,50 @@
 OpenMP Support
 ==
 
-Clang fully supports OpenMP 4.5. Clang supports offloading to X86_64, AArch64,
-PPC64[LE] and has `basic support for Cuda devices`_.
-
-Standalone directives
-=
-
-* #pragma omp [for] simd: :good:`Complete`.
-
-* #pragma omp declare simd: :partial:`Partial`.  We support parsing/semantic
-  analysis + generation of special attributes for X86 target, but still
-  missing the LLVM pass for vectorization.
-
-* #pragma omp taskloop [simd]: :good:`Complete`.
-
-* #pragma omp target [enter|exit] data: :good:`Complete`.
-
-* #pragma omp target update: :good:`Complete`.
-
-* #pragma omp target: :good:`Complete`.
+Clang supports the following OpenMP 5.0 features
 
-* #pragma omp declare target: :good:`Complete`.
+* The `reduction`-based clauses in the `task` and `target`-based directives.
 
-* #pragma omp teams: :good:`Complete`.
+* Support relational-op != (not-equal) as one of the canonical forms of random
+  access iterator.
 
-* #pragma omp distribute [simd]: :good:`Complete`.
+* Support for mapping of the lambdas in target regions.
 
-* #pragma omp distribute parallel for [simd]: :good:`Complete`.
+* Parsing/sema analysis for the requires directive.
 
-Combined directives
-===
+* Nested declare target directives.
 
-* #pragma omp parallel for simd: :good:`Complete`.
+* Make the `this` pointer implicitly mapped as `map(this[:1])`.
 
-* #pragma omp target parallel: :good:`Complete`.
+* The `close` *map-type-modifier*.
 
-* #pragma omp target parallel for [simd]: :good:`Complete`.
-
-* #pragma omp target simd: :good:`Complete`.
-
-* #pragma omp target teams: :good:`Complete`.
-
-* #pragma omp teams distribute [simd]: :good:`Complete`.
-
-* #pragma omp target teams distribute [simd]: :good:`Complete`.
-
-* #pragma omp teams distribute parallel for [simd]: :good:`Complete`.
-
-* #pragma omp target teams distribute parallel for [simd]: :good:`Complete`.
+Clang fully supports OpenMP 4.5. Clang supports offloading to X86_64, AArch64,
+PPC64[LE] and has `basic support for Cuda devices`_.
 
-Clang does not support any constructs/updates from OpenMP 5.0 except
-for `reduction`-based clauses in the `task` and `target`-based directives.
+* #pragma omp declare simd: :partial:`Partial`.  We support parsing/semantic
+  analysis + generation of special attributes for X86 target, but still
+  missing the LLVM pass for vectorization.
 
 In addition, the LLVM OpenMP runtime `libomp` supports the OpenMP Tools
-Interface (OMPT) on x86, x86_64, AArch64, and PPC64 on Linux, Windows, and mac 
OS.
+Interface (OMPT) on x86, x86_64, AArch64, and PPC64 on Linux, Windows, and 
macOS.
+
+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.
+
+- The default schedules for the `distribute` and `for` constructs in a
+  parallel region and in SPMD mode have changed to ensure coalesced
+  accesses. For the `distribute` construct, a static schedule is used
+  with a chunk size equal to the number of threads per team (default
+  value of threads or as specified by the `thread_limit` clause if
+  present). For the `for` construct, the schedule is static with chunk
+  size of one.
+  
+- Simplified SPMD code generation for `distribute parallel for` when
+  the new default schedules are applicable.
 
 .. _basic support for Cuda devices:
 

Modified: cfe/trunk/docs/ReleaseNotes.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=351580=351579=351580=diff
==
--- cfe/trunk/docs/ReleaseNotes.rst (original)
+++ cfe/trunk/docs/ReleaseNotes.rst Fri Jan 18 11:57:37 2019
@@ -133,7 +133,36 @@ ABI Changes in Clang
 OpenMP Support in Clang
 --
 
-- ...
+- OpenMP 5.0 features
+
+  - Support relational-op != (not-equal) as one of the canonical forms of 
random
+access iterator.
+  - Added support for mapping of the lambdas in target regions.
+  - Added parsing/sema analysis for the requires directive.
+  - Support nested declare target directives.
+  -