libflame  12600
FLA_Cntl_blas1.h
Go to the documentation of this file.
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