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 // Shared definitions
12 
13 typedef struct FLA_Blocksize_s
14 {
15 	dim_t s;
16 	dim_t d;
17 	dim_t c;
18 	dim_t z;
19 } fla_blocksize_t;
20 
21 #define FLA_SUBPROBLEM                  0
22 #define FLA_UNBLOCKED_EXTERN           10
23 #define FLA_BLOCKED_EXTERN             13
24 
25 #define FLA_UNB_VAR_OFFSET             40
26 #define FLA_OPT_VAR_OFFSET             80
27 #define FLA_BLK_VAR_OFFSET            120
28 #define FLA_BLF_VAR_OFFSET            160
29 
30 #define FLA_UNBLOCKED_VARIANT1        (FLA_UNB_VAR_OFFSET+1)
31 #define FLA_UNBLOCKED_VARIANT2        (FLA_UNB_VAR_OFFSET+2)
32 #define FLA_UNBLOCKED_VARIANT3        (FLA_UNB_VAR_OFFSET+3)
33 #define FLA_UNBLOCKED_VARIANT4        (FLA_UNB_VAR_OFFSET+4)
34 #define FLA_UNBLOCKED_VARIANT5        (FLA_UNB_VAR_OFFSET+5)
35 #define FLA_UNBLOCKED_VARIANT6        (FLA_UNB_VAR_OFFSET+6)
36 #define FLA_UNBLOCKED_VARIANT7        (FLA_UNB_VAR_OFFSET+7)
37 #define FLA_UNBLOCKED_VARIANT8        (FLA_UNB_VAR_OFFSET+8)
38 #define FLA_UNBLOCKED_VARIANT9        (FLA_UNB_VAR_OFFSET+9)
39 #define FLA_UNBLOCKED_VARIANT10       (FLA_UNB_VAR_OFFSET+10)
40 
41 #define FLA_UNB_OPT_VARIANT1          (FLA_OPT_VAR_OFFSET+1)
42 #define FLA_UNB_OPT_VARIANT2          (FLA_OPT_VAR_OFFSET+2)
43 #define FLA_UNB_OPT_VARIANT3          (FLA_OPT_VAR_OFFSET+3)
44 #define FLA_UNB_OPT_VARIANT4          (FLA_OPT_VAR_OFFSET+4)
45 #define FLA_UNB_OPT_VARIANT5          (FLA_OPT_VAR_OFFSET+5)
46 #define FLA_UNB_OPT_VARIANT6          (FLA_OPT_VAR_OFFSET+6)
47 #define FLA_UNB_OPT_VARIANT7          (FLA_OPT_VAR_OFFSET+7)
48 #define FLA_UNB_OPT_VARIANT8          (FLA_OPT_VAR_OFFSET+8)
49 #define FLA_UNB_OPT_VARIANT9          (FLA_OPT_VAR_OFFSET+9)
50 #define FLA_UNB_OPT_VARIANT10         (FLA_OPT_VAR_OFFSET+10)
51 
52 #define FLA_BLOCKED_VARIANT1          (FLA_BLK_VAR_OFFSET+1)
53 #define FLA_BLOCKED_VARIANT2          (FLA_BLK_VAR_OFFSET+2)
54 #define FLA_BLOCKED_VARIANT3          (FLA_BLK_VAR_OFFSET+3)
55 #define FLA_BLOCKED_VARIANT4          (FLA_BLK_VAR_OFFSET+4)
56 #define FLA_BLOCKED_VARIANT5          (FLA_BLK_VAR_OFFSET+5)
57 #define FLA_BLOCKED_VARIANT6          (FLA_BLK_VAR_OFFSET+6)
58 #define FLA_BLOCKED_VARIANT7          (FLA_BLK_VAR_OFFSET+7)
59 #define FLA_BLOCKED_VARIANT8          (FLA_BLK_VAR_OFFSET+8)
60 #define FLA_BLOCKED_VARIANT9          (FLA_BLK_VAR_OFFSET+9)
61 #define FLA_BLOCKED_VARIANT10         (FLA_BLK_VAR_OFFSET+10)
62 #define FLA_BLOCKED_VARIANT11         (FLA_BLK_VAR_OFFSET+11)
63 #define FLA_BLOCKED_VARIANT12         (FLA_BLK_VAR_OFFSET+12)
64 #define FLA_BLOCKED_VARIANT13         (FLA_BLK_VAR_OFFSET+13)
65 #define FLA_BLOCKED_VARIANT14         (FLA_BLK_VAR_OFFSET+14)
66 #define FLA_BLOCKED_VARIANT15         (FLA_BLK_VAR_OFFSET+15)
67 #define FLA_BLOCKED_VARIANT16         (FLA_BLK_VAR_OFFSET+16)
68 #define FLA_BLOCKED_VARIANT17         (FLA_BLK_VAR_OFFSET+17)
69 #define FLA_BLOCKED_VARIANT18         (FLA_BLK_VAR_OFFSET+18)
70 #define FLA_BLOCKED_VARIANT19         (FLA_BLK_VAR_OFFSET+19)
71 #define FLA_BLOCKED_VARIANT20         (FLA_BLK_VAR_OFFSET+20)
72 
73 #define FLA_BLK_FUS_VARIANT1          (FLA_BLF_VAR_OFFSET+1)
74 #define FLA_BLK_FUS_VARIANT2          (FLA_BLF_VAR_OFFSET+2)
75 #define FLA_BLK_FUS_VARIANT3          (FLA_BLF_VAR_OFFSET+3)
76 #define FLA_BLK_FUS_VARIANT4          (FLA_BLF_VAR_OFFSET+4)
77 #define FLA_BLK_FUS_VARIANT5          (FLA_BLF_VAR_OFFSET+5)
78 #define FLA_BLK_FUS_VARIANT6          (FLA_BLF_VAR_OFFSET+6)
79 #define FLA_BLK_FUS_VARIANT7          (FLA_BLF_VAR_OFFSET+7)
80 #define FLA_BLK_FUS_VARIANT8          (FLA_BLF_VAR_OFFSET+8)
81 #define FLA_BLK_FUS_VARIANT9          (FLA_BLF_VAR_OFFSET+9)
82 #define FLA_BLK_FUS_VARIANT10         (FLA_BLF_VAR_OFFSET+10)
83 
84 #define FLA_Cntl_matrix_type( cntl )  cntl->matrix_type
85 #define FLA_Cntl_blocksize( cntl )    cntl->blocksize
86 #define FLA_Cntl_variant( cntl )      cntl->variant
87 
88 void FLA_Cntl_obj_free( void* cntl );
89 
90 
91 // Include the control tree definitions for each class of operation.
92 #include "FLA_Cntl_blas1.h"
93 #include "FLA_Cntl_blas2.h"
94 #include "FLA_Cntl_blas3.h"
95 #include "FLA_Cntl_lapack.h"
96 
97