2 #include <hmlp_internal.hpp> 6 BLIS_GEMM_KERNEL(bli_sgemm_opt_12x32_l2,
float);
7 BLIS_GEMM_KERNEL(bli_dgemm_opt_12x16_l2,
double);
16 const static size_t mr = 32;
17 const static size_t nr = 12;
18 const static size_t pack_mr = 32;
19 const static size_t pack_nr = 12;
20 const static size_t align_size = 64;
21 const static bool row_major =
true;
23 inline STRA_OPERATOR(
float)
const 25 printf(
"no STRA_OPERATOR implementation\n" );
33 float beta = aux->pc ? 1.0 : 0.0;
45 bli_sgemm_opt_12x32_l2
58 inline void operator()
64 float *v, inc_t rs_v, inc_t cs_v,
70 float beta = aux->pc ? 1.0 : 0.0;
73 float vtmp[ mr * nr ];
79 for (
size_t j = 0; j < aux->jb; j ++ )
80 for (
size_t i = 0; i < aux->ib; i ++ )
81 vtmp[ j * mr + i ] = v[ j * cs_v + i * rs_v ];
100 bli_sgemm_opt_12x32_l2
116 aux->ib != mr || aux->jb != nr )
118 c->Unpack( aux->m, aux->i, aux->ib, aux->n, aux->j, aux->jb, v );
133 const static size_t mr = 16;
134 const static size_t nr = 12;
135 const static size_t pack_mr = 16;
136 const static size_t pack_nr = 12;
137 const static size_t align_size = 64;
138 const static bool row_major =
true;
140 inline STRA_OPERATOR(
double)
const 142 printf(
"no STRA_OPERATOR implementation\n" );
150 double beta = aux->pc ? 1.0 : 0.0;
162 bli_dgemm_opt_12x16_l2
174 template<
typename TC>
175 inline void operator()
181 double *v, inc_t rs_v, inc_t cs_v,
187 double beta = aux->pc ? 1.0 : 0.0;
190 double vtmp[ mr * nr ];
196 for (
size_t j = 0; j < aux->jb; j ++ )
197 for (
size_t i = 0; i < aux->ib; i ++ )
198 vtmp[ j * mr + i ] = v[ j * cs_v + i * rs_v ];
217 bli_dgemm_opt_12x16_l2
233 aux->ib != mr || aux->jb != nr )
236 c->Unpack( aux->m, aux->i, aux->ib, aux->n, aux->j, aux->jb, v );
GEMM_OPERATOR(double) const
Definition: rank_k_d12x16.hpp:146
Definition: rank_k_d12x16.hpp:10
Definition: hmlp_internal.hpp:38
Definition: packing.hpp:198
GEMM_OPERATOR(float) const
Definition: rank_k_d12x16.hpp:29
Definition: rank_k_d12x16.hpp:127