9#include <guanaqo/trace.hpp>
25 const index_t M = D.rows(), N = D.cols(), K = A.cols();
28 if (M == 0 || N == 0) [[unlikely]]
30 if (K == 0) [[unlikely]]
44template <MatrixStructure SA, simdifiable VA, simdifiable VB, simdifiable VD>
53template <MatrixStructure SA, simdifiable VA, simdifiable VB, simdifiable VD>
void syomv(Structured< VA, SA > A, VB &&B, VD &&D)
void syomv_neg(Structured< VA, SA > A, VB &&B, VD &&D)
#define GUANAQO_TRACE_LINALG(name, gflops)
void syomv(view< const T, Abi, OA > A, view< const T, Abi, OB > B, view< T, Abi, OD > D)
void syomv_register(view< const T, Abi, OA > A, view< const T, Abi, OB > B, view< T, Abi, OD > D) noexcept
Generalized matrix multiplication D = C ± A⁽ᵀ⁾ B⁽ᵀ⁾. Using register blocking.
typename detail::simdified_abi< V >::type simdified_abi_t
constexpr bool simdify_compatible
constexpr auto simdify(simdifiable auto &&a) -> simdified_view_t< decltype(a)>
simd_view_types< std::remove_const_t< T >, Abi >::template view< T, Order > view
Aligned allocation for matrix storage.
Light-weight wrapper class used for overload resolution of triangular and symmetric matrices.