Bug#1127626: libxsimd-dev: clang errors on ppc64el

Jeffrey Walton noloader at gmail.com
Tue Feb 10 17:56:06 GMT 2026


On Tue, Feb 10, 2026 at 12:37 PM Drew Parsons <dparsons at debian.org> wrote:

> Package: libxsimd-dev
> Version: 14.0.0-2
> Severity: serious
> Justification: debci
> X-Debbugs-Cc: debian-powerpc at lists.debian.org
> User: debian-powerpc at lists.debian.org
> Usertags: ppc64el
> Control: forwarded -1 https://github.com/xtensor-stack/xsimd/issues/1257
> Control: affects -1 src:llvm-toolchain-21
>
> xsimd 14.0.0 tests on ppc64el are passing with gcc 15 but failing with
> clang 21.
>
> If gcc is fine, is there a clang option we should apply,
> or should it be consider a bug in clang?
>
>
> 2007s [  5%] Building CXX object CMakeFiles/test_xsimd.dir/test_api.cpp.o
> 2007s /usr/bin/clang++ -DXSIMD_ENABLE_XTL_COMPLEX=1  -Wunused-parameter
> -Wextra -Wreorder -Wshorten-64-to-32 -std=c++17 -g -fPIC -mcpu=native
> -mtune=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_api.cpp.o
> -MF CMakeFiles/test_xsimd.dir/test_api.cpp.o.d -o
> CMakeFiles/test_xsimd.dir/test_api.cpp.o -c
> /tmp/autopkgtest-lxc.egz8qg2i/downtmp/build.Yvf/src/test/test_api.cpp
> 2010s In file included from
> /tmp/autopkgtest-lxc.egz8qg2i/downtmp/build.Yvf/src/test/test_api.cpp:12:
> 2010s In file included from /usr/include/xsimd/xsimd.hpp:63:
> 2010s In file included from
> /usr/include/xsimd/memory/xsimd_aligned_allocator.hpp:27:
> 2010s In file included from
> /usr/include/xsimd/memory/../config/xsimd_arch.hpp:19:
> 2010s In file included from
> /usr/include/xsimd/memory/../config/../types/xsimd_all_registers.hpp:51:
> 2010s
> /usr/include/xsimd/memory/../config/../types/xsimd_vsx_register.hpp:67:61:
> error: cannot use 'long' with '__vector bool'
> 2010s    67 |         XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(unsigned long,
> long);
> 2010s       |                                                             ^
> 2010s
> /usr/include/xsimd/memory/../config/../types/xsimd_vsx_register.hpp:68:52:
> error: cannot use 'long' with '__vector bool'
> 2010s    68 |         XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(long, long);
> 2010s       |                                                    ^
> 2010s
> /usr/include/xsimd/memory/../config/../types/xsimd_vsx_register.hpp:70:54:
> error: cannot use 'long' with '__vector bool'
> 2010s    70 |         XSIMD_DECLARE_SIMD_BOOL_VSX_REGISTER(double, long);
> 2010s       |                                                      ^
> ...
> 1987s In file included from /usr/include/xsimd/xsimd.hpp:77:
> 1987s In file included from /usr/include/xsimd/types/xsimd_batch.hpp:520:
> 1987s In file included from
> /usr/include/xsimd/types/../arch/xsimd_isa.hpp:136:
> 1987s /usr/include/xsimd/types/../arch/./xsimd_vsx.hpp:429:20: error: no
> matching function for call to 'vec_ld'
> 1987s   429 |             return vec_ld(0, reinterpret_cast<const typename
> batch<T, A>::register_type*>(mem));
> ...
> 1987s In file included from
> /usr/include/xsimd/types/../arch/xsimd_isa.hpp:136:
> 1987s /usr/include/xsimd/types/../arch/./xsimd_vsx.hpp:752:20: error: no
> matching function for call to 'vec_st'
> 1987s   752 |             return vec_st(self.data, 0,
> reinterpret_cast<typename batch<T, A>::register_type*>(mem));
> ...
> 1987s In file included from
> /usr/include/xsimd/types/../arch/xsimd_isa.hpp:136:
> 1987s /usr/include/xsimd/types/../arch/./xsimd_vsx.hpp:436:20: error: no
> matching function for call to 'vec_vsx_ld'
> 1987s   436 |             return vec_vsx_ld(0, (typename batch<T,
> A>::register_type const*)mem);
> ...
> 1987s In file included from
> /usr/include/xsimd/types/../arch/xsimd_isa.hpp:136:
> 1987s /usr/include/xsimd/types/../arch/./xsimd_vsx.hpp:335:24: error: call
> to 'vec_cmpeq' is ambiguous
> 1987s   335 |             auto res = vec_cmpeq(self.data, other.data);
> ...
> 1987s In file included from
> /usr/include/xsimd/types/../arch/xsimd_isa.hpp:136:
> 1987s /usr/include/xsimd/types/../arch/./xsimd_vsx.hpp:222:20: error: call
> to 'vec_splats' is ambiguous
> 1987s   222 |             return vec_splats(val);
> ...
> 1987s In file included from
> /usr/include/xsimd/types/../arch/xsimd_isa.hpp:136:
> 1987s /usr/include/xsimd/types/../arch/./xsimd_vsx.hpp:130:20: error: call
> to 'vec_and' is ambiguous
> 1987s   130 |             return vec_and(self.data, other.data);
> ...
> 1987s In file included from
> /usr/include/xsimd/types/../arch/xsimd_isa.hpp:136:
> 1987s /usr/include/xsimd/types/../arch/./xsimd_vsx.hpp:759:20: error: no
> matching function for call to 'vec_vsx_st'
> 1987s   759 |             return vec_vsx_st(self.data, 0,
> reinterpret_cast<typename batch<T, A>::register_type*>(mem));
> ...
> 1987s In file included from
> /usr/include/xsimd/types/../arch/xsimd_isa.hpp:136:
> 1987s /usr/include/xsimd/types/../arch/./xsimd_vsx.hpp:335:24: error: call
> to 'vec_cmpeq' is ambiguous
> 1987s   335 |             auto res = vec_cmpeq(self.data, other.data);
> ...
> 1988s 19 errors generated.


If I recall correctly... VSX extensions, like vec_vsx_st, were optional in
POWER7 and part of POWER8.

My guess is, the problem is `-mcpu=native` while building on a downlevel
machine.  Instead, the CFLAGS and CXXFLAGS should include `-mcpu=power7
-mvsx` or `-mcpu=power8`.

Someone like David Edelsohn (<dje.gcc at gmail.com>) could probably say more
about the VSX unit and what flags it requires.

Jeff
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-science-maintainers/attachments/20260210/1267787a/attachment-0002.htm>


More information about the debian-science-maintainers mailing list