BeBOP Optimized Sparse Kernel Interface Library
1.0.1h
|
00001 00011 #if !defined(INC_OSKI_USERCONST_H) 00012 00013 #define INC_OSKI_USERCONST_H 00014 00020 #define INVALID_MAT ((oski_matrix_t)NULL) 00021 00027 #define INVALID_VEC ((oski_vecview_t)NULL) 00028 00058 typedef enum 00059 { 00060 COPY_INPUTMAT, 00061 SHARE_INPUTMAT 00062 } 00063 oski_copymode_t; 00064 00069 #define OSKI_CHECK_COPYMODE(x) \ 00070 IS_VAL_IN_RANGE(x, COPY_INPUTMAT, SHARE_INPUTMAT) 00071 00100 typedef enum 00101 { 00102 LAYOUT_COLMAJ, 00103 LAYOUT_ROWMAJ 00104 } 00105 oski_storage_t; 00106 00108 #define OSKI_CHECK_STORAGE(x) \ 00109 IS_VAL_IN_RANGE(x, LAYOUT_COLMAJ, LAYOUT_ROWMAJ) 00110 00125 typedef enum 00126 { 00127 OP_NORMAL, 00128 OP_CONJ, 00129 OP_TRANS, 00130 OP_CONJ_TRANS 00132 } 00133 oski_matop_t; 00134 00136 #define OSKI_CHECK_MATOP(op) \ 00137 IS_VAL_IN_RANGE(op, OP_NORMAL, OP_CONJ_TRANS) 00138 00148 typedef enum 00149 { 00150 OP_AT_A, 00151 OP_AH_A, 00152 OP_A_AT, 00153 OP_A_AH 00154 } 00155 oski_ataop_t; 00156 00158 #define OSKI_CHECK_ATAOP(op) \ 00159 IS_VAL_IN_RANGE(op, OP_AT_A, OP_A_AH) 00160 00183 typedef enum 00184 { 00185 INMATPROP_NULL = -1, 00187 /* Pattern properties. */ 00188 MAT_GENERAL = 0, 00189 MAT_TRI_UPPER, 00190 MAT_TRI_LOWER, 00191 MAT_SYMM_UPPER, 00193 MAT_SYMM_LOWER, 00194 MAT_SYMM_FULL, 00195 MAT_HERM_UPPER, 00197 MAT_HERM_LOWER, 00198 MAT_HERM_FULL, 00200 /* Diagonal properties. */ 00201 MAT_DIAG_EXPLICIT, 00203 MAT_UNIT_DIAG_IMPLICIT, 00206 /* Index base. */ 00207 INDEX_ONE_BASED, 00209 INDEX_ZERO_BASED, 00212 /* Index ordering. */ 00213 INDEX_UNSORTED, 00214 INDEX_SORTED, 00216 /* Index repetition. */ 00217 INDEX_REPEATED, 00218 INDEX_UNIQUE, 00220 INMATPROP_MAX 00221 } 00222 oski_inmatprop_t; 00223 00230 #define ALWAYS_TUNE ((int)(1000)) 00231 00232 #define ALWAYS_TUNE_AGGRESSIVELY ((int)(100000)) 00233 00249 typedef enum 00250 { 00251 /* Group 1 */ 00252 HINT_NO_BLOCKS = 1, 00253 HINT_SINGLE_BLOCKSIZE, 00255 HINT_MULTIPLE_BLOCKSIZES, 00258 /* Group 2 */ 00259 HINT_ALIGNED_BLOCKS, 00260 HINT_UNALIGNED_BLOCKS, 00262 /* Group 3 */ 00263 HINT_SYMM_PATTERN, 00264 HINT_NONSYMM_PATTERN, 00266 /* Group 4 */ 00267 HINT_RANDOM_PATTERN, 00269 HINT_CORREL_PATTERN, 00272 /* Group 5 */ 00273 HINT_NO_DIAGS, 00274 HINT_DIAGS, 00277 HINT_MAX 00278 } 00279 oski_tunehint_t; 00283 #define OSKI_CHECK_TUNEHINT(hint) \ 00284 IS_VAL_IN_RANGE(hint, HINT_NO_BLOCKS, HINT_MAX-1) 00285 00291 #define ARGS_NONE ((int)0) 00292 00293 #endif 00294 00295 /* eof */