kokkos / mdspan

Reference implementation of mdspan targeting C++23
Other
401 stars 66 forks source link

Fix standard compliance #285

Closed crtrott closed 10 months ago

crtrott commented 10 months ago

This fixes most everything identified in the llvm tests which is wrong with our reference implementation, and where we haven't backported fixes yet from when we contributed our implementation to LLVM.

I haven't done mdspan yet.

crtrott commented 10 months ago

Outstanding FIXMEs:

../../tests/libcxx-backports/layout_left/layout_left.static_requirements.pass.cpp:  // static_assert(std::__mdspan_detail::__is_extents_v<E>); // FIXME
../../tests/libcxx-backports/layout_right/layout_right.static_requirements.pass.cpp:  //static_assert(std::__mdspan_detail::__is_extents_v<E>); //FIXME
../../tests/libcxx-backports/layout_stride/CMakeLists.txt:#mdspan_add_test(layout_stride.extents.verify) //FIXME
../../tests/libcxx-backports/layout_stride/layout_stride.ctor.strided_mapping.pass.cpp:  //test_layout<always_convertible_layout>(); //FIXME
../../tests/libcxx-backports/layout_stride/layout_stride.static_requirements.pass.cpp:  //static_assert(std::__mdspan_detail::__is_extents_v<E>); //FIXME
../../tests/libcxx-backports/mdspan/CMakeLists.txt:#mdspan_add_test(mdspan.conversion.pass) //FIXME
../../tests/libcxx-backports/mdspan/CMakeLists.txt:#mdspan_add_test(mdspan.index_operator.pass) //FIXME
../../tests/libcxx-backports/mdspan/CMakeLists.txt:#mdspan_add_test(mdspan.swap.pass) //FIXME
../../tests/libcxx-backports/mdspan/mdspan.conversion.pass.cpp:  // FIXME: these tests trigger what appears to be a compiler bug on MINGW32 with --target=x86_64-w64-windows-gnu
../../tests/libcxx-backports/mdspan/mdspan.ctor.copy.pass.cpp:  //static_assert(noexcept(MDS(m_org)) == (noexcept(H(handle))&& noexcept(M(map))&& noexcept(A(acc)))); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.ctor.default.pass.cpp:    //static_assert(noexcept(MDS()) == (noexcept(H())&& noexcept(M())&& noexcept(A()))); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.ctor.default.pass.cpp:  // static_assert(test()); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.ctor.dh_extents.pass.cpp:    //static_assert(!std::is_constructible_v<MDS, const H&, const typename M::extents_type&>); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.ctor.dh_span.pass.cpp:  //test_mdspan_ctor<mec, ac>(handle, construct_mapping(layout, std::extents<int>()), acc); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.ctor.dh_span.pass.cpp:  //test_mdspan_ctor<mec, ac>(handle, construct_mapping(layout, std::extents<unsigned, 7>()), acc); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.deduction.pass.cpp:  //ASSERT_SAME_TYPE(decltype(std::mdspan(handle, 5, SizeTIntType(6))), std::mdspan<T, std::dextents<size_t, 2>>); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.properties.pass.cpp:  //ASSERT_SAME_TYPE(decltype(m.size()), typename MDS::size_type); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.properties.pass.cpp:  //assert(!noexcept(MDS::is_always_unique())); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.properties.pass.cpp:  //assert(!noexcept(MDS::is_always_exhaustive())); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.properties.pass.cpp:  //assert(!noexcept(MDS::is_always_strided())); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.properties.pass.cpp:  //assert(!noexcept(m.is_unique())); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.properties.pass.cpp:  //assert(!noexcept(m.is_exhaustive())); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.properties.pass.cpp:  //assert(!noexcept(m.is_strided())); //FIXME
../../tests/libcxx-backports/mdspan/mdspan.properties.pass.cpp:  //static_assert(test()); //FIXME