regprofmgr.h

00001 
00007 #if !defined(INC_HEUR_REGPROFMGR_H)
00008 #define INC_HEUR_REGPROFMGR_H
00009 
00010 #include <oski/common.h>
00011 #include <oski/mangle.h>
00012 
00013 #if defined(DO_NAME_MANGLING)
00014 
00016 #define oski_regprof_t  MANGLE_(oski_regprof_t)
00017 
00018 #define oski_CreateRegProfile MANGLE_(oski_CreateRegProfile)
00019 #define oski_CopyRegProfile MANGLE_(oski_CopyRegProfile)
00020 #define oski_LoadRegProfile MANGLE_(oski_LoadRegProfile)
00021 #define oski_InitRegProfile MANGLE_(oski_InitRegProfile)
00022 #define oski_ResetRegProfile MANGLE_(oski_ResetRegProfile)
00023 #define oski_ZeroRegProfile MANGLE_(oski_ZeroRegProfile)
00024 #define oski_InvRegProfile MANGLE_(oski_InvRegProfile)
00025 #define oski_ScaleRegProfile MANGLE_(oski_InvRegProfile)
00026 #define oski_MinRegProfile MANGLE_(oski_MinRegProfile)
00027 #define oski_MaxRegProfile MANGLE_(oski_MaxRegProfile)
00028 #define oski_MulEqRegProfile MANGLE_(oski_MulEqRegProfile)
00029 #define oski_AddEqRegProfile MANGLE_(oski_AddEqRegProfile)
00030 #define oski_DestroyRegProfile MANGLE_(oski_DestroyRegProfile)
00031 #define oski_PrintDebugRegProfile MANGLE_(oski_PrintDebugRegProfile)
00032 
00033 #define oski_CalcHarmonicMeanRegProfile \
00034     MANGLE_(oski_CalcHarmonicMeanRegProfile)
00035 
00036 #endif
00037 
00039 typedef struct
00040 {
00041   oski_index_t max_r;       
00042   oski_index_t max_c;       
00043   double *perf;       
00044 } oski_regprof_t;
00045 
00051 #define REGPROF_GET(P, r, c)     ((P)->perf[((r)-1)*(P)->max_c + (c)-1])
00052 
00056 #define REGPROF_MULEQ(P, r, c, a) (REGPROF_GET(P, r, c) *= (a))
00057 
00061 #define REGPROF_ADDEQ(P, r, c, a) (REGPROF_GET(P, r, c) += (a))
00062 
00068 #define REGPROF_SET(P, r, c, v)  (REGPROF_GET(P, r, c) = (v))
00069 
00073 oski_regprof_t *oski_CreateRegProfile (oski_index_t max_r,
00074                        oski_index_t max_c);
00075 
00079 int oski_LoadRegProfile (const char *filename, oski_regprof_t * profile);
00080 
00085 void oski_ResetRegProfile (oski_regprof_t * profile);
00086 
00091 int oski_InitRegProfile (oski_regprof_t * profile,
00092              oski_index_t max_r, oski_index_t max_c);
00093 
00097 void oski_ZeroRegProfile (oski_regprof_t * profile);
00098 
00104 void oski_CopyRegProfile (const oski_regprof_t * src, oski_regprof_t * dest);
00105 
00109 void oski_InvRegProfile (oski_regprof_t * profile);
00110 
00114 void oski_ScaleRegProfile (oski_regprof_t * profile, double alpha);
00115 
00123 void oski_MulEqRegProfile (oski_regprof_t * P1, const oski_regprof_t * P2);
00124 
00132 void oski_AddEqRegProfile (oski_regprof_t * P1, const oski_regprof_t * P2);
00133 
00140 void oski_CalcHarmonicMeanRegProfile (oski_regprof_t * P1, double w1,
00141                       const oski_regprof_t * P2, double w2);
00142 
00146 void oski_DestroyRegProfile (oski_regprof_t * profile);
00147 
00151 double oski_MinRegProfile (const oski_regprof_t * profile,
00152                oski_index_t * p_r, oski_index_t * p_c);
00153 
00157 double oski_MaxRegProfile (const oski_regprof_t * profile,
00158                oski_index_t * p_r, oski_index_t * p_c);
00159 
00163 void oski_PrintDebugRegProfile (int debug_level, const char *title,
00164                 const oski_regprof_t * profile);
00165 
00166 #endif
00167 
00168 /* eof */

Generated on Wed Sep 19 16:41:18 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6