1
      2
      3
      4
      5
      6
      7
      8
<doc  9
     10
     11
     12
     13
     14
     15
     16
     17

     18
     19
     20
     21
     22
<doc 23
     24
     25
     26
     27
     28
     29

     30
     31
     32
     33
<doc 34
     35
     36
     37
     38
     39
     40

     41
     42
     43
     44
     45
     46
#ifndef ULMBLAS_IMPL_LEVEL3_UKERNEL_UTRUSM_H
#define ULMBLAS_IMPL_LEVEL3_UKERNEL_UTRUSM_H 1

namespace ulmBLAS {

//
//  Buffered variant.  Used for zero padded panels.
//
template <typename IndexType, typename T, typename TC>
    void
    utrusm(IndexType    mr,
           IndexType    nr,
           const T      *A,
           const T      *B,
           TC           *C,
           IndexType    incRowC,
           IndexType    incColC);

//
//  Buffered variant.  Used if the result A^(-1)*B needs to be upcasted for
//  computing C <- A^(-1)*B
//
template <typename T, typename TC, typename IndexType>
    void
    utrusm(const T     *A,
           const T     *B,
           TC          *C,
           IndexType   incRowC,
           IndexType   incColC);

//
//  Unbuffered variant.
//
template <typename IndexType, typename T>
    void
    utrusm(const T     *A,
           const T     *B,
           T           *C,
           IndexType   incRowC,
           IndexType   incColC);

// namespace ulmBLAS

#endif // ULMBLAS_IMPL_LEVEL3_UKERNEL_UTRUSM_H

#include <ulmblas/impl/level3/ukernel/utrusm.tcc>