2 #include <hmlp_internal.hpp> 6 void bli_sgemm_opt_8x12
13 float* restrict c, inc_t rs_c, inc_t cs_c,
17 void bli_dgemm_opt_6x8
20 double* restrict alpha,
23 double* restrict beta,
24 double* restrict c, inc_t rs_c, inc_t cs_c,
30 inline void operator()
39 double c_reg[ 8 * 4 ] = { 0.0 };
41 for (
int p = 0; p < k; p ++ )
44 for (
int j = 0; j < 4; j ++ )
47 for (
int i = 0; i < 8; i ++ )
49 c_reg[ j * 8 + i ] += a[ p * 8 + i ] * b[ p * 4 + j ];
57 for (
int j = 0; j < 4; j ++ )
60 for (
int i = 0; i < 8; i ++ )
62 c[ j * ldc + i ] += c_reg[ j * 8 + i ];
69 for (
int j = 0; j < 4; j ++ )
72 for (
int i = 0; i < 8; i ++ )
74 c[ j * ldc + i ] = c_reg[ j * 8 + i ];
80 printf(
"rank_k_ref_d8x4:" );
81 for (
int i = 0; i < 8; i ++ )
83 for (
int j = 0; j < 4; j ++ )
85 printf(
"%E ", c[ j * ldc + i ] );
97 inline void operator()
103 float **c,
int ldc,
float *alpha,
107 float c_reg[ 8 * 12 ] = { 0.0 };
109 for (
int p = 0; p < k; p ++ )
112 for (
int j = 0; j < 12; j ++ )
115 for (
int i = 0; i < 8; i ++ )
117 c_reg[ j * 8 + i ] += a[ p * 8 + i ] * b[ p * 12 + j ];
122 for (
int t = 0; t < len; t ++ )
125 for (
int j = 0; j < 12; j ++ )
128 for (
int i = 0; i < 8; i ++ )
130 c[ t ][ j * ldc + i ] += alpha[ t ] * c_reg[ j * 8 + i ];
136 inline void operator()
146 float beta = aux->pc ? 1.0 : 0.0;
167 inline void operator()
173 double **c,
int ldc,
double *alpha,
177 double c_reg[ 6 * 8 ] = { 0.0 };
179 for (
int p = 0; p < k; p ++ )
182 for (
int j = 0; j < 8; j ++ )
185 for (
int i = 0; i < 6; i ++ )
187 c_reg[ j * 8 + i ] += a[ p * 6 + i ] * b[ p * 8 + j ];
192 for (
int t = 0; t < len; t ++ )
195 for (
int j = 0; j < 8; j ++ )
198 for (
int i = 0; i < 6; i ++ )
200 c[ t ][ j * ldc + i ] += alpha[ t ] * c_reg[ j * 6 + i ];
206 inline void operator()
216 double beta = aux->pc ? 1.0 : 0.0;
Definition: rank_k_d6x8.hpp:94
Definition: hmlp_internal.hpp:38
Definition: rank_k_d6x8.hpp:164
Definition: rank_k_d6x8.hpp:28