Index | Thread | Search

From:
Peter Hessler <phessler@theapt.org>
Subject:
Re: Missing arm_neon_sve_bridge.h on arm64 (was: Re: aarch64 bulk build report)
To:
Rafael Sadowski <rafael@sizeofvoid.org>, ports@openbsd.org, robert@openbsd.org
Date:
Mon, 5 Jan 2026 18:24:06 +0100

Download raw body.

Thread
On 2025 Dec 29 (Mon) at 00:13:22 +0100 (+0100), Jeremie Courreges-Anglas wrote:
:On Sun, Dec 28, 2025 at 10:28:58AM +0100, Peter Hessler wrote:
:> On 2025 Dec 26 (Fri) at 18:00:50 +0100 (+0100), Jeremie Courreges-Anglas wrote:
:> :On Fri, Dec 26, 2025 at 06:55:14AM +0100, Rafael Sadowski wrote:
:> :> On Fri Dec 26, 2025 at 10:16:46AM +1100, Jonathan Gray wrote:
:> :> > On Thu, Dec 25, 2025 at 11:57:16PM +0100, Peter Hessler wrote:
:> :> > > 
:> :> > > 
:> :> > > :http://build-failures.rhaalovely.net/aarch64/2025-12-22/x11/qt6/qtwebengine.log
:> :> > > :
:> :> > > 
:> :> > > In file included from ../../../../../qtwebengine-everywhere-src-6.10.1/src/3rdparty/chromium/third_party/libaom/source/libaom/av1/encoder/arm/av1_error_sve.c:19:
:> :> > > ../../../../../qtwebengine-everywhere-src-6.10.1/src/3rdparty/chromium/third_party/libaom/source/libaom/aom_dsp/arm/aom_neon_sve_bridge.h:15:10:
:> :> > > fatal error: 'arm_neon_sve_bridge.h' file not found
:> :> > >    15 | #include <arm_neon_sve_bridge.h>
:> :> > >       |          ^~~~~~~~~~~~~~~~~~~~~~~
:> :> > 
:> :> > The log shows base clang.
:> :> > 
:> :> > Does installing the include fix the build?
:> :> 
:> :> I tried to mix the headers from base and ports to get access to
:> :> arm_neon_sve_bridge without luck. I would be grateful if we could do it
:> :> that way. CC robert@
:> :
:> :FWIW I fixed Robert's mail address.  A similar diff was already
:> :proposed by Brad:
:> :
:> :  https://marc.info/?l=openbsd-tech&m=174155733400782&w=2
:> :
:> :But it resulted in build failures using clang-19:
:> :
:> :  https://marc.info/?l=openbsd-tech&m=174482865617988&w=2
:> :
:> :For this header addition to be a clear improvement we'd need to first
:> :apply Brad's proposal which backports some code from llvm/20:
:> :
:> :  https://marc.info/?l=openbsd-ports&m=174555990331066&w=2
:> :
:> :Regarding the diff below,
:> :
:> :> > 
:> :> > Index: gnu/usr.bin/clang/include/clang/intrin/Makefile
:> :> > ===================================================================
:> :> > RCS file: /cvs/src/gnu/usr.bin/clang/include/clang/intrin/Makefile,v
:> :> > diff -u -p -r1.29 Makefile
:> :> > --- gnu/usr.bin/clang/include/clang/intrin/Makefile	13 Jun 2025 17:11:09 -0000	1.29
:> :> > +++ gnu/usr.bin/clang/include/clang/intrin/Makefile	25 Dec 2025 23:05:51 -0000
:> :> > @@ -30,7 +30,7 @@ GEN+=		arm_bf16.h
:> :> >  GEN+=		arm_mve.h
:> :> >  GEN+=		arm_cde.h
:> :> >  GEN+=		arm_vector_types.h
:> :> > -HEADERS+=	arm_acle.h arm_cmse.h ${GEN}
:> :> > +HEADERS+=	arm_acle.h arm_cmse.h arm_neon_sve_bridge.h ${GEN}
:> :
:> :Brad's diff only installed the header on aarch64.
:> :gnu/llvm/clang/lib/Headers/CMakeLists.txt indeed marks this file as
:> :"aarch64-only" so I'd suggest we use Brad's diff.
:> :
:> 
:> Does someone have a complete diff I can test?  I'm not sure what part
:> from ports and what parts from src I need to use.
:
:Here's the consolidated diff for base.  I have checked that it fixes
:the build of one of the ports that used to fail (I just don't remember
:which one, maybe svt-av1).
:

Good news, bad news.

Good news, this works for me and multimedia/svt-av1 and multimedia/aom
build fine for me. OK

Bad news, qtwebengine fails in a new place, but that looks like work for rsadowski.

Failing log attached.




:Index: distrib/sets/lists/comp/clang.arm64
:===================================================================
:RCS file: /home/cvs/src/distrib/sets/lists/comp/clang.arm64,v
:diff -u -p -r1.48 clang.arm64
:--- distrib/sets/lists/comp/clang.arm64	8 Dec 2025 15:40:41 -0000	1.48
:+++ distrib/sets/lists/comp/clang.arm64	28 Dec 2025 21:41:04 -0000
:@@ -3200,6 +3200,7 @@
: ./usr/lib/clang/19/include/arm_fp16.h
: ./usr/lib/clang/19/include/arm_mve.h
: ./usr/lib/clang/19/include/arm_neon.h
:+./usr/lib/clang/16/include/arm_neon_sve_bridge.h
: ./usr/lib/clang/19/include/arm_sme.h
: ./usr/lib/clang/19/include/arm_sve.h
: ./usr/lib/clang/19/include/arm_vector_types.h
:Index: gnu/llvm/llvm/lib/CodeGen/TargetLoweringBase.cpp
:===================================================================
:RCS file: /home/cvs/src/gnu/llvm/llvm/lib/CodeGen/TargetLoweringBase.cpp,v
:diff -u -p -r1.1.1.5 TargetLoweringBase.cpp
:--- gnu/llvm/llvm/lib/CodeGen/TargetLoweringBase.cpp	11 Jun 2025 17:29:20 -0000	1.1.1.5
:+++ gnu/llvm/llvm/lib/CodeGen/TargetLoweringBase.cpp	28 Dec 2025 23:06:50 -0000
:@@ -1961,6 +1961,9 @@ void TargetLoweringBase::insertSSPDeclar
: // Currently only support "standard" __stack_chk_guard.
: // TODO: add LOAD_STACK_GUARD support.
: Value *TargetLoweringBase::getSDagStackGuard(const Module &M) const {
:+  if (getTargetMachine().getTargetTriple().isOSOpenBSD()) {
:+    return M.getNamedValue("__guard_local");
:+  }
:   return M.getNamedValue("__stack_chk_guard");
: }
: 
:Index: gnu/llvm/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
:===================================================================
:RCS file: /home/cvs/src/gnu/llvm/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp,v
:diff -u -p -r1.5 AArch64ISelLowering.cpp
:--- gnu/llvm/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp	11 Jun 2025 17:31:20 -0000	1.5
:+++ gnu/llvm/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp	28 Dec 2025 20:58:41 -0000
:@@ -2471,6 +2471,19 @@ MVT AArch64TargetLowering::getScalarShif
: bool AArch64TargetLowering::allowsMisalignedMemoryAccesses(
:     EVT VT, unsigned AddrSpace, Align Alignment, MachineMemOperand::Flags Flags,
:     unsigned *Fast) const {
:+
:+   // Allow SVE loads/stores where the alignment >= the size of the element type,
:+   // even with +strict-align. Predicated SVE loads/stores (e.g. ld1/st1), used
:+   // for stores that come from IR, only require element-size alignment (even if
:+   // unaligned accesses are disabled). Without this, these will be forced to
:+   // have 16-byte alignment with +strict-align (and fail to lower as we don't
:+   // yet support TLI.expandUnalignedLoad() and TLI.expandUnalignedStore()).
:+   if (VT.isScalableVector()) {
:+     unsigned ElementSizeBits = VT.getScalarSizeInBits();
:+     if (ElementSizeBits % 8 == 0 && Alignment >= Align(ElementSizeBits / 8))
:+       return true;
:+   }
:+
:   if (Subtarget->requiresStrictAlign())
:     return false;
: 
:Index: gnu/usr.bin/clang/include/clang/intrin/Makefile
:===================================================================
:RCS file: /home/cvs/src/gnu/usr.bin/clang/include/clang/intrin/Makefile,v
:diff -u -p -r1.29 Makefile
:--- gnu/usr.bin/clang/include/clang/intrin/Makefile	13 Jun 2025 17:11:09 -0000	1.29
:+++ gnu/usr.bin/clang/include/clang/intrin/Makefile	28 Dec 2025 21:40:24 -0000
:@@ -31,6 +31,9 @@ GEN+=		arm_mve.h
: GEN+=		arm_cde.h
: GEN+=		arm_vector_types.h
: HEADERS+=	arm_acle.h arm_cmse.h ${GEN}
:+.if ${MACHINE_ARCH} == "aarch64"
:+HEADERS+=	arm_neon_sve_bridge.h
:+.endif
: .elif ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
: HEADERS+=	__wmmintrin_aes.h \
: 		__wmmintrin_pclmul.h \
:
:
:-- 
:jca

-- 
Nothing is faster than the speed of light ...

To prove this to yourself, try opening the refrigerator door before the
light comes on.