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
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
00201 MAT_DIAG_EXPLICIT,
00203 MAT_UNIT_DIAG_IMPLICIT,
00206
00207 INDEX_ONE_BASED,
00209 INDEX_ZERO_BASED,
00212
00213 INDEX_UNSORTED,
00214 INDEX_SORTED,
00216
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
00252 HINT_NO_BLOCKS = 1,
00253 HINT_SINGLE_BLOCKSIZE,
00255 HINT_MULTIPLE_BLOCKSIZES,
00258
00259 HINT_ALIGNED_BLOCKS,
00260 HINT_UNALIGNED_BLOCKS,
00262
00263 HINT_SYMM_PATTERN,
00264 HINT_NONSYMM_PATTERN,
00266
00267 HINT_RANDOM_PATTERN,
00269 HINT_CORREL_PATTERN,
00272
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