00001
00007 #if !defined(INC_OSKI_ATA_H) && !defined(OSKI_UNBIND)
00008
00009 #define INC_OSKI_ATA_H
00010
00011 #include <oski/matmult.h>
00012
00013 #if defined(DO_NAME_MANGLING)
00014
00016 #define oski_MatTransMatMult_funcpt MANGLE_(oski_MatTransMatMult_funcpt)
00017 #define oski_MatReprTransMatReprMult_funcpt \
00018 MANGLE_(oski_MatReprTransMatReprMult_funcpt)
00019
00020 #define oski_MatTransMatMult \
00021 MANGLE_(oski_MatTransMatMult)
00022 #define oski_CheckArgsMatTransMatMult \
00023 MANGLE_(oski_CheckArgsMatTransMatMult)
00024
00025 #define oski_traceargs_MatTransMatMult_t \
00026 MANGLE_(oski_traceargs_MatTransMatMult_t)
00027 #define oski_MakeArglistMatTransMatMult \
00028 MANGLE_(oski_MakeArglistMatTransMatMult)
00029
00030 #endif
00031
00039 int oski_MatTransMatMult (const oski_matrix_t A_tunable,
00040 oski_ataop_t op,
00041 oski_value_t alpha, const oski_vecview_t x_view,
00042 oski_value_t beta, oski_vecview_t y_view,
00043 oski_vecview_t t_view);
00044
00049 int
00050 oski_CheckArgsMatTransMatMult (const oski_matrix_t A_tunable,
00051 oski_ataop_t op,
00052 oski_value_t alpha,
00053 const oski_vecview_t x_view, oski_value_t beta,
00054 const oski_vecview_t y_view,
00055 const oski_vecview_t t_view,
00056 const char *caller);
00057
00058
00062 typedef int (*oski_MatTransMatMult_funcpt) (const oski_matrix_t A_tunable,
00063 oski_ataop_t op,
00064 oski_value_t alpha,
00065 const oski_vecview_t x_view,
00066 oski_value_t beta,
00067 oski_vecview_t y_view,
00068 oski_vecview_t t_view);
00069
00074 typedef int (*oski_MatReprTransMatReprMult_funcpt) (const void *A,
00075 const oski_matcommon_t *
00076 props, oski_ataop_t op,
00077 oski_value_t alpha,
00078 const oski_vecview_t
00079 x_view, oski_value_t beta,
00080 oski_vecview_t y_view,
00081 oski_vecview_t t_view);
00082
00090 typedef struct
00091 {
00093
00094 oski_ataop_t op;
00095 oski_index_t num_vecs;
00096 oski_value_t alpha;
00097 oski_storage_t x_orient;
00098 oski_value_t beta;
00099 oski_storage_t y_orient;
00100 oski_storage_t t_orient;
00102 }
00103 oski_traceargs_MatTransMatMult_t;
00104
00109 void oski_MakeArglistMatTransMatMult (oski_ataop_t opA,
00110 oski_value_t alpha,
00111 const oski_vecview_t x_view,
00112 oski_value_t beta,
00113 const oski_vecview_t y_view,
00114 const oski_vecview_t t_view,
00115 oski_traceargs_MatTransMatMult_t *
00116 args);
00117
00119 #define GET_XFLOP_MatTransMatMult( args ) \
00120 (4.0*((const oski_traceargs_MatTransMatMult_t *)(args))->num_vecs)
00121
00124 #endif
00125
00126 #if defined(OSKI_UNBIND)
00127 # include <oski/matmult.h>
00128 # undef INC_OSKI_ATA_H
00129 # undef oski_MatTransMatMult_funcpt
00130 # undef oski_MatReprTransMatReprMult_funcpt
00131 # undef oski_MatTransMatMult
00132 # undef oski_CheckArgsMatTransMatMult
00133 # undef oski_traceargs_MatTransMatMult_t
00134 # undef oski_MakeArglistMatTransMatMult
00135 # undef GET_XFLOP_MatTransMatMult
00136 #endif
00137
00138