mkl_cblas_64.h 80 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201
  1. /*******************************************************************************
  2. * Copyright 1999-2022 Intel Corporation.
  3. *
  4. * This software and the related documents are Intel copyrighted materials, and
  5. * your use of them is governed by the express license under which they were
  6. * provided to you (License). Unless the License provides otherwise, you may not
  7. * use, modify, copy, publish, distribute, disclose or transmit this software or
  8. * the related documents without Intel's prior written permission.
  9. *
  10. * This software and the related documents are provided as is, with no express
  11. * or implied warranties, other than those that are expressly stated in the
  12. * License.
  13. *******************************************************************************/
  14. /*
  15. ! Content:
  16. ! Intel(R) oneAPI Math Kernel Library (oneMKL) CBLAS ILP64 interface
  17. !******************************************************************************/
  18. #ifndef __MKL_CBLAS_64_H__
  19. #define __MKL_CBLAS_64_H__
  20. #include <stddef.h>
  21. #include "mkl_types.h"
  22. #ifdef __cplusplus
  23. #if __cplusplus > 199711L
  24. #define NOTHROW noexcept
  25. #else
  26. #define NOTHROW throw()
  27. #endif
  28. #else
  29. #define NOTHROW
  30. #endif
  31. #ifdef __cplusplus
  32. extern "C" { /* Assume C declarations for C++ */
  33. #endif /* __cplusplus */
  34. #ifndef MKL_DECLSPEC
  35. #ifdef _WIN32
  36. #define MKL_DECLSPEC __declspec(dllexport)
  37. #else
  38. #define MKL_DECLSPEC
  39. #endif
  40. #endif
  41. #define CBLAS_INDEX_64 MKL_UINT64
  42. /*
  43. * ===========================================================================
  44. * Prototypes for level 1 BLAS functions (complex are recast as routines)
  45. * ===========================================================================
  46. */
  47. float cblas_sdot_64(const MKL_INT64 N, const float *X, const MKL_INT64 incX,
  48. const float *Y, const MKL_INT64 incY) NOTHROW;
  49. float cblas_sdoti_64(const MKL_INT64 N, const float *X, const MKL_INT64 *indx,
  50. const float *Y) NOTHROW;
  51. double cblas_ddot_64(const MKL_INT64 N, const double *X, const MKL_INT64 incX,
  52. const double *Y, const MKL_INT64 incY) NOTHROW;
  53. double cblas_ddoti_64(const MKL_INT64 N, const double *X, const MKL_INT64 *indx,
  54. const double *Y);
  55. double cblas_dsdot_64(const MKL_INT64 N, const float *X, const MKL_INT64 incX,
  56. const float *Y, const MKL_INT64 incY) NOTHROW;
  57. float cblas_sdsdot_64(const MKL_INT64 N, const float sb, const float *X,
  58. const MKL_INT64 incX, const float *Y, const MKL_INT64 incY) NOTHROW;
  59. /*
  60. * Functions having prefixes Z and C only
  61. */
  62. void cblas_cdotu_sub_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX,
  63. const void *Y, const MKL_INT64 incY, void *dotu) NOTHROW;
  64. void cblas_cdotui_sub_64(const MKL_INT64 N, const void *X, const MKL_INT64 *indx,
  65. const void *Y, void *dotui);
  66. void cblas_cdotc_sub_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX,
  67. const void *Y, const MKL_INT64 incY, void *dotc) NOTHROW;
  68. void cblas_cdotci_sub_64(const MKL_INT64 N, const void *X, const MKL_INT64 *indx,
  69. const void *Y, void *dotui);
  70. void cblas_zdotu_sub_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX,
  71. const void *Y, const MKL_INT64 incY, void *dotu) NOTHROW;
  72. void cblas_zdotui_sub_64(const MKL_INT64 N, const void *X, const MKL_INT64 *indx,
  73. const void *Y, void *dotui);
  74. void cblas_zdotc_sub_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX,
  75. const void *Y, const MKL_INT64 incY, void *dotc) NOTHROW;
  76. void cblas_zdotci_sub_64(const MKL_INT64 N, const void *X, const MKL_INT64 *indx,
  77. const void *Y, void *dotui);
  78. /*
  79. * Functions having prefixes S D SC DZ
  80. */
  81. float cblas_snrm2_64(const MKL_INT64 N, const float *X, const MKL_INT64 incX) NOTHROW;
  82. float cblas_sasum_64(const MKL_INT64 N, const float *X, const MKL_INT64 incX) NOTHROW;
  83. double cblas_dnrm2_64(const MKL_INT64 N, const double *X, const MKL_INT64 incX) NOTHROW;
  84. double cblas_dasum_64(const MKL_INT64 N, const double *X, const MKL_INT64 incX) NOTHROW;
  85. float cblas_scnrm2_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX) NOTHROW;
  86. float cblas_scasum_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX) NOTHROW;
  87. double cblas_dznrm2_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX) NOTHROW;
  88. double cblas_dzasum_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX) NOTHROW;
  89. /*
  90. * Functions having standard 4 prefixes (S D C Z)
  91. */
  92. CBLAS_INDEX_64 cblas_isamax_64(const MKL_INT64 N, const float *X, const MKL_INT64 incX) NOTHROW;
  93. CBLAS_INDEX_64 cblas_idamax_64(const MKL_INT64 N, const double *X, const MKL_INT64 incX) NOTHROW;
  94. CBLAS_INDEX_64 cblas_icamax_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX) NOTHROW;
  95. CBLAS_INDEX_64 cblas_izamax_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX) NOTHROW;
  96. CBLAS_INDEX_64 cblas_isamin_64(const MKL_INT64 N, const float *X, const MKL_INT64 incX) NOTHROW;
  97. CBLAS_INDEX_64 cblas_idamin_64(const MKL_INT64 N, const double *X, const MKL_INT64 incX) NOTHROW;
  98. CBLAS_INDEX_64 cblas_icamin_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX) NOTHROW;
  99. CBLAS_INDEX_64 cblas_izamin_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX) NOTHROW;
  100. /*
  101. * ===========================================================================
  102. * Prototypes for level 1 BLAS routines
  103. * ===========================================================================
  104. */
  105. /*
  106. * Routines with standard 4 prefixes (s, d, c, z)
  107. */
  108. void cblas_sswap_64(const MKL_INT64 N, float *X, const MKL_INT64 incX,
  109. float *Y, const MKL_INT64 incY) NOTHROW;
  110. void cblas_scopy_64(const MKL_INT64 N, const float *X, const MKL_INT64 incX,
  111. float *Y, const MKL_INT64 incY) NOTHROW;
  112. void cblas_saxpy_64(const MKL_INT64 N, const float alpha, const float *X,
  113. const MKL_INT64 incX, float *Y, const MKL_INT64 incY) NOTHROW;
  114. void cblas_saxpby_64(const MKL_INT64 N, const float alpha, const float *X,
  115. const MKL_INT64 incX, const float beta, float *Y, const MKL_INT64 incY) NOTHROW;
  116. void cblas_saxpyi_64(const MKL_INT64 N, const float alpha, const float *X,
  117. const MKL_INT64 *indx, float *Y);
  118. void cblas_sgthr_64(const MKL_INT64 N, const float *Y, float *X,
  119. const MKL_INT64 *indx);
  120. void cblas_sgthrz_64(const MKL_INT64 N, float *Y, float *X,
  121. const MKL_INT64 *indx);
  122. void cblas_ssctr_64(const MKL_INT64 N, const float *X, const MKL_INT64 *indx,
  123. float *Y);
  124. void cblas_dswap_64(const MKL_INT64 N, double *X, const MKL_INT64 incX,
  125. double *Y, const MKL_INT64 incY) NOTHROW;
  126. void cblas_dcopy_64(const MKL_INT64 N, const double *X, const MKL_INT64 incX,
  127. double *Y, const MKL_INT64 incY) NOTHROW;
  128. void cblas_daxpy_64(const MKL_INT64 N, const double alpha, const double *X,
  129. const MKL_INT64 incX, double *Y, const MKL_INT64 incY) NOTHROW;
  130. void cblas_daxpby_64(const MKL_INT64 N, const double alpha, const double *X,
  131. const MKL_INT64 incX, const double beta, double *Y, const MKL_INT64 incY) NOTHROW;
  132. void cblas_daxpyi_64(const MKL_INT64 N, const double alpha, const double *X,
  133. const MKL_INT64 *indx, double *Y);
  134. void cblas_dgthr_64(const MKL_INT64 N, const double *Y, double *X,
  135. const MKL_INT64 *indx);
  136. void cblas_dgthrz_64(const MKL_INT64 N, double *Y, double *X,
  137. const MKL_INT64 *indx);
  138. void cblas_dsctr_64(const MKL_INT64 N, const double *X, const MKL_INT64 *indx,
  139. double *Y);
  140. void cblas_cswap_64(const MKL_INT64 N, void *X, const MKL_INT64 incX,
  141. void *Y, const MKL_INT64 incY) NOTHROW;
  142. void cblas_ccopy_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX,
  143. void *Y, const MKL_INT64 incY) NOTHROW;
  144. void cblas_caxpy_64(const MKL_INT64 N, const void *alpha, const void *X,
  145. const MKL_INT64 incX, void *Y, const MKL_INT64 incY) NOTHROW;
  146. void cblas_caxpby_64(const MKL_INT64 N, const void *alpha, const void *X,
  147. const MKL_INT64 incX, const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  148. void cblas_caxpyi_64(const MKL_INT64 N, const void *alpha, const void *X,
  149. const MKL_INT64 *indx, void *Y);
  150. void cblas_cgthr_64(const MKL_INT64 N, const void *Y, void *X,
  151. const MKL_INT64 *indx);
  152. void cblas_cgthrz_64(const MKL_INT64 N, void *Y, void *X,
  153. const MKL_INT64 *indx);
  154. void cblas_csctr_64(const MKL_INT64 N, const void *X, const MKL_INT64 *indx,
  155. void *Y);
  156. void cblas_zswap_64(const MKL_INT64 N, void *X, const MKL_INT64 incX,
  157. void *Y, const MKL_INT64 incY) NOTHROW;
  158. void cblas_zcopy_64(const MKL_INT64 N, const void *X, const MKL_INT64 incX,
  159. void *Y, const MKL_INT64 incY) NOTHROW;
  160. void cblas_zaxpy_64(const MKL_INT64 N, const void *alpha, const void *X,
  161. const MKL_INT64 incX, void *Y, const MKL_INT64 incY) NOTHROW;
  162. void cblas_zaxpby_64(const MKL_INT64 N, const void *alpha, const void *X,
  163. const MKL_INT64 incX, const void *beta, void *Y, const MKL_INT64 incY) NOTHROW ;
  164. void cblas_zaxpyi_64(const MKL_INT64 N, const void *alpha, const void *X,
  165. const MKL_INT64 *indx, void *Y);
  166. void cblas_zgthr_64(const MKL_INT64 N, const void *Y, void *X,
  167. const MKL_INT64 *indx);
  168. void cblas_zgthrz_64(const MKL_INT64 N, void *Y, void *X,
  169. const MKL_INT64 *indx);
  170. void cblas_zsctr_64(const MKL_INT64 N, const void *X, const MKL_INT64 *indx,
  171. void *Y);
  172. /*
  173. * Routines with S and D prefix only
  174. */
  175. void cblas_sroti_64(const MKL_INT64 N, float *X, const MKL_INT64 *indx,
  176. float *Y, const float c, const float s);
  177. void cblas_srotm_64(const MKL_INT64 N, float *X, const MKL_INT64 incX,
  178. float *Y, const MKL_INT64 incY, const float *P) NOTHROW;
  179. void cblas_drotm_64(const MKL_INT64 N, double *X, const MKL_INT64 incX,
  180. double *Y, const MKL_INT64 incY, const double *P) NOTHROW;
  181. void cblas_droti_64(const MKL_INT64 N, double *X, const MKL_INT64 *indx,
  182. double *Y, const double c, const double s);
  183. /*
  184. * Routines with S D C Z CS and ZD prefixes
  185. */
  186. void cblas_sscal_64(const MKL_INT64 N, const float alpha, float *X, const MKL_INT64 incX) NOTHROW;
  187. void cblas_dscal_64(const MKL_INT64 N, const double alpha, double *X, const MKL_INT64 incX) NOTHROW;
  188. void cblas_cscal_64(const MKL_INT64 N, const void *alpha, void *X, const MKL_INT64 incX) NOTHROW;
  189. void cblas_zscal_64(const MKL_INT64 N, const void *alpha, void *X, const MKL_INT64 incX) NOTHROW;
  190. void cblas_csscal_64(const MKL_INT64 N, const float alpha, void *X, const MKL_INT64 incX) NOTHROW;
  191. void cblas_zdscal_64(const MKL_INT64 N, const double alpha, void *X, const MKL_INT64 incX) NOTHROW;
  192. void cblas_srot_64(const MKL_INT64 N, float *X, const MKL_INT64 incX,
  193. float *Y, const MKL_INT64 incY, const float c, const float s) NOTHROW;
  194. void cblas_drot_64(const MKL_INT64 N, double *X, const MKL_INT64 incX,
  195. double *Y, const MKL_INT64 incY, const double c, const double s) NOTHROW;
  196. void cblas_crot_64(const MKL_INT64 N, void *X, const MKL_INT64 incX,
  197. void *Y, const MKL_INT64 incY, const float c, const void* s) NOTHROW;
  198. void cblas_zrot_64(const MKL_INT64 N, void *X, const MKL_INT64 incX,
  199. void *Y, const MKL_INT64 incY, const double c, const void* s) NOTHROW;
  200. void cblas_csrot_64(const MKL_INT64 N, void *X, const MKL_INT64 incX,
  201. void *Y, const MKL_INT64 incY, const float c, const float s) NOTHROW;
  202. void cblas_zdrot_64(const MKL_INT64 N, void *X, const MKL_INT64 incX,
  203. void *Y, const MKL_INT64 incY, const double c, const double s) NOTHROW;
  204. /*
  205. * ===========================================================================
  206. * Prototypes for level 2 BLAS
  207. * ===========================================================================
  208. */
  209. /*
  210. * Routines with standard 4 prefixes (S, D, C, Z)
  211. */
  212. void cblas_sgemv_64(const CBLAS_LAYOUT Layout,
  213. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  214. const float alpha, const float *A, const MKL_INT64 lda,
  215. const float *X, const MKL_INT64 incX, const float beta,
  216. float *Y, const MKL_INT64 incY) NOTHROW;
  217. void cblas_sgbmv_64(const CBLAS_LAYOUT Layout,
  218. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  219. const MKL_INT64 KL, const MKL_INT64 KU, const float alpha,
  220. const float *A, const MKL_INT64 lda, const float *X,
  221. const MKL_INT64 incX, const float beta, float *Y, const MKL_INT64 incY) NOTHROW;
  222. void cblas_strmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  223. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  224. const MKL_INT64 N, const float *A, const MKL_INT64 lda,
  225. float *X, const MKL_INT64 incX) NOTHROW;
  226. void cblas_stbmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  227. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  228. const MKL_INT64 N, const MKL_INT64 K, const float *A, const MKL_INT64 lda,
  229. float *X, const MKL_INT64 incX) NOTHROW;
  230. void cblas_stpmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  231. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  232. const MKL_INT64 N, const float *Ap, float *X, const MKL_INT64 incX) NOTHROW;
  233. void cblas_strsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  234. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  235. const MKL_INT64 N, const float *A, const MKL_INT64 lda, float *X,
  236. const MKL_INT64 incX) NOTHROW;
  237. void cblas_stbsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  238. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  239. const MKL_INT64 N, const MKL_INT64 K, const float *A, const MKL_INT64 lda,
  240. float *X, const MKL_INT64 incX) NOTHROW;
  241. void cblas_stpsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  242. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  243. const MKL_INT64 N, const float *Ap, float *X, const MKL_INT64 incX) NOTHROW;
  244. void cblas_dgemv_64(const CBLAS_LAYOUT Layout,
  245. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  246. const double alpha, const double *A, const MKL_INT64 lda,
  247. const double *X, const MKL_INT64 incX, const double beta,
  248. double *Y, const MKL_INT64 incY) NOTHROW;
  249. void cblas_dgbmv_64(const CBLAS_LAYOUT Layout,
  250. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  251. const MKL_INT64 KL, const MKL_INT64 KU, const double alpha,
  252. const double *A, const MKL_INT64 lda, const double *X,
  253. const MKL_INT64 incX, const double beta, double *Y, const MKL_INT64 incY) NOTHROW;
  254. void cblas_dtrmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  255. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  256. const MKL_INT64 N, const double *A, const MKL_INT64 lda,
  257. double *X, const MKL_INT64 incX) NOTHROW;
  258. void cblas_dtbmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  259. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  260. const MKL_INT64 N, const MKL_INT64 K, const double *A, const MKL_INT64 lda,
  261. double *X, const MKL_INT64 incX) NOTHROW;
  262. void cblas_dtpmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  263. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  264. const MKL_INT64 N, const double *Ap, double *X, const MKL_INT64 incX) NOTHROW;
  265. void cblas_dtrsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  266. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  267. const MKL_INT64 N, const double *A, const MKL_INT64 lda, double *X,
  268. const MKL_INT64 incX) NOTHROW;
  269. void cblas_dtbsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  270. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  271. const MKL_INT64 N, const MKL_INT64 K, const double *A, const MKL_INT64 lda,
  272. double *X, const MKL_INT64 incX) NOTHROW;
  273. void cblas_dtpsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  274. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  275. const MKL_INT64 N, const double *Ap, double *X, const MKL_INT64 incX) NOTHROW;
  276. void cblas_cgemv_64(const CBLAS_LAYOUT Layout,
  277. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  278. const void *alpha, const void *A, const MKL_INT64 lda,
  279. const void *X, const MKL_INT64 incX, const void *beta,
  280. void *Y, const MKL_INT64 incY) NOTHROW;
  281. void cblas_cgbmv_64(const CBLAS_LAYOUT Layout,
  282. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  283. const MKL_INT64 KL, const MKL_INT64 KU, const void *alpha,
  284. const void *A, const MKL_INT64 lda, const void *X,
  285. const MKL_INT64 incX, const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  286. void cblas_ctrmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  287. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  288. const MKL_INT64 N, const void *A, const MKL_INT64 lda,
  289. void *X, const MKL_INT64 incX) NOTHROW;
  290. void cblas_ctbmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  291. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  292. const MKL_INT64 N, const MKL_INT64 K, const void *A, const MKL_INT64 lda,
  293. void *X, const MKL_INT64 incX) NOTHROW;
  294. void cblas_ctpmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  295. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  296. const MKL_INT64 N, const void *Ap, void *X, const MKL_INT64 incX) NOTHROW;
  297. void cblas_ctrsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  298. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  299. const MKL_INT64 N, const void *A, const MKL_INT64 lda, void *X,
  300. const MKL_INT64 incX) NOTHROW;
  301. void cblas_ctbsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  302. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  303. const MKL_INT64 N, const MKL_INT64 K, const void *A, const MKL_INT64 lda,
  304. void *X, const MKL_INT64 incX) NOTHROW;
  305. void cblas_ctpsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  306. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  307. const MKL_INT64 N, const void *Ap, void *X, const MKL_INT64 incX) NOTHROW;
  308. void cblas_zgemv_64(const CBLAS_LAYOUT Layout,
  309. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  310. const void *alpha, const void *A, const MKL_INT64 lda,
  311. const void *X, const MKL_INT64 incX, const void *beta,
  312. void *Y, const MKL_INT64 incY) NOTHROW;
  313. void cblas_zgbmv_64(const CBLAS_LAYOUT Layout,
  314. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  315. const MKL_INT64 KL, const MKL_INT64 KU, const void *alpha,
  316. const void *A, const MKL_INT64 lda, const void *X,
  317. const MKL_INT64 incX, const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  318. void cblas_ztrmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  319. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  320. const MKL_INT64 N, const void *A, const MKL_INT64 lda,
  321. void *X, const MKL_INT64 incX) NOTHROW;
  322. void cblas_ztbmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  323. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  324. const MKL_INT64 N, const MKL_INT64 K, const void *A, const MKL_INT64 lda,
  325. void *X, const MKL_INT64 incX) NOTHROW;
  326. void cblas_ztpmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  327. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  328. const MKL_INT64 N, const void *Ap, void *X, const MKL_INT64 incX) NOTHROW;
  329. void cblas_ztrsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  330. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  331. const MKL_INT64 N, const void *A, const MKL_INT64 lda, void *X,
  332. const MKL_INT64 incX) NOTHROW;
  333. void cblas_ztbsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  334. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  335. const MKL_INT64 N, const MKL_INT64 K, const void *A, const MKL_INT64 lda,
  336. void *X, const MKL_INT64 incX) NOTHROW;
  337. void cblas_ztpsv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  338. const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag,
  339. const MKL_INT64 N, const void *Ap, void *X, const MKL_INT64 incX) NOTHROW;
  340. /*
  341. * Routines with S and D prefixes only
  342. */
  343. void cblas_ssymv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  344. const MKL_INT64 N, const float alpha, const float *A,
  345. const MKL_INT64 lda, const float *X, const MKL_INT64 incX,
  346. const float beta, float *Y, const MKL_INT64 incY) NOTHROW;
  347. void cblas_ssbmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  348. const MKL_INT64 N, const MKL_INT64 K, const float alpha, const float *A,
  349. const MKL_INT64 lda, const float *X, const MKL_INT64 incX,
  350. const float beta, float *Y, const MKL_INT64 incY) NOTHROW;
  351. void cblas_sspmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  352. const MKL_INT64 N, const float alpha, const float *Ap,
  353. const float *X, const MKL_INT64 incX,
  354. const float beta, float *Y, const MKL_INT64 incY) NOTHROW;
  355. void cblas_sger_64(const CBLAS_LAYOUT Layout, const MKL_INT64 M, const MKL_INT64 N,
  356. const float alpha, const float *X, const MKL_INT64 incX,
  357. const float *Y, const MKL_INT64 incY, float *A, const MKL_INT64 lda) NOTHROW;
  358. void cblas_ssyr_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  359. const MKL_INT64 N, const float alpha, const float *X,
  360. const MKL_INT64 incX, float *A, const MKL_INT64 lda) NOTHROW;
  361. void cblas_sspr_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  362. const MKL_INT64 N, const float alpha, const float *X,
  363. const MKL_INT64 incX, float *Ap) NOTHROW;
  364. void cblas_ssyr2_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  365. const MKL_INT64 N, const float alpha, const float *X,
  366. const MKL_INT64 incX, const float *Y, const MKL_INT64 incY, float *A,
  367. const MKL_INT64 lda) NOTHROW;
  368. void cblas_sspr2_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  369. const MKL_INT64 N, const float alpha, const float *X,
  370. const MKL_INT64 incX, const float *Y, const MKL_INT64 incY, float *A) NOTHROW;
  371. void cblas_dsymv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  372. const MKL_INT64 N, const double alpha, const double *A,
  373. const MKL_INT64 lda, const double *X, const MKL_INT64 incX,
  374. const double beta, double *Y, const MKL_INT64 incY) NOTHROW;
  375. void cblas_dsbmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  376. const MKL_INT64 N, const MKL_INT64 K, const double alpha, const double *A,
  377. const MKL_INT64 lda, const double *X, const MKL_INT64 incX,
  378. const double beta, double *Y, const MKL_INT64 incY) NOTHROW;
  379. void cblas_dspmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  380. const MKL_INT64 N, const double alpha, const double *Ap,
  381. const double *X, const MKL_INT64 incX,
  382. const double beta, double *Y, const MKL_INT64 incY) NOTHROW;
  383. void cblas_dger_64(const CBLAS_LAYOUT Layout, const MKL_INT64 M, const MKL_INT64 N,
  384. const double alpha, const double *X, const MKL_INT64 incX,
  385. const double *Y, const MKL_INT64 incY, double *A, const MKL_INT64 lda) NOTHROW;
  386. void cblas_dsyr_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  387. const MKL_INT64 N, const double alpha, const double *X,
  388. const MKL_INT64 incX, double *A, const MKL_INT64 lda) NOTHROW;
  389. void cblas_dspr_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  390. const MKL_INT64 N, const double alpha, const double *X,
  391. const MKL_INT64 incX, double *Ap) NOTHROW;
  392. void cblas_dsyr2_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  393. const MKL_INT64 N, const double alpha, const double *X,
  394. const MKL_INT64 incX, const double *Y, const MKL_INT64 incY, double *A,
  395. const MKL_INT64 lda) NOTHROW;
  396. void cblas_dspr2_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  397. const MKL_INT64 N, const double alpha, const double *X,
  398. const MKL_INT64 incX, const double *Y, const MKL_INT64 incY, double *A) NOTHROW;
  399. /*
  400. * Routines with C and Z prefixes only
  401. */
  402. void cblas_chemv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  403. const MKL_INT64 N, const void *alpha, const void *A,
  404. const MKL_INT64 lda, const void *X, const MKL_INT64 incX,
  405. const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  406. void cblas_chbmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  407. const MKL_INT64 N, const MKL_INT64 K, const void *alpha, const void *A,
  408. const MKL_INT64 lda, const void *X, const MKL_INT64 incX,
  409. const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  410. void cblas_chpmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  411. const MKL_INT64 N, const void *alpha, const void *Ap,
  412. const void *X, const MKL_INT64 incX,
  413. const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  414. void cblas_cgeru_64(const CBLAS_LAYOUT Layout, const MKL_INT64 M, const MKL_INT64 N,
  415. const void *alpha, const void *X, const MKL_INT64 incX,
  416. const void *Y, const MKL_INT64 incY, void *A, const MKL_INT64 lda) NOTHROW;
  417. void cblas_cgerc_64(const CBLAS_LAYOUT Layout, const MKL_INT64 M, const MKL_INT64 N,
  418. const void *alpha, const void *X, const MKL_INT64 incX,
  419. const void *Y, const MKL_INT64 incY, void *A, const MKL_INT64 lda) NOTHROW;
  420. void cblas_cher_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  421. const MKL_INT64 N, const float alpha, const void *X, const MKL_INT64 incX,
  422. void *A, const MKL_INT64 lda) NOTHROW;
  423. void cblas_chpr_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  424. const MKL_INT64 N, const float alpha, const void *X,
  425. const MKL_INT64 incX, void *A) NOTHROW;
  426. void cblas_cher2_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo, const MKL_INT64 N,
  427. const void *alpha, const void *X, const MKL_INT64 incX,
  428. const void *Y, const MKL_INT64 incY, void *A, const MKL_INT64 lda) NOTHROW;
  429. void cblas_chpr2_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo, const MKL_INT64 N,
  430. const void *alpha, const void *X, const MKL_INT64 incX,
  431. const void *Y, const MKL_INT64 incY, void *Ap) NOTHROW;
  432. void cblas_zhemv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  433. const MKL_INT64 N, const void *alpha, const void *A,
  434. const MKL_INT64 lda, const void *X, const MKL_INT64 incX,
  435. const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  436. void cblas_zhbmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  437. const MKL_INT64 N, const MKL_INT64 K, const void *alpha, const void *A,
  438. const MKL_INT64 lda, const void *X, const MKL_INT64 incX,
  439. const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  440. void cblas_zhpmv_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  441. const MKL_INT64 N, const void *alpha, const void *Ap,
  442. const void *X, const MKL_INT64 incX,
  443. const void *beta, void *Y, const MKL_INT64 incY) NOTHROW;
  444. void cblas_zgeru_64(const CBLAS_LAYOUT Layout, const MKL_INT64 M, const MKL_INT64 N,
  445. const void *alpha, const void *X, const MKL_INT64 incX,
  446. const void *Y, const MKL_INT64 incY, void *A, const MKL_INT64 lda) NOTHROW;
  447. void cblas_zgerc_64(const CBLAS_LAYOUT Layout, const MKL_INT64 M, const MKL_INT64 N,
  448. const void *alpha, const void *X, const MKL_INT64 incX,
  449. const void *Y, const MKL_INT64 incY, void *A, const MKL_INT64 lda) NOTHROW;
  450. void cblas_zher_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  451. const MKL_INT64 N, const double alpha, const void *X, const MKL_INT64 incX,
  452. void *A, const MKL_INT64 lda) NOTHROW;
  453. void cblas_zhpr_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  454. const MKL_INT64 N, const double alpha, const void *X,
  455. const MKL_INT64 incX, void *A) NOTHROW;
  456. void cblas_zher2_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo, const MKL_INT64 N,
  457. const void *alpha, const void *X, const MKL_INT64 incX,
  458. const void *Y, const MKL_INT64 incY, void *A, const MKL_INT64 lda) NOTHROW;
  459. void cblas_zhpr2_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo, const MKL_INT64 N,
  460. const void *alpha, const void *X, const MKL_INT64 incX,
  461. const void *Y, const MKL_INT64 incY, void *Ap) NOTHROW;
  462. /*
  463. * ===========================================================================
  464. * Prototypes for level 3 BLAS
  465. * ===========================================================================
  466. */
  467. /*
  468. * Routines with standard 4 prefixes (S, D, C, Z)
  469. */
  470. void cblas_sgemm_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  471. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  472. const MKL_INT64 K, const float alpha, const float *A,
  473. const MKL_INT64 lda, const float *B, const MKL_INT64 ldb,
  474. const float beta, float *C, const MKL_INT64 ldc) NOTHROW;
  475. void cblas_sgemm_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE *TransA_Array,
  476. const CBLAS_TRANSPOSE *TransB_Array, const MKL_INT64 *M_Array, const MKL_INT64 *N_Array,
  477. const MKL_INT64 *K_Array, const float *alpha_Array, const float **A_Array,
  478. const MKL_INT64 *lda_Array, const float **B_Array, const MKL_INT64 *ldb_Array,
  479. const float *beta_Array, float **C_Array, const MKL_INT64 *ldc_Array,
  480. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  481. void cblas_sgemm_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  482. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  483. const MKL_INT64 K, const float alpha, const float *A,
  484. const MKL_INT64 lda, const MKL_INT64 stridea,
  485. const float *B, const MKL_INT64 ldb, const MKL_INT64 strideb,
  486. const float beta, float *C, const MKL_INT64 ldc, const MKL_INT64 stridec,
  487. const MKL_INT64 batch_size) NOTHROW;
  488. void cblas_sgemmt_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  489. const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB,
  490. const MKL_INT64 N, const MKL_INT64 K,
  491. const float alpha, const float *A, const MKL_INT64 lda,
  492. const float *B, const MKL_INT64 ldb, const float beta,
  493. float *C, const MKL_INT64 ldc) NOTHROW;
  494. void cblas_ssymm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  495. const CBLAS_UPLO Uplo, const MKL_INT64 M, const MKL_INT64 N,
  496. const float alpha, const float *A, const MKL_INT64 lda,
  497. const float *B, const MKL_INT64 ldb, const float beta,
  498. float *C, const MKL_INT64 ldc) NOTHROW;
  499. void cblas_ssyrk_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  500. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  501. const float alpha, const float *A, const MKL_INT64 lda,
  502. const float beta, float *C, const MKL_INT64 ldc) NOTHROW;
  503. void cblas_ssyrk_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  504. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  505. const float alpha, const float *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  506. const float beta, float *C, const MKL_INT64 ldc, const MKL_INT64 stridec,
  507. const MKL_INT64 batch_size) NOTHROW;
  508. void cblas_ssyrk_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO *Uplo_array,
  509. const CBLAS_TRANSPOSE *Trans_array, const MKL_INT64 *N_array, const MKL_INT64 *K_array,
  510. const float *alpha_array, const float **A_array, const MKL_INT64 *lda_array,
  511. const float *beta_array, float **C_array, const MKL_INT64 *ldc_array,
  512. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  513. void cblas_ssyr2k_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  514. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  515. const float alpha, const float *A, const MKL_INT64 lda,
  516. const float *B, const MKL_INT64 ldb, const float beta,
  517. float *C, const MKL_INT64 ldc) NOTHROW;
  518. void cblas_strmm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  519. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  520. const CBLAS_DIAG Diag, const MKL_INT64 M, const MKL_INT64 N,
  521. const float alpha, const float *A, const MKL_INT64 lda,
  522. float *B, const MKL_INT64 ldb) NOTHROW;
  523. void cblas_strsm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  524. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  525. const CBLAS_DIAG Diag, const MKL_INT64 M, const MKL_INT64 N,
  526. const float alpha, const float *A, const MKL_INT64 lda,
  527. float *B, const MKL_INT64 ldb) NOTHROW;
  528. void cblas_strsm_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE *Side_Array,
  529. const CBLAS_UPLO *Uplo_Array, const CBLAS_TRANSPOSE *TransA_Array,
  530. const CBLAS_DIAG *Diag_Array, const MKL_INT64 *M_Array,
  531. const MKL_INT64 *N_Array, const float *alpha_Array,
  532. const float **A_Array, const MKL_INT64 *lda_Array,
  533. float **B_Array, const MKL_INT64 *ldb_Array,
  534. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  535. void cblas_strsm_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  536. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  537. const CBLAS_DIAG Diag, const MKL_INT64 M,
  538. const MKL_INT64 N, const float alpha,
  539. const float *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  540. float *B, const MKL_INT64 ldb, const MKL_INT64 strideb,
  541. const MKL_INT64 batch_size) NOTHROW;
  542. void cblas_dgemm_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  543. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  544. const MKL_INT64 K, const double alpha, const double *A,
  545. const MKL_INT64 lda, const double *B, const MKL_INT64 ldb,
  546. const double beta, double *C, const MKL_INT64 ldc) NOTHROW;
  547. void cblas_dgemm_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE *TransA_Array,
  548. const CBLAS_TRANSPOSE *TransB_Array, const MKL_INT64 *M_Array, const MKL_INT64 *N_Array,
  549. const MKL_INT64 *K_Array, const double *alpha_Array, const double **A_Array,
  550. const MKL_INT64 *lda_Array, const double **B_Array, const MKL_INT64* ldb_Array,
  551. const double *beta_Array, double **C_Array, const MKL_INT64 *ldc_Array,
  552. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  553. void cblas_dgemm_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  554. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  555. const MKL_INT64 K, const double alpha, const double *A,
  556. const MKL_INT64 lda, const MKL_INT64 stridea,
  557. const double *B, const MKL_INT64 ldb, const MKL_INT64 strideb,
  558. const double beta, double *C, const MKL_INT64 ldc, const MKL_INT64 stridec,
  559. const MKL_INT64 batch_size) NOTHROW;
  560. void cblas_dgemmt_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  561. const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB,
  562. const MKL_INT64 N, const MKL_INT64 K,
  563. const double alpha, const double *A, const MKL_INT64 lda,
  564. const double *B, const MKL_INT64 ldb, const double beta,
  565. double *C, const MKL_INT64 ldc) NOTHROW;
  566. void cblas_dsymm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  567. const CBLAS_UPLO Uplo, const MKL_INT64 M, const MKL_INT64 N,
  568. const double alpha, const double *A, const MKL_INT64 lda,
  569. const double *B, const MKL_INT64 ldb, const double beta,
  570. double *C, const MKL_INT64 ldc) NOTHROW;
  571. void cblas_dsyrk_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  572. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  573. const double alpha, const double *A, const MKL_INT64 lda,
  574. const double beta, double *C, const MKL_INT64 ldc) NOTHROW;
  575. void cblas_dsyrk_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO *Uplo_array,
  576. const CBLAS_TRANSPOSE *Trans_array, const MKL_INT64 *N_array, const MKL_INT64 *K_array,
  577. const double *alpha_array, const double **A_array, const MKL_INT64 *lda_array,
  578. const double *beta_array, double **C_array, const MKL_INT64 *ldc_array,
  579. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  580. void cblas_dsyrk_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  581. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  582. const double alpha, const double *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  583. const double beta, double *C, const MKL_INT64 ldc, const MKL_INT64 stridec,
  584. const MKL_INT64 batch_size) NOTHROW;
  585. void cblas_dsyr2k_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  586. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  587. const double alpha, const double *A, const MKL_INT64 lda,
  588. const double *B, const MKL_INT64 ldb, const double beta,
  589. double *C, const MKL_INT64 ldc) NOTHROW;
  590. void cblas_dtrmm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  591. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  592. const CBLAS_DIAG Diag, const MKL_INT64 M, const MKL_INT64 N,
  593. const double alpha, const double *A, const MKL_INT64 lda,
  594. double *B, const MKL_INT64 ldb) NOTHROW;
  595. void cblas_dtrsm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  596. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  597. const CBLAS_DIAG Diag, const MKL_INT64 M, const MKL_INT64 N,
  598. const double alpha, const double *A, const MKL_INT64 lda,
  599. double *B, const MKL_INT64 ldb) NOTHROW;
  600. void cblas_dtrsm_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE *Side_Array,
  601. const CBLAS_UPLO *Uplo_Array, const CBLAS_TRANSPOSE *Transa_Array,
  602. const CBLAS_DIAG *Diag_Array, const MKL_INT64 *M_Array,
  603. const MKL_INT64 *N_Array, const double *alpha_Array,
  604. const double **A_Array, const MKL_INT64 *lda_Array,
  605. double **B_Array, const MKL_INT64 *ldb_Array,
  606. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  607. void cblas_dtrsm_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  608. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  609. const CBLAS_DIAG Diag, const MKL_INT64 M,
  610. const MKL_INT64 N, const double alpha,
  611. const double *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  612. double *B, const MKL_INT64 ldb, const MKL_INT64 strideb,
  613. const MKL_INT64 batch_size) NOTHROW;
  614. void cblas_cgemm_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  615. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  616. const MKL_INT64 K, const void *alpha, const void *A,
  617. const MKL_INT64 lda, const void *B, const MKL_INT64 ldb,
  618. const void *beta, void *C, const MKL_INT64 ldc) NOTHROW;
  619. void cblas_cgemm3m_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  620. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  621. const MKL_INT64 K, const void *alpha, const void *A,
  622. const MKL_INT64 lda, const void *B, const MKL_INT64 ldb,
  623. const void *beta, void *C, const MKL_INT64 ldc);
  624. void cblas_cgemm_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE *TransA_Array,
  625. const CBLAS_TRANSPOSE *TransB_Array, const MKL_INT64 *M_Array, const MKL_INT64 *N_Array,
  626. const MKL_INT64 *K_Array, const void *alpha_Array, const void **A_Array,
  627. const MKL_INT64 *lda_Array, const void **B_Array, const MKL_INT64* ldb_Array,
  628. const void *beta_Array, void **C_Array, const MKL_INT64 *ldc_Array,
  629. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  630. void cblas_cgemm_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  631. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  632. const MKL_INT64 K, const void *alpha, const void *A,
  633. const MKL_INT64 lda, const MKL_INT64 stridea,
  634. const void *B, const MKL_INT64 ldb, const MKL_INT64 strideb,
  635. const void *beta, void *C, const MKL_INT64 ldc, const MKL_INT64 stridec,
  636. const MKL_INT64 batch_size) NOTHROW;
  637. void cblas_cgemm3m_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE *TransA_Array,
  638. const CBLAS_TRANSPOSE *TransB_Array, const MKL_INT64 *M_Array, const MKL_INT64 *N_Array,
  639. const MKL_INT64 *K_Array, const void *alpha_Array, const void **A_Array,
  640. const MKL_INT64 *lda_Array, const void **B_Array, const MKL_INT64* ldb_Array,
  641. const void *beta_Array, void **C_Array, const MKL_INT64 *ldc_Array,
  642. const MKL_INT64 group_count, const MKL_INT64 *group_size);
  643. void cblas_cgemmt_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  644. const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB,
  645. const MKL_INT64 N, const MKL_INT64 K,
  646. const void *alpha, const void *A, const MKL_INT64 lda,
  647. const void *B, const MKL_INT64 ldb, const void *beta,
  648. void *C, const MKL_INT64 ldc) NOTHROW;
  649. void cblas_csymm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  650. const CBLAS_UPLO Uplo, const MKL_INT64 M, const MKL_INT64 N,
  651. const void *alpha, const void *A, const MKL_INT64 lda,
  652. const void *B, const MKL_INT64 ldb, const void *beta,
  653. void *C, const MKL_INT64 ldc) NOTHROW;
  654. void cblas_csyrk_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  655. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  656. const void *alpha, const void *A, const MKL_INT64 lda,
  657. const void *beta, void *C, const MKL_INT64 ldc) NOTHROW;
  658. void cblas_csyrk_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO *Uplo_array,
  659. const CBLAS_TRANSPOSE *Trans_array, const MKL_INT64 *N_array, const MKL_INT64 *K_array,
  660. const void *alpha_array, const void **A_array, const MKL_INT64 *lda_array,
  661. const void *beta_array, void **C_array, const MKL_INT64 *ldc_array,
  662. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  663. void cblas_csyrk_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  664. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  665. const void *alpha, const void *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  666. const void *beta, void *C, const MKL_INT64 ldc, const MKL_INT64 stridec,
  667. const MKL_INT64 batch_size) NOTHROW;
  668. void cblas_csyr2k_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  669. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  670. const void *alpha, const void *A, const MKL_INT64 lda,
  671. const void *B, const MKL_INT64 ldb, const void *beta,
  672. void *C, const MKL_INT64 ldc) NOTHROW;
  673. void cblas_ctrmm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  674. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  675. const CBLAS_DIAG Diag, const MKL_INT64 M, const MKL_INT64 N,
  676. const void *alpha, const void *A, const MKL_INT64 lda,
  677. void *B, const MKL_INT64 ldb) NOTHROW;
  678. void cblas_ctrsm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  679. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  680. const CBLAS_DIAG Diag, const MKL_INT64 M, const MKL_INT64 N,
  681. const void *alpha, const void *A, const MKL_INT64 lda,
  682. void *B, const MKL_INT64 ldb) NOTHROW;
  683. void cblas_ctrsm_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE *Side_Array,
  684. const CBLAS_UPLO *Uplo_Array, const CBLAS_TRANSPOSE *Transa_Array,
  685. const CBLAS_DIAG *Diag_Array, const MKL_INT64 *M_Array,
  686. const MKL_INT64 *N_Array, const void *alpha_Array,
  687. const void **A_Array, const MKL_INT64 *lda_Array,
  688. void **B_Array, const MKL_INT64 *ldb_Array,
  689. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  690. void cblas_ctrsm_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  691. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  692. const CBLAS_DIAG Diag, const MKL_INT64 M,
  693. const MKL_INT64 N, const void* alpha,
  694. const void *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  695. void *B, const MKL_INT64 ldb, const MKL_INT64 strideb,
  696. const MKL_INT64 batch_size) NOTHROW;
  697. void cblas_zgemm_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  698. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  699. const MKL_INT64 K, const void *alpha, const void *A,
  700. const MKL_INT64 lda, const void *B, const MKL_INT64 ldb,
  701. const void *beta, void *C, const MKL_INT64 ldc) NOTHROW;
  702. void cblas_zgemm3m_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  703. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  704. const MKL_INT64 K, const void *alpha, const void *A,
  705. const MKL_INT64 lda, const void *B, const MKL_INT64 ldb,
  706. const void *beta, void *C, const MKL_INT64 ldc);
  707. void cblas_zgemm_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE *TransA_Array,
  708. const CBLAS_TRANSPOSE *TransB_Array, const MKL_INT64 *M_Array, const MKL_INT64 *N_Array,
  709. const MKL_INT64 *K_Array, const void *alpha_Array, const void **A_Array,
  710. const MKL_INT64 *lda_Array, const void **B_Array, const MKL_INT64* ldb_Array,
  711. const void *beta_Array, void **C_Array, const MKL_INT64 *ldc_Array,
  712. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  713. void cblas_zgemm_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  714. const CBLAS_TRANSPOSE TransB, const MKL_INT64 M, const MKL_INT64 N,
  715. const MKL_INT64 K, const void *alpha, const void *A,
  716. const MKL_INT64 lda, const MKL_INT64 stridea,
  717. const void *B, const MKL_INT64 ldb, const MKL_INT64 strideb,
  718. const void *beta, void *C, const MKL_INT64 ldc, const MKL_INT64 stridec,
  719. const MKL_INT64 batch_size) NOTHROW;
  720. void cblas_zgemm3m_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE *TransA_Array,
  721. const CBLAS_TRANSPOSE *TransB_Array, const MKL_INT64 *M_Array, const MKL_INT64 *N_Array,
  722. const MKL_INT64 *K_Array, const void *alpha_Array, const void **A_Array,
  723. const MKL_INT64 *lda_Array, const void **B_Array, const MKL_INT64* ldb_Array,
  724. const void *beta_Array, void **C_Array, const MKL_INT64 *ldc_Array,
  725. const MKL_INT64 group_count, const MKL_INT64 *group_size);
  726. void cblas_zgemmt_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  727. const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB,
  728. const MKL_INT64 N, const MKL_INT64 K,
  729. const void *alpha, const void *A, const MKL_INT64 lda,
  730. const void *B, const MKL_INT64 ldb, const void *beta,
  731. void *C, const MKL_INT64 ldc) NOTHROW;
  732. void cblas_zsymm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  733. const CBLAS_UPLO Uplo, const MKL_INT64 M, const MKL_INT64 N,
  734. const void *alpha, const void *A, const MKL_INT64 lda,
  735. const void *B, const MKL_INT64 ldb, const void *beta,
  736. void *C, const MKL_INT64 ldc) NOTHROW;
  737. void cblas_zsyrk_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  738. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  739. const void *alpha, const void *A, const MKL_INT64 lda,
  740. const void *beta, void *C, const MKL_INT64 ldc) NOTHROW;
  741. void cblas_zsyrk_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO *Uplo_array,
  742. const CBLAS_TRANSPOSE *Trans_array, const MKL_INT64 *N_array, const MKL_INT64 *K_array,
  743. const void *alpha_array, const void **A_array, const MKL_INT64 *lda_array,
  744. const void *beta_array, void **C_array, const MKL_INT64 *ldc_array,
  745. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  746. void cblas_zsyrk_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  747. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  748. const void *alpha, const void *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  749. const void *beta, void *C, const MKL_INT64 ldc, const MKL_INT64 stridec,
  750. const MKL_INT64 batch_size) NOTHROW;
  751. void cblas_zsyr2k_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  752. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  753. const void *alpha, const void *A, const MKL_INT64 lda,
  754. const void *B, const MKL_INT64 ldb, const void *beta,
  755. void *C, const MKL_INT64 ldc) NOTHROW;
  756. void cblas_ztrmm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  757. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  758. const CBLAS_DIAG Diag, const MKL_INT64 M, const MKL_INT64 N,
  759. const void *alpha, const void *A, const MKL_INT64 lda,
  760. void *B, const MKL_INT64 ldb) NOTHROW;
  761. void cblas_ztrsm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  762. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  763. const CBLAS_DIAG Diag, const MKL_INT64 M, const MKL_INT64 N,
  764. const void *alpha, const void *A, const MKL_INT64 lda,
  765. void *B, const MKL_INT64 ldb) NOTHROW;
  766. void cblas_ztrsm_batch_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE *Side_Array,
  767. const CBLAS_UPLO *Uplo_Array, const CBLAS_TRANSPOSE *Transa_Array,
  768. const CBLAS_DIAG *Diag_Array, const MKL_INT64 *M_Array,
  769. const MKL_INT64 *N_Array, const void *alpha_Array,
  770. const void **A_Array, const MKL_INT64 *lda_Array,
  771. void **B_Array, const MKL_INT64 *ldb_Array,
  772. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  773. void cblas_ztrsm_batch_strided_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  774. const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA,
  775. const CBLAS_DIAG Diag, const MKL_INT64 M,
  776. const MKL_INT64 N, const void *alpha,
  777. const void *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  778. void *B, const MKL_INT64 ldb, const MKL_INT64 strideb,
  779. const MKL_INT64 batch_size) NOTHROW;
  780. /*
  781. * Routines with prefixes C and Z only
  782. */
  783. void cblas_chemm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  784. const CBLAS_UPLO Uplo, const MKL_INT64 M, const MKL_INT64 N,
  785. const void *alpha, const void *A, const MKL_INT64 lda,
  786. const void *B, const MKL_INT64 ldb, const void *beta,
  787. void *C, const MKL_INT64 ldc) NOTHROW;
  788. void cblas_cherk_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  789. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  790. const float alpha, const void *A, const MKL_INT64 lda,
  791. const float beta, void *C, const MKL_INT64 ldc) NOTHROW;
  792. void cblas_cher2k_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  793. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  794. const void *alpha, const void *A, const MKL_INT64 lda,
  795. const void *B, const MKL_INT64 ldb, const float beta,
  796. void *C, const MKL_INT64 ldc) NOTHROW;
  797. void cblas_zhemm_64(const CBLAS_LAYOUT Layout, const CBLAS_SIDE Side,
  798. const CBLAS_UPLO Uplo, const MKL_INT64 M, const MKL_INT64 N,
  799. const void *alpha, const void *A, const MKL_INT64 lda,
  800. const void *B, const MKL_INT64 ldb, const void *beta,
  801. void *C, const MKL_INT64 ldc) NOTHROW;
  802. void cblas_zherk_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  803. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  804. const double alpha, const void *A, const MKL_INT64 lda,
  805. const double beta, void *C, const MKL_INT64 ldc) NOTHROW;
  806. void cblas_zher2k_64(const CBLAS_LAYOUT Layout, const CBLAS_UPLO Uplo,
  807. const CBLAS_TRANSPOSE Trans, const MKL_INT64 N, const MKL_INT64 K,
  808. const void *alpha, const void *A, const MKL_INT64 lda,
  809. const void *B, const MKL_INT64 ldb, const double beta,
  810. void *C, const MKL_INT64 ldc) NOTHROW;
  811. /*
  812. * Routines with prefixes S and D only
  813. */
  814. MKL_UINT64 cblas_sgemm_pack_get_size_64(const CBLAS_IDENTIFIER identifier,
  815. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K);
  816. void cblas_sgemm_pack_64(const CBLAS_LAYOUT Layout, const CBLAS_IDENTIFIER identifier,
  817. const CBLAS_TRANSPOSE Trans, const MKL_INT64 M, const MKL_INT64 N,
  818. const MKL_INT64 K, const float alpha, const float *src,
  819. const MKL_INT64 ld, float *dest);
  820. void cblas_sgemm_compute_64(const CBLAS_LAYOUT Layout, const MKL_INT64 TransA,
  821. const MKL_INT64 TransB, const MKL_INT64 M, const MKL_INT64 N,
  822. const MKL_INT64 K, const float *A,
  823. const MKL_INT64 lda, const float *B, const MKL_INT64 ldb,
  824. const float beta, float *C, const MKL_INT64 ldc);
  825. MKL_UINT64 cblas_dgemm_pack_get_size_64(const CBLAS_IDENTIFIER identifier,
  826. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K);
  827. void cblas_dgemm_pack_64(const CBLAS_LAYOUT Layout, const CBLAS_IDENTIFIER identifier,
  828. const CBLAS_TRANSPOSE Trans, const MKL_INT64 M, const MKL_INT64 N,
  829. const MKL_INT64 K, const double alpha, const double *src,
  830. const MKL_INT64 ld, double *dest);
  831. void cblas_dgemm_compute_64(const CBLAS_LAYOUT Layout, const MKL_INT64 TransA,
  832. const MKL_INT64 TransB, const MKL_INT64 M, const MKL_INT64 N,
  833. const MKL_INT64 K, const double *A,
  834. const MKL_INT64 lda, const double *B, const MKL_INT64 ldb,
  835. const double beta, double *C, const MKL_INT64 ldc);
  836. void cblas_hgemm_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  837. const CBLAS_TRANSPOSE TransB,
  838. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  839. const MKL_F16 alpha, const MKL_F16 *A, const MKL_INT64 lda,
  840. const MKL_F16 *B, const MKL_INT64 ldb, const MKL_F16 beta,
  841. MKL_F16 *C, const MKL_INT64 ldc);
  842. MKL_UINT64 cblas_hgemm_pack_get_size_64(const CBLAS_IDENTIFIER identifier,
  843. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K);
  844. void cblas_hgemm_pack_64(const CBLAS_LAYOUT Layout, const CBLAS_IDENTIFIER identifier,
  845. const CBLAS_TRANSPOSE Trans, const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  846. const MKL_F16 alpha, const MKL_F16 *src, const MKL_INT64 ld, MKL_F16 *dest);
  847. void cblas_hgemm_compute_64(const CBLAS_LAYOUT Layout, const MKL_INT64 TransA,
  848. const MKL_INT64 TransB,
  849. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  850. const MKL_F16 *A, const MKL_INT64 lda,
  851. const MKL_F16 *B, const MKL_INT64 ldb,
  852. const MKL_F16 beta,
  853. MKL_F16 *C, const MKL_INT64 ldc);
  854. /*
  855. * Integer Routines
  856. */
  857. void cblas_gemm_s16s16s32_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  858. const CBLAS_TRANSPOSE TransB, const CBLAS_OFFSET OffsetC,
  859. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  860. const float alpha, const MKL_INT16 *A, const MKL_INT64 lda, const MKL_INT16 ao,
  861. const MKL_INT16 *B, const MKL_INT64 ldb, const MKL_INT16 bo, const float beta,
  862. MKL_INT32 *C, const MKL_INT64 ldc, const MKL_INT32 *cb);
  863. void cblas_gemm_s8u8s32_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  864. const CBLAS_TRANSPOSE TransB, const CBLAS_OFFSET OffsetC,
  865. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  866. const float alpha, const void *A, const MKL_INT64 lda, const MKL_INT8 ao,
  867. const void *B, const MKL_INT64 ldb, const MKL_INT8 bo, const float beta,
  868. MKL_INT32 *C, const MKL_INT64 ldc, const MKL_INT32 *cb);
  869. void cblas_gemm_bf16bf16f32_64(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
  870. const CBLAS_TRANSPOSE TransB,
  871. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  872. const float alpha, const MKL_BF16 *A, const MKL_INT64 lda,
  873. const MKL_BF16 *B, const MKL_INT64 ldb, const float beta,
  874. float *C, const MKL_INT64 ldc);
  875. MKL_UINT64 cblas_gemm_s8u8s32_pack_get_size_64(const CBLAS_IDENTIFIER identifier,
  876. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K);
  877. MKL_UINT64 cblas_gemm_s16s16s32_pack_get_size_64(const CBLAS_IDENTIFIER identifier,
  878. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K);
  879. MKL_UINT64 cblas_gemm_bf16bf16f32_pack_get_size_64(const CBLAS_IDENTIFIER identifier,
  880. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K);
  881. void cblas_gemm_s8u8s32_pack_64(const CBLAS_LAYOUT Layout, const CBLAS_IDENTIFIER identifier,
  882. const CBLAS_TRANSPOSE Trans, const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  883. const void *src, const MKL_INT64 ld, void *dest);
  884. void cblas_gemm_s16s16s32_pack_64(const CBLAS_LAYOUT Layout, const CBLAS_IDENTIFIER identifier,
  885. const CBLAS_TRANSPOSE Trans, const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  886. const MKL_INT16 *src, const MKL_INT64 ld, MKL_INT16 *dest);
  887. void cblas_gemm_bf16bf16f32_pack_64(const CBLAS_LAYOUT Layout, const CBLAS_IDENTIFIER identifier,
  888. const CBLAS_TRANSPOSE Trans, const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  889. const MKL_BF16 *src, const MKL_INT64 ld, MKL_BF16 *dest);
  890. void cblas_gemm_s8u8s32_compute_64(const CBLAS_LAYOUT Layout, const MKL_INT64 TransA,
  891. const MKL_INT64 TransB, const CBLAS_OFFSET offsetc,
  892. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  893. const float alpha,
  894. const void *A, const MKL_INT64 lda, const MKL_INT8 ao,
  895. const void *B, const MKL_INT64 ldb, const MKL_INT8 bo,
  896. const float beta,
  897. MKL_INT32 *C, const MKL_INT64 ldc, const MKL_INT32 *co);
  898. void cblas_gemm_s16s16s32_compute_64(const CBLAS_LAYOUT Layout, const MKL_INT64 TransA,
  899. const MKL_INT64 TransB, const CBLAS_OFFSET offsetc,
  900. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  901. const float alpha,
  902. const MKL_INT16 *A, const MKL_INT64 lda, const MKL_INT16 ao,
  903. const MKL_INT16 *B, const MKL_INT64 ldb, const MKL_INT16 bo,
  904. const float beta,
  905. MKL_INT32 *C, const MKL_INT64 ldc, const MKL_INT32 *co);
  906. void cblas_gemm_bf16bf16f32_compute_64(const CBLAS_LAYOUT Layout, const MKL_INT64 TransA,
  907. const MKL_INT64 TransB,
  908. const MKL_INT64 M, const MKL_INT64 N, const MKL_INT64 K,
  909. const float alpha,
  910. const MKL_BF16 *A, const MKL_INT64 lda,
  911. const MKL_BF16 *B, const MKL_INT64 ldb,
  912. const float beta,
  913. float *C, const MKL_INT64 ldc);
  914. /*
  915. * Jit routines
  916. */
  917. #ifndef mkl_jit_create_dgemm_64
  918. #define mkl_jit_create_dgemm_64 mkl_cblas_jit_create_dgemm_64
  919. #endif
  920. mkl_jit_status_t mkl_cblas_jit_create_dgemm_64(void** jitter, const MKL_LAYOUT layout, const MKL_TRANSPOSE transa, const MKL_TRANSPOSE transb,
  921. const MKL_INT64 m, const MKL_INT64 n, const MKL_INT64 k,
  922. const double alpha, const MKL_INT64 lda, const MKL_INT64 ldb,
  923. const double beta, const MKL_INT64 ldc);
  924. #ifndef mkl_jit_create_sgemm_64
  925. #define mkl_jit_create_sgemm_64 mkl_cblas_jit_create_sgemm_64
  926. #endif
  927. mkl_jit_status_t mkl_cblas_jit_create_sgemm_64(void** jitter, const MKL_LAYOUT layout, const MKL_TRANSPOSE transa, const MKL_TRANSPOSE transb,
  928. const MKL_INT64 m, const MKL_INT64 n, const MKL_INT64 k,
  929. const float alpha, const MKL_INT64 lda, const MKL_INT64 ldb,
  930. const float beta, const MKL_INT64 ldc);
  931. #ifndef mkl_jit_create_cgemm_64
  932. #define mkl_jit_create_cgemm_64 mkl_cblas_jit_create_cgemm_64
  933. #endif
  934. mkl_jit_status_t mkl_cblas_jit_create_cgemm_64(void** jitter, const MKL_LAYOUT layout, const MKL_TRANSPOSE transa, const MKL_TRANSPOSE transb,
  935. const MKL_INT64 m, const MKL_INT64 n, const MKL_INT64 k,
  936. const void* alpha, const MKL_INT64 lda, const MKL_INT64 ldb,
  937. const void* beta, const MKL_INT64 ldc);
  938. #ifndef mkl_jit_create_zgemm_64
  939. #define mkl_jit_create_zgemm_64 mkl_cblas_jit_create_zgemm_64
  940. #endif
  941. mkl_jit_status_t mkl_cblas_jit_create_zgemm_64(void** jitter, const MKL_LAYOUT layout, const MKL_TRANSPOSE transa, const MKL_TRANSPOSE transb,
  942. const MKL_INT64 m, const MKL_INT64 n, const MKL_INT64 k,
  943. const void* alpha, const MKL_INT64 lda, const MKL_INT64 ldb,
  944. const void* beta, const MKL_INT64 ldc);
  945. /* Level1 BLAS batch API */
  946. void cblas_saxpy_batch_64(const MKL_INT64 *n, const float *alpha,
  947. const float **x, const MKL_INT64 *incx,
  948. float **y, const MKL_INT64 *incy,
  949. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  950. void cblas_daxpy_batch_64(const MKL_INT64 *n, const double *alpha,
  951. const double **x, const MKL_INT64 *incx,
  952. double **y, const MKL_INT64 *incy,
  953. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  954. void cblas_caxpy_batch_64(const MKL_INT64 *n, const void *alpha,
  955. const void **x, const MKL_INT64 *incx,
  956. void **y, const MKL_INT64 *incy,
  957. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  958. void cblas_zaxpy_batch_64(const MKL_INT64 *n, const void *alpha,
  959. const void **x, const MKL_INT64 *incx,
  960. void **y, const MKL_INT64 *incy,
  961. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  962. void cblas_saxpy_batch_strided_64(const MKL_INT64 N, const float alpha,
  963. const float *X, const MKL_INT64 incX, const MKL_INT64 stridex,
  964. float *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  965. const MKL_INT64 batch_size) NOTHROW;
  966. void cblas_daxpy_batch_strided_64(const MKL_INT64 N, const double alpha,
  967. const double *X, const MKL_INT64 incX, const MKL_INT64 stridex,
  968. double *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  969. const MKL_INT64 batch_size) NOTHROW;
  970. void cblas_caxpy_batch_strided_64(const MKL_INT64 N, const void *alpha,
  971. const void *X, const MKL_INT64 incX, const MKL_INT64 stridex,
  972. void *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  973. const MKL_INT64 batch_size) NOTHROW;
  974. void cblas_zaxpy_batch_strided_64(const MKL_INT64 N, const void *alpha,
  975. const void *X, const MKL_INT64 incX, const MKL_INT64 stridex,
  976. void *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  977. const MKL_INT64 batch_size) NOTHROW;
  978. void cblas_scopy_batch_64(const MKL_INT64 *n,
  979. const float **x, const MKL_INT64 *incx,
  980. float **y, const MKL_INT64 *incy,
  981. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  982. void cblas_dcopy_batch_64(const MKL_INT64 *n,
  983. const double **x, const MKL_INT64 *incx,
  984. double **y, const MKL_INT64 *incy,
  985. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  986. void cblas_ccopy_batch_64(const MKL_INT64 *n,
  987. const void **x, const MKL_INT64 *incx,
  988. void **y, const MKL_INT64 *incy,
  989. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  990. void cblas_zcopy_batch_64(const MKL_INT64 *n,
  991. const void **x, const MKL_INT64 *incx,
  992. void **y, const MKL_INT64 *incy,
  993. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  994. void cblas_scopy_batch_strided_64(const MKL_INT64 N,
  995. const float *X, const MKL_INT64 incX, const MKL_INT64 stridex,
  996. float *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  997. const MKL_INT64 batch_size) NOTHROW;
  998. void cblas_dcopy_batch_strided_64(const MKL_INT64 N,
  999. const double *X, const MKL_INT64 incX, const MKL_INT64 stridex,
  1000. double *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  1001. const MKL_INT64 batch_size) NOTHROW;
  1002. void cblas_ccopy_batch_strided_64(const MKL_INT64 N,
  1003. const void *X, const MKL_INT64 incX, const MKL_INT64 stridex,
  1004. void *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  1005. const MKL_INT64 batch_size) NOTHROW;
  1006. void cblas_zcopy_batch_strided_64(const MKL_INT64 N,
  1007. const void *X, const MKL_INT64 incX, const MKL_INT64 stridex,
  1008. void *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  1009. const MKL_INT64 batch_size) NOTHROW;
  1010. /* Level2 BLAS batch API */
  1011. void cblas_sgemv_batch_64(const CBLAS_LAYOUT Layout,
  1012. const CBLAS_TRANSPOSE *TransA, const MKL_INT64 *M, const MKL_INT64 *N,
  1013. const float *alpha, const float **A, const MKL_INT64 *lda,
  1014. const float **X, const MKL_INT64 *incX, const float *beta,
  1015. float **Y, const MKL_INT64 *incY,
  1016. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  1017. void cblas_sgemv_batch_strided_64(const CBLAS_LAYOUT Layout,
  1018. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  1019. const float alpha, const float *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  1020. const float *X, const MKL_INT64 incX, const MKL_INT64 stridex, const float beta,
  1021. float *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  1022. const MKL_INT64 batch_size) NOTHROW;
  1023. void cblas_dgemv_batch_64(const CBLAS_LAYOUT Layout,
  1024. const CBLAS_TRANSPOSE *TransA, const MKL_INT64 *M, const MKL_INT64 *N,
  1025. const double *alpha, const double **A, const MKL_INT64 *lda,
  1026. const double **X, const MKL_INT64 *incX, const double *beta,
  1027. double **Y, const MKL_INT64 *incY,
  1028. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  1029. void cblas_dgemv_batch_strided_64(const CBLAS_LAYOUT Layout,
  1030. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  1031. const double alpha, const double *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  1032. const double *X, const MKL_INT64 incX, const MKL_INT64 stridex, const double beta,
  1033. double *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  1034. const MKL_INT64 batch_size) NOTHROW;
  1035. void cblas_cgemv_batch_64(const CBLAS_LAYOUT Layout,
  1036. const CBLAS_TRANSPOSE *TransA, const MKL_INT64 *M, const MKL_INT64 *N,
  1037. const void *alpha, const void **A, const MKL_INT64 *lda,
  1038. const void **X, const MKL_INT64 *incX, const void *beta,
  1039. void **Y, const MKL_INT64 *incY,
  1040. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  1041. void cblas_cgemv_batch_strided_64(const CBLAS_LAYOUT Layout,
  1042. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  1043. const void *alpha, const void *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  1044. const void *X, const MKL_INT64 incX, const MKL_INT64 stridex, const void *beta,
  1045. void *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  1046. const MKL_INT64 batch_size) NOTHROW;
  1047. void cblas_zgemv_batch_64(const CBLAS_LAYOUT Layout,
  1048. const CBLAS_TRANSPOSE *TransA, const MKL_INT64 *M, const MKL_INT64 *N,
  1049. const void *alpha, const void **A, const MKL_INT64 *lda,
  1050. const void **X, const MKL_INT64 *incX, const void *beta,
  1051. void **Y, const MKL_INT64 *incY,
  1052. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  1053. void cblas_zgemv_batch_strided_64(const CBLAS_LAYOUT Layout,
  1054. const CBLAS_TRANSPOSE TransA, const MKL_INT64 M, const MKL_INT64 N,
  1055. const void *alpha, const void *A, const MKL_INT64 lda, const MKL_INT64 stridea,
  1056. const void *X, const MKL_INT64 incX, const MKL_INT64 stridex, const void *beta,
  1057. void *Y, const MKL_INT64 incY, const MKL_INT64 stridey,
  1058. const MKL_INT64 batch_size) NOTHROW;
  1059. void cblas_sdgmm_batch_64(const CBLAS_LAYOUT layout,
  1060. const CBLAS_SIDE *side, const MKL_INT64 *m, const MKL_INT64 *n,
  1061. const float **a, const MKL_INT64 *lda,
  1062. const float **x, const MKL_INT64 *incx,
  1063. float **c, const MKL_INT64 *ldc,
  1064. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  1065. void cblas_sdgmm_batch_strided_64(const CBLAS_LAYOUT layout,
  1066. const CBLAS_SIDE side, const MKL_INT64 m, const MKL_INT64 n,
  1067. const float *a, const MKL_INT64 lda, const MKL_INT64 stridea,
  1068. const float *x, const MKL_INT64 incx, const MKL_INT64 stridex,
  1069. float *c, const MKL_INT64 ldc, const MKL_INT64 stridec,
  1070. const MKL_INT64 batch_size) NOTHROW;
  1071. void cblas_ddgmm_batch_64(const CBLAS_LAYOUT layout,
  1072. const CBLAS_SIDE *side, const MKL_INT64 *m, const MKL_INT64 *n,
  1073. const double **a, const MKL_INT64 *lda,
  1074. const double **x, const MKL_INT64 *incx,
  1075. double **c, const MKL_INT64 *ldc,
  1076. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  1077. void cblas_ddgmm_batch_strided_64(const CBLAS_LAYOUT layout,
  1078. const CBLAS_SIDE side, const MKL_INT64 m, const MKL_INT64 n,
  1079. const double *a, const MKL_INT64 lda, const MKL_INT64 stridea,
  1080. const double *x, const MKL_INT64 incx, const MKL_INT64 stridex,
  1081. double *c, const MKL_INT64 ldc, const MKL_INT64 stridec,
  1082. const MKL_INT64 batch_size) NOTHROW;
  1083. void cblas_cdgmm_batch_64(const CBLAS_LAYOUT layout,
  1084. const CBLAS_SIDE *side, const MKL_INT64 *m, const MKL_INT64 *n,
  1085. const void **a, const MKL_INT64 *lda,
  1086. const void **x, const MKL_INT64 *incx,
  1087. void **c, const MKL_INT64 *ldc,
  1088. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  1089. void cblas_cdgmm_batch_strided_64(const CBLAS_LAYOUT layout,
  1090. const CBLAS_SIDE side, const MKL_INT64 m, const MKL_INT64 n,
  1091. const void *a, const MKL_INT64 lda, const MKL_INT64 stridea,
  1092. const void *x, const MKL_INT64 incx, const MKL_INT64 stridex,
  1093. void *c, const MKL_INT64 ldc, const MKL_INT64 stridec,
  1094. const MKL_INT64 batch_size) NOTHROW;
  1095. void cblas_zdgmm_batch_64(const CBLAS_LAYOUT layout,
  1096. const CBLAS_SIDE *side, const MKL_INT64 *m, const MKL_INT64 *n,
  1097. const void **a, const MKL_INT64 *lda,
  1098. const void **x, const MKL_INT64 *incx,
  1099. void **c, const MKL_INT64 *ldc,
  1100. const MKL_INT64 group_count, const MKL_INT64 *group_size) NOTHROW;
  1101. void cblas_zdgmm_batch_strided_64(const CBLAS_LAYOUT layout,
  1102. const CBLAS_SIDE side, const MKL_INT64 m, const MKL_INT64 n,
  1103. const void *a, const MKL_INT64 lda, const MKL_INT64 stridea,
  1104. const void *x, const MKL_INT64 incx, const MKL_INT64 stridex,
  1105. void *c, const MKL_INT64 ldc, const MKL_INT64 stridec,
  1106. const MKL_INT64 batch_size) NOTHROW;
  1107. #ifdef __cplusplus
  1108. }
  1109. #endif /* __cplusplus */
  1110. #endif /* __MKL_CBLAS_64_H__ */