Skip to content

[mathcore] Work around libstdc++ <experimental/simd> AVX-512 bug#22437

Open
guitargeek wants to merge 1 commit into
root-project:masterfrom
guitargeek:issue-22370
Open

[mathcore] Work around libstdc++ <experimental/simd> AVX-512 bug#22437
guitargeek wants to merge 1 commit into
root-project:masterfrom
guitargeek:issue-22370

Conversation

@guitargeek
Copy link
Copy Markdown
Contributor

The libstdc++'s _VecBltnBtmsk (AVX-512 mask) ABI fails to compile with non-GCC front ends (Clang, Intel icpx) due to a static_assert requiring long long and long to be the same type, reproducible at least with GCC 15 and 16.

Detect this in CMake and, when the AVX-512 path is broken but the 256-bit AVX path compiles, pin ROOT's SIMD alias in Math/Types.h to simd_abi::__avx (which corresponds to AVX-256). ABI stays consistent across all translation units and interpreted contexts, no -mno-avx512f is needed, and the rest of ROOT keeps native AVX-512 codegen.

Closes #22370.

The `libstdc++`'s `_VecBltnBtmsk` (AVX-512 mask) ABI fails to compile
with non-GCC front ends (Clang, Intel icpx) due to a static_assert
requiring `long long` and `long` to be the same type, reproducible at
least with GCC 15 and 16.

Detect this in CMake and, when the AVX-512 path is broken but the
256-bit AVX path compiles, pin ROOT's SIMD alias in `Math/Types.h` to
`simd_abi::__avx` (which corresponds to AVX-256). ABI stays consistent
across all translation units and interpreted contexts, no `-mno-avx512f`
is needed, and the rest of ROOT keeps native AVX-512 codegen.

Closes root-project#22370.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 31, 2026

Test Results

    22 files      22 suites   3d 7h 48m 37s ⏱️
 3 863 tests  3 862 ✅ 0 💤 1 ❌
76 218 runs  76 217 ✅ 0 💤 1 ❌

For more details on these failures, see this check.

Results for commit 51dd384.

♻️ This comment has been updated with latest results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ROOT 6.40.00 seems won't compile with Clang + GCC 16 standard library

1 participant