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 L, StorageOrder O>
128 static_assert(stride::value *
sizeof(
value_type) >= alignment::value);
131template <
class T,
class S,
class L, StorageOrder O>
140 static_assert(stride::value *
sizeof(
value_type) >= alignment::value);
143template <
class T,
class I,
class S, StorageOrder O,
class A>
152 static_assert(A{} >= alignment::value);
155template <
class T,
class I,
class S,
class A, StorageOrder O>
164 static_assert(A{} >= alignment::value);
178template <simdifiable V>
186template <simdifiable V>
194template <simdifiable V>
219 .outer_stride = outer_stride(a),
230template <simdifiable_multi V>
235template <simdifiable_multi V>
236struct simdified_value<V> {
240template <simdifiable_multi V>
258 .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
datapar::simd_align< value_type, abi_type > alignment
std::remove_const_t< T > value_type
batmat::matrix::DefaultStride layer_stride
batmat::matrix::DefaultStride layer_stride
batmat::matrix::View< const T, index_t, stride, stride, 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::View< T, index_t, stride, stride, layer_stride, O > type
datapar::simd_align< value_type, abi_type > alignment
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
datapar::simd< value_type, abi_type > simd_type
batmat::matrix::View< T, index_t, stride, index_t, layer_stride, O > type
datapar::simd< value_type, abi_type > simd_type
batmat::matrix::View< T, index_t, stride, stride, layer_stride, O > type
datapar::simd_align< value_type, abi_type > alignment
batmat::matrix::DefaultStride layer_stride
datapar::deduced_abi< value_type, S{}> abi_type
datapar::deduced_abi< value_type, S{}> abi_type
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< value_type, abi_type > simd_type
datapar::simd_align< value_type, abi_type > alignment
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::simd_size< value_type, abi_type > stride
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::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< value_type, abi_type > simd_type
datapar::scalar_abi< value_type > abi_type
typename batmat::linalg::simdified_view_type< V >::abi_type type
datapar::simd_size< value_type, abi_type > stride
datapar::simd_align< value_type, abi_type > alignment
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
batmat::matrix::View< const T, index_t, stride, index_t, layer_stride, O > type
batmat::matrix::View< T, index_t, stride, index_t, layer_stride, O > type
batmat::matrix::DefaultStride layer_stride
datapar::deduced_abi< value_type, S{}> abi_type
datapar::simd_size< value_type, abi_type > stride
datapar::simd_align< value_type, abi_type > alignment
batmat::matrix::DefaultStride layer_stride
batmat::matrix::DefaultStride layer_stride
std::remove_const_t< T > value_type
std::remove_const_t< T > value_type
datapar::simd_align< value_type, abi_type > alignment
datapar::deduced_abi< value_type, S{}> abi_type
batmat::matrix::View< T, index_t, stride, stride, layer_stride, O > type
datapar::deduced_abi< value_type, S{}> abi_type
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.