[all-commits] [llvm/llvm-project] 68ea91: [openmp][wasm] Allow compiling OpenMP to WebAssemb...

Jon Roelofs via All-commits all-commits at lists.llvm.org
Thu Dec 14 13:46:38 PST 2023


  Branch: refs/heads/users/jroelofs/spr/clang-support-__attribute__ifunc-on-darwin-platforms
  Home:   https://github.com/llvm/llvm-project
  Commit: 68ea91dd8b506764c0a89e9220cfcefcf3790973
      https://github.com/llvm/llvm-project/commit/68ea91dd8b506764c0a89e9220cfcefcf3790973
  Author: Andrew Brown <andrew.brown at intel.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
    M openmp/CMakeLists.txt
    M openmp/runtime/CMakeLists.txt
    M openmp/runtime/cmake/LibompGetArchitecture.cmake
    M openmp/runtime/cmake/config-ix.cmake
    M openmp/runtime/src/kmp.h
    M openmp/runtime/src/kmp_ftn_entry.h
    M openmp/runtime/src/kmp_gsupport.cpp
    M openmp/runtime/src/kmp_os.h
    M openmp/runtime/src/kmp_platform.h
    M openmp/runtime/src/kmp_runtime.cpp
    M openmp/runtime/src/kmp_utility.cpp
    M openmp/runtime/src/z_Linux_asm.S
    M openmp/runtime/src/z_Linux_util.cpp

  Log Message:
  -----------
  [openmp][wasm] Allow compiling OpenMP to WebAssembly  (#71297)

This change allows building the static OpenMP runtime, `libomp.a`, as
WebAssembly. It builds on the work done in [D142593] but goes further in
several ways:
 - it makes the OpenMP CMake files more WebAssembly-aware
- it conditions much more code (or code that had been refactored since
[D142593]) for `KMP_ARCH_WASM` and `KMP_OS_WASI`
- it fixes a Clang crash due to unimplemented common symbols in
WebAssembly

The commit messages have more details. Please understand this PR as a
start, not the completed work, for WebAssembly support in OpenMP.
Getting the tests running somehow would be a good next step, e.g.; but
what is contained here works, at least with recent versions of
[wasi-sdk] and engines that support [wasi-threads]. I suspect the same
is true for Emscripten and browsers, but I have not tested that
workflow.

[D142593]: https://reviews.llvm.org/D142593
[wasi-sdk]: https://github.com/WebAssembly/wasi-sdk
[wasi-threads]: https://github.com/WebAssembly/wasi-threads

---------

Co-authored-by: Atanas Atanasov <atanas.atanasov at intel.com>


  Commit: aa207674f9e6caf5bc29c1b4925183a398382d6f
      https://github.com/llvm/llvm-project/commit/aa207674f9e6caf5bc29c1b4925183a398382d6f
  Author: Walter Erquinigo <a20012251 at gmail.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py
    A lldb/test/API/tools/lldb-dap/commands/Makefile
    A lldb/test/API/tools/lldb-dap/commands/TestDAP_commands.py
    A lldb/test/API/tools/lldb-dap/commands/main.cpp
    M lldb/tools/lldb-dap/DAP.cpp
    M lldb/tools/lldb-dap/DAP.h
    M lldb/tools/lldb-dap/LLDBUtils.cpp
    M lldb/tools/lldb-dap/LLDBUtils.h
    M lldb/tools/lldb-dap/lldb-dap.cpp
    M lldb/tools/lldb-dap/package.json

  Log Message:
  -----------
  [lldb-dap] Implement command directives (#74808)

This adds support for optionally prefixing any command with `?` and/or
`!`.
- `?` prevents the output of a commands to be printed to the console
unless it fails.
- `!` aborts the dap if the command fails.

They come in handy when programmatically running commands on behalf of
the user without wanting them to know unless they fail, or when a
critical setup is required as part of launchCommands and it's better to
abort on failures than to silently skip.


  Commit: 46fe85446d7181c8c5e2ec5fe128ac33ba502ccc
      https://github.com/llvm/llvm-project/commit/46fe85446d7181c8c5e2ec5fe128ac33ba502ccc
  Author: Aiden Grossman <agrossman154 at yahoo.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/docs/CommandGuide/llvm-exegesis.rst

  Log Message:
  -----------
  [Docs][llvm-exegesis] Add documentation on recently added options (#75408)

This patch adds information on the new LLVM-EXEGESIS-SNIPPET-ADDRESS
annotation and on the --benchmark-repeat-count flag.


  Commit: 3194928c3cfa6623c5de78ae7ab2ab7ab0cf0232
      https://github.com/llvm/llvm-project/commit/3194928c3cfa6623c5de78ae7ab2ab7ab0cf0232
  Author: Aiden Grossman <agrossman154 at yahoo.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp
    A llvm/tools/llvm-exegesis/lib/MmapUtils.h
    M llvm/tools/llvm-exegesis/lib/X86/Target.cpp
    M llvm/unittests/tools/llvm-exegesis/X86/TargetTest.cpp

  Log Message:
  -----------
  [llvm-exegesis] Refactor MMAP platform-specific preprocessor directives (#75422)

This patch refactors the MMAP platform-specific preprocessor directives
in llvm-exegesis to a single file instead of having duplicate code split
across multiple files. These originally got introduced to get buildbots
green again due to platform specific failures.


  Commit: e75f37fd64a467cd8b24851062342079bef123f5
      https://github.com/llvm/llvm-project/commit/e75f37fd64a467cd8b24851062342079bef123f5
  Author: Natalie Chouinard <sudonatalie at google.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/test/CodeGen/SPIRV/opencl/device_execution/execute_block.ll
    M llvm/test/CodeGen/SPIRV/transcoding/BuildNDRange_2.ll

  Log Message:
  -----------
  [SPIR-V][NFC] Require asserts on 2 tests (#75087)

These tests currently fail on asserts, so adding a REQUIRES to make sure
they're skipped on builds with asserts disabled.

Follow-up from #74849


  Commit: 15617d14f78bd20c96208501d950f0902cb03ffe
      https://github.com/llvm/llvm-project/commit/15617d14f78bd20c96208501d950f0902cb03ffe
  Author: Arthur Eubanks <aeubanks at google.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/include/llvm/Target/TargetMachine.h
    M llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
    M llvm/lib/Target/TargetMachine.cpp
    M llvm/lib/Target/X86/X86FastISel.cpp
    M llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
    M llvm/lib/Target/X86/X86Subtarget.cpp
    M llvm/test/CodeGen/X86/code-model-elf.ll

  Log Message:
  -----------
  Revert "Reland [X86] Respect code models more when determining if a global reference can fit in 32 bits (#75386)"

This reverts commit ec92d74a0ef89b9dd46aee6ec8aca6bfd3c66a54.

Breaks some compiler-rt tests, e.g. https://lab.llvm.org/buildbot/#/builders/37/builds/28834


  Commit: 6e87672150986d931e770ec829699a7930ebeeb2
      https://github.com/llvm/llvm-project/commit/6e87672150986d931e770ec829699a7930ebeeb2
  Author: Rainer Orth <ro at gcc.gnu.org>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M flang/runtime/exceptions.cpp

  Log Message:
  -----------
  [flang] Adjust _FORTRAN_RUNTIME_IEEE_FENV_T_EXTENT for Solaris (#74590)

Even after 13e2200fa426faffb62bdaf8b2f1f5699eee1511 (Solaris lacks
`femode_t`, too), the Solaris `flang` build is still broken:
```
/vol/llvm/src/llvm-project/local/flang/runtime/exceptions.cpp:87:5: error: static assertion failed due to requirement 'sizeof(fenv_t) <= sizeof(int) * 8': increase ieee_status_type size
   87 |     sizeof(fenv_t) <= sizeof(int) * _FORTRAN_RUNTIME_IEEE_FENV_T_EXTENT,      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/vol/llvm/src/llvm-project/local/flang/runtime/exceptions.cpp:87:20: note: expression evaluates to '200 <= 32'
   87 |     sizeof(fenv_t) <= sizeof(int) * _FORTRAN_RUNTIME_IEEE_FENV_T_EXTENT,      |     ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
This patch fixes this by removing the assertion.

Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11`.


  Commit: c26174f3a8337417dc5a8e89c21ced6bed46e8c9
      https://github.com/llvm/llvm-project/commit/c26174f3a8337417dc5a8e89c21ced6bed46e8c9
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/test/MC/AMDGPU/gfx12_unsupported.s

  Log Message:
  -----------
  [AMDGPU] Remove s_cbranch_cdbg* for GFX12 (#75496)

No GFX12 encoding was added for these, so this patch just adds tests
that they are not recognized by the assembler.


  Commit: c5a068a196651a87a3af12cb67bd5b4309ddeaa2
      https://github.com/llvm/llvm-project/commit/c5a068a196651a87a3af12cb67bd5b4309ddeaa2
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/lib/Target/AMDGPU/GCNSubtarget.h
    M llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
    M llvm/test/MC/AMDGPU/gfx12_unsupported.s

  Log Message:
  -----------
  [AMDGPU] Remove s_cmpk_* for GFX12 (#75497)

No GFX12 encoding was added for these. This patch adds tests that they
are not recognized by the assembler and defends against generating them
in codegen.


  Commit: d8941df9325a107410be42d841b169ea267822e8
      https://github.com/llvm/llvm-project/commit/d8941df9325a107410be42d841b169ea267822e8
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/test/MC/AMDGPU/gfx12_unsupported.s

  Log Message:
  -----------
  [AMDGPU] Remove v_cmp_t_* and v_cmp_f_* for GFX12 (#75498)

Also v_cmpx_t_* and v_cmpx_f_*

No GFX12 encoding was added for these, so this patch just adds tests
that they are not recognized by the assembler.


  Commit: 1b6c8280b9a672a9c6f5c22d18b1cdaa2320d4ed
      https://github.com/llvm/llvm-project/commit/1b6c8280b9a672a9c6f5c22d18b1cdaa2320d4ed
  Author: Andrzej Warzyński <andrzej.warzynski at arm.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M clang/lib/Driver/ToolChains/CommonArgs.cpp
    M flang/test/Driver/no-duplicate-main.f90

  Log Message:
  -----------
  [flang][driver] Don't use -whole-archive on Darwin (#75393)

Direct follow-up of #73124 - the linker on Darwin does not support
`-whole-archive`, so that needs to be removed from the linker
invocation.

For context:
  * https://github.com/llvm/llvm-project/pull/73124


  Commit: 3e6da3252fbbe58c309b58e08c8a16ac2797b5da
      https://github.com/llvm/llvm-project/commit/3e6da3252fbbe58c309b58e08c8a16ac2797b5da
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/include/llvm/IR/IntrinsicsAMDGPU.td
    M llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
    M llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
    M llvm/lib/Target/AMDGPU/SOPInstructions.td
    A llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.sleep.var.ll
    M llvm/test/MC/AMDGPU/gfx12_asm_sop1.s
    M llvm/test/MC/Disassembler/AMDGPU/gfx12_dasm_sop1.txt

  Log Message:
  -----------
  [AMDGPU] Add GFX12 s_sleep_var instruction and intrinsic (#75499)


  Commit: 29e043cb5c2efaad7fb203fb8240a91b77ca0c5b
      https://github.com/llvm/llvm-project/commit/29e043cb5c2efaad7fb203fb8240a91b77ca0c5b
  Author: Craig Hesling <hesling.craig at gmail.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M clang/bindings/python/README.txt
    M clang/bindings/python/clang/cindex.py

  Log Message:
  -----------
  [libclang/python] Fix some minor typos (#74292)

These patches do not change the functionality of the library. They
simply correct comments and documentation.

* Add a missing space in a the `FixIt` class comment
* Fix an llvm-project path in the `README.txt`


  Commit: 7c6b4be615c225b11a94a90bfd421265e1544fd5
      https://github.com/llvm/llvm-project/commit/7c6b4be615c225b11a94a90bfd421265e1544fd5
  Author: Nick Desaulniers <nickdesaulniers at users.noreply.github.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M libc/test/src/string/mempcpy_test.cpp

  Log Message:
  -----------
  [libc] fix msan failure in mempcpy_test (#75532)

Internal builds of the unittests with msan flagged mempcpy_test.

    ==6862==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x55e34d7d734a in length
llvm-project/libc/src/__support/CPP/string_view.h:41:11
#1 0x55e34d7d734a in string_view
llvm-project/libc/src/__support/CPP/string_view.h:71:24
#2 0x55e34d7d734a in
__llvm_libc_9999_0_0_git::testing::Test::testStrEq(char const*, char
const*, char const*, char const*,
__llvm_libc_9999_0_0_git::testing::internal::Location)
llvm-project/libc/test/UnitTest/LibcTest.cpp:284:13
#3 0x55e34d7d4e09 in LlvmLibcMempcpyTest_Simple::Run()
llvm-project/libc/test/src/string/mempcpy_test.cpp:20:3
#4 0x55e34d7d6dff in
__llvm_libc_9999_0_0_git::testing::Test::runTests(char const*)
llvm-project/libc/test/UnitTest/LibcTest.cpp:133:8
#5 0x55e34d7d86e0 in main
llvm-project/libc/test/UnitTest/LibcTestMain.cpp:21:10

SUMMARY: MemorySanitizer: use-of-uninitialized-value
llvm-project/libc/src/__support/CPP/string_view.h:41:11 in length

What's going on here is that mempcpy_test.cpp's Simple test is using
ASSERT_STREQ with a partially initialized char array. ASSERT_STREQ calls
Test::testStrEq which constructs a cpp:string_view. That constructor
calls the
private method cpp::string_view::length. When built with msan, the loop
is
transformed into multi-byte access, which then fails upon access.

I took a look at libc++'s __constexpr_strlen which just calls
__builtin_strlen(). Replacing the implementation of
cpp::string_view::length
with a call to __builtin_strlen() may still result in out of bounds
access when
the test is built with msan.

It's not safe to use ASSERT_STREQ with a partially initialized array.
Initialize the whole array so that the test passes.


  Commit: 640c1d3dd12843f9ad29df472bbf0a88f90770b5
      https://github.com/llvm/llvm-project/commit/640c1d3dd12843f9ad29df472bbf0a88f90770b5
  Author: Jon Roelofs <jonathan_roelofs at apple.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/include/llvm/CodeGen/AsmPrinter.h
    M llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    M llvm/lib/IR/Verifier.cpp
    M llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
    M llvm/lib/Target/X86/X86AsmPrinter.cpp
    M llvm/lib/Target/X86/X86AsmPrinter.h
    M llvm/test/CodeGen/AArch64/addrsig-macho.ll
    A llvm/test/CodeGen/AArch64/ifunc-asm.ll
    M llvm/test/CodeGen/X86/ifunc-asm.ll

  Log Message:
  -----------
  [llvm] Support IFuncs on Darwin platforms (#73686)

... by lowering them as lazy resolve-on-first-use symbol resolvers. Note that this is subtly different timing than on ELF platforms, where ifunc resolution happens at load time.

Since ld64 and ld-prime don't support all the cases we need for these, we lower them manually in the AsmPrinter.


  Commit: 7cf1f8dabbabbdc2d80a1bad33206c05957ed53a
      https://github.com/llvm/llvm-project/commit/7cf1f8dabbabbdc2d80a1bad33206c05957ed53a
  Author: Jon Roelofs <jonathan_roelofs at apple.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M clang/bindings/python/README.txt
    M clang/bindings/python/clang/cindex.py
    M clang/lib/Driver/ToolChains/CommonArgs.cpp
    M flang/runtime/exceptions.cpp
    M flang/test/Driver/no-duplicate-main.f90
    M libc/test/src/string/mempcpy_test.cpp
    M lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py
    A lldb/test/API/tools/lldb-dap/commands/Makefile
    A lldb/test/API/tools/lldb-dap/commands/TestDAP_commands.py
    A lldb/test/API/tools/lldb-dap/commands/main.cpp
    M lldb/tools/lldb-dap/DAP.cpp
    M lldb/tools/lldb-dap/DAP.h
    M lldb/tools/lldb-dap/LLDBUtils.cpp
    M lldb/tools/lldb-dap/LLDBUtils.h
    M lldb/tools/lldb-dap/lldb-dap.cpp
    M lldb/tools/lldb-dap/package.json
    M llvm/docs/CommandGuide/llvm-exegesis.rst
    M llvm/include/llvm/IR/IntrinsicsAMDGPU.td
    M llvm/include/llvm/Target/TargetMachine.h
    M llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
    M llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
    M llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
    M llvm/lib/Target/AMDGPU/GCNSubtarget.h
    M llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
    M llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
    M llvm/lib/Target/AMDGPU/SOPInstructions.td
    M llvm/lib/Target/TargetMachine.cpp
    M llvm/lib/Target/X86/X86FastISel.cpp
    M llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
    M llvm/lib/Target/X86/X86Subtarget.cpp
    A llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.sleep.var.ll
    M llvm/test/CodeGen/SPIRV/opencl/device_execution/execute_block.ll
    M llvm/test/CodeGen/SPIRV/transcoding/BuildNDRange_2.ll
    M llvm/test/CodeGen/X86/code-model-elf.ll
    M llvm/test/MC/AMDGPU/gfx12_asm_sop1.s
    M llvm/test/MC/AMDGPU/gfx12_unsupported.s
    M llvm/test/MC/Disassembler/AMDGPU/gfx12_dasm_sop1.txt
    M llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp
    A llvm/tools/llvm-exegesis/lib/MmapUtils.h
    M llvm/tools/llvm-exegesis/lib/X86/Target.cpp
    M llvm/unittests/tools/llvm-exegesis/X86/TargetTest.cpp
    M openmp/CMakeLists.txt
    M openmp/runtime/CMakeLists.txt
    M openmp/runtime/cmake/LibompGetArchitecture.cmake
    M openmp/runtime/cmake/config-ix.cmake
    M openmp/runtime/src/kmp.h
    M openmp/runtime/src/kmp_ftn_entry.h
    M openmp/runtime/src/kmp_gsupport.cpp
    M openmp/runtime/src/kmp_os.h
    M openmp/runtime/src/kmp_platform.h
    M openmp/runtime/src/kmp_runtime.cpp
    M openmp/runtime/src/kmp_utility.cpp
    M openmp/runtime/src/z_Linux_asm.S
    M openmp/runtime/src/z_Linux_util.cpp

  Log Message:
  -----------
  [𝘀𝗽𝗿] landed version

Created using spr 1.3.4


Compare: https://github.com/llvm/llvm-project/compare/f75c2ef0ab7e...7cf1f8dabbab


More information about the All-commits mailing list