Skip to content

[C++] Build failure with xsimd 14.1.0 on macOS #49579

@kou

Description

@kou

Describe the bug, including details regarding any error messages, version, and platform.

https://github.com/apache/arrow/actions/runs/23376234467/job/68008615678#step:8:1459

FAILED: [code=1] src/arrow/CMakeFiles/arrow_util.dir/util/bpacking_simd_default.cc.o 
/opt/homebrew/bin/ccache /usr/bin/c++ -DARROW_HAVE_NEON -DARROW_WITH_TIMING_TESTS -DURI_STATIC_BUILD -I/Users/runner/work/arrow/arrow/build/cpp/src -I/Users/runner/work/arrow/arrow/cpp/src -I/Users/runner/work/arrow/arrow/cpp/src/generated -isystem /opt/homebrew/include -isystem /opt/homebrew/opt/openssl@3/include -isystem /opt/homebrew/Cellar/brotli/1.2.0/include -isystem /opt/homebrew/opt/lz4/include -isystem /opt/homebrew/Cellar/rapidjson/1.1.0/include -fno-aligned-new  -Qunused-arguments -fcolor-diagnostics  -Wall -Wextra -Wdocumentation -DARROW_WARN_DOCUMENTATION -Wshorten-64-to-32 -Wno-missing-braces -Wno-unused-parameter -Wno-constant-logical-operand -Wno-return-stack-address -Wdate-time -Wno-unknown-warning-option -Wno-pass-failed -march=armv8-a  -g -Werror -O0 -ggdb -g1 -std=c++20 -arch arm64 -fPIC -MD -MT src/arrow/CMakeFiles/arrow_util.dir/util/bpacking_simd_default.cc.o -MF src/arrow/CMakeFiles/arrow_util.dir/util/bpacking_simd_default.cc.o.d -o src/arrow/CMakeFiles/arrow_util.dir/util/bpacking_simd_default.cc.o -c /Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_default.cc
In file included from /Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_default.cc:28:
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_kernel_internal.h:274:12: error: no matching function for call to 'bitwise_rshift'
  274 |     return xsimd::kernel::bitwise_rshift(batch, signed_shifts.as_batch(), Arch{});
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_kernel_internal.h:727:26: note: in instantiation of function template specialization 'arrow::internal::bpacking::right_shift_by_excess<xsimd::neon64, unsigned char, (unsigned char)'\x00', (unsigned char)'\x01', (unsigned char)'\x02', (unsigned char)'\x03', (unsigned char)'\x04', (unsigned char)'\x05', (unsigned char)'\x06', (unsigned char)'\a', (unsigned char)'\x00', (unsigned char)'\x01', (unsigned char)'\x02', (unsigned char)'\x03', (unsigned char)'\x04', (unsigned char)'\x05', (unsigned char)'\x06', (unsigned char)'\a'>' requested here
  727 |     const auto shifted = right_shift_by_excess(words, kRightShifts);
      |                          ^
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_kernel_internal.h:745:6: note: in instantiation of function template specialization 'arrow::internal::bpacking::MediumKernel<arrow::internal::bpacking::KernelTraits<bool, 1, 128>, MediumKernelOptions{32}>::unpack_one_shift_impl<0, 1, 0>' requested here
  745 |     (unpack_one_shift_impl<kReadIdx, kSwizzleIdx, kShiftIds>(words, out), ...);
      |      ^
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_kernel_internal.h:754:6: note: in instantiation of function template specialization 'arrow::internal::bpacking::MediumKernel<arrow::internal::bpacking::KernelTraits<bool, 1, 128>, MediumKernelOptions{32}>::unpack_one_swizzle_impl<0, 1, 0>' requested here
  754 |     (unpack_one_swizzle_impl<kReadIdx, kSwizzleIds>(bytes, out, ShiftSeq{}), ...);
      |      ^
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_kernel_internal.h:761:6: note: in instantiation of function template specialization 'arrow::internal::bpacking::MediumKernel<arrow::internal::bpacking::KernelTraits<bool, 1, 128>, MediumKernelOptions{32}>::unpack_one_read_impl<0, 0, 1>' requested here
  761 |     (unpack_one_read_impl<kReadIds>(in, out, SwizzleSeq{}), ...);
      |      ^
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_kernel_internal.h:766:5: note: in instantiation of function template specialization 'arrow::internal::bpacking::MediumKernel<arrow::internal::bpacking::KernelTraits<bool, 1, 128>, MediumKernelOptions{32}>::unpack_all_impl<0>' requested here
  766 |     unpack_all_impl(in, out, ReadSeq{});
      |     ^
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_dispatch_internal.h:219:34: note: in instantiation of member function 'arrow::internal::bpacking::MediumKernel<arrow::internal::bpacking::KernelTraits<bool, 1, 128>, MediumKernelOptions{32}>::unpack' requested here
  219 |           in = UnpackerForWidth::unpack(in, out);
      |                                  ^
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_dispatch_internal.h:246:16: note: in instantiation of function template specialization 'arrow::internal::bpacking::unpack_width<1, arrow::internal::bpacking::Simd128Kernel, bool>' requested here
  246 |         return unpack_width<1, Unpacker>(in, out, opt.batch_size, opt.bit_offset,
      |                ^
/Users/runner/work/arrow/arrow/cpp/src/arrow/util/bpacking_simd_default.cc:37:10: note: in instantiation of function template specialization 'arrow::internal::bpacking::unpack_jump<arrow::internal::bpacking::Simd128Kernel, bool>' requested here
   37 |   return unpack_jump<Simd128Kernel>(in, out, opts);
      |          ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2632:34: note: candidate function template not viable: no known conversion from 'batch_type' (aka 'batch<signed char, xsimd::neon64>') to 'int' for 2nd argument
 2632 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, int n, requires_arch<neon>) noexcept
      |                                  ^                                      ~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2640:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 2640 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2648:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 2648 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2654:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 2654 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2662:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 2662 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2668:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 2668 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2676:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 2676 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2682:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 2682 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon> req) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2691:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 2691 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon64.hpp:1240:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 1240 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon64>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon64.hpp:1254:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
 1254 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon64>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/././common/xsimd_common_arithmetic.hpp:48:34: note: candidate template ignored: deduced conflicting types for parameter 'T' ('unsigned char' vs. 'signed char')
   48 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& self, batch<T, A> const& other, requires_arch<common>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon64.hpp:1234:34: note: candidate template ignored: requirement 'sizeof(unsigned char) == 8UL' was not satisfied [with A = xsimd::neon64, T = unsigned char]
 1234 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, int n, requires_arch<neon64>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon64.hpp:1248:34: note: candidate template ignored: requirement 'std::is_signed<unsigned char>::value' was not satisfied [with A = xsimd::neon64, T = unsigned char]
 1248 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& lhs, int n, requires_arch<neon64>) noexcept
      |                                  ^
/opt/homebrew/include/xsimd/types/../arch/././common/xsimd_common_arithmetic.hpp:55:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
   55 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& self, requires_arch<common>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2698:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
 2698 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& x, requires_arch<neon>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2704:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
 2704 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& x, requires_arch<neon>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2710:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
 2710 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& x, requires_arch<neon>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2716:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
 2716 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& x, requires_arch<neon>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2722:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
 2722 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& x, requires_arch<neon>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2728:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
 2728 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& x, requires_arch<neon>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2734:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
 2734 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& x, requires_arch<neon>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/include/xsimd/types/../arch/./xsimd_neon.hpp:2740:34: note: candidate function template not viable: requires 2 arguments, but 3 were provided
 2740 |         XSIMD_INLINE batch<T, A> bitwise_rshift(batch<T, A> const& x, requires_arch<neon>) noexcept
      |                                  ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...

Note that xsimd Homebrew formula was updated to 14.1.0 on 2026-03-20: https://github.com/Homebrew/homebrew-core/commits/745eae47a1054ce5e0dae197e0705f818b926e2c/Formula/x/xsimd.rb

Component(s)

C++

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions