31#ifndef REMORA_KERNELS_TRSM_HPP
32#define REMORA_KERNELS_TRSM_HPP
35#ifdef REMORA_USE_CBLAS
40namespace remora{
namespace bindings{
41template<
class M1,
class M2>
42struct has_optimized_trsm
43:
public std::false_type{};
49namespace remora{
namespace kernels{
55template <
class Triangular,
class S
ide,
typename MatA,
typename MatB>
57 matrix_expression<MatA, cpu_tag>
const &A,
58 matrix_expression<MatB, cpu_tag> &B
60 REMORA_SIZE_CHECK(A().size1() == A().size2());
61 REMORA_SIZE_CHECK(!Side::is_left || A().size2() == B().size1());
62 REMORA_SIZE_CHECK(Side::is_left || A().size2() == B().size2());
64 bindings::trsm<Triangular, Side>(A,B,
typename bindings::has_optimized_trsm<MatA, MatB>::type());
69#ifdef REMORA_USE_CLBLAST
71#elif defined REMORA_USE_GPU