summaryrefslogtreecommitdiff
path: root/dev-cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dev-cpp')
-rw-r--r--dev-cpp/xsimd/Manifest1
-rw-r--r--dev-cpp/xsimd/files/xsimd-13.0.0-detection-simd-with-mitigations.patch148
-rw-r--r--dev-cpp/xsimd/files/xsimd-13.0.0-sve-rvv.patch88
-rw-r--r--dev-cpp/xsimd/xsimd-13.1.0.ebuild72
4 files changed, 0 insertions, 309 deletions
diff --git a/dev-cpp/xsimd/Manifest b/dev-cpp/xsimd/Manifest
index 8044abc7d00b..1d9c2dcd2338 100644
--- a/dev-cpp/xsimd/Manifest
+++ b/dev-cpp/xsimd/Manifest
@@ -1,2 +1 @@
-DIST xsimd-13.1.0.tar.gz 265436 BLAKE2B 1c15612a280a237c730dce363cef5ca6b65625807cf22d2589fe2d50470e07a0877c12a52f769030dffbfadfa8e7f0d51c7c34fd679c01e14121c3d9c2582792 SHA512 a446aa29364c12785b9fc600341cd21b8fcf3cff6e07f6093b5cd3669a0c26397ccd75f0504c52da7f1843e2844e8b909bebbe1e64f0f2d8355f0ee0eadf1263
DIST xsimd-13.2.0.tar.gz 269287 BLAKE2B 596d348e32cd6cde6112d7dee304d44111db755eb5827c6c55a57c2803a65956ef4660784748c6f127c28c80c62689d9956363bbc49ef9d2edf5f1f8b428af55 SHA512 3825626547b0dd9b58f306bc89e9b3bc6dd778ad3811b7828e50fc16ae102574255b53f2b0714995de2bd6f9eb7b2c5d266a1a24fbfdf5420dc5e94d7dcbb522
diff --git a/dev-cpp/xsimd/files/xsimd-13.0.0-detection-simd-with-mitigations.patch b/dev-cpp/xsimd/files/xsimd-13.0.0-detection-simd-with-mitigations.patch
deleted file mode 100644
index 6aab22cd8416..000000000000
--- a/dev-cpp/xsimd/files/xsimd-13.0.0-detection-simd-with-mitigations.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-https://mail.kde.org/pipermail/distributions/2024-July/001511.html
-https://github.com/xtensor-stack/xsimd/commit/96edf0340492fa9c080f5182b38358ca85baef5e
-
-From 96edf0340492fa9c080f5182b38358ca85baef5e Mon Sep 17 00:00:00 2001
-From: Dmitry Kazakov <dimula73@gmail.com>
-Date: Tue, 28 May 2024 22:21:08 +0200
-Subject: [PATCH] Fix detection of SSE/AVX/AVX512 when they are explicitly
- disabled by OS
-
-Some CPU vulnerability mitigations may disable AVX functionality
-on the hardware level via the XCR0 register. We should check that
-manually to verify that OS actually allows us to use this feature.
-
-See https://bugs.kde.org/show_bug.cgi?id=484622
-
-Fix #1025
----
- include/xsimd/config/xsimd_cpuid.hpp | 91 ++++++++++++++++++++++------
- 1 file changed, 72 insertions(+), 19 deletions(-)
-
-diff --git a/include/xsimd/config/xsimd_cpuid.hpp b/include/xsimd/config/xsimd_cpuid.hpp
-index f22089bac..6dda3be09 100644
---- a/include/xsimd/config/xsimd_cpuid.hpp
-+++ b/include/xsimd/config/xsimd_cpuid.hpp
-@@ -114,6 +114,35 @@ namespace xsimd
- #endif
-
- #elif defined(__x86_64__) || defined(__i386__) || defined(_M_AMD64) || defined(_M_IX86)
-+
-+ auto get_xcr0_low = []() noexcept
-+ {
-+ uint32_t xcr0;
-+
-+#if defined(_MSC_VER) && _MSC_VER >= 1400
-+
-+ xcr0 = (uint32_t)_xgetbv(0);
-+
-+#elif defined(__GNUC__)
-+
-+ __asm__(
-+ "xorl %%ecx, %%ecx\n"
-+ "xgetbv\n"
-+ : "=a"(xcr0)
-+ :
-+#if defined(__i386__)
-+ : "ecx", "edx"
-+#else
-+ : "rcx", "rdx"
-+#endif
-+ );
-+
-+#else /* _MSC_VER < 1400 */
-+#error "_MSC_VER < 1400 is not supported"
-+#endif /* _MSC_VER && _MSC_VER >= 1400 */
-+ return xcr0;
-+ };
-+
- auto get_cpuid = [](int reg[4], int level, int count = 0) noexcept
- {
-
-@@ -148,19 +177,43 @@ namespace xsimd
-
- get_cpuid(regs1, 0x1);
-
-- sse2 = regs1[3] >> 26 & 1;
-- sse3 = regs1[2] >> 0 & 1;
-- ssse3 = regs1[2] >> 9 & 1;
-- sse4_1 = regs1[2] >> 19 & 1;
-- sse4_2 = regs1[2] >> 20 & 1;
-- fma3_sse42 = regs1[2] >> 12 & 1;
-+ // OS can explicitly disable the usage of SSE/AVX extensions
-+ // by setting an appropriate flag in CR0 register
-+ //
-+ // https://docs.kernel.org/admin-guide/hw-vuln/gather_data_sampling.html
-+
-+ unsigned sse_state_os_enabled = 1;
-+ unsigned avx_state_os_enabled = 1;
-+ unsigned avx512_state_os_enabled = 1;
-+
-+ // OSXSAVE: A value of 1 indicates that the OS has set CR4.OSXSAVE[bit
-+ // 18] to enable XSETBV/XGETBV instructions to access XCR0 and
-+ // to support processor extended state management using
-+ // XSAVE/XRSTOR.
-+ bool osxsave = regs1[2] >> 27 & 1;
-+ if (osxsave)
-+ {
-+
-+ uint32_t xcr0 = get_xcr0_low();
-+
-+ sse_state_os_enabled = xcr0 >> 1 & 1;
-+ avx_state_os_enabled = xcr0 >> 2 & sse_state_os_enabled;
-+ avx512_state_os_enabled = xcr0 >> 6 & avx_state_os_enabled;
-+ }
-+
-+ sse2 = regs1[3] >> 26 & sse_state_os_enabled;
-+ sse3 = regs1[2] >> 0 & sse_state_os_enabled;
-+ ssse3 = regs1[2] >> 9 & sse_state_os_enabled;
-+ sse4_1 = regs1[2] >> 19 & sse_state_os_enabled;
-+ sse4_2 = regs1[2] >> 20 & sse_state_os_enabled;
-+ fma3_sse42 = regs1[2] >> 12 & sse_state_os_enabled;
-
-- avx = regs1[2] >> 28 & 1;
-+ avx = regs1[2] >> 28 & avx_state_os_enabled;
- fma3_avx = avx && fma3_sse42;
-
- int regs8[4];
- get_cpuid(regs8, 0x80000001);
-- fma4 = regs8[2] >> 16 & 1;
-+ fma4 = regs8[2] >> 16 & avx_state_os_enabled;
-
- // sse4a = regs[2] >> 6 & 1;
-
-@@ -168,23 +221,23 @@ namespace xsimd
-
- int regs7[4];
- get_cpuid(regs7, 0x7);
-- avx2 = regs7[1] >> 5 & 1;
-+ avx2 = regs7[1] >> 5 & avx_state_os_enabled;
-
- int regs7a[4];
- get_cpuid(regs7a, 0x7, 0x1);
-- avxvnni = regs7a[0] >> 4 & 1;
-+ avxvnni = regs7a[0] >> 4 & avx_state_os_enabled;
-
- fma3_avx2 = avx2 && fma3_sse42;
-
-- avx512f = regs7[1] >> 16 & 1;
-- avx512cd = regs7[1] >> 28 & 1;
-- avx512dq = regs7[1] >> 17 & 1;
-- avx512bw = regs7[1] >> 30 & 1;
-- avx512er = regs7[1] >> 27 & 1;
-- avx512pf = regs7[1] >> 26 & 1;
-- avx512ifma = regs7[1] >> 21 & 1;
-- avx512vbmi = regs7[2] >> 1 & 1;
-- avx512vnni_bw = regs7[2] >> 11 & 1;
-+ avx512f = regs7[1] >> 16 & avx512_state_os_enabled;
-+ avx512cd = regs7[1] >> 28 & avx512_state_os_enabled;
-+ avx512dq = regs7[1] >> 17 & avx512_state_os_enabled;
-+ avx512bw = regs7[1] >> 30 & avx512_state_os_enabled;
-+ avx512er = regs7[1] >> 27 & avx512_state_os_enabled;
-+ avx512pf = regs7[1] >> 26 & avx512_state_os_enabled;
-+ avx512ifma = regs7[1] >> 21 & avx512_state_os_enabled;
-+ avx512vbmi = regs7[2] >> 1 & avx512_state_os_enabled;
-+ avx512vnni_bw = regs7[2] >> 11 & avx512_state_os_enabled;
- avx512vnni_vbmi = avx512vbmi && avx512vnni_bw;
- #endif
- }
-
diff --git a/dev-cpp/xsimd/files/xsimd-13.0.0-sve-rvv.patch b/dev-cpp/xsimd/files/xsimd-13.0.0-sve-rvv.patch
deleted file mode 100644
index 38ea56d1baa2..000000000000
--- a/dev-cpp/xsimd/files/xsimd-13.0.0-sve-rvv.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-https://mail.kde.org/pipermail/distributions/2024-July/001511.html
-https://github.com/xtensor-stack/xsimd/commit/80a59235e3ffa51659aaa06f002bfd088b77023c
-
-From 80a59235e3ffa51659aaa06f002bfd088b77023c Mon Sep 17 00:00:00 2001
-From: Dmitry Kazakov <dimula73@gmail.com>
-Date: Fri, 14 Jun 2024 10:19:55 +0200
-Subject: [PATCH] Fix xsimd::available_architectures().has() for sve and rvv
- archs
-
-Ideally the patch CPU detection code should also check if the length
-of SVE and RVV is actually supported by the current CPU implementation
-(i.e. ZCR_Elx.LEN register for SVE and something else for RVV), but
-I don't have such CPUs/emulators handy, so I cannot add such checks.
-
-Given that xsimd::available_architectures().has() is a new feature
-of XSIMD13 and the length check has never been present in XSIMD, this
-bug is not a regression at least.
-
-The patch also adds a unittest that reproduces the error the patch fixes
----
- include/xsimd/config/xsimd_cpuid.hpp | 12 ++++++++++--
- test/test_arch.cpp | 15 +++++++++++++++
- 2 files changed, 25 insertions(+), 2 deletions(-)
-
-diff --git a/include/xsimd/config/xsimd_cpuid.hpp b/include/xsimd/config/xsimd_cpuid.hpp
-index 6dda3be09..8021fceb8 100644
---- a/include/xsimd/config/xsimd_cpuid.hpp
-+++ b/include/xsimd/config/xsimd_cpuid.hpp
-@@ -42,6 +42,10 @@ namespace xsimd
- #define ARCH_FIELD_EX(arch, field_name) \
- unsigned field_name; \
- XSIMD_INLINE bool has(::xsimd::arch) const { return this->field_name; }
-+
-+#define ARCH_FIELD_EX_REUSE(arch, field_name) \
-+ XSIMD_INLINE bool has(::xsimd::arch) const { return this->field_name; }
-+
- #define ARCH_FIELD(name) ARCH_FIELD_EX(name, name)
-
- ARCH_FIELD(sse2)
-@@ -72,8 +76,12 @@ namespace xsimd
- ARCH_FIELD(neon)
- ARCH_FIELD(neon64)
- ARCH_FIELD_EX(i8mm<::xsimd::neon64>, i8mm_neon64)
-- ARCH_FIELD(sve)
-- ARCH_FIELD(rvv)
-+ ARCH_FIELD_EX(detail::sve<512>, sve)
-+ ARCH_FIELD_EX_REUSE(detail::sve<256>, sve)
-+ ARCH_FIELD_EX_REUSE(detail::sve<128>, sve)
-+ ARCH_FIELD_EX(detail::rvv<512>, rvv)
-+ ARCH_FIELD_EX_REUSE(detail::rvv<256>, rvv)
-+ ARCH_FIELD_EX_REUSE(detail::rvv<128>, rvv)
- ARCH_FIELD(wasm)
-
- #undef ARCH_FIELD
-diff --git a/test/test_arch.cpp b/test/test_arch.cpp
-index b42073358..f1f50d546 100644
---- a/test/test_arch.cpp
-+++ b/test/test_arch.cpp
-@@ -38,6 +38,16 @@ struct check_supported
- }
- };
-
-+struct check_cpu_has_intruction_set
-+{
-+ template <class Arch>
-+ void operator()(Arch arch) const
-+ {
-+ static_assert(std::is_same<decltype(xsimd::available_architectures().has(arch)), bool>::value,
-+ "cannot test instruction set availability on CPU");
-+ }
-+};
-+
- struct check_available
- {
- template <class Arch>
-@@ -71,6 +81,11 @@ TEST_CASE("[multi arch support]")
- xsimd::supported_architectures::for_each(check_supported {});
- }
-
-+ SUBCASE("xsimd::available_architectures::has")
-+ {
-+ xsimd::all_architectures::for_each(check_cpu_has_intruction_set {});
-+ }
-+
- SUBCASE("xsimd::default_arch::name")
- {
- constexpr char const* name = xsimd::default_arch::name();
-
diff --git a/dev-cpp/xsimd/xsimd-13.1.0.ebuild b/dev-cpp/xsimd/xsimd-13.1.0.ebuild
deleted file mode 100644
index 8695fd2723e9..000000000000
--- a/dev-cpp/xsimd/xsimd-13.1.0.ebuild
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake python-any-r1
-
-DESCRIPTION="C++ wrappers for SIMD intrinsics"
-HOMEPAGE="https://github.com/xtensor-stack/xsimd"
-SRC_URI="https://github.com/xtensor-stack/${PN}/archive/refs/tags/${PV}.tar.gz
- -> ${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="doc test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- doc? (
- app-text/doxygen
- $(python_gen_any_dep '
- dev-python/breathe[${PYTHON_USEDEP}]
- dev-python/sphinx[${PYTHON_USEDEP}]
- dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]
- ')
- )
- test? ( dev-cpp/doctest )"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-11.1.0-c++17.patch
- "${FILESDIR}"/${PN}-12.1.1-no-march.patch
-)
-
-python_check_deps() {
- python_has_version "dev-python/sphinx[${PYTHON_USEDEP}]" &&
- python_has_version "dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]" &&
- python_has_version "dev-python/breathe[${PYTHON_USEDEP}]"
-
-}
-
-pkg_setup() {
- use doc && python-any-r1_pkg_setup
-}
-
-src_prepare() {
- sed -i \
- -e '/fPIC/d' \
- test/CMakeLists.txt \
- || die
- cmake_src_prepare
-}
-
-src_configure() {
- local mycmakeargs=(
- -DBUILD_TESTS=$(usex test)
- )
- cmake_src_configure
-}
-
-src_compile() {
- cmake_src_compile
- use doc && emake -C docs html
-}
-
-src_install() {
- cmake_src_install
- if use doc; then
- dodoc -r docs/build/html
- fi
-}