diff --git a/.github/workflows/ci_misc.yml b/.github/workflows/ci_misc.yml index ac18df6295..23d92bf6a5 100644 --- a/.github/workflows/ci_misc.yml +++ b/.github/workflows/ci_misc.yml @@ -44,6 +44,13 @@ jobs: build_type: Release test_threads: 1 # snippets create and delete files and some separate tests create/delete the same files + - name: "Snippet IntelLLVM" + compiler: "intel" + build: snippet + build_type: Release + test_threads: 1 # snippets create and delete files and some separate tests create/delete the same files + cxx_flags: "-fp-model=strict" + - name: "Performance clang17 libc++" compiler: "clang-17" build: performance @@ -57,6 +64,13 @@ jobs: build_type: Release test_threads: 2 + - name: "Performance IntelLLVM" + compiler: "intel" + build: performance + build_type: Release + test_threads: 2 + cxx_flags: "-fp-model=strict" + - name: "Header clang17 libc++" compiler: "clang-17" build: header @@ -92,6 +106,7 @@ jobs: fetch-depth: 1 - name: Install CMake + if: contains(matrix.compiler, 'intel') == false uses: seqan/actions/setup-cmake@main with: cmake: 3.16.9 diff --git a/test/performance/alignment/global_affine_alignment_parallel_benchmark.cpp b/test/performance/alignment/global_affine_alignment_parallel_benchmark.cpp index fbdd9ce649..978fbd23f0 100644 --- a/test/performance/alignment/global_affine_alignment_parallel_benchmark.cpp +++ b/test/performance/alignment/global_affine_alignment_parallel_benchmark.cpp @@ -160,8 +160,8 @@ void seqan2_affine_dna4_parallel(benchmark::State & state) BENCHMARK_TEMPLATE(seqan2_affine_dna4_parallel, score)->UseRealTime(); #endif // SEQAN3_HAS_SEQAN2 -// Crashes with libc++ -#if defined(SEQAN3_HAS_SEQAN2) && defined(_OPENMP) && !defined(_LIBCPP_VERSION) +// Crashes with libc++ or IntelLLVM +#if defined(SEQAN3_HAS_SEQAN2) && defined(_OPENMP) && !defined(_LIBCPP_VERSION) && !defined(__INTEL_LLVM_COMPILER) template void seqan2_affine_dna4_omp_for(benchmark::State & state) { @@ -202,7 +202,7 @@ void seqan2_affine_dna4_omp_for(benchmark::State & state) BENCHMARK_TEMPLATE(seqan2_affine_dna4_omp_for, score)->UseRealTime(); BENCHMARK_TEMPLATE(seqan2_affine_dna4_omp_for, trace)->UseRealTime(); -#endif // defined(SEQAN3_HAS_SEQAN2) && defined(_OPENMP) && !defined(_LIBCPP_VERSION) +#endif // defined(SEQAN3_HAS_SEQAN2) && defined(_OPENMP) && !defined(_LIBCPP_VERSION) && !defined(__INTEL_LLVM_COMPILER) // ============================================================================ // instantiate tests diff --git a/test/seqan3-test.cmake b/test/seqan3-test.cmake index 1d383783bd..8587a99c8f 100644 --- a/test/seqan3-test.cmake +++ b/test/seqan3-test.cmake @@ -14,6 +14,7 @@ cmake_minimum_required (VERSION 3.10) # require SeqAn3 package find_package (SeqAn3 REQUIRED HINTS ${CMAKE_CURRENT_LIST_DIR}/../build_system) +include (CheckCXXCompilerFlag) include (CheckCXXSourceCompiles) include (FindPackageHandleStandardArgs) include (FindPackageMessage) @@ -83,7 +84,8 @@ if (NOT TARGET seqan3::test::performance) # std::views::join is experimental in libc++ target_compile_definitions (seqan3_test_performance INTERFACE _LIBCPP_ENABLE_EXPERIMENTAL) - if (SEQAN3_BENCHMARK_ALIGN_LOOPS) + check_cxx_compiler_flag ("-falign-loops=32" SEQAN3_HAS_FALIGN_LOOPS) + if (SEQAN3_BENCHMARK_ALIGN_LOOPS AND SEQAN3_HAS_FALIGN_LOOPS) target_compile_options (seqan3_test_performance INTERFACE "-falign-loops=32") endif ()