Pass pack_t schemas into ukernels via auxinfo_t.

Details:
- Modified macro-kernels to pass the pack_t schema values for matrices
  A and B into the datatype-specific functions, where they are now
  inserted into a newly-expanded auxinfo_t struct. This gives gives the
  micro-kernels access to the pack_t schema values embedded in the
  control trees, which determine the precise format into which the
  matrix elements are packed.
- Updated a call to bli_packm_init_pack() in src/test_libblis.c to
  remove densify argument. Meant to include this in commit c472993b.
This commit is contained in:
Field G. Van Zee
2014-09-11 11:47:56 -05:00
parent cc8d2b8277
commit cf5efdde05
25 changed files with 206 additions and 28 deletions

View File

@@ -37,6 +37,8 @@
#define FUNCPTR_T gemm_fp
typedef void (*FUNCPTR_T)(
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -60,6 +62,9 @@ void bli_gemm_ker_var2( obj_t* a,
{
num_t dt_exec = bli_obj_execution_datatype( *c );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -111,7 +116,9 @@ void bli_gemm_ker_var2( obj_t* a,
gemm_ukr = bli_func_obj_query( dt_exec, gemm_ukrs );
// Invoke the function.
f( m,
f( schema_a,
schema_b,
m,
n,
k,
buf_alpha,
@@ -128,6 +135,8 @@ void bli_gemm_ker_var2( obj_t* a,
#define GENTFUNC( ctype, ch, varname, ukrtype ) \
\
void PASTEMAC(ch,varname)( \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -212,6 +221,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel strides of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_ps_a( ps_a, aux ); \

View File

@@ -50,6 +50,8 @@ void bli_gemm_ker_var2( obj_t* a,
#define GENTPROT( ctype, ch, varname ) \
\
void PASTEMAC(ch,varname)( \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffc,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -63,6 +65,9 @@ void bli_herk_l_ker_var2( obj_t* a,
doff_t diagoffc = bli_obj_diag_offset( *c );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -115,6 +120,8 @@ void bli_herk_l_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffc,
schema_a,
schema_b,
m,
n,
k,
@@ -133,6 +140,8 @@ void bli_herk_l_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffc, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -243,6 +252,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel strides of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_ps_a( ps_a, aux ); \

View File

@@ -51,6 +51,8 @@ void bli_herk_l_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffc, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffc,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -63,6 +65,9 @@ void bli_herk_u_ker_var2( obj_t* a,
doff_t diagoffc = bli_obj_diag_offset( *c );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -115,6 +120,8 @@ void bli_herk_u_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffc,
schema_a,
schema_b,
m,
n,
k,
@@ -133,6 +140,8 @@ void bli_herk_u_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffc, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -243,6 +252,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel strides of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_ps_a( ps_a, aux ); \

View File

@@ -51,6 +51,8 @@ void bli_herk_u_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffc, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffa,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -63,6 +65,9 @@ void bli_trmm_ll_ker_var2( obj_t* a,
doff_t diagoffa = bli_obj_diag_offset( *a );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -125,6 +130,8 @@ void bli_trmm_ll_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffa,
schema_a,
schema_b,
m,
n,
k,
@@ -143,6 +150,8 @@ void bli_trmm_ll_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -263,6 +272,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel stride of B to the auxinfo_t object. */ \
bli_auxinfo_set_ps_b( ps_b, aux ); \

View File

@@ -51,6 +51,8 @@ void bli_trmm_ll_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffa,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -63,6 +65,9 @@ void bli_trmm_lu_ker_var2( obj_t* a,
doff_t diagoffa = bli_obj_diag_offset( *a );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -125,6 +130,8 @@ void bli_trmm_lu_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffa,
schema_a,
schema_b,
m,
n,
k,
@@ -143,6 +150,8 @@ void bli_trmm_lu_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -270,6 +279,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel stride of B to the auxinfo_t object. */ \
bli_auxinfo_set_ps_b( ps_b, aux ); \

View File

@@ -51,6 +51,8 @@ void bli_trmm_lu_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffb,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -63,6 +65,9 @@ void bli_trmm_rl_ker_var2( obj_t* a,
doff_t diagoffb = bli_obj_diag_offset( *b );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -125,6 +130,8 @@ void bli_trmm_rl_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffb,
schema_a,
schema_b,
m,
n,
k,
@@ -143,6 +150,8 @@ void bli_trmm_rl_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffb, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -270,6 +279,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel stride of A to the auxinfo_t object. */ \
bli_auxinfo_set_ps_a( ps_a, aux ); \

View File

@@ -51,6 +51,8 @@ void bli_trmm_rl_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffb, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffb,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -63,6 +65,9 @@ void bli_trmm_ru_ker_var2( obj_t* a,
doff_t diagoffb = bli_obj_diag_offset( *b );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -125,6 +130,8 @@ void bli_trmm_ru_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffb,
schema_a,
schema_b,
m,
n,
k,
@@ -143,6 +150,8 @@ void bli_trmm_ru_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffb, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -271,6 +280,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel stride of A to the auxinfo_t object. */ \
bli_auxinfo_set_ps_a( ps_a, aux ); \

View File

@@ -51,6 +51,8 @@ void bli_trmm_ru_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffb, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffa,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -64,6 +66,9 @@ void bli_trsm_ll_ker_var2( obj_t* a,
doff_t diagoffa = bli_obj_diag_offset( *a );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -132,6 +137,8 @@ void bli_trsm_ll_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffa,
schema_a,
schema_b,
m,
n,
k,
@@ -151,6 +158,8 @@ void bli_trsm_ll_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -291,6 +300,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel stride of B to the auxinfo_t object. */ \
bli_auxinfo_set_ps_b( ps_b, aux ); \

View File

@@ -51,6 +51,8 @@ void bli_trsm_ll_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffa,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -64,6 +66,9 @@ void bli_trsm_lu_ker_var2( obj_t* a,
doff_t diagoffa = bli_obj_diag_offset( *a );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -132,6 +137,8 @@ void bli_trsm_lu_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffa,
schema_a,
schema_b,
m,
n,
k,
@@ -151,6 +158,8 @@ void bli_trsm_lu_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -299,6 +308,10 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object. */ \
bli_auxinfo_set_schema_a( schema_a, aux ); \
bli_auxinfo_set_schema_b( schema_b, aux ); \
\
/* Save the panel stride of B to the auxinfo_t object. */ \
bli_auxinfo_set_ps_b( ps_b, aux ); \

View File

@@ -51,6 +51,8 @@ void bli_trsm_lu_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffb,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -64,6 +66,9 @@ void bli_trsm_rl_ker_var2( obj_t* a,
doff_t diagoffb = bli_obj_diag_offset( *b );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -132,6 +137,8 @@ void bli_trsm_rl_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffb,
schema_a,
schema_b,
m,
n,
k,
@@ -151,6 +158,8 @@ void bli_trsm_rl_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffb, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -312,6 +321,12 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object.
NOTE: We swap the values for A and B since the triangular
"A" matrix is actually contained within B. */ \
bli_auxinfo_set_schema_a( schema_b, aux ); \
bli_auxinfo_set_schema_b( schema_a, aux ); \
\
/* Save the panel stride of A to the auxinfo_t object.
NOTE: We swap the values for A and B since the triangular

View File

@@ -51,6 +51,8 @@ void bli_trsm_rl_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,6 +38,8 @@
typedef void (*FUNCPTR_T)(
doff_t diagoffb,
pack_t schema_a,
pack_t schema_b,
dim_t m,
dim_t n,
dim_t k,
@@ -64,6 +66,9 @@ void bli_trsm_ru_ker_var2( obj_t* a,
doff_t diagoffb = bli_obj_diag_offset( *b );
pack_t schema_a = bli_obj_pack_status( *a );
pack_t schema_b = bli_obj_pack_status( *b );
dim_t m = bli_obj_length( *c );
dim_t n = bli_obj_width( *c );
dim_t k = bli_obj_width( *a );
@@ -132,6 +137,8 @@ void bli_trsm_ru_ker_var2( obj_t* a,
// Invoke the function.
f( diagoffb,
schema_a,
schema_b,
m,
n,
k,
@@ -151,6 +158,8 @@ void bli_trsm_ru_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffb, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \
@@ -307,6 +316,12 @@ void PASTEMAC(ch,varname)( \
\
rstep_c = rs_c * MR; \
cstep_c = cs_c * NR; \
\
/* Save the pack schemas of A and B to the auxinfo_t object.
NOTE: We swap the values for A and B since the triangular
"A" matrix is actually contained within B. */ \
bli_auxinfo_set_schema_a( schema_b, aux ); \
bli_auxinfo_set_schema_b( schema_a, aux ); \
\
/* Save the panel stride of A to the auxinfo_t object.
NOTE: We swap the values for A and B since the triangular

View File

@@ -51,6 +51,8 @@ void bli_trsm_ru_ker_var2( obj_t* a,
\
void PASTEMAC(ch,varname)( \
doff_t diagoffa, \
pack_t schema_a, \
pack_t schema_b, \
dim_t m, \
dim_t n, \
dim_t k, \

View File

@@ -38,15 +38,21 @@
// auxinfo_t field query
#define bli_auxinfo_next_a( auxinfo ) ( (auxinfo)->a_next )
#define bli_auxinfo_next_b( auxinfo ) ( (auxinfo)->b_next )
#define bli_auxinfo_schema_a( auxinfo ) ( (auxinfo)->schema_a )
#define bli_auxinfo_schema_b( auxinfo ) ( (auxinfo)->schema_b )
#define bli_auxinfo_ps_a( auxinfo ) ( (auxinfo)->ps_a )
#define bli_auxinfo_ps_b( auxinfo ) ( (auxinfo)->ps_b )
#define bli_auxinfo_next_a( auxinfo ) ( (auxinfo)->a_next )
#define bli_auxinfo_next_b( auxinfo ) ( (auxinfo)->b_next )
#define bli_auxinfo_ps_a( auxinfo ) ( (auxinfo)->ps_a )
#define bli_auxinfo_ps_b( auxinfo ) ( (auxinfo)->ps_b )
// auxinfo_t field modification
#define bli_auxinfo_set_schema_a( schema, auxinfo ) { (auxinfo).schema_a = schema; }
#define bli_auxinfo_set_schema_b( schema, auxinfo ) { (auxinfo).schema_b = schema; }
#define bli_auxinfo_set_next_a( a_p, auxinfo ) { (auxinfo).a_next = a_p; }
#define bli_auxinfo_set_next_b( b_p, auxinfo ) { (auxinfo).b_next = b_p; }
@@ -56,8 +62,8 @@
bli_auxinfo_set_next_b( b_p, auxinfo ); \
}
#define bli_auxinfo_set_ps_a( a_p, auxinfo ) { (auxinfo).ps_a = a_p; }
#define bli_auxinfo_set_ps_b( b_p, auxinfo ) { (auxinfo).ps_b = b_p; }
#define bli_auxinfo_set_ps_a( ps, auxinfo ) { (auxinfo).ps_a = ps; }
#define bli_auxinfo_set_ps_b( ps, auxinfo ) { (auxinfo).ps_b = ps; }
#endif

View File

@@ -167,25 +167,6 @@ typedef double f77_double;
typedef scomplex f77_scomplex;
typedef dcomplex f77_dcomplex;
// -- Auxiliary kernel info type --
// Note: This struct is used by macro-kernels to package together extra
// parameter values that may be of use to the micro-kernel without
// cluttering up the micro-kernel interface itself.
typedef struct
{
// Pointers to the micro-panels of A and B which will be used by the
// next call to the micro-kernel.
void* a_next;
void* b_next;
// The panel strides of A and B.
inc_t ps_a;
inc_t ps_b;
} auxinfo_t;
//
@@ -522,6 +503,29 @@ typedef struct func_s
bool_t prefers_contig_rows[BLIS_NUM_FP_TYPES];
} func_t;
// -- Auxiliary kernel info type --
// Note: This struct is used by macro-kernels to package together extra
// parameter values that may be of use to the micro-kernel without
// cluttering up the micro-kernel interface itself.
typedef struct
{
// The pack schemas of A and B.
pack_t schema_a;
pack_t schema_b;
// Pointers to the micro-panels of A and B which will be used by the
// next call to the micro-kernel.
void* a_next;
void* b_next;
// The panel strides of A and B.
inc_t ps_a;
inc_t ps_b;
} auxinfo_t;
//

View File

@@ -1578,8 +1578,7 @@ void libblis_test_pobj_create( blksz_t* m, blksz_t* n, invdiag_t inv_diag, pack_
bli_obj_alias_to( *a, *p );
// Then initialize p appropriately for packing.
bli_packm_init_pack( FALSE,
inv_diag,
bli_packm_init_pack( inv_diag,
pack_schema,
BLIS_PACK_FWD_IF_UPPER,
BLIS_PACK_FWD_IF_LOWER,