[libcxx-commits] [PATCH] D144363: [libcxx] <experimental/simd> Added simd width functions, simd_size traits and related tests

Michał Górny via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Sep 12 03:17:04 PDT 2023


mgorny added a comment.

I'm seeing a bunch of test failures with this (and the subsequent) changes on 32-bit x86. They all seem to be related to size assertions, e.g.:

  $ ":" "COMPILED WITH"
  $ "/usr/lib/ccache/bin/i686-pc-linux-gnu-clang++" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/simd_alias.pass.cpp" "-pthread" "--target=i686-pc-linux-g
  nu" "-nostdinc++" "-I" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1" "-I" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x
  86_32.x86/include/c++/v1" "-I" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/support" "-std=c++26" "-Werror" "-Wall" "-Wctad-maybe-unsupported" "-Wextra" "-Wshadow" "-Wundef" "-Wunused-t
  emplate" "-Wno-unused-command-line-argument" "-Wno-attributes" "-Wno-pessimizing-move" "-Wno-noexcept-type" "-Wno-atomic-alignment" "-Wno-reserved-module-identifier" "-Wno-user-defined-literals" "-Wno-tautologi
  cal-compare" "-Wsign-compare" "-Wunused-variable" "-Wunused-parameter" "-Wunreachable-code" "-Wno-unused-local-typedef" "-Wno-local-type-template-args" "-Wno-c++11-extensions" "-Wno-unknown-pragmas" "-Wno-pass-
  failed" "-Wno-mismatched-new-delete" "-Wno-redundant-move" "-Wno-self-move" "-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER" "-D_LIBCPP_ENABLE_EXPERIMENTAL" "-Werror=thread-safety" "-Wuser-defined-warnings" "-lc++experi
  mental" "-nostdlib++" "-L" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/lib" "-Wl,-rpath,/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x8
  6_32.x86/lib" "-lc++" "-o" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/test/std/experimental/simd/simd.class/Output/simd_alias.pass.cpp.dir/t.tmp.exe"
  # command stderr:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/simd_alias.pass.cpp:19:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/../test_utils.h:17:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/simd:81:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/abi_tag.h:14:
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/vec_ext.h:31:29: error: vector size not an integral multiple of component size
     31 |   _Tp __data __attribute__((__vector_size__(std::__bit_ceil((sizeof(_Tp) * _Np)))));
        |                             ^               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/simd.h:33:12: note: in instantiation of template class 'std::experimental::__simd_storag
  e<long double, std::experimental::simd_abi::__vec_ext<1>>' requested here
     33 |   _Storage __s_;
        |            ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/simd_alias.pass.cpp:28:47: note: in instantiation of template class 'std::experimental::simd<long double, st
  d::experimental::simd_abi::__vec_ext<1>>' requested here
     28 |     static_assert(std::is_same_v<typename ex::simd<T, SimdAbi>::value_type, T>);
        |                                               ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'CheckSimdAlias<long double, 1>::operator()<std::
  experimental::simd_abi::__vec_ext<1>>' requested here
     52 |   swallow((f.template operator()<Types>(), 0)...);
        |                       ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestAllSimdAbiFunctor<CheckSimdAlias>::operator(
  )<long double>' requested here
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/simd_alias.pass.cpp:35:3: note: in instantiation of function template specialization 'test_all_simd_abi<CheckSimdAlias>' requested here
     35 |   test_all_simd_abi<CheckSimdAlias>();
        |   ^
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/simd_alias.pass.cpp:19:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/../test_utils.h:18:
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/support/type_algorithms.h:52:23: error: no matching member function for call to 'operator()'
     52 |   swallow((f.template operator()<Types>(), 0)...);
        |            ~~~~~~~~~~~^~~~~~~~~~~~~~~~~
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/../test_utils.h:31:13: note: in instantiation of function template specialization 'types::for_each<std::expe
  rimental::simd_abi::__vec_ext<1>, std::experimental::simd_abi::__vec_ext<1>, CheckSimdAlias<long double, 1>>' requested here
     31 |     (types::for_each(sized_abis<T, Ns + 1>{}, F<T, Ns + 1>{}), ...);
        |             ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/../test_utils.h:39:5: note: in instantiation of function template specialization 'TestAllSimdAbiFunctor<Chec
  kSimdAlias>::instantiate_with_n<long double, 0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, 16U, 17U, 18U, 19U, 20U, 21U, 22U, 23U, 24U, 25U, 26U, 27U, 28U, 29U, 30U>' requested here
     39 |     instantiate_with_n<T>(std::make_index_sequence<max_simd_size - 1>{});
        |     ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestAllSimdAbiFunctor<CheckSimdAlias>::operator()<long double>' requested here
     52 |   swallow((f.template operator()<Types>(), 0)...);
        |                       ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/simd_alias.pass.cpp:35:3: note: in instantiation of function template specialization 'test_all_simd_abi<Chec
  kSimdAlias>' requested here
     35 |   test_all_simd_abi<CheckSimdAlias>();
        |   ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.class/simd_alias.pass.cpp:27:8: note: candidate template ignored: substitution failure [with SimdAbi = std::experi
  mental::simd_abi::__vec_ext<1>]
     27 |   void operator()() {
        |        ^
  
  ----
  
  $ ":" "COMPILED WITH"
  $ "/usr/lib/ccache/bin/i686-pc-linux-gnu-clang++" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_alias.pass.cpp" "-pthread" "--target=i686-pc-linux-gnu" "-nostdinc++" "-I" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1" "-I" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1" "-I" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/support" "-std=c++26" "-Werror" "-Wall" "-Wctad-maybe-unsupported" "-Wextra" "-Wshadow" "-Wundef" "-Wunused-template" "-Wno-unused-command-line-argument" "-Wno-attributes" "-Wno-pessimizing-move" "-Wno-noexcept-type" "-Wno-atomic-alignment" "-Wno-reserved-module-identifier" "-Wno-user-defined-literals" "-Wno-tautological-compare" "-Wsign-compare" "-Wunused-variable" "-Wunused-parameter" "-Wunreachable-code" "-Wno-unused-local-typedef" "-Wno-local-type-template-args" "-Wno-c++11-extensions" "-Wno-unknown-pragmas" "-Wno-pass-failed" "-Wno-mismatched-new-delete" "-Wno-redundant-move" "-Wno-self-move" "-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER" "-D_LIBCPP_ENABLE_EXPERIMENTAL" "-Werror=thread-safety" "-Wuser-defined-warnings" "-lc++experimental" "-nostdlib++" "-L" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/lib" "-Wl,-rpath,/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/lib" "-lc++" "-o" "/var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/test/std/experimental/simd/simd.mask.class/Output/simd_mask_alias.pass.cpp.dir/t.tmp.exe"
  # command stderr:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_alias.pass.cpp:19:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.mask.class/../test_utils.h:17:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/simd:81:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/abi_tag.h:14:
  In file included from /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/vec_ext.h:16:
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/utility.h:53:19: error: static assertion failed due to requirement 'sizeof(long double) == 0': Unexpected size
     53 |     static_assert(sizeof(_Tp) == 0, "Unexpected size");
        |                   ^~~~~~~~~~~~~~~~
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/vec_ext.h:45:45: note: in instantiation of function template specialization 'std::experimental::__choose_mask_type<long double>' requested here
     45 |     : __simd_storage<decltype(experimental::__choose_mask_type<_Tp>()), simd_abi::__vec_ext<_Np>> {};
        |                                             ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/simd_mask.h:31:12: note: in instantiation of template class 'std::experimental::__mask_storage<long double, std::experimental::simd_abi::__vec_ext<1>>' requested here
     31 |   _Storage __s_;
        |            ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_alias.pass.cpp:28:47: note: in instantiation of template class 'std::experimental::simd_mask<long double, std::experimental::simd_abi::__vec_ext<1>>' requested here
     28 |     static_assert(std::is_same_v<typename ex::simd_mask<T, SimdAbi>::value_type, bool>);
        |                                               ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'CheckSimdMaskAlias<long double, 1>::operator()<std::experimental::simd_abi::__vec_ext<1>>' requested here
     52 |   swallow((f.template operator()<Types>(), 0)...);
        |                       ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/support/type_algorithms.h:52:23: note: in instantiation of function template specialization 'TestAllSimdAbiFunctor<CheckSimdMaskAlias>::operator()<long double>' requested here
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/libcxx/test/std/experimental/simd/simd.mask.class/simd_mask_alias.pass.cpp:35:3: note: in instantiation of function template specialization 'test_all_simd_abi<CheckSimdMaskAlias>' requested here
     35 |   test_all_simd_abi<CheckSimdMaskAlias>();
        |   ^
  /var/tmp/portage/sys-libs/libcxx-18.0.0_pre20230912/work/runtimes_build-abi_x86_32.x86/include/c++/v1/experimental/__simd/utility.h:53:31: note: expression evaluates to '12 == 0'
     53 |     static_assert(sizeof(_Tp) == 0, "Unexpected size");
        |                   ~~~~~~~~~~~~^~~~

Full log (.xz, 2.8M uncompressed): F29202951: sys-libs:libcxx-18.0.0_pre20230912:20230912-085749.log.xz <https://reviews.llvm.org/F29202951>


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144363/new/

https://reviews.llvm.org/D144363



More information about the libcxx-commits mailing list