libflame  revision_anchor
blis_prototypes_level2.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 // --- Level-2 BLAS-like prototypes --------------------------------------------
00034 
00035 // --- gemv ---
00036 
00037 void bli_sgemv( trans_t transa, conj_t conjx, int m, int n, float*    alpha, float*    a, int a_rs, int a_cs, float*    x, int incx, float*    beta, float*    y, int incy );
00038 void bli_dgemv( trans_t transa, conj_t conjx, int m, int n, double*   alpha, double*   a, int a_rs, int a_cs, double*   x, int incx, double*   beta, double*   y, int incy );
00039 void bli_cgemv( trans_t transa, conj_t conjx, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy );
00040 void bli_zgemv( trans_t transa, conj_t conjx, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy );
00041 
00042 void bli_sgemv_blas( trans_t transa, int m, int n, float*    alpha, float*    a, int lda, float*    x, int incx, float*    beta, float*    y, int incy );
00043 void bli_dgemv_blas( trans_t transa, int m, int n, double*   alpha, double*   a, int lda, double*   x, int incx, double*   beta, double*   y, int incy );
00044 void bli_cgemv_blas( trans_t transa, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy );
00045 void bli_zgemv_blas( trans_t transa, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy );
00046 
00047 // --- ger ---
00048 
00049 void bli_sger( conj_t conjx, conj_t conjy, int m, int n, float*    alpha, float*    x, int incx, float*    y, int incy, float*    a, int a_rs, int a_cs );
00050 void bli_dger( conj_t conjx, conj_t conjy, int m, int n, double*   alpha, double*   x, int incx, double*   y, int incy, double*   a, int a_rs, int a_cs );
00051 void bli_cger( conj_t conjx, conj_t conjy, int m, int n, scomplex* alpha, scomplex* x, int incx, scomplex* y, int incy, scomplex* a, int a_rs, int a_cs );
00052 void bli_zger( conj_t conjx, conj_t conjy, int m, int n, dcomplex* alpha, dcomplex* x, int incx, dcomplex* y, int incy, dcomplex* a, int a_rs, int a_cs );
00053 
00054 void bli_sger_blas(  int m, int n, float*    alpha, float*    x, int incx, float*    y, int incy, float*    a, int lda );
00055 void bli_dger_blas(  int m, int n, double*   alpha, double*   x, int incx, double*   y, int incy, double*   a, int lda );
00056 void bli_cgerc_blas( int m, int n, scomplex* alpha, scomplex* x, int incx, scomplex* y, int incy, scomplex* a, int lda );
00057 void bli_cgeru_blas( int m, int n, scomplex* alpha, scomplex* x, int incx, scomplex* y, int incy, scomplex* a, int lda );
00058 void bli_zgerc_blas( int m, int n, dcomplex* alpha, dcomplex* x, int incx, dcomplex* y, int incy, dcomplex* a, int lda );
00059 void bli_zgeru_blas( int m, int n, dcomplex* alpha, dcomplex* x, int incx, dcomplex* y, int incy, dcomplex* a, int lda );
00060 
00061 // --- hemv ---
00062 
00063 void bli_shemv( uplo_t uplo, conj_t conj, int m, float*    alpha, float*    a, int a_rs, int a_cs, float*    x, int incx, float*    beta, float*    y, int incy );
00064 void bli_dhemv( uplo_t uplo, conj_t conj, int m, double*   alpha, double*   a, int a_rs, int a_cs, double*   x, int incx, double*   beta, double*   y, int incy );
00065 void bli_chemv( uplo_t uplo, conj_t conj, int m, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy );
00066 void bli_zhemv( uplo_t uplo, conj_t conj, int m, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy );
00067 
00068 void bli_chemv_blas( uplo_t uplo, int m, scomplex* alpha, scomplex* a, int lda, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy );
00069 void bli_zhemv_blas( uplo_t uplo, int m, dcomplex* alpha, dcomplex* a, int lda, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy );
00070 
00071 // --- her ---
00072 
00073 void bli_sher( uplo_t uplo, conj_t conj, int m, float*  alpha, float*    x, int incx, float*    a, int a_rs, int a_cs );
00074 void bli_dher( uplo_t uplo, conj_t conj, int m, double* alpha, double*   x, int incx, double*   a, int a_rs, int a_cs );
00075 void bli_cher( uplo_t uplo, conj_t conj, int m, float*  alpha, scomplex* x, int incx, scomplex* a, int a_rs, int a_cs );
00076 void bli_zher( uplo_t uplo, conj_t conj, int m, double* alpha, dcomplex* x, int incx, dcomplex* a, int a_rs, int a_cs );
00077 
00078 void bli_cher_blas( uplo_t uplo, int m, float*  alpha, scomplex* x, int incx, scomplex* a, int lda );
00079 void bli_zher_blas( uplo_t uplo, int m, double* alpha, dcomplex* x, int incx, dcomplex* a, int lda );
00080 
00081 // --- her2 ---
00082 
00083 void bli_sher2( uplo_t uplo, conj_t conj, int m, float*    alpha, float*    x, int incx, float*    y, int incy, float*    a, int a_rs, int a_cs );
00084 void bli_dher2( uplo_t uplo, conj_t conj, int m, double*   alpha, double*   x, int incx, double*   y, int incy, double*   a, int a_rs, int a_cs );
00085 void bli_cher2( uplo_t uplo, conj_t conj, int m, scomplex* alpha, scomplex* x, int incx, scomplex* y, int incy, scomplex* a, int a_rs, int a_cs );
00086 void bli_zher2( uplo_t uplo, conj_t conj, int m, dcomplex* alpha, dcomplex* x, int incx, dcomplex* y, int incy, dcomplex* a, int a_rs, int a_cs );
00087 
00088 void bli_cher2_blas( uplo_t uplo, int m, scomplex* alpha, scomplex* x, int incx, scomplex* y, int incy, scomplex* a, int lda );
00089 void bli_zher2_blas( uplo_t uplo, int m, dcomplex* alpha, dcomplex* x, int incx, dcomplex* y, int incy, dcomplex* a, int lda );
00090 
00091 // --- symv ---
00092 
00093 void bli_ssymv( uplo_t uplo, int m, float*    alpha, float*    a, int a_rs, int a_cs, float*    x, int incx, float*    beta, float*    y, int incy );
00094 void bli_dsymv( uplo_t uplo, int m, double*   alpha, double*   a, int a_rs, int a_cs, double*   x, int incx, double*   beta, double*   y, int incy );
00095 void bli_csymv( uplo_t uplo, int m, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy );
00096 void bli_zsymv( uplo_t uplo, int m, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy );
00097 
00098 void bli_ssymv_blas( uplo_t uplo, int m, float*    alpha, float*    a, int lda, float*    x, int incx, float*    beta, float*    y, int incy );
00099 void bli_dsymv_blas( uplo_t uplo, int m, double*   alpha, double*   a, int lda, double*   x, int incx, double*   beta, double*   y, int incy );
00100 void bli_csymv_blas( uplo_t uplo, int m, scomplex* alpha, scomplex* a, int lda, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy );
00101 void bli_zsymv_blas( uplo_t uplo, int m, dcomplex* alpha, dcomplex* a, int lda, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy );
00102 
00103 // --- syr ---
00104 
00105 void bli_ssyr( uplo_t uplo, int m, float*    alpha, float*    x, int incx, float*    a, int a_rs, int a_cs );
00106 void bli_dsyr( uplo_t uplo, int m, double*   alpha, double*   x, int incx, double*   a, int a_rs, int a_cs );
00107 void bli_csyr( uplo_t uplo, int m, scomplex* alpha, scomplex* x, int incx, scomplex* a, int a_rs, int a_cs );
00108 void bli_zsyr( uplo_t uplo, int m, dcomplex* alpha, dcomplex* x, int incx, dcomplex* a, int a_rs, int a_cs );
00109 
00110 void bli_ssyr_blas( uplo_t uplo, int m, float*    alpha, float*    x, int incx, float*    a, int lda );
00111 void bli_dsyr_blas( uplo_t uplo, int m, double*   alpha, double*   x, int incx, double*   a, int lda );
00112 void bli_csyr_blas( uplo_t uplo, int m, scomplex* alpha, scomplex* x, int incx, scomplex* a, int lda );
00113 void bli_zsyr_blas( uplo_t uplo, int m, dcomplex* alpha, dcomplex* x, int incx, dcomplex* a, int lda );
00114 
00115 // --- syr2 ---
00116 
00117 void bli_ssyr2( uplo_t uplo, int m, float*    alpha, float*    x, int incx, float*    y, int incy, float*    a, int a_rs, int a_cs );
00118 void bli_dsyr2( uplo_t uplo, int m, double*   alpha, double*   x, int incx, double*   y, int incy, double*   a, int a_rs, int a_cs );
00119 void bli_csyr2( uplo_t uplo, int m, scomplex* alpha, scomplex* x, int incx, scomplex* y, int incy, scomplex* a, int a_rs, int a_cs );
00120 void bli_zsyr2( uplo_t uplo, int m, dcomplex* alpha, dcomplex* x, int incx, dcomplex* y, int incy, dcomplex* a, int a_rs, int a_cs );
00121 
00122 void bli_ssyr2_blas( uplo_t uplo, int m, float*    alpha, float*    x, int incx, float*    y, int incy, float*    a, int lda );
00123 void bli_dsyr2_blas( uplo_t uplo, int m, double*   alpha, double*   x, int incx, double*   y, int incy, double*   a, int lda );
00124 void bli_csyr2_blas( uplo_t uplo, int m, scomplex* alpha, scomplex* x, int incx, scomplex* y, int incy, scomplex* a, int lda );
00125 void bli_zsyr2_blas( uplo_t uplo, int m, dcomplex* alpha, dcomplex* x, int incx, dcomplex* y, int incy, dcomplex* a, int lda );
00126 
00127 // --- trmv ---
00128 
00129 void bli_strmv( uplo_t uplo, trans_t trans, diag_t diag, int m, float*    a, int a_rs, int a_cs, float*    x, int incx );
00130 void bli_dtrmv( uplo_t uplo, trans_t trans, diag_t diag, int m, double*   a, int a_rs, int a_cs, double*   x, int incx );
00131 void bli_ctrmv( uplo_t uplo, trans_t trans, diag_t diag, int m, scomplex* a, int a_rs, int a_cs, scomplex* x, int incx );
00132 void bli_ztrmv( uplo_t uplo, trans_t trans, diag_t diag, int m, dcomplex* a, int a_rs, int a_cs, dcomplex* x, int incx );
00133 
00134 void bli_strmv_blas( uplo_t uplo, trans_t trans, diag_t diag, int m, float*    a, int lda, float*    x, int incx );
00135 void bli_dtrmv_blas( uplo_t uplo, trans_t trans, diag_t diag, int m, double*   a, int lda, double*   x, int incx );
00136 void bli_ctrmv_blas( uplo_t uplo, trans_t trans, diag_t diag, int m, scomplex* a, int lda, scomplex* x, int incx );
00137 void bli_ztrmv_blas( uplo_t uplo, trans_t trans, diag_t diag, int m, dcomplex* a, int lda, dcomplex* x, int incx );
00138 
00139 // --- trsv ---
00140 
00141 void bli_strsv( uplo_t uplo, trans_t trans, diag_t diag, int m, float*    a, int a_rs, int a_cs, float*    x, int incx );
00142 void bli_dtrsv( uplo_t uplo, trans_t trans, diag_t diag, int m, double*   a, int a_rs, int a_cs, double*   x, int incx );
00143 void bli_ctrsv( uplo_t uplo, trans_t trans, diag_t diag, int m, scomplex* a, int a_rs, int a_cs, scomplex* x, int incx );
00144 void bli_ztrsv( uplo_t uplo, trans_t trans, diag_t diag, int m, dcomplex* a, int a_rs, int a_cs, dcomplex* x, int incx );
00145 
00146 void bli_strsv_blas( uplo_t uplo, trans_t trans, diag_t diag, int m, float*    a, int lda, float*    x, int incx );
00147 void bli_dtrsv_blas( uplo_t uplo, trans_t trans, diag_t diag, int m, double*   a, int lda, double*   x, int incx );
00148 void bli_ctrsv_blas( uplo_t uplo, trans_t trans, diag_t diag, int m, scomplex* a, int lda, scomplex* x, int incx );
00149 void bli_ztrsv_blas( uplo_t uplo, trans_t trans, diag_t diag, int m, dcomplex* a, int lda, dcomplex* x, int incx );
00150 
00151 // --- trmvsx ---
00152 
00153 void bli_strmvsx( uplo_t uplo, trans_t trans, diag_t diag, int m, float* alpha, float* a, int a_rs, int a_cs, float* x, int incx, float* beta, float* y, int incy );
00154 void bli_dtrmvsx( uplo_t uplo, trans_t trans, diag_t diag, int m, double* alpha, double* a, int a_rs, int a_cs, double* x, int incx, double* beta, double* y, int incy );
00155 void bli_ctrmvsx( uplo_t uplo, trans_t trans, diag_t diag, int m, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy );
00156 void bli_ztrmvsx( uplo_t uplo, trans_t trans, diag_t diag, int m, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy );
00157 
00158 // --- trsvsx ---
00159 
00160 void bli_strsvsx( uplo_t uplo, trans_t trans, diag_t diag, int m, float* alpha, float* a, int a_rs, int a_cs, float* x, int incx, float* beta, float* y, int incy );
00161 void bli_dtrsvsx( uplo_t uplo, trans_t trans, diag_t diag, int m, double* alpha, double* a, int a_rs, int a_cs, double* x, int incx, double* beta, double* y, int incy );
00162 void bli_ctrsvsx( uplo_t uplo, trans_t trans, diag_t diag, int m, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy );
00163 void bli_ztrsvsx( uplo_t uplo, trans_t trans, diag_t diag, int m, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy );
00164