batmat 0.0.18
Batched linear algebra routines
Loading...
Searching...
No Matches
simdify.hpp File Reference
#include <batmat/matrix/matrix.hpp>
#include <batmat/matrix/view.hpp>
#include <batmat/simd.hpp>
#include <guanaqo/mat-view.hpp>
#include <type_traits>

Go to the source code of this file.

Classes

struct  batmat::linalg::detail::simdified_view_type< batmat::matrix::View< T, index_t, S, S, L, O > >
struct  batmat::linalg::detail::simdified_view_type< const batmat::matrix::View< T, index_t, S, S, L, O > >
struct  batmat::linalg::detail::simdified_view_type< guanaqo::MatrixView< T, I, std::integral_constant< I, 1 >, O > >
struct  batmat::linalg::detail::simdified_view_type< const guanaqo::MatrixView< T, I, std::integral_constant< I, 1 >, O > >
struct  batmat::linalg::detail::simdified_view_type< batmat::matrix::Matrix< T, I, S, S, O, A > >
struct  batmat::linalg::detail::simdified_view_type< const batmat::matrix::Matrix< T, I, S, S, O, A > >
struct  batmat::linalg::detail::simdified_multi_view_type< batmat::matrix::View< T, index_t, S, index_t, L, O > >
struct  batmat::linalg::detail::simdified_multi_view_type< const batmat::matrix::View< T, index_t, S, index_t, L, O > >
struct  batmat::linalg::detail::simdified_multi_view_type< batmat::matrix::Matrix< T, I, S, I, O, A > >
struct  batmat::linalg::detail::simdified_multi_view_type< const batmat::matrix::Matrix< T, I, S, I, O, A > >
struct  batmat::linalg::detail::simdified_value< V >
struct  batmat::linalg::detail::simdified_abi< V >

Namespaces

namespace  guanaqo
namespace  batmat
namespace  batmat::linalg
namespace  batmat::linalg::detail

Concepts

concept  batmat::linalg::simdifiable
concept  batmat::linalg::simdifiable_multi

Typedefs

template<class V>
using batmat::linalg::simdified_view_type = detail::simdified_view_type<std::remove_reference_t<V>>
 Convert the given view or matrix type V (batmat::matrix::View or batmat::matrix::Matrix) to a batched view type using a deduced SIMD type.
template<simdifiable V>
using batmat::linalg::simdified_view_t = typename simdified_view_type<V>::type
template<class V>
using batmat::linalg::simdified_value_t = typename detail::simdified_value<V>::type
template<class V>
using batmat::linalg::simdified_abi_t = typename detail::simdified_abi<V>::type
template<class V>
using batmat::linalg::simdified_multi_view_type = detail::simdified_multi_view_type<std::remove_reference_t<V>>
template<simdifiable_multi V>
using batmat::linalg::simdified_multi_view_t = typename simdified_multi_view_type<V>::type

Functions

template<class T, class I, class S, StorageOrder O>
constexpr auto guanaqo::data (const MatrixView< T, I, S, O > &v)
template<class T, class I, class S, StorageOrder O>
constexpr auto guanaqo::rows (const MatrixView< T, I, S, O > &v)
template<class T, class I, class S, StorageOrder O>
constexpr auto guanaqo::cols (const MatrixView< T, I, S, O > &v)
template<class T, class I, class S, StorageOrder O>
constexpr auto guanaqo::outer_stride (const MatrixView< T, I, S, O > &v)
template<class T, class I, class S, StorageOrder O>
constexpr auto guanaqo::depth (const MatrixView< T, I, S, O > &)
constexpr auto batmat::linalg::simdify (simdifiable auto &&a) -> simdified_view_t< decltype(a)>
constexpr auto batmat::linalg::simdify (simdifiable_multi auto &&a) -> simdified_multi_view_t< decltype(a)>

Variables

template<class...>
constexpr bool batmat::linalg::simdify_compatible = false
template<simdifiable V, simdifiable... Vs>
constexpr bool batmat::linalg::simdify_compatible< V, Vs... >

Class Documentation

◆ batmat::linalg::detail::simdified_view_type< batmat::matrix::View< T, index_t, S, S, L, O > >

struct batmat::linalg::detail::simdified_view_type< batmat::matrix::View< T, index_t, S, S, L, O > >
Class Members
typedef remove_const_t< T > value_type std::remove_const_t<T>
typedef deduced_abi< value_type, S{}> abi_type datapar::deduced_abi<value_type, S{}>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef DefaultStride layer_stride batmat::matrix::DefaultStride
typedef View< T, index_t, stride, stride, layer_stride, O > type batmat::matrix::View<T, index_t, stride, stride, layer_stride, O>

◆ batmat::linalg::detail::simdified_view_type< const batmat::matrix::View< T, index_t, S, S, L, O > >

struct batmat::linalg::detail::simdified_view_type< const batmat::matrix::View< T, index_t, S, S, L, O > >
Class Members
typedef remove_const_t< T > value_type std::remove_const_t<T>
typedef deduced_abi< value_type, S{}> abi_type datapar::deduced_abi<value_type, S{}>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef DefaultStride layer_stride batmat::matrix::DefaultStride
typedef View< T, index_t, stride, stride, layer_stride, O > type batmat::matrix::View<T, index_t, stride, stride, layer_stride, O>

◆ batmat::linalg::detail::simdified_view_type< guanaqo::MatrixView< T, I, std::integral_constant< I, 1 >, O > >

struct batmat::linalg::detail::simdified_view_type< guanaqo::MatrixView< T, I, std::integral_constant< I, 1 >, O > >
Class Members
typedef remove_const_t< T > value_type std::remove_const_t<T>
typedef scalar_abi< value_type > abi_type datapar::scalar_abi<value_type>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef DefaultStride layer_stride batmat::matrix::DefaultStride
typedef View< T, index_t, stride, stride, layer_stride, O > type batmat::matrix::View<T, index_t, stride, stride, layer_stride, O>

◆ batmat::linalg::detail::simdified_view_type< const guanaqo::MatrixView< T, I, std::integral_constant< I, 1 >, O > >

struct batmat::linalg::detail::simdified_view_type< const guanaqo::MatrixView< T, I, std::integral_constant< I, 1 >, O > >
Class Members
typedef remove_const_t< T > value_type std::remove_const_t<T>
typedef scalar_abi< value_type > abi_type datapar::scalar_abi<value_type>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef DefaultStride layer_stride batmat::matrix::DefaultStride
typedef View< T, index_t, stride, stride, layer_stride, O > type batmat::matrix::View<T, index_t, stride, stride, layer_stride, O>

◆ batmat::linalg::detail::simdified_view_type< batmat::matrix::Matrix< T, I, S, S, O, A > >

struct batmat::linalg::detail::simdified_view_type< batmat::matrix::Matrix< T, I, S, S, O, A > >
Class Members
typedef T value_type T
typedef deduced_abi< value_type, S{}> abi_type datapar::deduced_abi<value_type, S{}>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef DefaultStride layer_stride batmat::matrix::DefaultStride
typedef View< T, index_t, stride, stride, layer_stride, O > type batmat::matrix::View<T, index_t, stride, stride, layer_stride, O>

◆ batmat::linalg::detail::simdified_view_type< const batmat::matrix::Matrix< T, I, S, S, O, A > >

struct batmat::linalg::detail::simdified_view_type< const batmat::matrix::Matrix< T, I, S, S, O, A > >
Class Members
typedef T value_type T
typedef deduced_abi< value_type, S{}> abi_type datapar::deduced_abi<value_type, S{}>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef DefaultStride layer_stride batmat::matrix::DefaultStride
typedef View< const T, index_t, stride, stride, layer_stride, O > type batmat::matrix::View<const T, index_t, stride, stride, layer_stride, O>

◆ batmat::linalg::detail::simdified_multi_view_type< batmat::matrix::View< T, index_t, S, index_t, L, O > >

struct batmat::linalg::detail::simdified_multi_view_type< batmat::matrix::View< T, index_t, S, index_t, L, O > >
Class Members
typedef remove_const_t< T > value_type std::remove_const_t<T>
typedef deduced_abi< value_type, S{}> abi_type datapar::deduced_abi<value_type, S{}>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef L layer_stride L
typedef View< T, index_t, stride, index_t, layer_stride, O > type batmat::matrix::View<T, index_t, stride, index_t, layer_stride, O>

◆ batmat::linalg::detail::simdified_multi_view_type< const batmat::matrix::View< T, index_t, S, index_t, L, O > >

struct batmat::linalg::detail::simdified_multi_view_type< const batmat::matrix::View< T, index_t, S, index_t, L, O > >
Class Members
typedef remove_const_t< T > value_type std::remove_const_t<T>
typedef deduced_abi< value_type, S{}> abi_type datapar::deduced_abi<value_type, S{}>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef L layer_stride L
typedef View< T, index_t, stride, index_t, layer_stride, O > type batmat::matrix::View<T, index_t, stride, index_t, layer_stride, O>

◆ batmat::linalg::detail::simdified_multi_view_type< batmat::matrix::Matrix< T, I, S, I, O, A > >

struct batmat::linalg::detail::simdified_multi_view_type< batmat::matrix::Matrix< T, I, S, I, O, A > >
Class Members
typedef T value_type T
typedef deduced_abi< value_type, S{}> abi_type datapar::deduced_abi<value_type, S{}>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef DefaultStride layer_stride batmat::matrix::DefaultStride
typedef View< T, index_t, stride, index_t, layer_stride, O > type batmat::matrix::View<T, index_t, stride, index_t, layer_stride, O>

◆ batmat::linalg::detail::simdified_multi_view_type< const batmat::matrix::Matrix< T, I, S, I, O, A > >

struct batmat::linalg::detail::simdified_multi_view_type< const batmat::matrix::Matrix< T, I, S, I, O, A > >
Class Members
typedef T value_type T
typedef deduced_abi< value_type, S{}> abi_type datapar::deduced_abi<value_type, S{}>
typedef simd< value_type, abi_type > simd_type datapar::simd<value_type, abi_type>
typedef simd_size< value_type, abi_type > stride datapar::simd_size<value_type, abi_type>
typedef simd_align< value_type, abi_type > alignment datapar::simd_align<value_type, abi_type>
typedef DefaultStride layer_stride batmat::matrix::DefaultStride
typedef View< const T, index_t, stride, index_t, layer_stride, O > type batmat::matrix::View<const T, index_t, stride, index_t, layer_stride, O>

◆ batmat::linalg::detail::simdified_value< V >

struct batmat::linalg::detail::simdified_value< V >
Class Members
typedef typename value_type type typename batmat::linalg::simdified_view_type<V>::value_type
typedef typename value_type type typename batmat::linalg::simdified_multi_view_type<V>::value_type

◆ batmat::linalg::detail::simdified_abi< V >

struct batmat::linalg::detail::simdified_abi< V >
Class Members
typedef typename abi_type type typename batmat::linalg::simdified_view_type<V>::abi_type
typedef typename abi_type type typename batmat::linalg::simdified_multi_view_type<V>::abi_type