The below makes devel/highway build on sparc64. I don't know what the
correct value for HWY_ARCH_MAX_BYTES would be. I tried 64 and 16 and
the tests look the same on the M3000.

99% tests passed, 3 tests failed out of 459

Total Test time (real) = 111.15 sec

The following tests FAILED:
        391 - HwyMathTestGroup/HwyMathTest.TestAllExpm1/SCALAR (Subprocess 
aborted)
        405 - HwyMathHyperTestGroup/HwyMathHyperTest.TestAllAsinh/SCALAR 
(Subprocess aborted)
        407 - HwyMathHyperTestGroup/HwyMathHyperTest.TestAllSinh/SCALAR 
(Subprocess aborted)
Errors while running CTest

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/highway/Makefile,v
diff -u -p -r1.9 Makefile
--- Makefile    5 Jun 2026 17:57:49 -0000       1.9
+++ Makefile    6 Jun 2026 19:47:49 -0000
@@ -1,5 +1,3 @@
-BROKEN-sparc64 = error "Missing case for HWY_ARCH_*"
-
 COMMENT =      length-agnostic SIMD with runtime dispatch
 
 GH_ACCOUNT =   google
Index: patches/patch-hwy_detect_compiler_arch_h
===================================================================
RCS file: patches/patch-hwy_detect_compiler_arch_h
diff -N patches/patch-hwy_detect_compiler_arch_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-hwy_detect_compiler_arch_h    6 Jun 2026 20:32:24 -0000
@@ -0,0 +1,34 @@
+Index: hwy/detect_compiler_arch.h
+--- hwy/detect_compiler_arch.h.orig
++++ hwy/detect_compiler_arch.h
+@@ -390,6 +390,12 @@
+ #error "Cannot have both RISCV_32 and RISCV_64"
+ #endif
+ 
++#if defined(__sparc64__)
++#define HWY_ARCH_SPARC64 1
++#else
++#define HWY_ARCH_SPARC64 0
++#endif
++
+ #if defined(__s390x__)
+ #define HWY_ARCH_S390X 1
+ #else
+@@ -425,7 +431,7 @@
+ // detect none of the above.
+ #if (HWY_ARCH_X86 + HWY_ARCH_PPC + HWY_ARCH_ARM + HWY_ARCH_ARM_OLD +        \
+      HWY_ARCH_WASM + HWY_ARCH_RISCV + HWY_ARCH_S390X + HWY_ARCH_LOONGARCH + \
+-     HWY_ARCH_HEXAGON) > 1
++     HWY_ARCH_HEXAGON + HWY_ARCH_SPARC64) > 1
+ #error "Must not detect more than one architecture"
+ #endif
+ 
+@@ -439,7 +445,7 @@
+ #define HWY_ARCH_MAX_BYTES 64
+ #elif HWY_ARCH_WASM || HWY_ARCH_LOONGARCH
+ #define HWY_ARCH_MAX_BYTES 32
+-#elif HWY_ARCH_PPC || HWY_ARCH_S390X || HWY_ARCH_ARM_V7 || HWY_ARCH_ARM_OLD
++#elif HWY_ARCH_PPC || HWY_ARCH_S390X || HWY_ARCH_SPARC64 || HWY_ARCH_ARM_V7 
|| HWY_ARCH_ARM_OLD
+ #define HWY_ARCH_MAX_BYTES 16
+ #else
+ #error "Missing case for HWY_ARCH_*"
Index: patches/patch-hwy_targets_cc
===================================================================
RCS file: /cvs/ports/devel/highway/patches/patch-hwy_targets_cc,v
diff -u -p -r1.2 patch-hwy_targets_cc
--- patches/patch-hwy_targets_cc        6 Jun 2026 12:11:10 -0000       1.2
+++ patches/patch-hwy_targets_cc        6 Jun 2026 19:48:54 -0000
@@ -1,11 +1,13 @@
 Index: hwy/targets.cc
 --- hwy/targets.cc.orig
 +++ hwy/targets.cc
-@@ -29,7 +29,7 @@
+@@ -28,8 +28,8 @@
+ #include <xmmintrin.h>
  
  #elif (HWY_ARCH_ARM || HWY_ARCH_PPC || HWY_ARCH_S390X || HWY_ARCH_RISCV || \
-        HWY_ARCH_LOONGARCH) &&                                              \
+-       HWY_ARCH_LOONGARCH) &&                                              \
 -    HWY_OS_LINUX
++       HWY_ARCH_LOONGARCH || HWY_ARCH_SPARC64) &&                          \
 +    (HWY_OS_LINUX || HWY_OS_FREEBSD || defined(__OpenBSD__))
  // sys/auxv.h does not always include asm/hwcap.h, or define HWCAP*, hence we
  // still include this directly. See #1199.
@@ -16,7 +18,7 @@ Index: hwy/targets.cc
  namespace hwy {
 +
 +#if (HWY_ARCH_ARM || HWY_ARCH_PPC || HWY_ARCH_S390X || HWY_ARCH_RISCV || \
-+       HWY_ARCH_LOONGARCH) &&                                            \
++       HWY_ARCH_LOONGARCH || HWY_ARCH_SPARC64) &&                        \
 +       (HWY_OS_FREEBSD || defined(__OpenBSD__))
 +#if HWY_HAVE_AUXV
 +// Implement getauxval using elf_aux_info

Reply via email to