<div dir="ltr">Hi folks,<br><br>The 24th issue of LLVM GPU News, a bi-weekly newsletter on all the GPU things under the LLVM umbrella, is out: <<a href="https://llvm-gpu-news.github.io/2021/12/03/issue-24.html">https://llvm-gpu-news.github.io/2021/12/03/issue-24.html</a>>.<br>I also paste the content below, in case you prefer to read in your email client.<br><br>-Jakub<br><br>======================================================================<br><br># LLVM GPU News #24, December 3 2021<br>Authors: Jakub Kuderski, Alexey Bader, Lei Zhang<br><br>Welcome to LLVM GPU News, a bi-weekly newsletter on all the GPU things under the LLVM umbrella.<br>This issue covers the period from November 12 to December 2 2021.<br><br>We welcome your feedback and suggestions. Let us know if we missed anything interesting, or want us to bring attention to your (sub)project, revisions under review, or proposals. Please see the bottom of the page for details on how to submit suggestions and contribute.<br><br><br>## Industry News and Conferences<br><br><br>##  LLVM and Clang<br><br>### Discussions<br><br>*  A group of contributors from UIUC, Intel, and AWS posted a proposal for [TLX: Tensor LLVM eXtensions](<a href="https://lists.llvm.org/pipermail/llvm-dev/2021-November/153725.html">https://lists.llvm.org/pipermail/llvm-dev/2021-November/153725.html</a>). The extension [introduces target-agnostic intrinsics using 'flat vectors' that would require target-specific lowering](<a href="https://lists.llvm.org/pipermail/llvm-dev/2021-November/153926.html">https://lists.llvm.org/pipermail/llvm-dev/2021-November/153926.html</a>). As noted by Florian Hahn, [the proposal is large in both the text length and implementation effort](<a href="https://lists.llvm.org/pipermail/llvm-dev/2021-November/153914.html">https://lists.llvm.org/pipermail/llvm-dev/2021-November/153914.html</a>). Chris Lattner [expressed a concern](<a href="https://lists.llvm.org/pipermail/llvm-dev/2021-November/153991.html">https://lists.llvm.org/pipermail/llvm-dev/2021-November/153991.html</a>) that the RFC proposes a single tensor model for LLVM, which may be inappropriate for some frameworks and not general enough.<br><br>### Commits<br><br>*  (In-review) Anastasia Stulova submitted a patch adding a toolchain for SPIR-V in Clang. The toolchain is incomplete but functional enough to produce SPIR-V assembly and object code directly via Clang. [D112410](<a href="https://reviews.llvm.org/D112410">https://reviews.llvm.org/D112410</a>)<br>*  AMDGPU GX10 memory model was updated to account for MALL (memory attached last-level) cache added in GXF10.3. [D114076](<a href="https://reviews.llvm.org/D114076">https://reviews.llvm.org/D114076</a>)<br><br><br>## MLIR<br><br>### Discussions<br><br>### Commits<br><br>*  A chain of CLs have landed to better support GPU to NVVM MMA conversion. [D112969](<a href="https://reviews.llvm.org/D112969">https://reviews.llvm.org/D112969</a>), [D113383](<a href="https://reviews.llvm.org/D113383">https://reviews.llvm.org/D113383</a>), [D113618](<a href="https://reviews.llvm.org/D113618">https://reviews.llvm.org/D113618</a>)<br>*  GPU to ROCm now supports target chipset during conversion. [D114107](<a href="https://reviews.llvm.org/D114107">https://reviews.llvm.org/D114107</a>)<br>*  ROCm integration tests are runnable now. [D114184](<a href="https://reviews.llvm.org/D114184">https://reviews.llvm.org/D114184</a>)<br>*  SPIR-V dialect definitions were refreshed to catch up with the latest spec. [D113667](<a href="https://reviews.llvm.org/D113667">https://reviews.llvm.org/D113667</a>)<br>*  `scf.while` to SPIR-V conversion is now supported. [D113007](<a href="https://reviews.llvm.org/D113007">https://reviews.llvm.org/D113007</a>)<br>*  Math ops to SPIR-V conversion now can generate OpenCL extended instructions. [D113780](<a href="https://reviews.llvm.org/D113780">https://reviews.llvm.org/D113780</a>)<br>*  `spv.AtomicFAddEXTOp` is defined and capability bugs for atomics were fixed. [D113764](<a href="https://reviews.llvm.org/D113764">https://reviews.llvm.org/D113764</a>), [D114551](<a href="https://reviews.llvm.org/D114551">https://reviews.llvm.org/D114551</a>)<br><br><br>## OpenMP (Target Offloading)<br><br>### Discussions<br><br>### Commits<br><br>*  The new device runtime is now enabled by default. To use the old runtime, `-fno-openmp-target-new-runtime` must be passed. [D114890](<a href="https://reviews.llvm.org/D114890">https://reviews.llvm.org/D114890</a>)<br><br><br>## External Compilers<br><br>### LLPC<br><br>*  The standalone compiler tool switched to handling recoverable errors with `llvm::Error`, using the standard LLVM error handling utilities. [LLPC#1545](<a href="https://github.com/GPUOpen-Drivers/llpc/pull/1545">https://github.com/GPUOpen-Drivers/llpc/pull/1545</a>), [LLPC#1553](<a href="https://github.com/GPUOpen-Drivers/llpc/pull/1553">https://github.com/GPUOpen-Drivers/llpc/pull/1553</a>)<br>*  Continued worked towards supporting the New Pass Manager. [LLPC#1519](<a href="https://github.com/GPUOpen-Drivers/llpc/pull/1519">https://github.com/GPUOpen-Drivers/llpc/pull/1519</a>)<br>*  The pre-merge checks will now warn about typos using the [`typos` CLI tool](<a href="https://github.com/crate-ci/typos">https://github.com/crate-ci/typos</a>). [LLPC#1516](<a href="https://github.com/GPUOpen-Drivers/llpc/pull/1516">https://github.com/GPUOpen-Drivers/llpc/pull/1516</a>)<br><br>### oneAPI DPC++<br><br>#### CUDA/HIP support<br><br>*  Enabled `cuda-gpu-arch`, `cuda-path`, `nocudalib`, and `fno-sycl-libspirv` options in MSVC compatible driver (`clang-cl`).<br>*  Improved diagnostics for using unsupported work-group size with HIP backend.<br>*  Added half precision floating point data type support for the `nextafter` function.<br>*  Added atomics with scopes and memory orders to CUDA backend. Patch adding NVPTX intrinsics required for this implementation is uploaded for review. [D112718](<a href="https://reviews.llvm.org/D112718">https://reviews.llvm.org/D112718</a>)<br>*  Added HIP backed implementation for 40+ math functions.<br><br>#### SYCL 2020 support<br><br>*  Improved diagnostics for using non-forward declarable kernel name types and unsupported data types in device code (added `is_device_copyable` type trait check for SYCL buffers).<br>*  Added user-defined and pointer types support to `group_broadcast` operation.<br>*  Made `sycl::marray` implementation trivially copyable.<br>*  Added info::device::built_in_kernel_ids information query support.<br><br>#### Non-standard extensions<br><br>*  [ESIMD] Added support for align flags to `simd::copy_from`/`to` operations.<br>*  Added ESIMD-specific IR verification pass.<br>*  Added specification for `discard_events` queue property.<br><br>#### Misc<br><br>*  Fixed a number of memory leaks in the DPC++ runtime library.<br>*  Added stripped PDB files for the DPC++ runtime library and plugins when building with MSVC.<br>*  Reduced compiler memory consumption during link step.<br><br></div>