Skip to content

BUG: aarch64 linux wheel builds failing on highway_qsort SVE error #25445

@rgommers

Description

@rgommers

Issue observed in gh-25440, and is present on main too. Example from this CI log:

[48/314] Compiling C++ object numpy/_core/libhighway_qsort.dispatch.h_SVE.a.p/src_npysort_highway_qsort.dispatch.cpp.o
FAILED: numpy/_core/libhighway_qsort.dispatch.h_SVE.a.p/src_npysort_highway_qsort.dispatch.cpp.o 
c++ -Inumpy/_core/libhighway_qsort.dispatch.h_SVE.a.p -Inumpy/_core -I../numpy/_core -Inumpy/_core/include -I../numpy/_core/include -I../numpy/_core/src/common -I../numpy/_core/src/multiarray -I../numpy/_core/src/npymath -I../numpy/_core/src/umath -I../numpy/_core/src/highway -I/opt/_internal/cpython-3.11.6/include/python3.11 -I/project/build/meson_cpu -fdiagnostics-color=always -DNDEBUG -Wall -Winvalid-pch -std=c++17 -O3 -fPIC -DNPY_INTERNAL_BUILD -DHAVE_NPY_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -D__STDC_VERSION__=0 -fno-exceptions -fno-rtti -O3 -DNPY_HAVE_NEON_VFPV4 -DNPY_HAVE_NEON_FP16 -DNPY_HAVE_NEON -DNPY_HAVE_ASIMD -DNPY_HAVE_ASIMDHP -DNPY_HAVE_SVE -march=armv8.2-a+sve+fp16 -DNPY_MTARGETS_CURRENT=SVE -MD -MQ numpy/_core/libhighway_qsort.dispatch.h_SVE.a.p/src_npysort_highway_qsort.dispatch.cpp.o -MF numpy/_core/libhighway_qsort.dispatch.h_SVE.a.p/src_npysort_highway_qsort.dispatch.cpp.o.d -o numpy/_core/libhighway_qsort.dispatch.h_SVE.a.p/src_npysort_highway_qsort.dispatch.cpp.o -c ../numpy/_core/src/npysort/highway_qsort.dispatch.cpp
In file included from ../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:26,
                 from ../numpy/_core/src/npysort/highway_qsort.dispatch.cpp:3:
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator==(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1049:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1049 |   return F32FromF16(lhs) == F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator!=(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1056:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1056 |   return F32FromF16(lhs) != F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator<(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1063:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1063 |   return F32FromF16(lhs) < F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator<=(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1070:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1070 |   return F32FromF16(lhs) <= F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator>(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1077:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1077 |   return F32FromF16(lhs) > F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator>=(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1084:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1084 |   return F32FromF16(lhs) >= F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
[49/314] Compiling C++ object numpy/_core/libhighway_qsort.dispatch.h_ASIMD.a.p/src_npysort_highway_qsort.dispatch.cpp.o
FAILED: numpy/_core/libhighway_qsort.dispatch.h_ASIMD.a.p/src_npysort_highway_qsort.dispatch.cpp.o 
c++ -Inumpy/_core/libhighway_qsort.dispatch.h_ASIMD.a.p -Inumpy/_core -I../numpy/_core -Inumpy/_core/include -I../numpy/_core/include -I../numpy/_core/src/common -I../numpy/_core/src/multiarray -I../numpy/_core/src/npymath -I../numpy/_core/src/umath -I../numpy/_core/src/highway -I/opt/_internal/cpython-3.11.6/include/python3.11 -I/project/build/meson_cpu -fdiagnostics-color=always -DNDEBUG -Wall -Winvalid-pch -std=c++17 -O3 -fPIC -DNPY_INTERNAL_BUILD -DHAVE_NPY_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -D__STDC_VERSION__=0 -fno-exceptions -fno-rtti -O3 -DNPY_HAVE_NEON_VFPV4 -DNPY_HAVE_NEON_FP16 -DNPY_HAVE_NEON -DNPY_HAVE_ASIMD -DNPY_MTARGETS_CURRENT=ASIMD -MD -MQ numpy/_core/libhighway_qsort.dispatch.h_ASIMD.a.p/src_npysort_highway_qsort.dispatch.cpp.o -MF numpy/_core/libhighway_qsort.dispatch.h_ASIMD.a.p/src_npysort_highway_qsort.dispatch.cpp.o.d -o numpy/_core/libhighway_qsort.dispatch.h_ASIMD.a.p/src_npysort_highway_qsort.dispatch.cpp.o -c ../numpy/_core/src/npysort/highway_qsort.dispatch.cpp
In file included from ../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:26,
                 from ../numpy/_core/src/npysort/highway_qsort.dispatch.cpp:3:
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator==(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1049:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1049 |   return F32FromF16(lhs) == F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator!=(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1056:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1056 |   return F32FromF16(lhs) != F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator<(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1063:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1063 |   return F32FromF16(lhs) < F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator<=(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1070:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1070 |   return F32FromF16(lhs) <= F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator>(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1077:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1077 |   return F32FromF16(lhs) > F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
../numpy/_core/src/highway/hwy/base.h: In function ‘constexpr bool hwy::operator>=(hwy::float16_t, hwy::float16_t)’:
../numpy/_core/src/highway/hwy/base.h:1084:20: error: call to non-‘constexpr’ function ‘float hwy::F32FromF16(hwy::float16_t)’
 1084 |   return F32FromF16(lhs) >= F32FromF16(rhs);
      |          ~~~~~~~~~~^~~~~
../numpy/_core/src/highway/hwy/base.h:975:33: note: ‘float hwy::F32FromF16(hwy::float16_t)’ declared here
  975 | HWY_API HWY_F16_CONSTEXPR float F32FromF16(float16_t f16) {
      |                                 ^~~~~~~~~~
In file included from ../numpy/_core/src/highway/hwy/highway.h:415,
                 from ../numpy/_core/src/highway/hwy/contrib/algo/copy-inl.h:28,
                 from ../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:98,
                 from ../numpy/_core/src/npysort/highway_qsort.dispatch.cpp:3:
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h: In instantiation of ‘hwy::N_NEON_WITHOUT_AES::VFromD<D> hwy::N_NEON_WITHOUT_AES::MinOfLanes(D, hwy::N_NEON_WITHOUT_AES::VFromD<D>) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; hwy::EnableIf<(D::kPrivateLanes > 1)>* <anonymous> = 0; hwy::N_NEON_WITHOUT_AES::VFromD<D> = hwy::N_NEON_WITHOUT_AES::Vec128<double, 2>; hwy::N_NEON_WITHOUT_AES::TFromD<D> = double]’:
../numpy/_core/src/highway/hwy/contrib/sort/traits-inl.h:324:22:   required from ‘hwy::N_NEON_WITHOUT_AES::Vec<D> hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<T>::FirstOfLanes(D, hwy::N_NEON_WITHOUT_AES::Vec<D>, T*) const [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; T = double; hwy::N_NEON_WITHOUT_AES::Vec<D> = hwy::N_NEON_WITHOUT_AES::Vec128<double, 2>]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1685:28:   required from ‘void hwy::N_NEON_WITHOUT_AES::detail::PrintMinMax(D, Traits, const T*, size_t, T*) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; Traits = hwy::N_NEON_WITHOUT_AES::detail::SharedTraits<hwy::N_NEON_WITHOUT_AES::detail::TraitsLane<hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<double> > >; T = double; size_t = long unsigned int]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1710:16:   required from ‘void hwy::N_NEON_WITHOUT_AES::detail::Recurse(D, Traits, T*, size_t, T*, uint64_t*, size_t) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; Traits = hwy::N_NEON_WITHOUT_AES::detail::SharedTraits<hwy::N_NEON_WITHOUT_AES::detail::TraitsLane<hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<double> > >; T = double; size_t = long unsigned int; uint64_t = long unsigned int]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1900:20:   required from ‘void hwy::N_NEON_WITHOUT_AES::Sort(D, Traits, T*, size_t, T*) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; Traits = hwy::N_NEON_WITHOUT_AES::detail::SharedTraits<hwy::N_NEON_WITHOUT_AES::detail::TraitsLane<hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<double> > >; T = double; size_t = long unsigned int]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1932:14:   required from ‘void hwy::N_NEON_WITHOUT_AES::Sort(D, Traits, T*, size_t) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; Traits = hwy::N_NEON_WITHOUT_AES::detail::SharedTraits<hwy::N_NEON_WITHOUT_AES::detail::TraitsLane<hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<double> > >; T = double; size_t = long unsigned int]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1991:7:   required from ‘void hwy::N_NEON_WITHOUT_AES::VQSortStatic(T*, size_t, hwy::SortAscending) [with T = double; size_t = long unsigned int]’
../numpy/_core/src/npysort/highway_qsort.dispatch.cpp:29:69:   required from here
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7480:26: error: call of overloaded ‘ReduceMin(hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>&, hwy::N_NEON_WITHOUT_AES::VFromD<hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0> >&)’ is ambiguous
 7480 |   return Set(d, ReduceMin(d, v));
      |                 ~~~~~~~~~^~~~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7430:35: note: candidate: ‘hwy::float64_t hwy::N_NEON_WITHOUT_AES::ReduceMin(D, hwy::N_NEON_WITHOUT_AES::Vec128<double, 2>) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; hwy::EnableIf<(D::kPrivateLanes == 2)>* <anonymous> = 0; hwy::float64_t = double]’
 7430 | HWY_NEON_DEF_REDUCTION_CORE_TYPES(ReduceMin, vminv)
      |                                   ^~~~~~~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7395:20: note: in definition of macro ‘HWY_NEON_DEF_REDUCTION’
 7395 |   HWY_API type##_t name(D /* tag */, Vec128<type##_t, size> v) {        \
      |                    ^~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7430:1: note: in expansion of macro ‘HWY_NEON_DEF_REDUCTION_CORE_TYPES’
 7430 | HWY_NEON_DEF_REDUCTION_CORE_TYPES(ReduceMin, vminv)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7445:19: note: candidate: ‘hwy::N_NEON_WITHOUT_AES::TFromD<D> hwy::N_NEON_WITHOUT_AES::ReduceMin(D, hwy::N_NEON_WITHOUT_AES::VFromD<D>) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; hwy::EnableIf<(D::kPrivateLanes == 2)>* <anonymous> = 0; hwy::N_NEON_WITHOUT_AES::TFromD<D> = double; hwy::N_NEON_WITHOUT_AES::VFromD<D> = hwy::N_NEON_WITHOUT_AES::Vec128<double, 2>]’
 7445 | HWY_API TFromD<D> ReduceMin(D /* tag */, VFromD<D> v10) {
      |                   ^~~~~~~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h: In instantiation of ‘hwy::N_NEON_WITHOUT_AES::VFromD<D> hwy::N_NEON_WITHOUT_AES::MaxOfLanes(D, hwy::N_NEON_WITHOUT_AES::VFromD<D>) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; hwy::EnableIf<(D::kPrivateLanes > 1)>* <anonymous> = 0; hwy::N_NEON_WITHOUT_AES::VFromD<D> = hwy::N_NEON_WITHOUT_AES::Vec128<double, 2>; hwy::N_NEON_WITHOUT_AES::TFromD<D> = double]’:
../numpy/_core/src/highway/hwy/contrib/sort/traits-inl.h:330:22:   required from ‘hwy::N_NEON_WITHOUT_AES::Vec<D> hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<T>::LastOfLanes(D, hwy::N_NEON_WITHOUT_AES::Vec<D>, T*) const [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; T = double; hwy::N_NEON_WITHOUT_AES::Vec<D> = hwy::N_NEON_WITHOUT_AES::Vec128<double, 2>]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1686:26:   required from ‘void hwy::N_NEON_WITHOUT_AES::detail::PrintMinMax(D, Traits, const T*, size_t, T*) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; Traits = hwy::N_NEON_WITHOUT_AES::detail::SharedTraits<hwy::N_NEON_WITHOUT_AES::detail::TraitsLane<hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<double> > >; T = double; size_t = long unsigned int]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1710:16:   required from ‘void hwy::N_NEON_WITHOUT_AES::detail::Recurse(D, Traits, T*, size_t, T*, uint64_t*, size_t) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; Traits = hwy::N_NEON_WITHOUT_AES::detail::SharedTraits<hwy::N_NEON_WITHOUT_AES::detail::TraitsLane<hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<double> > >; T = double; size_t = long unsigned int; uint64_t = long unsigned int]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1900:20:   required from ‘void hwy::N_NEON_WITHOUT_AES::Sort(D, Traits, T*, size_t, T*) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; Traits = hwy::N_NEON_WITHOUT_AES::detail::SharedTraits<hwy::N_NEON_WITHOUT_AES::detail::TraitsLane<hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<double> > >; T = double; size_t = long unsigned int]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1932:14:   required from ‘void hwy::N_NEON_WITHOUT_AES::Sort(D, Traits, T*, size_t) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; Traits = hwy::N_NEON_WITHOUT_AES::detail::SharedTraits<hwy::N_NEON_WITHOUT_AES::detail::TraitsLane<hwy::N_NEON_WITHOUT_AES::detail::OrderAscending<double> > >; T = double; size_t = long unsigned int]’
../numpy/_core/src/highway/hwy/contrib/sort/vqsort-inl.h:1991:7:   required from ‘void hwy::N_NEON_WITHOUT_AES::VQSortStatic(T*, size_t, hwy::SortAscending) [with T = double; size_t = long unsigned int]’
../numpy/_core/src/npysort/highway_qsort.dispatch.cpp:29:69:   required from here
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7484:26: error: call of overloaded ‘ReduceMax(hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>&, hwy::N_NEON_WITHOUT_AES::VFromD<hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0> >&)’ is ambiguous
 7484 |   return Set(d, ReduceMax(d, v));
      |                 ~~~~~~~~~^~~~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7431:35: note: candidate: ‘hwy::float64_t hwy::N_NEON_WITHOUT_AES::ReduceMax(D, hwy::N_NEON_WITHOUT_AES::Vec128<double, 2>) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; hwy::EnableIf<(D::kPrivateLanes == 2)>* <anonymous> = 0; hwy::float64_t = double]’
 7431 | HWY_NEON_DEF_REDUCTION_CORE_TYPES(ReduceMax, vmaxv)
      |                                   ^~~~~~~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7395:20: note: in definition of macro ‘HWY_NEON_DEF_REDUCTION’
 7395 |   HWY_API type##_t name(D /* tag */, Vec128<type##_t, size> v) {        \
      |                    ^~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7431:1: note: in expansion of macro ‘HWY_NEON_DEF_REDUCTION_CORE_TYPES’
 7431 | HWY_NEON_DEF_REDUCTION_CORE_TYPES(ReduceMax, vmaxv)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../numpy/_core/src/highway/hwy/ops/arm_neon-inl.h:7450:19: note: candidate: ‘hwy::N_NEON_WITHOUT_AES::TFromD<D> hwy::N_NEON_WITHOUT_AES::ReduceMax(D, hwy::N_NEON_WITHOUT_AES::VFromD<D>) [with D = hwy::N_NEON_WITHOUT_AES::Simd<double, 2, 0>; hwy::EnableIf<(D::kPrivateLanes == 2)>* <anonymous> = 0; hwy::N_NEON_WITHOUT_AES::TFromD<D> = double; hwy::N_NEON_WITHOUT_AES::VFromD<D> = hwy::N_NEON_WITHOUT_AES::Vec128<double, 2>]’
 7450 | HWY_API TFromD<D> ReduceMax(D /* tag */, VFromD<D> v10) {
      |                   ^~~~~~~~~
ninja: build stopped: subcommand failed.
ERROR Backend subprocess exited when trying to invoke build_wheel

A copy of this comment from the PR:

A search for that error comes up empty, however we haven't run these wheel builds in 1 months and 8 days I think (that was the last nightly upload for aarch64 to https://anaconda.org/scientific-python-nightly-wheels/numpy/files).

That last successful build was before the initial merge of highway_qsort (gh-24018), so this probably never worked in the wheel builds. @Mousius @seiko2plus does that error look familiar perhaps?

Metadata

Metadata

Assignees

No one assigned

    Labels

    00 - Bugcomponent: SIMDIssues in SIMD (fast instruction sets) code or machinery

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions