6#include <guanaqo/mat-view.hpp>
11template <
class T,
class I,
class S, StorageOrder O>
15template <
class T,
class I,
class S, StorageOrder O>
19template <
class T,
class I,
class S, StorageOrder O>
23template <
class T,
class I,
class S, StorageOrder O>
27template <
class T,
class I,
class S, StorageOrder O>
29 return std::integral_constant<I, 1>{};
42template <
class T,
class S,
class L, StorageOrder O>
51 static_assert(stride::value *
sizeof(
value_type) >= alignment::value);
54template <
class T,
class S,
class L, StorageOrder O>
63 static_assert(stride::value *
sizeof(
value_type) >= alignment::value);
66template <
class T,
class I, StorageOrder O>
75 static_assert(stride::value *
sizeof(
value_type) >= alignment::value);
78template <
class T,
class I, StorageOrder O>
87 static_assert(stride::value *
sizeof(
value_type) >= alignment::value);
90template <
class T,
class I,
class S, StorageOrder O,
class A>
99 static_assert(A{} >= alignment::value);
102template <
class T,
class I,
class S,
class A, StorageOrder O>
111 static_assert(A{} >= alignment::value);
119template <
class T,
class S,
class D,
class L, StorageOrder O>
120 requires(D{} == 0 || D{} > S{})
129 static_assert(stride::value *
sizeof(
value_type) >= alignment::value);
132template <
class T,
class S,
class D,
class L, StorageOrder O>
133 requires(D{} == 0 || D{} > S{})
142 static_assert(stride::value *
sizeof(
value_type) >= alignment::value);
145template <
class T,
class I,
class S,
class D, StorageOrder O,
class A>
146 requires(D{} == 0 || D{} > S{})
155 static_assert(A{} >= alignment::value);
158template <
class T,
class I,
class S,
class D,
class A, StorageOrder O>
159 requires(D{} == 0 || D{} > S{})
168 static_assert(A{} >= alignment::value);
182template <simdifiable V>
190template <simdifiable V>
198template <simdifiable V>
223 .outer_stride = outer_stride(a),
234template <simdifiable_multi V>
239template <simdifiable_multi V>
240struct simdified_value<V> {
244template <simdifiable_multi V>
262 .outer_stride = outer_stride(a),
Class for a batch of matrices that owns its storage.
stdx::memory_alignment< simd< Tp, Abi > > simd_align
stdx::simd_size< Tp, Abi > simd_size
deduced_abi< Tp, 1 > scalar_abi
stdx::simd_abi::deduce_t< Tp, Np > deduced_abi
stdx::simd< Tp, Abi > simd
datapar::deduced_abi< value_type, S{}> abi_type
batmat::matrix::DefaultStride layer_stride
batmat::matrix::View< T, index_t, stride, index_t, layer_stride, O > type
std::remove_const_t< T > value_type
batmat::matrix::DefaultStride layer_stride
batmat::matrix::View< const T, index_t, stride, stride, layer_stride, O > type
std::remove_const_t< T > value_type
datapar::deduced_abi< value_type, S{}> abi_type
batmat::matrix::View< T, index_t, stride, stride, layer_stride, O > type
datapar::simd_align< value_type, abi_type > alignment
datapar::deduced_abi< value_type, S{}> abi_type
batmat::matrix::View< T, index_t, stride, index_t, layer_stride, O > type
datapar::simd_size< value_type, abi_type > stride
std::remove_const_t< T > value_type
batmat::matrix::DefaultStride layer_stride
batmat::matrix::View< const T, index_t, stride, index_t, layer_stride, O > type
batmat::matrix::View< T, index_t, stride, stride, layer_stride, O > type
batmat::matrix::DefaultStride layer_stride
batmat::matrix::DefaultStride layer_stride
datapar::simd_align< value_type, abi_type > alignment
datapar::simd< value_type, abi_type > simd_type
batmat::matrix::View< T, index_t, stride, stride, layer_stride, O > type
datapar::scalar_abi< value_type > abi_type
datapar::simd_size< value_type, abi_type > stride
datapar::simd_size< value_type, abi_type > stride
datapar::simd< value_type, abi_type > simd_type
std::remove_const_t< T > value_type
datapar::simd< value_type, abi_type > simd_type
datapar::simd< value_type, abi_type > simd_type
datapar::simd_size< value_type, abi_type > stride
datapar::simd< value_type, abi_type > simd_type
datapar::simd< value_type, abi_type > simd_type
datapar::simd< value_type, abi_type > simd_type
datapar::deduced_abi< value_type, S{}> abi_type
datapar::simd_size< value_type, abi_type > stride
datapar::deduced_abi< value_type, S{}> abi_type
datapar::deduced_abi< value_type, S{}> abi_type
batmat::matrix::View< T, index_t, stride, index_t, layer_stride, O > type
datapar::simd_size< value_type, abi_type > stride
std::remove_const_t< T > value_type
datapar::simd_align< value_type, abi_type > alignment
batmat::matrix::DefaultStride layer_stride
datapar::simd_align< value_type, abi_type > alignment
datapar::scalar_abi< value_type > abi_type
datapar::simd_size< value_type, abi_type > stride
typename batmat::linalg::simdified_view_type< V >::abi_type type
datapar::simd_size< value_type, abi_type > stride
datapar::simd_size< value_type, abi_type > stride
datapar::simd_align< value_type, abi_type > alignment
datapar::simd< value_type, abi_type > simd_type
batmat::matrix::View< T, index_t, stride, stride, layer_stride, O > type
datapar::simd_size< value_type, abi_type > stride
typename batmat::linalg::simdified_view_type< V >::value_type type
std::remove_const_t< T > value_type
datapar::simd< value_type, abi_type > simd_type
batmat::matrix::DefaultStride layer_stride
datapar::deduced_abi< value_type, S{}> abi_type
datapar::simd_align< value_type, abi_type > alignment
datapar::simd_align< value_type, abi_type > alignment
batmat::matrix::DefaultStride layer_stride
datapar::simd_align< value_type, abi_type > alignment
batmat::matrix::View< T, index_t, stride, stride, layer_stride, O > type
datapar::deduced_abi< value_type, S{}> abi_type
datapar::simd< value_type, abi_type > simd_type
datapar::simd_align< value_type, abi_type > alignment
datapar::simd_align< value_type, abi_type > alignment
typename detail::simdified_value< V >::type simdified_value_t
typename detail::simdified_abi< V >::type simdified_abi_t
detail::simdified_multi_view_type< std::remove_reference_t< V > > simdified_multi_view_type
typename simdified_view_type< V >::type simdified_view_t
detail::simdified_view_type< std::remove_reference_t< V > > simdified_view_type
Convert the given view or matrix type V (batmat::matrix::View or batmat::matrix::Matrix) to a batched...
constexpr bool simdify_compatible
typename simdified_multi_view_type< V >::type simdified_multi_view_t
constexpr auto simdify(simdifiable auto &&a) -> simdified_view_t< decltype(a)>
constexpr auto outer_stride(const MatrixView< T, I, S, O > &v)
constexpr auto cols(const MatrixView< T, I, S, O > &v)
constexpr auto data(const MatrixView< T, I, S, O > &v)
constexpr auto rows(const MatrixView< T, I, S, O > &v)
constexpr auto depth(const MatrixView< T, I, S, O > &)
Owning array of matrices, stored in an efficient batched format.
Non-owning view of an array of matrices, stored in an efficient batched format.
Non-owning view of a batch of matrices.