1 /*
2 
3     Copyright (C) 2014, The University of Texas at Austin
4 
5     This file is part of libflame and is available under the 3-Clause
6     BSD license, which can be found in the LICENSE file at the top-level
7     directory, or at http://opensource.org/licenses/BSD-3-Clause
8 
9 */
10 
11 #include "FLAME.h"
12 
13 //
14 // Level-3 BLAS
15 //
16 
FLA_Cntl_gemm_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scal_t * sub_scal,fla_gemm_t * sub_gemm)17 fla_gemm_t* FLA_Cntl_gemm_obj_create( FLA_Matrix_type  matrix_type,
18                                       int              variant,
19                                       fla_blocksize_t* blocksize,
20                                       fla_scal_t*      sub_scal,
21                                       fla_gemm_t*      sub_gemm )
22 {
23 	fla_gemm_t* cntl;
24 
25 	cntl = ( fla_gemm_t* ) FLA_malloc( sizeof(fla_gemm_t) );
26 
27 	cntl->matrix_type = matrix_type;
28 	cntl->variant     = variant;
29 	cntl->blocksize   = blocksize;
30 	cntl->sub_scal    = sub_scal;
31 	cntl->sub_gemm    = sub_gemm;
32 
33 	return cntl;
34 }
35 
FLA_Cntl_hemm_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scal_t * sub_scal,fla_hemm_t * sub_hemm,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2)36 fla_hemm_t* FLA_Cntl_hemm_obj_create( FLA_Matrix_type  matrix_type,
37                                       int              variant,
38                                       fla_blocksize_t* blocksize,
39                                       fla_scal_t*      sub_scal,
40                                       fla_hemm_t*      sub_hemm,
41                                       fla_gemm_t*      sub_gemm1,
42                                       fla_gemm_t*      sub_gemm2 )
43 {
44 	fla_hemm_t* cntl;
45 
46 	cntl = ( fla_hemm_t* ) FLA_malloc( sizeof(fla_hemm_t) );
47 
48 	cntl->matrix_type = matrix_type;
49 	cntl->variant     = variant;
50 	cntl->blocksize   = blocksize;
51 	cntl->sub_scal    = sub_scal;
52 	cntl->sub_hemm    = sub_hemm;
53 	cntl->sub_gemm1   = sub_gemm1;
54 	cntl->sub_gemm2   = sub_gemm2;
55 
56 	return cntl;
57 }
58 
FLA_Cntl_herk_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scalr_t * sub_scalr,fla_herk_t * sub_herk,fla_gemm_t * sub_gemm)59 fla_herk_t* FLA_Cntl_herk_obj_create( FLA_Matrix_type  matrix_type,
60                                       int              variant,
61                                       fla_blocksize_t* blocksize,
62                                       fla_scalr_t*     sub_scalr,
63                                       fla_herk_t*      sub_herk,
64                                       fla_gemm_t*      sub_gemm )
65 {
66 	fla_herk_t* cntl;
67 
68 	cntl = ( fla_herk_t* ) FLA_malloc( sizeof(fla_herk_t) );
69 
70 	cntl->matrix_type = matrix_type;
71 	cntl->variant     = variant;
72 	cntl->blocksize   = blocksize;
73 	cntl->sub_scalr   = sub_scalr;
74 	cntl->sub_herk    = sub_herk;
75 	cntl->sub_gemm    = sub_gemm;
76 
77 	return cntl;
78 }
79 
FLA_Cntl_her2k_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scalr_t * sub_scalr,fla_her2k_t * sub_her2k,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2)80 fla_her2k_t* FLA_Cntl_her2k_obj_create( FLA_Matrix_type  matrix_type,
81                                         int              variant,
82                                         fla_blocksize_t* blocksize,
83                                         fla_scalr_t*     sub_scalr,
84                                         fla_her2k_t*     sub_her2k,
85                                         fla_gemm_t*      sub_gemm1,
86                                         fla_gemm_t*      sub_gemm2 )
87 {
88 	fla_her2k_t* cntl;
89 
90 	cntl = ( fla_her2k_t* ) FLA_malloc( sizeof(fla_her2k_t) );
91 
92 	cntl->matrix_type = matrix_type;
93 	cntl->variant     = variant;
94 	cntl->blocksize   = blocksize;
95 	cntl->sub_scalr   = sub_scalr;
96 	cntl->sub_her2k   = sub_her2k;
97 	cntl->sub_gemm1   = sub_gemm1;
98 	cntl->sub_gemm2   = sub_gemm2;
99 
100 	return cntl;
101 }
102 
FLA_Cntl_symm_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scal_t * sub_scal,fla_symm_t * sub_symm,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2)103 fla_symm_t* FLA_Cntl_symm_obj_create( FLA_Matrix_type  matrix_type,
104                                       int              variant,
105                                       fla_blocksize_t* blocksize,
106                                       fla_scal_t*      sub_scal,
107                                       fla_symm_t*      sub_symm,
108                                       fla_gemm_t*      sub_gemm1,
109                                       fla_gemm_t*      sub_gemm2 )
110 {
111 	fla_symm_t* cntl;
112 
113 	cntl = ( fla_symm_t* ) FLA_malloc( sizeof(fla_symm_t) );
114 
115 	cntl->matrix_type = matrix_type;
116 	cntl->variant     = variant;
117 	cntl->blocksize   = blocksize;
118 	cntl->sub_scal    = sub_scal;
119 	cntl->sub_symm    = sub_symm;
120 	cntl->sub_gemm1   = sub_gemm1;
121 	cntl->sub_gemm2   = sub_gemm2;
122 
123 	return cntl;
124 }
125 
FLA_Cntl_syrk_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scalr_t * sub_scalr,fla_syrk_t * sub_syrk,fla_gemm_t * sub_gemm)126 fla_syrk_t* FLA_Cntl_syrk_obj_create( FLA_Matrix_type  matrix_type,
127                                       int              variant,
128                                       fla_blocksize_t* blocksize,
129                                       fla_scalr_t*     sub_scalr,
130                                       fla_syrk_t*      sub_syrk,
131                                       fla_gemm_t*      sub_gemm )
132 {
133 	fla_syrk_t* cntl;
134 
135 	cntl = ( fla_syrk_t* ) FLA_malloc( sizeof(fla_syrk_t) );
136 
137 	cntl->matrix_type = matrix_type;
138 	cntl->variant     = variant;
139 	cntl->blocksize   = blocksize;
140 	cntl->sub_scalr   = sub_scalr;
141 	cntl->sub_syrk    = sub_syrk;
142 	cntl->sub_gemm    = sub_gemm;
143 
144 	return cntl;
145 }
146 
FLA_Cntl_syr2k_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scalr_t * sub_scalr,fla_syr2k_t * sub_syr2k,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2)147 fla_syr2k_t* FLA_Cntl_syr2k_obj_create( FLA_Matrix_type  matrix_type,
148                                         int              variant,
149                                         fla_blocksize_t* blocksize,
150                                         fla_scalr_t*     sub_scalr,
151                                         fla_syr2k_t*     sub_syr2k,
152                                         fla_gemm_t*      sub_gemm1,
153                                         fla_gemm_t*      sub_gemm2 )
154 {
155 	fla_syr2k_t* cntl;
156 
157 	cntl = ( fla_syr2k_t* ) FLA_malloc( sizeof(fla_syr2k_t) );
158 
159 	cntl->matrix_type = matrix_type;
160 	cntl->variant     = variant;
161 	cntl->blocksize   = blocksize;
162 	cntl->sub_scalr   = sub_scalr;
163 	cntl->sub_syr2k   = sub_syr2k;
164 	cntl->sub_gemm1   = sub_gemm1;
165 	cntl->sub_gemm2   = sub_gemm2;
166 
167 	return cntl;
168 }
169 
FLA_Cntl_trmm_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scal_t * sub_scal,fla_trmm_t * sub_trmm,fla_gemm_t * sub_gemm)170 fla_trmm_t* FLA_Cntl_trmm_obj_create( FLA_Matrix_type  matrix_type,
171                                       int              variant,
172                                       fla_blocksize_t* blocksize,
173                                       fla_scal_t*      sub_scal,
174                                       fla_trmm_t*      sub_trmm,
175                                       fla_gemm_t*      sub_gemm )
176 {
177 	fla_trmm_t* cntl;
178 
179 	cntl = ( fla_trmm_t* ) FLA_malloc( sizeof(fla_trmm_t) );
180 
181 	cntl->matrix_type = matrix_type;
182 	cntl->variant     = variant;
183 	cntl->blocksize   = blocksize;
184 	cntl->sub_scal    = sub_scal;
185 	cntl->sub_trmm    = sub_trmm;
186 	cntl->sub_gemm    = sub_gemm;
187 
188 	return cntl;
189 }
190 
FLA_Cntl_trsm_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scal_t * sub_scal,fla_trsm_t * sub_trsm,fla_gemm_t * sub_gemm)191 fla_trsm_t* FLA_Cntl_trsm_obj_create( FLA_Matrix_type  matrix_type,
192                                       int              variant,
193                                       fla_blocksize_t* blocksize,
194                                       fla_scal_t*      sub_scal,
195                                       fla_trsm_t*      sub_trsm,
196                                       fla_gemm_t*      sub_gemm )
197 {
198 	fla_trsm_t* cntl;
199 
200 	cntl = ( fla_trsm_t* ) FLA_malloc( sizeof(fla_trsm_t) );
201 
202 	cntl->matrix_type = matrix_type;
203 	cntl->variant     = variant;
204 	cntl->blocksize   = blocksize;
205 	cntl->sub_scal    = sub_scal;
206 	cntl->sub_trsm    = sub_trsm;
207 	cntl->sub_gemm    = sub_gemm;
208 
209 	return cntl;
210 }
211 
212