diff --git a/libcxx/cmake/caches/AMDGPU.cmake b/libcxx/cmake/caches/AMDGPU.cmake index c7d6afc854a54..f563e1a12c4c1 100644 --- a/libcxx/cmake/caches/AMDGPU.cmake +++ b/libcxx/cmake/caches/AMDGPU.cmake @@ -27,6 +27,10 @@ set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "") set(LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "") set(LIBCXXABI_USE_LLVM_UNWINDER OFF CACHE BOOL "") +# Test configuration. +set(LIBCXX_TEST_CONFIG "amdgpu-libc++-shared.cfg.in" CACHE STRING "") +set(LIBCXX_TEST_PARAMS "optimization=none;long_tests=False;executor=amdhsa-loader" CACHE STRING "") + # Necessary compile flags for AMDGPU. set(LIBCXX_ADDITIONAL_COMPILE_FLAGS "-nogpulib;-flto;-fconvergent-functions;-Xclang;-mcode-object-version=none" CACHE STRING "") diff --git a/libcxx/cmake/caches/NVPTX.cmake b/libcxx/cmake/caches/NVPTX.cmake index 231b457d3017e..b6ec6c04ea700 100644 --- a/libcxx/cmake/caches/NVPTX.cmake +++ b/libcxx/cmake/caches/NVPTX.cmake @@ -27,6 +27,10 @@ set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "") set(LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "") set(LIBCXXABI_USE_LLVM_UNWINDER OFF CACHE BOOL "") +# Test configuration. +set(LIBCXX_TEST_CONFIG "nvptx-libc++-shared.cfg.in" CACHE STRING "") +set(LIBCXX_TEST_PARAMS "optimization=none;long_tests=False;executor=nvptx-loader" CACHE STRING "") + # Necessary compile flags for NVPTX. set(LIBCXX_ADDITIONAL_COMPILE_FLAGS "-nogpulib;-flto;-fconvergent-functions;--cuda-feature=+ptx63" CACHE STRING "") diff --git a/libcxx/test/configs/amdgpu-libc++-shared.cfg.in b/libcxx/test/configs/amdgpu-libc++-shared.cfg.in new file mode 100644 index 0000000000000..80c80ebaa8bd0 --- /dev/null +++ b/libcxx/test/configs/amdgpu-libc++-shared.cfg.in @@ -0,0 +1,29 @@ +lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg') + +config.substitutions.append(('%{flags}', + f'--target={config.target_triple} -Wno-multi-gpu -flto -mcpu=native')) +config.substitutions.append(('%{compile_flags}', + '-nogpulib -fno-builtin-printf -I %{include-dir} ' + '-I %{target-include-dir} -I %{libcxx-dir}/test/support' +)) +config.substitutions.append(('%{link_flags}', + '-nostdlib++ -startfiles -stdlib ' + '-Wl,-mllvm,-amdgpu-lower-global-ctor-dtor=0 ' + '-L %{lib-dir} -lc++ -lc++abi -lclang_rt.builtins' +)) + +config.substitutions.append(('%{exec}', + '%{executor}' +)) + +config.stdlib = 'llvm-libc++' + +import os, site +site.addsitedir(os.path.join('@LIBCXX_SOURCE_DIR@', 'utils')) +import libcxx.test.params, libcxx.test.config +libcxx.test.config.configure( + libcxx.test.params.DEFAULT_PARAMETERS, + libcxx.test.features.DEFAULT_FEATURES, + config, + lit_config +) diff --git a/libcxx/test/configs/nvptx-libc++-shared.cfg.in b/libcxx/test/configs/nvptx-libc++-shared.cfg.in new file mode 100644 index 0000000000000..9a3ca9c8da950 --- /dev/null +++ b/libcxx/test/configs/nvptx-libc++-shared.cfg.in @@ -0,0 +1,30 @@ +lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg') + +config.substitutions.append(('%{flags}', + f'--target={config.target_triple} -Wno-multi-gpu -flto -march=native')) +config.substitutions.append(('%{compile_flags}', + '-nogpulib -fno-builtin-printf -I %{include-dir} ' + '-I %{target-include-dir} -I %{libcxx-dir}/test/support' +)) +config.substitutions.append(('%{link_flags}', + '-nostdlib++ -startfiles -stdlib ' + '-L %{lib-dir} -lc++ -lc++abi ' + '-Wl,--suppress-stack-size-warning ' + '-Wl,-mllvm,-nvptx-lower-global-ctor-dtor=1 ' + '-Wl,-mllvm,-nvptx-emit-init-fini-kernel' +)) +config.substitutions.append(('%{exec}', + '%{executor} --no-parallelism' +)) + +config.stdlib = 'llvm-libc++' + +import os, site +site.addsitedir(os.path.join('@LIBCXX_SOURCE_DIR@', 'utils')) +import libcxx.test.params, libcxx.test.config +libcxx.test.config.configure( + libcxx.test.params.DEFAULT_PARAMETERS, + libcxx.test.features.DEFAULT_FEATURES, + config, + lit_config +) diff --git a/libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_range.pass.cpp b/libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_range.pass.cpp index a5f5455297ad4..7681eb63b9076 100644 --- a/libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_range.pass.cpp +++ b/libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_range.pass.cpp @@ -6,6 +6,10 @@ // //===----------------------------------------------------------------------===// +// FIXME: This takes over an hour to compile, disable for now. +// UNSUPPORTED: LIBCXX-AMDGPU-FIXME +// UNSUPPORTED: LIBCXX-NVPTX-FIXME + // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 // UNSUPPORTED: GCC-ALWAYS_INLINE-FIXME diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp index 03e82590ed4ef..2bd27f63e751a 100644 --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp @@ -6,6 +6,10 @@ // //===----------------------------------------------------------------------===// +// FIXME: This takes over an hour to compile, disable for now. +// UNSUPPORTED: LIBCXX-AMDGPU-FIXME +// UNSUPPORTED: LIBCXX-NVPTX-FIXME + // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20 // ADDITIONAL_COMPILE_FLAGS(has-fconstexpr-steps): -fconstexpr-steps=10000000 // ADDITIONAL_COMPILE_FLAGS(has-fconstexpr-ops-limit): -fconstexpr-ops-limit=70000000 diff --git a/libcxx/utils/libcxx/test/features.py b/libcxx/utils/libcxx/test/features.py index 735eb5ac949dc..2381296009f3a 100644 --- a/libcxx/utils/libcxx/test/features.py +++ b/libcxx/utils/libcxx/test/features.py @@ -496,6 +496,14 @@ def _mingwSupportsModules(cfg): """, ), ), + Feature( + name="LIBCXX-AMDGPU-FIXME", + when=lambda cfg: "__AMDGPU__" in compilerMacros(cfg), + ), + Feature( + name="LIBCXX-NVPTX-FIXME", + when=lambda cfg: "__NVPTX__" in compilerMacros(cfg), + ), Feature( name="can-create-symlinks", when=lambda cfg: "_WIN32" not in compilerMacros(cfg)