1e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#ifndef RS_COMPATIBILITY_LIB 2e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#include "cblas.h" 3e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#else 4e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#include <dlfcn.h> 5e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang/* 641ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wang * The following enums are based on cblas.h 741ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wang */ 841ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wangenum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102}; 941ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wangenum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113}; 1041ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wangenum CBLAS_UPLO {CblasUpper=121, CblasLower=122}; 1141ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wangenum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132}; 1241ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wangenum CBLAS_SIDE {CblasLeft=141, CblasRight=142}; 1341ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wang#endif 1441ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wang 1541ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wang/* 16e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * =========================================================================== 17e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * Prototypes for level 2 BLAS 18e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * =========================================================================== 19e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang */ 20e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 21e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang/* 22e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * Routines with standard 4 prefixes (S, D, C, Z) 23e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang */ 24e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_sgemv)(const enum CBLAS_ORDER order, 25e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const int M, const int N, 26e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float alpha, const float *A, const int lda, 27e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float *X, const int incX, const float beta, 28e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang float *Y, const int incY); 29e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_sgbmv)(const enum CBLAS_ORDER order, 30e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const int M, const int N, 31e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int KL, const int KU, const float alpha, 32e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float *A, const int lda, const float *X, 33e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, const float beta, float *Y, const int incY); 34e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_strmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 35e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 36e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float *A, const int lda, 37e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang float *X, const int incX); 38e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_stbmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 39e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 40e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const float *A, const int lda, 41e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang float *X, const int incX); 42e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_stpmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 43e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 44e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float *Ap, float *X, const int incX); 45e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_strsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 46e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 47e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float *A, const int lda, float *X, 48e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX); 49e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_stbsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 50e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 51e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const float *A, const int lda, 52e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang float *X, const int incX); 53e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_stpsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 54e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 55e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float *Ap, float *X, const int incX); 56e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 57e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dgemv)(const enum CBLAS_ORDER order, 58e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const int M, const int N, 59e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double alpha, const double *A, const int lda, 60e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double *X, const int incX, const double beta, 61e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang double *Y, const int incY); 62e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dgbmv)(const enum CBLAS_ORDER order, 63e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const int M, const int N, 64e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int KL, const int KU, const double alpha, 65e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double *A, const int lda, const double *X, 66e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, const double beta, double *Y, const int incY); 67e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dtrmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 68e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 69e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double *A, const int lda, 70e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang double *X, const int incX); 71e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dtbmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 72e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 73e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const double *A, const int lda, 74e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang double *X, const int incX); 75e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dtpmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 76e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 77e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double *Ap, double *X, const int incX); 78e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dtrsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 79e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 80e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double *A, const int lda, double *X, 81e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX); 82e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dtbsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 83e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 84e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const double *A, const int lda, 85e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang double *X, const int incX); 86e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dtpsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 87e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 88e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double *Ap, double *X, const int incX); 89e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 90e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cgemv)(const enum CBLAS_ORDER order, 91e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const int M, const int N, 92e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 93e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *X, const int incX, const void *beta, 94e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *Y, const int incY); 95e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cgbmv)(const enum CBLAS_ORDER order, 96e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const int M, const int N, 97e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int KL, const int KU, const void *alpha, 98e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *A, const int lda, const void *X, 99e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, const void *beta, void *Y, const int incY); 100e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ctrmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 101e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 102e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *A, const int lda, 103e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *X, const int incX); 104e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ctbmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 105e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 106e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const void *A, const int lda, 107e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *X, const int incX); 108e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ctpmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 109e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 110e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *Ap, void *X, const int incX); 111e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ctrsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 112e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 113e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *A, const int lda, void *X, 114e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX); 115e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ctbsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 116e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 117e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const void *A, const int lda, 118e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *X, const int incX); 119e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ctpsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 120e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 121e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *Ap, void *X, const int incX); 122e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 123e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zgemv)(const enum CBLAS_ORDER order, 124e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const int M, const int N, 125e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 126e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *X, const int incX, const void *beta, 127e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *Y, const int incY); 128e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zgbmv)(const enum CBLAS_ORDER order, 129e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const int M, const int N, 130e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int KL, const int KU, const void *alpha, 131e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *A, const int lda, const void *X, 132e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, const void *beta, void *Y, const int incY); 133e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ztrmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 134e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 135e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *A, const int lda, 136e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *X, const int incX); 137e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ztbmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 138e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 139e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const void *A, const int lda, 140e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *X, const int incX); 141e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ztpmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 142e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 143e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *Ap, void *X, const int incX); 144e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ztrsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 145e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 146e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *A, const int lda, void *X, 147e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX); 148e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ztbsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 149e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 150e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const void *A, const int lda, 151e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *X, const int incX); 152e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ztpsv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 153e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 154e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *Ap, void *X, const int incX); 155e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 156e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 157e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang/* 158e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * Routines with S and D prefixes only 159e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang */ 160e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ssymv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 161e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float alpha, const float *A, 162e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const float *X, const int incX, 163e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float beta, float *Y, const int incY); 164e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ssbmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 165e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const float alpha, const float *A, 166e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const float *X, const int incX, 167e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float beta, float *Y, const int incY); 168e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_sspmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 169e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float alpha, const float *Ap, 170e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float *X, const int incX, 171e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float beta, float *Y, const int incY); 172e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_sger)(const enum CBLAS_ORDER order, const int M, const int N, 173e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float alpha, const float *X, const int incX, 174e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float *Y, const int incY, float *A, const int lda); 175e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ssyr)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 176e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float alpha, const float *X, 177e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, float *A, const int lda); 178e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_sspr)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 179e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float alpha, const float *X, 180e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, float *Ap); 181e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ssyr2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 182e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float alpha, const float *X, 183e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, const float *Y, const int incY, float *A, 184e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda); 185e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_sspr2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 186e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float alpha, const float *X, 187e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, const float *Y, const int incY, float *A); 188e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 189e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dsymv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 190e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double alpha, const double *A, 191e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const double *X, const int incX, 192e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double beta, double *Y, const int incY); 193e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dsbmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 194e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const double alpha, const double *A, 195e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const double *X, const int incX, 196e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double beta, double *Y, const int incY); 197e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dspmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 198e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double alpha, const double *Ap, 199e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double *X, const int incX, 200e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double beta, double *Y, const int incY); 201e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dger)(const enum CBLAS_ORDER order, const int M, const int N, 202e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double alpha, const double *X, const int incX, 203e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double *Y, const int incY, double *A, const int lda); 204e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dsyr)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 205e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double alpha, const double *X, 206e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, double *A, const int lda); 207e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dspr)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 208e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double alpha, const double *X, 209e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, double *Ap); 210e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dsyr2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 211e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double alpha, const double *X, 212e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, const double *Y, const int incY, double *A, 213e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda); 214e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dspr2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 215e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double alpha, const double *X, 216e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, const double *Y, const int incY, double *A); 217e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 218e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 219e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang/* 220e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * Routines with C and Z prefixes only 221e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang */ 222e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_chemv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 223e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *alpha, const void *A, 224e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const void *X, const int incX, 225e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *Y, const int incY); 226e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_chbmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 227e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const void *alpha, const void *A, 228e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const void *X, const int incX, 229e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *Y, const int incY); 230e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_chpmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 231e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *alpha, const void *Ap, 232e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *X, const int incX, 233e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *Y, const int incY); 234e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cgeru)(const enum CBLAS_ORDER order, const int M, const int N, 235e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *X, const int incX, 236e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *Y, const int incY, void *A, const int lda); 237e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cgerc)(const enum CBLAS_ORDER order, const int M, const int N, 238e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *X, const int incX, 239e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *Y, const int incY, void *A, const int lda); 240e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cher)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 241e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float alpha, const void *X, const int incX, 242e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *A, const int lda); 243e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_chpr)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 244e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const float alpha, const void *X, 245e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, void *A); 246e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cher2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, 247e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *X, const int incX, 248e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *Y, const int incY, void *A, const int lda); 249e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_chpr2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, 250e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *X, const int incX, 251e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *Y, const int incY, void *Ap); 252e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 253e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zhemv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 254e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *alpha, const void *A, 255e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const void *X, const int incX, 256e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *Y, const int incY); 257e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zhbmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 258e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const int K, const void *alpha, const void *A, 259e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const void *X, const int incX, 260e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *Y, const int incY); 261e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zhpmv)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 262e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const void *alpha, const void *Ap, 263e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *X, const int incX, 264e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *Y, const int incY); 265e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zgeru)(const enum CBLAS_ORDER order, const int M, const int N, 266e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *X, const int incX, 267e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *Y, const int incY, void *A, const int lda); 268e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zgerc)(const enum CBLAS_ORDER order, const int M, const int N, 269e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *X, const int incX, 270e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *Y, const int incY, void *A, const int lda); 271e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zher)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 272e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double alpha, const void *X, const int incX, 273e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *A, const int lda); 274e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zhpr)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 275e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int N, const double alpha, const void *X, 276e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int incX, void *A); 277e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zher2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, 278e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *X, const int incX, 279e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *Y, const int incY, void *A, const int lda); 280e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zhpr2)(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, 281e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *X, const int incX, 282e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *Y, const int incY, void *Ap); 283e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 284e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang/* 285e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * =========================================================================== 286e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * Prototypes for level 3 BLAS 287e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * =========================================================================== 288e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang */ 289e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 290e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang/* 291e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * Routines with standard 4 prefixes (S, D, C, Z) 292e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang */ 293e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_sgemm)(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, 294e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransB, const int M, const int N, 295e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int K, const float alpha, const float *A, 296e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const float *B, const int ldb, 297e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float beta, float *C, const int ldc); 298e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ssymm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 299e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const int M, const int N, 300e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float alpha, const float *A, const int lda, 301e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float *B, const int ldb, const float beta, 302e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang float *C, const int ldc); 303e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ssyrk)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 304e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 305e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float alpha, const float *A, const int lda, 306e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float beta, float *C, const int ldc); 307e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ssyr2k)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 308e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 309e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float alpha, const float *A, const int lda, 310e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float *B, const int ldb, const float beta, 311e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang float *C, const int ldc); 312e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_strmm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 313e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 314e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_DIAG Diag, const int M, const int N, 315e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float alpha, const float *A, const int lda, 316e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang float *B, const int ldb); 317e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_strsm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 318e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 319e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_DIAG Diag, const int M, const int N, 320e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float alpha, const float *A, const int lda, 321e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang float *B, const int ldb); 322e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 323e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dgemm)(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, 324e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransB, const int M, const int N, 325e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int K, const double alpha, const double *A, 326e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const double *B, const int ldb, 327e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double beta, double *C, const int ldc); 328e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dsymm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 329e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const int M, const int N, 330e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double alpha, const double *A, const int lda, 331e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double *B, const int ldb, const double beta, 332e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang double *C, const int ldc); 333e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dsyrk)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 334e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 335e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double alpha, const double *A, const int lda, 336e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double beta, double *C, const int ldc); 337e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dsyr2k)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 338e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 339e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double alpha, const double *A, const int lda, 340e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double *B, const int ldb, const double beta, 341e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang double *C, const int ldc); 342e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dtrmm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 343e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 344e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_DIAG Diag, const int M, const int N, 345e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double alpha, const double *A, const int lda, 346e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang double *B, const int ldb); 347e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_dtrsm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 348e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 349e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_DIAG Diag, const int M, const int N, 350e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double alpha, const double *A, const int lda, 351e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang double *B, const int ldb); 352e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 353e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cgemm)(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, 354e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransB, const int M, const int N, 355e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int K, const void *alpha, const void *A, 356e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const void *B, const int ldb, 357e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *C, const int ldc); 358e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_csymm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 359e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const int M, const int N, 360e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 361e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *B, const int ldb, const void *beta, 362e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *C, const int ldc); 363e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_csyrk)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 364e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 365e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 366e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *C, const int ldc); 367e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_csyr2k)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 368e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 369e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 370e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *B, const int ldb, const void *beta, 371e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *C, const int ldc); 372e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ctrmm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 373e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 374e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_DIAG Diag, const int M, const int N, 375e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 376e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *B, const int ldb); 377e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ctrsm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 378e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 379e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_DIAG Diag, const int M, const int N, 380e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 381e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *B, const int ldb); 382e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 383e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zgemm)(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, 384e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE TransB, const int M, const int N, 385e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int K, const void *alpha, const void *A, 386e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const int lda, const void *B, const int ldb, 387e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *C, const int ldc); 388e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zsymm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 389e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const int M, const int N, 390e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 391e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *B, const int ldb, const void *beta, 392e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *C, const int ldc); 393e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zsyrk)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 394e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 395e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 396e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *beta, void *C, const int ldc); 397e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zsyr2k)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 398e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 399e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 400e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *B, const int ldb, const void *beta, 401e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *C, const int ldc); 402e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ztrmm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 403e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 404e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_DIAG Diag, const int M, const int N, 405e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 406e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *B, const int ldb); 407e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_ztrsm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 408e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 409e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_DIAG Diag, const int M, const int N, 410e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 411e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *B, const int ldb); 412e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 413e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 414e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang/* 415e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang * Routines with prefixes C and Z only 416e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang */ 417e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_chemm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 418e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const int M, const int N, 419e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 420e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *B, const int ldb, const void *beta, 421e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *C, const int ldc); 422e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cherk)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 423e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 424e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float alpha, const void *A, const int lda, 425e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const float beta, void *C, const int ldc); 426e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_cher2k)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 427e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 428e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 429e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *B, const int ldb, const float beta, 430e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *C, const int ldc); 431e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 432e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zhemm)(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, 433e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_UPLO Uplo, const int M, const int N, 434e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 435e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *B, const int ldb, const void *beta, 436e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *C, const int ldc); 437e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zherk)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 438e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 439e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double alpha, const void *A, const int lda, 440e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const double beta, void *C, const int ldc); 441e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangtypedef void (*FnPtr_cblas_zher2k)(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, 442e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const enum CBLAS_TRANSPOSE Trans, const int N, const int K, 443e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *alpha, const void *A, const int lda, 444e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang const void *B, const int ldb, const double beta, 445e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void *C, const int ldc); 446e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 44741ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wang 44841ab8faaf0d90238d42d8e2bbb7177467c10b4f6Miao Wang#ifdef RS_COMPATIBILITY_LIB 449e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang// Macros to help declare our function pointers for the dispatch table. 450e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#define RS_APPLY_MACRO_TO(x) \ 451e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang FnPtr_##x x; 452e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#include "rsCpuBLAS.inc" 453e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 454e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wangbool loadBLASLib() { 455e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang void* handle = NULL; 456e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang handle = dlopen("libblasV8.so", RTLD_LAZY | RTLD_LOCAL); 457e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 458e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang if (handle == NULL) { 459e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang return false; 460e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang } 461e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang 462e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang// Macros to help load the function pointers. 463e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#define RS_APPLY_MACRO_TO(x) \ 464e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang x = (FnPtr_##x)dlsym(handle, #x); \ 4654fcef498e1508f2f3a0b9332ea89b0064c2dc6e9Chih-Hung Hsieh if ((x) == nullptr) { \ 466e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang ALOGE("Failed to load " #x " for RS BLAS implementation."); \ 467e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang return false; \ 468e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang } 469e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#include "rsCpuBLAS.inc" 470e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang return true; 471e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang} 472e941f18202b9c9883ff81c63710f7faec5c988e4Miao Wang#endif 473