pkgsrc-Users archive

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

Re: Build problems with www/firefox (`vpdpbusd')



On Mon 08 Apr 2024 at 14:52:22 +0200, Rhialto wrote:
> On the other hand, there is no -Wno-error=dangling-pointer option in one
> of the command lines I did see:

and adding one doesn't help, either. I tried with this patch:

$NetBSD$

--- build/moz.configure/warnings.configure.orig	2024-04-08 13:55:52.245354057 +0000
+++ build/moz.configure/warnings.configure
@@ -66,6 +66,8 @@ add_warning("-Wtype-limits")
 # This can be triggered by certain patterns used deliberately in portable code
 check_and_add_warning("-Wno-error=tautological-type-limit-compare")
 
+check_and_add_warning("-Wno-error=dangling-pointer")
+
 # catches some dead code
 add_warning("-Wunreachable-code")
 check_and_add_warning("-Wunreachable-code-return")

It did check if the compiler supports -Wno-error=dangling-pointer (it
does) and adds it more or less everywhere. But it didn't fix the build.

But maybe it made the actual location more visible, because now these
messages become more obvious:

gmake[3]: *** [/tmp/pkgsrc/www/firefox/default/firefox-123.0.1/config/rules.mk:690: GemmologyEngineAVXVNNI.o] Error 1
...
gmake[3]: Leaving directory '/tmp/pkgsrc/www/firefox/default/build/js/src/intgemm'
gmake[2]: *** [/tmp/pkgsrc/www/firefox/default/firefox-123.0.1/config/recurse.mk:72: js/src/intgemm/target-objects] Error 2

Looking in js/src/intgemm the readme file redirects us to
third_party/gemmology, where gemmology.h contains

#ifdef __AVXVNNI__

template <class Arch>
inline xsimd::batch<int32_t, Arch>
maddw(xsimd::batch<uint8_t, Arch> x, xsimd::batch<int8_t, Arch> y,
      xsimd::batch<int32_t, Arch> z,
      xsimd::kernel::requires_arch<xsimd::avxvnni>) {
  return _mm256_dpbusd_avx_epi32(z, x, y);
}
#endif

I had searched for the vpdpbusd instruction, found
https://www.felixcloutier.com/x86/vpdpbusd, and it lists PDPBUSD __m256i
_mm256_dpbusd_avx_epi32(__m256i, __m256i, __m256i); as 
"Intel C/C++ Compiler Intrinsic Equivalent".

So gcc 12 sets __AVXVNNI__ but the assembler doesn't know about the
corresponding instruction?

So I tried to disable this function:

--- third_party/gemmology/gemmology.h.orig	2024-04-08 16:03:19.926245613 +0000
+++ third_party/gemmology/gemmology.h
@@ -198,7 +198,7 @@ PermuteSummer(xsimd::batch<int32_t, Arch
   return _mm256_add_epi32(rev, blended);
 }
 
-#ifdef __AVXVNNI__
+#ifdef __AVXVNNI__NOT
 
 template <class Arch>
 inline xsimd::batch<int32_t, Arch>

I was kind of expecting some undefined symbol error to pop up later...
but the build succeeded.

Not a good solution of course. What is the actual bug? Is the wrong "as"
being invoked? Is it the right one, but it was wrongly configured?

-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