kokkos / mdspan

Reference implementation of mdspan targeting C++23
Other
413 stars 69 forks source link

Fix standard compliance #285

Closed crtrott closed 1 year ago

crtrott commented 1 year 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 1 year 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