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( trans_t transa, trans_t 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( trans_t transa, trans_t 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( trans_t transa, trans_t 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( trans_t transa, trans_t 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( trans_t transa, trans_t 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( trans_t transa, trans_t 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( trans_t transa, trans_t 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( trans_t transa, trans_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t trans, int m, int k, float*  alpha, scomplex* a, int lda, float*  beta, scomplex* c, int ldc );
00065 void bli_zherk_blas( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( side_t side, uplo_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t trans, int m, int k, float*    alpha, float*    a, int lda, float*    beta, float*    c, int ldc );
00097 void bli_dsyrk_blas( uplo_t uplo, trans_t trans, int m, int k, double*   alpha, double*   a, int lda, double*   beta, double*   c, int ldc );
00098 void bli_csyrk_blas( uplo_t uplo, trans_t trans, int m, int k, scomplex* alpha, scomplex* a, int lda, scomplex* beta, scomplex* c, int ldc );
00099 void bli_zsyrk_blas( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( uplo_t uplo, trans_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, float*    alpha, float*    a, int lda, float*    b, int ldb );
00121 void bli_dtrmm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, double*   alpha, double*   a, int lda, double*   b, int ldb );
00122 void bli_ctrmm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb );
00123 void bli_ztrmm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb );
00124 
00125 // --- trsm ---
00126 
00127 void bli_strsm( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, float*    alpha, float*    a, int lda, float*    b, int ldb );
00133 void bli_dtrsm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, double*   alpha, double*   a, int lda, double*   b, int ldb );
00134 void bli_ctrsm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb );
00135 void bli_ztrsm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb );
00136 
00137 // --- trmmsx ---
00138 
00139 void bli_strmmsx( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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( side_t side, uplo_t uplo, trans_t trans, diag_t 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