[gentoo-commits] repo/gentoo:master commit in: dev-cpp/highway/files/, dev-cpp/highway/
commit: 75145e4759c8e12bf8994889ee69c24bacf1c4d5 Author: Daniel Novomeský gmail com> AuthorDate: Thu Jan 25 11:55:42 2024 + Commit: Joonas Niilola gentoo org> CommitDate: Fri Feb 9 14:09:49 2024 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=75145e47 dev-cpp/highway: revbump for UB case fix Closes: https://bugs.gentoo.org/922793 Signed-off-by: Daniel Novomeský gmail.com> Closes: https://github.com/gentoo/gentoo/pull/35005 Signed-off-by: Joonas Niilola gentoo.org> ...ay-1.0.7-Fix_UB_case_with_signed_overflow.patch | 29 +++ dev-cpp/highway/highway-1.0.7-r1.ebuild| 41 ++ 2 files changed, 70 insertions(+) diff --git a/dev-cpp/highway/files/highway-1.0.7-Fix_UB_case_with_signed_overflow.patch b/dev-cpp/highway/files/highway-1.0.7-Fix_UB_case_with_signed_overflow.patch new file mode 100644 index ..814d584e8b3a --- /dev/null +++ b/dev-cpp/highway/files/highway-1.0.7-Fix_UB_case_with_signed_overflow.patch @@ -0,0 +1,29 @@ +https://github.com/google/highway/issues/1549 +https://github.com/google/highway/commit/45eea15b5488f3e7a15c2c94ac77bd9e99703203 + +From 45eea15b5488f3e7a15c2c94ac77bd9e99703203 Mon Sep 17 00:00:00 2001 +From: Mathieu Malaterre +Date: Thu, 5 Oct 2023 08:00:38 +0200 +Subject: [PATCH] Fix UB case with signed overflow, prefer unsigned + +Fixes #1549 + +Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110643 +Suggested-by: Andrew Pinski +--- + hwy/ops/arm_neon-inl.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hwy/ops/arm_neon-inl.h b/hwy/ops/arm_neon-inl.h +index 7ac7a10c62..97de46be2e 100644 +--- a/hwy/ops/arm_neon-inl.h b/hwy/ops/arm_neon-inl.h +@@ -4592,7 +4592,7 @@ HWY_API Mask128 IsNaN(const Vec128 v) { + template + HWY_API Mask128 IsInf(const Vec128 v) { + const DFromV d; +- const RebindToSigned di; ++ const RebindToUnsigned di; + const VFromD vi = BitCast(di, v); + // 'Shift left' to clear the sign bit, check for exponent=max and mantissa=0. + return RebindMask(d, Eq(Add(vi, vi), Set(di, hwy::MaxExponentTimes2(; diff --git a/dev-cpp/highway/highway-1.0.7-r1.ebuild b/dev-cpp/highway/highway-1.0.7-r1.ebuild new file mode 100644 index ..98f940b6570c --- /dev/null +++ b/dev-cpp/highway/highway-1.0.7-r1.ebuild @@ -0,0 +1,41 @@ +# Copyright 2021-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake-multilib + +DESCRIPTION="Performance-portable, length-agnostic SIMD with runtime dispatch" +HOMEPAGE="https://github.com/google/highway; + +if [[ "${PV}" == ** ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/google/highway.git; +else + SRC_URI="https://github.com/google/highway/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +LICENSE="Apache-2.0" +SLOT="0" +IUSE="cpu_flags_arm_neon test" + +DEPEND="test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] )" + +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}/${PN}-1.0.7-Fix_UB_case_with_signed_overflow.patch" +) + +multilib_src_configure() { + local mycmakeargs=( + -DHWY_CMAKE_ARM7=$(usex cpu_flags_arm_neon) + -DBUILD_TESTING=$(usex test) + -DHWY_WARNINGS_ARE_ERRORS=OFF + ) + + use test && mycmakeargs+=( "-DHWY_SYSTEM_GTEST=ON" ) + + cmake_src_configure +}
[gentoo-commits] repo/gentoo:master commit in: dev-cpp/highway/files/, dev-cpp/highway/
commit: 1f2eceb5dfcce9899649870caac59d62055e7b82 Author: stefson yahoo de> AuthorDate: Tue Mar 7 11:01:52 2023 + Commit: Sam James gentoo org> CommitDate: Tue Mar 7 11:44:19 2023 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1f2eceb5 dev-cpp/highway: fix compile without neon optimization on armv7 Closes: https://bugs.gentoo.org/869077 Signed-off-by: Steffen Kuhn yandex.com> Closes: https://github.com/gentoo/gentoo/pull/29964 Signed-off-by: Sam James gentoo.org> ...ile-for-armv7-targets-with-vfp4-and-lower.patch | 123 + dev-cpp/highway/highway-1.0.1-r1.ebuild| 6 +- dev-cpp/highway/highway-1.0.3.ebuild | 4 + 3 files changed, 132 insertions(+), 1 deletion(-) diff --git a/dev-cpp/highway/files/0001-fix-compile-for-armv7-targets-with-vfp4-and-lower.patch b/dev-cpp/highway/files/0001-fix-compile-for-armv7-targets-with-vfp4-and-lower.patch new file mode 100644 index ..ebf448cfbb24 --- /dev/null +++ b/dev-cpp/highway/files/0001-fix-compile-for-armv7-targets-with-vfp4-and-lower.patch @@ -0,0 +1,123 @@ +https://github.com/google/highway/commit/dc63f813c465f3bf95cb5b98f01aeed28b81173c +https://github.com/google/highway/pull/1143 + +https://github.com/google/highway/issues/834 +https://github.com/google/highway/issues/1032 + +https://bugs.gentoo.org/869077 + +From dc63f813c465f3bf95cb5b98f01aeed28b81173c Mon Sep 17 00:00:00 2001 +From: Julien Olivain +Date: Mon, 20 Feb 2023 23:22:28 +0100 +Subject: [PATCH] Fix compilation for armv7 targets with vfp < v4 and gcc >= 8 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When using a armv7 gcc >= 8 toolchain (like [1]) with Highway +configured with -DHWY_CMAKE_ARM7=OFF and HWY_ENABLE_CONTRIB=ON, +compilation fails with error: + +In file included from /build/highway-1.0.3/hwy/ops/arm_neon-inl.h:33, + from /build/highway-1.0.3/hwy/highway.h:358, + from /build/highway-1.0.3/hwy/contrib/sort/shared-inl.h:104, + from /build/highway-1.0.3/hwy/contrib/sort/traits128-inl.h:27, + from /build/highway-1.0.3/hwy/contrib/sort/vqsort_128d.cc:23, + from /build/highway-1.0.3/hwy/foreach_target.h:81, + from /build/highway-1.0.3/hwy/contrib/sort/vqsort_128d.cc:20: + /toolchain/lib/gcc/arm-buildroot-linux-gnueabihf/12.2.0/include/arm_neon.h: In function ‘void hwy::N_NEON::StoreU(Vec128, Full128, uint64_t*)’: + /toolchain/lib/gcc/arm-buildroot-linux-gnueabihf/12.2.0/include/arm_neon.h:11052:1: error: inlining failed in call to ‘always_inline’ ‘void vst1q_u64(uint64_t*, uint64x2_t)’: target specific option mismatch +11052 | vst1q_u64 (uint64_t * __a, uint64x2_t __b) + | ^ +/build/highway-1.0.3/hwy/ops/arm_neon-inl.h:2786:12: note: called from here + 2786 | vst1q_u64(unaligned, v.raw); + | ~^~ + +The same errors happen when configured with HWY_ENABLE_EXAMPLES=ON, +or from client libraries like libjxl (at other places). + +The issue is that Highway Arm NEON ops have a dependency on the +Advanced SIMD (Neon) v2 and the VFPv4 floating-point instructions. +The SIMD (Neon) v1 and VFPv3 instructions are not supported. + +There was several attempts to fix variants of this issues. +See #834 and #1032. + +HWY_NEON target is selected only if __ARM_NEON is defined. See: +https://github.com/google/highway/blob/1.0.3/hwy/detect_targets.h#L251 + +This test is not sufficient since __ARM_NEON will be predefined in +any cases when Neon is enabled (neon-vfpv3, neon-vfpv4). + +The issue is that HWY_CMAKE_ARM7=ON implies VFPv4 / NEON SIMD v2. +When setting HWY_CMAKE_ARM7=OFF, "neon-vfpv4" will not be forced, +but the code is still using intrinsics assuming VFPv4. Gcc will fail +with error because code cannot be generated for the selected +architecture. + +This issue can be avoided by adding "-DHWY_DISABLED_TARGETS=HWY_NEON" in +CXXFLAGS. The problem with this solution is that every client program will +also need to do the same. This goes against the very purpose of +"hwy/detect_targets.h". + +Technically, Armv7-a processors with VFPv4 can be detected using some +ACLE (Arm C Language Extensions [2]) predefined macros: + +Basically, we want Highway to define HWY_NEON only when the target +supports SIMDv2/VFPv4 or higher. An older target with vfpv3 only +(e.g. Cortex-A8, A9, ...) would NOT define HWY_NEON, and therefore +would fallback on HWY_SCALAR implementation. + +However, not all compiler completely support ACLE. There is also +several versions too. So we cannot easily rely on macros like +"__ARM_VFPV4__" (which clang predefine, but not gcc). + +The alternative solution proposed in this patch, is to declare the +HWY_NEON target architecture as broken, when we detect the target is +Armv7-A, but mandatory features for vfpv4 (namely half-float,
[gentoo-commits] repo/gentoo:master commit in: dev-cpp/highway/files/, dev-cpp/highway/
commit: e6426d5f35e2fb9cc596fe69425c0338ca5b4496 Author: Paolo Pedroni iol it> AuthorDate: Wed Mar 30 16:03:13 2022 + Commit: Matt Turner gentoo org> CommitDate: Wed Apr 6 06:26:46 2022 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e6426d5f dev-cpp/highway: Fix detection of AVX512 for IceLake Client CPUs Closes: https://bugs.gentoo.org/836373 Closes: https://github.com/gentoo/gentoo/pull/24819 Signed-off-by: Paolo Pedroni iol.it> Signed-off-by: Matt Turner gentoo.org> ...y-0.16.0-fix-AVX512-detection-on-IceLakeClient.patch | 17 + .../{highway-0.16.0.ebuild => highway-0.16.0-r1.ebuild} | 4 2 files changed, 21 insertions(+) diff --git a/dev-cpp/highway/files/highway-0.16.0-fix-AVX512-detection-on-IceLakeClient.patch b/dev-cpp/highway/files/highway-0.16.0-fix-AVX512-detection-on-IceLakeClient.patch new file mode 100644 index ..de157925c6ef --- /dev/null +++ b/dev-cpp/highway/files/highway-0.16.0-fix-AVX512-detection-on-IceLakeClient.patch @@ -0,0 +1,17 @@ +https://github.com/google/highway/commit/daf441c78191b3433410498d27a5bfdfdf93a142 + +diff --git a/hwy/targets.cc b/hwy/targets.cc +index 2a0ab4ef..7e7e2d79 100644 +--- a/hwy/targets.cc b/hwy/targets.cc +@@ -328,8 +328,8 @@ uint32_t SupportedTargets() { + if (!IsBitSet(xcr0, 2)) { + bits &= ~uint32_t(HWY_AVX2 | HWY_AVX3 | HWY_AVX3_DL); + } +-// ZMM + opmask +-if ((xcr0 & 0x70) != 0x70) { ++// opmask, ZMM lo/hi ++if (!IsBitSet(xcr0, 5) || !IsBitSet(xcr0, 6) || !IsBitSet(xcr0, 7)) { + bits &= ~uint32_t(HWY_AVX3 | HWY_AVX3_DL); + } + } diff --git a/dev-cpp/highway/highway-0.16.0.ebuild b/dev-cpp/highway/highway-0.16.0-r1.ebuild similarity index 91% rename from dev-cpp/highway/highway-0.16.0.ebuild rename to dev-cpp/highway/highway-0.16.0-r1.ebuild index 89b07a85a587..52fb0b16d961 100644 --- a/dev-cpp/highway/highway-0.16.0.ebuild +++ b/dev-cpp/highway/highway-0.16.0-r1.ebuild @@ -25,6 +25,10 @@ DEPEND="test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] )" RESTRICT="!test? ( test )" +PATCHES=( + "${FILESDIR}"/${P}-fix-AVX512-detection-on-IceLakeClient.patch +) + multilib_src_configure() { local mycmakeargs=( -DBUILD_TESTING=$(usex test)