pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

libdeflate-1.20 fails to build with gcc 12



===> build-message [libdeflate-1.20 openexr-3.2.4 gegl-0.4.48nb3 gimp-2.10.38nb1 xsane-0.99.9nb32] ===> Building for libdeflate-1.20
[  6%] Building C object CMakeFiles/libdeflate_static.dir/lib/adler32.c.o
[  6%] Building C object CMakeFiles/libdeflate_shared.dir/lib/adler32.c.o
/tmp//ccnndw0K.s: Assembler messages:
/tmp//ccnndw0K.s:1377: Error: unsupported instruction `vpdpbusd'
/tmp//ccnndw0K.s:1379: Error: unsupported instruction `vpdpbusd'
/tmp//ccnndw0K.s:1381: Error: unsupported instruction `vpdpbusd'
...
etc more of the same

I had seen something like this in Firefox before and there I brutally disabled

-#ifdef __AVXVNNI__
+#ifdef __AVXVNNI__NOT

For this case I had to add patches/patch-lib_x86_adler32__impl.h:

--- lib/x86/adler32_impl.h.orig 2024-06-29 19:20:24.559825229 +0000
+++ lib/x86/adler32_impl.h
@@ -53,7 +53,7 @@
  * AVX-VNNI implementation.  This is used on CPUs that have AVX2 and AVX-VNNI
  * but don't have AVX-512, for example Intel Alder Lake.
  */
-#if GCC_PREREQ(11, 1) || CLANG_PREREQ(12, 0, 13000000) || MSVC_PREREQ(1930)
+#if 0 /* GCC_PREREQ(11, 1) || CLANG_PREREQ(12, 0, 13000000) || MSVC_PREREQ(1930) */
 #  define adler32_x86_avx2_vnni        adler32_x86_avx2_vnni
 #  define SUFFIX                          _avx2_vnni
 #  define ATTRIBUTES           _target_attribute("avx2,avxvnni")

So it seems in our assembler these instructions are missing but gcc 12
generates them anyway?

I presume there would be a better version of this hack?

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert                            <rhialto/at/falu.nl>
\X/ There is no AI. There is just someone else's work.           --I. Rose

Attachment: signature.asc
Description: PGP signature



Home | Main Index | Thread Index | Old Index