libflame
12600
|
00001 /* 00002 libflame 00003 An object-based infrastructure for developing high-performance 00004 dense linear algebra libraries. 00005 00006 Copyright (C) 2011, The University of Texas 00007 00008 libflame is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU Lesser General Public License as 00010 published by the Free Software Foundation; either version 2.1 of 00011 the License, or (at your option) any later version. 00012 00013 libflame is distributed in the hope that it will be useful, but 00014 WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 Lesser General Public License for more details. 00017 00018 You should have received a copy of the GNU Lesser General Public 00019 License along with libflame; if you did not receive a copy, see 00020 http://www.gnu.org/licenses/. 00021 00022 For more information, please contact us at flame@cs.utexas.edu or 00023 send mail to: 00024 00025 Field G. Van Zee and/or 00026 Robert A. van de Geijn 00027 The University of Texas at Austin 00028 Department of Computer Sciences 00029 1 University Station C0500 00030 Austin TX 78712 00031 */ 00032 00033 00034 // 00035 // Level-1 BLAS 00036 // 00037 00038 struct fla_axpy_s 00039 { 00040 FLA_Matrix_type matrix_type; 00041 int variant; 00042 fla_blocksize_t* blocksize; 00043 struct fla_axpy_s* sub_axpy; 00044 }; 00045 typedef struct fla_axpy_s fla_axpy_t; 00046 00047 00048 struct fla_axpyt_s 00049 { 00050 FLA_Matrix_type matrix_type; 00051 int variant; 00052 fla_blocksize_t* blocksize; 00053 struct fla_axpyt_s* sub_axpyt; 00054 }; 00055 typedef struct fla_axpyt_s fla_axpyt_t; 00056 00057 00058 struct fla_copy_s 00059 { 00060 FLA_Matrix_type matrix_type; 00061 int variant; 00062 fla_blocksize_t* blocksize; 00063 struct fla_copy_s* sub_copy; 00064 }; 00065 typedef struct fla_copy_s fla_copy_t; 00066 00067 00068 struct fla_copyt_s 00069 { 00070 FLA_Matrix_type matrix_type; 00071 int variant; 00072 fla_blocksize_t* blocksize; 00073 struct fla_copyt_s* sub_copyt; 00074 }; 00075 typedef struct fla_copyt_s fla_copyt_t; 00076 00077 00078 struct fla_copyr_s 00079 { 00080 FLA_Matrix_type matrix_type; 00081 int variant; 00082 fla_blocksize_t* blocksize; 00083 struct fla_copyr_s* sub_copyr; 00084 struct fla_copy_s* sub_copy; 00085 }; 00086 typedef struct fla_copyr_s fla_copyr_t; 00087 00088 00089 struct fla_scal_s 00090 { 00091 FLA_Matrix_type matrix_type; 00092 int variant; 00093 fla_blocksize_t* blocksize; 00094 struct fla_scal_s* sub_scal; 00095 }; 00096 typedef struct fla_scal_s fla_scal_t; 00097 00098 00099 struct fla_scalr_s 00100 { 00101 FLA_Matrix_type matrix_type; 00102 int variant; 00103 fla_blocksize_t* blocksize; 00104 struct fla_scalr_s* sub_scalr; 00105 struct fla_scal_s* sub_scal; 00106 }; 00107 typedef struct fla_scalr_s fla_scalr_t; 00108 00109 00110 struct fla_swap_s 00111 { 00112 FLA_Matrix_type matrix_type; 00113 int variant; 00114 fla_blocksize_t* blocksize; 00115 struct fla_swap_s* sub_swap; 00116 }; 00117 typedef struct fla_swap_s fla_swap_t; 00118 00119 00120 struct fla_tpose_s 00121 { 00122 FLA_Matrix_type matrix_type; 00123 int variant; 00124 fla_blocksize_t* blocksize; 00125 struct fla_tpose_s* sub_trans; 00126 struct fla_swap_s* sub_swap; 00127 }; 00128 typedef struct fla_tpose_s fla_tpose_t; 00129 00130 00131 #define FLA_Cntl_sub_axpy( cntl ) cntl->sub_axpy 00132 #define FLA_Cntl_sub_axpy1( cntl ) cntl->sub_axpy1 00133 #define FLA_Cntl_sub_axpy2( cntl ) cntl->sub_axpy2 00134 #define FLA_Cntl_sub_axpy3( cntl ) cntl->sub_axpy3 00135 #define FLA_Cntl_sub_axpyt( cntl ) cntl->sub_axpyt 00136 #define FLA_Cntl_sub_copy( cntl ) cntl->sub_copy 00137 #define FLA_Cntl_sub_copyt( cntl ) cntl->sub_copyt 00138 #define FLA_Cntl_sub_copyr( cntl ) cntl->sub_copyr 00139 #define FLA_Cntl_sub_scal( cntl ) cntl->sub_scal 00140 #define FLA_Cntl_sub_scalr( cntl ) cntl->sub_scalr 00141 #define FLA_Cntl_sub_swap( cntl ) cntl->sub_swap 00142 #define FLA_Cntl_sub_trans( cntl ) cntl->sub_trans 00143 00144 00145 fla_axpy_t* FLA_Cntl_axpy_obj_create( FLA_Matrix_type matrix_type, 00146 int variant, 00147 fla_blocksize_t* blocksize, 00148 fla_axpy_t* sub_axpy ); 00149 fla_axpyt_t* FLA_Cntl_axpyt_obj_create( FLA_Matrix_type matrix_type, 00150 int variant, 00151 fla_blocksize_t* blocksize, 00152 fla_axpyt_t* sub_axpyt ); 00153 fla_copy_t* FLA_Cntl_copy_obj_create( FLA_Matrix_type matrix_type, 00154 int variant, 00155 fla_blocksize_t* blocksize, 00156 fla_copy_t* sub_copy ); 00157 fla_copyt_t* FLA_Cntl_copyt_obj_create( FLA_Matrix_type matrix_type, 00158 int variant, 00159 fla_blocksize_t* blocksize, 00160 fla_copyt_t* sub_copyt ); 00161 fla_copyr_t* FLA_Cntl_copyr_obj_create( FLA_Matrix_type matrix_type, 00162 int variant, 00163 fla_blocksize_t* blocksize, 00164 fla_copyr_t* sub_copyr, 00165 fla_copy_t* sub_copy ); 00166 fla_scal_t* FLA_Cntl_scal_obj_create( FLA_Matrix_type matrix_type, 00167 int variant, 00168 fla_blocksize_t* blocksize, 00169 fla_scal_t* sub_scal ); 00170 fla_scalr_t* FLA_Cntl_scalr_obj_create( FLA_Matrix_type matrix_type, 00171 int variant, 00172 fla_blocksize_t* blocksize, 00173 fla_scalr_t* sub_scalr, 00174 fla_scal_t* sub_scal ); 00175 fla_swap_t* FLA_Cntl_swap_obj_create( FLA_Matrix_type matrix_type, 00176 int variant, 00177 fla_blocksize_t* blocksize, 00178 fla_swap_t* sub_swap ); 00179 fla_tpose_t* FLA_Cntl_tpose_obj_create( FLA_Matrix_type matrix_type, 00180 int variant, 00181 fla_blocksize_t* blocksize, 00182 fla_tpose_t* sub_trans, 00183 fla_swap_t* sub_swap ); 00184