libflame revision_anchor
blis_prototypes_level3.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-3 BLAS-like prototypes --------------------------------------------
00034 
00035 // --- gemm ---
00036 
00037 void bli_sgemm( char transa, char transb, int m, int k, int n, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs, float*    beta, float*    c, int c_rs, int c_cs );
00038 void bli_dgemm( char transa, char transb, int m, int k, int n, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs, double*   beta, double*   c, int c_rs, int c_cs );
00039 void bli_cgemm( char transa, char transb, int m, int k, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs );
00040 void bli_zgemm( char transa, char transb, int m, int k, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs );
00041 
00042 void bli_sgemm_blas( char transa, char transb, int m, int n, int k, float*    alpha, float*    a, int lda, float*    b, int ldb, float*    beta, float*    c, int ldc );
00043 void bli_dgemm_blas( char transa, char transb, int m, int n, int k, double*   alpha, double*   a, int lda, double*   b, int ldb, double*   beta, double*   c, int ldc );
00044 void bli_cgemm_blas( char transa, char transb, int m, int n, int k, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, scomplex* beta, scomplex* c, int ldc );
00045 void bli_zgemm_blas( char transa, char transb, int m, int n, int k, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, dcomplex* beta, dcomplex* c, int ldc );
00046 
00047 // --- hemm ---
00048 
00049 void bli_shemm( char side, char uplo, int m, int n, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs, float*    beta, float*    c, int c_rs, int c_cs );
00050 void bli_dhemm( char side, char uplo, int m, int n, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs, double*   beta, double*   c, int c_rs, int c_cs );
00051 void bli_chemm( char side, char uplo, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs );
00052 void bli_zhemm( char side, char uplo, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs );
00053 
00054 void bli_chemm_blas( char side, char uplo, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, scomplex* beta, scomplex* c, int ldc );
00055 void bli_zhemm_blas( char side, char uplo, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, dcomplex* beta, dcomplex* c, int ldc );
00056 
00057 // --- herk ---
00058 
00059 void bli_sherk( char uplo, char trans, int m, int k, float*  alpha, float*    a, int a_rs, int a_cs, float*  beta, float*    c, int c_rs, int c_cs );
00060 void bli_dherk( char uplo, char trans, int m, int k, double* alpha, double*   a, int a_rs, int a_cs, double* beta, double*   c, int c_rs, int c_cs );
00061 void bli_cherk( char uplo, char trans, int m, int k, float*  alpha, scomplex* a, int a_rs, int a_cs, float*  beta, scomplex* c, int c_rs, int c_cs );
00062 void bli_zherk( char uplo, char trans, int m, int k, double* alpha, dcomplex* a, int a_rs, int a_cs, double* beta, dcomplex* c, int c_rs, int c_cs );
00063 
00064 void bli_cherk_blas( char uplo, char trans, int m, int k, float*  alpha, scomplex* a, int lda, float*  beta, scomplex* c, int ldc );
00065 void bli_zherk_blas( char uplo, char trans, int m, int k, double* alpha, dcomplex* a, int lda, double* beta, dcomplex* c, int ldc );
00066 
00067 // --- her2k ---
00068 
00069 void bli_sher2k( char uplo, char trans, int m, int k, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs, float*  beta, float*    c, int c_rs, int c_cs );
00070 void bli_dher2k( char uplo, char trans, int m, int k, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs, double* beta, double*   c, int c_rs, int c_cs );
00071 void bli_cher2k( char uplo, char trans, int m, int k, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, float*  beta, scomplex* c, int c_rs, int c_cs );
00072 void bli_zher2k( char uplo, char trans, int m, int k, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, double* beta, dcomplex* c, int c_rs, int c_cs );
00073 
00074 void bli_cher2k_blas( char uplo, char trans, int m, int k, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, float*  beta, scomplex* c, int ldc );
00075 void bli_zher2k_blas( char uplo, char trans, int m, int k, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, double* beta, dcomplex* c, int ldc );
00076 
00077 // --- symm ---
00078 
00079 void bli_ssymm( char side, char uplo, int m, int n, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs, float*    beta, float*    c, int c_rs, int c_cs );
00080 void bli_dsymm( char side, char uplo, int m, int n, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs, double*   beta, double*   c, int c_rs, int c_cs );
00081 void bli_csymm( char side, char uplo, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs );
00082 void bli_zsymm( char side, char uplo, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs );
00083 
00084 void bli_ssymm_blas( char side, char uplo, int m, int n, float*    alpha, float*    a, int lda, float*    b, int ldb, float*    beta, float*    c, int ldc );
00085 void bli_dsymm_blas( char side, char uplo, int m, int n, double*   alpha, double*   a, int lda, double*   b, int ldb, double*   beta, double*   c, int ldc );
00086 void bli_csymm_blas( char side, char uplo, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, scomplex* beta, scomplex* c, int ldc );
00087 void bli_zsymm_blas( char side, char uplo, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, dcomplex* beta, dcomplex* c, int ldc );
00088 
00089 // --- syrk ---
00090 
00091 void bli_ssyrk( char uplo, char trans, int m, int k, float*    alpha, float*    a, int a_rs, int a_cs, float*    beta, float*    c, int c_rs, int c_cs );
00092 void bli_dsyrk( char uplo, char trans, int m, int k, double*   alpha, double*   a, int a_rs, int a_cs, double*   beta, double*   c, int c_rs, int c_cs );
00093 void bli_csyrk( char uplo, char trans, int m, int k, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs );
00094 void bli_zsyrk( char uplo, char trans, int m, int k, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs );
00095 
00096 void bli_ssyrk_blas( char uplo, char trans, int m, int k, float*    alpha, float*    a, int lda, float*    beta, float*    c, int ldc );
00097 void bli_dsyrk_blas( char uplo, char trans, int m, int k, double*   alpha, double*   a, int lda, double*   beta, double*   c, int ldc );
00098 void bli_csyrk_blas( char uplo, char trans, int m, int k, scomplex* alpha, scomplex* a, int lda, scomplex* beta, scomplex* c, int ldc );
00099 void bli_zsyrk_blas( char uplo, char trans, int m, int k, dcomplex* alpha, dcomplex* a, int lda, dcomplex* beta, dcomplex* c, int ldc );
00100 
00101 // --- syr2k ---
00102 
00103 void bli_ssyr2k( char uplo, char trans, int m, int k, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs, float*    beta, float*    c, int c_rs, int c_cs );
00104 void bli_dsyr2k( char uplo, char trans, int m, int k, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs, double*   beta, double*   c, int c_rs, int c_cs );
00105 void bli_csyr2k( char uplo, char trans, int m, int k, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs );
00106 void bli_zsyr2k( char uplo, char trans, int m, int k, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs );
00107 
00108 void bli_ssyr2k_blas( char uplo, char trans, int m, int k, float*    alpha, float*    a, int lda, float*    b, int ldb, float*    beta, float*    c, int ldc );
00109 void bli_dsyr2k_blas( char uplo, char trans, int m, int k, double*   alpha, double*   a, int lda, double*   b, int ldb, double*   beta, double*   c, int ldc );
00110 void bli_csyr2k_blas( char uplo, char trans, int m, int k, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, scomplex* beta, scomplex* c, int ldc );
00111 void bli_zsyr2k_blas( char uplo, char trans, int m, int k, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, dcomplex* beta, dcomplex* c, int ldc );
00112 
00113 // --- trmm ---
00114 
00115 void bli_strmm( char side, char uplo, char trans, char diag, int m, int n, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs );
00116 void bli_dtrmm( char side, char uplo, char trans, char diag, int m, int n, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs );
00117 void bli_ctrmm( char side, char uplo, char trans, char diag, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs );
00118 void bli_ztrmm( char side, char uplo, char trans, char diag, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs );
00119 
00120 void bli_strmm_blas( char side, char uplo, char trans, char diag, int m, int n, float*    alpha, float*    a, int lda, float*    b, int ldb );
00121 void bli_dtrmm_blas( char side, char uplo, char trans, char diag, int m, int n, double*   alpha, double*   a, int lda, double*   b, int ldb );
00122 void bli_ctrmm_blas( char side, char uplo, char trans, char diag, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb );
00123 void bli_ztrmm_blas( char side, char uplo, char trans, char diag, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb );
00124 
00125 // --- trsm ---
00126 
00127 void bli_strsm( char side, char uplo, char trans, char diag, int m, int n, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs );
00128 void bli_dtrsm( char side, char uplo, char trans, char diag, int m, int n, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs );
00129 void bli_ctrsm( char side, char uplo, char trans, char diag, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs );
00130 void bli_ztrsm( char side, char uplo, char trans, char diag, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs );
00131 
00132 void bli_strsm_blas( char side, char uplo, char trans, char diag, int m, int n, float*    alpha, float*    a, int lda, float*    b, int ldb );
00133 void bli_dtrsm_blas( char side, char uplo, char trans, char diag, int m, int n, double*   alpha, double*   a, int lda, double*   b, int ldb );
00134 void bli_ctrsm_blas( char side, char uplo, char trans, char diag, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb );
00135 void bli_ztrsm_blas( char side, char uplo, char trans, char diag, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb );
00136 
00137 // --- trmmsx ---
00138 
00139 void bli_strmmsx( char side, char uplo, char trans, char diag, int m, int n, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs, float*    beta, float*    c, int c_rs, int c_cs );
00140 void bli_dtrmmsx( char side, char uplo, char trans, char diag, int m, int n, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs, double*   beta, double*   c, int c_rs, int c_cs );
00141 void bli_ctrmmsx( char side, char uplo, char trans, char diag, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs );
00142 void bli_ztrmmsx( char side, char uplo, char trans, char diag, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs );
00143 
00144 // --- trsmsx ---
00145 
00146 void bli_strsmsx( char side, char uplo, char trans, char diag, int m, int n, float*    alpha, float*    a, int a_rs, int a_cs, float*    b, int b_rs, int b_cs, float*    beta, float*    c, int c_rs, int c_cs );
00147 void bli_dtrsmsx( char side, char uplo, char trans, char diag, int m, int n, double*   alpha, double*   a, int a_rs, int a_cs, double*   b, int b_rs, int b_cs, double*   beta, double*   c, int c_rs, int c_cs );
00148 void bli_ctrsmsx( char side, char uplo, char trans, char diag, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs );
00149 void bli_ztrsmsx( char side, char uplo, char trans, char diag, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs );
00150