[gentoo-commits] repo/gentoo:master commit in: dev-cpp/highway/files/, dev-cpp/highway/

2024-02-09 Thread Joonas Niilola
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/

2023-03-07 Thread Sam James
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/

2022-04-06 Thread Matt Turner
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)