AcademySoftwareFoundation / OpenShadingLanguage

Advanced shading language for production GI renderers
BSD 3-Clause "New" or "Revised" License
2.1k stars 359 forks source link

OpenShadingLanguage 1.11.13.0 fails to build on armv7 #1365

Closed ggardet closed 2 years ago

ggardet commented 3 years ago

Problem

OpenShadingLanguage 1.11.13.0 fails to build on armv7.

Expected behavior: OpenShadingLanguage 1.11.13.0 should build on armv7.

Actual behavior: But it fails with:

[  265s] cd /home/abuild/rpmbuild/BUILD/OpenShadingLanguage-Release-1.11.13.0/src/liboslexec && /usr/bin/clang++ -DOSL_FAST_MATH=1 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DUSE_STD_REGEX -DOSL_LLVM_VERSION=120 -DOSL_LLVM_FULL_VERSION="12.0.0" -std=c++14 -I/home/abuild/rpmbuild/BUILD/OpenShadingLanguage-Release-1.11.13.0/src/liboslexec -I/home/abuild/rpmbuild/BUILD/OpenShadingLanguage-Release-1.11.13.0/src/include -I/home/abuild/rpmbuild/BUILD/OpenShadingLanguage-Release-1.11.13.0/build/include -I/usr/include -I/usr/include -I/usr/include -isystem\ /usr/include -DOSL_COMPILING_TO_BITCODE=1 -Wno-deprecated-register -Wno-ignored-attributes -Wno-unknown-attributes -O3 -fno-math-errno -S -emit-llvm -o /home/abuild/rpmbuild/BUILD/OpenShadingLanguage-Release-1.11.13.0/build/src/liboslexec/llvm_ops.s llvm_ops.cpp
[  265s] In file included from llvm_ops.cpp:80:
[  265s] In file included from /home/abuild/rpmbuild/BUILD/OpenShadingLanguage-Release-1.11.13.0/build/include/OSL/oslconfig.h:45:
[  265s] In file included from /usr/include/OpenImageIO/errorhandler.h:10:
[  265s] In file included from /usr/include/OpenImageIO/strutil.h:24:
[  265s] In file included from /usr/include/OpenImageIO/hash.h:31:
[  265s] In file included from /usr/include/OpenImageIO/fmath.h:45:
[  265s] /usr/include/OpenImageIO/simd.h:4731:12: error: use of undeclared identifier 'vaddvq_s32'; did you mean 'vpaddlq_s32'?
[  265s]     return vaddvq_s32(v);
[  265s]            ^
[  265s] /usr/lib/clang/12.0.0/include/arm_neon.h:18348:16: note: 'vpaddlq_s32' declared here
[  265s] __ai int64x2_t vpaddlq_s32(int32x4_t __p0) {
[  265s]                ^
[  265s] In file included from llvm_ops.cpp:80:
[  265s] In file included from /home/abuild/rpmbuild/BUILD/OpenShadingLanguage-Release-1.11.13.0/build/include/OSL/oslconfig.h:45:
[  265s] In file included from /usr/include/OpenImageIO/errorhandler.h:10:
[  265s] In file included from /usr/include/OpenImageIO/strutil.h:24:
[  265s] In file included from /usr/include/OpenImageIO/hash.h:31:
[  265s] In file included from /usr/include/OpenImageIO/fmath.h:45:
[  265s] /usr/include/OpenImageIO/simd.h:4731:12: error: cannot initialize return object of type 'int' with an rvalue of type 'int64x2_t' (vector of 2 'int64_t' values)
[  265s]     return vaddvq_s32(v);
[  265s]            ^~~~~~~~~~~~~
[  265s] /usr/include/OpenImageIO/simd.h:6993:12: error: use of undeclared identifier 'vdivq_f32'
[  265s]     return vdivq_f32 (a.m_simd, b.m_simd);
[  265s]            ^
[  265s] /usr/include/OpenImageIO/simd.h:7003:14: error: use of undeclared identifier 'vdivq_f32'
[  265s]     m_simd = vdivq_f32 (m_simd, a.m_simd);
[  265s]              ^
[  265s] /usr/include/OpenImageIO/simd.h:7014:14: error: use of undeclared identifier 'vdivq_f32'
[  265s]     m_simd = vdivq_f32 (m_simd, vfloat4(val));
[  265s]              ^
[  265s] /usr/include/OpenImageIO/simd.h:7256:12: error: use of undeclared identifier 'vaddvq_f32'
[  265s]     return vaddvq_f32(v);
[  265s]            ^
[  265s] 6 errors generated.

Steps to Reproduce

Try to build OpenShadingLanguage 1.11.13.0 for armv7. I used openSUSE Tumbleweed as host.

Versions

StefanBruens commented 2 years ago

vaddvq_* is only part of NEON on A64 ARM architecture: https://developer.arm.com/architectures/instruction-sets/intrinsics/#q=vaddvq_s32

Fixed in OIIO 2.3.14 https://github.com/OpenImageIO/oiio/issues/3360

ggardet commented 2 years ago

That's what I did. I also needed to disable partio to build OpenShadingLanguage 1.11.15.0 properly for armv7.