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 // LAPACK-level
15 //
16 
FLA_Cntl_chol_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_chol_t * sub_chol,fla_herk_t * sub_herk,fla_trsm_t * sub_trsm,fla_gemm_t * sub_gemm)17 fla_chol_t* FLA_Cntl_chol_obj_create( FLA_Matrix_type  matrix_type,
18                                       int              variant,
19                                       fla_blocksize_t* blocksize,
20                                       fla_chol_t*      sub_chol,
21                                       fla_herk_t*      sub_herk,
22                                       fla_trsm_t*      sub_trsm,
23                                       fla_gemm_t*      sub_gemm )
24 {
25 	fla_chol_t* cntl;
26 
27 	cntl = ( fla_chol_t* ) FLA_malloc( sizeof(fla_chol_t) );
28 
29 	cntl->matrix_type = matrix_type;
30 	cntl->variant     = variant;
31 	cntl->blocksize   = blocksize;
32 	cntl->sub_chol    = sub_chol;
33 	cntl->sub_herk    = sub_herk;
34 	cntl->sub_trsm    = sub_trsm;
35 	cntl->sub_gemm    = sub_gemm;
36 
37 	return cntl;
38 }
39 
FLA_Cntl_lu_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_lu_t * sub_lu,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_gemm_t * sub_gemm3,fla_trsm_t * sub_trsm1,fla_trsm_t * sub_trsm2,fla_appiv_t * sub_appiv1,fla_appiv_t * sub_appiv2)40 fla_lu_t* FLA_Cntl_lu_obj_create( FLA_Matrix_type  matrix_type,
41                                   int              variant,
42                                   fla_blocksize_t* blocksize,
43                                   fla_lu_t*        sub_lu,
44                                   fla_gemm_t*      sub_gemm1,
45                                   fla_gemm_t*      sub_gemm2,
46                                   fla_gemm_t*      sub_gemm3,
47                                   fla_trsm_t*      sub_trsm1,
48                                   fla_trsm_t*      sub_trsm2,
49                                   fla_appiv_t*     sub_appiv1,
50                                   fla_appiv_t*     sub_appiv2 )
51 {
52 	fla_lu_t* cntl;
53 
54 	cntl = ( fla_lu_t* ) FLA_malloc( sizeof(fla_lu_t) );
55 
56 	cntl->matrix_type = matrix_type;
57 	cntl->variant     = variant;
58 	cntl->blocksize   = blocksize;
59 	cntl->sub_lu      = sub_lu;
60 	cntl->sub_gemm1   = sub_gemm1;
61 	cntl->sub_gemm2   = sub_gemm2;
62 	cntl->sub_gemm3   = sub_gemm3;
63 	cntl->sub_trsm1   = sub_trsm1;
64 	cntl->sub_trsm2   = sub_trsm2;
65 	cntl->sub_appiv1  = sub_appiv1;
66 	cntl->sub_appiv2  = sub_appiv2;
67 
68 	return cntl;
69 }
70 
71 
FLA_Cntl_appiv_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_appiv_t * sub_appiv)72 fla_appiv_t* FLA_Cntl_appiv_obj_create( FLA_Matrix_type  matrix_type,
73                                         int              variant,
74                                         fla_blocksize_t* blocksize,
75                                         fla_appiv_t*     sub_appiv )
76 {
77 	fla_appiv_t* cntl;
78 
79 	cntl = ( fla_appiv_t* ) FLA_malloc( sizeof(fla_appiv_t) );
80 
81 	cntl->matrix_type = matrix_type;
82 	cntl->variant     = variant;
83 	cntl->blocksize   = blocksize;
84 	cntl->sub_appiv   = sub_appiv;
85 
86 	return cntl;
87 }
88 
89 
FLA_Cntl_qrut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_qrut_t * sub_qrut,fla_apqut_t * sub_apqut)90 fla_qrut_t* FLA_Cntl_qrut_obj_create( FLA_Matrix_type  matrix_type,
91                                       int              variant,
92                                       fla_blocksize_t* blocksize,
93                                       fla_qrut_t*      sub_qrut,
94                                       fla_apqut_t*     sub_apqut )
95 {
96 	fla_qrut_t* cntl;
97 
98 	cntl = ( fla_qrut_t* ) FLA_malloc( sizeof(fla_qrut_t) );
99 
100 	cntl->matrix_type = matrix_type;
101 	cntl->variant     = variant;
102 	cntl->blocksize   = blocksize;
103 	cntl->sub_qrut    = sub_qrut;
104 	cntl->sub_apqut   = sub_apqut;
105 
106 	return cntl;
107 }
108 
FLA_Cntl_qr2ut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_qr2ut_t * sub_qr2ut,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_trsm_t * sub_trsm,fla_copy_t * sub_copy,fla_axpy_t * sub_axpy)109 fla_qr2ut_t* FLA_Cntl_qr2ut_obj_create( FLA_Matrix_type  matrix_type,
110                                         int              variant,
111                                         fla_blocksize_t* blocksize,
112                                         fla_qr2ut_t*     sub_qr2ut,
113                                         fla_gemm_t*      sub_gemm1,
114                                         fla_gemm_t*      sub_gemm2,
115                                         fla_trsm_t*      sub_trsm,
116                                         fla_copy_t*      sub_copy,
117                                         fla_axpy_t*      sub_axpy )
118 {
119 	fla_qr2ut_t* cntl;
120 
121 	cntl = ( fla_qr2ut_t* ) FLA_malloc( sizeof(fla_qr2ut_t) );
122 
123 	cntl->matrix_type = matrix_type;
124 	cntl->variant     = variant;
125 	cntl->blocksize   = blocksize;
126 	cntl->sub_qr2ut   = sub_qr2ut;
127 	cntl->sub_gemm1   = sub_gemm1;
128 	cntl->sub_gemm2   = sub_gemm2;
129 	cntl->sub_trsm    = sub_trsm ;
130 	cntl->sub_copy    = sub_copy ;
131 	cntl->sub_axpy    = sub_axpy ;
132 
133 	return cntl;
134 }
135 
FLA_Cntl_qrutinc_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_qrut_t * sub_qrut,fla_apqut_t * sub_apqut,fla_qr2ut_t * sub_qr2ut,fla_apq2ut_t * sub_apq2ut)136 fla_qrutinc_t* FLA_Cntl_qrutinc_obj_create( FLA_Matrix_type  matrix_type,
137                                             int              variant,
138                                             fla_blocksize_t* blocksize,
139                                             fla_qrut_t*      sub_qrut,
140                                             fla_apqut_t*     sub_apqut,
141                                             fla_qr2ut_t*     sub_qr2ut,
142                                             fla_apq2ut_t*    sub_apq2ut )
143 {
144 	fla_qrutinc_t* cntl;
145 
146 	cntl = ( fla_qrutinc_t* ) FLA_malloc( sizeof(fla_qrutinc_t) );
147 
148 	cntl->matrix_type = matrix_type;
149 	cntl->variant     = variant;
150 	cntl->blocksize   = blocksize;
151 	cntl->sub_qrut    = sub_qrut;
152 	cntl->sub_apqut   = sub_apqut;
153 	cntl->sub_qr2ut   = sub_qr2ut;
154 	cntl->sub_apq2ut  = sub_apq2ut;
155 
156 	return cntl;
157 }
158 
FLA_Cntl_caqrutinc_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_caqr2ut_t * sub_caqr2ut,fla_apcaq2ut_t * sub_apcaq2ut)159 fla_caqrutinc_t* FLA_Cntl_caqrutinc_obj_create( FLA_Matrix_type  matrix_type,
160                                                 int              variant,
161                                                 fla_blocksize_t* blocksize,
162                                                 fla_caqr2ut_t*   sub_caqr2ut,
163                                                 fla_apcaq2ut_t*  sub_apcaq2ut )
164 {
165 	fla_caqrutinc_t* cntl;
166 
167 	cntl = ( fla_caqrutinc_t* ) FLA_malloc( sizeof(fla_caqrutinc_t) );
168 
169 	cntl->matrix_type  = matrix_type;
170 	cntl->variant      = variant;
171 	cntl->blocksize    = blocksize;
172 	cntl->sub_caqr2ut  = sub_caqr2ut;
173 	cntl->sub_apcaq2ut = sub_apcaq2ut;
174 
175 	return cntl;
176 }
177 
FLA_Cntl_lqut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_lqut_t * sub_lqut,fla_apqut_t * sub_apqut)178 fla_lqut_t* FLA_Cntl_lqut_obj_create( FLA_Matrix_type  matrix_type,
179                                       int              variant,
180                                       fla_blocksize_t* blocksize,
181                                       fla_lqut_t*      sub_lqut,
182                                       fla_apqut_t*     sub_apqut )
183 {
184 	fla_lqut_t* cntl;
185 
186 	cntl = ( fla_lqut_t* ) FLA_malloc( sizeof(fla_lqut_t) );
187 
188 	cntl->matrix_type = matrix_type;
189 	cntl->variant     = variant;
190 	cntl->blocksize   = blocksize;
191 	cntl->sub_lqut    = sub_lqut;
192 	cntl->sub_apqut   = sub_apqut;
193 
194 	return cntl;
195 }
196 
FLA_Cntl_caqr2ut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_caqr2ut_t * sub_caqr2ut,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_trmm_t * sub_trmm1,fla_trmm_t * sub_trmm2,fla_trsm_t * sub_trsm,fla_axpy_t * sub_axpy1,fla_axpy_t * sub_axpy2,fla_axpy_t * sub_axpy3,fla_copy_t * sub_copy)197 fla_caqr2ut_t* FLA_Cntl_caqr2ut_obj_create( FLA_Matrix_type  matrix_type,
198                                             int              variant,
199                                             fla_blocksize_t* blocksize,
200                                             fla_caqr2ut_t*   sub_caqr2ut,
201                                             fla_gemm_t*      sub_gemm1,
202                                             fla_gemm_t*      sub_gemm2,
203                                             fla_trmm_t*      sub_trmm1,
204                                             fla_trmm_t*      sub_trmm2,
205                                             fla_trsm_t*      sub_trsm,
206                                             fla_axpy_t*      sub_axpy1,
207                                             fla_axpy_t*      sub_axpy2,
208                                             fla_axpy_t*      sub_axpy3,
209                                             fla_copy_t*      sub_copy )
210 {
211 	fla_caqr2ut_t* cntl;
212 
213 	cntl = ( fla_caqr2ut_t* ) FLA_malloc( sizeof(fla_caqr2ut_t) );
214 
215 	cntl->matrix_type = matrix_type;
216 	cntl->variant     = variant;
217 	cntl->blocksize   = blocksize;
218 	cntl->sub_caqr2ut = sub_caqr2ut;
219 	cntl->sub_gemm1   = sub_gemm1;
220 	cntl->sub_gemm2   = sub_gemm2;
221 	cntl->sub_trmm1   = sub_trmm1;
222 	cntl->sub_trmm2   = sub_trmm2;
223 	cntl->sub_trsm    = sub_trsm ;
224 	cntl->sub_axpy1   = sub_axpy1;
225 	cntl->sub_axpy2   = sub_axpy2;
226 	cntl->sub_axpy3   = sub_axpy3;
227 	cntl->sub_copy    = sub_copy ;
228 
229 	return cntl;
230 }
231 
FLA_Cntl_hessut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize)232 fla_hessut_t* FLA_Cntl_hessut_obj_create( FLA_Matrix_type  matrix_type,
233                                           int              variant,
234                                           fla_blocksize_t* blocksize )
235 {
236 	fla_hessut_t* cntl;
237 
238 	cntl = ( fla_hessut_t* ) FLA_malloc( sizeof(fla_hessut_t) );
239 
240 	cntl->matrix_type = matrix_type;
241 	cntl->variant     = variant;
242 	cntl->blocksize   = blocksize;
243 
244 	return cntl;
245 }
246 
FLA_Cntl_tridiagut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize)247 fla_tridiagut_t* FLA_Cntl_tridiagut_obj_create( FLA_Matrix_type  matrix_type,
248                                                 int              variant,
249                                                 fla_blocksize_t* blocksize )
250 {
251 	fla_tridiagut_t* cntl;
252 
253 	cntl = ( fla_tridiagut_t* ) FLA_malloc( sizeof(fla_tridiagut_t) );
254 
255 	cntl->matrix_type = matrix_type;
256 	cntl->variant     = variant;
257 	cntl->blocksize   = blocksize;
258 
259 	return cntl;
260 }
261 
FLA_Cntl_bidiagut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize)262 fla_bidiagut_t* FLA_Cntl_bidiagut_obj_create( FLA_Matrix_type  matrix_type,
263                                               int              variant,
264                                               fla_blocksize_t* blocksize )
265 {
266 	fla_bidiagut_t* cntl;
267 
268 	cntl = ( fla_bidiagut_t* ) FLA_malloc( sizeof(fla_bidiagut_t) );
269 
270 	cntl->matrix_type = matrix_type;
271 	cntl->variant     = variant;
272 	cntl->blocksize   = blocksize;
273 
274 	return cntl;
275 }
276 
FLA_Cntl_trinv_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_trinv_t * sub_trinv,fla_trmm_t * sub_trmm,fla_trsm_t * sub_trsm1,fla_trsm_t * sub_trsm2,fla_gemm_t * sub_gemm)277 fla_trinv_t* FLA_Cntl_trinv_obj_create( FLA_Matrix_type  matrix_type,
278                                         int              variant,
279                                         fla_blocksize_t* blocksize,
280                                         fla_trinv_t*     sub_trinv,
281                                         fla_trmm_t*      sub_trmm,
282                                         fla_trsm_t*      sub_trsm1,
283                                         fla_trsm_t*      sub_trsm2,
284                                         fla_gemm_t*      sub_gemm )
285 {
286 	fla_trinv_t* cntl;
287 
288 	cntl = ( fla_trinv_t* ) FLA_malloc( sizeof(fla_trinv_t) );
289 
290 	cntl->matrix_type = matrix_type;
291 	cntl->variant     = variant;
292 	cntl->blocksize   = blocksize;
293 	cntl->sub_trinv   = sub_trinv;
294 	cntl->sub_trmm    = sub_trmm;
295 	cntl->sub_trsm1   = sub_trsm1;
296 	cntl->sub_trsm2   = sub_trsm2;
297 	cntl->sub_gemm    = sub_gemm;
298 
299 	return cntl;
300 }
301 
FLA_Cntl_ttmm_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_ttmm_t * sub_ttmm,fla_herk_t * sub_herk,fla_trmm_t * sub_trmm,fla_gemm_t * sub_gemm)302 fla_ttmm_t* FLA_Cntl_ttmm_obj_create( FLA_Matrix_type  matrix_type,
303                                       int              variant,
304                                       fla_blocksize_t* blocksize,
305                                       fla_ttmm_t*      sub_ttmm,
306                                       fla_herk_t*      sub_herk,
307                                       fla_trmm_t*      sub_trmm,
308                                       fla_gemm_t*      sub_gemm )
309 {
310 	fla_ttmm_t* cntl;
311 
312 	cntl = ( fla_ttmm_t* ) FLA_malloc( sizeof(fla_ttmm_t) );
313 
314 	cntl->matrix_type = matrix_type;
315 	cntl->variant     = variant;
316 	cntl->blocksize   = blocksize;
317 	cntl->sub_ttmm    = sub_ttmm;
318 	cntl->sub_herk    = sub_herk;
319 	cntl->sub_trmm    = sub_trmm;
320 	cntl->sub_gemm    = sub_gemm;
321 
322 	return cntl;
323 }
324 
FLA_Cntl_uddateut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_uddateut_t * sub_uddateut,fla_apqudut_t * sub_apqudut)325 fla_uddateut_t* FLA_Cntl_uddateut_obj_create( FLA_Matrix_type  matrix_type,
326                                               int              variant,
327                                               fla_blocksize_t* blocksize,
328                                               fla_uddateut_t*  sub_uddateut,
329                                               fla_apqudut_t*   sub_apqudut )
330 {
331 	fla_uddateut_t* cntl;
332 
333 	cntl = ( fla_uddateut_t* ) FLA_malloc( sizeof(fla_uddateut_t) );
334 
335 	cntl->matrix_type  = matrix_type;
336 	cntl->variant      = variant;
337 	cntl->blocksize    = blocksize;
338 	cntl->sub_uddateut = sub_uddateut;
339 	cntl->sub_apqudut  = sub_apqudut;
340 
341 	return cntl;
342 }
343 
FLA_Cntl_uddateutinc_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_uddateut_t * sub_uddateut,fla_apqudut_t * sub_apqudut)344 fla_uddateutinc_t* FLA_Cntl_uddateutinc_obj_create( FLA_Matrix_type  matrix_type,
345                                                     int              variant,
346                                                     fla_blocksize_t* blocksize,
347                                                     fla_uddateut_t*  sub_uddateut,
348                                                     fla_apqudut_t*   sub_apqudut )
349 {
350 	fla_uddateutinc_t* cntl;
351 
352 	cntl = ( fla_uddateutinc_t* ) FLA_malloc( sizeof(fla_uddateutinc_t) );
353 
354 	cntl->matrix_type  = matrix_type;
355 	cntl->variant      = variant;
356 	cntl->blocksize    = blocksize;
357 	cntl->sub_uddateut = sub_uddateut;
358 	cntl->sub_apqudut  = sub_apqudut;
359 
360 	return cntl;
361 }
362 
FLA_Cntl_apqudutinc_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_apqudut_t * sub_apqudut)363 fla_apqudutinc_t* FLA_Cntl_apqudutinc_obj_create( FLA_Matrix_type  matrix_type,
364                                                   int              variant,
365                                                   fla_blocksize_t* blocksize,
366                                                   fla_apqudut_t*   sub_apqudut )
367 {
368 	fla_apqudutinc_t* cntl;
369 
370 	cntl = ( fla_apqudutinc_t* ) FLA_malloc( sizeof(fla_apqudutinc_t) );
371 
372 	cntl->matrix_type  = matrix_type;
373 	cntl->variant      = variant;
374 	cntl->blocksize    = blocksize;
375 	cntl->sub_apqudut  = sub_apqudut;
376 
377 	return cntl;
378 }
379 
FLA_Cntl_sylv_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_sylv_t * sub_sylv1,fla_sylv_t * sub_sylv2,fla_sylv_t * sub_sylv3,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_gemm_t * sub_gemm3,fla_gemm_t * sub_gemm4,fla_gemm_t * sub_gemm5,fla_gemm_t * sub_gemm6,fla_gemm_t * sub_gemm7,fla_gemm_t * sub_gemm8)380 fla_sylv_t* FLA_Cntl_sylv_obj_create( FLA_Matrix_type  matrix_type,
381                                       int              variant,
382                                       fla_blocksize_t* blocksize,
383                                       fla_sylv_t*      sub_sylv1,
384                                       fla_sylv_t*      sub_sylv2,
385                                       fla_sylv_t*      sub_sylv3,
386                                       fla_gemm_t*      sub_gemm1,
387                                       fla_gemm_t*      sub_gemm2,
388                                       fla_gemm_t*      sub_gemm3,
389                                       fla_gemm_t*      sub_gemm4,
390                                       fla_gemm_t*      sub_gemm5,
391                                       fla_gemm_t*      sub_gemm6,
392                                       fla_gemm_t*      sub_gemm7,
393                                       fla_gemm_t*      sub_gemm8 )
394 {
395 	fla_sylv_t* cntl;
396 
397 	cntl = ( fla_sylv_t* ) FLA_malloc( sizeof(fla_sylv_t) );
398 
399 	cntl->matrix_type = matrix_type;
400 	cntl->variant     = variant;
401 	cntl->blocksize   = blocksize;
402 	cntl->sub_sylv1   = sub_sylv1;
403 	cntl->sub_sylv2   = sub_sylv2;
404 	cntl->sub_sylv3   = sub_sylv3;
405 	cntl->sub_gemm1   = sub_gemm1;
406 	cntl->sub_gemm2   = sub_gemm2;
407 	cntl->sub_gemm3   = sub_gemm3;
408 	cntl->sub_gemm4   = sub_gemm4;
409 	cntl->sub_gemm5   = sub_gemm5;
410 	cntl->sub_gemm6   = sub_gemm6;
411 	cntl->sub_gemm7   = sub_gemm7;
412 	cntl->sub_gemm8   = sub_gemm8;
413 
414 	return cntl;
415 }
416 
FLA_Cntl_lyap_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_scal_t * sub_scal,fla_lyap_t * sub_lyap,fla_sylv_t * sub_sylv,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_hemm_t * sub_hemm,fla_her2k_t * sub_her2k)417 fla_lyap_t* FLA_Cntl_lyap_obj_create( FLA_Matrix_type  matrix_type,
418                                       int              variant,
419                                       fla_blocksize_t* blocksize,
420                                       fla_scal_t*      sub_scal,
421                                       fla_lyap_t*      sub_lyap,
422                                       fla_sylv_t*      sub_sylv,
423                                       fla_gemm_t*      sub_gemm1,
424                                       fla_gemm_t*      sub_gemm2,
425                                       fla_hemm_t*      sub_hemm,
426                                       fla_her2k_t*     sub_her2k )
427 {
428 	fla_lyap_t* cntl;
429 
430 	cntl = ( fla_lyap_t* ) FLA_malloc( sizeof(fla_lyap_t) );
431 
432 	cntl->matrix_type = matrix_type;
433 	cntl->variant     = variant;
434 	cntl->blocksize   = blocksize;
435 	cntl->sub_scal    = sub_scal;
436 	cntl->sub_lyap    = sub_lyap;
437 	cntl->sub_sylv    = sub_sylv;
438 	cntl->sub_gemm1   = sub_gemm1;
439 	cntl->sub_gemm2   = sub_gemm2;
440 	cntl->sub_hemm    = sub_hemm;
441 	cntl->sub_her2k   = sub_her2k;
442 
443 	return cntl;
444 }
445 
FLA_Cntl_spdinv_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_chol_t * sub_chol,fla_trinv_t * sub_trinv,fla_ttmm_t * sub_ttmm)446 fla_spdinv_t* FLA_Cntl_spdinv_obj_create( FLA_Matrix_type  matrix_type,
447                                           int              variant,
448                                           fla_blocksize_t* blocksize,
449                                           fla_chol_t*      sub_chol,
450                                           fla_trinv_t*     sub_trinv,
451                                           fla_ttmm_t*      sub_ttmm )
452 {
453 	fla_spdinv_t* cntl;
454 
455 	cntl = ( fla_spdinv_t* ) FLA_malloc( sizeof(fla_spdinv_t) );
456 
457 	cntl->matrix_type = matrix_type;
458 	cntl->variant     = variant;
459 	cntl->blocksize   = blocksize;
460 	cntl->sub_chol    = sub_chol;
461 	cntl->sub_trinv   = sub_trinv;
462 	cntl->sub_ttmm    = sub_ttmm;
463 
464 	return cntl;
465 }
466 
FLA_Cntl_apqut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_apqut_t * sub_apqut,fla_trmm_t * sub_trmm1,fla_trmm_t * sub_trmm2,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_trsm_t * sub_trsm,fla_copyt_t * sub_copyt,fla_axpyt_t * sub_axpyt)467 fla_apqut_t* FLA_Cntl_apqut_obj_create( FLA_Matrix_type  matrix_type,
468                                         int              variant,
469                                         fla_blocksize_t* blocksize,
470                                         fla_apqut_t*     sub_apqut,
471                                         fla_trmm_t*      sub_trmm1,
472                                         fla_trmm_t*      sub_trmm2,
473                                         fla_gemm_t*      sub_gemm1,
474                                         fla_gemm_t*      sub_gemm2,
475                                         fla_trsm_t*      sub_trsm,
476                                         fla_copyt_t*     sub_copyt,
477                                         fla_axpyt_t*     sub_axpyt )
478 {
479 	fla_apqut_t* cntl;
480 
481 	cntl = ( fla_apqut_t* ) FLA_malloc( sizeof(fla_apqut_t) );
482 
483 	cntl->matrix_type = matrix_type;
484 	cntl->variant     = variant;
485 	cntl->blocksize   = blocksize;
486 	cntl->sub_apqut   = sub_apqut;
487 	cntl->sub_trmm1   = sub_trmm1;
488 	cntl->sub_trmm2   = sub_trmm2;
489 	cntl->sub_gemm1   = sub_gemm1;
490 	cntl->sub_gemm2   = sub_gemm2;
491 	cntl->sub_trsm    = sub_trsm;
492 	cntl->sub_copyt   = sub_copyt;
493 	cntl->sub_axpyt   = sub_axpyt;
494 
495 	return cntl;
496 }
497 
FLA_Cntl_apq2ut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_apq2ut_t * sub_apq2ut,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_trsm_t * sub_trsm,fla_copyt_t * sub_copyt,fla_axpyt_t * sub_axpyt)498 fla_apq2ut_t* FLA_Cntl_apq2ut_obj_create( FLA_Matrix_type  matrix_type,
499                                           int              variant,
500                                           fla_blocksize_t* blocksize,
501                                           fla_apq2ut_t*    sub_apq2ut,
502                                           fla_gemm_t*      sub_gemm1,
503                                           fla_gemm_t*      sub_gemm2,
504                                           fla_trsm_t*      sub_trsm,
505                                           fla_copyt_t*     sub_copyt,
506                                           fla_axpyt_t*     sub_axpyt )
507 {
508 	fla_apq2ut_t* cntl;
509 
510 	cntl = ( fla_apq2ut_t* ) FLA_malloc( sizeof(fla_apq2ut_t) );
511 
512 	cntl->matrix_type = matrix_type;
513 	cntl->variant     = variant;
514 	cntl->blocksize   = blocksize;
515 	cntl->sub_apq2ut  = sub_apq2ut;
516 	cntl->sub_gemm1   = sub_gemm1;
517 	cntl->sub_gemm2   = sub_gemm2;
518 	cntl->sub_trsm    = sub_trsm;
519 	cntl->sub_copyt   = sub_copyt;
520 	cntl->sub_axpyt   = sub_axpyt;
521 
522 	return cntl;
523 }
524 
FLA_Cntl_apcaq2ut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_apcaq2ut_t * sub_apcaq2ut,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_trmm_t * sub_trmm1,fla_trmm_t * sub_trmm2,fla_trsm_t * sub_trsm,fla_axpy_t * sub_axpy1,fla_axpy_t * sub_axpy2,fla_axpy_t * sub_axpy3,fla_copy_t * sub_copy)525 fla_apcaq2ut_t* FLA_Cntl_apcaq2ut_obj_create( FLA_Matrix_type  matrix_type,
526                                               int              variant,
527                                               fla_blocksize_t* blocksize,
528                                               fla_apcaq2ut_t*  sub_apcaq2ut,
529                                               fla_gemm_t*      sub_gemm1,
530                                               fla_gemm_t*      sub_gemm2,
531                                               fla_trmm_t*      sub_trmm1,
532                                               fla_trmm_t*      sub_trmm2,
533                                               fla_trsm_t*      sub_trsm,
534                                               fla_axpy_t*      sub_axpy1,
535                                               fla_axpy_t*      sub_axpy2,
536                                               fla_axpy_t*      sub_axpy3,
537                                               fla_copy_t*      sub_copy )
538 {
539 	fla_apcaq2ut_t* cntl;
540 
541 	cntl = ( fla_apcaq2ut_t* ) FLA_malloc( sizeof(fla_apcaq2ut_t) );
542 
543 	cntl->matrix_type  = matrix_type;
544 	cntl->variant      = variant;
545 	cntl->blocksize    = blocksize;
546 	cntl->sub_apcaq2ut = sub_apcaq2ut;
547 	cntl->sub_gemm1    = sub_gemm1;
548 	cntl->sub_gemm2    = sub_gemm2;
549 	cntl->sub_trmm1    = sub_trmm1;
550 	cntl->sub_trmm2    = sub_trmm2;
551 	cntl->sub_trsm     = sub_trsm;
552 	cntl->sub_axpy1    = sub_axpy1;
553 	cntl->sub_axpy2    = sub_axpy2;
554 	cntl->sub_axpy3    = sub_axpy3;
555 	cntl->sub_copy     = sub_copy;
556 
557 	return cntl;
558 }
559 
560 
FLA_Cntl_apqutinc_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_apqut_t * sub_apqut,fla_apq2ut_t * sub_apq2ut)561 fla_apqutinc_t* FLA_Cntl_apqutinc_obj_create( FLA_Matrix_type  matrix_type,
562                                               int              variant,
563                                               fla_blocksize_t* blocksize,
564                                               fla_apqut_t*     sub_apqut,
565                                               fla_apq2ut_t*    sub_apq2ut )
566 {
567 	fla_apqutinc_t* cntl;
568 
569 	cntl = ( fla_apqutinc_t* ) FLA_malloc( sizeof(fla_apqutinc_t) );
570 
571 	cntl->matrix_type = matrix_type;
572 	cntl->variant     = variant;
573 	cntl->blocksize   = blocksize;
574 	cntl->sub_apqut   = sub_apqut;
575 	cntl->sub_apq2ut  = sub_apq2ut;
576 
577 	return cntl;
578 }
579 
FLA_Cntl_apcaqutinc_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_apcaq2ut_t * sub_apcaq2ut)580 fla_apcaqutinc_t* FLA_Cntl_apcaqutinc_obj_create( FLA_Matrix_type  matrix_type,
581                                                   int              variant,
582                                                   fla_blocksize_t* blocksize,
583                                                   fla_apcaq2ut_t*  sub_apcaq2ut )
584 {
585 	fla_apcaqutinc_t* cntl;
586 
587 	cntl = ( fla_apcaqutinc_t* ) FLA_malloc( sizeof(fla_apcaqutinc_t) );
588 
589 	cntl->matrix_type  = matrix_type;
590 	cntl->variant      = variant;
591 	cntl->blocksize    = blocksize;
592 	cntl->sub_apcaq2ut = sub_apcaq2ut;
593 
594 	return cntl;
595 }
596 
FLA_Cntl_apqudut_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_apqudut_t * sub_apqudut,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_gemm_t * sub_gemm3,fla_gemm_t * sub_gemm4,fla_trsm_t * sub_trsm,fla_copyt_t * sub_copyt,fla_axpyt_t * sub_axpyt)597 fla_apqudut_t* FLA_Cntl_apqudut_obj_create( FLA_Matrix_type  matrix_type,
598                                             int              variant,
599                                             fla_blocksize_t* blocksize,
600                                             fla_apqudut_t*   sub_apqudut,
601                                             fla_gemm_t*      sub_gemm1,
602                                             fla_gemm_t*      sub_gemm2,
603                                             fla_gemm_t*      sub_gemm3,
604                                             fla_gemm_t*      sub_gemm4,
605                                             fla_trsm_t*      sub_trsm,
606                                             fla_copyt_t*     sub_copyt,
607                                             fla_axpyt_t*     sub_axpyt )
608 {
609 	fla_apqudut_t* cntl;
610 
611 	cntl = ( fla_apqudut_t* ) FLA_malloc( sizeof(fla_apqudut_t) );
612 
613 	cntl->matrix_type = matrix_type;
614 	cntl->variant     = variant;
615 	cntl->blocksize   = blocksize;
616 	cntl->sub_apqudut = sub_apqudut;
617 	cntl->sub_gemm1   = sub_gemm1;
618 	cntl->sub_gemm2   = sub_gemm2;
619 	cntl->sub_gemm3   = sub_gemm3;
620 	cntl->sub_gemm4   = sub_gemm4;
621 	cntl->sub_trsm    = sub_trsm;
622 	cntl->sub_copyt   = sub_copyt;
623 	cntl->sub_axpyt   = sub_axpyt;
624 
625 	return cntl;
626 }
627 
FLA_Cntl_eig_gest_obj_create(FLA_Matrix_type matrix_type,int variant,fla_blocksize_t * blocksize,fla_eig_gest_t * sub_eig_gest,fla_axpy_t * sub_axpy1,fla_axpy_t * sub_axpy2,fla_gemm_t * sub_gemm1,fla_gemm_t * sub_gemm2,fla_gemm_t * sub_gemm3,fla_hemm_t * sub_hemm,fla_her2k_t * sub_her2k,fla_trmm_t * sub_trmm1,fla_trmm_t * sub_trmm2,fla_trsm_t * sub_trsm1,fla_trsm_t * sub_trsm2)628 fla_eig_gest_t* FLA_Cntl_eig_gest_obj_create( FLA_Matrix_type  matrix_type,
629                                               int              variant,
630                                               fla_blocksize_t* blocksize,
631                                               fla_eig_gest_t*  sub_eig_gest,
632                                               fla_axpy_t*      sub_axpy1,
633                                               fla_axpy_t*      sub_axpy2,
634                                               fla_gemm_t*      sub_gemm1,
635                                               fla_gemm_t*      sub_gemm2,
636                                               fla_gemm_t*      sub_gemm3,
637                                               fla_hemm_t*      sub_hemm,
638                                               fla_her2k_t*     sub_her2k,
639                                               fla_trmm_t*      sub_trmm1,
640                                               fla_trmm_t*      sub_trmm2,
641                                               fla_trsm_t*      sub_trsm1,
642                                               fla_trsm_t*      sub_trsm2 )
643 {
644 	fla_eig_gest_t* cntl;
645 
646 	cntl = ( fla_eig_gest_t* ) FLA_malloc( sizeof(fla_eig_gest_t) );
647 
648 	cntl->matrix_type  = matrix_type;
649 	cntl->variant      = variant;
650 	cntl->blocksize    = blocksize;
651 	cntl->sub_eig_gest = sub_eig_gest;
652 	cntl->sub_axpy1    = sub_axpy1;
653 	cntl->sub_axpy2    = sub_axpy2;
654 	cntl->sub_gemm1    = sub_gemm1;
655 	cntl->sub_gemm2    = sub_gemm2;
656 	cntl->sub_gemm3    = sub_gemm3;
657 	cntl->sub_hemm     = sub_hemm;
658 	cntl->sub_her2k    = sub_her2k;
659 	cntl->sub_trmm1    = sub_trmm1;
660 	cntl->sub_trmm2    = sub_trmm2;
661 	cntl->sub_trsm1    = sub_trsm1;
662 	cntl->sub_trsm2    = sub_trsm2;
663 
664 	return cntl;
665 }
666 
667