Browse Source

native: started GotoBLAS2 wrapper - BLAS compiles

pull/36/head
Marcus Cuda 16 years ago
parent
commit
9a37b3c9a5
  1. 2
      src/NativeWrappers/Common/blas.c
  2. 16
      src/NativeWrappers/Common/resource.rc
  3. 0
      src/NativeWrappers/Common/wrapper_common.h
  4. 82
      src/NativeWrappers/GotoBlas2/blas.c
  5. 283
      src/NativeWrappers/GotoBlas2/include/cblas.h
  6. 610
      src/NativeWrappers/GotoBlas2/include/common.h
  7. 179
      src/NativeWrappers/GotoBlas2/include/common_alpha.h
  8. 611
      src/NativeWrappers/GotoBlas2/include/common_c.h
  9. 432
      src/NativeWrappers/GotoBlas2/include/common_d.h
  10. 408
      src/NativeWrappers/GotoBlas2/include/common_ia64.h
  11. 736
      src/NativeWrappers/GotoBlas2/include/common_interface.h
  12. 296
      src/NativeWrappers/GotoBlas2/include/common_lapack.h
  13. 212
      src/NativeWrappers/GotoBlas2/include/common_level1.h
  14. 1359
      src/NativeWrappers/GotoBlas2/include/common_level2.h
  15. 1739
      src/NativeWrappers/GotoBlas2/include/common_level3.h
  16. 83
      src/NativeWrappers/GotoBlas2/include/common_linux.h
  17. 2734
      src/NativeWrappers/GotoBlas2/include/common_macro.h
  18. 197
      src/NativeWrappers/GotoBlas2/include/common_mips64.h
  19. 1098
      src/NativeWrappers/GotoBlas2/include/common_param.h
  20. 795
      src/NativeWrappers/GotoBlas2/include/common_power.h
  21. 431
      src/NativeWrappers/GotoBlas2/include/common_q.h
  22. 0
      src/NativeWrappers/GotoBlas2/include/common_reference.h
  23. 436
      src/NativeWrappers/GotoBlas2/include/common_s.h
  24. 224
      src/NativeWrappers/GotoBlas2/include/common_sparc.h
  25. 192
      src/NativeWrappers/GotoBlas2/include/common_thread.h
  26. 611
      src/NativeWrappers/GotoBlas2/include/common_x.h
  27. 359
      src/NativeWrappers/GotoBlas2/include/common_x86.h
  28. 451
      src/NativeWrappers/GotoBlas2/include/common_x86_64.h
  29. 611
      src/NativeWrappers/GotoBlas2/include/common_z.h
  30. 191
      src/NativeWrappers/GotoBlas2/include/cpuid.h
  31. 84
      src/NativeWrappers/GotoBlas2/include/l1param.h
  32. 165
      src/NativeWrappers/GotoBlas2/include/l2param.h
  33. 1543
      src/NativeWrappers/GotoBlas2/include/param.h
  34. 1873
      src/NativeWrappers/GotoBlas2/include/symcopy.h
  35. 43
      src/NativeWrappers/GotoBlas2/include/version.h
  36. 2
      src/NativeWrappers/MKL/lapack.cpp
  37. 2
      src/NativeWrappers/MKL/vector_functions.c
  38. 163
      src/NativeWrappers/Windows/GotoBLAS2Wrapper/GotoBLAS2Wrapper.vcxproj
  39. 35
      src/NativeWrappers/Windows/GotoBLAS2Wrapper/GotoBLAS2Wrapper.vcxproj.filters
  40. 5
      src/NativeWrappers/Windows/MKL/MKLWrapper.vcxproj
  41. 9
      src/NativeWrappers/Windows/MKL/MKLWrapper.vcxproj.filters
  42. 29
      src/NativeWrappers/Windows/NativeWrappers.sln

2
src/NativeWrappers/Common/blas.c

@ -1,5 +1,5 @@
#include "blas.h"
#include "common.h"
#include "wrapper_common.h"
DLLEXPORT void s_axpy(const int n, const float alpha, const float x[], float y[]){
cblas_saxpy(n, alpha, x, 1, y, 1);

16
src/NativeWrappers/Common/resource.rc

@ -51,8 +51,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,2010,12,0
PRODUCTVERSION 0,2010,12,0
FILEVERSION 1,1,0,0
PRODUCTVERSION 1,1,0,0
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -67,15 +67,15 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "http://mathdotnet.com"
VALUE "Comments", "http://http://mathnetnumerics.codeplex.com/"
VALUE "CompanyName", "Math.NET"
VALUE "FileDescription", "MathNET Numerics Native Library"
VALUE "FileVersion", "0.2010.12.0"
VALUE "FileDescription", "MathNET Numerics Native Wrapper"
VALUE "FileVersion", "1.1.0.0"
VALUE "InternalName", "Math.NET"
VALUE "LegalCopyright", "Copyright (C) Math.NET 2009-2010"
VALUE "LegalCopyright", "Copyright (C) Math.NET 2009-2011"
VALUE "OriginalFilename", "MathNET.Numerics"
VALUE "ProductName", "Math.NET"
VALUE "ProductVersion", "0.2010.12.0"
VALUE "ProductName", "Math.NET Numerics"
VALUE "ProductVersion", "1.1.0.0"
END
END
BLOCK "VarFileInfo"

0
src/NativeWrappers/Common/common.h → src/NativeWrappers/Common/wrapper_common.h

82
src/NativeWrappers/GotoBlas2/blas.c

@ -0,0 +1,82 @@
#include "include\cblas.h"
#include "wrapper_common.h"
DLLEXPORT void s_axpy(int n, float alpha, float x[], float y[]){
cblas_saxpy(n, alpha, x, 1, y, 1);
}
DLLEXPORT void d_axpy(int n, double alpha, double x[], double y[]){
cblas_daxpy(n, alpha, x, 1, y, 1);
}
DLLEXPORT void c_axpy(int n, Complex8 alpha, Complex8 x[], Complex8 y[]){
cblas_caxpy(n, &alpha, x, 1, y, 1);
}
DLLEXPORT void z_axpy(int n, Complex16 alpha, Complex16 x[], Complex16 y[]){
cblas_zaxpy(n, &alpha, x, 1, y, 1);
}
DLLEXPORT void s_scale(int n, float alpha, float x[]){
cblas_sscal(n, alpha, x, 1);
}
DLLEXPORT void d_scale(int n, double alpha, double x[]){
cblas_dscal(n, alpha, x, 1);
}
DLLEXPORT void c_scale(int n, Complex8 alpha, Complex8 x[]){
cblas_cscal(n, &alpha, x, 1);
}
DLLEXPORT void z_scale(int n, Complex16 alpha, Complex16 x[]){
cblas_zscal(n, &alpha, x, 1);
}
DLLEXPORT float s_dot_product(int n, float x[], float y[]){
return cblas_sdot(n, x, 1, y, 1);
}
DLLEXPORT double d_dot_product(int n, double x[], double y[]){
return cblas_ddot(n, x, 1, y, 1);
}
DLLEXPORT Complex8 c_dot_product(int n, Complex8 x[], Complex8 y[]){
Complex8 ret;
cblas_cdotu_sub(n, x, 1, y, 1, &ret);
return ret;
}
DLLEXPORT Complex16 z_dot_product(int n, Complex16 x[], Complex16 y[]){
Complex16 ret;
cblas_zdotu_sub(n, x, 1, y, 1, &ret);
return ret;
}
DLLEXPORT void s_matrix_multiply(enum CBLAS_TRANSPOSE transA, enum CBLAS_TRANSPOSE transB, int m, int n, int k, float alpha, float x[], float y[], float beta, float c[]){
int lda = transA == CblasNoTrans ? m : k;
int ldb = transB == CblasNoTrans ? k : n;
cblas_sgemm(CblasColMajor, transA, transB, m, n, k, alpha, x, lda, y, ldb, beta, c, m);
}
DLLEXPORT void d_matrix_multiply(enum CBLAS_TRANSPOSE transA, enum CBLAS_TRANSPOSE transB, int m, int n, int k, double alpha, double x[], double y[], double beta, double c[]){
int lda = transA == CblasNoTrans ? m : k;
int ldb = transB == CblasNoTrans ? k : n;
cblas_dgemm(CblasColMajor, transA, transB, m, n, k, alpha, x, lda, y, ldb, beta, c, m);
}
DLLEXPORT void c_matrix_multiply(enum CBLAS_TRANSPOSE transA, enum CBLAS_TRANSPOSE transB, int m, int n, int k, Complex8 alpha, Complex8 x[], Complex8 y[], Complex8 beta, Complex8 c[]){
int lda = transA == CblasNoTrans ? m : k;
int ldb = transB == CblasNoTrans ? k : n;
cblas_cgemm(CblasColMajor, transA, transB, m, n, k, &alpha, x, lda, y, ldb, &beta, c, m);
}
DLLEXPORT void z_matrix_multiply(enum CBLAS_TRANSPOSE transA, enum CBLAS_TRANSPOSE transB, int m, int n, int k, Complex16 alpha, Complex16 x[], Complex16 y[], Complex16 beta, Complex16 c[]){
int lda = transA == CblasNoTrans ? m : k;
int ldb = transB == CblasNoTrans ? k : n;
cblas_zgemm(CblasColMajor, transA, transB, m, n, k, &alpha, x, lda, y, ldb, &beta, c, m);
}

283
src/NativeWrappers/GotoBlas2/include/cblas.h

@ -0,0 +1,283 @@
#ifndef CBLAS_H
#define CBLAS_H
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
#define CBLAS_INDEX int
#define blasint int
#define _Complex
#define Complex8 float
#define Complex16 double
enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113, CblasConjNoTrans=114};
enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
float cblas_sdsdot(blasint n, float, float *x, blasint incx, float *y, blasint incy);
double cblas_dsdot (blasint n, float *x, blasint incx, float *y, blasint incy);
float cblas_sdot(blasint n, float *x, blasint incx, float *y, blasint incy);
double cblas_ddot(blasint n, double *x, blasint incx, double *y, blasint incy);
float _Complex cblas_cdotu(blasint n, float *x, blasint incx, float *y, blasint incy);
float _Complex cblas_cdotc(blasint n, float *x, blasint incx, float *y, blasint incy);
double _Complex cblas_zdotu(blasint n, double *x, blasint incx, double *y, blasint incy);
double _Complex cblas_zdotc(blasint n, double *x, blasint incx, double *y, blasint incy);
void cblas_cdotu_sub(blasint n, float *x, blasint incx, float *y, blasint incy, float _Complex *ret);
void cblas_cdotc_sub(blasint n, float *x, blasint incx, float *y, blasint incy, float _Complex *ret);
void cblas_zdotu_sub(blasint n, double *x, blasint incx, double *y, blasint incy, double _Complex *ret);
void cblas_zdotc_sub(blasint n, double *x, blasint incx, double *y, blasint incy, double _Complex *ret);
float cblas_sasum (blasint n, float *x, blasint incx);
double cblas_dasum (blasint n, double *x, blasint incx);
float cblas_scasum(blasint n, float *x, blasint incx);
double cblas_dzasum(blasint n, double *x, blasint incx);
float cblas_snrm2 (blasint N, float *X, blasint incX);
double cblas_dnrm2 (blasint N, double *X, blasint incX);
float cblas_scnrm2(blasint N, float *X, blasint incX);
double cblas_dznrm2(blasint N, double *X, blasint incX);
CBLAS_INDEX cblas_isamax(blasint n, float *x, blasint incx);
CBLAS_INDEX cblas_idamax(blasint n, double *x, blasint incx);
CBLAS_INDEX cblas_icamax(blasint n, float *x, blasint incx);
CBLAS_INDEX cblas_izamax(blasint n, double *x, blasint incx);
void cblas_saxpy(blasint n, float, float *x, blasint incx, float *y, blasint incy);
void cblas_daxpy(blasint n, double, double *x, blasint incx, double *y, blasint incy);
void cblas_caxpy(blasint n, float *, float *x, blasint incx, float *y, blasint incy);
void cblas_zaxpy(blasint n, double *, double *x, blasint incx, double *y, blasint incy);
void cblas_scopy(blasint n, float *x, blasint incx, float *y, blasint incy);
void cblas_dcopy(blasint n, double *x, blasint incx, double *y, blasint incy);
void cblas_ccopy(blasint n, float *x, blasint incx, float *y, blasint incy);
void cblas_zcopy(blasint n, double *x, blasint incx, double *y, blasint incy);
void cblas_sswap(blasint n, float *x, blasint incx, float *y, blasint incy);
void cblas_dswap(blasint n, double *x, blasint incx, double *y, blasint incy);
void cblas_cswap(blasint n, float *x, blasint incx, float *y, blasint incy);
void cblas_zswap(blasint n, double *x, blasint incx, double *y, blasint incy);
void cblas_srot(blasint N, float *X, blasint incX, float *Y, blasint incY, float c, float s);
void cblas_drot(blasint N, double *X, blasint incX, double *Y, blasint incY, double c, double s);
void cblas_srotg(float *a, float *b, float *c, float *s);
void cblas_drotg(double *a, double *b, double *c, double *s);
void cblas_srotm(blasint N, float *X, blasint incX, float *Y, blasint incY, float *P);
void cblas_drotm(blasint N, double *X, blasint incX, double *Y, blasint incY, double *P);
void cblas_srotmg(float *d1, float *d2, float *b1, float b2, float *P);
void cblas_drotmg(double *d1, double *d2, double *b1, double b2, double *P);
void cblas_sscal(blasint N, float alpha, float *X, blasint incX);
void cblas_dscal(blasint N, double alpha, double *X, blasint incX);
void cblas_cscal(blasint N, float *alpha, float *X, blasint incX);
void cblas_zscal(blasint N, double *alpha, double *X, blasint incX);
void cblas_csscal(blasint N, float alpha, float *X, blasint incX);
void cblas_zdscal(blasint N, double alpha, double *X, blasint incX);
void cblas_sgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, blasint m, blasint n,
float alpha, float *a, blasint lda, float *x, blasint incx, float beta, float *y, blasint incy);
void cblas_dgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, blasint m, blasint n,
double alpha, double *a, blasint lda, double *x, blasint incx, double beta, double *y, blasint incy);
void cblas_cgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, blasint m, blasint n,
float *alpha, float *a, blasint lda, float *x, blasint incx, float *beta, float *y, blasint incy);
void cblas_zgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, blasint m, blasint n,
double *alpha, double *a, blasint lda, double *x, blasint incx, double *beta, double *y, blasint incy);
void cblas_sger (enum CBLAS_ORDER order, blasint M, blasint N, float alpha, float *X, blasint incX, float *Y, blasint incY, float *A, blasint lda);
void cblas_dger (enum CBLAS_ORDER order, blasint M, blasint N, double alpha, double *X, blasint incX, double *Y, blasint incY, double *A, blasint lda);
void cblas_cgeru(enum CBLAS_ORDER order, blasint M, blasint N, float *alpha, float *X, blasint incX, float *Y, blasint incY, float *A, blasint lda);
void cblas_cgerc(enum CBLAS_ORDER order, blasint M, blasint N, float *alpha, float *X, blasint incX, float *Y, blasint incY, float *A, blasint lda);
void cblas_zgeru(enum CBLAS_ORDER order, blasint M, blasint N, double *alpha, double *X, blasint incX, double *Y, blasint incY, double *A, blasint lda);
void cblas_zgerc(enum CBLAS_ORDER order, blasint M, blasint N, double *alpha, double *X, blasint incX, double *Y, blasint incY, double *A, blasint lda);
void cblas_strsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, float *A, blasint lda, float *X, blasint incX);
void cblas_dtrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, double *A, blasint lda, double *X, blasint incX);
void cblas_ctrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, float *A, blasint lda, float *X, blasint incX);
void cblas_ztrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, double *A, blasint lda, double *X, blasint incX);
void cblas_strmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, float *A, blasint lda, float *X, blasint incX);
void cblas_dtrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, double *A, blasint lda, double *X, blasint incX);
void cblas_ctrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, float *A, blasint lda, float *X, blasint incX);
void cblas_ztrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, double *A, blasint lda, double *X, blasint incX);
void cblas_ssyr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *A, blasint lda);
void cblas_dsyr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X, blasint incX, double *A, blasint lda);
void cblas_cher(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *A, blasint lda);
void cblas_zher(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X, blasint incX, double *A, blasint lda);
void cblas_ssyr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,blasint N, float alpha, float *X,
blasint incX, float *Y, blasint incY, float *A, blasint lda);
void cblas_dsyr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X,
blasint incX, double *Y, blasint incY, double *A, blasint lda);
void cblas_cher2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float *alpha, float *X, blasint incX,
float *Y, blasint incY, float *A, blasint lda);
void cblas_zher2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double *alpha, double *X, blasint incX,
double *Y, blasint incY, double *A, blasint lda);
void cblas_sgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M, blasint N,
blasint KL, blasint KU, float alpha, float *A, blasint lda, float *X, blasint incX, float beta, float *Y, blasint incY);
void cblas_dgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M, blasint N,
blasint KL, blasint KU, double alpha, double *A, blasint lda, double *X, blasint incX, double beta, double *Y, blasint incY);
void cblas_cgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M, blasint N,
blasint KL, blasint KU, float *alpha, float *A, blasint lda, float *X, blasint incX, float *beta, float *Y, blasint incY);
void cblas_zgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M, blasint N,
blasint KL, blasint KU, double *alpha, double *A, blasint lda, double *X, blasint incX, double *beta, double *Y, blasint incY);
void cblas_ssbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, blasint K, float alpha, float *A,
blasint lda, float *X, blasint incX, float beta, float *Y, blasint incY);
void cblas_dsbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, blasint K, double alpha, double *A,
blasint lda, double *X, blasint incX, double beta, double *Y, blasint incY);
void cblas_stbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, blasint K, float *A, blasint lda, float *X, blasint incX);
void cblas_dtbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, blasint K, double *A, blasint lda, double *X, blasint incX);
void cblas_ctbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, blasint K, float *A, blasint lda, float *X, blasint incX);
void cblas_ztbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, blasint K, double *A, blasint lda, double *X, blasint incX);
void cblas_stbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, blasint K, float *A, blasint lda, float *X, blasint incX);
void cblas_dtbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, blasint K, double *A, blasint lda, double *X, blasint incX);
void cblas_ctbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, blasint K, float *A, blasint lda, float *X, blasint incX);
void cblas_ztbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, blasint K, double *A, blasint lda, double *X, blasint incX);
void cblas_stpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, float *Ap, float *X, blasint incX);
void cblas_dtpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, double *Ap, double *X, blasint incX);
void cblas_ctpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, float *Ap, float *X, blasint incX);
void cblas_ztpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, double *Ap, double *X, blasint incX);
void cblas_stpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, float *Ap, float *X, blasint incX);
void cblas_dtpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, double *Ap, double *X, blasint incX);
void cblas_ctpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, float *Ap, float *X, blasint incX);
void cblas_ztpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
blasint N, double *Ap, double *X, blasint incX);
void cblas_ssymv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *A,
blasint lda, float *X, blasint incX, float beta, float *Y, blasint incY);
void cblas_dsymv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *A,
blasint lda, double *X, blasint incX, double beta, double *Y, blasint incY);
void cblas_chemv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float *alpha, float *A,
blasint lda, float *X, blasint incX, float *beta, float *Y, blasint incY);
void cblas_zhemv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double *alpha, double *A,
blasint lda, double *X, blasint incX, double *beta, double *Y, blasint incY);
void cblas_sspmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *Ap,
float *X, blasint incX, float beta, float *Y, blasint incY);
void cblas_dspmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *Ap,
double *X, blasint incX, double beta, double *Y, blasint incY);
void cblas_sspr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *Ap);
void cblas_dspr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X, blasint incX, double *Ap);
void cblas_chpr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *A);
void cblas_zhpr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X,blasint incX, double *A);
void cblas_sspr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *Y, blasint incY, float *A);
void cblas_dspr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X, blasint incX, double *Y, blasint incY, double *A);
void cblas_chpr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float *alpha, float *X, blasint incX, float *Y, blasint incY, float *Ap);
void cblas_zhpr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double *alpha, double *X, blasint incX, double *Y, blasint incY, double *Ap);
void cblas_chbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, blasint K,
float *alpha, float *A, blasint lda, float *X, blasint incX, float *beta, float *Y, blasint incY);
void cblas_zhbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, blasint K,
double *alpha, double *A, blasint lda, double *X, blasint incX, double *beta, double *Y, blasint incY);
void cblas_chpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
float *alpha, float *Ap, float *X, blasint incX, float *beta, float *Y, blasint incY);
void cblas_zhpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
double *alpha, double *Ap, double *X, blasint incX, double *beta, double *Y, blasint incY);
void cblas_sgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
float alpha, float *A, blasint lda, float *B, blasint ldb, float beta, float *C, blasint ldc);
void cblas_dgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
double alpha, double *A, blasint lda, double *B, blasint ldb, double beta, double *C, blasint ldc);
void cblas_cgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
float *alpha, float *A, blasint lda, float *B, blasint ldb, float *beta, float *C, blasint ldc);
void cblas_zgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
double *alpha, double *A, blasint lda, double *B, blasint ldb, double *beta, double *C, blasint ldc);
void cblas_ssymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
float alpha, float *A, blasint lda, float *B, blasint ldb, float beta, float *C, blasint ldc);
void cblas_dsymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
double alpha, double *A, blasint lda, double *B, blasint ldb, double beta, double *C, blasint ldc);
void cblas_csymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
float *alpha, float *A, blasint lda, float *B, blasint ldb, float *beta, float *C, blasint ldc);
void cblas_zsymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
double *alpha, double *A, blasint lda, double *B, blasint ldb, double *beta, double *C, blasint ldc);
void cblas_ssyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
blasint N, blasint K, float alpha, float *A, blasint lda, float beta, float *C, blasint ldc);
void cblas_dsyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
blasint N, blasint K, double alpha, double *A, blasint lda, double beta, double *C, blasint ldc);
void cblas_csyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
blasint N, blasint K, float *alpha, float *A, blasint lda, float *beta, float *C, blasint ldc);
void cblas_zsyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
blasint N, blasint K, double *alpha, double *A, blasint lda, double *beta, double *C, blasint ldc);
void cblas_ssyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
blasint N, blasint K, float alpha, float *A, blasint lda, float *B, blasint ldb, float beta, float *C, blasint ldc);
void cblas_dsyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
blasint N, blasint K, double alpha, double *A, blasint lda, double *B, blasint ldb, double beta, double *C, blasint ldc);
void cblas_csyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
blasint N, blasint K, float *alpha, float *A, blasint lda, float *B, blasint ldb, float *beta, float *C, blasint ldc);
void cblas_zsyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
blasint N, blasint K, double *alpha, double *A, blasint lda, double *B, blasint ldb, double *beta, double *C, blasint ldc);
void cblas_strmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
enum CBLAS_DIAG Diag, blasint M, blasint N, float alpha, float *A, blasint lda, float *B, blasint ldb);
void cblas_dtrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
enum CBLAS_DIAG Diag, blasint M, blasint N, double alpha, double *A, blasint lda, double *B, blasint ldb);
void cblas_ctrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
enum CBLAS_DIAG Diag, blasint M, blasint N, float *alpha, float *A, blasint lda, float *B, blasint ldb);
void cblas_ztrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
enum CBLAS_DIAG Diag, blasint M, blasint N, double *alpha, double *A, blasint lda, double *B, blasint ldb);
void cblas_strsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
enum CBLAS_DIAG Diag, blasint M, blasint N, float alpha, float *A, blasint lda, float *B, blasint ldb);
void cblas_dtrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
enum CBLAS_DIAG Diag, blasint M, blasint N, double alpha, double *A, blasint lda, double *B, blasint ldb);
void cblas_ctrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
enum CBLAS_DIAG Diag, blasint M, blasint N, float *alpha, float *A, blasint lda, float *B, blasint ldb);
void cblas_ztrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
enum CBLAS_DIAG Diag, blasint M, blasint N, double *alpha, double *A, blasint lda, double *B, blasint ldb);
void cblas_chemm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
float *alpha, float *A, blasint lda, float *B, blasint ldb, float *beta, float *C, blasint ldc);
void cblas_zhemm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
double *alpha, double *A, blasint lda, double *B, blasint ldb, double *beta, double *C, blasint ldc);
void cblas_cherk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
float alpha, float *A, blasint lda, float beta, float *C, blasint ldc);
void cblas_zherk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
double alpha, double *A, blasint lda, double beta, double *C, blasint ldc);
void cblas_cher2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
float *alpha, float *A, blasint lda, float *B, blasint ldb, float beta, float *C, blasint ldc);
void cblas_zher2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
double *alpha, double *A, blasint lda, double *B, blasint ldb, double beta, double *C, blasint ldc);
void cblas_xerbla(blasint p, char *rout, char *form, ...);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif

610
src/NativeWrappers/GotoBlas2/include/common.h

@ -0,0 +1,610 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_H
#define COMMON_H
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#ifndef __USE_XOPEN
#define __USE_XOPEN
#endif
#ifndef __USE_SVID
#define __USE_SVID
#endif
#ifdef BUILD_KERNEL
#include "config_kernel.h"
#else
#include "config.h"
#endif
#undef ENABLE_SSE_EXCEPTION
#if defined(SMP_SERVER) || defined(SMP_ONDEMAND)
#define SMP
#endif
#if defined(OS_WINNT) || defined(OS_CYGWIN_NT) || defined(OS_Interix)
#define WINDOWS_ABI
#define OS_WINDOWS
#ifdef DOUBLE
#define DOUBLE_DEFINED DOUBLE
#undef DOUBLE
#endif
#endif
#if !defined(NOINCLUDE) && !defined(ASSEMBLER)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#ifdef OS_LINUX
#include <malloc.h>
#include <sched.h>
#endif
#ifdef OS_WINDOWS
#ifdef ATOM
#define GOTO_ATOM ATOM
#undef ATOM
#endif
#include <windows.h>
#include <math.h>
#ifdef GOTO_ATOM
#define ATOM GOTO_ATOM
#undef GOTO_ATOM
#endif
#else
#include <sys/mman.h>
#include <sys/shm.h>
#include <sys/time.h>
#include <unistd.h>
#include <math.h>
#ifdef SMP
#include <pthread.h>
#endif
#endif
#if defined(OS_SUNOS)
#include <thread.h>
#endif
#ifdef __DECC
#include <c_asm.h>
#include <machine/builtins.h>
#endif
#if defined(ARCH_IA64) && defined(ENABLE_SSE_EXCEPTION)
#include <fenv.h>
#endif
#endif
#if defined(OS_WINDOWS) && defined(DOUBLE_DEFINED)
#define DOUBLE DOUBLE_DEFINED
#undef DOUBLE_DEFINED
#endif
#undef DEBUG_INFO
#define SMP_DEBUG
#undef MALLOC_DEBUG
#undef SMP_ALLOC_DEBUG
#ifndef ZERO
#ifdef XDOUBLE
#define ZERO 0.e0L
#elif defined DOUBLE
#define ZERO 0.e0
#else
#define ZERO 0.e0f
#endif
#endif
#ifndef ONE
#ifdef XDOUBLE
#define ONE 1.e0L
#elif defined DOUBLE
#define ONE 1.e0
#else
#define ONE 1.e0f
#endif
#endif
#define BITMASK(a, b, c) ((((a) >> (b)) & (c)))
#define ALLOCA_ALIGN 63UL
#define NUM_BUFFERS (MAX_CPU_NUMBER * 2)
#ifdef NEEDBUNDERSCORE
#define BLASFUNC(FUNC) FUNC##_
#else
#define BLASFUNC(FUNC) FUNC
#endif
#undef USE_PTHREAD_LOCK
#undef USE_PTHREAD_SPINLOCK
#if defined(USE_PTHREAD_LOCK) && defined(USE_PTHREAD_SPINLOCK)
#error "You can't specify both LOCK operation!"
#endif
#ifdef SMP
#define USE_PTHREAD_LOCK
#undef USE_PTHREAD_SPINLOCK
#endif
#ifdef OS_WINDOWS
#undef USE_PTHREAD_LOCK
#undef USE_PTHREAD_SPINLOCK
#endif
#if defined(USE_PTHREAD_LOCK)
#define LOCK_COMMAND(x) pthread_mutex_lock(x)
#define UNLOCK_COMMAND(x) pthread_mutex_unlock(x)
#elif defined(USE_PTHREAD_SPINLOCK)
#ifndef ASSEMBLER
typedef volatile int pthread_spinlock_t;
int pthread_spin_lock (pthread_spinlock_t *__lock);
int pthread_spin_unlock (pthread_spinlock_t *__lock);
#endif
#define LOCK_COMMAND(x) pthread_spin_lock(x)
#define UNLOCK_COMMAND(x) pthread_spin_unlock(x)
#else
#define LOCK_COMMAND(x) blas_lock(x)
#define UNLOCK_COMMAND(x) blas_unlock(x)
#endif
#define GOTO_SHMID 0x510510
#if 0
#ifndef __CUDACC__
#define __global__
#define __device__
#define __host__
#define __shared__
#endif
#endif
#ifndef ASSEMBLER
#ifdef QUAD_PRECISION
typedef struct {
unsigned long x[2];
} xdouble;
#elif defined EXPRECISION
#define xdouble long double
#else
#define xdouble double
#endif
#if defined(OS_WINDOWS) && defined(__64BIT__)
typedef long long BLASLONG;
typedef unsigned long long BLASULONG;
#else
typedef long BLASLONG;
typedef unsigned long BLASULONG;
#endif
#ifdef USE64BITINT
typedef BLASLONG blasint;
#else
typedef int blasint;
#endif
#else
#ifdef USE64BITINT
#define INTSHIFT 3
#define INTSIZE 8
#else
#define INTSHIFT 2
#define INTSIZE 4
#endif
#endif
#ifdef XDOUBLE
#define FLOAT xdouble
#ifdef QUAD_PRECISION
#define XFLOAT xidouble
#endif
#ifdef QUAD_PRECISION
#define SIZE 32
#define BASE_SHIFT 5
#define ZBASE_SHIFT 6
#else
#define SIZE 16
#define BASE_SHIFT 4
#define ZBASE_SHIFT 5
#endif
#elif defined(DOUBLE)
#define FLOAT double
#define SIZE 8
#define BASE_SHIFT 3
#define ZBASE_SHIFT 4
#else
#define FLOAT float
#define SIZE 4
#define BASE_SHIFT 2
#define ZBASE_SHIFT 3
#endif
#ifndef XFLOAT
#define XFLOAT FLOAT
#endif
#ifndef COMPLEX
#define COMPSIZE 1
#else
#define COMPSIZE 2
#endif
#if defined(C_PGI) || defined(C_SUN)
#define CREAL(X) (*((FLOAT *)&X + 0))
#define CIMAG(X) (*((FLOAT *)&X + 1))
#else
#define CREAL __real__
#define CIMAG __imag__
#endif
#define Address_H(x) (((x)+(1<<15))>>16)
#define Address_L(x) ((x)-((Address_H(x))<<16))
#ifndef MAX_CPU_NUMBER
#define MAX_CPU_NUMBER 2
#endif
#if defined(OS_SUNOS)
#define YIELDING thr_yield()
#endif
#if defined(OS_WINDOWS)
#define YIELDING SwitchToThread()
#endif
#ifndef YIELDING
#define YIELDING sched_yield()
#endif
#ifdef QUAD_PRECISION
#include "common_quad.h"
#endif
#ifdef ARCH_ALPHA
#include "common_alpha.h"
#endif
#ifdef ARCH_X86
#include "common_x86.h"
#endif
#ifdef ARCH_X86_64
#include "common_x86_64.h"
#endif
#ifdef ARCH_IA64
#include "common_ia64.h"
#endif
#ifdef ARCH_POWER
#include "common_power.h"
#endif
#ifdef sparc
#include "common_sparc.h"
#endif
#ifdef ARCH_MIPS64
#include "common_mips64.h"
#endif
#ifdef OS_LINUX
#include "common_linux.h"
#endif
#define MMAP_ACCESS (PROT_READ | PROT_WRITE)
#define MMAP_POLICY (MAP_PRIVATE | MAP_ANONYMOUS)
#include "param.h"
#include "common_param.h"
#ifndef STDERR
#define STDERR stderr
#endif
#ifndef MASK
#define MASK(a, b) (((a) + ((b) - 1)) & ~((b) - 1))
#endif
#if defined(XDOUBLE) || defined(DOUBLE)
#define FLOATRET FLOAT
#else
#ifdef NEED_F2CCONV
#define FLOATRET double
#else
#define FLOATRET float
#endif
#endif
#ifndef IFLUSH
#define IFLUSH
#endif
#ifndef IFLUSH_HALF
#define IFLUSH_HALF
#endif
#if defined(C_GCC) && (( __GNUC__ <= 3) || ((__GNUC__ == 4) && (__GNUC_MINOR__ < 2)))
#ifdef USE_OPENMP
#undef USE_OPENMP
#endif
#endif
#ifndef ASSEMBLER
#ifndef MIN
#define MIN(a,b) (a>b? b:a)
#endif
#ifndef MAX
#define MAX(a,b) (a<b? b:a)
#endif
#define TOUPPER(a) {if ((a) > 0x60) (a) -= 0x20;}
#if defined(__FreeBSD__) || defined(__APPLE__)
#define MAP_ANONYMOUS MAP_ANON
#endif
/* Common Memory Management Routine */
void blas_set_parameter(void);
int blas_get_cpu_number(void);
void *blas_memory_alloc (int);
void blas_memory_free (void *);
int get_num_procs (void);
#if defined(OS_LINUX) && defined(SMP) && !defined(NO_AFFINITY)
int get_num_nodes (void);
int get_num_proc (int);
int get_node_equal (void);
#endif
void goto_set_num_threads(int);
void gotoblas_affinity_init(void);
void gotoblas_affinity_quit(void);
void gotoblas_dynamic_init(void);
void gotoblas_dynamic_quit(void);
void gotoblas_profile_init(void);
void gotoblas_profile_quit(void);
#ifdef USE_OPENMP
int omp_in_parallel(void);
int omp_get_num_procs(void);
#else
#ifdef __ELF__
int omp_in_parallel (void) __attribute__ ((weak));
int omp_get_num_procs(void) __attribute__ ((weak));
#endif
#endif
static __inline void blas_unlock(volatile BLASULONG *address){
MB;
*address = 0;
}
static __inline int readenv(char *env) {
char *p;
p = getenv(env);
if (p == NULL) return 0; else return atoi(p);
}
#if !defined(XDOUBLE) || !defined(QUAD_PRECISION)
static __inline void compinv(FLOAT *b, FLOAT ar, FLOAT ai){
#ifndef UNIT
FLOAT ratio, den;
if (
#ifdef XDOUBLE
(fabsl(ar)) >= (fabsl(ai))
#elif defined DOUBLE
(fabs (ar)) >= (fabs (ai))
#else
(fabsf(ar)) >= (fabsf(ai))
#endif
) {
ratio = ai / ar;
den = (FLOAT)(ONE / (ar * (ONE + ratio * ratio)));
ar = den;
ai = -ratio * den;
} else {
ratio = ar / ai;
den = (FLOAT)(ONE /(ai * (ONE + ratio * ratio)));
ar = ratio * den;
ai = -den;
}
b[0] = ar;
b[1] = ai;
#else
b[0] = ONE;
b[1] = ZERO;
#endif
}
#endif
#ifdef MALLOC_DEBUG
void *blas_debug_alloc(int);
void *blas_debug_free(void *);
#undef malloc
#undef free
#define malloc(a) blas_debug_alloc(a)
#define free(a) blas_debug_free (a)
#endif
#ifndef COPYOVERHEAD
#define GEMMRETTYPE int
#else
typedef struct {
double outercopy;
double innercopy;
double kernel;
double mflops;
} copyoverhead_t;
#define GEMMRETTYPE copyoverhead_t
#endif
#endif
#ifndef BUILD_KERNEL
#define KNAME(A, B) A
#else
#define KNAME(A, B) A##B
#endif
#include "common_interface.h"
#ifdef SANITY_CHECK
#include "common_reference.h"
#endif
#include "common_macro.h"
#include "common_level1.h"
#include "common_level2.h"
#include "common_level3.h"
#include "common_lapack.h"
#ifdef CBLAS
#include "cblas.h"
#endif
#ifndef ASSEMBLER
#if 0
#include "symcopy.h"
#endif
#if defined(SMP_SERVER) && defined(SMP_ONDEMAND)
#error Both SMP_SERVER and SMP_ONDEMAND are specified.
#endif
#if defined(SMP_SERVER) || defined(SMP_ONDEMAND)
#include "common_thread.h"
#endif
#endif
#define INFO_NUM 99
#ifndef DEFAULT_CPU_NUMBER
#define DEFAULT_CPU_NUMBER 4
#endif
#ifndef IDEBUG_START
#define IDEBUG_START
#endif
#ifndef IDEBUG_END
#define IDEBUG_END
#endif
#if !defined(ASSEMBLER) && defined(FUNCTION_PROFILE)
typedef struct {
int func;
unsigned long long calls, fops, area, cycles, tcycles;
} func_profile_t;
extern func_profile_t function_profile_table[];
extern int gotoblas_profile;
#ifdef XDOUBLE
#define NUMOPT QNUMOPT
#elif defined DOUBLE
#define NUMOPT DNUMOPT
#else
#define NUMOPT SNUMOPT
#endif
#define FUNCTION_PROFILE_START() { unsigned long long profile_start = rpcc(), profile_end;
#ifdef SMP
#define FUNCTION_PROFILE_END(COMP, AREA, OPS) \
if (gotoblas_profile) { \
profile_end = rpcc(); \
function_profile_table[PROFILE_FUNC_NAME].calls ++; \
function_profile_table[PROFILE_FUNC_NAME].area += SIZE * COMPSIZE * (AREA); \
function_profile_table[PROFILE_FUNC_NAME].fops += (COMP) * (OPS) / NUMOPT; \
function_profile_table[PROFILE_FUNC_NAME].cycles += (profile_end - profile_start); \
function_profile_table[PROFILE_FUNC_NAME].tcycles += blas_cpu_number * (profile_end - profile_start); \
} \
}
#else
#define FUNCTION_PROFILE_END(COMP, AREA, OPS) \
if (gotoblas_profile) { \
profile_end = rpcc(); \
function_profile_table[PROFILE_FUNC_NAME].calls ++; \
function_profile_table[PROFILE_FUNC_NAME].area += SIZE * COMPSIZE * (AREA); \
function_profile_table[PROFILE_FUNC_NAME].fops += (COMP) * (OPS) / NUMOPT; \
function_profile_table[PROFILE_FUNC_NAME].cycles += (profile_end - profile_start); \
function_profile_table[PROFILE_FUNC_NAME].tcycles += (profile_end - profile_start); \
} \
}
#endif
#else
#define FUNCTION_PROFILE_START()
#define FUNCTION_PROFILE_END(COMP, AREA, OPS)
#endif
#if 1
#define PRINT_DEBUG_CNAME
#define PRINT_DEBUG_NAME
#else
#define PRINT_DEBUG_CNAME if (readenv("GOTO_DEBUG")) fprintf(stderr, "GotoBLAS : %s\n", CHAR_CNAME)
#define PRINT_DEBUG_NAME if (readenv("GOTO_DEBUG")) fprintf(stderr, "GotoBLAS : %s\n", CHAR_NAME)
#endif
#endif

179
src/NativeWrappers/GotoBlas2/include/common_alpha.h

@ -0,0 +1,179 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_ALPHA
#define COMMON_ALPHA
#ifndef ASSEMBLER
#define MB asm("mb")
#define WMB asm("wmb")
static void __inline blas_lock(unsigned long *address){
#ifndef __DECC
unsigned long tmp1, tmp2;
asm volatile(
"1: ldq %1, %0\n"
" bne %1, 2f\n"
" ldq_l %1, %0\n"
" bne %1, 2f\n"
" or %1, 1, %2\n"
" stq_c %2, %0\n"
" beq %2, 2f\n"
" mb\n "
" br $31, 3f\n"
"2: br $31, 1b\n"
"3:\n" : "=m"(*address), "=&r"(tmp1), "=&r"(tmp2) : : "memory");
#else
asm (
"10:"
" ldq %t0, 0(%a0); "
" bne %t0, 20f; "
" ldq_l %t0, 0(%a0); "
" bne %t0, 20f; "
" or %t0, 1, %t1;"
" stq_c %t1, 0(%a0); "
" beq %t1, 20f; "
" mb; "
" br %r31,30f; "
"20: "
" br %r31,10b; "
"30:", address);
#endif
}
static __inline unsigned int rpcc(void){
unsigned int r0;
#ifndef __DECC
asm __volatile__("rpcc %0" : "=r"(r0) : : "memory");
#else
r0 = asm("rpcc %v0");
#endif
return r0;
}
#define HALT ldq $0, 0($0)
#ifndef __DECC
#define GET_IMAGE(res) asm __volatile__("fmov $f1, %0" : "=f"(res) : : "memory")
#else
#define GET_IMAGE(res) res = dasm("fmov $f1, %f0")
#endif
#ifdef SMP
#ifdef USE64BITINT
static __inline long blas_quickdivide(long x, long y){
return x/y;
}
#else
extern unsigned int blas_quick_divide_table[];
static __inline int blas_quickdivide(unsigned int x, unsigned int y){
if (y <= 1) return x;
return (int)((x * (unsigned long)blas_quick_divide_table[y]) >> 32);
}
#endif
#endif
#define BASE_ADDRESS ((0x1b0UL << 33) | (0x1c0UL << 23) | (0x000UL << 13))
#ifndef PAGESIZE
#define PAGESIZE ( 8UL << 10)
#define HUGE_PAGESIZE ( 4 << 20)
#endif
#define BUFFER_SIZE (32UL << 20)
#else
#ifndef F_INTERFACE
#define REALNAME ASMNAME
#else
#define REALNAME ASMFNAME
#endif
#define PROLOGUE \
.arch ev6; \
.set noat; \
.set noreorder; \
.text; \
.align 5; \
.globl REALNAME; \
.ent REALNAME; \
REALNAME:
#ifdef PROFILE
#define PROFCODE \
ldgp $gp, 0($27); \
lda $28, _mcount; \
jsr $28, ($28), _mcount; \
.prologue 1
#else
#define PROFCODE .prologue 0
#endif
#define EPILOGUE \
.end REALNAME; \
.ident VERSION
#endif
#ifdef DOUBLE
#define SXADDQ s8addq
#define SXSUBL s8subl
#define LD ldt
#define ST stt
#define STQ stq
#define ADD addt/su
#define SUB subt/su
#define MUL mult/su
#define DIV divt/su
#else
#define SXADDQ s4addq
#define SXSUBL s4subl
#define LD lds
#define ST sts
#define STQ stl
#define ADD adds/su
#define SUB subs/su
#define MUL muls/su
#define DIV divs/su
#endif
#endif

611
src/NativeWrappers/GotoBlas2/include/common_c.h

@ -0,0 +1,611 @@
#ifndef COMMON_C_H
#define COMMON_C_H
#ifndef DYNAMIC_ARCH
#define CAMAX_K camax_k
#define CAMIN_K camin_k
#define CMAX_K cmax_k
#define CMIN_K cmin_k
#define ICAMAX_K icamax_k
#define ICAMIN_K icamin_k
#define ICMAX_K icmax_k
#define ICMIN_K icmin_k
#define CASUM_K casum_k
#define CAXPYU_K caxpy_k
#define CAXPYC_K caxpyc_k
#define CCOPY_K ccopy_k
#define CDOTU_K cdotu_k
#define CDOTC_K cdotc_k
#define CNRM2_K cnrm2_k
#define CSCAL_K cscal_k
#define CSWAP_K cswap_k
#define CROT_K csrot_k
#define CGEMV_N cgemv_n
#define CGEMV_T cgemv_t
#define CGEMV_R cgemv_r
#define CGEMV_C cgemv_c
#define CGEMV_O cgemv_o
#define CGEMV_U cgemv_u
#define CGEMV_S cgemv_s
#define CGEMV_D cgemv_d
#define CGERU_K cgeru_k
#define CGERC_K cgerc_k
#define CGERV_K cgerv_k
#define CGERD_K cgerd_k
#define CSYMV_U csymv_U
#define CSYMV_L csymv_L
#define CHEMV_U chemv_U
#define CHEMV_L chemv_L
#define CHEMV_V chemv_V
#define CHEMV_M chemv_M
#define CSYMV_THREAD_U csymv_thread_U
#define CSYMV_THREAD_L csymv_thread_L
#define CHEMV_THREAD_U chemv_thread_U
#define CHEMV_THREAD_L chemv_thread_L
#define CHEMV_THREAD_V chemv_thread_V
#define CHEMV_THREAD_M chemv_thread_M
#define CGEMM_ONCOPY cgemm_oncopy
#define CGEMM_OTCOPY cgemm_otcopy
#if CGEMM_DEFAULT_UNROLL_M == CGEMM_DEFAULT_UNROLL_N
#define CGEMM_INCOPY cgemm_oncopy
#define CGEMM_ITCOPY cgemm_otcopy
#else
#define CGEMM_INCOPY cgemm_incopy
#define CGEMM_ITCOPY cgemm_itcopy
#endif
#define CTRMM_OUNUCOPY ctrmm_ounucopy
#define CTRMM_OUNNCOPY ctrmm_ounncopy
#define CTRMM_OUTUCOPY ctrmm_outucopy
#define CTRMM_OUTNCOPY ctrmm_outncopy
#define CTRMM_OLNUCOPY ctrmm_olnucopy
#define CTRMM_OLNNCOPY ctrmm_olnncopy
#define CTRMM_OLTUCOPY ctrmm_oltucopy
#define CTRMM_OLTNCOPY ctrmm_oltncopy
#define CTRSM_OUNUCOPY ctrsm_ounucopy
#define CTRSM_OUNNCOPY ctrsm_ounncopy
#define CTRSM_OUTUCOPY ctrsm_outucopy
#define CTRSM_OUTNCOPY ctrsm_outncopy
#define CTRSM_OLNUCOPY ctrsm_olnucopy
#define CTRSM_OLNNCOPY ctrsm_olnncopy
#define CTRSM_OLTUCOPY ctrsm_oltucopy
#define CTRSM_OLTNCOPY ctrsm_oltncopy
#if CGEMM_DEFAULT_UNROLL_M == CGEMM_DEFAULT_UNROLL_N
#define CTRMM_IUNUCOPY ctrmm_ounucopy
#define CTRMM_IUNNCOPY ctrmm_ounncopy
#define CTRMM_IUTUCOPY ctrmm_outucopy
#define CTRMM_IUTNCOPY ctrmm_outncopy
#define CTRMM_ILNUCOPY ctrmm_olnucopy
#define CTRMM_ILNNCOPY ctrmm_olnncopy
#define CTRMM_ILTUCOPY ctrmm_oltucopy
#define CTRMM_ILTNCOPY ctrmm_oltncopy
#define CTRSM_IUNUCOPY ctrsm_ounucopy
#define CTRSM_IUNNCOPY ctrsm_ounncopy
#define CTRSM_IUTUCOPY ctrsm_outucopy
#define CTRSM_IUTNCOPY ctrsm_outncopy
#define CTRSM_ILNUCOPY ctrsm_olnucopy
#define CTRSM_ILNNCOPY ctrsm_olnncopy
#define CTRSM_ILTUCOPY ctrsm_oltucopy
#define CTRSM_ILTNCOPY ctrsm_oltncopy
#else
#define CTRMM_IUNUCOPY ctrmm_iunucopy
#define CTRMM_IUNNCOPY ctrmm_iunncopy
#define CTRMM_IUTUCOPY ctrmm_iutucopy
#define CTRMM_IUTNCOPY ctrmm_iutncopy
#define CTRMM_ILNUCOPY ctrmm_ilnucopy
#define CTRMM_ILNNCOPY ctrmm_ilnncopy
#define CTRMM_ILTUCOPY ctrmm_iltucopy
#define CTRMM_ILTNCOPY ctrmm_iltncopy
#define CTRSM_IUNUCOPY ctrsm_iunucopy
#define CTRSM_IUNNCOPY ctrsm_iunncopy
#define CTRSM_IUTUCOPY ctrsm_iutucopy
#define CTRSM_IUTNCOPY ctrsm_iutncopy
#define CTRSM_ILNUCOPY ctrsm_ilnucopy
#define CTRSM_ILNNCOPY ctrsm_ilnncopy
#define CTRSM_ILTUCOPY ctrsm_iltucopy
#define CTRSM_ILTNCOPY ctrsm_iltncopy
#endif
#define CGEMM_BETA cgemm_beta
#define CGEMM_KERNEL_N cgemm_kernel_n
#define CGEMM_KERNEL_L cgemm_kernel_l
#define CGEMM_KERNEL_R cgemm_kernel_r
#define CGEMM_KERNEL_B cgemm_kernel_b
#define CTRMM_KERNEL_LN ctrmm_kernel_LN
#define CTRMM_KERNEL_LT ctrmm_kernel_LT
#define CTRMM_KERNEL_LR ctrmm_kernel_LR
#define CTRMM_KERNEL_LC ctrmm_kernel_LC
#define CTRMM_KERNEL_RN ctrmm_kernel_RN
#define CTRMM_KERNEL_RT ctrmm_kernel_RT
#define CTRMM_KERNEL_RR ctrmm_kernel_RR
#define CTRMM_KERNEL_RC ctrmm_kernel_RC
#define CTRSM_KERNEL_LN ctrsm_kernel_LN
#define CTRSM_KERNEL_LT ctrsm_kernel_LT
#define CTRSM_KERNEL_LR ctrsm_kernel_LR
#define CTRSM_KERNEL_LC ctrsm_kernel_LC
#define CTRSM_KERNEL_RN ctrsm_kernel_RN
#define CTRSM_KERNEL_RT ctrsm_kernel_RT
#define CTRSM_KERNEL_RR ctrsm_kernel_RR
#define CTRSM_KERNEL_RC ctrsm_kernel_RC
#define CSYMM_OUTCOPY csymm_outcopy
#define CSYMM_OLTCOPY csymm_oltcopy
#if CGEMM_DEFAULT_UNROLL_M == CGEMM_DEFAULT_UNROLL_N
#define CSYMM_IUTCOPY csymm_outcopy
#define CSYMM_ILTCOPY csymm_oltcopy
#else
#define CSYMM_IUTCOPY csymm_iutcopy
#define CSYMM_ILTCOPY csymm_iltcopy
#endif
#define CHEMM_OUTCOPY chemm_outcopy
#define CHEMM_OLTCOPY chemm_oltcopy
#if CGEMM_DEFAULT_UNROLL_M == CGEMM_DEFAULT_UNROLL_N
#define CHEMM_IUTCOPY chemm_outcopy
#define CHEMM_ILTCOPY chemm_oltcopy
#else
#define CHEMM_IUTCOPY chemm_iutcopy
#define CHEMM_ILTCOPY chemm_iltcopy
#endif
#define CGEMM3M_ONCOPYB cgemm3m_oncopyb
#define CGEMM3M_ONCOPYR cgemm3m_oncopyr
#define CGEMM3M_ONCOPYI cgemm3m_oncopyi
#define CGEMM3M_OTCOPYB cgemm3m_otcopyb
#define CGEMM3M_OTCOPYR cgemm3m_otcopyr
#define CGEMM3M_OTCOPYI cgemm3m_otcopyi
#define CGEMM3M_INCOPYB cgemm3m_incopyb
#define CGEMM3M_INCOPYR cgemm3m_incopyr
#define CGEMM3M_INCOPYI cgemm3m_incopyi
#define CGEMM3M_ITCOPYB cgemm3m_itcopyb
#define CGEMM3M_ITCOPYR cgemm3m_itcopyr
#define CGEMM3M_ITCOPYI cgemm3m_itcopyi
#define CSYMM3M_ILCOPYB csymm3m_ilcopyb
#define CSYMM3M_IUCOPYB csymm3m_iucopyb
#define CSYMM3M_ILCOPYR csymm3m_ilcopyr
#define CSYMM3M_IUCOPYR csymm3m_iucopyr
#define CSYMM3M_ILCOPYI csymm3m_ilcopyi
#define CSYMM3M_IUCOPYI csymm3m_iucopyi
#define CSYMM3M_OLCOPYB csymm3m_olcopyb
#define CSYMM3M_OUCOPYB csymm3m_oucopyb
#define CSYMM3M_OLCOPYR csymm3m_olcopyr
#define CSYMM3M_OUCOPYR csymm3m_oucopyr
#define CSYMM3M_OLCOPYI csymm3m_olcopyi
#define CSYMM3M_OUCOPYI csymm3m_oucopyi
#define CHEMM3M_ILCOPYB chemm3m_ilcopyb
#define CHEMM3M_IUCOPYB chemm3m_iucopyb
#define CHEMM3M_ILCOPYR chemm3m_ilcopyr
#define CHEMM3M_IUCOPYR chemm3m_iucopyr
#define CHEMM3M_ILCOPYI chemm3m_ilcopyi
#define CHEMM3M_IUCOPYI chemm3m_iucopyi
#define CHEMM3M_OLCOPYB chemm3m_olcopyb
#define CHEMM3M_OUCOPYB chemm3m_oucopyb
#define CHEMM3M_OLCOPYR chemm3m_olcopyr
#define CHEMM3M_OUCOPYR chemm3m_oucopyr
#define CHEMM3M_OLCOPYI chemm3m_olcopyi
#define CHEMM3M_OUCOPYI chemm3m_oucopyi
#define CGEMM3M_KERNEL cgemm3m_kernel
#define CNEG_TCOPY cneg_tcopy
#define CLASWP_NCOPY claswp_ncopy
#else
#define CAMAX_K gotoblas -> camax_k
#define CAMIN_K gotoblas -> camin_k
#define CMAX_K gotoblas -> cmax_k
#define CMIN_K gotoblas -> cmin_k
#define ICAMAX_K gotoblas -> icamax_k
#define ICAMIN_K gotoblas -> icamin_k
#define ICMAX_K gotoblas -> icmax_k
#define ICMIN_K gotoblas -> icmin_k
#define CASUM_K gotoblas -> casum_k
#define CAXPYU_K gotoblas -> caxpy_k
#define CAXPYC_K gotoblas -> caxpyc_k
#define CCOPY_K gotoblas -> ccopy_k
#define CDOTU_K gotoblas -> cdotu_k
#define CDOTC_K gotoblas -> cdotc_k
#define CNRM2_K gotoblas -> cnrm2_k
#define CSCAL_K gotoblas -> cscal_k
#define CSWAP_K gotoblas -> cswap_k
#define CROT_K gotoblas -> csrot_k
#define CGEMV_N gotoblas -> cgemv_n
#define CGEMV_T gotoblas -> cgemv_t
#define CGEMV_R gotoblas -> cgemv_r
#define CGEMV_C gotoblas -> cgemv_c
#define CGEMV_O gotoblas -> cgemv_o
#define CGEMV_U gotoblas -> cgemv_u
#define CGEMV_S gotoblas -> cgemv_s
#define CGEMV_D gotoblas -> cgemv_d
#define CGERU_K gotoblas -> cgeru_k
#define CGERC_K gotoblas -> cgerc_k
#define CGERV_K gotoblas -> cgerv_k
#define CGERD_K gotoblas -> cgerd_k
#define CSYMV_U gotoblas -> csymv_U
#define CSYMV_L gotoblas -> csymv_L
#define CHEMV_U gotoblas -> chemv_U
#define CHEMV_L gotoblas -> chemv_L
#define CHEMV_V gotoblas -> chemv_V
#define CHEMV_M gotoblas -> chemv_M
#define CSYMV_THREAD_U csymv_thread_U
#define CSYMV_THREAD_L csymv_thread_L
#define CHEMV_THREAD_U chemv_thread_U
#define CHEMV_THREAD_L chemv_thread_L
#define CHEMV_THREAD_V chemv_thread_V
#define CHEMV_THREAD_M chemv_thread_M
#define CGEMM_ONCOPY gotoblas -> cgemm_oncopy
#define CGEMM_OTCOPY gotoblas -> cgemm_otcopy
#define CGEMM_INCOPY gotoblas -> cgemm_incopy
#define CGEMM_ITCOPY gotoblas -> cgemm_itcopy
#define CTRMM_OUNUCOPY gotoblas -> ctrmm_ounucopy
#define CTRMM_OUTUCOPY gotoblas -> ctrmm_outucopy
#define CTRMM_OLNUCOPY gotoblas -> ctrmm_olnucopy
#define CTRMM_OLTUCOPY gotoblas -> ctrmm_oltucopy
#define CTRSM_OUNUCOPY gotoblas -> ctrsm_ounucopy
#define CTRSM_OUTUCOPY gotoblas -> ctrsm_outucopy
#define CTRSM_OLNUCOPY gotoblas -> ctrsm_olnucopy
#define CTRSM_OLTUCOPY gotoblas -> ctrsm_oltucopy
#define CTRMM_IUNUCOPY gotoblas -> ctrmm_iunucopy
#define CTRMM_IUTUCOPY gotoblas -> ctrmm_iutucopy
#define CTRMM_ILNUCOPY gotoblas -> ctrmm_ilnucopy
#define CTRMM_ILTUCOPY gotoblas -> ctrmm_iltucopy
#define CTRSM_IUNUCOPY gotoblas -> ctrsm_iunucopy
#define CTRSM_IUTUCOPY gotoblas -> ctrsm_iutucopy
#define CTRSM_ILNUCOPY gotoblas -> ctrsm_ilnucopy
#define CTRSM_ILTUCOPY gotoblas -> ctrsm_iltucopy
#define CTRMM_OUNNCOPY gotoblas -> ctrmm_ounncopy
#define CTRMM_OUTNCOPY gotoblas -> ctrmm_outncopy
#define CTRMM_OLNNCOPY gotoblas -> ctrmm_olnncopy
#define CTRMM_OLTNCOPY gotoblas -> ctrmm_oltncopy
#define CTRSM_OUNNCOPY gotoblas -> ctrsm_ounncopy
#define CTRSM_OUTNCOPY gotoblas -> ctrsm_outncopy
#define CTRSM_OLNNCOPY gotoblas -> ctrsm_olnncopy
#define CTRSM_OLTNCOPY gotoblas -> ctrsm_oltncopy
#define CTRMM_IUNNCOPY gotoblas -> ctrmm_iunncopy
#define CTRMM_IUTNCOPY gotoblas -> ctrmm_iutncopy
#define CTRMM_ILNNCOPY gotoblas -> ctrmm_ilnncopy
#define CTRMM_ILTNCOPY gotoblas -> ctrmm_iltncopy
#define CTRSM_IUNNCOPY gotoblas -> ctrsm_iunncopy
#define CTRSM_IUTNCOPY gotoblas -> ctrsm_iutncopy
#define CTRSM_ILNNCOPY gotoblas -> ctrsm_ilnncopy
#define CTRSM_ILTNCOPY gotoblas -> ctrsm_iltncopy
#define CGEMM_BETA gotoblas -> cgemm_beta
#define CGEMM_KERNEL_N gotoblas -> cgemm_kernel_n
#define CGEMM_KERNEL_L gotoblas -> cgemm_kernel_l
#define CGEMM_KERNEL_R gotoblas -> cgemm_kernel_r
#define CGEMM_KERNEL_B gotoblas -> cgemm_kernel_b
#define CTRMM_KERNEL_LN gotoblas -> ctrmm_kernel_LN
#define CTRMM_KERNEL_LT gotoblas -> ctrmm_kernel_LT
#define CTRMM_KERNEL_LR gotoblas -> ctrmm_kernel_LR
#define CTRMM_KERNEL_LC gotoblas -> ctrmm_kernel_LC
#define CTRMM_KERNEL_RN gotoblas -> ctrmm_kernel_RN
#define CTRMM_KERNEL_RT gotoblas -> ctrmm_kernel_RT
#define CTRMM_KERNEL_RR gotoblas -> ctrmm_kernel_RR
#define CTRMM_KERNEL_RC gotoblas -> ctrmm_kernel_RC
#define CTRSM_KERNEL_LN gotoblas -> ctrsm_kernel_LN
#define CTRSM_KERNEL_LT gotoblas -> ctrsm_kernel_LT
#define CTRSM_KERNEL_LR gotoblas -> ctrsm_kernel_LR
#define CTRSM_KERNEL_LC gotoblas -> ctrsm_kernel_LC
#define CTRSM_KERNEL_RN gotoblas -> ctrsm_kernel_RN
#define CTRSM_KERNEL_RT gotoblas -> ctrsm_kernel_RT
#define CTRSM_KERNEL_RR gotoblas -> ctrsm_kernel_RR
#define CTRSM_KERNEL_RC gotoblas -> ctrsm_kernel_RC
#define CSYMM_IUTCOPY gotoblas -> csymm_iutcopy
#define CSYMM_ILTCOPY gotoblas -> csymm_iltcopy
#define CSYMM_OUTCOPY gotoblas -> csymm_outcopy
#define CSYMM_OLTCOPY gotoblas -> csymm_oltcopy
#define CHEMM_OUTCOPY gotoblas -> chemm_outcopy
#define CHEMM_OLTCOPY gotoblas -> chemm_oltcopy
#define CHEMM_IUTCOPY gotoblas -> chemm_iutcopy
#define CHEMM_ILTCOPY gotoblas -> chemm_iltcopy
#define CGEMM3M_ONCOPYB gotoblas -> cgemm3m_oncopyb
#define CGEMM3M_ONCOPYR gotoblas -> cgemm3m_oncopyr
#define CGEMM3M_ONCOPYI gotoblas -> cgemm3m_oncopyi
#define CGEMM3M_OTCOPYB gotoblas -> cgemm3m_otcopyb
#define CGEMM3M_OTCOPYR gotoblas -> cgemm3m_otcopyr
#define CGEMM3M_OTCOPYI gotoblas -> cgemm3m_otcopyi
#define CGEMM3M_INCOPYB gotoblas -> cgemm3m_incopyb
#define CGEMM3M_INCOPYR gotoblas -> cgemm3m_incopyr
#define CGEMM3M_INCOPYI gotoblas -> cgemm3m_incopyi
#define CGEMM3M_ITCOPYB gotoblas -> cgemm3m_itcopyb
#define CGEMM3M_ITCOPYR gotoblas -> cgemm3m_itcopyr
#define CGEMM3M_ITCOPYI gotoblas -> cgemm3m_itcopyi
#define CSYMM3M_ILCOPYB gotoblas -> csymm3m_ilcopyb
#define CSYMM3M_IUCOPYB gotoblas -> csymm3m_iucopyb
#define CSYMM3M_ILCOPYR gotoblas -> csymm3m_ilcopyr
#define CSYMM3M_IUCOPYR gotoblas -> csymm3m_iucopyr
#define CSYMM3M_ILCOPYI gotoblas -> csymm3m_ilcopyi
#define CSYMM3M_IUCOPYI gotoblas -> csymm3m_iucopyi
#define CSYMM3M_OLCOPYB gotoblas -> csymm3m_olcopyb
#define CSYMM3M_OUCOPYB gotoblas -> csymm3m_oucopyb
#define CSYMM3M_OLCOPYR gotoblas -> csymm3m_olcopyr
#define CSYMM3M_OUCOPYR gotoblas -> csymm3m_oucopyr
#define CSYMM3M_OLCOPYI gotoblas -> csymm3m_olcopyi
#define CSYMM3M_OUCOPYI gotoblas -> csymm3m_oucopyi
#define CHEMM3M_ILCOPYB gotoblas -> chemm3m_ilcopyb
#define CHEMM3M_IUCOPYB gotoblas -> chemm3m_iucopyb
#define CHEMM3M_ILCOPYR gotoblas -> chemm3m_ilcopyr
#define CHEMM3M_IUCOPYR gotoblas -> chemm3m_iucopyr
#define CHEMM3M_ILCOPYI gotoblas -> chemm3m_ilcopyi
#define CHEMM3M_IUCOPYI gotoblas -> chemm3m_iucopyi
#define CHEMM3M_OLCOPYB gotoblas -> chemm3m_olcopyb
#define CHEMM3M_OUCOPYB gotoblas -> chemm3m_oucopyb
#define CHEMM3M_OLCOPYR gotoblas -> chemm3m_olcopyr
#define CHEMM3M_OUCOPYR gotoblas -> chemm3m_oucopyr
#define CHEMM3M_OLCOPYI gotoblas -> chemm3m_olcopyi
#define CHEMM3M_OUCOPYI gotoblas -> chemm3m_oucopyi
#define CGEMM3M_KERNEL gotoblas -> cgemm3m_kernel
#define CNEG_TCOPY gotoblas -> cneg_tcopy
#define CLASWP_NCOPY gotoblas -> claswp_ncopy
#endif
#define CGEMM_NN cgemm_nn
#define CGEMM_CN cgemm_cn
#define CGEMM_TN cgemm_tn
#define CGEMM_NC cgemm_nc
#define CGEMM_NT cgemm_nt
#define CGEMM_CC cgemm_cc
#define CGEMM_CT cgemm_ct
#define CGEMM_TC cgemm_tc
#define CGEMM_TT cgemm_tt
#define CGEMM_NR cgemm_nr
#define CGEMM_TR cgemm_tr
#define CGEMM_CR cgemm_cr
#define CGEMM_RN cgemm_rn
#define CGEMM_RT cgemm_rt
#define CGEMM_RC cgemm_rc
#define CGEMM_RR cgemm_rr
#define CSYMM_LU csymm_LU
#define CSYMM_LL csymm_LL
#define CSYMM_RU csymm_RU
#define CSYMM_RL csymm_RL
#define CHEMM_LU chemm_LU
#define CHEMM_LL chemm_LL
#define CHEMM_RU chemm_RU
#define CHEMM_RL chemm_RL
#define CSYRK_UN csyrk_UN
#define CSYRK_UT csyrk_UT
#define CSYRK_LN csyrk_LN
#define CSYRK_LT csyrk_LT
#define CSYRK_UR csyrk_UN
#define CSYRK_UC csyrk_UT
#define CSYRK_LR csyrk_LN
#define CSYRK_LC csyrk_LT
#define CSYRK_KERNEL_U csyrk_kernel_U
#define CSYRK_KERNEL_L csyrk_kernel_L
#define CHERK_UN cherk_UN
#define CHERK_LN cherk_LN
#define CHERK_UC cherk_UC
#define CHERK_LC cherk_LC
#define CHER2K_UN cher2k_UN
#define CHER2K_LN cher2k_LN
#define CHER2K_UC cher2k_UC
#define CHER2K_LC cher2k_LC
#define CSYR2K_UN csyr2k_UN
#define CSYR2K_UT csyr2k_UT
#define CSYR2K_LN csyr2k_LN
#define CSYR2K_LT csyr2k_LT
#define CSYR2K_UR csyr2k_UN
#define CSYR2K_UC csyr2k_UT
#define CSYR2K_LR csyr2k_LN
#define CSYR2K_LC csyr2k_LT
#define CSYR2K_KERNEL_U csyr2k_kernel_U
#define CSYR2K_KERNEL_L csyr2k_kernel_L
#define CTRMM_LNUU ctrmm_LNUU
#define CTRMM_LNUN ctrmm_LNUN
#define CTRMM_LNLU ctrmm_LNLU
#define CTRMM_LNLN ctrmm_LNLN
#define CTRMM_LTUU ctrmm_LTUU
#define CTRMM_LTUN ctrmm_LTUN
#define CTRMM_LTLU ctrmm_LTLU
#define CTRMM_LTLN ctrmm_LTLN
#define CTRMM_LRUU ctrmm_LRUU
#define CTRMM_LRUN ctrmm_LRUN
#define CTRMM_LRLU ctrmm_LRLU
#define CTRMM_LRLN ctrmm_LRLN
#define CTRMM_LCUU ctrmm_LCUU
#define CTRMM_LCUN ctrmm_LCUN
#define CTRMM_LCLU ctrmm_LCLU
#define CTRMM_LCLN ctrmm_LCLN
#define CTRMM_RNUU ctrmm_RNUU
#define CTRMM_RNUN ctrmm_RNUN
#define CTRMM_RNLU ctrmm_RNLU
#define CTRMM_RNLN ctrmm_RNLN
#define CTRMM_RTUU ctrmm_RTUU
#define CTRMM_RTUN ctrmm_RTUN
#define CTRMM_RTLU ctrmm_RTLU
#define CTRMM_RTLN ctrmm_RTLN
#define CTRMM_RRUU ctrmm_RRUU
#define CTRMM_RRUN ctrmm_RRUN
#define CTRMM_RRLU ctrmm_RRLU
#define CTRMM_RRLN ctrmm_RRLN
#define CTRMM_RCUU ctrmm_RCUU
#define CTRMM_RCUN ctrmm_RCUN
#define CTRMM_RCLU ctrmm_RCLU
#define CTRMM_RCLN ctrmm_RCLN
#define CTRSM_LNUU ctrsm_LNUU
#define CTRSM_LNUN ctrsm_LNUN
#define CTRSM_LNLU ctrsm_LNLU
#define CTRSM_LNLN ctrsm_LNLN
#define CTRSM_LTUU ctrsm_LTUU
#define CTRSM_LTUN ctrsm_LTUN
#define CTRSM_LTLU ctrsm_LTLU
#define CTRSM_LTLN ctrsm_LTLN
#define CTRSM_LRUU ctrsm_LRUU
#define CTRSM_LRUN ctrsm_LRUN
#define CTRSM_LRLU ctrsm_LRLU
#define CTRSM_LRLN ctrsm_LRLN
#define CTRSM_LCUU ctrsm_LCUU
#define CTRSM_LCUN ctrsm_LCUN
#define CTRSM_LCLU ctrsm_LCLU
#define CTRSM_LCLN ctrsm_LCLN
#define CTRSM_RNUU ctrsm_RNUU
#define CTRSM_RNUN ctrsm_RNUN
#define CTRSM_RNLU ctrsm_RNLU
#define CTRSM_RNLN ctrsm_RNLN
#define CTRSM_RTUU ctrsm_RTUU
#define CTRSM_RTUN ctrsm_RTUN
#define CTRSM_RTLU ctrsm_RTLU
#define CTRSM_RTLN ctrsm_RTLN
#define CTRSM_RRUU ctrsm_RRUU
#define CTRSM_RRUN ctrsm_RRUN
#define CTRSM_RRLU ctrsm_RRLU
#define CTRSM_RRLN ctrsm_RRLN
#define CTRSM_RCUU ctrsm_RCUU
#define CTRSM_RCUN ctrsm_RCUN
#define CTRSM_RCLU ctrsm_RCLU
#define CTRSM_RCLN ctrsm_RCLN
#define CGEMM_THREAD_NN cgemm_thread_nn
#define CGEMM_THREAD_CN cgemm_thread_cn
#define CGEMM_THREAD_TN cgemm_thread_tn
#define CGEMM_THREAD_NC cgemm_thread_nc
#define CGEMM_THREAD_NT cgemm_thread_nt
#define CGEMM_THREAD_CC cgemm_thread_cc
#define CGEMM_THREAD_CT cgemm_thread_ct
#define CGEMM_THREAD_TC cgemm_thread_tc
#define CGEMM_THREAD_TT cgemm_thread_tt
#define CGEMM_THREAD_NR cgemm_thread_nr
#define CGEMM_THREAD_TR cgemm_thread_tr
#define CGEMM_THREAD_CR cgemm_thread_cr
#define CGEMM_THREAD_RN cgemm_thread_rn
#define CGEMM_THREAD_RT cgemm_thread_rt
#define CGEMM_THREAD_RC cgemm_thread_rc
#define CGEMM_THREAD_RR cgemm_thread_rr
#define CSYMM_THREAD_LU csymm_thread_LU
#define CSYMM_THREAD_LL csymm_thread_LL
#define CSYMM_THREAD_RU csymm_thread_RU
#define CSYMM_THREAD_RL csymm_thread_RL
#define CHEMM_THREAD_LU chemm_thread_LU
#define CHEMM_THREAD_LL chemm_thread_LL
#define CHEMM_THREAD_RU chemm_thread_RU
#define CHEMM_THREAD_RL chemm_thread_RL
#define CSYRK_THREAD_UN csyrk_thread_UN
#define CSYRK_THREAD_UT csyrk_thread_UT
#define CSYRK_THREAD_LN csyrk_thread_LN
#define CSYRK_THREAD_LT csyrk_thread_LT
#define CSYRK_THREAD_UR csyrk_thread_UN
#define CSYRK_THREAD_UC csyrk_thread_UT
#define CSYRK_THREAD_LR csyrk_thread_LN
#define CSYRK_THREAD_LC csyrk_thread_LT
#define CHERK_THREAD_UN cherk_thread_UN
#define CHERK_THREAD_UT cherk_thread_UT
#define CHERK_THREAD_LN cherk_thread_LN
#define CHERK_THREAD_LT cherk_thread_LT
#define CHERK_THREAD_UR cherk_thread_UR
#define CHERK_THREAD_UC cherk_thread_UC
#define CHERK_THREAD_LR cherk_thread_LR
#define CHERK_THREAD_LC cherk_thread_LC
#define CGEMM3M_NN cgemm3m_nn
#define CGEMM3M_CN cgemm3m_cn
#define CGEMM3M_TN cgemm3m_tn
#define CGEMM3M_NC cgemm3m_nc
#define CGEMM3M_NT cgemm3m_nt
#define CGEMM3M_CC cgemm3m_cc
#define CGEMM3M_CT cgemm3m_ct
#define CGEMM3M_TC cgemm3m_tc
#define CGEMM3M_TT cgemm3m_tt
#define CGEMM3M_NR cgemm3m_nr
#define CGEMM3M_TR cgemm3m_tr
#define CGEMM3M_CR cgemm3m_cr
#define CGEMM3M_RN cgemm3m_rn
#define CGEMM3M_RT cgemm3m_rt
#define CGEMM3M_RC cgemm3m_rc
#define CGEMM3M_RR cgemm3m_rr
#define CGEMM3M_THREAD_NN cgemm3m_thread_nn
#define CGEMM3M_THREAD_CN cgemm3m_thread_cn
#define CGEMM3M_THREAD_TN cgemm3m_thread_tn
#define CGEMM3M_THREAD_NC cgemm3m_thread_nc
#define CGEMM3M_THREAD_NT cgemm3m_thread_nt
#define CGEMM3M_THREAD_CC cgemm3m_thread_cc
#define CGEMM3M_THREAD_CT cgemm3m_thread_ct
#define CGEMM3M_THREAD_TC cgemm3m_thread_tc
#define CGEMM3M_THREAD_TT cgemm3m_thread_tt
#define CGEMM3M_THREAD_NR cgemm3m_thread_nr
#define CGEMM3M_THREAD_TR cgemm3m_thread_tr
#define CGEMM3M_THREAD_CR cgemm3m_thread_cr
#define CGEMM3M_THREAD_RN cgemm3m_thread_rn
#define CGEMM3M_THREAD_RT cgemm3m_thread_rt
#define CGEMM3M_THREAD_RC cgemm3m_thread_rc
#define CGEMM3M_THREAD_RR cgemm3m_thread_rr
#define CSYMM3M_LU csymm3m_LU
#define CSYMM3M_LL csymm3m_LL
#define CSYMM3M_RU csymm3m_RU
#define CSYMM3M_RL csymm3m_RL
#define CSYMM3M_THREAD_LU csymm3m_thread_LU
#define CSYMM3M_THREAD_LL csymm3m_thread_LL
#define CSYMM3M_THREAD_RU csymm3m_thread_RU
#define CSYMM3M_THREAD_RL csymm3m_thread_RL
#define CHEMM3M_LU chemm3m_LU
#define CHEMM3M_LL chemm3m_LL
#define CHEMM3M_RU chemm3m_RU
#define CHEMM3M_RL chemm3m_RL
#define CHEMM3M_THREAD_LU chemm3m_thread_LU
#define CHEMM3M_THREAD_LL chemm3m_thread_LL
#define CHEMM3M_THREAD_RU chemm3m_thread_RU
#define CHEMM3M_THREAD_RL chemm3m_thread_RL
#endif

432
src/NativeWrappers/GotoBlas2/include/common_d.h

@ -0,0 +1,432 @@
#ifndef COMMON_D_H
#define COMMON_D_H
#ifndef DYNAMIC_ARCH
#define DAMAX_K damax_k
#define DAMIN_K damin_k
#define DMAX_K dmax_k
#define DMIN_K dmin_k
#define IDAMAX_K idamax_k
#define IDAMIN_K idamin_k
#define IDMAX_K idmax_k
#define IDMIN_K idmin_k
#define DASUM_K dasum_k
#define DAXPYU_K daxpy_k
#define DAXPYC_K daxpy_k
#define DCOPY_K dcopy_k
#define DDOTU_K ddot_k
#define DDOTC_K ddot_k
#define DNRM2_K dnrm2_k
#define DSCAL_K dscal_k
#define DSWAP_K dswap_k
#define DROT_K drot_k
#define DGEMV_N dgemv_n
#define DGEMV_T dgemv_t
#define DGEMV_R dgemv_n
#define DGEMV_C dgemv_t
#define DGEMV_O dgemv_n
#define DGEMV_U dgemv_t
#define DGEMV_S dgemv_n
#define DGEMV_D dgemv_t
#define DGERU_K dger_k
#define DGERC_K dger_k
#define DGERV_K dger_k
#define DGERD_K dger_k
#define DSYMV_U dsymv_U
#define DSYMV_L dsymv_L
#define DSYMV_THREAD_U dsymv_thread_U
#define DSYMV_THREAD_L dsymv_thread_L
#define DGEMM_ONCOPY dgemm_oncopy
#define DGEMM_OTCOPY dgemm_otcopy
#if DGEMM_DEFAULT_UNROLL_M == DGEMM_DEFAULT_UNROLL_N
#define DGEMM_INCOPY dgemm_oncopy
#define DGEMM_ITCOPY dgemm_otcopy
#else
#define DGEMM_INCOPY dgemm_incopy
#define DGEMM_ITCOPY dgemm_itcopy
#endif
#define DTRMM_OUNUCOPY dtrmm_ounucopy
#define DTRMM_OUNNCOPY dtrmm_ounncopy
#define DTRMM_OUTUCOPY dtrmm_outucopy
#define DTRMM_OUTNCOPY dtrmm_outncopy
#define DTRMM_OLNUCOPY dtrmm_olnucopy
#define DTRMM_OLNNCOPY dtrmm_olnncopy
#define DTRMM_OLTUCOPY dtrmm_oltucopy
#define DTRMM_OLTNCOPY dtrmm_oltncopy
#define DTRSM_OUNUCOPY dtrsm_ounucopy
#define DTRSM_OUNNCOPY dtrsm_ounncopy
#define DTRSM_OUTUCOPY dtrsm_outucopy
#define DTRSM_OUTNCOPY dtrsm_outncopy
#define DTRSM_OLNUCOPY dtrsm_olnucopy
#define DTRSM_OLNNCOPY dtrsm_olnncopy
#define DTRSM_OLTUCOPY dtrsm_oltucopy
#define DTRSM_OLTNCOPY dtrsm_oltncopy
#if DGEMM_DEFAULT_UNROLL_M == DGEMM_DEFAULT_UNROLL_N
#define DTRMM_IUNUCOPY dtrmm_ounucopy
#define DTRMM_IUNNCOPY dtrmm_ounncopy
#define DTRMM_IUTUCOPY dtrmm_outucopy
#define DTRMM_IUTNCOPY dtrmm_outncopy
#define DTRMM_ILNUCOPY dtrmm_olnucopy
#define DTRMM_ILNNCOPY dtrmm_olnncopy
#define DTRMM_ILTUCOPY dtrmm_oltucopy
#define DTRMM_ILTNCOPY dtrmm_oltncopy
#define DTRSM_IUNUCOPY dtrsm_ounucopy
#define DTRSM_IUNNCOPY dtrsm_ounncopy
#define DTRSM_IUTUCOPY dtrsm_outucopy
#define DTRSM_IUTNCOPY dtrsm_outncopy
#define DTRSM_ILNUCOPY dtrsm_olnucopy
#define DTRSM_ILNNCOPY dtrsm_olnncopy
#define DTRSM_ILTUCOPY dtrsm_oltucopy
#define DTRSM_ILTNCOPY dtrsm_oltncopy
#else
#define DTRMM_IUNUCOPY dtrmm_iunucopy
#define DTRMM_IUNNCOPY dtrmm_iunncopy
#define DTRMM_IUTUCOPY dtrmm_iutucopy
#define DTRMM_IUTNCOPY dtrmm_iutncopy
#define DTRMM_ILNUCOPY dtrmm_ilnucopy
#define DTRMM_ILNNCOPY dtrmm_ilnncopy
#define DTRMM_ILTUCOPY dtrmm_iltucopy
#define DTRMM_ILTNCOPY dtrmm_iltncopy
#define DTRSM_IUNUCOPY dtrsm_iunucopy
#define DTRSM_IUNNCOPY dtrsm_iunncopy
#define DTRSM_IUTUCOPY dtrsm_iutucopy
#define DTRSM_IUTNCOPY dtrsm_iutncopy
#define DTRSM_ILNUCOPY dtrsm_ilnucopy
#define DTRSM_ILNNCOPY dtrsm_ilnncopy
#define DTRSM_ILTUCOPY dtrsm_iltucopy
#define DTRSM_ILTNCOPY dtrsm_iltncopy
#endif
#define DGEMM_BETA dgemm_beta
#define DGEMM_KERNEL dgemm_kernel
#define DTRMM_KERNEL_LN dtrmm_kernel_LN
#define DTRMM_KERNEL_LT dtrmm_kernel_LT
#define DTRMM_KERNEL_LR dtrmm_kernel_LN
#define DTRMM_KERNEL_LC dtrmm_kernel_LT
#define DTRMM_KERNEL_RN dtrmm_kernel_RN
#define DTRMM_KERNEL_RT dtrmm_kernel_RT
#define DTRMM_KERNEL_RR dtrmm_kernel_RN
#define DTRMM_KERNEL_RC dtrmm_kernel_RT
#define DTRSM_KERNEL_LN dtrsm_kernel_LN
#define DTRSM_KERNEL_LT dtrsm_kernel_LT
#define DTRSM_KERNEL_LR dtrsm_kernel_LN
#define DTRSM_KERNEL_LC dtrsm_kernel_LT
#define DTRSM_KERNEL_RN dtrsm_kernel_RN
#define DTRSM_KERNEL_RT dtrsm_kernel_RT
#define DTRSM_KERNEL_RR dtrsm_kernel_RN
#define DTRSM_KERNEL_RC dtrsm_kernel_RT
#define DSYMM_OUTCOPY dsymm_outcopy
#define DSYMM_OLTCOPY dsymm_oltcopy
#if DGEMM_DEFAULT_UNROLL_M == DGEMM_DEFAULT_UNROLL_N
#define DSYMM_IUTCOPY dsymm_outcopy
#define DSYMM_ILTCOPY dsymm_oltcopy
#else
#define DSYMM_IUTCOPY dsymm_iutcopy
#define DSYMM_ILTCOPY dsymm_iltcopy
#endif
#define DNEG_TCOPY dneg_tcopy
#define DLASWP_NCOPY dlaswp_ncopy
#else
#define DAMAX_K gotoblas -> damax_k
#define DAMIN_K gotoblas -> damin_k
#define DMAX_K gotoblas -> dmax_k
#define DMIN_K gotoblas -> dmin_k
#define IDAMAX_K gotoblas -> idamax_k
#define IDAMIN_K gotoblas -> idamin_k
#define IDMAX_K gotoblas -> idmax_k
#define IDMIN_K gotoblas -> idmin_k
#define DASUM_K gotoblas -> dasum_k
#define DAXPYU_K gotoblas -> daxpy_k
#define DAXPYC_K gotoblas -> daxpy_k
#define DCOPY_K gotoblas -> dcopy_k
#define DDOTU_K gotoblas -> ddot_k
#define DDOTC_K gotoblas -> ddot_k
#define DNRM2_K gotoblas -> dnrm2_k
#define DSCAL_K gotoblas -> dscal_k
#define DSWAP_K gotoblas -> dswap_k
#define DROT_K gotoblas -> drot_k
#define DGEMV_N gotoblas -> dgemv_n
#define DGEMV_T gotoblas -> dgemv_t
#define DGEMV_R gotoblas -> dgemv_n
#define DGEMV_C gotoblas -> dgemv_t
#define DGEMV_O gotoblas -> dgemv_n
#define DGEMV_U gotoblas -> dgemv_t
#define DGEMV_S gotoblas -> dgemv_n
#define DGEMV_D gotoblas -> dgemv_t
#define DGERU_K gotoblas -> dger_k
#define DGERC_K gotoblas -> dger_k
#define DGERV_K gotoblas -> dger_k
#define DGERD_K gotoblas -> dger_k
#define DSYMV_U gotoblas -> dsymv_U
#define DSYMV_L gotoblas -> dsymv_L
#define DSYMV_THREAD_U dsymv_thread_U
#define DSYMV_THREAD_L dsymv_thread_L
#define DGEMM_ONCOPY gotoblas -> dgemm_oncopy
#define DGEMM_OTCOPY gotoblas -> dgemm_otcopy
#define DGEMM_INCOPY gotoblas -> dgemm_incopy
#define DGEMM_ITCOPY gotoblas -> dgemm_itcopy
#define DTRMM_OUNUCOPY gotoblas -> dtrmm_ounucopy
#define DTRMM_OUTUCOPY gotoblas -> dtrmm_outucopy
#define DTRMM_OLNUCOPY gotoblas -> dtrmm_olnucopy
#define DTRMM_OLTUCOPY gotoblas -> dtrmm_oltucopy
#define DTRSM_OUNUCOPY gotoblas -> dtrsm_ounucopy
#define DTRSM_OUTUCOPY gotoblas -> dtrsm_outucopy
#define DTRSM_OLNUCOPY gotoblas -> dtrsm_olnucopy
#define DTRSM_OLTUCOPY gotoblas -> dtrsm_oltucopy
#define DTRMM_IUNUCOPY gotoblas -> dtrmm_iunucopy
#define DTRMM_IUTUCOPY gotoblas -> dtrmm_iutucopy
#define DTRMM_ILNUCOPY gotoblas -> dtrmm_ilnucopy
#define DTRMM_ILTUCOPY gotoblas -> dtrmm_iltucopy
#define DTRSM_IUNUCOPY gotoblas -> dtrsm_iunucopy
#define DTRSM_IUTUCOPY gotoblas -> dtrsm_iutucopy
#define DTRSM_ILNUCOPY gotoblas -> dtrsm_ilnucopy
#define DTRSM_ILTUCOPY gotoblas -> dtrsm_iltucopy
#define DTRMM_OUNNCOPY gotoblas -> dtrmm_ounncopy
#define DTRMM_OUTNCOPY gotoblas -> dtrmm_outncopy
#define DTRMM_OLNNCOPY gotoblas -> dtrmm_olnncopy
#define DTRMM_OLTNCOPY gotoblas -> dtrmm_oltncopy
#define DTRSM_OUNNCOPY gotoblas -> dtrsm_ounncopy
#define DTRSM_OUTNCOPY gotoblas -> dtrsm_outncopy
#define DTRSM_OLNNCOPY gotoblas -> dtrsm_olnncopy
#define DTRSM_OLTNCOPY gotoblas -> dtrsm_oltncopy
#define DTRMM_IUNNCOPY gotoblas -> dtrmm_iunncopy
#define DTRMM_IUTNCOPY gotoblas -> dtrmm_iutncopy
#define DTRMM_ILNNCOPY gotoblas -> dtrmm_ilnncopy
#define DTRMM_ILTNCOPY gotoblas -> dtrmm_iltncopy
#define DTRSM_IUNNCOPY gotoblas -> dtrsm_iunncopy
#define DTRSM_IUTNCOPY gotoblas -> dtrsm_iutncopy
#define DTRSM_ILNNCOPY gotoblas -> dtrsm_ilnncopy
#define DTRSM_ILTNCOPY gotoblas -> dtrsm_iltncopy
#define DGEMM_BETA gotoblas -> dgemm_beta
#define DGEMM_KERNEL gotoblas -> dgemm_kernel
#define DTRMM_KERNEL_LN gotoblas -> dtrmm_kernel_LN
#define DTRMM_KERNEL_LT gotoblas -> dtrmm_kernel_LT
#define DTRMM_KERNEL_LR gotoblas -> dtrmm_kernel_LN
#define DTRMM_KERNEL_LC gotoblas -> dtrmm_kernel_LT
#define DTRMM_KERNEL_RN gotoblas -> dtrmm_kernel_RN
#define DTRMM_KERNEL_RT gotoblas -> dtrmm_kernel_RT
#define DTRMM_KERNEL_RR gotoblas -> dtrmm_kernel_RN
#define DTRMM_KERNEL_RC gotoblas -> dtrmm_kernel_RT
#define DTRSM_KERNEL_LN gotoblas -> dtrsm_kernel_LN
#define DTRSM_KERNEL_LT gotoblas -> dtrsm_kernel_LT
#define DTRSM_KERNEL_LR gotoblas -> dtrsm_kernel_LN
#define DTRSM_KERNEL_LC gotoblas -> dtrsm_kernel_LT
#define DTRSM_KERNEL_RN gotoblas -> dtrsm_kernel_RN
#define DTRSM_KERNEL_RT gotoblas -> dtrsm_kernel_RT
#define DTRSM_KERNEL_RR gotoblas -> dtrsm_kernel_RN
#define DTRSM_KERNEL_RC gotoblas -> dtrsm_kernel_RT
#define DSYMM_IUTCOPY gotoblas -> dsymm_iutcopy
#define DSYMM_ILTCOPY gotoblas -> dsymm_iltcopy
#define DSYMM_OUTCOPY gotoblas -> dsymm_outcopy
#define DSYMM_OLTCOPY gotoblas -> dsymm_oltcopy
#define DNEG_TCOPY gotoblas -> dneg_tcopy
#define DLASWP_NCOPY gotoblas -> dlaswp_ncopy
#endif
#define DGEMM_NN dgemm_nn
#define DGEMM_CN dgemm_tn
#define DGEMM_TN dgemm_tn
#define DGEMM_NC dgemm_nt
#define DGEMM_NT dgemm_nt
#define DGEMM_CC dgemm_tt
#define DGEMM_CT dgemm_tt
#define DGEMM_TC dgemm_tt
#define DGEMM_TT dgemm_tt
#define DGEMM_NR dgemm_nn
#define DGEMM_TR dgemm_tn
#define DGEMM_CR dgemm_tn
#define DGEMM_RN dgemm_nn
#define DGEMM_RT dgemm_nt
#define DGEMM_RC dgemm_nt
#define DGEMM_RR dgemm_nn
#define DSYMM_LU dsymm_LU
#define DSYMM_LL dsymm_LL
#define DSYMM_RU dsymm_RU
#define DSYMM_RL dsymm_RL
#define DHEMM_LU dhemm_LU
#define DHEMM_LL dhemm_LL
#define DHEMM_RU dhemm_RU
#define DHEMM_RL dhemm_RL
#define DSYRK_UN dsyrk_UN
#define DSYRK_UT dsyrk_UT
#define DSYRK_LN dsyrk_LN
#define DSYRK_LT dsyrk_LT
#define DSYRK_UR dsyrk_UN
#define DSYRK_UC dsyrk_UT
#define DSYRK_LR dsyrk_LN
#define DSYRK_LC dsyrk_LT
#define DSYRK_KERNEL_U dsyrk_kernel_U
#define DSYRK_KERNEL_L dsyrk_kernel_L
#define DHERK_UN dsyrk_UN
#define DHERK_LN dsyrk_LN
#define DHERK_UC dsyrk_UT
#define DHERK_LC dsyrk_LT
#define DHER2K_UN dsyr2k_UN
#define DHER2K_LN dsyr2k_LN
#define DHER2K_UC dsyr2k_UT
#define DHER2K_LC dsyr2k_LT
#define DSYR2K_UN dsyr2k_UN
#define DSYR2K_UT dsyr2k_UT
#define DSYR2K_LN dsyr2k_LN
#define DSYR2K_LT dsyr2k_LT
#define DSYR2K_UR dsyr2k_UN
#define DSYR2K_UC dsyr2k_UT
#define DSYR2K_LR dsyr2k_LN
#define DSYR2K_LC dsyr2k_LT
#define DSYR2K_KERNEL_U dsyr2k_kernel_U
#define DSYR2K_KERNEL_L dsyr2k_kernel_L
#define DTRMM_LNUU dtrmm_LNUU
#define DTRMM_LNUN dtrmm_LNUN
#define DTRMM_LNLU dtrmm_LNLU
#define DTRMM_LNLN dtrmm_LNLN
#define DTRMM_LTUU dtrmm_LTUU
#define DTRMM_LTUN dtrmm_LTUN
#define DTRMM_LTLU dtrmm_LTLU
#define DTRMM_LTLN dtrmm_LTLN
#define DTRMM_LRUU dtrmm_LNUU
#define DTRMM_LRUN dtrmm_LNUN
#define DTRMM_LRLU dtrmm_LNLU
#define DTRMM_LRLN dtrmm_LNLN
#define DTRMM_LCUU dtrmm_LTUU
#define DTRMM_LCUN dtrmm_LTUN
#define DTRMM_LCLU dtrmm_LTLU
#define DTRMM_LCLN dtrmm_LTLN
#define DTRMM_RNUU dtrmm_RNUU
#define DTRMM_RNUN dtrmm_RNUN
#define DTRMM_RNLU dtrmm_RNLU
#define DTRMM_RNLN dtrmm_RNLN
#define DTRMM_RTUU dtrmm_RTUU
#define DTRMM_RTUN dtrmm_RTUN
#define DTRMM_RTLU dtrmm_RTLU
#define DTRMM_RTLN dtrmm_RTLN
#define DTRMM_RRUU dtrmm_RNUU
#define DTRMM_RRUN dtrmm_RNUN
#define DTRMM_RRLU dtrmm_RNLU
#define DTRMM_RRLN dtrmm_RNLN
#define DTRMM_RCUU dtrmm_RTUU
#define DTRMM_RCUN dtrmm_RTUN
#define DTRMM_RCLU dtrmm_RTLU
#define DTRMM_RCLN dtrmm_RTLN
#define DTRSM_LNUU dtrsm_LNUU
#define DTRSM_LNUN dtrsm_LNUN
#define DTRSM_LNLU dtrsm_LNLU
#define DTRSM_LNLN dtrsm_LNLN
#define DTRSM_LTUU dtrsm_LTUU
#define DTRSM_LTUN dtrsm_LTUN
#define DTRSM_LTLU dtrsm_LTLU
#define DTRSM_LTLN dtrsm_LTLN
#define DTRSM_LRUU dtrsm_LNUU
#define DTRSM_LRUN dtrsm_LNUN
#define DTRSM_LRLU dtrsm_LNLU
#define DTRSM_LRLN dtrsm_LNLN
#define DTRSM_LCUU dtrsm_LTUU
#define DTRSM_LCUN dtrsm_LTUN
#define DTRSM_LCLU dtrsm_LTLU
#define DTRSM_LCLN dtrsm_LTLN
#define DTRSM_RNUU dtrsm_RNUU
#define DTRSM_RNUN dtrsm_RNUN
#define DTRSM_RNLU dtrsm_RNLU
#define DTRSM_RNLN dtrsm_RNLN
#define DTRSM_RTUU dtrsm_RTUU
#define DTRSM_RTUN dtrsm_RTUN
#define DTRSM_RTLU dtrsm_RTLU
#define DTRSM_RTLN dtrsm_RTLN
#define DTRSM_RRUU dtrsm_RNUU
#define DTRSM_RRUN dtrsm_RNUN
#define DTRSM_RRLU dtrsm_RNLU
#define DTRSM_RRLN dtrsm_RNLN
#define DTRSM_RCUU dtrsm_RTUU
#define DTRSM_RCUN dtrsm_RTUN
#define DTRSM_RCLU dtrsm_RTLU
#define DTRSM_RCLN dtrsm_RTLN
#define DGEMM_THREAD_NN dgemm_thread_nn
#define DGEMM_THREAD_CN dgemm_thread_tn
#define DGEMM_THREAD_TN dgemm_thread_tn
#define DGEMM_THREAD_NC dgemm_thread_nt
#define DGEMM_THREAD_NT dgemm_thread_nt
#define DGEMM_THREAD_CC dgemm_thread_tt
#define DGEMM_THREAD_CT dgemm_thread_tt
#define DGEMM_THREAD_TC dgemm_thread_tt
#define DGEMM_THREAD_TT dgemm_thread_tt
#define DGEMM_THREAD_NR dgemm_thread_nn
#define DGEMM_THREAD_TR dgemm_thread_tn
#define DGEMM_THREAD_CR dgemm_thread_tn
#define DGEMM_THREAD_RN dgemm_thread_nn
#define DGEMM_THREAD_RT dgemm_thread_nt
#define DGEMM_THREAD_RC dgemm_thread_nt
#define DGEMM_THREAD_RR dgemm_thread_nn
#define DSYMM_THREAD_LU dsymm_thread_LU
#define DSYMM_THREAD_LL dsymm_thread_LL
#define DSYMM_THREAD_RU dsymm_thread_RU
#define DSYMM_THREAD_RL dsymm_thread_RL
#define DHEMM_THREAD_LU dhemm_thread_LU
#define DHEMM_THREAD_LL dhemm_thread_LL
#define DHEMM_THREAD_RU dhemm_thread_RU
#define DHEMM_THREAD_RL dhemm_thread_RL
#define DSYRK_THREAD_UN dsyrk_thread_UN
#define DSYRK_THREAD_UT dsyrk_thread_UT
#define DSYRK_THREAD_LN dsyrk_thread_LN
#define DSYRK_THREAD_LT dsyrk_thread_LT
#define DSYRK_THREAD_UR dsyrk_thread_UN
#define DSYRK_THREAD_UC dsyrk_thread_UT
#define DSYRK_THREAD_LR dsyrk_thread_LN
#define DSYRK_THREAD_LC dsyrk_thread_LT
#define DHERK_THREAD_UN dsyrk_thread_UN
#define DHERK_THREAD_UT dsyrk_thread_UT
#define DHERK_THREAD_LN dsyrk_thread_LN
#define DHERK_THREAD_LT dsyrk_thread_LT
#define DHERK_THREAD_UR dsyrk_thread_UN
#define DHERK_THREAD_UC dsyrk_thread_UT
#define DHERK_THREAD_LR dsyrk_thread_LN
#define DHERK_THREAD_LC dsyrk_thread_LT
#endif

408
src/NativeWrappers/GotoBlas2/include/common_ia64.h

@ -0,0 +1,408 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_IA64
#define COMMON_IA64
#ifndef ASSEMBLER
#ifndef MAP_WRITECOMBINED
#define MAP_WRITECOMBINED 0x10000
#endif
#define MB
#define WMB
#ifdef __ECC
#include <ia64intrin.h>
#endif
#define RPCC64BIT
#ifndef __ECC
static __inline void blas_lock(volatile unsigned long *address){
unsigned long ret;
do {
while (*address) {YIELDING;};
__asm__ __volatile__ ("mov ar.ccv=r0\n;;\n"
"cmpxchg4.acq %0=[%2],%1,ar.ccv\n"
: "=r"(ret) : "r"(1), "r"(address)
: "ar.ccv", "memory");
} while (ret);
}
static __inline unsigned long rpcc(void) {
unsigned long clocks;
__asm__ __volatile__ ("mov %0=ar.itc" : "=r"(clocks));
return clocks;
}
static __inline unsigned long stmxcsr(void){
unsigned long fp;
__asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fp));
return fp;
}
static __inline void ldmxcsr(unsigned long fp) {
__asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fp));
}
#define GET_IMAGE(res) asm __volatile__("mov %0 = f9" : "=f"(res) : : "memory")
#else
static __inline void blas_lock(volatile unsigned long *address){
while (*address || _InterlockedCompareExchange((volatile int *) address,1,0))
;
}
static __inline unsigned int rpcc(void) {
return __getReg(_IA64_REG_AR_ITC);
}
static __inline unsigned int stmxcsr(void) {
return __getReg(_IA64_REG_AR_FPSR);
}
static __inline void ldmxcsr(unsigned long fp) {
return __setReg(_IA64_REG_AR_FPSR, fp);
}
#ifdef DOUBLE
#define GET_IMAGE(res) __stfd(&res, 9)
#else
#define GET_IMAGE(res) __stfs(&res, 9)
#endif
#endif
#define GET_IMAGE_CANCEL
#ifdef ENABLE_SSE_EXCEPTION
#define IDEBUG_START \
{ \
unsigned long fp_sse_mode, new_fp_mode; \
fp_sse_mode = stmxcsr();\
new_fp_mode = (fp_sse_mode & ~(FE_UNDERFLOW | FE_OVERFLOW | FE_UNNORMAL | FE_INVALID));\
ldmxcsr(new_fp_mode);
#define IDEBUG_END \
ldmxcsr(fp_sse_mode); \
}
#endif
#ifdef SMP
#ifdef USE64BITINT
/* 64bit version */
extern unsigned long blas_quick_divide_table[];
#ifndef __ECC
static __inline long blas_quickdivide(unsigned long int x, unsigned long int y){
unsigned long ret;
if (y <= 1) return x;
__asm__ __volatile__("setf.sig f6 = %1\n\t"
"ldf8 f7 = [%2];;\n\t"
"xmpy.hu f6= f6, f7;;\n\t"
"getf.sig %0 = f6;;\n"
: "=r"(ret)
: "r"(x), "r"(&blas_quick_divide_table[y]) : "f6", "f7"
);
return ret;
}
#else
/* Using Intel Compiler */
static __inline long blas_quickdivide(unsigned long int x, unsigned long int y){
if (y <= 1) return x;
return _m64_xmahu(x, blas_quick_divide_table[y], 0);
}
#endif
#else
/* 32bit version */
extern unsigned int blas_quick_divide_table[];
static __inline int blas_quickdivide(unsigned int x, unsigned int y){
if (y <= 1) return x;
return (int)((x * (unsigned long)blas_quick_divide_table[y]) >> 32);
}
#endif
#endif
#endif
#if 0
#ifdef DOUBLE
#define GEMM_NCOPY dgemm_ncopy
#define GEMM_TCOPY dgemm_tcopy
#define ZGEMM_NCOPY zgemm_ncopy
#define ZGEMM_TCOPY zgemm_tcopy
#define GEMM_KERNEL dgemm_kernel
#if defined(NN) || defined(NT) || defined(TN) || defined(TT)
#define ZGEMM_KERNEL zgemm_kernel_n
#endif
#if defined(CN) || defined(CT) || defined(RN) || defined(RT)
#define ZGEMM_KERNEL zgemm_kernel_l
#endif
#if defined(NC) || defined(TC) || defined(NR) || defined(TR)
#define ZGEMM_KERNEL zgemm_kernel_r
#endif
#if defined(CC) || defined(CR) || defined(RC) || defined(RR)
#define ZGEMM_KERNEL zgemm_kernel_b
#endif
#else
#define GEMM_NCOPY sgemm_ncopy
#define GEMM_TCOPY sgemm_tcopy
#define ZGEMM_NCOPY cgemm_ncopy
#define ZGEMM_TCOPY cgemm_tcopy
#define GEMM_KERNEL sgemm_kernel
#if defined(NN) || defined(NT) || defined(TN) || defined(TT)
#define ZGEMM_KERNEL cgemm_kernel_n
#endif
#if defined(CN) || defined(CT) || defined(RN) || defined(RT)
#define ZGEMM_KERNEL cgemm_kernel_l
#endif
#if defined(NC) || defined(TC) || defined(NR) || defined(TR)
#define ZGEMM_KERNEL cgemm_kernel_r
#endif
#if defined(CC) || defined(CR) || defined(RC) || defined(RR)
#define ZGEMM_KERNEL cgemm_kernel_b
#endif
#endif
#endif
#ifdef USE64BITINT
#define LDINT ld8
#define INTSIZE 8
#define CMP4GE cmp.ge
#define CMP4NE cmp.ge
#define CMP4EQ cmp.eq
#else
#define LDINT ld4
#define INTSIZE 4
#define CMP4GE cmp4.ge
#define CMP4NE cmp4.ne
#define CMP4EQ cmp4.eq
#endif
#define HALT mov r0 = 0
#ifdef XDOUBLE
#define LD8 ld8
#define ST8 st8
#define LDFD ldfe
#define LDFPD ldfpe
#define LDFD_T1 ldfe.t1
#define LDFD_NT1 ldfe.nt1
#define LDFD_NT2 ldfe.nt2
#define LDFD_NTA ldfe.nta
#define LDFPD_NT1 ldfpe.nt1
#define LDFPD_NT2 ldfpe.nt2
#define LDFPD_NTA ldfpe.nta
#define STFD stfe
#define STFD_NTA stfe.nta
#define FADD fadd
#define FSUB fsub
#define FMPY fmpy
#define FMA fma
#define FMS fms
#define FNMA fnma
#define FPMA fpma
#define SETF setf.d
#elif defined(DOUBLE)
#define LD8 ld8
#define ST8 st8
#define LDF8 ldf8
#define LDF8_NT1 ldf8.nt1
#define LDF8_NTA ldf8.nta
#define STF8 stf8
#define STF8_NTA stf8.nta
#define LDFD ldfd
#define LDFPD ldfpd
#define LDFD_T1 ldfd.t1
#define LDFD_NT1 ldfd.nt1
#define LDFD_NT2 ldfd.nt2
#define LDFD_NTA ldfd.nta
#define LDFPD_NT1 ldfpd.nt1
#define LDFPD_NT2 ldfpd.nt2
#define LDFPD_NTA ldfpd.nta
#define STFD stfd
#define STFD_NTA stfd.nta
#define FADD fadd.d
#define FSUB fsub.d
#define FMPY fmpy.d
#define FMA fma.d
#define FMS fms.d
#define FNMA fnma.d
#define FPMA fpma.d
#define SETF setf.d
#else
#define LD8 ld4
#define ST8 st4
#define LDF8 ldfs
#define LDF8_NT1 ldfs.nt1
#define LDF8_NTA ldfs.nta
#define STF8 stfs
#define STF8_NTA stfs.nta
#define LDFD ldfs
#define LDFPD ldfps
#define LDFD_T1 ldfs.t1
#define LDFD_NT1 ldfs.nt1
#define LDFD_NT2 ldfs.nt2
#define LDFD_NTA ldfs.nta
#define LDFPD_NT1 ldfps.nt1
#define LDFPD_NT2 ldfps.nt2
#define LDFPD_NTA ldfps.nta
#define STFD stfs
#define STFD_NTA stfs.nta
#if 0
#define FADD fadd.s
#define FSUB fsub.s
#define FMPY fmpy.s
#define FMA fma.s
#define FMS fms.s
#define FNMA fnma.s
#define FPMA fpma.s
#else
#define FADD fadd
#define FSUB fsub
#define FMPY fmpy
#define FMA fma
#define FMS fms
#define FNMA fnma
#define FPMA fpma
#endif
#define SETF setf.s
#endif
#ifndef F_INTERFACE
#define REALNAME ASMNAME
#else
#define REALNAME ASMFNAME
#endif
#ifdef F_INTERFACE_G77
#define RETURN_BY_STACK
#endif
#ifdef F_INTERFACE_G95
#define RETURN_BY_STACK
#endif
#ifdef F_INTERFACE_GFORT
#define RETURN_BY_REGS
#endif
#ifdef F_INTERFACE_INTEL
#define RETURN_BY_STACK
#endif
#define PROLOGUE \
.explicit; \
.text; \
.align 128; \
.global REALNAME; \
.proc REALNAME; \
REALNAME:
#ifdef PROFILE
#define PROFCODE \
.data; \
.align 8; \
.LP0:; \
data8 0; \
.text; \
alloc out0 = ar.pfs, 8, 0, 4, 0; \
mov out1 = r1; \
mov out2 = b0; \
addl out3 = @ltoff(.LP0), r1;;; \
br.call.sptk.many b0 = _mcount;;
#else
#define PROFCODE
#endif
#define EPILOGUE \
.endp REALNAME
#define START_ADDRESS 0x20000fc800000000UL
#undef SEEK_ADDRESS
#if 0
#ifdef CONFIG_IA64_PAGE_SIZE_4KB
#define SEEK_ADDRESS
#endif
#ifdef CONFIG_IA64_PAGE_SIZE_8KB
#define SEEK_ADDRESS
#endif
#endif
#define BUFFER_SIZE (128 << 20)
#ifndef PAGESIZE
#define PAGESIZE (16UL << 10)
#endif
#define HUGE_PAGESIZE ( 4 << 20)
#define BASE_ADDRESS (START_ADDRESS - (BLASULONG)BUFFER_SIZE * MAX_CPU_NUMBER)
#endif

736
src/NativeWrappers/GotoBlas2/include/common_interface.h

@ -0,0 +1,736 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef ASSEMBLER
int BLASFUNC(xerbla)(char *, blasint *info, blasint);
FLOATRET BLASFUNC(sdot) (blasint *, float *, blasint *, float *, blasint *);
FLOATRET BLASFUNC(sdsdot)(blasint *, float *, float *, blasint *, float *, blasint *);
double BLASFUNC(dsdot) (blasint *, float *, blasint *, float *, blasint *);
double BLASFUNC(ddot) (blasint *, double *, blasint *, double *, blasint *);
xdouble BLASFUNC(qdot) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
#ifdef RETURN_BY_STRUCT
typedef struct {
float r, i;
} myccomplex_t;
typedef struct {
double r, i;
} myzcomplex_t;
typedef struct {
xdouble r, i;
} myxcomplex_t;
myccomplex_t BLASFUNC(cdotu) (blasint *, float *, blasint *, float *, blasint *);
myccomplex_t BLASFUNC(cdotc) (blasint *, float *, blasint *, float *, blasint *);
myzcomplex_t BLASFUNC(zdotu) (blasint *, double *, blasint *, double *, blasint *);
myzcomplex_t BLASFUNC(zdotc) (blasint *, double *, blasint *, double *, blasint *);
myxcomplex_t BLASFUNC(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
myxcomplex_t BLASFUNC(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
#elif defined RETURN_BY_STACK
void BLASFUNC(cdotu) (float _Complex *, blasint *, float * , blasint *, float *, blasint *);
void BLASFUNC(cdotc) (float _Complex *, blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(zdotu) (double _Complex *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(zdotc) (double _Complex *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(xdotu) (xdouble _Complex *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(xdotc) (xdouble _Complex *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
#else
float _Complex BLASFUNC(cdotu) (blasint *, float *, blasint *, float *, blasint *);
float _Complex BLASFUNC(cdotc) (blasint *, float *, blasint *, float *, blasint *);
double _Complex BLASFUNC(zdotu) (blasint *, double *, blasint *, double *, blasint *);
double _Complex BLASFUNC(zdotc) (blasint *, double *, blasint *, double *, blasint *);
xdouble _Complex BLASFUNC(xdotu) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
xdouble _Complex BLASFUNC(xdotc) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
#endif
void BLASFUNC(saxpy) (blasint *, float *, float *, blasint *, float *, blasint *);
void BLASFUNC(daxpy) (blasint *, double *, double *, blasint *, double *, blasint *);
void BLASFUNC(qaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(caxpy) (blasint *, float *, float *, blasint *, float *, blasint *);
void BLASFUNC(zaxpy) (blasint *, double *, double *, blasint *, double *, blasint *);
void BLASFUNC(xaxpy) (blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(caxpyc)(blasint *, float *, float *, blasint *, float *, blasint *);
void BLASFUNC(zaxpyc)(blasint *, double *, double *, blasint *, double *, blasint *);
void BLASFUNC(xaxpyc)(blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(scopy) (blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(dcopy) (blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(qcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(ccopy) (blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(zcopy) (blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(xcopy) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(sswap) (blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(dswap) (blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(qswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(cswap) (blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(zswap) (blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(xswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(sasum) (blasint *, float *, blasint *);
FLOATRET BLASFUNC(scasum)(blasint *, float *, blasint *);
double BLASFUNC(dasum) (blasint *, double *, blasint *);
xdouble BLASFUNC(qasum) (blasint *, xdouble *, blasint *);
double BLASFUNC(dzasum)(blasint *, double *, blasint *);
xdouble BLASFUNC(qxasum)(blasint *, xdouble *, blasint *);
blasint BLASFUNC(isamax)(blasint *, float *, blasint *);
blasint BLASFUNC(idamax)(blasint *, double *, blasint *);
blasint BLASFUNC(iqamax)(blasint *, xdouble *, blasint *);
blasint BLASFUNC(icamax)(blasint *, float *, blasint *);
blasint BLASFUNC(izamax)(blasint *, double *, blasint *);
blasint BLASFUNC(ixamax)(blasint *, xdouble *, blasint *);
blasint BLASFUNC(ismax) (blasint *, float *, blasint *);
blasint BLASFUNC(idmax) (blasint *, double *, blasint *);
blasint BLASFUNC(iqmax) (blasint *, xdouble *, blasint *);
blasint BLASFUNC(icmax) (blasint *, float *, blasint *);
blasint BLASFUNC(izmax) (blasint *, double *, blasint *);
blasint BLASFUNC(ixmax) (blasint *, xdouble *, blasint *);
blasint BLASFUNC(isamin)(blasint *, float *, blasint *);
blasint BLASFUNC(idamin)(blasint *, double *, blasint *);
blasint BLASFUNC(iqamin)(blasint *, xdouble *, blasint *);
blasint BLASFUNC(icamin)(blasint *, float *, blasint *);
blasint BLASFUNC(izamin)(blasint *, double *, blasint *);
blasint BLASFUNC(ixamin)(blasint *, xdouble *, blasint *);
blasint BLASFUNC(ismin)(blasint *, float *, blasint *);
blasint BLASFUNC(idmin)(blasint *, double *, blasint *);
blasint BLASFUNC(iqmin)(blasint *, xdouble *, blasint *);
blasint BLASFUNC(icmin)(blasint *, float *, blasint *);
blasint BLASFUNC(izmin)(blasint *, double *, blasint *);
blasint BLASFUNC(ixmin)(blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(samax) (blasint *, float *, blasint *);
double BLASFUNC(damax) (blasint *, double *, blasint *);
xdouble BLASFUNC(qamax) (blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(scamax)(blasint *, float *, blasint *);
double BLASFUNC(dzamax)(blasint *, double *, blasint *);
xdouble BLASFUNC(qxamax)(blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(samin) (blasint *, float *, blasint *);
double BLASFUNC(damin) (blasint *, double *, blasint *);
xdouble BLASFUNC(qamin) (blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(scamin)(blasint *, float *, blasint *);
double BLASFUNC(dzamin)(blasint *, double *, blasint *);
xdouble BLASFUNC(qxamin)(blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(smax) (blasint *, float *, blasint *);
double BLASFUNC(dmax) (blasint *, double *, blasint *);
xdouble BLASFUNC(qmax) (blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(scmax) (blasint *, float *, blasint *);
double BLASFUNC(dzmax) (blasint *, double *, blasint *);
xdouble BLASFUNC(qxmax) (blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(smin) (blasint *, float *, blasint *);
double BLASFUNC(dmin) (blasint *, double *, blasint *);
xdouble BLASFUNC(qmin) (blasint *, xdouble *, blasint *);
FLOATRET BLASFUNC(scmin) (blasint *, float *, blasint *);
double BLASFUNC(dzmin) (blasint *, double *, blasint *);
xdouble BLASFUNC(qxmin) (blasint *, xdouble *, blasint *);
void BLASFUNC(sscal) (blasint *, float *, float *, blasint *);
void BLASFUNC(dscal) (blasint *, double *, double *, blasint *);
void BLASFUNC(qscal) (blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(cscal) (blasint *, float *, float *, blasint *);
void BLASFUNC(zscal) (blasint *, double *, double *, blasint *);
void BLASFUNC(xscal) (blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(csscal)(blasint *, float *, float *, blasint *);
void BLASFUNC(zdscal)(blasint *, double *, double *, blasint *);
void BLASFUNC(xqscal)(blasint *, xdouble *, xdouble *, blasint *);
FLOATRET BLASFUNC(snrm2) (blasint *, float *, blasint *);
FLOATRET BLASFUNC(scnrm2)(blasint *, float *, blasint *);
double BLASFUNC(dnrm2) (blasint *, double *, blasint *);
xdouble BLASFUNC(qnrm2) (blasint *, xdouble *, blasint *);
double BLASFUNC(dznrm2)(blasint *, double *, blasint *);
xdouble BLASFUNC(qxnrm2)(blasint *, xdouble *, blasint *);
void BLASFUNC(srot) (blasint *, float *, blasint *, float *, blasint *, float *, float *);
void BLASFUNC(drot) (blasint *, double *, blasint *, double *, blasint *, double *, double *);
void BLASFUNC(qrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *);
void BLASFUNC(csrot) (blasint *, float *, blasint *, float *, blasint *, float *, float *);
void BLASFUNC(zdrot) (blasint *, double *, blasint *, double *, blasint *, double *, double *);
void BLASFUNC(xqrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *);
void BLASFUNC(srotg) (float *, float *, float *, float *);
void BLASFUNC(drotg) (double *, double *, double *, double *);
void BLASFUNC(qrotg) (xdouble *, xdouble *, xdouble *, xdouble *);
void BLASFUNC(crotg) (float *, float *, float *, float *);
void BLASFUNC(zrotg) (double *, double *, double *, double *);
void BLASFUNC(xrotg) (xdouble *, xdouble *, xdouble *, xdouble *);
void BLASFUNC(srotmg)(float *, float *, float *, float *, float *);
void BLASFUNC(drotmg)(double *, double *, double *, double *, double *);
void BLASFUNC(srotm) (blasint *, float *, blasint *, float *, blasint *, float *);
void BLASFUNC(drotm) (blasint *, double *, blasint *, double *, blasint *, double *);
void BLASFUNC(qrotm) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *);
/* Level 2 routines */
void BLASFUNC(sger)(blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, blasint *);
void BLASFUNC(dger)(blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, blasint *);
void BLASFUNC(qger)(blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(cgeru)(blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, blasint *);
void BLASFUNC(cgerc)(blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, blasint *);
void BLASFUNC(zgeru)(blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, blasint *);
void BLASFUNC(zgerc)(blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, blasint *);
void BLASFUNC(xgeru)(blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(xgerc)(blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(sgemv)(char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(dgemv)(char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(qgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(cgemv)(char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zgemv)(char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xgemv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(strsv) (char *, char *, char *, blasint *, float *, blasint *,
float *, blasint *);
void BLASFUNC(dtrsv) (char *, char *, char *, blasint *, double *, blasint *,
double *, blasint *);
void BLASFUNC(qtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *,
xdouble *, blasint *);
void BLASFUNC(ctrsv) (char *, char *, char *, blasint *, float *, blasint *,
float *, blasint *);
void BLASFUNC(ztrsv) (char *, char *, char *, blasint *, double *, blasint *,
double *, blasint *);
void BLASFUNC(xtrsv) (char *, char *, char *, blasint *, xdouble *, blasint *,
xdouble *, blasint *);
void BLASFUNC(strmv) (char *, char *, char *, blasint *, float *, blasint *,
float *, blasint *);
void BLASFUNC(dtrmv) (char *, char *, char *, blasint *, double *, blasint *,
double *, blasint *);
void BLASFUNC(qtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *,
xdouble *, blasint *);
void BLASFUNC(ctrmv) (char *, char *, char *, blasint *, float *, blasint *,
float *, blasint *);
void BLASFUNC(ztrmv) (char *, char *, char *, blasint *, double *, blasint *,
double *, blasint *);
void BLASFUNC(xtrmv) (char *, char *, char *, blasint *, xdouble *, blasint *,
xdouble *, blasint *);
void BLASFUNC(stpsv) (char *, char *, char *, blasint *, float *, float *, blasint *);
void BLASFUNC(dtpsv) (char *, char *, char *, blasint *, double *, double *, blasint *);
void BLASFUNC(qtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(ctpsv) (char *, char *, char *, blasint *, float *, float *, blasint *);
void BLASFUNC(ztpsv) (char *, char *, char *, blasint *, double *, double *, blasint *);
void BLASFUNC(xtpsv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(stpmv) (char *, char *, char *, blasint *, float *, float *, blasint *);
void BLASFUNC(dtpmv) (char *, char *, char *, blasint *, double *, double *, blasint *);
void BLASFUNC(qtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(ctpmv) (char *, char *, char *, blasint *, float *, float *, blasint *);
void BLASFUNC(ztpmv) (char *, char *, char *, blasint *, double *, double *, blasint *);
void BLASFUNC(xtpmv) (char *, char *, char *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(stbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(dtbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(qtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(ctbmv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(ztbmv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(xtbmv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(stbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(dtbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(qtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(ctbsv) (char *, char *, char *, blasint *, blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(ztbsv) (char *, char *, char *, blasint *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(xtbsv) (char *, char *, char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(ssymv) (char *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(dsymv) (char *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(qsymv) (char *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(csymv) (char *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zsymv) (char *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xsymv) (char *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(sspmv) (char *, blasint *, float *, float *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(dspmv) (char *, blasint *, double *, double *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(qspmv) (char *, blasint *, xdouble *, xdouble *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(cspmv) (char *, blasint *, float *, float *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zspmv) (char *, blasint *, double *, double *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xspmv) (char *, blasint *, xdouble *, xdouble *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(ssyr) (char *, blasint *, float *, float *, blasint *,
float *, blasint *);
void BLASFUNC(dsyr) (char *, blasint *, double *, double *, blasint *,
double *, blasint *);
void BLASFUNC(qsyr) (char *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *);
void BLASFUNC(csyr) (char *, blasint *, float *, float *, blasint *,
float *, blasint *);
void BLASFUNC(zsyr) (char *, blasint *, double *, double *, blasint *,
double *, blasint *);
void BLASFUNC(xsyr) (char *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *);
void BLASFUNC(ssyr2) (char *, blasint *, float *,
float *, blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(dsyr2) (char *, blasint *, double *,
double *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(qsyr2) (char *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(csyr2) (char *, blasint *, float *,
float *, blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(zsyr2) (char *, blasint *, double *,
double *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(xsyr2) (char *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(sspr) (char *, blasint *, float *, float *, blasint *,
float *);
void BLASFUNC(dspr) (char *, blasint *, double *, double *, blasint *,
double *);
void BLASFUNC(qspr) (char *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *);
void BLASFUNC(cspr) (char *, blasint *, float *, float *, blasint *,
float *);
void BLASFUNC(zspr) (char *, blasint *, double *, double *, blasint *,
double *);
void BLASFUNC(xspr) (char *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *);
void BLASFUNC(sspr2) (char *, blasint *, float *,
float *, blasint *, float *, blasint *, float *);
void BLASFUNC(dspr2) (char *, blasint *, double *,
double *, blasint *, double *, blasint *, double *);
void BLASFUNC(qspr2) (char *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *);
void BLASFUNC(cspr2) (char *, blasint *, float *,
float *, blasint *, float *, blasint *, float *);
void BLASFUNC(zspr2) (char *, blasint *, double *,
double *, blasint *, double *, blasint *, double *);
void BLASFUNC(xspr2) (char *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *);
void BLASFUNC(cher) (char *, blasint *, float *, float *, blasint *,
float *, blasint *);
void BLASFUNC(zher) (char *, blasint *, double *, double *, blasint *,
double *, blasint *);
void BLASFUNC(xher) (char *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *);
void BLASFUNC(chpr) (char *, blasint *, float *, float *, blasint *, float *);
void BLASFUNC(zhpr) (char *, blasint *, double *, double *, blasint *, double *);
void BLASFUNC(xhpr) (char *, blasint *, xdouble *, xdouble *, blasint *, xdouble *);
void BLASFUNC(cher2) (char *, blasint *, float *,
float *, blasint *, float *, blasint *, float *, blasint *);
void BLASFUNC(zher2) (char *, blasint *, double *,
double *, blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC(xher2) (char *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(chpr2) (char *, blasint *, float *,
float *, blasint *, float *, blasint *, float *);
void BLASFUNC(zhpr2) (char *, blasint *, double *,
double *, blasint *, double *, blasint *, double *);
void BLASFUNC(xhpr2) (char *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *);
void BLASFUNC(chemv) (char *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zhemv) (char *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xhemv) (char *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(chpmv) (char *, blasint *, float *, float *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zhpmv) (char *, blasint *, double *, double *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xhpmv) (char *, blasint *, xdouble *, xdouble *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
int BLASFUNC(snorm)(char *, blasint *, blasint *, float *, blasint *);
int BLASFUNC(dnorm)(char *, blasint *, blasint *, double *, blasint *);
int BLASFUNC(cnorm)(char *, blasint *, blasint *, float *, blasint *);
int BLASFUNC(znorm)(char *, blasint *, blasint *, double *, blasint *);
void BLASFUNC(sgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(dgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(qgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(cgbmv)(char *, blasint *, blasint *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zgbmv)(char *, blasint *, blasint *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xgbmv)(char *, blasint *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(ssbmv)(char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(dsbmv)(char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(qsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(csbmv)(char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zsbmv)(char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xsbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(chbmv)(char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zhbmv)(char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xhbmv)(char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
/* Level 3 routines */
void BLASFUNC(sgemm)(char *, char *, blasint *, blasint *, blasint *, float *,
float *, blasint *, float *, blasint *, float *, float *, blasint *);
void BLASFUNC(dgemm)(char *, char *, blasint *, blasint *, blasint *, double *,
double *, blasint *, double *, blasint *, double *, double *, blasint *);
void BLASFUNC(qgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(cgemm)(char *, char *, blasint *, blasint *, blasint *, float *,
float *, blasint *, float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zgemm)(char *, char *, blasint *, blasint *, blasint *, double *,
double *, blasint *, double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(cgemm3m)(char *, char *, blasint *, blasint *, blasint *, float *,
float *, blasint *, float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zgemm3m)(char *, char *, blasint *, blasint *, blasint *, double *,
double *, blasint *, double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xgemm3m)(char *, char *, blasint *, blasint *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *);
int BLASFUNC(sge2mm)(char *, char *, char *, blasint *, blasint *,
float *, float *, blasint *, float *, blasint *,
float *, float *, blasint *);
int BLASFUNC(dge2mm)(char *, char *, char *, blasint *, blasint *,
double *, double *, blasint *, double *, blasint *,
double *, double *, blasint *);
int BLASFUNC(cge2mm)(char *, char *, char *, blasint *, blasint *,
float *, float *, blasint *, float *, blasint *,
float *, float *, blasint *);
int BLASFUNC(zge2mm)(char *, char *, char *, blasint *, blasint *,
double *, double *, blasint *, double *, blasint *,
double *, double *, blasint *);
void BLASFUNC(strsm)(char *, char *, char *, char *, blasint *, blasint *,
float *, float *, blasint *, float *, blasint *);
void BLASFUNC(dtrsm)(char *, char *, char *, char *, blasint *, blasint *,
double *, double *, blasint *, double *, blasint *);
void BLASFUNC(qtrsm)(char *, char *, char *, char *, blasint *, blasint *,
xdouble *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(ctrsm)(char *, char *, char *, char *, blasint *, blasint *,
float *, float *, blasint *, float *, blasint *);
void BLASFUNC(ztrsm)(char *, char *, char *, char *, blasint *, blasint *,
double *, double *, blasint *, double *, blasint *);
void BLASFUNC(xtrsm)(char *, char *, char *, char *, blasint *, blasint *,
xdouble *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(strmm)(char *, char *, char *, char *, blasint *, blasint *,
float *, float *, blasint *, float *, blasint *);
void BLASFUNC(dtrmm)(char *, char *, char *, char *, blasint *, blasint *,
double *, double *, blasint *, double *, blasint *);
void BLASFUNC(qtrmm)(char *, char *, char *, char *, blasint *, blasint *,
xdouble *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(ctrmm)(char *, char *, char *, char *, blasint *, blasint *,
float *, float *, blasint *, float *, blasint *);
void BLASFUNC(ztrmm)(char *, char *, char *, char *, blasint *, blasint *,
double *, double *, blasint *, double *, blasint *);
void BLASFUNC(xtrmm)(char *, char *, char *, char *, blasint *, blasint *,
xdouble *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC(ssymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(dsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(qsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(csymm)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zsymm)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xsymm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(csymm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zsymm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xsymm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(ssyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, float *, blasint *);
void BLASFUNC(dsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double *, double *, blasint *);
void BLASFUNC(qsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, xdouble *, blasint *);
void BLASFUNC(csyrk)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, float *, blasint *);
void BLASFUNC(zsyrk)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double *, double *, blasint *);
void BLASFUNC(xsyrk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, xdouble *, blasint *);
void BLASFUNC(ssyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(dsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double*, blasint *, double *, double *, blasint *);
void BLASFUNC(qsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble*, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(csyr2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zsyr2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double*, blasint *, double *, double *, blasint *);
void BLASFUNC(xsyr2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble*, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(chemm)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zhemm)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xhemm)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(chemm3m)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zhemm3m)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *, double *, double *, blasint *);
void BLASFUNC(xhemm3m)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, blasint *, xdouble *, xdouble *, blasint *);
void BLASFUNC(cherk)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, float *, blasint *);
void BLASFUNC(zherk)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double *, double *, blasint *);
void BLASFUNC(xherk)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble *, xdouble *, blasint *);
void BLASFUNC(cher2k)(char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
void BLASFUNC(zher2k)(char *, char *, blasint *, blasint *, double *, double *, blasint *,
double*, blasint *, double *, double *, blasint *);
void BLASFUNC(xher2k)(char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble*, blasint *, xdouble *, xdouble *, blasint *);
int BLASFUNC(cher2m)(char *, char *, char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *, float *, float *, blasint *);
int BLASFUNC(zher2m)(char *, char *, char *, blasint *, blasint *, double *, double *, blasint *,
double*, blasint *, double *, double *, blasint *);
int BLASFUNC(xher2m)(char *, char *, char *, blasint *, blasint *, xdouble *, xdouble *, blasint *,
xdouble*, blasint *, xdouble *, xdouble *, blasint *);
int BLASFUNC(sgemt)(char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *);
int BLASFUNC(dgemt)(char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *);
int BLASFUNC(cgemt)(char *, blasint *, blasint *, float *, float *, blasint *,
float *, blasint *);
int BLASFUNC(zgemt)(char *, blasint *, blasint *, double *, double *, blasint *,
double *, blasint *);
int BLASFUNC(sgema)(char *, char *, blasint *, blasint *, float *,
float *, blasint *, float *, float *, blasint *, float *, blasint *);
int BLASFUNC(dgema)(char *, char *, blasint *, blasint *, double *,
double *, blasint *, double*, double *, blasint *, double*, blasint *);
int BLASFUNC(cgema)(char *, char *, blasint *, blasint *, float *,
float *, blasint *, float *, float *, blasint *, float *, blasint *);
int BLASFUNC(zgema)(char *, char *, blasint *, blasint *, double *,
double *, blasint *, double*, double *, blasint *, double*, blasint *);
int BLASFUNC(sgems)(char *, char *, blasint *, blasint *, float *,
float *, blasint *, float *, float *, blasint *, float *, blasint *);
int BLASFUNC(dgems)(char *, char *, blasint *, blasint *, double *,
double *, blasint *, double*, double *, blasint *, double*, blasint *);
int BLASFUNC(cgems)(char *, char *, blasint *, blasint *, float *,
float *, blasint *, float *, float *, blasint *, float *, blasint *);
int BLASFUNC(zgems)(char *, char *, blasint *, blasint *, double *,
double *, blasint *, double*, double *, blasint *, double*, blasint *);
int BLASFUNC(sgemc)(char *, char *, blasint *, blasint *, blasint *, float *,
float *, blasint *, float *, blasint *, float *, blasint *, float *, float *, blasint *);
int BLASFUNC(dgemc)(char *, char *, blasint *, blasint *, blasint *, double *,
double *, blasint *, double *, blasint *, double *, blasint *, double *, double *, blasint *);
int BLASFUNC(qgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *);
int BLASFUNC(cgemc)(char *, char *, blasint *, blasint *, blasint *, float *,
float *, blasint *, float *, blasint *, float *, blasint *, float *, float *, blasint *);
int BLASFUNC(zgemc)(char *, char *, blasint *, blasint *, blasint *, double *,
double *, blasint *, double *, blasint *, double *, blasint *, double *, double *, blasint *);
int BLASFUNC(xgemc)(char *, char *, blasint *, blasint *, blasint *, xdouble *,
xdouble *, blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *);
int BLASFUNC(sgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *);
int BLASFUNC(dgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *);
int BLASFUNC(qgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *);
int BLASFUNC(cgetf2)(blasint *, blasint *, float *, blasint *, blasint *, blasint *);
int BLASFUNC(zgetf2)(blasint *, blasint *, double *, blasint *, blasint *, blasint *);
int BLASFUNC(xgetf2)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *);
int BLASFUNC(sgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *);
int BLASFUNC(dgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *);
int BLASFUNC(qgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *);
int BLASFUNC(cgetrf)(blasint *, blasint *, float *, blasint *, blasint *, blasint *);
int BLASFUNC(zgetrf)(blasint *, blasint *, double *, blasint *, blasint *, blasint *);
int BLASFUNC(xgetrf)(blasint *, blasint *, xdouble *, blasint *, blasint *, blasint *);
int BLASFUNC(slaswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *);
int BLASFUNC(dlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *);
int BLASFUNC(qlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *);
int BLASFUNC(claswp)(blasint *, float *, blasint *, blasint *, blasint *, blasint *, blasint *);
int BLASFUNC(zlaswp)(blasint *, double *, blasint *, blasint *, blasint *, blasint *, blasint *);
int BLASFUNC(xlaswp)(blasint *, xdouble *, blasint *, blasint *, blasint *, blasint *, blasint *);
int BLASFUNC(sgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(qgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(cgetrs)(char *, blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(zgetrs)(char *, blasint *, blasint *, double *, blasint *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(xgetrs)(char *, blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(sgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *);
int BLASFUNC(qgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *);
int BLASFUNC(cgesv)(blasint *, blasint *, float *, blasint *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(zgesv)(blasint *, blasint *, double *, blasint *, blasint *, double*, blasint *, blasint *);
int BLASFUNC(xgesv)(blasint *, blasint *, xdouble *, blasint *, blasint *, xdouble*, blasint *, blasint *);
int BLASFUNC(spotf2)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dpotf2)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(qpotf2)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(cpotf2)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(zpotf2)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(xpotf2)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(spotrf)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dpotrf)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(qpotrf)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(cpotrf)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(zpotrf)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(xpotrf)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(slauu2)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dlauu2)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(qlauu2)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(clauu2)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(zlauu2)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(xlauu2)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(slauum)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dlauum)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(qlauum)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(clauum)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(zlauum)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(xlauum)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(strti2)(char *, char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dtrti2)(char *, char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(qtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(ctrti2)(char *, char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(ztrti2)(char *, char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(xtrti2)(char *, char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(strtri)(char *, char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dtrtri)(char *, char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(qtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(ctrtri)(char *, char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(ztrtri)(char *, char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(xtrtri)(char *, char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(spotri)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(dpotri)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(qpotri)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(cpotri)(char *, blasint *, float *, blasint *, blasint *);
int BLASFUNC(zpotri)(char *, blasint *, double *, blasint *, blasint *);
int BLASFUNC(xpotri)(char *, blasint *, xdouble *, blasint *, blasint *);
int BLASFUNC(slarf)(char *, blasint *, blasint *, float *, blasint *, float *, float *, blasint *, float *);
int BLASFUNC(dlarf)(char *, blasint *, blasint *, double *, blasint *, double *, double *, blasint *, double *);
int BLASFUNC(qlarf)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *, xdouble *);
int BLASFUNC(clarf)(char *, blasint *, blasint *, float *, blasint *, float *, float *, blasint *, float *);
int BLASFUNC(zlarf)(char *, blasint *, blasint *, double *, blasint *, double *, double *, blasint *, double *);
int BLASFUNC(xlarf)(char *, blasint *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *, xdouble *);
FLOATRET BLASFUNC(slamch)(char *);
double BLASFUNC(dlamch)(char *);
xdouble BLASFUNC(qlamch)(char *);
FLOATRET BLASFUNC(slamc3)(float *, float *);
double BLASFUNC(dlamc3)(double *, double *);
xdouble BLASFUNC(qlamc3)(xdouble *, xdouble *);
#endif

296
src/NativeWrappers/GotoBlas2/include/common_lapack.h

@ -0,0 +1,296 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef ASSEMBLER
/* Lapack Library */
blasint sgetf2_k(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dgetf2_k(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qgetf2_k(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint cgetf2_k(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zgetf2_k(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xgetf2_k(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint sgetrf_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dgetrf_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qgetrf_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint cgetrf_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zgetrf_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xgetrf_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint sgetrf_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dgetrf_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qgetrf_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint cgetrf_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zgetrf_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xgetrf_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
int slaswp_plus (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, blasint *, BLASLONG);
int slaswp_minus(BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, blasint *, BLASLONG);
int dlaswp_plus (BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, blasint *, BLASLONG);
int dlaswp_minus(BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, blasint *, BLASLONG);
int qlaswp_plus (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, blasint *, BLASLONG);
int qlaswp_minus(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, blasint *, BLASLONG);
int claswp_plus (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, blasint *, BLASLONG);
int claswp_minus(BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, blasint *, BLASLONG);
int zlaswp_plus (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, blasint *, BLASLONG);
int zlaswp_minus(BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, blasint *, BLASLONG);
int xlaswp_plus (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, blasint *, BLASLONG);
int xlaswp_minus(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, blasint *, BLASLONG);
int slaswp_ncopy(BLASLONG, BLASLONG, BLASLONG, float *, BLASLONG, blasint *, float *);
int dlaswp_ncopy(BLASLONG, BLASLONG, BLASLONG, double *, BLASLONG, blasint *, double *);
int qlaswp_ncopy(BLASLONG, BLASLONG, BLASLONG, xdouble *, BLASLONG, blasint *, xdouble *);
int claswp_ncopy(BLASLONG, BLASLONG, BLASLONG, float *, BLASLONG, blasint *, float *);
int zlaswp_ncopy(BLASLONG, BLASLONG, BLASLONG, double *, BLASLONG, blasint *, double *);
int xlaswp_ncopy(BLASLONG, BLASLONG, BLASLONG, xdouble *, BLASLONG, blasint *, xdouble *);
blasint sgetrs_N_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint sgetrs_T_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dgetrs_N_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dgetrs_T_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qgetrs_N_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qgetrs_T_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint cgetrs_N_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cgetrs_T_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cgetrs_R_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cgetrs_C_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zgetrs_N_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zgetrs_T_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zgetrs_R_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zgetrs_C_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xgetrs_N_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xgetrs_T_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xgetrs_R_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xgetrs_C_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint sgetrs_N_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint sgetrs_T_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dgetrs_N_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dgetrs_T_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qgetrs_N_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qgetrs_T_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint cgetrs_N_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cgetrs_T_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cgetrs_R_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cgetrs_C_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zgetrs_N_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zgetrs_T_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zgetrs_R_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zgetrs_C_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xgetrs_N_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xgetrs_T_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xgetrs_R_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xgetrs_C_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint spotf2_U(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint spotf2_L(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dpotf2_U(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dpotf2_L(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qpotf2_U(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qpotf2_L(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint cpotf2_U(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cpotf2_L(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zpotf2_U(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zpotf2_L(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xpotf2_U(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xpotf2_L(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint spotrf_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint spotrf_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dpotrf_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dpotrf_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qpotrf_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qpotrf_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint cpotrf_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cpotrf_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zpotrf_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zpotrf_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xpotrf_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xpotrf_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint spotrf_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint spotrf_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dpotrf_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dpotrf_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qpotrf_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qpotrf_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint cpotrf_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint cpotrf_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zpotrf_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zpotrf_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xpotrf_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xpotrf_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint slauu2_U(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint slauu2_L(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dlauu2_U(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dlauu2_L(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qlauu2_U(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qlauu2_L(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint clauu2_U(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint clauu2_L(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zlauu2_U(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zlauu2_L(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xlauu2_U(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xlauu2_L(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint slauum_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint slauum_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dlauum_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dlauum_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qlauum_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qlauum_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint clauum_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint clauum_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zlauum_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zlauum_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xlauum_U_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xlauum_L_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint slauum_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint slauum_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dlauum_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dlauum_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qlauum_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qlauum_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint clauum_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint clauum_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zlauum_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zlauum_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xlauum_U_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xlauum_L_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint strti2_UU(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strti2_UN(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strti2_LU(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strti2_LN(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dtrti2_UU(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrti2_UN(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrti2_LU(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrti2_LN(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qtrti2_UU(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrti2_UN(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrti2_LU(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrti2_LN(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint ctrti2_UU(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrti2_UN(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrti2_LU(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrti2_LN(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ztrti2_UU(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrti2_UN(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrti2_LU(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrti2_LN(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xtrti2_UU(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrti2_UN(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrti2_LU(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrti2_LN(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint strtri_UU_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strtri_UN_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strtri_LU_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strtri_LN_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dtrtri_UU_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrtri_UN_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrtri_LU_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrtri_LN_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qtrtri_UU_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrtri_UN_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrtri_LU_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrtri_LN_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint ctrtri_UU_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrtri_UN_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrtri_LU_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrtri_LN_single(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ztrtri_UU_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrtri_UN_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrtri_LU_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrtri_LN_single(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xtrtri_UU_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrtri_UN_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrtri_LU_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrtri_LN_single(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint strtri_UU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strtri_UN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strtri_LU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint strtri_LN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dtrtri_UU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrtri_UN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrtri_LU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dtrtri_LN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qtrtri_UU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrtri_UN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrtri_LU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qtrtri_LN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint ctrtri_UU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrtri_UN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrtri_LU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ctrtri_LN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint ztrtri_UU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrtri_UN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrtri_LU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint ztrtri_LN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xtrtri_UU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrtri_UN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrtri_LU_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xtrtri_LN_parallel(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
int sneg_tcopy(BLASLONG, BLASLONG, float *, BLASLONG, float *);
int dneg_tcopy(BLASLONG, BLASLONG, double *, BLASLONG, double *);
int qneg_tcopy(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
int cneg_tcopy(BLASLONG, BLASLONG, float *, BLASLONG, float *);
int zneg_tcopy(BLASLONG, BLASLONG, double *, BLASLONG, double *);
int xneg_tcopy(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
blasint slarf_L(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint slarf_R(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint dlarf_L(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint dlarf_R(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint qlarf_L(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint qlarf_R(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint clarf_L(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint clarf_R(blas_arg_t *, BLASLONG *, BLASLONG *, float *, float *, BLASLONG);
blasint zlarf_L(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint zlarf_R(blas_arg_t *, BLASLONG *, BLASLONG *, double *, double *, BLASLONG);
blasint xlarf_L(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
blasint xlarf_R(blas_arg_t *, BLASLONG *, BLASLONG *, xdouble *, xdouble *, BLASLONG);
#endif

212
src/NativeWrappers/GotoBlas2/include/common_level1.h

@ -0,0 +1,212 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef ASSEMBLER
#ifdef __CUDACC__
extern "C" {
#endif
float sdot_k(BLASLONG, float *, BLASLONG, float *, BLASLONG);
double dsdot_k(BLASLONG, float *, BLASLONG, float *, BLASLONG);
double ddot_k(BLASLONG, double *, BLASLONG, double *, BLASLONG);
xdouble qdot_k(BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
float _Complex cdotc_k (BLASLONG, float *, BLASLONG, float *, BLASLONG);
float _Complex cdotu_k (BLASLONG, float *, BLASLONG, float *, BLASLONG);
double _Complex zdotc_k (BLASLONG, double *, BLASLONG, double *, BLASLONG);
double _Complex zdotu_k (BLASLONG, double *, BLASLONG, double *, BLASLONG);
xdouble _Complex xdotc_k (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
xdouble _Complex xdotu_k (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
int saxpy_k (BLASLONG, BLASLONG, BLASLONG, float,
float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
int daxpy_k (BLASLONG, BLASLONG, BLASLONG, double,
double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
int qaxpy_k (BLASLONG, BLASLONG, BLASLONG, xdouble,
xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
int caxpy_k (BLASLONG, BLASLONG, BLASLONG, float, float,
float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
int zaxpy_k (BLASLONG, BLASLONG, BLASLONG, double, double,
double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
int xaxpy_k (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble,
xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
int caxpyc_k (BLASLONG, BLASLONG, BLASLONG, float, float,
float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
int zaxpyc_k (BLASLONG, BLASLONG, BLASLONG, double, double,
double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
int xaxpyc_k (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble,
xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
int scopy_k(BLASLONG, float *, BLASLONG, float *, BLASLONG);
int dcopy_k(BLASLONG, double *, BLASLONG, double *, BLASLONG);
int qcopy_k(BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
int ccopy_k(BLASLONG, float *, BLASLONG, float *, BLASLONG);
int zcopy_k(BLASLONG, double *, BLASLONG, double *, BLASLONG);
int xcopy_k(BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
int sswap_k (BLASLONG, BLASLONG, BLASLONG, float,
float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
int dswap_k (BLASLONG, BLASLONG, BLASLONG, double,
double *, BLASLONG, double *, BLASLONG, double*, BLASLONG);
int qswap_k (BLASLONG, BLASLONG, BLASLONG, xdouble,
xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble*, BLASLONG);
int cswap_k (BLASLONG, BLASLONG, BLASLONG, float, float,
float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
int zswap_k (BLASLONG, BLASLONG, BLASLONG, double, double,
double *, BLASLONG, double *, BLASLONG, double*, BLASLONG);
int xswap_k (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble,
xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble*, BLASLONG);
float sasum_k (BLASLONG, float *, BLASLONG);
double dasum_k (BLASLONG, double *, BLASLONG);
xdouble qasum_k (BLASLONG, xdouble *, BLASLONG);
float casum_k (BLASLONG, float *, BLASLONG);
double zasum_k (BLASLONG, double *, BLASLONG);
xdouble xasum_k (BLASLONG, xdouble *, BLASLONG);
float samax_k (BLASLONG, float *, BLASLONG);
double damax_k (BLASLONG, double *, BLASLONG);
xdouble qamax_k (BLASLONG, xdouble *, BLASLONG);
float camax_k (BLASLONG, float *, BLASLONG);
double zamax_k (BLASLONG, double *, BLASLONG);
xdouble xamax_k (BLASLONG, xdouble *, BLASLONG);
float samin_k (BLASLONG, float *, BLASLONG);
double damin_k (BLASLONG, double *, BLASLONG);
xdouble qamin_k (BLASLONG, xdouble *, BLASLONG);
float camin_k (BLASLONG, float *, BLASLONG);
double zamin_k (BLASLONG, double *, BLASLONG);
xdouble xamin_k (BLASLONG, xdouble *, BLASLONG);
BLASLONG isamax_k(BLASLONG, float *, BLASLONG);
BLASLONG idamax_k(BLASLONG, double *, BLASLONG);
BLASLONG iqamax_k(BLASLONG, xdouble *, BLASLONG);
BLASLONG icamax_k(BLASLONG, float *, BLASLONG);
BLASLONG izamax_k(BLASLONG, double *, BLASLONG);
BLASLONG ixamax_k(BLASLONG, xdouble *, BLASLONG);
BLASLONG isamin_k(BLASLONG, float *, BLASLONG);
BLASLONG idamin_k(BLASLONG, double *, BLASLONG);
BLASLONG iqamin_k(BLASLONG, xdouble *, BLASLONG);
BLASLONG icamin_k(BLASLONG, float *, BLASLONG);
BLASLONG izamin_k(BLASLONG, double *, BLASLONG);
BLASLONG ixamin_k(BLASLONG, xdouble *, BLASLONG);
float smax_k (BLASLONG, float *, BLASLONG);
double dmax_k (BLASLONG, double *, BLASLONG);
xdouble qmax_k (BLASLONG, xdouble *, BLASLONG);
float cmax_k (BLASLONG, float *, BLASLONG);
double zmax_k (BLASLONG, double *, BLASLONG);
xdouble xmax_k (BLASLONG, xdouble *, BLASLONG);
float smin_k (BLASLONG, float *, BLASLONG);
double dmin_k (BLASLONG, double *, BLASLONG);
xdouble qmin_k (BLASLONG, xdouble *, BLASLONG);
float cmin_k (BLASLONG, float *, BLASLONG);
double zmin_k (BLASLONG, double *, BLASLONG);
xdouble xmin_k (BLASLONG, xdouble *, BLASLONG);
BLASLONG ismax_k(BLASLONG, float *, BLASLONG);
BLASLONG idmax_k(BLASLONG, double *, BLASLONG);
BLASLONG iqmax_k(BLASLONG, xdouble *, BLASLONG);
BLASLONG icmax_k(BLASLONG, float *, BLASLONG);
BLASLONG izmax_k(BLASLONG, double *, BLASLONG);
BLASLONG ixmax_k(BLASLONG, xdouble *, BLASLONG);
BLASLONG ismin_k(BLASLONG, float *, BLASLONG);
BLASLONG idmin_k(BLASLONG, double *, BLASLONG);
BLASLONG iqmin_k(BLASLONG, xdouble *, BLASLONG);
BLASLONG icmin_k(BLASLONG, float *, BLASLONG);
BLASLONG izmin_k(BLASLONG, double *, BLASLONG);
BLASLONG ixmin_k(BLASLONG, xdouble *, BLASLONG);
int sscal_k(BLASLONG, BLASLONG, BLASLONG, float,
float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
int dscal_k(BLASLONG, BLASLONG, BLASLONG, double,
double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
int qscal_k(BLASLONG, BLASLONG, BLASLONG, xdouble,
xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
int cscal_k(BLASLONG, BLASLONG, BLASLONG, float, float,
float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
int zscal_k(BLASLONG, BLASLONG, BLASLONG, double, double,
double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
int xscal_k(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble,
xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
int csscal_k(BLASLONG, BLASLONG, BLASLONG, float, float,
float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
int zdscal_k(BLASLONG, BLASLONG, BLASLONG, double, double,
double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
int xqscal_k(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble,
xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
float snrm2_k(BLASLONG, float *, BLASLONG);
double dnrm2_k(BLASLONG, double *, BLASLONG);
xdouble qnrm2_k(BLASLONG, xdouble *, BLASLONG);
float cnrm2_k(BLASLONG, float *, BLASLONG);
double znrm2_k(BLASLONG, double *, BLASLONG);
xdouble xnrm2_k(BLASLONG, xdouble *, BLASLONG);
int srot_k (BLASLONG, float *, BLASLONG, float *, BLASLONG, float , float );
int drot_k (BLASLONG, double *, BLASLONG, double *, BLASLONG, double, double);
int qrot_k (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble);
int csrot_k(BLASLONG, float *, BLASLONG, float *, BLASLONG, float , float );
int zdrot_k(BLASLONG, double *, BLASLONG, double *, BLASLONG, double, double);
int xqrot_k(BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble);
int srotg_k(float *, float *, float *, float *);
int drotg_k(double *, double *, double *, double *);
int qrotg_k(xdouble *, xdouble *, xdouble *, xdouble *);
int csrotg_k(float *, float *, float *, float *);
int zdrotg_k(double *, double *, double *, double *);
int xqrotg_k(xdouble *, xdouble *, xdouble *, xdouble *);
int srotmg_k(float *, float *, float *, float *, float *);
int drotmg_k(double *, double *, double *, double *, double *);
int qrotmg_k(xdouble *, xdouble *, xdouble *, xdouble *, xdouble *);
int srotm_k (BLASLONG, float, BLASLONG, float, BLASLONG, float);
int drotm_k (BLASLONG, double, BLASLONG, double, BLASLONG, double);
int qrotm_k (BLASLONG, xdouble, BLASLONG, xdouble, BLASLONG, xdouble);
#ifdef __CUDACC__
}
#endif
#endif

1359
src/NativeWrappers/GotoBlas2/include/common_level2.h

File diff suppressed because it is too large

1739
src/NativeWrappers/GotoBlas2/include/common_level3.h

File diff suppressed because it is too large

83
src/NativeWrappers/GotoBlas2/include/common_linux.h

@ -0,0 +1,83 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_LINUX_H
#define COMMON_LINUX_H
#ifndef ASSEMBLER
#include <syscall.h>
extern long int syscall (long int __sysno, ...);
#ifndef MPOL_PREFERRED
#define MPOL_PREFERRED 1
#endif
#ifndef MPOL_INTERLEAVE
#define MPOL_INTERLEAVE 3
#endif
#if defined(ARCH_IA64) && defined(__ECC)
#ifndef __NR_mbind
#define __NR_mbind 1259
#endif
#ifndef __NR_get_mempolicy
#define __NR_get_mempolicy 1260
#endif
#ifndef __NR_set_mempolicy
#define __NR_set_mempolicy 1261
#endif
#endif
static inline int my_mbind(void *addr, unsigned long len, int mode,
unsigned long *nodemask, unsigned long maxnode,
unsigned flags) {
return syscall(SYS_mbind, addr, len, mode, nodemask, maxnode, flags);
}
static inline int my_set_mempolicy(int mode, const unsigned long *addr, unsigned long flag) {
return syscall(SYS_set_mempolicy, mode, addr, flag);
}
static inline int my_gettid(void) { return syscall(SYS_gettid); }
#endif
#endif

2734
src/NativeWrappers/GotoBlas2/include/common_macro.h

File diff suppressed because it is too large

197
src/NativeWrappers/GotoBlas2/include/common_mips64.h

@ -0,0 +1,197 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_MIPS64
#define COMMON_MIPS64
#define MB
#define WMB
#define INLINE inline
#ifndef ASSEMBLER
static void INLINE blas_lock(volatile unsigned long *address){
long int ret, val = 1;
do {
while (*address) {YIELDING;};
__asm__ __volatile__(
"1: ll %0, %3\n"
" ori %2, %0, 1\n"
" sc %2, %1\n"
" beqz %2, 1b\n"
" andi %2, %0, 1\n"
" sync\n"
: "=&r" (val), "=m" (address), "=&r" (ret)
: "m" (address)
: "memory");
} while (ret);
}
static inline unsigned int rpcc(void){
unsigned long ret;
__asm__ __volatile__(".set push \n"
".set mips32r2\n"
"rdhwr %0, $30 \n"
".set pop" : "=r"(ret) : : "memory");
return ret;
}
static inline int blas_quickdivide(blasint x, blasint y){
return x / y;
}
#ifdef DOUBLE
#define GET_IMAGE(res) __asm__ __volatile__("mov.d %0, $f2" : "=f"(res) : : "memory")
#else
#define GET_IMAGE(res) __asm__ __volatile__("mov.s %0, $f2" : "=f"(res) : : "memory")
#endif
#define GET_IMAGE_CANCEL
#endif
#ifdef ASSEMBLER
#define HALT teq $0, $0
#define NOP move $0, $0
#ifdef DOUBLE
#define LD ldc1
#define ST sdc1
#define MADD madd.d
#define NMADD nmadd.d
#define MSUB msub.d
#define NMSUB nmsub.d
#define ADD add.d
#define SUB sub.d
#define MUL mul.d
#define MOV mov.d
#define CMOVF movf.d
#define CMOVT movt.d
#define MTC dmtc1
#define FABS abs.d
#define CMPEQ c.eq.d
#define CMPLE c.le.d
#define CMPLT c.lt.d
#else
#define LD lwc1
#define ST swc1
#define MADD madd.s
#define NMADD nmadd.s
#define MSUB msub.s
#define NMSUB nmsub.s
#define ADD add.s
#define SUB sub.s
#define MUL mul.s
#define MOV mov.s
#define CMOVF movf.s
#define CMOVT movt.s
#define MTC mtc1
#define FABS abs.s
#define CMPEQ c.eq.s
#define CMPLE c.le.s
#define CMPLT c.lt.s
#endif
#if defined(__64BIT__) && defined(USE64BITINT)
#define LDINT ld
#define LDARG ld
#define SDARG sd
#elif defined(__64BIT__) && !defined(USE64BITINT)
#define LDINT lw
#define LDARG ld
#define SDARG sd
#else
#define LDINT lw
#define LDARG lw
#define SDARG sw
#endif
#ifndef F_INTERFACE
#define REALNAME ASMNAME
#else
#define REALNAME ASMFNAME
#endif
#if defined(ASSEMBLER) && !defined(NEEDPARAM)
#define PROLOGUE \
.text ;\
.set mips64 ;\
.align 5 ;\
.globl REALNAME ;\
.ent REALNAME ;\
.type REALNAME, @function ;\
REALNAME: ;\
.set noreorder ;\
.set nomacro
#define EPILOGUE \
.set macro ;\
.set reorder ;\
.end REALNAME
#define PROFCODE
#endif
#endif
#define SEEK_ADDRESS
#define BUFFER_SIZE ( 8 << 20)
#ifndef PAGESIZE
#define PAGESIZE (64UL << 10)
#endif
#define HUGE_PAGESIZE ( 2 << 20)
#define BASE_ADDRESS (START_ADDRESS - BUFFER_SIZE * MAX_CPU_NUMBER)
#ifndef MAP_ANONYMOUS
#define MAP_ANONYMOUS MAP_ANON
#endif
#endif

1098
src/NativeWrappers/GotoBlas2/include/common_param.h

File diff suppressed because it is too large

795
src/NativeWrappers/GotoBlas2/include/common_power.h

@ -0,0 +1,795 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_POWER
#define COMMON_POWER
#define MB __asm__ __volatile__ ("sync")
#define WMB __asm__ __volatile__ ("sync")
#define INLINE inline
#ifdef PPC440
#define STDERR stdout
#define QNONCACHE 0x1
#define QCOMMS 0x2
#define QFAST 0x4
#endif
#ifndef ASSEMBLER
void *qalloc(int flags, size_t bytes);
static void INLINE blas_lock(volatile unsigned long *address){
long int ret, val = 1;
do {
while (*address) {YIELDING;};
#if defined(OS_LINUX) || defined(OS_DARWIN)
__asm__ __volatile__ (
"0: lwarx %0, 0, %1\n"
" cmpwi %0, 0\n"
" bne- 1f\n"
" stwcx. %2,0, %1\n"
" bne- 0b\n"
"1: "
: "=&r"(ret)
: "r"(address), "r" (val)
: "cr0", "memory");
#else
__asm__ __volatile__ (
".machine \"any\"\n"
" lwarx %0, 0, %1\n"
" cmpwi %0, 0\n"
" bne- $+12\n"
" stwcx. %2,0, %1\n"
" bne- $-16\n"
: "=&r"(ret)
: "r"(address), "r" (val)
: "cr0", "memory");
#endif
} while (ret);
}
static inline unsigned long rpcc(void){
unsigned long ret;
#ifdef OS_AIX
__asm__ __volatile__(".machine \"any\" ;");
#endif
__asm__ __volatile__ ("mftb %0" : "=r" (ret) : );
#if defined(POWER5) || defined(PPC970)
return (ret << 6);
#else
return (ret << 3);
#endif
}
#ifdef __64BIT__
#define RPCC64BIT
#endif
static inline unsigned long getstackaddr(void){
unsigned long addr;
__asm__ __volatile__ ("mr %0, 1"
: "=r"(addr) : : "memory");
return addr;
};
#if defined(OS_LINUX) || defined(OS_AIX)
#define GET_IMAGE(res) __asm__ __volatile__("fmr %0, 2" : "=f"(res) : : "memory")
#else
#define GET_IMAGE(res) __asm__ __volatile__("fmr %0, f2" : "=f"(res) : : "memory")
#define GET_IMAGE_CANCEL
#endif
#ifdef SMP
static inline int blas_quickdivide(blasint x, blasint y){
return x / y;
}
#endif
#endif
#ifdef ASSEMBLER
#ifdef DOUBLE
#define LFD lfd
#define LFDX lfdx
#define LFPDX lfpdx
#define LFSDX lfsdx
#define LFXDX lfxdx
#define LFDU lfdu
#define LFDUX lfdux
#define LFPDUX lfpdux
#define LFSDUX lfsdux
#define LFXDUX lfxdux
#define STFD stfd
#define STFDX stfdx
#define STFPDX stfpdx
#define STFSDX stfsdx
#define STFXDX stfxdx
#define STFDU stfdu
#define STFDUX stfdux
#define STFPDUX stfpdux
#define STFSDUX stfsdux
#define STFXDUX stfxdux
#define FMADD fmadd
#define FMSUB fmsub
#define FNMADD fnmadd
#define FNMSUB fnmsub
#define FMUL fmul
#define FADD fadd
#define FSUB fsub
#else
#define LFD lfs
#define LFDX lfsx
#define LFPDX lfpsx
#define LFSDX lfssx
#define LFXDX lfxsx
#define LFDU lfsu
#define LFDUX lfsux
#define LFPDUX lfpsux
#define LFSDUX lfssux
#define LFXDUX lfxsux
#define STFD stfs
#define STFDX stfsx
#define STFPDX stfpsx
#define STFSDX stfssx
#define STFXDX stfxsx
#define STFDU stfsu
#define STFDUX stfsux
#define STFPDUX stfpsux
#define STFSDUX stfssux
#define STFXDUX stfxsux
#define FMADD fmadds
#define FMSUB fmsubs
#define FNMADD fnmadds
#define FNMSUB fnmsubs
#define FMUL fmuls
#define FADD fadds
#define FSUB fsubs
#endif
#ifdef __64BIT__
#define LDLONG ld
#else
#define LDLONG lwz
#endif
#ifdef OS_DARWIN
#define LL(x) L##x
#endif
#ifdef OS_LINUX
#define LL(x) .L##x
#endif
#ifndef LL
#define LL(x) __L##x
#endif
#if defined(__64BIT__) && defined(USE64BITINT)
#define LDINT ld
#elif defined(__64BIT__) && !defined(USE64BITINT)
#define LDINT lwa
#else
#define LDINT lwz
#endif
/*
#define DCBT(REGA, REGB, NUM) .long (0x7c00022c | (REGA << 16) | (REGB << 11) | ((NUM) << 21))
#define DCBTST(REGA, REGB, NUM) .long (0x7c0001ec | (REGA << 16) | (REGB << 11) | ((NUM) << 21))
*/
#define DSTATTR_H(SIZE, COUNT, STRIDE) ((SIZE << 8) | (COUNT))
#define DSTATTR_L(SIZE, COUNT, STRIDE) (STRIDE)
#if defined(PPC970) || defined(POWER3) || defined(POWER4) || defined(POWER5) || defined(PPCG4)
#define HAVE_PREFETCH
#endif
#if defined(POWER3) || defined(POWER6) || defined(PPCG4) || defined(CELL)
#define DCBT_ARG 0
#else
#define DCBT_ARG 8
#endif
#ifdef CELL
#define L1_DUALFETCH
#define L1_PREFETCHSIZE (64 + 128 * 13)
#endif
#if defined(POWER3) || defined(POWER4) || defined(POWER5)
#define L1_DUALFETCH
#define L1_PREFETCHSIZE (96 + 128 * 12)
#endif
#if defined(POWER6)
#define L1_DUALFETCH
#define L1_PREFETCHSIZE (16 + 128 * 100)
#define L1_PREFETCH dcbtst
#endif
#ifndef L1_PREFETCH
#define L1_PREFETCH dcbt
#endif
#ifndef L1_PREFETCHW
#define L1_PREFETCHW dcbtst
#endif
#if DCBT_ARG == 0
#define DCBT(REGA, REGB) L1_PREFETCH REGB, REGA
#define DCBTST(REGA, REGB) L1_PREFETCHW REGB, REGA
#else
#define DCBT(REGA, REGB) L1_PREFETCH DCBT_ARG, REGB, REGA
#define DCBTST(REGA, REGB) L1_PREFETCHW DCBT_ARG, REGB, REGA
#endif
#ifndef L1_PREFETCHSIZE
#define L1_PREFETCHSIZE (96 + 128 * 12)
#endif
#if !defined(OS_DARWIN) || defined(NEEDPARAM)
#define f0 0
#define f1 1
#define f2 2
#define f3 3
#define f4 4
#define f5 5
#define f6 6
#define f7 7
#define f8 8
#define f9 9
#define f10 10
#define f11 11
#define f12 12
#define f13 13
#define f14 14
#define f15 15
#define f16 16
#define f17 17
#define f18 18
#define f19 19
#define f20 20
#define f21 21
#define f22 22
#define f23 23
#define f24 24
#define f25 25
#define f26 26
#define f27 27
#define f28 28
#define f29 29
#define f30 30
#define f31 31
#define r0 0
#define r1 1
#define r2 2
#define r3 3
#define r4 4
#define r5 5
#define r6 6
#define r7 7
#define r8 8
#define r9 9
#define r10 10
#define r11 11
#define r12 12
#define r13 13
#define r14 14
#define r15 15
#define r16 16
#define r17 17
#define r18 18
#define r19 19
#define r20 20
#define r21 21
#define r22 22
#define r23 23
#define r24 24
#define r25 25
#define r26 26
#define r27 27
#define r28 28
#define r29 29
#define r30 30
#define r31 31
#define v0 0
#define v1 1
#define v2 2
#define v3 3
#define v4 4
#define v5 5
#define v6 6
#define v7 7
#define v8 8
#define v9 9
#define v10 10
#define v11 11
#define v12 12
#define v13 13
#define v14 14
#define v15 15
#define v16 16
#define v17 17
#define v18 18
#define v19 19
#define v20 20
#define v21 21
#define v22 22
#define v23 23
#define v24 24
#define v25 25
#define v26 26
#define v27 27
#define v28 28
#define v29 29
#define v30 30
#define v31 31
#define BO_dCTR_NZERO_AND_NOT 0
#define BO_dCTR_NZERO_AND_NOT_1 1
#define BO_dCTR_ZERO_AND_NOT 2
#define BO_dCTR_ZERO_AND_NOT_1 3
#define BO_IF_NOT 4
#define BO_IF_NOT_1 5
#define BO_IF_NOT_2 6
#define BO_IF_NOT_3 7
#define BO_dCTR_NZERO_AND 8
#define BO_dCTR_NZERO_AND_1 9
#define BO_dCTR_ZERO_AND 10
#define BO_dCTR_ZERO_AND_1 11
#define BO_IF 12
#define BO_IF_1 13
#define BO_IF_2 14
#define BO_IF_3 15
#define BO_dCTR_NZERO 16
#define BO_dCTR_NZERO_1 17
#define BO_dCTR_ZERO 18
#define BO_dCTR_ZERO_1 19
#define BO_ALWAYS 20
#define BO_ALWAYS_1 21
#define BO_ALWAYS_2 22
#define BO_ALWAYS_3 23
#define BO_dCTR_NZERO_8 24
#define BO_dCTR_NZERO_9 25
#define BO_dCTR_ZERO_8 26
#define BO_dCTR_ZERO_9 27
#define BO_ALWAYS_8 28
#define BO_ALWAYS_9 29
#define BO_ALWAYS_10 30
#define BO_ALWAYS_11 31
#define CR0_LT 0
#define CR0_GT 1
#define CR0_EQ 2
#define CR0_SO 3
#define CR1_FX 4
#define CR1_FEX 5
#define CR1_VX 6
#define CR1_OX 7
#define CR2_LT 8
#define CR2_GT 9
#define CR2_EQ 10
#define CR2_SO 11
#define CR3_LT 12
#define CR3_GT 13
#define CR3_EQ 14
#define CR3_SO 15
#define CR4_LT 16
#define CR4_GT 17
#define CR4_EQ 18
#define CR4_SO 19
#define CR5_LT 20
#define CR5_GT 21
#define CR5_EQ 22
#define CR5_SO 23
#define CR6_LT 24
#define CR6_GT 25
#define CR6_EQ 26
#define CR6_SO 27
#define CR7_LT 28
#define CR7_GT 29
#define CR7_EQ 30
#define CR7_SO 31
#define TO_LT 16
#define TO_GT 8
#define TO_EQ 4
#define TO_LLT 2
#define TO_LGT 1
#define CR0 0
#define CR1 1
#define CR2 2
#define CR3 3
#define CR4 4
#define CR5 5
#define CR6 6
#define CR7 7
#define cr0 0
#define cr1 1
#define cr2 2
#define cr3 3
#define cr4 4
#define cr5 5
#define cr6 6
#define cr7 7
#define VRsave 256
#endif
#define CTR 9
#define SP r1
#ifdef __64BIT__
#define slwi sldi
#define cmpwi cmpdi
#define srawi sradi
#define mullw mulld
#endif
#ifndef F_INTERFACE
#define REALNAME ASMNAME
#else
#define REALNAME ASMFNAME
#endif
#if defined(ASSEMBLER) && !defined(NEEDPARAM)
#ifdef OS_LINUX
#ifndef __64BIT__
#define PROLOGUE \
.section .text;\
.align 6;\
.globl REALNAME;\
.type REALNAME, @function;\
REALNAME:
#define EPILOGUE .size REALNAME, .-REALNAME
#else
#define PROLOGUE \
.section .text;\
.align 5;\
.globl REALNAME;\
.section ".opd","aw";\
.align 3;\
REALNAME:;\
.quad .REALNAME, .TOC.@tocbase, 0;\
.previous;\
.size REALNAME, 24;\
.type .REALNAME, @function;\
.globl .REALNAME;\
.REALNAME:
#define EPILOGUE \
.long 0 ; \
.byte 0,0,0,1,128,0,0,0 ; \
.size .REALNAME, .-.REALNAME; \
.section .note.GNU-stack,"",@progbits
#endif
#ifdef PROFILE
#ifndef __64BIT__
#define PROFCODE ;\
.section ".data";\
.align 2;\
.LP3:;\
.long 0;\
.section ".text";\
mflr r0;\
stw r0, 4(SP);\
lis r12, .LP3@ha;\
la r0, .LP3@l(r12);\
bl _mcount;\
lwz r0, 4(SP);\
mtlr r0
#else
#define PROFCODE \
.globl _mcount; \
mflr r0; \
std r0, 16(SP); \
mr r11, SP; \
addi SP, SP, -256; \
std r11, 0(SP); \
std r3, 128(SP); \
std r4, 136(SP); \
std r5, 144(SP); \
std r6, 152(SP); \
std r7, 160(SP); \
std r8, 168(SP); \
std r9, 176(SP); \
std r10, 184(SP); \
stfd f3, 192(SP); \
stfd f4, 200(SP); \
bl ._mcount; \
nop; \
ld r3, 128(SP);\
ld r4, 136(SP);\
ld r5, 144(SP);\
ld r6, 152(SP);\
ld r7, 160(SP);\
ld r8, 168(SP);\
ld r9, 176(SP);\
ld r10, 184(SP);\
lfd f3, 192(SP);\
lfd f4, 200(SP);\
addi SP, SP, 256;\
ld r0, 16(SP);\
mtlr r0
#endif
#else
#define PROFCODE
#endif
#endif
#if OS_AIX
#ifndef __64BIT__
#define PROLOGUE \
.machine "any";\
.globl .REALNAME;\
.csect .text[PR],5;\
.REALNAME:;
#define EPILOGUE \
_section_.text:;\
.csect .data[RW],4;\
.long _section_.text;
#else
#define PROLOGUE \
.machine "any";\
.globl .REALNAME;\
.csect .text[PR], 5;\
.REALNAME:;
#define EPILOGUE \
_section_.text:;\
.csect .data[RW],4;\
.llong _section_.text;
#endif
#define PROFCODE
#endif
#ifdef OS_DARWIN
#ifndef __64BIT__
.macro PROLOGUE
.section __TEXT,__text,regular,pure_instructions
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
.machine ppc
.text
.align 4
.globl REALNAME
REALNAME:
.endmacro
#else
.macro PROLOGUE
.section __TEXT,__text,regular,pure_instructions
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
.machine ppc64
.text
.align 4
.globl REALNAME
REALNAME:
.endmacro
#endif
#ifndef PROFILE
#define PROFCODE
#define EPILOGUE .subsections_via_symbols
#else
#ifndef __64BIT__
.macro PROFCODE
mflr r0
stw r0, 8(SP)
addi SP, SP, -64
stw SP, 0(SP)
stw r3, 12(SP)
stw r4, 16(SP)
stw r5, 20(SP)
stw r6, 24(SP)
stw r7, 28(SP)
stw r8, 32(SP)
stw r9, 36(SP)
stw r10, 40(SP)
stfd f1, 48(SP)
stfd f2, 56(SP)
mr r3, r0
bl Lmcount$stub
nop
lwz r3, 12(SP)
lwz r4, 16(SP)
lwz r5, 20(SP)
lwz r6, 24(SP)
lwz r7, 28(SP)
lwz r8, 32(SP)
lwz r9, 36(SP)
lwz r10, 40(SP)
lfd f1, 48(SP)
lfd f2, 56(SP)
addi SP, SP, 64
lwz r0, 8(SP)
mtlr r0
.endmacro
.macro EPILOGUE
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
.align 5
Lmcount$stub:
.indirect_symbol mcount
mflr r0
bcl 20,31,L00000000001$spb
L00000000001$spb:
mflr r11
addis r11,r11,ha16(Lmcount$lazy_ptr-L00000000001$spb)
mtlr r0
lwzu r12,lo16(Lmcount$lazy_ptr-L00000000001$spb)(r11)
mtctr r12
bctr
.lazy_symbol_pointer
Lmcount$lazy_ptr:
.indirect_symbol mcount
.long dyld_stub_binding_helper
.subsections_via_symbols
.endmacro
#else
.macro PROFCODE
mflr r0
std r0, 16(SP)
addi SP, SP, -128
std SP, 0(SP)
std r3, 24(SP)
std r4, 32(SP)
std r5, 40(SP)
std r6, 48(SP)
std r7, 56(SP)
std r8, 64(SP)
std r9, 72(SP)
std r10, 80(SP)
stfd f1, 88(SP)
stfd f2, 96(SP)
mr r3, r0
bl Lmcount$stub
nop
ld r3, 24(SP)
ld r4, 32(SP)
ld r5, 40(SP)
ld r6, 48(SP)
ld r7, 56(SP)
ld r8, 64(SP)
ld r9, 72(SP)
ld r10, 80(SP)
lfd f1, 88(SP)
lfd f2, 86(SP)
addi SP, SP, 128
ld r0, 16(SP)
mtlr r0
.endmacro
.macro EPILOGUE
.data
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
.align 5
Lmcount$stub:
.indirect_symbol mcount
mflr r0
bcl 20,31,L00000000001$spb
L00000000001$spb:
mflr r11
addis r11,r11,ha16(Lmcount$lazy_ptr-L00000000001$spb)
mtlr r0
ld r12,lo16(Lmcount$lazy_ptr-L00000000001$spb)(r11)
mtctr r12
bctr
.lazy_symbol_pointer
Lmcount$lazy_ptr:
.indirect_symbol mcount
.quad dyld_stub_binding_helper
.subsections_via_symbols
.endmacro
#endif
#endif
#endif
#endif
#endif
#define HALT mfspr r0, 1023
#ifdef OS_LINUX
#if defined(PPC440) || defined(PPC440FP2)
#undef MAX_CPU_NUMBER
#define MAX_CPU_NUMBER 1
#endif
#if !defined(__64BIT__) && !defined(PROFILE) && !defined(PPC440) && !defined(PPC440FP2)
#define START_ADDRESS (0x0b000000UL)
#else
#define SEEK_ADDRESS
#endif
#endif
#ifdef OS_AIX
#ifndef __64BIT__
#define START_ADDRESS (0xf0000000UL)
#else
#define SEEK_ADDRESS
#endif
#endif
#ifdef OS_DARWIN
#define SEEK_ADDRESS
#endif
#if defined(PPC440)
#define BUFFER_SIZE ( 2 << 20)
#elif defined(PPC440FP2)
#define BUFFER_SIZE ( 16 << 20)
#else
#define BUFFER_SIZE ( 16 << 20)
#endif
#ifndef PAGESIZE
#define PAGESIZE ( 4 << 10)
#endif
#define HUGE_PAGESIZE (16 << 20)
#define BASE_ADDRESS (START_ADDRESS - BUFFER_SIZE * MAX_CPU_NUMBER)
#ifndef MAP_ANONYMOUS
#define MAP_ANONYMOUS MAP_ANON
#endif
#endif

431
src/NativeWrappers/GotoBlas2/include/common_q.h

@ -0,0 +1,431 @@
#ifndef COMMON_Q_H
#define COMMON_Q_H
#ifndef DYNAMIC_ARCH
#define QAMAX_K qamax_k
#define QAMIN_K qamin_k
#define QMAX_K qmax_k
#define QMIN_K qmin_k
#define IQAMAX_K iqamax_k
#define IQAMIN_K iqamin_k
#define IQMAX_K iqmax_k
#define IQMIN_K iqmin_k
#define QASUM_K qasum_k
#define QAXPYU_K qaxpy_k
#define QAXPYC_K qaxpy_k
#define QCOPY_K qcopy_k
#define QDOTU_K qdot_k
#define QDOTC_K qdot_k
#define QNRM2_K qnrm2_k
#define QSCAL_K qscal_k
#define QSWAP_K qswap_k
#define QROT_K qrot_k
#define QGEMV_N qgemv_n
#define QGEMV_T qgemv_t
#define QGEMV_R qgemv_n
#define QGEMV_C qgemv_t
#define QGEMV_O qgemv_n
#define QGEMV_U qgemv_t
#define QGEMV_S qgemv_n
#define QGEMV_D qgemv_t
#define QGERU_K qger_k
#define QGERC_K qger_k
#define QGERV_K qger_k
#define QGERD_K qger_k
#define QSYMV_U qsymv_U
#define QSYMV_L qsymv_L
#define QSYMV_THREAD_U qsymv_thread_U
#define QSYMV_THREAD_L qsymv_thread_L
#define QGEMM_ONCOPY qgemm_oncopy
#define QGEMM_OTCOPY qgemm_otcopy
#if QGEMM_DEFAULT_UNROLL_M == QGEMM_DEFAULT_UNROLL_N
#define QGEMM_INCOPY qgemm_oncopy
#define QGEMM_ITCOPY qgemm_otcopy
#else
#define QGEMM_INCOPY qgemm_incopy
#define QGEMM_ITCOPY qgemm_itcopy
#endif
#define QTRMM_OUNUCOPY qtrmm_ounucopy
#define QTRMM_OUNNCOPY qtrmm_ounncopy
#define QTRMM_OUTUCOPY qtrmm_outucopy
#define QTRMM_OUTNCOPY qtrmm_outncopy
#define QTRMM_OLNUCOPY qtrmm_olnucopy
#define QTRMM_OLNNCOPY qtrmm_olnncopy
#define QTRMM_OLTUCOPY qtrmm_oltucopy
#define QTRMM_OLTNCOPY qtrmm_oltncopy
#define QTRSM_OUNUCOPY qtrsm_ounucopy
#define QTRSM_OUNNCOPY qtrsm_ounncopy
#define QTRSM_OUTUCOPY qtrsm_outucopy
#define QTRSM_OUTNCOPY qtrsm_outncopy
#define QTRSM_OLNUCOPY qtrsm_olnucopy
#define QTRSM_OLNNCOPY qtrsm_olnncopy
#define QTRSM_OLTUCOPY qtrsm_oltucopy
#define QTRSM_OLTNCOPY qtrsm_oltncopy
#if QGEMM_DEFAULT_UNROLL_M == QGEMM_DEFAULT_UNROLL_N
#define QTRMM_IUNUCOPY qtrmm_ounucopy
#define QTRMM_IUNNCOPY qtrmm_ounncopy
#define QTRMM_IUTUCOPY qtrmm_outucopy
#define QTRMM_IUTNCOPY qtrmm_outncopy
#define QTRMM_ILNUCOPY qtrmm_olnucopy
#define QTRMM_ILNNCOPY qtrmm_olnncopy
#define QTRMM_ILTUCOPY qtrmm_oltucopy
#define QTRMM_ILTNCOPY qtrmm_oltncopy
#define QTRSM_IUNUCOPY qtrsm_ounucopy
#define QTRSM_IUNNCOPY qtrsm_ounncopy
#define QTRSM_IUTUCOPY qtrsm_outucopy
#define QTRSM_IUTNCOPY qtrsm_outncopy
#define QTRSM_ILNUCOPY qtrsm_olnucopy
#define QTRSM_ILNNCOPY qtrsm_olnncopy
#define QTRSM_ILTUCOPY qtrsm_oltucopy
#define QTRSM_ILTNCOPY qtrsm_oltncopy
#else
#define QTRMM_IUNUCOPY qtrmm_iunucopy
#define QTRMM_IUNNCOPY qtrmm_iunncopy
#define QTRMM_IUTUCOPY qtrmm_iutucopy
#define QTRMM_IUTNCOPY qtrmm_iutncopy
#define QTRMM_ILNUCOPY qtrmm_ilnucopy
#define QTRMM_ILNNCOPY qtrmm_ilnncopy
#define QTRMM_ILTUCOPY qtrmm_iltucopy
#define QTRMM_ILTNCOPY qtrmm_iltncopy
#define QTRSM_IUNUCOPY qtrsm_iunucopy
#define QTRSM_IUNNCOPY qtrsm_iunncopy
#define QTRSM_IUTUCOPY qtrsm_iutucopy
#define QTRSM_IUTNCOPY qtrsm_iutncopy
#define QTRSM_ILNUCOPY qtrsm_ilnucopy
#define QTRSM_ILNNCOPY qtrsm_ilnncopy
#define QTRSM_ILTUCOPY qtrsm_iltucopy
#define QTRSM_ILTNCOPY qtrsm_iltncopy
#endif
#define QGEMM_BETA qgemm_beta
#define QGEMM_KERNEL qgemm_kernel
#define QTRMM_KERNEL_LN qtrmm_kernel_LN
#define QTRMM_KERNEL_LT qtrmm_kernel_LT
#define QTRMM_KERNEL_LR qtrmm_kernel_LN
#define QTRMM_KERNEL_LC qtrmm_kernel_LT
#define QTRMM_KERNEL_RN qtrmm_kernel_RN
#define QTRMM_KERNEL_RT qtrmm_kernel_RT
#define QTRMM_KERNEL_RR qtrmm_kernel_RN
#define QTRMM_KERNEL_RC qtrmm_kernel_RT
#define QTRSM_KERNEL_LN qtrsm_kernel_LN
#define QTRSM_KERNEL_LT qtrsm_kernel_LT
#define QTRSM_KERNEL_LR qtrsm_kernel_LN
#define QTRSM_KERNEL_LC qtrsm_kernel_LT
#define QTRSM_KERNEL_RN qtrsm_kernel_RN
#define QTRSM_KERNEL_RT qtrsm_kernel_RT
#define QTRSM_KERNEL_RR qtrsm_kernel_RN
#define QTRSM_KERNEL_RC qtrsm_kernel_RT
#define QSYMM_OUTCOPY qsymm_outcopy
#define QSYMM_OLTCOPY qsymm_oltcopy
#if QGEMM_DEFAULT_UNROLL_M == QGEMM_DEFAULT_UNROLL_N
#define QSYMM_IUTCOPY qsymm_outcopy
#define QSYMM_ILTCOPY qsymm_oltcopy
#else
#define QSYMM_IUTCOPY qsymm_iutcopy
#define QSYMM_ILTCOPY qsymm_iltcopy
#endif
#define QNEG_TCOPY qneg_tcopy
#define QLASWP_NCOPY qlaswp_ncopy
#else
#define QAMAX_K gotoblas -> qamax_k
#define QAMIN_K gotoblas -> qamin_k
#define QMAX_K gotoblas -> qmax_k
#define QMIN_K gotoblas -> qmin_k
#define IQAMAX_K gotoblas -> iqamax_k
#define IQAMIN_K gotoblas -> iqamin_k
#define IQMAX_K gotoblas -> iqmax_k
#define IQMIN_K gotoblas -> iqmin_k
#define QASUM_K gotoblas -> qasum_k
#define QAXPYU_K gotoblas -> qaxpy_k
#define QAXPYC_K gotoblas -> qaxpy_k
#define QCOPY_K gotoblas -> qcopy_k
#define QDOTU_K gotoblas -> qdot_k
#define QDOTC_K gotoblas -> qdot_k
#define QNRM2_K gotoblas -> qnrm2_k
#define QSCAL_K gotoblas -> qscal_k
#define QSWAP_K gotoblas -> qswap_k
#define QROT_K gotoblas -> qrot_k
#define QGEMV_N gotoblas -> qgemv_n
#define QGEMV_T gotoblas -> qgemv_t
#define QGEMV_R gotoblas -> qgemv_n
#define QGEMV_C gotoblas -> qgemv_t
#define QGEMV_O gotoblas -> qgemv_n
#define QGEMV_U gotoblas -> qgemv_t
#define QGEMV_S gotoblas -> qgemv_n
#define QGEMV_D gotoblas -> qgemv_t
#define QGERU_K gotoblas -> qger_k
#define QGERC_K gotoblas -> qger_k
#define QGERV_K gotoblas -> qger_k
#define QGERD_K gotoblas -> qger_k
#define QSYMV_U gotoblas -> qsymv_U
#define QSYMV_L gotoblas -> qsymv_L
#define QSYMV_THREAD_U qsymv_thread_U
#define QSYMV_THREAD_L qsymv_thread_L
#define QGEMM_ONCOPY gotoblas -> qgemm_oncopy
#define QGEMM_OTCOPY gotoblas -> qgemm_otcopy
#define QGEMM_INCOPY gotoblas -> qgemm_incopy
#define QGEMM_ITCOPY gotoblas -> qgemm_itcopy
#define QTRMM_OUNUCOPY gotoblas -> qtrmm_ounucopy
#define QTRMM_OUTUCOPY gotoblas -> qtrmm_outucopy
#define QTRMM_OLNUCOPY gotoblas -> qtrmm_olnucopy
#define QTRMM_OLTUCOPY gotoblas -> qtrmm_oltucopy
#define QTRSM_OUNUCOPY gotoblas -> qtrsm_ounucopy
#define QTRSM_OUTUCOPY gotoblas -> qtrsm_outucopy
#define QTRSM_OLNUCOPY gotoblas -> qtrsm_olnucopy
#define QTRSM_OLTUCOPY gotoblas -> qtrsm_oltucopy
#define QTRMM_IUNUCOPY gotoblas -> qtrmm_iunucopy
#define QTRMM_IUTUCOPY gotoblas -> qtrmm_iutucopy
#define QTRMM_ILNUCOPY gotoblas -> qtrmm_ilnucopy
#define QTRMM_ILTUCOPY gotoblas -> qtrmm_iltucopy
#define QTRSM_IUNUCOPY gotoblas -> qtrsm_iunucopy
#define QTRSM_IUTUCOPY gotoblas -> qtrsm_iutucopy
#define QTRSM_ILNUCOPY gotoblas -> qtrsm_ilnucopy
#define QTRSM_ILTUCOPY gotoblas -> qtrsm_iltucopy
#define QTRMM_OUNNCOPY gotoblas -> qtrmm_ounncopy
#define QTRMM_OUTNCOPY gotoblas -> qtrmm_outncopy
#define QTRMM_OLNNCOPY gotoblas -> qtrmm_olnncopy
#define QTRMM_OLTNCOPY gotoblas -> qtrmm_oltncopy
#define QTRSM_OUNNCOPY gotoblas -> qtrsm_ounncopy
#define QTRSM_OUTNCOPY gotoblas -> qtrsm_outncopy
#define QTRSM_OLNNCOPY gotoblas -> qtrsm_olnncopy
#define QTRSM_OLTNCOPY gotoblas -> qtrsm_oltncopy
#define QTRMM_IUNNCOPY gotoblas -> qtrmm_iunncopy
#define QTRMM_IUTNCOPY gotoblas -> qtrmm_iutncopy
#define QTRMM_ILNNCOPY gotoblas -> qtrmm_ilnncopy
#define QTRMM_ILTNCOPY gotoblas -> qtrmm_iltncopy
#define QTRSM_IUNNCOPY gotoblas -> qtrsm_iunncopy
#define QTRSM_IUTNCOPY gotoblas -> qtrsm_iutncopy
#define QTRSM_ILNNCOPY gotoblas -> qtrsm_ilnncopy
#define QTRSM_ILTNCOPY gotoblas -> qtrsm_iltncopy
#define QGEMM_BETA gotoblas -> qgemm_beta
#define QGEMM_KERNEL gotoblas -> qgemm_kernel
#define QTRMM_KERNEL_LN gotoblas -> qtrmm_kernel_LN
#define QTRMM_KERNEL_LT gotoblas -> qtrmm_kernel_LT
#define QTRMM_KERNEL_LR gotoblas -> qtrmm_kernel_LN
#define QTRMM_KERNEL_LC gotoblas -> qtrmm_kernel_LT
#define QTRMM_KERNEL_RN gotoblas -> qtrmm_kernel_RN
#define QTRMM_KERNEL_RT gotoblas -> qtrmm_kernel_RT
#define QTRMM_KERNEL_RR gotoblas -> qtrmm_kernel_RN
#define QTRMM_KERNEL_RC gotoblas -> qtrmm_kernel_RT
#define QTRSM_KERNEL_LN gotoblas -> qtrsm_kernel_LN
#define QTRSM_KERNEL_LT gotoblas -> qtrsm_kernel_LT
#define QTRSM_KERNEL_LR gotoblas -> qtrsm_kernel_LN
#define QTRSM_KERNEL_LC gotoblas -> qtrsm_kernel_LT
#define QTRSM_KERNEL_RN gotoblas -> qtrsm_kernel_RN
#define QTRSM_KERNEL_RT gotoblas -> qtrsm_kernel_RT
#define QTRSM_KERNEL_RR gotoblas -> qtrsm_kernel_RN
#define QTRSM_KERNEL_RC gotoblas -> qtrsm_kernel_RT
#define QSYMM_IUTCOPY gotoblas -> qsymm_iutcopy
#define QSYMM_ILTCOPY gotoblas -> qsymm_iltcopy
#define QSYMM_OUTCOPY gotoblas -> qsymm_outcopy
#define QSYMM_OLTCOPY gotoblas -> qsymm_oltcopy
#define QNEG_TCOPY gotoblas -> qneg_tcopy
#define QLASWP_NCOPY gotoblas -> qlaswp_ncopy
#endif
#define QGEMM_NN qgemm_nn
#define QGEMM_CN qgemm_tn
#define QGEMM_TN qgemm_tn
#define QGEMM_NC qgemm_nt
#define QGEMM_NT qgemm_nt
#define QGEMM_CC qgemm_tt
#define QGEMM_CT qgemm_tt
#define QGEMM_TC qgemm_tt
#define QGEMM_TT qgemm_tt
#define QGEMM_NR qgemm_nn
#define QGEMM_TR qgemm_tn
#define QGEMM_CR qgemm_tn
#define QGEMM_RN qgemm_nn
#define QGEMM_RT qgemm_nt
#define QGEMM_RC qgemm_nt
#define QGEMM_RR qgemm_nn
#define QSYMM_LU qsymm_LU
#define QSYMM_LL qsymm_LL
#define QSYMM_RU qsymm_RU
#define QSYMM_RL qsymm_RL
#define QHEMM_LU qhemm_LU
#define QHEMM_LL qhemm_LL
#define QHEMM_RU qhemm_RU
#define QHEMM_RL qhemm_RL
#define QSYRK_UN qsyrk_UN
#define QSYRK_UT qsyrk_UT
#define QSYRK_LN qsyrk_LN
#define QSYRK_LT qsyrk_LT
#define QSYRK_UR qsyrk_UN
#define QSYRK_UC qsyrk_UT
#define QSYRK_LR qsyrk_LN
#define QSYRK_LC qsyrk_LT
#define QSYRK_KERNEL_U qsyrk_kernel_U
#define QSYRK_KERNEL_L qsyrk_kernel_L
#define QHERK_UN qsyrk_UN
#define QHERK_LN qsyrk_LN
#define QHERK_UC qsyrk_UT
#define QHERK_LC qsyrk_LT
#define QHER2K_UN qsyr2k_UN
#define QHER2K_LN qsyr2k_LN
#define QHER2K_UC qsyr2k_UT
#define QHER2K_LC qsyr2k_LT
#define QSYR2K_UN qsyr2k_UN
#define QSYR2K_UT qsyr2k_UT
#define QSYR2K_LN qsyr2k_LN
#define QSYR2K_LT qsyr2k_LT
#define QSYR2K_UR qsyr2k_UN
#define QSYR2K_UC qsyr2k_UT
#define QSYR2K_LR qsyr2k_LN
#define QSYR2K_LC qsyr2k_LT
#define QSYR2K_KERNEL_U qsyr2k_kernel_U
#define QSYR2K_KERNEL_L qsyr2k_kernel_L
#define QTRMM_LNUU qtrmm_LNUU
#define QTRMM_LNUN qtrmm_LNUN
#define QTRMM_LNLU qtrmm_LNLU
#define QTRMM_LNLN qtrmm_LNLN
#define QTRMM_LTUU qtrmm_LTUU
#define QTRMM_LTUN qtrmm_LTUN
#define QTRMM_LTLU qtrmm_LTLU
#define QTRMM_LTLN qtrmm_LTLN
#define QTRMM_LRUU qtrmm_LNUU
#define QTRMM_LRUN qtrmm_LNUN
#define QTRMM_LRLU qtrmm_LNLU
#define QTRMM_LRLN qtrmm_LNLN
#define QTRMM_LCUU qtrmm_LTUU
#define QTRMM_LCUN qtrmm_LTUN
#define QTRMM_LCLU qtrmm_LTLU
#define QTRMM_LCLN qtrmm_LTLN
#define QTRMM_RNUU qtrmm_RNUU
#define QTRMM_RNUN qtrmm_RNUN
#define QTRMM_RNLU qtrmm_RNLU
#define QTRMM_RNLN qtrmm_RNLN
#define QTRMM_RTUU qtrmm_RTUU
#define QTRMM_RTUN qtrmm_RTUN
#define QTRMM_RTLU qtrmm_RTLU
#define QTRMM_RTLN qtrmm_RTLN
#define QTRMM_RRUU qtrmm_RNUU
#define QTRMM_RRUN qtrmm_RNUN
#define QTRMM_RRLU qtrmm_RNLU
#define QTRMM_RRLN qtrmm_RNLN
#define QTRMM_RCUU qtrmm_RTUU
#define QTRMM_RCUN qtrmm_RTUN
#define QTRMM_RCLU qtrmm_RTLU
#define QTRMM_RCLN qtrmm_RTLN
#define QTRSM_LNUU qtrsm_LNUU
#define QTRSM_LNUN qtrsm_LNUN
#define QTRSM_LNLU qtrsm_LNLU
#define QTRSM_LNLN qtrsm_LNLN
#define QTRSM_LTUU qtrsm_LTUU
#define QTRSM_LTUN qtrsm_LTUN
#define QTRSM_LTLU qtrsm_LTLU
#define QTRSM_LTLN qtrsm_LTLN
#define QTRSM_LRUU qtrsm_LNUU
#define QTRSM_LRUN qtrsm_LNUN
#define QTRSM_LRLU qtrsm_LNLU
#define QTRSM_LRLN qtrsm_LNLN
#define QTRSM_LCUU qtrsm_LTUU
#define QTRSM_LCUN qtrsm_LTUN
#define QTRSM_LCLU qtrsm_LTLU
#define QTRSM_LCLN qtrsm_LTLN
#define QTRSM_RNUU qtrsm_RNUU
#define QTRSM_RNUN qtrsm_RNUN
#define QTRSM_RNLU qtrsm_RNLU
#define QTRSM_RNLN qtrsm_RNLN
#define QTRSM_RTUU qtrsm_RTUU
#define QTRSM_RTUN qtrsm_RTUN
#define QTRSM_RTLU qtrsm_RTLU
#define QTRSM_RTLN qtrsm_RTLN
#define QTRSM_RRUU qtrsm_RNUU
#define QTRSM_RRUN qtrsm_RNUN
#define QTRSM_RRLU qtrsm_RNLU
#define QTRSM_RRLN qtrsm_RNLN
#define QTRSM_RCUU qtrsm_RTUU
#define QTRSM_RCUN qtrsm_RTUN
#define QTRSM_RCLU qtrsm_RTLU
#define QTRSM_RCLN qtrsm_RTLN
#define QGEMM_THREAD_NN qgemm_thread_nn
#define QGEMM_THREAD_CN qgemm_thread_tn
#define QGEMM_THREAD_TN qgemm_thread_tn
#define QGEMM_THREAD_NC qgemm_thread_nt
#define QGEMM_THREAD_NT qgemm_thread_nt
#define QGEMM_THREAD_CC qgemm_thread_tt
#define QGEMM_THREAD_CT qgemm_thread_tt
#define QGEMM_THREAD_TC qgemm_thread_tt
#define QGEMM_THREAD_TT qgemm_thread_tt
#define QGEMM_THREAD_NR qgemm_thread_nn
#define QGEMM_THREAD_TR qgemm_thread_tn
#define QGEMM_THREAD_CR qgemm_thread_tn
#define QGEMM_THREAD_RN qgemm_thread_nn
#define QGEMM_THREAD_RT qgemm_thread_nt
#define QGEMM_THREAD_RC qgemm_thread_nt
#define QGEMM_THREAD_RR qgemm_thread_nn
#define QSYMM_THREAD_LU qsymm_thread_LU
#define QSYMM_THREAD_LL qsymm_thread_LL
#define QSYMM_THREAD_RU qsymm_thread_RU
#define QSYMM_THREAD_RL qsymm_thread_RL
#define QHEMM_THREAD_LU qhemm_thread_LU
#define QHEMM_THREAD_LL qhemm_thread_LL
#define QHEMM_THREAD_RU qhemm_thread_RU
#define QHEMM_THREAD_RL qhemm_thread_RL
#define QSYRK_THREAD_UN qsyrk_thread_UN
#define QSYRK_THREAD_UT qsyrk_thread_UT
#define QSYRK_THREAD_LN qsyrk_thread_LN
#define QSYRK_THREAD_LT qsyrk_thread_LT
#define QSYRK_THREAD_UR qsyrk_thread_UN
#define QSYRK_THREAD_UC qsyrk_thread_UT
#define QSYRK_THREAD_LR qsyrk_thread_LN
#define QSYRK_THREAD_LC qsyrk_thread_LT
#define QHERK_THREAD_UN qsyrk_thread_UN
#define QHERK_THREAD_UT qsyrk_thread_UT
#define QHERK_THREAD_LN qsyrk_thread_LN
#define QHERK_THREAD_LT qsyrk_thread_LT
#define QHERK_THREAD_UR qsyrk_thread_UN
#define QHERK_THREAD_UC qsyrk_thread_UT
#define QHERK_THREAD_LR qsyrk_thread_LN
#define QHERK_THREAD_LC qsyrk_thread_LT
#endif

0
src/NativeWrappers/GotoBlas2/include/common_reference.h

436
src/NativeWrappers/GotoBlas2/include/common_s.h

@ -0,0 +1,436 @@
#ifndef COMMON_S_H
#define COMMON_S_H
#ifndef DYNAMIC_ARCH
#define SAMAX_K samax_k
#define SAMIN_K samin_k
#define SMAX_K smax_k
#define SMIN_K smin_k
#define ISAMAX_K isamax_k
#define ISAMIN_K isamin_k
#define ISMAX_K ismax_k
#define ISMIN_K ismin_k
#define SASUM_K sasum_k
#define SAXPYU_K saxpy_k
#define SAXPYC_K saxpy_k
#define SCOPY_K scopy_k
#define SDOTU_K sdot_k
#define SDOTC_K sdot_k
#define SDSDOT_K sdot_k
#define DSDOT_K dsdot_k
#define SNRM2_K snrm2_k
#define SSCAL_K sscal_k
#define SSWAP_K sswap_k
#define SROT_K srot_k
#define SGEMV_N sgemv_n
#define SGEMV_T sgemv_t
#define SGEMV_R sgemv_n
#define SGEMV_C sgemv_t
#define SGEMV_O sgemv_n
#define SGEMV_U sgemv_t
#define SGEMV_S sgemv_n
#define SGEMV_D sgemv_t
#define SGERU_K sger_k
#define SGERC_K sger_k
#define SGERV_K sger_k
#define SGERD_K sger_k
#define SSYMV_U ssymv_U
#define SSYMV_L ssymv_L
#define SSYMV_THREAD_U ssymv_thread_U
#define SSYMV_THREAD_L ssymv_thread_L
#define SGEMM_ONCOPY sgemm_oncopy
#define SGEMM_OTCOPY sgemm_otcopy
#if SGEMM_DEFAULT_UNROLL_M == SGEMM_DEFAULT_UNROLL_N
#define SGEMM_INCOPY sgemm_oncopy
#define SGEMM_ITCOPY sgemm_otcopy
#else
#define SGEMM_INCOPY sgemm_incopy
#define SGEMM_ITCOPY sgemm_itcopy
#endif
#define STRMM_OUNUCOPY strmm_ounucopy
#define STRMM_OUNNCOPY strmm_ounncopy
#define STRMM_OUTUCOPY strmm_outucopy
#define STRMM_OUTNCOPY strmm_outncopy
#define STRMM_OLNUCOPY strmm_olnucopy
#define STRMM_OLNNCOPY strmm_olnncopy
#define STRMM_OLTUCOPY strmm_oltucopy
#define STRMM_OLTNCOPY strmm_oltncopy
#define STRSM_OUNUCOPY strsm_ounucopy
#define STRSM_OUNNCOPY strsm_ounncopy
#define STRSM_OUTUCOPY strsm_outucopy
#define STRSM_OUTNCOPY strsm_outncopy
#define STRSM_OLNUCOPY strsm_olnucopy
#define STRSM_OLNNCOPY strsm_olnncopy
#define STRSM_OLTUCOPY strsm_oltucopy
#define STRSM_OLTNCOPY strsm_oltncopy
#if SGEMM_DEFAULT_UNROLL_M == SGEMM_DEFAULT_UNROLL_N
#define STRMM_IUNUCOPY strmm_ounucopy
#define STRMM_IUNNCOPY strmm_ounncopy
#define STRMM_IUTUCOPY strmm_outucopy
#define STRMM_IUTNCOPY strmm_outncopy
#define STRMM_ILNUCOPY strmm_olnucopy
#define STRMM_ILNNCOPY strmm_olnncopy
#define STRMM_ILTUCOPY strmm_oltucopy
#define STRMM_ILTNCOPY strmm_oltncopy
#define STRSM_IUNUCOPY strsm_ounucopy
#define STRSM_IUNNCOPY strsm_ounncopy
#define STRSM_IUTUCOPY strsm_outucopy
#define STRSM_IUTNCOPY strsm_outncopy
#define STRSM_ILNUCOPY strsm_olnucopy
#define STRSM_ILNNCOPY strsm_olnncopy
#define STRSM_ILTUCOPY strsm_oltucopy
#define STRSM_ILTNCOPY strsm_oltncopy
#else
#define STRMM_IUNUCOPY strmm_iunucopy
#define STRMM_IUNNCOPY strmm_iunncopy
#define STRMM_IUTUCOPY strmm_iutucopy
#define STRMM_IUTNCOPY strmm_iutncopy
#define STRMM_ILNUCOPY strmm_ilnucopy
#define STRMM_ILNNCOPY strmm_ilnncopy
#define STRMM_ILTUCOPY strmm_iltucopy
#define STRMM_ILTNCOPY strmm_iltncopy
#define STRSM_IUNUCOPY strsm_iunucopy
#define STRSM_IUNNCOPY strsm_iunncopy
#define STRSM_IUTUCOPY strsm_iutucopy
#define STRSM_IUTNCOPY strsm_iutncopy
#define STRSM_ILNUCOPY strsm_ilnucopy
#define STRSM_ILNNCOPY strsm_ilnncopy
#define STRSM_ILTUCOPY strsm_iltucopy
#define STRSM_ILTNCOPY strsm_iltncopy
#endif
#define SGEMM_BETA sgemm_beta
#define SGEMM_KERNEL sgemm_kernel
#define STRMM_KERNEL_LN strmm_kernel_LN
#define STRMM_KERNEL_LT strmm_kernel_LT
#define STRMM_KERNEL_LR strmm_kernel_LN
#define STRMM_KERNEL_LC strmm_kernel_LT
#define STRMM_KERNEL_RN strmm_kernel_RN
#define STRMM_KERNEL_RT strmm_kernel_RT
#define STRMM_KERNEL_RR strmm_kernel_RN
#define STRMM_KERNEL_RC strmm_kernel_RT
#define STRSM_KERNEL_LN strsm_kernel_LN
#define STRSM_KERNEL_LT strsm_kernel_LT
#define STRSM_KERNEL_LR strsm_kernel_LN
#define STRSM_KERNEL_LC strsm_kernel_LT
#define STRSM_KERNEL_RN strsm_kernel_RN
#define STRSM_KERNEL_RT strsm_kernel_RT
#define STRSM_KERNEL_RR strsm_kernel_RN
#define STRSM_KERNEL_RC strsm_kernel_RT
#define SSYMM_OUTCOPY ssymm_outcopy
#define SSYMM_OLTCOPY ssymm_oltcopy
#if SGEMM_DEFAULT_UNROLL_M == SGEMM_DEFAULT_UNROLL_N
#define SSYMM_IUTCOPY ssymm_outcopy
#define SSYMM_ILTCOPY ssymm_oltcopy
#else
#define SSYMM_IUTCOPY ssymm_iutcopy
#define SSYMM_ILTCOPY ssymm_iltcopy
#endif
#define SNEG_TCOPY sneg_tcopy
#define SLASWP_NCOPY slaswp_ncopy
#else
#define SAMAX_K gotoblas -> samax_k
#define SAMIN_K gotoblas -> samin_k
#define SMAX_K gotoblas -> smax_k
#define SMIN_K gotoblas -> smin_k
#define ISAMAX_K gotoblas -> isamax_k
#define ISAMIN_K gotoblas -> isamin_k
#define ISMAX_K gotoblas -> ismax_k
#define ISMIN_K gotoblas -> ismin_k
#define SASUM_K gotoblas -> sasum_k
#define SAXPYU_K gotoblas -> saxpy_k
#define SAXPYC_K gotoblas -> saxpy_k
#define SCOPY_K gotoblas -> scopy_k
#define SDOTU_K gotoblas -> sdot_k
#define SDOTC_K gotoblas -> sdot_k
#define SDSDOT_K gotoblas -> sdot_k
#define DSDOT_K gotoblas -> dsdot_k
#define SNRM2_K gotoblas -> snrm2_k
#define SSCAL_K gotoblas -> sscal_k
#define SSWAP_K gotoblas -> sswap_k
#define SROT_K gotoblas -> srot_k
#define SGEMV_N gotoblas -> sgemv_n
#define SGEMV_T gotoblas -> sgemv_t
#define SGEMV_R gotoblas -> sgemv_n
#define SGEMV_C gotoblas -> sgemv_t
#define SGEMV_O gotoblas -> sgemv_n
#define SGEMV_U gotoblas -> sgemv_t
#define SGEMV_S gotoblas -> sgemv_n
#define SGEMV_D gotoblas -> sgemv_t
#define SGERU_K gotoblas -> sger_k
#define SGERC_K gotoblas -> sger_k
#define SGERV_K gotoblas -> sger_k
#define SGERD_K gotoblas -> sger_k
#define SSYMV_U gotoblas -> ssymv_U
#define SSYMV_L gotoblas -> ssymv_L
#define SSYMV_THREAD_U ssymv_thread_U
#define SSYMV_THREAD_L ssymv_thread_L
#define SGEMM_ONCOPY gotoblas -> sgemm_oncopy
#define SGEMM_OTCOPY gotoblas -> sgemm_otcopy
#define SGEMM_INCOPY gotoblas -> sgemm_incopy
#define SGEMM_ITCOPY gotoblas -> sgemm_itcopy
#define STRMM_OUNUCOPY gotoblas -> strmm_ounucopy
#define STRMM_OUTUCOPY gotoblas -> strmm_outucopy
#define STRMM_OLNUCOPY gotoblas -> strmm_olnucopy
#define STRMM_OLTUCOPY gotoblas -> strmm_oltucopy
#define STRSM_OUNUCOPY gotoblas -> strsm_ounucopy
#define STRSM_OUTUCOPY gotoblas -> strsm_outucopy
#define STRSM_OLNUCOPY gotoblas -> strsm_olnucopy
#define STRSM_OLTUCOPY gotoblas -> strsm_oltucopy
#define STRMM_IUNUCOPY gotoblas -> strmm_iunucopy
#define STRMM_IUTUCOPY gotoblas -> strmm_iutucopy
#define STRMM_ILNUCOPY gotoblas -> strmm_ilnucopy
#define STRMM_ILTUCOPY gotoblas -> strmm_iltucopy
#define STRSM_IUNUCOPY gotoblas -> strsm_iunucopy
#define STRSM_IUTUCOPY gotoblas -> strsm_iutucopy
#define STRSM_ILNUCOPY gotoblas -> strsm_ilnucopy
#define STRSM_ILTUCOPY gotoblas -> strsm_iltucopy
#define STRMM_OUNNCOPY gotoblas -> strmm_ounncopy
#define STRMM_OUTNCOPY gotoblas -> strmm_outncopy
#define STRMM_OLNNCOPY gotoblas -> strmm_olnncopy
#define STRMM_OLTNCOPY gotoblas -> strmm_oltncopy
#define STRSM_OUNNCOPY gotoblas -> strsm_ounncopy
#define STRSM_OUTNCOPY gotoblas -> strsm_outncopy
#define STRSM_OLNNCOPY gotoblas -> strsm_olnncopy
#define STRSM_OLTNCOPY gotoblas -> strsm_oltncopy
#define STRMM_IUNNCOPY gotoblas -> strmm_iunncopy
#define STRMM_IUTNCOPY gotoblas -> strmm_iutncopy
#define STRMM_ILNNCOPY gotoblas -> strmm_ilnncopy
#define STRMM_ILTNCOPY gotoblas -> strmm_iltncopy
#define STRSM_IUNNCOPY gotoblas -> strsm_iunncopy
#define STRSM_IUTNCOPY gotoblas -> strsm_iutncopy
#define STRSM_ILNNCOPY gotoblas -> strsm_ilnncopy
#define STRSM_ILTNCOPY gotoblas -> strsm_iltncopy
#define SGEMM_BETA gotoblas -> sgemm_beta
#define SGEMM_KERNEL gotoblas -> sgemm_kernel
#define STRMM_KERNEL_LN gotoblas -> strmm_kernel_LN
#define STRMM_KERNEL_LT gotoblas -> strmm_kernel_LT
#define STRMM_KERNEL_LR gotoblas -> strmm_kernel_LN
#define STRMM_KERNEL_LC gotoblas -> strmm_kernel_LT
#define STRMM_KERNEL_RN gotoblas -> strmm_kernel_RN
#define STRMM_KERNEL_RT gotoblas -> strmm_kernel_RT
#define STRMM_KERNEL_RR gotoblas -> strmm_kernel_RN
#define STRMM_KERNEL_RC gotoblas -> strmm_kernel_RT
#define STRSM_KERNEL_LN gotoblas -> strsm_kernel_LN
#define STRSM_KERNEL_LT gotoblas -> strsm_kernel_LT
#define STRSM_KERNEL_LR gotoblas -> strsm_kernel_LN
#define STRSM_KERNEL_LC gotoblas -> strsm_kernel_LT
#define STRSM_KERNEL_RN gotoblas -> strsm_kernel_RN
#define STRSM_KERNEL_RT gotoblas -> strsm_kernel_RT
#define STRSM_KERNEL_RR gotoblas -> strsm_kernel_RN
#define STRSM_KERNEL_RC gotoblas -> strsm_kernel_RT
#define SSYMM_IUTCOPY gotoblas -> ssymm_iutcopy
#define SSYMM_ILTCOPY gotoblas -> ssymm_iltcopy
#define SSYMM_OUTCOPY gotoblas -> ssymm_outcopy
#define SSYMM_OLTCOPY gotoblas -> ssymm_oltcopy
#define SNEG_TCOPY gotoblas -> sneg_tcopy
#define SLASWP_NCOPY gotoblas -> slaswp_ncopy
#endif
#define SGEMM_NN sgemm_nn
#define SGEMM_CN sgemm_tn
#define SGEMM_TN sgemm_tn
#define SGEMM_NC sgemm_nt
#define SGEMM_NT sgemm_nt
#define SGEMM_CC sgemm_tt
#define SGEMM_CT sgemm_tt
#define SGEMM_TC sgemm_tt
#define SGEMM_TT sgemm_tt
#define SGEMM_NR sgemm_nn
#define SGEMM_TR sgemm_tn
#define SGEMM_CR sgemm_tn
#define SGEMM_RN sgemm_nn
#define SGEMM_RT sgemm_nt
#define SGEMM_RC sgemm_nt
#define SGEMM_RR sgemm_nn
#define SSYMM_LU ssymm_LU
#define SSYMM_LL ssymm_LL
#define SSYMM_RU ssymm_RU
#define SSYMM_RL ssymm_RL
#define SHEMM_LU shemm_LU
#define SHEMM_LL shemm_LL
#define SHEMM_RU shemm_RU
#define SHEMM_RL shemm_RL
#define SSYRK_UN ssyrk_UN
#define SSYRK_UT ssyrk_UT
#define SSYRK_LN ssyrk_LN
#define SSYRK_LT ssyrk_LT
#define SSYRK_UR ssyrk_UN
#define SSYRK_UC ssyrk_UT
#define SSYRK_LR ssyrk_LN
#define SSYRK_LC ssyrk_LT
#define SSYRK_KERNEL_U ssyrk_kernel_U
#define SSYRK_KERNEL_L ssyrk_kernel_L
#define SHERK_UN ssyrk_UN
#define SHERK_LN ssyrk_LN
#define SHERK_UC ssyrk_UT
#define SHERK_LC ssyrk_LT
#define SHER2K_UN ssyr2k_UN
#define SHER2K_LN ssyr2k_LN
#define SHER2K_UC ssyr2k_UT
#define SHER2K_LC ssyr2k_LT
#define SSYR2K_UN ssyr2k_UN
#define SSYR2K_UT ssyr2k_UT
#define SSYR2K_LN ssyr2k_LN
#define SSYR2K_LT ssyr2k_LT
#define SSYR2K_UR ssyr2k_UN
#define SSYR2K_UC ssyr2k_UT
#define SSYR2K_LR ssyr2k_LN
#define SSYR2K_LC ssyr2k_LT
#define SSYR2K_KERNEL_U ssyr2k_kernel_U
#define SSYR2K_KERNEL_L ssyr2k_kernel_L
#define STRMM_LNUU strmm_LNUU
#define STRMM_LNUN strmm_LNUN
#define STRMM_LNLU strmm_LNLU
#define STRMM_LNLN strmm_LNLN
#define STRMM_LTUU strmm_LTUU
#define STRMM_LTUN strmm_LTUN
#define STRMM_LTLU strmm_LTLU
#define STRMM_LTLN strmm_LTLN
#define STRMM_LRUU strmm_LNUU
#define STRMM_LRUN strmm_LNUN
#define STRMM_LRLU strmm_LNLU
#define STRMM_LRLN strmm_LNLN
#define STRMM_LCUU strmm_LTUU
#define STRMM_LCUN strmm_LTUN
#define STRMM_LCLU strmm_LTLU
#define STRMM_LCLN strmm_LTLN
#define STRMM_RNUU strmm_RNUU
#define STRMM_RNUN strmm_RNUN
#define STRMM_RNLU strmm_RNLU
#define STRMM_RNLN strmm_RNLN
#define STRMM_RTUU strmm_RTUU
#define STRMM_RTUN strmm_RTUN
#define STRMM_RTLU strmm_RTLU
#define STRMM_RTLN strmm_RTLN
#define STRMM_RRUU strmm_RNUU
#define STRMM_RRUN strmm_RNUN
#define STRMM_RRLU strmm_RNLU
#define STRMM_RRLN strmm_RNLN
#define STRMM_RCUU strmm_RTUU
#define STRMM_RCUN strmm_RTUN
#define STRMM_RCLU strmm_RTLU
#define STRMM_RCLN strmm_RTLN
#define STRSM_LNUU strsm_LNUU
#define STRSM_LNUN strsm_LNUN
#define STRSM_LNLU strsm_LNLU
#define STRSM_LNLN strsm_LNLN
#define STRSM_LTUU strsm_LTUU
#define STRSM_LTUN strsm_LTUN
#define STRSM_LTLU strsm_LTLU
#define STRSM_LTLN strsm_LTLN
#define STRSM_LRUU strsm_LNUU
#define STRSM_LRUN strsm_LNUN
#define STRSM_LRLU strsm_LNLU
#define STRSM_LRLN strsm_LNLN
#define STRSM_LCUU strsm_LTUU
#define STRSM_LCUN strsm_LTUN
#define STRSM_LCLU strsm_LTLU
#define STRSM_LCLN strsm_LTLN
#define STRSM_RNUU strsm_RNUU
#define STRSM_RNUN strsm_RNUN
#define STRSM_RNLU strsm_RNLU
#define STRSM_RNLN strsm_RNLN
#define STRSM_RTUU strsm_RTUU
#define STRSM_RTUN strsm_RTUN
#define STRSM_RTLU strsm_RTLU
#define STRSM_RTLN strsm_RTLN
#define STRSM_RRUU strsm_RNUU
#define STRSM_RRUN strsm_RNUN
#define STRSM_RRLU strsm_RNLU
#define STRSM_RRLN strsm_RNLN
#define STRSM_RCUU strsm_RTUU
#define STRSM_RCUN strsm_RTUN
#define STRSM_RCLU strsm_RTLU
#define STRSM_RCLN strsm_RTLN
#define SGEMM_THREAD_NN sgemm_thread_nn
#define SGEMM_THREAD_CN sgemm_thread_tn
#define SGEMM_THREAD_TN sgemm_thread_tn
#define SGEMM_THREAD_NC sgemm_thread_nt
#define SGEMM_THREAD_NT sgemm_thread_nt
#define SGEMM_THREAD_CC sgemm_thread_tt
#define SGEMM_THREAD_CT sgemm_thread_tt
#define SGEMM_THREAD_TC sgemm_thread_tt
#define SGEMM_THREAD_TT sgemm_thread_tt
#define SGEMM_THREAD_NR sgemm_thread_nn
#define SGEMM_THREAD_TR sgemm_thread_tn
#define SGEMM_THREAD_CR sgemm_thread_tn
#define SGEMM_THREAD_RN sgemm_thread_nn
#define SGEMM_THREAD_RT sgemm_thread_nt
#define SGEMM_THREAD_RC sgemm_thread_nt
#define SGEMM_THREAD_RR sgemm_thread_nn
#define SSYMM_THREAD_LU ssymm_thread_LU
#define SSYMM_THREAD_LL ssymm_thread_LL
#define SSYMM_THREAD_RU ssymm_thread_RU
#define SSYMM_THREAD_RL ssymm_thread_RL
#define SHEMM_THREAD_LU shemm_thread_LU
#define SHEMM_THREAD_LL shemm_thread_LL
#define SHEMM_THREAD_RU shemm_thread_RU
#define SHEMM_THREAD_RL shemm_thread_RL
#define SSYRK_THREAD_UN ssyrk_thread_UN
#define SSYRK_THREAD_UT ssyrk_thread_UT
#define SSYRK_THREAD_LN ssyrk_thread_LN
#define SSYRK_THREAD_LT ssyrk_thread_LT
#define SSYRK_THREAD_UR ssyrk_thread_UN
#define SSYRK_THREAD_UC ssyrk_thread_UT
#define SSYRK_THREAD_LR ssyrk_thread_LN
#define SSYRK_THREAD_LC ssyrk_thread_LT
#define SHERK_THREAD_UN ssyrk_thread_UN
#define SHERK_THREAD_UT ssyrk_thread_UT
#define SHERK_THREAD_LN ssyrk_thread_LN
#define SHERK_THREAD_LT ssyrk_thread_LT
#define SHERK_THREAD_UR ssyrk_thread_UN
#define SHERK_THREAD_UC ssyrk_thread_UT
#define SHERK_THREAD_LR ssyrk_thread_LN
#define SHERK_THREAD_LC ssyrk_thread_LT
#endif

224
src/NativeWrappers/GotoBlas2/include/common_sparc.h

@ -0,0 +1,224 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_POWER
#define COMMON_POWER
#define MB __asm__ __volatile__ ("nop")
#define WMB __asm__ __volatile__ ("nop")
#ifndef ASSEMBLER
static void __inline blas_lock(volatile unsigned long *address){
long int ret = 1;
do {
while (*address) {YIELDING;};
__asm__ __volatile__(
"ldstub [%1], %0"
: "=&r"(ret)
: "r" (address)
: "memory");
} while (ret);
}
static __inline unsigned long rpcc(void){
unsigned long clocks;
__asm__ __volatile__ ("rd %%tick, %0" : "=r" (clocks));
return clocks;
};
#ifdef __64BIT__
#define RPCC64BIT
#endif
#ifndef __BIG_ENDIAN__
#define __BIG_ENDIAN__
#endif
#ifdef DOUBLE
#define GET_IMAGE(res) __asm__ __volatile__("fmovd %%f2, %0" : "=f"(res) : : "memory")
#else
#define GET_IMAGE(res) __asm__ __volatile__("fmovs %%f1, %0" : "=f"(res) : : "memory")
#endif
#define GET_IMAGE_CANCEL
#ifdef SMP
static __inline int blas_quickdivide(blasint x, blasint y){
return x / y;
}
#endif
#endif
#ifdef ASSEMBLER
#ifndef __64BIT__
#define STACK_START 128
#define SAVESP save %sp, -64, %sp
#else
#define STACK_START 2423
#define SAVESP save %sp, -256, %sp
#endif
#define NOP or %g1, %g1, %g1
#ifdef DOUBLE
#define LDF ldd
#define STF std
#define FADD faddd
#define FMUL fmuld
#define FMOV fmovd
#define FABS fabsd
#define FSUB fsubd
#define FCMP fcmpd
#define FMOVG fmovdg
#define FMOVL fmovdl
#define FSQRT fsqrtd
#define FDIV fdivd
#else
#define LDF ld
#define STF st
#define FADD fadds
#define FMUL fmuls
#define FMOV fmovs
#define FABS fabss
#define FSUB fsubs
#define FCMP fcmps
#define FMOVG fmovsg
#define FMOVL fmovsl
#define FSQRT fsqrts
#define FDIV fdivs
#endif
#define HALT prefetch [%g0], 5
#define FMADDS(rs1, rs2, rs3, rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x37 << 19) | ((rs1) << 14) | ((rs3) << 9) | ( 1 << 5) | (rs2))
#define FMADDD(rs1, rs2, rs3, rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x37 << 19) | ((rs1) << 14) | ((rs3) << 9) | ( 2 << 5) | (rs2))
#define FMSUBS(rs1, rs2, rs3, rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x37 << 19) | ((rs1) << 14) | ((rs3) << 9) | ( 5 << 5) | (rs2))
#define FMSUBD(rs1, rs2, rs3, rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x37 << 19) | ((rs1) << 14) | ((rs3) << 9) | ( 6 << 5) | (rs2))
#define FNMSUBS(rs1, rs2, rs3, rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x37 << 19) | ((rs1) << 14) | ((rs3) << 9) | ( 9 << 5) | (rs2))
#define FNMSUBD(rs1, rs2, rs3, rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x37 << 19) | ((rs1) << 14) | ((rs3) << 9) | (10 << 5) | (rs2))
#define FNMADDS(rs1, rs2, rs3, rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x37 << 19) | ((rs1) << 14) | ((rs3) << 9) | (13 << 5) | (rs2))
#define FNMADDD(rs1, rs2, rs3, rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x37 << 19) | ((rs1) << 14) | ((rs3) << 9) | (14 << 5) | (rs2))
#define FCLRS(rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x36 << 19) | ( 0x61 << 5))
#define FCLRD(rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x36 << 19) | ( 0x60 << 5))
#define FONES(rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x36 << 19) | ( 0x7f << 5))
#define FONED(rd) \
.word ((2 << 30) | ((rd) << 25) | ( 0x36 << 19) | ( 0x7e << 5))
#ifndef DOUBLE
#define FCLR(a) FCLRS(a)
#define FONE(a) FONES(a)
#define FMADD(a, b, c, d) FMADDS(a, b, c, d)
#define FMSUB(a, b, c, d) FMSUBS(a, b, c, d)
#define FNMADD(a, b, c, d) FNMADDS(a, b, c, d)
#define FNMSUB(a, b, c, d) FNMSUBS(a, b, c, d)
#else
#define FCLR(a) FCLRD(a)
#define FONE(a) FONED(a)
#define FMADD(a, b, c, d) FMADDD(a, b, c, d)
#define FMSUB(a, b, c, d) FMSUBD(a, b, c, d)
#define FNMADD(a, b, c, d) FNMADDD(a, b, c, d)
#define FNMSUB(a, b, c, d) FNMSUBD(a, b, c, d)
#endif
#ifndef F_INTERFACE
#define REALNAME ASMNAME
#else
#define REALNAME ASMFNAME
#endif
#ifdef sparc
#define PROLOGUE \
.section ".text"; \
.align 32; \
.global REALNAME;\
.type REALNAME, #function; \
.proc 07; \
REALNAME:;
#define EPILOGUE \
.size REALNAME, .-REALNAME
#endif
#endif
#ifdef sparc
#define SEEK_ADDRESS
#endif
#define BUFFER_SIZE (32 << 20)
#ifndef PAGESIZE
#define PAGESIZE ( 8 << 10)
#endif
#define HUGE_PAGESIZE ( 4 << 20)
#define BASE_ADDRESS (START_ADDRESS - BUFFER_SIZE * MAX_CPU_NUMBER)
#ifndef MAP_ANONYMOUS
#define MAP_ANONYMOUS MAP_ANON
#endif
#endif

192
src/NativeWrappers/GotoBlas2/include/common_thread.h

@ -0,0 +1,192 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_THREAD
#define COMMON_THREAD
/* Basic Thread Debugging */
#undef SMP_DEBUG
/* Thread Timing Debugging */
#undef TIMING_DEBUG
/* Global Parameter */
extern int blas_cpu_number;
extern int blas_num_threads;
extern int blas_omp_linked;
#define BLAS_LEGACY 0x8000U
#define BLAS_PTHREAD 0x4000U
#define BLAS_NODE 0x2000U
#define BLAS_PREC 0x0003U
#define BLAS_SINGLE 0x0000U
#define BLAS_DOUBLE 0x0001U
#define BLAS_XDOUBLE 0x0002U
#define BLAS_REAL 0x0000U
#define BLAS_COMPLEX 0x0004U
#define BLAS_TRANSA 0x0030U /* 2bit */
#define BLAS_TRANSA_N 0x0000U
#define BLAS_TRANSA_T 0x0010U
#define BLAS_TRANSA_R 0x0020U
#define BLAS_TRANSA_C 0x0030U
#define BLAS_TRANSA_SHIFT 4
#define BLAS_TRANSB 0x0300U /* 2bit */
#define BLAS_TRANSB_N 0x0000U
#define BLAS_TRANSB_T 0x0100U
#define BLAS_TRANSB_R 0x0200U
#define BLAS_TRANSB_C 0x0300U
#define BLAS_TRANSB_SHIFT 8
#define BLAS_RSIDE 0x0400U
#define BLAS_RSIDE_SHIFT 10
#define BLAS_UPLO 0x0800U
#define BLAS_UPLO_SHIFT 11
#define BLAS_STATUS_NOTYET 0
#define BLAS_STATUS_QUEUED 1
#define BLAS_STATUS_RUNNING 2
#define BLAS_STATUS_FINISHED 4
typedef struct blas_queue {
void *routine;
BLASLONG position;
BLASLONG assigned;
blas_arg_t *args;
void *range_m;
void *range_n;
void *sa, *sb;
struct blas_queue *next;
#if defined( __WIN32__) || defined(__CYGWIN32__)
CRITICAL_SECTION lock;
HANDLE finish;
#else
pthread_mutex_t lock;
pthread_cond_t finished;
#endif
int mode, status;
#ifdef CONSISTENT_FPCSR
unsigned int sse_mode, x87_mode;
#endif
#ifdef SMP_DEBUG
int num;
#endif
#ifdef TIMING_DEBUG
unsigned int clocks;
#endif
} blas_queue_t;
#ifdef SMP_SERVER
extern int blas_server_avail;
static __inline int num_cpu_avail(int level) {
if ((blas_cpu_number == 1)
#ifdef USE_OPENMP
|| omp_in_parallel()
#endif
) return 1;
return blas_cpu_number;
}
static __inline void blas_queue_init(blas_queue_t *queue){
queue -> sa = NULL;
queue -> sb = NULL;
queue-> next = NULL;
}
int blas_thread_init(void);
int BLASFUNC(blas_thread_shutdown)(void);
int exec_blas(BLASLONG, blas_queue_t *);
int exec_blas_async(BLASLONG, blas_queue_t *);
int exec_blas_async_wait(BLASLONG, blas_queue_t *);
#else
int exec_blas_async(BLASLONG num_cpu, blas_param_t *param, pthread_t *);
int exec_blas_async_wait(BLASLONG num_cpu, pthread_t *blas_threads);
int exec_blas(BLASLONG num_cpu, blas_param_t *param, void *buffer);
#endif
#ifndef ASSEMBLER
int blas_level1_thread(int mode, BLASLONG m, BLASLONG n, BLASLONG k, void *alpha,
void *a, BLASLONG lda,
void *b, BLASLONG ldb,
void *c, BLASLONG ldc, int (*function)(), int threads);
int gemm_thread_m (int mode, blas_arg_t *, BLASLONG *, BLASLONG *, int (*function)(), void *, void *, BLASLONG);
int gemm_thread_n (int mode, blas_arg_t *, BLASLONG *, BLASLONG *, int (*function)(), void *, void *, BLASLONG);
int gemm_thread_mn(int mode, blas_arg_t *, BLASLONG *, BLASLONG *, int (*function)(), void *, void *, BLASLONG);
int gemm_thread_variable(int mode, blas_arg_t *, BLASLONG *, BLASLONG *, int (*function)(), void *, void *, BLASLONG, BLASLONG);
int trsm_thread(int mode, BLASLONG m, BLASLONG n,
double alpha_r, double alpha_i,
void *a, BLASLONG lda,
void *c, BLASLONG ldc, int (*function)(), void *buffer);
int syrk_thread(int mode, blas_arg_t *, BLASLONG *, BLASLONG *, int (*function)(), void *, void *, BLASLONG);
int beta_thread(int mode, BLASLONG m, BLASLONG n,
double alpha_r, double alpha_i,
void *c, BLASLONG ldc, int (*fuction)());
int getrf_thread(int mode, BLASLONG m, BLASLONG n, BLASLONG k,
void *offsetA, BLASLONG lda,
void *offsetB, BLASLONG jb,
void *ipiv, BLASLONG offset, int (*function)(), void *buffer);
#endif /* ENDIF ASSEMBLER */
#endif

611
src/NativeWrappers/GotoBlas2/include/common_x.h

@ -0,0 +1,611 @@
#ifndef COMMON_X_H
#define COMMON_X_H
#ifndef DYNAMIC_ARCH
#define XAMAX_K xamax_k
#define XAMIN_K xamin_k
#define XMAX_K xmax_k
#define XMIN_K xmin_k
#define IXAMAX_K ixamax_k
#define IXAMIN_K ixamin_k
#define IXMAX_K ixmax_k
#define IXMIN_K ixmin_k
#define XASUM_K xasum_k
#define XAXPYU_K xaxpy_k
#define XAXPYC_K xaxpyc_k
#define XCOPY_K xcopy_k
#define XDOTU_K xdotu_k
#define XDOTC_K xdotc_k
#define XNRM2_K xnrm2_k
#define XSCAL_K xscal_k
#define XSWAP_K xswap_k
#define XROT_K xqrot_k
#define XGEMV_N xgemv_n
#define XGEMV_T xgemv_t
#define XGEMV_R xgemv_r
#define XGEMV_C xgemv_c
#define XGEMV_O xgemv_o
#define XGEMV_U xgemv_u
#define XGEMV_S xgemv_s
#define XGEMV_D xgemv_d
#define XGERU_K xgeru_k
#define XGERC_K xgerc_k
#define XGERV_K xgerv_k
#define XGERD_K xgerd_k
#define XSYMV_U xsymv_U
#define XSYMV_L xsymv_L
#define XHEMV_U xhemv_U
#define XHEMV_L xhemv_L
#define XHEMV_V xhemv_V
#define XHEMV_M xhemv_M
#define XSYMV_THREAD_U xsymv_thread_U
#define XSYMV_THREAD_L xsymv_thread_L
#define XHEMV_THREAD_U xhemv_thread_U
#define XHEMV_THREAD_L xhemv_thread_L
#define XHEMV_THREAD_V xhemv_thread_V
#define XHEMV_THREAD_M xhemv_thread_M
#define XGEMM_ONCOPY xgemm_oncopy
#define XGEMM_OTCOPY xgemm_otcopy
#if XGEMM_DEFAULT_UNROLL_M == XGEMM_DEFAULT_UNROLL_N
#define XGEMM_INCOPY xgemm_oncopy
#define XGEMM_ITCOPY xgemm_otcopy
#else
#define XGEMM_INCOPY xgemm_incopy
#define XGEMM_ITCOPY xgemm_itcopy
#endif
#define XTRMM_OUNUCOPY xtrmm_ounucopy
#define XTRMM_OUNNCOPY xtrmm_ounncopy
#define XTRMM_OUTUCOPY xtrmm_outucopy
#define XTRMM_OUTNCOPY xtrmm_outncopy
#define XTRMM_OLNUCOPY xtrmm_olnucopy
#define XTRMM_OLNNCOPY xtrmm_olnncopy
#define XTRMM_OLTUCOPY xtrmm_oltucopy
#define XTRMM_OLTNCOPY xtrmm_oltncopy
#define XTRSM_OUNUCOPY xtrsm_ounucopy
#define XTRSM_OUNNCOPY xtrsm_ounncopy
#define XTRSM_OUTUCOPY xtrsm_outucopy
#define XTRSM_OUTNCOPY xtrsm_outncopy
#define XTRSM_OLNUCOPY xtrsm_olnucopy
#define XTRSM_OLNNCOPY xtrsm_olnncopy
#define XTRSM_OLTUCOPY xtrsm_oltucopy
#define XTRSM_OLTNCOPY xtrsm_oltncopy
#if XGEMM_DEFAULT_UNROLL_M == XGEMM_DEFAULT_UNROLL_N
#define XTRMM_IUNUCOPY xtrmm_ounucopy
#define XTRMM_IUNNCOPY xtrmm_ounncopy
#define XTRMM_IUTUCOPY xtrmm_outucopy
#define XTRMM_IUTNCOPY xtrmm_outncopy
#define XTRMM_ILNUCOPY xtrmm_olnucopy
#define XTRMM_ILNNCOPY xtrmm_olnncopy
#define XTRMM_ILTUCOPY xtrmm_oltucopy
#define XTRMM_ILTNCOPY xtrmm_oltncopy
#define XTRSM_IUNUCOPY xtrsm_ounucopy
#define XTRSM_IUNNCOPY xtrsm_ounncopy
#define XTRSM_IUTUCOPY xtrsm_outucopy
#define XTRSM_IUTNCOPY xtrsm_outncopy
#define XTRSM_ILNUCOPY xtrsm_olnucopy
#define XTRSM_ILNNCOPY xtrsm_olnncopy
#define XTRSM_ILTUCOPY xtrsm_oltucopy
#define XTRSM_ILTNCOPY xtrsm_oltncopy
#else
#define XTRMM_IUNUCOPY xtrmm_iunucopy
#define XTRMM_IUNNCOPY xtrmm_iunncopy
#define XTRMM_IUTUCOPY xtrmm_iutucopy
#define XTRMM_IUTNCOPY xtrmm_iutncopy
#define XTRMM_ILNUCOPY xtrmm_ilnucopy
#define XTRMM_ILNNCOPY xtrmm_ilnncopy
#define XTRMM_ILTUCOPY xtrmm_iltucopy
#define XTRMM_ILTNCOPY xtrmm_iltncopy
#define XTRSM_IUNUCOPY xtrsm_iunucopy
#define XTRSM_IUNNCOPY xtrsm_iunncopy
#define XTRSM_IUTUCOPY xtrsm_iutucopy
#define XTRSM_IUTNCOPY xtrsm_iutncopy
#define XTRSM_ILNUCOPY xtrsm_ilnucopy
#define XTRSM_ILNNCOPY xtrsm_ilnncopy
#define XTRSM_ILTUCOPY xtrsm_iltucopy
#define XTRSM_ILTNCOPY xtrsm_iltncopy
#endif
#define XGEMM_BETA xgemm_beta
#define XGEMM_KERNEL_N xgemm_kernel_n
#define XGEMM_KERNEL_L xgemm_kernel_l
#define XGEMM_KERNEL_R xgemm_kernel_r
#define XGEMM_KERNEL_B xgemm_kernel_b
#define XTRMM_KERNEL_LN xtrmm_kernel_LN
#define XTRMM_KERNEL_LT xtrmm_kernel_LT
#define XTRMM_KERNEL_LR xtrmm_kernel_LR
#define XTRMM_KERNEL_LC xtrmm_kernel_LC
#define XTRMM_KERNEL_RN xtrmm_kernel_RN
#define XTRMM_KERNEL_RT xtrmm_kernel_RT
#define XTRMM_KERNEL_RR xtrmm_kernel_RR
#define XTRMM_KERNEL_RC xtrmm_kernel_RC
#define XTRSM_KERNEL_LN xtrsm_kernel_LN
#define XTRSM_KERNEL_LT xtrsm_kernel_LT
#define XTRSM_KERNEL_LR xtrsm_kernel_LR
#define XTRSM_KERNEL_LC xtrsm_kernel_LC
#define XTRSM_KERNEL_RN xtrsm_kernel_RN
#define XTRSM_KERNEL_RT xtrsm_kernel_RT
#define XTRSM_KERNEL_RR xtrsm_kernel_RR
#define XTRSM_KERNEL_RC xtrsm_kernel_RC
#define XSYMM_OUTCOPY xsymm_outcopy
#define XSYMM_OLTCOPY xsymm_oltcopy
#if XGEMM_DEFAULT_UNROLL_M == XGEMM_DEFAULT_UNROLL_N
#define XSYMM_IUTCOPY xsymm_outcopy
#define XSYMM_ILTCOPY xsymm_oltcopy
#else
#define XSYMM_IUTCOPY xsymm_iutcopy
#define XSYMM_ILTCOPY xsymm_iltcopy
#endif
#define XHEMM_OUTCOPY xhemm_outcopy
#define XHEMM_OLTCOPY xhemm_oltcopy
#if XGEMM_DEFAULT_UNROLL_M == XGEMM_DEFAULT_UNROLL_N
#define XHEMM_IUTCOPY xhemm_outcopy
#define XHEMM_ILTCOPY xhemm_oltcopy
#else
#define XHEMM_IUTCOPY xhemm_iutcopy
#define XHEMM_ILTCOPY xhemm_iltcopy
#endif
#define XGEMM3M_ONCOPYB xgemm3m_oncopyb
#define XGEMM3M_ONCOPYR xgemm3m_oncopyr
#define XGEMM3M_ONCOPYI xgemm3m_oncopyi
#define XGEMM3M_OTCOPYB xgemm3m_otcopyb
#define XGEMM3M_OTCOPYR xgemm3m_otcopyr
#define XGEMM3M_OTCOPYI xgemm3m_otcopyi
#define XGEMM3M_INCOPYB xgemm3m_incopyb
#define XGEMM3M_INCOPYR xgemm3m_incopyr
#define XGEMM3M_INCOPYI xgemm3m_incopyi
#define XGEMM3M_ITCOPYB xgemm3m_itcopyb
#define XGEMM3M_ITCOPYR xgemm3m_itcopyr
#define XGEMM3M_ITCOPYI xgemm3m_itcopyi
#define XSYMM3M_ILCOPYB xsymm3m_ilcopyb
#define XSYMM3M_IUCOPYB xsymm3m_iucopyb
#define XSYMM3M_ILCOPYR xsymm3m_ilcopyr
#define XSYMM3M_IUCOPYR xsymm3m_iucopyr
#define XSYMM3M_ILCOPYI xsymm3m_ilcopyi
#define XSYMM3M_IUCOPYI xsymm3m_iucopyi
#define XSYMM3M_OLCOPYB xsymm3m_olcopyb
#define XSYMM3M_OUCOPYB xsymm3m_oucopyb
#define XSYMM3M_OLCOPYR xsymm3m_olcopyr
#define XSYMM3M_OUCOPYR xsymm3m_oucopyr
#define XSYMM3M_OLCOPYI xsymm3m_olcopyi
#define XSYMM3M_OUCOPYI xsymm3m_oucopyi
#define XHEMM3M_ILCOPYB xhemm3m_ilcopyb
#define XHEMM3M_IUCOPYB xhemm3m_iucopyb
#define XHEMM3M_ILCOPYR xhemm3m_ilcopyr
#define XHEMM3M_IUCOPYR xhemm3m_iucopyr
#define XHEMM3M_ILCOPYI xhemm3m_ilcopyi
#define XHEMM3M_IUCOPYI xhemm3m_iucopyi
#define XHEMM3M_OLCOPYB xhemm3m_olcopyb
#define XHEMM3M_OUCOPYB xhemm3m_oucopyb
#define XHEMM3M_OLCOPYR xhemm3m_olcopyr
#define XHEMM3M_OUCOPYR xhemm3m_oucopyr
#define XHEMM3M_OLCOPYI xhemm3m_olcopyi
#define XHEMM3M_OUCOPYI xhemm3m_oucopyi
#define XGEMM3M_KERNEL xgemm3m_kernel
#define XNEG_TCOPY xneg_tcopy
#define XLASWP_NCOPY xlaswp_ncopy
#else
#define XAMAX_K gotoblas -> xamax_k
#define XAMIN_K gotoblas -> xamin_k
#define XMAX_K gotoblas -> xmax_k
#define XMIN_K gotoblas -> xmin_k
#define IXAMAX_K gotoblas -> ixamax_k
#define IXAMIN_K gotoblas -> ixamin_k
#define IXMAX_K gotoblas -> ixmax_k
#define IXMIN_K gotoblas -> ixmin_k
#define XASUM_K gotoblas -> xasum_k
#define XAXPYU_K gotoblas -> xaxpy_k
#define XAXPYC_K gotoblas -> xaxpyc_k
#define XCOPY_K gotoblas -> xcopy_k
#define XDOTU_K gotoblas -> xdotu_k
#define XDOTC_K gotoblas -> xdotc_k
#define XNRM2_K gotoblas -> xnrm2_k
#define XSCAL_K gotoblas -> xscal_k
#define XSWAP_K gotoblas -> xswap_k
#define XROT_K gotoblas -> xqrot_k
#define XGEMV_N gotoblas -> xgemv_n
#define XGEMV_T gotoblas -> xgemv_t
#define XGEMV_R gotoblas -> xgemv_r
#define XGEMV_C gotoblas -> xgemv_c
#define XGEMV_O gotoblas -> xgemv_o
#define XGEMV_U gotoblas -> xgemv_u
#define XGEMV_S gotoblas -> xgemv_s
#define XGEMV_D gotoblas -> xgemv_d
#define XGERU_K gotoblas -> xgeru_k
#define XGERC_K gotoblas -> xgerc_k
#define XGERV_K gotoblas -> xgerv_k
#define XGERD_K gotoblas -> xgerd_k
#define XSYMV_U gotoblas -> xsymv_U
#define XSYMV_L gotoblas -> xsymv_L
#define XHEMV_U gotoblas -> xhemv_U
#define XHEMV_L gotoblas -> xhemv_L
#define XHEMV_V gotoblas -> xhemv_V
#define XHEMV_M gotoblas -> xhemv_M
#define XSYMV_THREAD_U xsymv_thread_U
#define XSYMV_THREAD_L xsymv_thread_L
#define XHEMV_THREAD_U xhemv_thread_U
#define XHEMV_THREAD_L xhemv_thread_L
#define XHEMV_THREAD_V xhemv_thread_V
#define XHEMV_THREAD_M xhemv_thread_M
#define XGEMM_ONCOPY gotoblas -> xgemm_oncopy
#define XGEMM_OTCOPY gotoblas -> xgemm_otcopy
#define XGEMM_INCOPY gotoblas -> xgemm_incopy
#define XGEMM_ITCOPY gotoblas -> xgemm_itcopy
#define XTRMM_OUNUCOPY gotoblas -> xtrmm_ounucopy
#define XTRMM_OUTUCOPY gotoblas -> xtrmm_outucopy
#define XTRMM_OLNUCOPY gotoblas -> xtrmm_olnucopy
#define XTRMM_OLTUCOPY gotoblas -> xtrmm_oltucopy
#define XTRSM_OUNUCOPY gotoblas -> xtrsm_ounucopy
#define XTRSM_OUTUCOPY gotoblas -> xtrsm_outucopy
#define XTRSM_OLNUCOPY gotoblas -> xtrsm_olnucopy
#define XTRSM_OLTUCOPY gotoblas -> xtrsm_oltucopy
#define XTRMM_IUNUCOPY gotoblas -> xtrmm_iunucopy
#define XTRMM_IUTUCOPY gotoblas -> xtrmm_iutucopy
#define XTRMM_ILNUCOPY gotoblas -> xtrmm_ilnucopy
#define XTRMM_ILTUCOPY gotoblas -> xtrmm_iltucopy
#define XTRSM_IUNUCOPY gotoblas -> xtrsm_iunucopy
#define XTRSM_IUTUCOPY gotoblas -> xtrsm_iutucopy
#define XTRSM_ILNUCOPY gotoblas -> xtrsm_ilnucopy
#define XTRSM_ILTUCOPY gotoblas -> xtrsm_iltucopy
#define XTRMM_OUNNCOPY gotoblas -> xtrmm_ounncopy
#define XTRMM_OUTNCOPY gotoblas -> xtrmm_outncopy
#define XTRMM_OLNNCOPY gotoblas -> xtrmm_olnncopy
#define XTRMM_OLTNCOPY gotoblas -> xtrmm_oltncopy
#define XTRSM_OUNNCOPY gotoblas -> xtrsm_ounncopy
#define XTRSM_OUTNCOPY gotoblas -> xtrsm_outncopy
#define XTRSM_OLNNCOPY gotoblas -> xtrsm_olnncopy
#define XTRSM_OLTNCOPY gotoblas -> xtrsm_oltncopy
#define XTRMM_IUNNCOPY gotoblas -> xtrmm_iunncopy
#define XTRMM_IUTNCOPY gotoblas -> xtrmm_iutncopy
#define XTRMM_ILNNCOPY gotoblas -> xtrmm_ilnncopy
#define XTRMM_ILTNCOPY gotoblas -> xtrmm_iltncopy
#define XTRSM_IUNNCOPY gotoblas -> xtrsm_iunncopy
#define XTRSM_IUTNCOPY gotoblas -> xtrsm_iutncopy
#define XTRSM_ILNNCOPY gotoblas -> xtrsm_ilnncopy
#define XTRSM_ILTNCOPY gotoblas -> xtrsm_iltncopy
#define XGEMM_BETA gotoblas -> xgemm_beta
#define XGEMM_KERNEL_N gotoblas -> xgemm_kernel_n
#define XGEMM_KERNEL_L gotoblas -> xgemm_kernel_l
#define XGEMM_KERNEL_R gotoblas -> xgemm_kernel_r
#define XGEMM_KERNEL_B gotoblas -> xgemm_kernel_b
#define XTRMM_KERNEL_LN gotoblas -> xtrmm_kernel_LN
#define XTRMM_KERNEL_LT gotoblas -> xtrmm_kernel_LT
#define XTRMM_KERNEL_LR gotoblas -> xtrmm_kernel_LR
#define XTRMM_KERNEL_LC gotoblas -> xtrmm_kernel_LC
#define XTRMM_KERNEL_RN gotoblas -> xtrmm_kernel_RN
#define XTRMM_KERNEL_RT gotoblas -> xtrmm_kernel_RT
#define XTRMM_KERNEL_RR gotoblas -> xtrmm_kernel_RR
#define XTRMM_KERNEL_RC gotoblas -> xtrmm_kernel_RC
#define XTRSM_KERNEL_LN gotoblas -> xtrsm_kernel_LN
#define XTRSM_KERNEL_LT gotoblas -> xtrsm_kernel_LT
#define XTRSM_KERNEL_LR gotoblas -> xtrsm_kernel_LR
#define XTRSM_KERNEL_LC gotoblas -> xtrsm_kernel_LC
#define XTRSM_KERNEL_RN gotoblas -> xtrsm_kernel_RN
#define XTRSM_KERNEL_RT gotoblas -> xtrsm_kernel_RT
#define XTRSM_KERNEL_RR gotoblas -> xtrsm_kernel_RR
#define XTRSM_KERNEL_RC gotoblas -> xtrsm_kernel_RC
#define XSYMM_IUTCOPY gotoblas -> xsymm_iutcopy
#define XSYMM_ILTCOPY gotoblas -> xsymm_iltcopy
#define XSYMM_OUTCOPY gotoblas -> xsymm_outcopy
#define XSYMM_OLTCOPY gotoblas -> xsymm_oltcopy
#define XHEMM_OUTCOPY gotoblas -> xhemm_outcopy
#define XHEMM_OLTCOPY gotoblas -> xhemm_oltcopy
#define XHEMM_IUTCOPY gotoblas -> xhemm_iutcopy
#define XHEMM_ILTCOPY gotoblas -> xhemm_iltcopy
#define XGEMM3M_ONCOPYB gotoblas -> xgemm3m_oncopyb
#define XGEMM3M_ONCOPYR gotoblas -> xgemm3m_oncopyr
#define XGEMM3M_ONCOPYI gotoblas -> xgemm3m_oncopyi
#define XGEMM3M_OTCOPYB gotoblas -> xgemm3m_otcopyb
#define XGEMM3M_OTCOPYR gotoblas -> xgemm3m_otcopyr
#define XGEMM3M_OTCOPYI gotoblas -> xgemm3m_otcopyi
#define XGEMM3M_INCOPYB gotoblas -> xgemm3m_incopyb
#define XGEMM3M_INCOPYR gotoblas -> xgemm3m_incopyr
#define XGEMM3M_INCOPYI gotoblas -> xgemm3m_incopyi
#define XGEMM3M_ITCOPYB gotoblas -> xgemm3m_itcopyb
#define XGEMM3M_ITCOPYR gotoblas -> xgemm3m_itcopyr
#define XGEMM3M_ITCOPYI gotoblas -> xgemm3m_itcopyi
#define XSYMM3M_ILCOPYB gotoblas -> xsymm3m_ilcopyb
#define XSYMM3M_IUCOPYB gotoblas -> xsymm3m_iucopyb
#define XSYMM3M_ILCOPYR gotoblas -> xsymm3m_ilcopyr
#define XSYMM3M_IUCOPYR gotoblas -> xsymm3m_iucopyr
#define XSYMM3M_ILCOPYI gotoblas -> xsymm3m_ilcopyi
#define XSYMM3M_IUCOPYI gotoblas -> xsymm3m_iucopyi
#define XSYMM3M_OLCOPYB gotoblas -> xsymm3m_olcopyb
#define XSYMM3M_OUCOPYB gotoblas -> xsymm3m_oucopyb
#define XSYMM3M_OLCOPYR gotoblas -> xsymm3m_olcopyr
#define XSYMM3M_OUCOPYR gotoblas -> xsymm3m_oucopyr
#define XSYMM3M_OLCOPYI gotoblas -> xsymm3m_olcopyi
#define XSYMM3M_OUCOPYI gotoblas -> xsymm3m_oucopyi
#define XHEMM3M_ILCOPYB gotoblas -> xhemm3m_ilcopyb
#define XHEMM3M_IUCOPYB gotoblas -> xhemm3m_iucopyb
#define XHEMM3M_ILCOPYR gotoblas -> xhemm3m_ilcopyr
#define XHEMM3M_IUCOPYR gotoblas -> xhemm3m_iucopyr
#define XHEMM3M_ILCOPYI gotoblas -> xhemm3m_ilcopyi
#define XHEMM3M_IUCOPYI gotoblas -> xhemm3m_iucopyi
#define XHEMM3M_OLCOPYB gotoblas -> xhemm3m_olcopyb
#define XHEMM3M_OUCOPYB gotoblas -> xhemm3m_oucopyb
#define XHEMM3M_OLCOPYR gotoblas -> xhemm3m_olcopyr
#define XHEMM3M_OUCOPYR gotoblas -> xhemm3m_oucopyr
#define XHEMM3M_OLCOPYI gotoblas -> xhemm3m_olcopyi
#define XHEMM3M_OUCOPYI gotoblas -> xhemm3m_oucopyi
#define XGEMM3M_KERNEL gotoblas -> xgemm3m_kernel
#define XNEG_TCOPY gotoblas -> xneg_tcopy
#define XLASWP_NCOPY gotoblas -> xlaswp_ncopy
#endif
#define XGEMM_NN xgemm_nn
#define XGEMM_CN xgemm_cn
#define XGEMM_TN xgemm_tn
#define XGEMM_NC xgemm_nc
#define XGEMM_NT xgemm_nt
#define XGEMM_CC xgemm_cc
#define XGEMM_CT xgemm_ct
#define XGEMM_TC xgemm_tc
#define XGEMM_TT xgemm_tt
#define XGEMM_NR xgemm_nr
#define XGEMM_TR xgemm_tr
#define XGEMM_CR xgemm_cr
#define XGEMM_RN xgemm_rn
#define XGEMM_RT xgemm_rt
#define XGEMM_RC xgemm_rc
#define XGEMM_RR xgemm_rr
#define XSYMM_LU xsymm_LU
#define XSYMM_LL xsymm_LL
#define XSYMM_RU xsymm_RU
#define XSYMM_RL xsymm_RL
#define XHEMM_LU xhemm_LU
#define XHEMM_LL xhemm_LL
#define XHEMM_RU xhemm_RU
#define XHEMM_RL xhemm_RL
#define XSYRK_UN xsyrk_UN
#define XSYRK_UT xsyrk_UT
#define XSYRK_LN xsyrk_LN
#define XSYRK_LT xsyrk_LT
#define XSYRK_UR xsyrk_UN
#define XSYRK_UC xsyrk_UT
#define XSYRK_LR xsyrk_LN
#define XSYRK_LC xsyrk_LT
#define XSYRK_KERNEL_U xsyrk_kernel_U
#define XSYRK_KERNEL_L xsyrk_kernel_L
#define XHERK_UN xherk_UN
#define XHERK_LN xherk_LN
#define XHERK_UC xherk_UC
#define XHERK_LC xherk_LC
#define XHER2K_UN xher2k_UN
#define XHER2K_LN xher2k_LN
#define XHER2K_UC xher2k_UC
#define XHER2K_LC xher2k_LC
#define XSYR2K_UN xsyr2k_UN
#define XSYR2K_UT xsyr2k_UT
#define XSYR2K_LN xsyr2k_LN
#define XSYR2K_LT xsyr2k_LT
#define XSYR2K_UR xsyr2k_UN
#define XSYR2K_UC xsyr2k_UT
#define XSYR2K_LR xsyr2k_LN
#define XSYR2K_LC xsyr2k_LT
#define XSYR2K_KERNEL_U xsyr2k_kernel_U
#define XSYR2K_KERNEL_L xsyr2k_kernel_L
#define XTRMM_LNUU xtrmm_LNUU
#define XTRMM_LNUN xtrmm_LNUN
#define XTRMM_LNLU xtrmm_LNLU
#define XTRMM_LNLN xtrmm_LNLN
#define XTRMM_LTUU xtrmm_LTUU
#define XTRMM_LTUN xtrmm_LTUN
#define XTRMM_LTLU xtrmm_LTLU
#define XTRMM_LTLN xtrmm_LTLN
#define XTRMM_LRUU xtrmm_LRUU
#define XTRMM_LRUN xtrmm_LRUN
#define XTRMM_LRLU xtrmm_LRLU
#define XTRMM_LRLN xtrmm_LRLN
#define XTRMM_LCUU xtrmm_LCUU
#define XTRMM_LCUN xtrmm_LCUN
#define XTRMM_LCLU xtrmm_LCLU
#define XTRMM_LCLN xtrmm_LCLN
#define XTRMM_RNUU xtrmm_RNUU
#define XTRMM_RNUN xtrmm_RNUN
#define XTRMM_RNLU xtrmm_RNLU
#define XTRMM_RNLN xtrmm_RNLN
#define XTRMM_RTUU xtrmm_RTUU
#define XTRMM_RTUN xtrmm_RTUN
#define XTRMM_RTLU xtrmm_RTLU
#define XTRMM_RTLN xtrmm_RTLN
#define XTRMM_RRUU xtrmm_RRUU
#define XTRMM_RRUN xtrmm_RRUN
#define XTRMM_RRLU xtrmm_RRLU
#define XTRMM_RRLN xtrmm_RRLN
#define XTRMM_RCUU xtrmm_RCUU
#define XTRMM_RCUN xtrmm_RCUN
#define XTRMM_RCLU xtrmm_RCLU
#define XTRMM_RCLN xtrmm_RCLN
#define XTRSM_LNUU xtrsm_LNUU
#define XTRSM_LNUN xtrsm_LNUN
#define XTRSM_LNLU xtrsm_LNLU
#define XTRSM_LNLN xtrsm_LNLN
#define XTRSM_LTUU xtrsm_LTUU
#define XTRSM_LTUN xtrsm_LTUN
#define XTRSM_LTLU xtrsm_LTLU
#define XTRSM_LTLN xtrsm_LTLN
#define XTRSM_LRUU xtrsm_LRUU
#define XTRSM_LRUN xtrsm_LRUN
#define XTRSM_LRLU xtrsm_LRLU
#define XTRSM_LRLN xtrsm_LRLN
#define XTRSM_LCUU xtrsm_LCUU
#define XTRSM_LCUN xtrsm_LCUN
#define XTRSM_LCLU xtrsm_LCLU
#define XTRSM_LCLN xtrsm_LCLN
#define XTRSM_RNUU xtrsm_RNUU
#define XTRSM_RNUN xtrsm_RNUN
#define XTRSM_RNLU xtrsm_RNLU
#define XTRSM_RNLN xtrsm_RNLN
#define XTRSM_RTUU xtrsm_RTUU
#define XTRSM_RTUN xtrsm_RTUN
#define XTRSM_RTLU xtrsm_RTLU
#define XTRSM_RTLN xtrsm_RTLN
#define XTRSM_RRUU xtrsm_RRUU
#define XTRSM_RRUN xtrsm_RRUN
#define XTRSM_RRLU xtrsm_RRLU
#define XTRSM_RRLN xtrsm_RRLN
#define XTRSM_RCUU xtrsm_RCUU
#define XTRSM_RCUN xtrsm_RCUN
#define XTRSM_RCLU xtrsm_RCLU
#define XTRSM_RCLN xtrsm_RCLN
#define XGEMM_THREAD_NN xgemm_thread_nn
#define XGEMM_THREAD_CN xgemm_thread_cn
#define XGEMM_THREAD_TN xgemm_thread_tn
#define XGEMM_THREAD_NC xgemm_thread_nc
#define XGEMM_THREAD_NT xgemm_thread_nt
#define XGEMM_THREAD_CC xgemm_thread_cc
#define XGEMM_THREAD_CT xgemm_thread_ct
#define XGEMM_THREAD_TC xgemm_thread_tc
#define XGEMM_THREAD_TT xgemm_thread_tt
#define XGEMM_THREAD_NR xgemm_thread_nr
#define XGEMM_THREAD_TR xgemm_thread_tr
#define XGEMM_THREAD_CR xgemm_thread_cr
#define XGEMM_THREAD_RN xgemm_thread_rn
#define XGEMM_THREAD_RT xgemm_thread_rt
#define XGEMM_THREAD_RC xgemm_thread_rc
#define XGEMM_THREAD_RR xgemm_thread_rr
#define XSYMM_THREAD_LU xsymm_thread_LU
#define XSYMM_THREAD_LL xsymm_thread_LL
#define XSYMM_THREAD_RU xsymm_thread_RU
#define XSYMM_THREAD_RL xsymm_thread_RL
#define XHEMM_THREAD_LU xhemm_thread_LU
#define XHEMM_THREAD_LL xhemm_thread_LL
#define XHEMM_THREAD_RU xhemm_thread_RU
#define XHEMM_THREAD_RL xhemm_thread_RL
#define XSYRK_THREAD_UN xsyrk_thread_UN
#define XSYRK_THREAD_UT xsyrk_thread_UT
#define XSYRK_THREAD_LN xsyrk_thread_LN
#define XSYRK_THREAD_LT xsyrk_thread_LT
#define XSYRK_THREAD_UR xsyrk_thread_UN
#define XSYRK_THREAD_UC xsyrk_thread_UT
#define XSYRK_THREAD_LR xsyrk_thread_LN
#define XSYRK_THREAD_LC xsyrk_thread_LT
#define XHERK_THREAD_UN xherk_thread_UN
#define XHERK_THREAD_UT xherk_thread_UT
#define XHERK_THREAD_LN xherk_thread_LN
#define XHERK_THREAD_LT xherk_thread_LT
#define XHERK_THREAD_UR xherk_thread_UR
#define XHERK_THREAD_UC xherk_thread_UC
#define XHERK_THREAD_LR xherk_thread_LR
#define XHERK_THREAD_LC xherk_thread_LC
#define XGEMM3M_NN xgemm3m_nn
#define XGEMM3M_CN xgemm3m_cn
#define XGEMM3M_TN xgemm3m_tn
#define XGEMM3M_NC xgemm3m_nc
#define XGEMM3M_NT xgemm3m_nt
#define XGEMM3M_CC xgemm3m_cc
#define XGEMM3M_CT xgemm3m_ct
#define XGEMM3M_TC xgemm3m_tc
#define XGEMM3M_TT xgemm3m_tt
#define XGEMM3M_NR xgemm3m_nr
#define XGEMM3M_TR xgemm3m_tr
#define XGEMM3M_CR xgemm3m_cr
#define XGEMM3M_RN xgemm3m_rn
#define XGEMM3M_RT xgemm3m_rt
#define XGEMM3M_RC xgemm3m_rc
#define XGEMM3M_RR xgemm3m_rr
#define XGEMM3M_THREAD_NN xgemm3m_thread_nn
#define XGEMM3M_THREAD_CN xgemm3m_thread_cn
#define XGEMM3M_THREAD_TN xgemm3m_thread_tn
#define XGEMM3M_THREAD_NC xgemm3m_thread_nc
#define XGEMM3M_THREAD_NT xgemm3m_thread_nt
#define XGEMM3M_THREAD_CC xgemm3m_thread_cc
#define XGEMM3M_THREAD_CT xgemm3m_thread_ct
#define XGEMM3M_THREAD_TC xgemm3m_thread_tc
#define XGEMM3M_THREAD_TT xgemm3m_thread_tt
#define XGEMM3M_THREAD_NR xgemm3m_thread_nr
#define XGEMM3M_THREAD_TR xgemm3m_thread_tr
#define XGEMM3M_THREAD_CR xgemm3m_thread_cr
#define XGEMM3M_THREAD_RN xgemm3m_thread_rn
#define XGEMM3M_THREAD_RT xgemm3m_thread_rt
#define XGEMM3M_THREAD_RC xgemm3m_thread_rc
#define XGEMM3M_THREAD_RR xgemm3m_thread_rr
#define XSYMM3M_LU xsymm3m_LU
#define XSYMM3M_LL xsymm3m_LL
#define XSYMM3M_RU xsymm3m_RU
#define XSYMM3M_RL xsymm3m_RL
#define XSYMM3M_THREAD_LU xsymm3m_thread_LU
#define XSYMM3M_THREAD_LL xsymm3m_thread_LL
#define XSYMM3M_THREAD_RU xsymm3m_thread_RU
#define XSYMM3M_THREAD_RL xsymm3m_thread_RL
#define XHEMM3M_LU xhemm3m_LU
#define XHEMM3M_LL xhemm3m_LL
#define XHEMM3M_RU xhemm3m_RU
#define XHEMM3M_RL xhemm3m_RL
#define XHEMM3M_THREAD_LU xhemm3m_thread_LU
#define XHEMM3M_THREAD_LL xhemm3m_thread_LL
#define XHEMM3M_THREAD_RU xhemm3m_thread_RU
#define XHEMM3M_THREAD_RL xhemm3m_thread_RL
#endif

359
src/NativeWrappers/GotoBlas2/include/common_x86.h

@ -0,0 +1,359 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_X86
#define COMMON_X86
#ifndef ASSEMBLER
#define MB
#define WMB
#ifdef C_SUN
#define __asm__ __asm
#define __volatile__
#endif
static void __inline blas_lock(volatile BLASULONG *address){
int ret;
do {
while (*address) {YIELDING;};
__asm__ __volatile__(
"xchgl %0, %1\n"
: "=r"(ret), "=m"(*address)
: "0"(1), "m"(*address)
: "memory");
} while (ret);
}
static __inline unsigned long long rpcc(void){
unsigned int a, d;
__asm__ __volatile__ ("rdtsc" : "=a" (a), "=d" (d));
return ((unsigned long long)a + ((unsigned long long)d << 32));
};
static __inline unsigned long getstackaddr(void){
unsigned long addr;
__asm__ __volatile__ ("mov %%esp, %0"
: "=r"(addr) : : "memory");
return addr;
};
static __inline long double sqrt_long(long double val) {
long double result;
__asm__ __volatile__ ("fldt %1\n"
"fsqrt\n"
"fstpt %0\n" : "=m" (result) : "m"(val));
return result;
}
#define SQRT(a) sqrt_long(a)
/* This is due to gcc's bug */
void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx);
#define WHEREAMI
static inline int WhereAmI(void){
int eax, ebx, ecx, edx;
int apicid;
cpuid(1, &eax, &ebx, &ecx, &edx);
apicid = BITMASK(ebx, 24, 0xff);
return apicid;
}
#ifdef ENABLE_SSE_EXCEPTION
#define IDEBUG_START \
{ \
unsigned int fp_sse_mode, new_fp_mode; \
__asm__ __volatile__ ("stmxcsr %0" : "=m" (fp_sse_mode) : ); \
new_fp_mode = fp_sse_mode & ~0xd00; \
__asm__ __volatile__ ("ldmxcsr %0" : : "m" (new_fp_mode) );
#define IDEBUG_END \
__asm__ __volatile__ ("ldmxcsr %0" : : "m" (fp_sse_mode) ); \
}
#endif
#ifdef XDOUBLE
#define GET_IMAGE(res) __asm__ __volatile__("fstpt %0" : "=m"(res) : : "memory")
#elif defined(DOUBLE)
#define GET_IMAGE(res) __asm__ __volatile__("fstpl %0" : "=m"(res) : : "memory")
#else
#define GET_IMAGE(res) __asm__ __volatile__("fstps %0" : "=m"(res) : : "memory");
#endif
#define GET_IMAGE_CANCEL __asm__ __volatile__ ("ffree %st")
#ifdef SMP
extern unsigned int blas_quick_divide_table[];
static __inline int blas_quickdivide(unsigned int x, unsigned int y){
unsigned int result;
if (y <= 1) return x;
y = blas_quick_divide_table[y];
__asm__ __volatile__ ("mull %0" :"=d" (result) :"a"(x), "0" (y));
return result;
}
#endif
#endif
#ifndef PAGESIZE
#define PAGESIZE ( 4 << 10)
#endif
#define HUGE_PAGESIZE ( 4 << 20)
#define BUFFER_SIZE (16 << 20)
#define SEEK_ADDRESS
#if defined(DOUBLE) || defined(XDOUBLE)
#define MMXLOAD movq
#define MMXSTORE movq
#else
#define MMXLOAD movd
#define MMXSTORE movd
#endif
#if defined(HAVE_3DNOW)
#define EMMS femms
#elif defined(HAVE_MMX)
#define EMMS emms
#endif
#ifndef EMMS
#define EMMS
#endif
#if defined(CORE2) || defined(PENTIUM4)
#define movapd movaps
#endif
#define BRANCH .byte 0x3e
#define NOBRANCH .byte 0x2e
#define PADDING .byte 0x66;
#define HALT hlt
#ifndef COMPLEX
#ifdef XDOUBLE
#define LOCAL_BUFFER_SIZE QLOCAL_BUFFER_SIZE
#elif defined DOUBLE
#define LOCAL_BUFFER_SIZE DLOCAL_BUFFER_SIZE
#else
#define LOCAL_BUFFER_SIZE SLOCAL_BUFFER_SIZE
#endif
#else
#ifdef XDOUBLE
#define LOCAL_BUFFER_SIZE XLOCAL_BUFFER_SIZE
#elif defined DOUBLE
#define LOCAL_BUFFER_SIZE ZLOCAL_BUFFER_SIZE
#else
#define LOCAL_BUFFER_SIZE CLOCAL_BUFFER_SIZE
#endif
#endif
#if defined(OS_WINDOWS)
#if LOCAL_BUFFER_SIZE > 16384
#define STACK_TOUCHING \
movl $0, 4096 * 4(%esp);\
movl $0, 4096 * 3(%esp);\
movl $0, 4096 * 2(%esp);\
movl $0, 4096 * 1(%esp);
#elif LOCAL_BUFFER_SIZE > 12288
#define STACK_TOUCHING \
movl $0, 4096 * 3(%esp);\
movl $0, 4096 * 2(%esp);\
movl $0, 4096 * 1(%esp);
#elif LOCAL_BUFFER_SIZE > 8192
#define STACK_TOUCHING \
movl $0, 4096 * 2(%esp);\
movl $0, 4096 * 1(%esp);
#elif LOCAL_BUFFER_SIZE > 4096
#define STACK_TOUCHING \
movl $0, 4096 * 1(%esp);
#else
#define STACK_TOUCHING
#endif
#else
#define STACK_TOUCHING
#endif
#ifndef F_INTERFACE
#define REALNAME ASMNAME
#else
#define REALNAME ASMFNAME
#endif
#if defined(F_INTERFACE_PATHSCALE) || defined(F_INTERFACE_OPEN64)
#define RETURN_BY_STRUCT
#elif defined(F_INTERFACE_GFORT) || defined(F_INTERFACE_G95)
#define RETURN_BY_COMPLEX
#else
#define RETURN_BY_STACK
#endif
#ifdef OS_DARWIN
#define PROLOGUE .text;.align 5; .globl REALNAME; REALNAME:
#define EPILOGUE .subsections_via_symbols
#define PROFCODE
#endif
#if defined(OS_WINNT) || defined(OS_CYGWIN_NT) || defined(OS_INERIX)
#define SAVEREGISTERS \
subl $32, %esp;\
movups %xmm6, 0(%esp);\
movups %xmm7, 16(%esp)
#define RESTOREREGISTERS \
movups 0(%esp), %xmm6;\
movups 16(%esp), %xmm7;\
addl $32, %esp
#else
#define SAVEREGISTERS
#define RESTOREREGISTERS
#endif
#if defined(OS_WINNT) || defined(OS_CYGWIN_NT) || defined(OS_INERIX)
#define PROLOGUE \
.text; \
.align 16; \
.globl REALNAME ;\
.def REALNAME;.scl 2;.type 32;.endef; \
REALNAME:
#define PROFCODE
#define EPILOGUE .end REALNAME
#endif
#if defined(OS_LINUX) || defined(OS_FreeBSD) || defined(OS_NetBSD) || defined(__ELF__)
#define PROLOGUE \
.text; \
.align 16; \
.globl REALNAME ;\
.type REALNAME, @function; \
REALNAME:
#ifdef PROFILE
#define PROFCODE call mcount
#else
#define PROFCODE
#endif
#define EPILOGUE .size REALNAME, .-REALNAME
#endif
#ifdef XDOUBLE
#define FLD fldt
#define FST fstpt
#define FSTU fstt
#define FMUL fmult
#define FADD faddt
#define FSUB fsubt
#define FSUBR fsubrt
#elif defined(DOUBLE)
#define FLD fldl
#define FST fstpl
#define FSTU fstl
#define FMUL fmull
#define FADD faddl
#define FSUB fsubl
#define FSUBR fsubrl
#else
#define FLD flds
#define FST fstps
#define FSTU fsts
#define FMUL fmuls
#define FADD fadds
#define FSUB fsubs
#define FSUBR fsubrs
#endif
#endif
#ifdef C_SUN
#define ffreep fstp
#endif
#ifdef __APPLE__
#define ALIGN_2 .align 2
#define ALIGN_3 .align 3
#define ALIGN_4 .align 4
#define ffreep fstp
#endif
#ifndef ALIGN_2
#define ALIGN_2 .align 4
#endif
#ifndef ALIGN_3
#define ALIGN_3 .align 8
#endif
#ifndef ALIGN_4
#define ALIGN_4 .align 16
#endif
#ifndef ALIGN_5
#define ALIGN_5 .align 32
#endif
#ifndef ALIGN_6
#define ALIGN_6 .align 64
#endif

451
src/NativeWrappers/GotoBlas2/include/common_x86_64.h

@ -0,0 +1,451 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef COMMON_X86
#define COMMON_X86
#ifndef ASSEMBLER
#ifdef C_SUN
#define __asm__ __asm
#define __volatile__
#endif
#ifdef HAVE_SSE2
#define MB __asm__ __volatile__ ("mfence");
#define WMB __asm__ __volatile__ ("sfence");
#else
#define MB
#define WMB
#endif
static void __inline blas_lock(volatile BLASULONG *address){
int ret;
do {
while (*address) {YIELDING;};
__asm__ __volatile__(
"xchgl %0, %1\n"
: "=r"(ret), "=m"(*address)
: "0"(1), "m"(*address)
: "memory");
} while (ret);
}
static __inline BLASULONG rpcc(void){
BLASULONG a, d;
__asm__ __volatile__ ("rdtsc" : "=a" (a), "=d" (d));
return ((BLASULONG)a + ((BLASULONG)d << 32));
}
#define RPCC64BIT
static __inline BLASULONG getstackaddr(void){
BLASULONG addr;
__asm__ __volatile__ ("movq %%rsp, %0"
: "=r"(addr) : : "memory");
return addr;
}
static __inline void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx){
__asm__ __volatile__("cpuid"
: "=a" (*eax),
"=b" (*ebx),
"=c" (*ecx),
"=d" (*edx)
: "0" (op));
}
#define WHEREAMI
static inline int WhereAmI(void){
int eax, ebx, ecx, edx;
int apicid;
cpuid(1, &eax, &ebx, &ecx, &edx);
apicid = BITMASK(ebx, 24, 0xff);
return apicid;
}
#ifdef CORE_BARCELONA
#define IFLUSH gotoblas_iflush()
#define IFLUSH_HALF gotoblas_iflush_half()
#endif
#ifdef ENABLE_SSE_EXCEPTION
#define IDEBUG_START \
{ \
unsigned int fp_sse_mode, new_fp_mode; \
__asm__ __volatile__ ("stmxcsr %0" : "=m" (fp_sse_mode) : ); \
new_fp_mode = fp_sse_mode & ~0xd00; \
__asm__ __volatile__ ("ldmxcsr %0" : : "m" (new_fp_mode) );
#define IDEBUG_END \
__asm__ __volatile__ ("ldmxcsr %0" : : "m" (fp_sse_mode) ); \
}
#endif
#ifdef XDOUBLE
#define GET_IMAGE(res) __asm__ __volatile__("fstpt %0" : "=m"(res) : : "memory")
#elif defined(DOUBLE)
#define GET_IMAGE(res) __asm__ __volatile__("movsd %%xmm1, %0" : "=m"(res) : : "memory")
#else
#define GET_IMAGE(res) __asm__ __volatile__("movss %%xmm1, %0" : "=m"(res) : : "memory")
#endif
#define GET_IMAGE_CANCEL
#ifdef SMP
#ifdef USE64BITINT
static __inline blasint blas_quickdivide(blasint x, blasint y){
return x / y;
}
#else
extern unsigned int blas_quick_divide_table[];
static __inline int blas_quickdivide(unsigned int x, unsigned int y){
unsigned int result;
if (y <= 1) return x;
y = blas_quick_divide_table[y];
__asm__ __volatile__ ("mull %0" :"=d" (result) :"a"(x), "0" (y));
return result;
}
#endif
#endif
#endif
#ifndef PAGESIZE
#define PAGESIZE ( 4 << 10)
#endif
#define HUGE_PAGESIZE ( 2 << 20)
#define BUFFER_SIZE (32 << 20)
#define SEEK_ADDRESS
#ifdef F_INTERFACE_G77
#define RETURN_BY_STACK
#define NEED_F2CCONV
#endif
#ifdef F_INTERFACE_G95
#define RETURN_BY_PACKED
#endif
#ifdef F_INTERFACE_GFORT
#ifdef OS_WINDOWS
#ifndef DOUBLE
#define RETURN_BY_REGS
#else
#define RETURN_BY_STACK
#endif
#else
#define RETURN_BY_PACKED
#endif
#endif
#ifdef F_INTERFACE_INTEL
#define RETURN_BY_STACK
#endif
#ifdef F_INTERFACE_FUJITSU
#define RETURN_BY_STACK
#endif
#ifdef F_INTERFACE_PGI
#define RETURN_BY_STACK
#endif
#ifdef F_INTERFACE_PATHSCALE
#define RETURN_BY_PACKED
#endif
#ifdef F_INTERFACE_SUN
#define RETURN_BY_PACKED
#endif
#ifdef ASSEMBLER
#if defined(HAVE_3DNOW)
#define EMMS femms
#elif defined(HAVE_MMX)
#define EMMS emms
#endif
#ifndef EMMS
#define EMMS
#endif
#define BRANCH .byte 0x3e
#define NOBRANCH .byte 0x2e
#define PADDING .byte 0x66
#ifdef OS_WINDOWS
#define ARG1 %rcx
#define ARG2 %rdx
#define ARG3 %r8
#define ARG4 %r9
#else
#define ARG1 %rdi
#define ARG2 %rsi
#define ARG3 %rdx
#define ARG4 %rcx
#define ARG5 %r8
#define ARG6 %r9
#endif
#ifndef COMPLEX
#ifdef XDOUBLE
#define LOCAL_BUFFER_SIZE QLOCAL_BUFFER_SIZE
#elif defined DOUBLE
#define LOCAL_BUFFER_SIZE DLOCAL_BUFFER_SIZE
#else
#define LOCAL_BUFFER_SIZE SLOCAL_BUFFER_SIZE
#endif
#else
#ifdef XDOUBLE
#define LOCAL_BUFFER_SIZE XLOCAL_BUFFER_SIZE
#elif defined DOUBLE
#define LOCAL_BUFFER_SIZE ZLOCAL_BUFFER_SIZE
#else
#define LOCAL_BUFFER_SIZE CLOCAL_BUFFER_SIZE
#endif
#endif
#if defined(OS_WINDOWS)
#if LOCAL_BUFFER_SIZE > 16384
#define STACK_TOUCHING \
movl $0, 4096 * 4(%rsp);\
movl $0, 4096 * 3(%rsp);\
movl $0, 4096 * 2(%rsp);\
movl $0, 4096 * 1(%rsp);
#elif LOCAL_BUFFER_SIZE > 12288
#define STACK_TOUCHING \
movl $0, 4096 * 3(%rsp);\
movl $0, 4096 * 2(%rsp);\
movl $0, 4096 * 1(%rsp);
#elif LOCAL_BUFFER_SIZE > 8192
#define STACK_TOUCHING \
movl $0, 4096 * 2(%rsp);\
movl $0, 4096 * 1(%rsp);
#elif LOCAL_BUFFER_SIZE > 4096
#define STACK_TOUCHING \
movl $0, 4096 * 1(%rsp);
#else
#define STACK_TOUCHING
#endif
#else
#define STACK_TOUCHING
#endif
#if defined(CORE2)
#define movapd movaps
#define andpd andps
#define movlpd movlps
#define movhpd movhps
#endif
#ifndef F_INTERFACE
#define REALNAME ASMNAME
#else
#define REALNAME ASMFNAME
#endif
#ifdef OS_DARWIN
#define PROLOGUE .text;.align 5; .globl REALNAME; REALNAME:
#define EPILOGUE .subsections_via_symbols
#define PROFCODE
#endif
#ifdef OS_WINDOWS
#define SAVEREGISTERS \
subq $256, %rsp;\
movups %xmm6, 0(%rsp);\
movups %xmm7, 16(%rsp);\
movups %xmm8, 32(%rsp);\
movups %xmm9, 48(%rsp);\
movups %xmm10, 64(%rsp);\
movups %xmm11, 80(%rsp);\
movups %xmm12, 96(%rsp);\
movups %xmm13, 112(%rsp);\
movups %xmm14, 128(%rsp);\
movups %xmm15, 144(%rsp)
#define RESTOREREGISTERS \
movups 0(%rsp), %xmm6;\
movups 16(%rsp), %xmm7;\
movups 32(%rsp), %xmm8;\
movups 48(%rsp), %xmm9;\
movups 64(%rsp), %xmm10;\
movups 80(%rsp), %xmm11;\
movups 96(%rsp), %xmm12;\
movups 112(%rsp), %xmm13;\
movups 128(%rsp), %xmm14;\
movups 144(%rsp), %xmm15;\
addq $256, %rsp
#else
#define SAVEREGISTERS
#define RESTOREREGISTERS
#endif
#if defined(OS_WINDOWS) && !defined(C_PGI)
#define PROLOGUE \
.text; \
.align 16; \
.globl REALNAME ;\
.def REALNAME;.scl 2;.type 32;.endef; \
REALNAME:
#define PROFCODE
#define EPILOGUE .end REALNAME
#endif
#if defined(OS_LINUX) || defined(OS_FreeBSD) || defined(OS_NetBSD) || defined(__ELF__) || defined(C_PGI)
#define PROLOGUE \
.text; \
.align 512; \
.globl REALNAME ;\
.type REALNAME, @function; \
REALNAME:
#ifdef PROFILE
#define PROFCODE call *mcount@GOTPCREL(%rip)
#else
#define PROFCODE
#endif
#define EPILOGUE .size REALNAME, .-REALNAME
#endif
#endif
#ifdef XDOUBLE
#define FLD fldt
#define FST fstpt
#define MOVQ movq
#elif defined(DOUBLE)
#define FLD fldl
#define FST fstpl
#define FSTU fstl
#define FMUL fmull
#define FADD faddl
#define MOVSD movsd
#define MULSD mulsd
#define MULPD mulpd
#define CMPEQPD cmpeqpd
#define COMISD comisd
#define PSRLQ psrlq
#define ANDPD andpd
#define ADDPD addpd
#define ADDSD addsd
#define SUBPD subpd
#define SUBSD subsd
#define MOVQ movq
#define MOVUPD movupd
#define XORPD xorpd
#else
#define FLD flds
#define FST fstps
#define FSTU fsts
#define FMUL fmuls
#define FADD fadds
#define MOVSD movss
#define MULSD mulss
#define MULPD mulps
#define CMPEQPD cmpeqps
#define COMISD comiss
#define PSRLQ psrld
#define ANDPD andps
#define ADDPD addps
#define ADDSD addss
#define SUBPD subps
#define SUBSD subss
#define MOVQ movd
#define MOVUPD movups
#define XORPD xorps
#endif
#define HALT hlt
#ifdef OS_DARWIN
#define ALIGN_2 .align 2
#define ALIGN_3 .align 3
#define ALIGN_4 .align 4
#define ffreep fstp
#endif
#ifndef ALIGN_2
#define ALIGN_2 .align 4
#endif
#ifndef ALIGN_3
#define ALIGN_3 .align 8
#endif
#ifndef ALIGN_4
#define ALIGN_4 .align 16
#endif
#ifndef ALIGN_5
#define ALIGN_5 .align 32
#endif
#ifndef ALIGN_6
#define ALIGN_6 .align 64
#endif
#endif

611
src/NativeWrappers/GotoBlas2/include/common_z.h

@ -0,0 +1,611 @@
#ifndef COMMON_Z_H
#define COMMON_Z_H
#ifndef DYNAMIC_ARCH
#define ZAMAX_K zamax_k
#define ZAMIN_K zamin_k
#define ZMAX_K zmax_k
#define ZMIN_K zmin_k
#define IZAMAX_K izamax_k
#define IZAMIN_K izamin_k
#define IZMAX_K izmax_k
#define IZMIN_K izmin_k
#define ZASUM_K zasum_k
#define ZAXPYU_K zaxpy_k
#define ZAXPYC_K zaxpyc_k
#define ZCOPY_K zcopy_k
#define ZDOTU_K zdotu_k
#define ZDOTC_K zdotc_k
#define ZNRM2_K znrm2_k
#define ZSCAL_K zscal_k
#define ZSWAP_K zswap_k
#define ZROT_K zdrot_k
#define ZGEMV_N zgemv_n
#define ZGEMV_T zgemv_t
#define ZGEMV_R zgemv_r
#define ZGEMV_C zgemv_c
#define ZGEMV_O zgemv_o
#define ZGEMV_U zgemv_u
#define ZGEMV_S zgemv_s
#define ZGEMV_D zgemv_d
#define ZGERU_K zgeru_k
#define ZGERC_K zgerc_k
#define ZGERV_K zgerv_k
#define ZGERD_K zgerd_k
#define ZSYMV_U zsymv_U
#define ZSYMV_L zsymv_L
#define ZHEMV_U zhemv_U
#define ZHEMV_L zhemv_L
#define ZHEMV_V zhemv_V
#define ZHEMV_M zhemv_M
#define ZSYMV_THREAD_U zsymv_thread_U
#define ZSYMV_THREAD_L zsymv_thread_L
#define ZHEMV_THREAD_U zhemv_thread_U
#define ZHEMV_THREAD_L zhemv_thread_L
#define ZHEMV_THREAD_V zhemv_thread_V
#define ZHEMV_THREAD_M zhemv_thread_M
#define ZGEMM_ONCOPY zgemm_oncopy
#define ZGEMM_OTCOPY zgemm_otcopy
#if ZGEMM_DEFAULT_UNROLL_M == ZGEMM_DEFAULT_UNROLL_N
#define ZGEMM_INCOPY zgemm_oncopy
#define ZGEMM_ITCOPY zgemm_otcopy
#else
#define ZGEMM_INCOPY zgemm_incopy
#define ZGEMM_ITCOPY zgemm_itcopy
#endif
#define ZTRMM_OUNUCOPY ztrmm_ounucopy
#define ZTRMM_OUNNCOPY ztrmm_ounncopy
#define ZTRMM_OUTUCOPY ztrmm_outucopy
#define ZTRMM_OUTNCOPY ztrmm_outncopy
#define ZTRMM_OLNUCOPY ztrmm_olnucopy
#define ZTRMM_OLNNCOPY ztrmm_olnncopy
#define ZTRMM_OLTUCOPY ztrmm_oltucopy
#define ZTRMM_OLTNCOPY ztrmm_oltncopy
#define ZTRSM_OUNUCOPY ztrsm_ounucopy
#define ZTRSM_OUNNCOPY ztrsm_ounncopy
#define ZTRSM_OUTUCOPY ztrsm_outucopy
#define ZTRSM_OUTNCOPY ztrsm_outncopy
#define ZTRSM_OLNUCOPY ztrsm_olnucopy
#define ZTRSM_OLNNCOPY ztrsm_olnncopy
#define ZTRSM_OLTUCOPY ztrsm_oltucopy
#define ZTRSM_OLTNCOPY ztrsm_oltncopy
#if ZGEMM_DEFAULT_UNROLL_M == ZGEMM_DEFAULT_UNROLL_N
#define ZTRMM_IUNUCOPY ztrmm_ounucopy
#define ZTRMM_IUNNCOPY ztrmm_ounncopy
#define ZTRMM_IUTUCOPY ztrmm_outucopy
#define ZTRMM_IUTNCOPY ztrmm_outncopy
#define ZTRMM_ILNUCOPY ztrmm_olnucopy
#define ZTRMM_ILNNCOPY ztrmm_olnncopy
#define ZTRMM_ILTUCOPY ztrmm_oltucopy
#define ZTRMM_ILTNCOPY ztrmm_oltncopy
#define ZTRSM_IUNUCOPY ztrsm_ounucopy
#define ZTRSM_IUNNCOPY ztrsm_ounncopy
#define ZTRSM_IUTUCOPY ztrsm_outucopy
#define ZTRSM_IUTNCOPY ztrsm_outncopy
#define ZTRSM_ILNUCOPY ztrsm_olnucopy
#define ZTRSM_ILNNCOPY ztrsm_olnncopy
#define ZTRSM_ILTUCOPY ztrsm_oltucopy
#define ZTRSM_ILTNCOPY ztrsm_oltncopy
#else
#define ZTRMM_IUNUCOPY ztrmm_iunucopy
#define ZTRMM_IUNNCOPY ztrmm_iunncopy
#define ZTRMM_IUTUCOPY ztrmm_iutucopy
#define ZTRMM_IUTNCOPY ztrmm_iutncopy
#define ZTRMM_ILNUCOPY ztrmm_ilnucopy
#define ZTRMM_ILNNCOPY ztrmm_ilnncopy
#define ZTRMM_ILTUCOPY ztrmm_iltucopy
#define ZTRMM_ILTNCOPY ztrmm_iltncopy
#define ZTRSM_IUNUCOPY ztrsm_iunucopy
#define ZTRSM_IUNNCOPY ztrsm_iunncopy
#define ZTRSM_IUTUCOPY ztrsm_iutucopy
#define ZTRSM_IUTNCOPY ztrsm_iutncopy
#define ZTRSM_ILNUCOPY ztrsm_ilnucopy
#define ZTRSM_ILNNCOPY ztrsm_ilnncopy
#define ZTRSM_ILTUCOPY ztrsm_iltucopy
#define ZTRSM_ILTNCOPY ztrsm_iltncopy
#endif
#define ZGEMM_BETA zgemm_beta
#define ZGEMM_KERNEL_N zgemm_kernel_n
#define ZGEMM_KERNEL_L zgemm_kernel_l
#define ZGEMM_KERNEL_R zgemm_kernel_r
#define ZGEMM_KERNEL_B zgemm_kernel_b
#define ZTRMM_KERNEL_LN ztrmm_kernel_LN
#define ZTRMM_KERNEL_LT ztrmm_kernel_LT
#define ZTRMM_KERNEL_LR ztrmm_kernel_LR
#define ZTRMM_KERNEL_LC ztrmm_kernel_LC
#define ZTRMM_KERNEL_RN ztrmm_kernel_RN
#define ZTRMM_KERNEL_RT ztrmm_kernel_RT
#define ZTRMM_KERNEL_RR ztrmm_kernel_RR
#define ZTRMM_KERNEL_RC ztrmm_kernel_RC
#define ZTRSM_KERNEL_LN ztrsm_kernel_LN
#define ZTRSM_KERNEL_LT ztrsm_kernel_LT
#define ZTRSM_KERNEL_LR ztrsm_kernel_LR
#define ZTRSM_KERNEL_LC ztrsm_kernel_LC
#define ZTRSM_KERNEL_RN ztrsm_kernel_RN
#define ZTRSM_KERNEL_RT ztrsm_kernel_RT
#define ZTRSM_KERNEL_RR ztrsm_kernel_RR
#define ZTRSM_KERNEL_RC ztrsm_kernel_RC
#define ZSYMM_OUTCOPY zsymm_outcopy
#define ZSYMM_OLTCOPY zsymm_oltcopy
#if ZGEMM_DEFAULT_UNROLL_M == ZGEMM_DEFAULT_UNROLL_N
#define ZSYMM_IUTCOPY zsymm_outcopy
#define ZSYMM_ILTCOPY zsymm_oltcopy
#else
#define ZSYMM_IUTCOPY zsymm_iutcopy
#define ZSYMM_ILTCOPY zsymm_iltcopy
#endif
#define ZHEMM_OUTCOPY zhemm_outcopy
#define ZHEMM_OLTCOPY zhemm_oltcopy
#if ZGEMM_DEFAULT_UNROLL_M == ZGEMM_DEFAULT_UNROLL_N
#define ZHEMM_IUTCOPY zhemm_outcopy
#define ZHEMM_ILTCOPY zhemm_oltcopy
#else
#define ZHEMM_IUTCOPY zhemm_iutcopy
#define ZHEMM_ILTCOPY zhemm_iltcopy
#endif
#define ZGEMM3M_ONCOPYB zgemm3m_oncopyb
#define ZGEMM3M_ONCOPYR zgemm3m_oncopyr
#define ZGEMM3M_ONCOPYI zgemm3m_oncopyi
#define ZGEMM3M_OTCOPYB zgemm3m_otcopyb
#define ZGEMM3M_OTCOPYR zgemm3m_otcopyr
#define ZGEMM3M_OTCOPYI zgemm3m_otcopyi
#define ZGEMM3M_INCOPYB zgemm3m_incopyb
#define ZGEMM3M_INCOPYR zgemm3m_incopyr
#define ZGEMM3M_INCOPYI zgemm3m_incopyi
#define ZGEMM3M_ITCOPYB zgemm3m_itcopyb
#define ZGEMM3M_ITCOPYR zgemm3m_itcopyr
#define ZGEMM3M_ITCOPYI zgemm3m_itcopyi
#define ZSYMM3M_ILCOPYB zsymm3m_ilcopyb
#define ZSYMM3M_IUCOPYB zsymm3m_iucopyb
#define ZSYMM3M_ILCOPYR zsymm3m_ilcopyr
#define ZSYMM3M_IUCOPYR zsymm3m_iucopyr
#define ZSYMM3M_ILCOPYI zsymm3m_ilcopyi
#define ZSYMM3M_IUCOPYI zsymm3m_iucopyi
#define ZSYMM3M_OLCOPYB zsymm3m_olcopyb
#define ZSYMM3M_OUCOPYB zsymm3m_oucopyb
#define ZSYMM3M_OLCOPYR zsymm3m_olcopyr
#define ZSYMM3M_OUCOPYR zsymm3m_oucopyr
#define ZSYMM3M_OLCOPYI zsymm3m_olcopyi
#define ZSYMM3M_OUCOPYI zsymm3m_oucopyi
#define ZHEMM3M_ILCOPYB zhemm3m_ilcopyb
#define ZHEMM3M_IUCOPYB zhemm3m_iucopyb
#define ZHEMM3M_ILCOPYR zhemm3m_ilcopyr
#define ZHEMM3M_IUCOPYR zhemm3m_iucopyr
#define ZHEMM3M_ILCOPYI zhemm3m_ilcopyi
#define ZHEMM3M_IUCOPYI zhemm3m_iucopyi
#define ZHEMM3M_OLCOPYB zhemm3m_olcopyb
#define ZHEMM3M_OUCOPYB zhemm3m_oucopyb
#define ZHEMM3M_OLCOPYR zhemm3m_olcopyr
#define ZHEMM3M_OUCOPYR zhemm3m_oucopyr
#define ZHEMM3M_OLCOPYI zhemm3m_olcopyi
#define ZHEMM3M_OUCOPYI zhemm3m_oucopyi
#define ZGEMM3M_KERNEL zgemm3m_kernel
#define ZNEG_TCOPY zneg_tcopy
#define ZLASWP_NCOPY zlaswp_ncopy
#else
#define ZAMAX_K gotoblas -> zamax_k
#define ZAMIN_K gotoblas -> zamin_k
#define ZMAX_K gotoblas -> zmax_k
#define ZMIN_K gotoblas -> zmin_k
#define IZAMAX_K gotoblas -> izamax_k
#define IZAMIN_K gotoblas -> izamin_k
#define IZMAX_K gotoblas -> izmax_k
#define IZMIN_K gotoblas -> izmin_k
#define ZASUM_K gotoblas -> zasum_k
#define ZAXPYU_K gotoblas -> zaxpy_k
#define ZAXPYC_K gotoblas -> zaxpyc_k
#define ZCOPY_K gotoblas -> zcopy_k
#define ZDOTU_K gotoblas -> zdotu_k
#define ZDOTC_K gotoblas -> zdotc_k
#define ZNRM2_K gotoblas -> znrm2_k
#define ZSCAL_K gotoblas -> zscal_k
#define ZSWAP_K gotoblas -> zswap_k
#define ZROT_K gotoblas -> zdrot_k
#define ZGEMV_N gotoblas -> zgemv_n
#define ZGEMV_T gotoblas -> zgemv_t
#define ZGEMV_R gotoblas -> zgemv_r
#define ZGEMV_C gotoblas -> zgemv_c
#define ZGEMV_O gotoblas -> zgemv_o
#define ZGEMV_U gotoblas -> zgemv_u
#define ZGEMV_S gotoblas -> zgemv_s
#define ZGEMV_D gotoblas -> zgemv_d
#define ZGERU_K gotoblas -> zgeru_k
#define ZGERC_K gotoblas -> zgerc_k
#define ZGERV_K gotoblas -> zgerv_k
#define ZGERD_K gotoblas -> zgerd_k
#define ZSYMV_U gotoblas -> zsymv_U
#define ZSYMV_L gotoblas -> zsymv_L
#define ZHEMV_U gotoblas -> zhemv_U
#define ZHEMV_L gotoblas -> zhemv_L
#define ZHEMV_V gotoblas -> zhemv_V
#define ZHEMV_M gotoblas -> zhemv_M
#define ZSYMV_THREAD_U zsymv_thread_U
#define ZSYMV_THREAD_L zsymv_thread_L
#define ZHEMV_THREAD_U zhemv_thread_U
#define ZHEMV_THREAD_L zhemv_thread_L
#define ZHEMV_THREAD_V zhemv_thread_V
#define ZHEMV_THREAD_M zhemv_thread_M
#define ZGEMM_ONCOPY gotoblas -> zgemm_oncopy
#define ZGEMM_OTCOPY gotoblas -> zgemm_otcopy
#define ZGEMM_INCOPY gotoblas -> zgemm_incopy
#define ZGEMM_ITCOPY gotoblas -> zgemm_itcopy
#define ZTRMM_OUNUCOPY gotoblas -> ztrmm_ounucopy
#define ZTRMM_OUTUCOPY gotoblas -> ztrmm_outucopy
#define ZTRMM_OLNUCOPY gotoblas -> ztrmm_olnucopy
#define ZTRMM_OLTUCOPY gotoblas -> ztrmm_oltucopy
#define ZTRSM_OUNUCOPY gotoblas -> ztrsm_ounucopy
#define ZTRSM_OUTUCOPY gotoblas -> ztrsm_outucopy
#define ZTRSM_OLNUCOPY gotoblas -> ztrsm_olnucopy
#define ZTRSM_OLTUCOPY gotoblas -> ztrsm_oltucopy
#define ZTRMM_IUNUCOPY gotoblas -> ztrmm_iunucopy
#define ZTRMM_IUTUCOPY gotoblas -> ztrmm_iutucopy
#define ZTRMM_ILNUCOPY gotoblas -> ztrmm_ilnucopy
#define ZTRMM_ILTUCOPY gotoblas -> ztrmm_iltucopy
#define ZTRSM_IUNUCOPY gotoblas -> ztrsm_iunucopy
#define ZTRSM_IUTUCOPY gotoblas -> ztrsm_iutucopy
#define ZTRSM_ILNUCOPY gotoblas -> ztrsm_ilnucopy
#define ZTRSM_ILTUCOPY gotoblas -> ztrsm_iltucopy
#define ZTRMM_OUNNCOPY gotoblas -> ztrmm_ounncopy
#define ZTRMM_OUTNCOPY gotoblas -> ztrmm_outncopy
#define ZTRMM_OLNNCOPY gotoblas -> ztrmm_olnncopy
#define ZTRMM_OLTNCOPY gotoblas -> ztrmm_oltncopy
#define ZTRSM_OUNNCOPY gotoblas -> ztrsm_ounncopy
#define ZTRSM_OUTNCOPY gotoblas -> ztrsm_outncopy
#define ZTRSM_OLNNCOPY gotoblas -> ztrsm_olnncopy
#define ZTRSM_OLTNCOPY gotoblas -> ztrsm_oltncopy
#define ZTRMM_IUNNCOPY gotoblas -> ztrmm_iunncopy
#define ZTRMM_IUTNCOPY gotoblas -> ztrmm_iutncopy
#define ZTRMM_ILNNCOPY gotoblas -> ztrmm_ilnncopy
#define ZTRMM_ILTNCOPY gotoblas -> ztrmm_iltncopy
#define ZTRSM_IUNNCOPY gotoblas -> ztrsm_iunncopy
#define ZTRSM_IUTNCOPY gotoblas -> ztrsm_iutncopy
#define ZTRSM_ILNNCOPY gotoblas -> ztrsm_ilnncopy
#define ZTRSM_ILTNCOPY gotoblas -> ztrsm_iltncopy
#define ZGEMM_BETA gotoblas -> zgemm_beta
#define ZGEMM_KERNEL_N gotoblas -> zgemm_kernel_n
#define ZGEMM_KERNEL_L gotoblas -> zgemm_kernel_l
#define ZGEMM_KERNEL_R gotoblas -> zgemm_kernel_r
#define ZGEMM_KERNEL_B gotoblas -> zgemm_kernel_b
#define ZTRMM_KERNEL_LN gotoblas -> ztrmm_kernel_LN
#define ZTRMM_KERNEL_LT gotoblas -> ztrmm_kernel_LT
#define ZTRMM_KERNEL_LR gotoblas -> ztrmm_kernel_LR
#define ZTRMM_KERNEL_LC gotoblas -> ztrmm_kernel_LC
#define ZTRMM_KERNEL_RN gotoblas -> ztrmm_kernel_RN
#define ZTRMM_KERNEL_RT gotoblas -> ztrmm_kernel_RT
#define ZTRMM_KERNEL_RR gotoblas -> ztrmm_kernel_RR
#define ZTRMM_KERNEL_RC gotoblas -> ztrmm_kernel_RC
#define ZTRSM_KERNEL_LN gotoblas -> ztrsm_kernel_LN
#define ZTRSM_KERNEL_LT gotoblas -> ztrsm_kernel_LT
#define ZTRSM_KERNEL_LR gotoblas -> ztrsm_kernel_LR
#define ZTRSM_KERNEL_LC gotoblas -> ztrsm_kernel_LC
#define ZTRSM_KERNEL_RN gotoblas -> ztrsm_kernel_RN
#define ZTRSM_KERNEL_RT gotoblas -> ztrsm_kernel_RT
#define ZTRSM_KERNEL_RR gotoblas -> ztrsm_kernel_RR
#define ZTRSM_KERNEL_RC gotoblas -> ztrsm_kernel_RC
#define ZSYMM_IUTCOPY gotoblas -> zsymm_iutcopy
#define ZSYMM_ILTCOPY gotoblas -> zsymm_iltcopy
#define ZSYMM_OUTCOPY gotoblas -> zsymm_outcopy
#define ZSYMM_OLTCOPY gotoblas -> zsymm_oltcopy
#define ZHEMM_OUTCOPY gotoblas -> zhemm_outcopy
#define ZHEMM_OLTCOPY gotoblas -> zhemm_oltcopy
#define ZHEMM_IUTCOPY gotoblas -> zhemm_iutcopy
#define ZHEMM_ILTCOPY gotoblas -> zhemm_iltcopy
#define ZGEMM3M_ONCOPYB gotoblas -> zgemm3m_oncopyb
#define ZGEMM3M_ONCOPYR gotoblas -> zgemm3m_oncopyr
#define ZGEMM3M_ONCOPYI gotoblas -> zgemm3m_oncopyi
#define ZGEMM3M_OTCOPYB gotoblas -> zgemm3m_otcopyb
#define ZGEMM3M_OTCOPYR gotoblas -> zgemm3m_otcopyr
#define ZGEMM3M_OTCOPYI gotoblas -> zgemm3m_otcopyi
#define ZGEMM3M_INCOPYB gotoblas -> zgemm3m_incopyb
#define ZGEMM3M_INCOPYR gotoblas -> zgemm3m_incopyr
#define ZGEMM3M_INCOPYI gotoblas -> zgemm3m_incopyi
#define ZGEMM3M_ITCOPYB gotoblas -> zgemm3m_itcopyb
#define ZGEMM3M_ITCOPYR gotoblas -> zgemm3m_itcopyr
#define ZGEMM3M_ITCOPYI gotoblas -> zgemm3m_itcopyi
#define ZSYMM3M_ILCOPYB gotoblas -> zsymm3m_ilcopyb
#define ZSYMM3M_IUCOPYB gotoblas -> zsymm3m_iucopyb
#define ZSYMM3M_ILCOPYR gotoblas -> zsymm3m_ilcopyr
#define ZSYMM3M_IUCOPYR gotoblas -> zsymm3m_iucopyr
#define ZSYMM3M_ILCOPYI gotoblas -> zsymm3m_ilcopyi
#define ZSYMM3M_IUCOPYI gotoblas -> zsymm3m_iucopyi
#define ZSYMM3M_OLCOPYB gotoblas -> zsymm3m_olcopyb
#define ZSYMM3M_OUCOPYB gotoblas -> zsymm3m_oucopyb
#define ZSYMM3M_OLCOPYR gotoblas -> zsymm3m_olcopyr
#define ZSYMM3M_OUCOPYR gotoblas -> zsymm3m_oucopyr
#define ZSYMM3M_OLCOPYI gotoblas -> zsymm3m_olcopyi
#define ZSYMM3M_OUCOPYI gotoblas -> zsymm3m_oucopyi
#define ZHEMM3M_ILCOPYB gotoblas -> zhemm3m_ilcopyb
#define ZHEMM3M_IUCOPYB gotoblas -> zhemm3m_iucopyb
#define ZHEMM3M_ILCOPYR gotoblas -> zhemm3m_ilcopyr
#define ZHEMM3M_IUCOPYR gotoblas -> zhemm3m_iucopyr
#define ZHEMM3M_ILCOPYI gotoblas -> zhemm3m_ilcopyi
#define ZHEMM3M_IUCOPYI gotoblas -> zhemm3m_iucopyi
#define ZHEMM3M_OLCOPYB gotoblas -> zhemm3m_olcopyb
#define ZHEMM3M_OUCOPYB gotoblas -> zhemm3m_oucopyb
#define ZHEMM3M_OLCOPYR gotoblas -> zhemm3m_olcopyr
#define ZHEMM3M_OUCOPYR gotoblas -> zhemm3m_oucopyr
#define ZHEMM3M_OLCOPYI gotoblas -> zhemm3m_olcopyi
#define ZHEMM3M_OUCOPYI gotoblas -> zhemm3m_oucopyi
#define ZGEMM3M_KERNEL gotoblas -> zgemm3m_kernel
#define ZNEG_TCOPY gotoblas -> zneg_tcopy
#define ZLASWP_NCOPY gotoblas -> zlaswp_ncopy
#endif
#define ZGEMM_NN zgemm_nn
#define ZGEMM_CN zgemm_cn
#define ZGEMM_TN zgemm_tn
#define ZGEMM_NC zgemm_nc
#define ZGEMM_NT zgemm_nt
#define ZGEMM_CC zgemm_cc
#define ZGEMM_CT zgemm_ct
#define ZGEMM_TC zgemm_tc
#define ZGEMM_TT zgemm_tt
#define ZGEMM_NR zgemm_nr
#define ZGEMM_TR zgemm_tr
#define ZGEMM_CR zgemm_cr
#define ZGEMM_RN zgemm_rn
#define ZGEMM_RT zgemm_rt
#define ZGEMM_RC zgemm_rc
#define ZGEMM_RR zgemm_rr
#define ZSYMM_LU zsymm_LU
#define ZSYMM_LL zsymm_LL
#define ZSYMM_RU zsymm_RU
#define ZSYMM_RL zsymm_RL
#define ZHEMM_LU zhemm_LU
#define ZHEMM_LL zhemm_LL
#define ZHEMM_RU zhemm_RU
#define ZHEMM_RL zhemm_RL
#define ZSYRK_UN zsyrk_UN
#define ZSYRK_UT zsyrk_UT
#define ZSYRK_LN zsyrk_LN
#define ZSYRK_LT zsyrk_LT
#define ZSYRK_UR zsyrk_UN
#define ZSYRK_UC zsyrk_UT
#define ZSYRK_LR zsyrk_LN
#define ZSYRK_LC zsyrk_LT
#define ZSYRK_KERNEL_U zsyrk_kernel_U
#define ZSYRK_KERNEL_L zsyrk_kernel_L
#define ZHERK_UN zherk_UN
#define ZHERK_LN zherk_LN
#define ZHERK_UC zherk_UC
#define ZHERK_LC zherk_LC
#define ZHER2K_UN zher2k_UN
#define ZHER2K_LN zher2k_LN
#define ZHER2K_UC zher2k_UC
#define ZHER2K_LC zher2k_LC
#define ZSYR2K_UN zsyr2k_UN
#define ZSYR2K_UT zsyr2k_UT
#define ZSYR2K_LN zsyr2k_LN
#define ZSYR2K_LT zsyr2k_LT
#define ZSYR2K_UR zsyr2k_UN
#define ZSYR2K_UC zsyr2k_UT
#define ZSYR2K_LR zsyr2k_LN
#define ZSYR2K_LC zsyr2k_LT
#define ZSYR2K_KERNEL_U zsyr2k_kernel_U
#define ZSYR2K_KERNEL_L zsyr2k_kernel_L
#define ZTRMM_LNUU ztrmm_LNUU
#define ZTRMM_LNUN ztrmm_LNUN
#define ZTRMM_LNLU ztrmm_LNLU
#define ZTRMM_LNLN ztrmm_LNLN
#define ZTRMM_LTUU ztrmm_LTUU
#define ZTRMM_LTUN ztrmm_LTUN
#define ZTRMM_LTLU ztrmm_LTLU
#define ZTRMM_LTLN ztrmm_LTLN
#define ZTRMM_LRUU ztrmm_LRUU
#define ZTRMM_LRUN ztrmm_LRUN
#define ZTRMM_LRLU ztrmm_LRLU
#define ZTRMM_LRLN ztrmm_LRLN
#define ZTRMM_LCUU ztrmm_LCUU
#define ZTRMM_LCUN ztrmm_LCUN
#define ZTRMM_LCLU ztrmm_LCLU
#define ZTRMM_LCLN ztrmm_LCLN
#define ZTRMM_RNUU ztrmm_RNUU
#define ZTRMM_RNUN ztrmm_RNUN
#define ZTRMM_RNLU ztrmm_RNLU
#define ZTRMM_RNLN ztrmm_RNLN
#define ZTRMM_RTUU ztrmm_RTUU
#define ZTRMM_RTUN ztrmm_RTUN
#define ZTRMM_RTLU ztrmm_RTLU
#define ZTRMM_RTLN ztrmm_RTLN
#define ZTRMM_RRUU ztrmm_RRUU
#define ZTRMM_RRUN ztrmm_RRUN
#define ZTRMM_RRLU ztrmm_RRLU
#define ZTRMM_RRLN ztrmm_RRLN
#define ZTRMM_RCUU ztrmm_RCUU
#define ZTRMM_RCUN ztrmm_RCUN
#define ZTRMM_RCLU ztrmm_RCLU
#define ZTRMM_RCLN ztrmm_RCLN
#define ZTRSM_LNUU ztrsm_LNUU
#define ZTRSM_LNUN ztrsm_LNUN
#define ZTRSM_LNLU ztrsm_LNLU
#define ZTRSM_LNLN ztrsm_LNLN
#define ZTRSM_LTUU ztrsm_LTUU
#define ZTRSM_LTUN ztrsm_LTUN
#define ZTRSM_LTLU ztrsm_LTLU
#define ZTRSM_LTLN ztrsm_LTLN
#define ZTRSM_LRUU ztrsm_LRUU
#define ZTRSM_LRUN ztrsm_LRUN
#define ZTRSM_LRLU ztrsm_LRLU
#define ZTRSM_LRLN ztrsm_LRLN
#define ZTRSM_LCUU ztrsm_LCUU
#define ZTRSM_LCUN ztrsm_LCUN
#define ZTRSM_LCLU ztrsm_LCLU
#define ZTRSM_LCLN ztrsm_LCLN
#define ZTRSM_RNUU ztrsm_RNUU
#define ZTRSM_RNUN ztrsm_RNUN
#define ZTRSM_RNLU ztrsm_RNLU
#define ZTRSM_RNLN ztrsm_RNLN
#define ZTRSM_RTUU ztrsm_RTUU
#define ZTRSM_RTUN ztrsm_RTUN
#define ZTRSM_RTLU ztrsm_RTLU
#define ZTRSM_RTLN ztrsm_RTLN
#define ZTRSM_RRUU ztrsm_RRUU
#define ZTRSM_RRUN ztrsm_RRUN
#define ZTRSM_RRLU ztrsm_RRLU
#define ZTRSM_RRLN ztrsm_RRLN
#define ZTRSM_RCUU ztrsm_RCUU
#define ZTRSM_RCUN ztrsm_RCUN
#define ZTRSM_RCLU ztrsm_RCLU
#define ZTRSM_RCLN ztrsm_RCLN
#define ZGEMM_THREAD_NN zgemm_thread_nn
#define ZGEMM_THREAD_CN zgemm_thread_cn
#define ZGEMM_THREAD_TN zgemm_thread_tn
#define ZGEMM_THREAD_NC zgemm_thread_nc
#define ZGEMM_THREAD_NT zgemm_thread_nt
#define ZGEMM_THREAD_CC zgemm_thread_cc
#define ZGEMM_THREAD_CT zgemm_thread_ct
#define ZGEMM_THREAD_TC zgemm_thread_tc
#define ZGEMM_THREAD_TT zgemm_thread_tt
#define ZGEMM_THREAD_NR zgemm_thread_nr
#define ZGEMM_THREAD_TR zgemm_thread_tr
#define ZGEMM_THREAD_CR zgemm_thread_cr
#define ZGEMM_THREAD_RN zgemm_thread_rn
#define ZGEMM_THREAD_RT zgemm_thread_rt
#define ZGEMM_THREAD_RC zgemm_thread_rc
#define ZGEMM_THREAD_RR zgemm_thread_rr
#define ZSYMM_THREAD_LU zsymm_thread_LU
#define ZSYMM_THREAD_LL zsymm_thread_LL
#define ZSYMM_THREAD_RU zsymm_thread_RU
#define ZSYMM_THREAD_RL zsymm_thread_RL
#define ZHEMM_THREAD_LU zhemm_thread_LU
#define ZHEMM_THREAD_LL zhemm_thread_LL
#define ZHEMM_THREAD_RU zhemm_thread_RU
#define ZHEMM_THREAD_RL zhemm_thread_RL
#define ZSYRK_THREAD_UN zsyrk_thread_UN
#define ZSYRK_THREAD_UT zsyrk_thread_UT
#define ZSYRK_THREAD_LN zsyrk_thread_LN
#define ZSYRK_THREAD_LT zsyrk_thread_LT
#define ZSYRK_THREAD_UR zsyrk_thread_UN
#define ZSYRK_THREAD_UC zsyrk_thread_UT
#define ZSYRK_THREAD_LR zsyrk_thread_LN
#define ZSYRK_THREAD_LC zsyrk_thread_LT
#define ZHERK_THREAD_UN zherk_thread_UN
#define ZHERK_THREAD_UT zherk_thread_UT
#define ZHERK_THREAD_LN zherk_thread_LN
#define ZHERK_THREAD_LT zherk_thread_LT
#define ZHERK_THREAD_UR zherk_thread_UR
#define ZHERK_THREAD_UC zherk_thread_UC
#define ZHERK_THREAD_LR zherk_thread_LR
#define ZHERK_THREAD_LC zherk_thread_LC
#define ZGEMM3M_NN zgemm3m_nn
#define ZGEMM3M_CN zgemm3m_cn
#define ZGEMM3M_TN zgemm3m_tn
#define ZGEMM3M_NC zgemm3m_nc
#define ZGEMM3M_NT zgemm3m_nt
#define ZGEMM3M_CC zgemm3m_cc
#define ZGEMM3M_CT zgemm3m_ct
#define ZGEMM3M_TC zgemm3m_tc
#define ZGEMM3M_TT zgemm3m_tt
#define ZGEMM3M_NR zgemm3m_nr
#define ZGEMM3M_TR zgemm3m_tr
#define ZGEMM3M_CR zgemm3m_cr
#define ZGEMM3M_RN zgemm3m_rn
#define ZGEMM3M_RT zgemm3m_rt
#define ZGEMM3M_RC zgemm3m_rc
#define ZGEMM3M_RR zgemm3m_rr
#define ZGEMM3M_THREAD_NN zgemm3m_thread_nn
#define ZGEMM3M_THREAD_CN zgemm3m_thread_cn
#define ZGEMM3M_THREAD_TN zgemm3m_thread_tn
#define ZGEMM3M_THREAD_NC zgemm3m_thread_nc
#define ZGEMM3M_THREAD_NT zgemm3m_thread_nt
#define ZGEMM3M_THREAD_CC zgemm3m_thread_cc
#define ZGEMM3M_THREAD_CT zgemm3m_thread_ct
#define ZGEMM3M_THREAD_TC zgemm3m_thread_tc
#define ZGEMM3M_THREAD_TT zgemm3m_thread_tt
#define ZGEMM3M_THREAD_NR zgemm3m_thread_nr
#define ZGEMM3M_THREAD_TR zgemm3m_thread_tr
#define ZGEMM3M_THREAD_CR zgemm3m_thread_cr
#define ZGEMM3M_THREAD_RN zgemm3m_thread_rn
#define ZGEMM3M_THREAD_RT zgemm3m_thread_rt
#define ZGEMM3M_THREAD_RC zgemm3m_thread_rc
#define ZGEMM3M_THREAD_RR zgemm3m_thread_rr
#define ZSYMM3M_LU zsymm3m_LU
#define ZSYMM3M_LL zsymm3m_LL
#define ZSYMM3M_RU zsymm3m_RU
#define ZSYMM3M_RL zsymm3m_RL
#define ZSYMM3M_THREAD_LU zsymm3m_thread_LU
#define ZSYMM3M_THREAD_LL zsymm3m_thread_LL
#define ZSYMM3M_THREAD_RU zsymm3m_thread_RU
#define ZSYMM3M_THREAD_RL zsymm3m_thread_RL
#define ZHEMM3M_LU zhemm3m_LU
#define ZHEMM3M_LL zhemm3m_LL
#define ZHEMM3M_RU zhemm3m_RU
#define ZHEMM3M_RL zhemm3m_RL
#define ZHEMM3M_THREAD_LU zhemm3m_thread_LU
#define ZHEMM3M_THREAD_LL zhemm3m_thread_LL
#define ZHEMM3M_THREAD_RU zhemm3m_thread_RU
#define ZHEMM3M_THREAD_RL zhemm3m_thread_RL
#endif

191
src/NativeWrappers/GotoBlas2/include/cpuid.h

@ -0,0 +1,191 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef CPUID_H
#define CPUID_H
#define VENDOR_INTEL 1
#define VENDOR_UMC 2
#define VENDOR_AMD 3
#define VENDOR_CYRIX 4
#define VENDOR_NEXGEN 5
#define VENDOR_CENTAUR 6
#define VENDOR_RISE 7
#define VENDOR_SIS 8
#define VENDOR_TRANSMETA 9
#define VENDOR_NSC 10
#define VENDOR_UNKNOWN 99
#define BITMASK(a, b, c) ((((a) >> (b)) & (c)))
#define FAMILY_80486 4
#define FAMILY_P5 5
#define FAMILY_P6 6
#define FAMILY_PM 7
#define FAMILY_IA64 8
#if defined(__i386__) || defined(__x86_64__)
#define GET_EXFAMILY 1
#define GET_EXMODEL 2
#define GET_TYPE 3
#define GET_FAMILY 4
#define GET_MODEL 5
#define GET_APICID 6
#define GET_LCOUNT 7
#define GET_CHUNKS 8
#define GET_STEPPING 9
#define GET_BLANDID 10
#define GET_FEATURE 11
#define GET_NUMSHARE 12
#define GET_NUMCORES 13
#endif
#ifdef __ia64__
#define GET_ARCHREV 1
#define GET_FAMILY 2
#define GET_MODEL 3
#define GET_REVISION 4
#define GET_NUMBER 5
#endif
#define CORE_UNKNOWN 0
#define CORE_80486 1
#define CORE_P5 2
#define CORE_P6 3
#define CORE_KATMAI 4
#define CORE_COPPERMINE 5
#define CORE_NORTHWOOD 6
#define CORE_PRESCOTT 7
#define CORE_BANIAS 8
#define CORE_ATHLON 9
#define CORE_OPTERON 10
#define CORE_BARCELONA 11
#define CORE_VIAC3 12
#define CORE_YONAH 13
#define CORE_CORE2 14
#define CORE_PENRYN 15
#define CORE_DUNNINGTON 16
#define CORE_NEHALEM 17
#define CORE_ATOM 18
#define CORE_NANO 19
#define HAVE_SSE (1 << 0)
#define HAVE_SSE2 (1 << 1)
#define HAVE_SSE3 (1 << 2)
#define HAVE_SSSE3 (1 << 3)
#define HAVE_SSE4_1 (1 << 4)
#define HAVE_SSE4_2 (1 << 5)
#define HAVE_SSE4A (1 << 6)
#define HAVE_SSE5 (1 << 7)
#define HAVE_MMX (1 << 8)
#define HAVE_3DNOW (1 << 9)
#define HAVE_3DNOWEX (1 << 10)
#define HAVE_CMOV (1 << 11)
#define HAVE_PSE (1 << 12)
#define HAVE_CFLUSH (1 << 13)
#define HAVE_HIT (1 << 14)
#define HAVE_MISALIGNSSE (1 << 15)
#define HAVE_128BITFPU (1 << 16)
#define HAVE_FASTMOVU (1 << 17)
#define CACHE_INFO_L1_I 1
#define CACHE_INFO_L1_D 2
#define CACHE_INFO_L2 3
#define CACHE_INFO_L3 4
#define CACHE_INFO_L1_ITB 5
#define CACHE_INFO_L1_DTB 6
#define CACHE_INFO_L1_LITB 7
#define CACHE_INFO_L1_LDTB 8
#define CACHE_INFO_L2_ITB 9
#define CACHE_INFO_L2_DTB 10
#define CACHE_INFO_L2_LITB 11
#define CACHE_INFO_L2_LDTB 12
typedef struct {
int size;
int associative;
int linesize;
int shared;
} cache_info_t;
#define CPUTYPE_UNKNOWN 0
#define CPUTYPE_INTEL_UNKNOWN 1
#define CPUTYPE_UMC_UNKNOWN 2
#define CPUTYPE_AMD_UNKNOWN 3
#define CPUTYPE_CYRIX_UNKNOWN 4
#define CPUTYPE_NEXGEN_UNKNOWN 5
#define CPUTYPE_CENTAUR_UNKNOWN 6
#define CPUTYPE_RISE_UNKNOWN 7
#define CPUTYPE_SIS_UNKNOWN 8
#define CPUTYPE_TRANSMETA_UNKNOWN 9
#define CPUTYPE_NSC_UNKNOWN 10
#define CPUTYPE_80386 11
#define CPUTYPE_80486 12
#define CPUTYPE_PENTIUM 13
#define CPUTYPE_PENTIUM2 14
#define CPUTYPE_PENTIUM3 15
#define CPUTYPE_PENTIUMM 16
#define CPUTYPE_PENTIUM4 17
#define CPUTYPE_CORE2 18
#define CPUTYPE_PENRYN 19
#define CPUTYPE_DUNNINGTON 20
#define CPUTYPE_NEHALEM 21
#define CPUTYPE_ATOM 22
#define CPUTYPE_ITANIUM 23
#define CPUTYPE_ITANIUM2 24
#define CPUTYPE_AMD5X86 25
#define CPUTYPE_AMDK6 26
#define CPUTYPE_ATHLON 27
#define CPUTYPE_DURON 28
#define CPUTYPE_OPTERON 29
#define CPUTYPE_BARCELONA 30
#define CPUTYPE_SHANGHAI 31
#define CPUTYPE_ISTANBUL 32
#define CPUTYPE_CYRIX5X86 33
#define CPUTYPE_CYRIXM1 34
#define CPUTYPE_CYRIXM2 35
#define CPUTYPE_NEXGENNX586 36
#define CPUTYPE_CENTAURC6 37
#define CPUTYPE_RISEMP6 38
#define CPUTYPE_SYS55X 39
#define CPUTYPE_CRUSOETM3X 40
#define CPUTYPE_NSGEODE 41
#define CPUTYPE_VIAC3 42
#define CPUTYPE_NANO 43
#endif

84
src/NativeWrappers/GotoBlas2/include/l1param.h

@ -0,0 +1,84 @@
#if defined(CORE2) || defined(PENRYN)
#define ALIGNED_ACCESS
#endif
#ifdef NEHALEM
#define PREFETCH prefetcht0
#define PREFETCHW prefetcht0
#define PREFETCHSIZE (128 * 12)
#define ALIGNED_ACCESS
#endif
#ifdef ATHLON
#define PREFETCH prefetch
#define PREFETCHW prefetchw
#define PREFETCHSIZE (128 * 10)
#define ALIGNED_ACCESS
#define movsd movlps
#endif
#ifdef PENTIUM3
#define PREFETCH prefetcht0
#define PREFETCHSIZE (128 * 10)
#define ALIGNED_ACCESS
#define movsd movlps
#endif
#ifdef PENTIUM4
#define PREFETCH prefetcht0
#define PREFETCHSIZE (128 * 10)
#define FETCH128
#define ALIGNED_ACCESS
#define xorps pxor
#define xorpd pxor
#endif
#ifdef ATOM
#define ALIGNED_ACCESS
#define PREFETCH prefetcht0
#define PREFETCHSIZE ( 64 * 12 + 32)
#endif
#ifdef OPTERON
#define PREFETCH prefetch
#define PREFETCHW prefetchw
#define PREFETCHSIZE (128 * 3)
#define movsd movlps
#endif
#ifdef BARCELONA
#define PREFETCH prefetch
#define PREFETCHW prefetchw
#define PREFETCHSIZE (128 * 5)
#define ALIGNED_ACCESS
#endif
#ifdef SHANGHAI
#define PREFETCH prefetch
#define PREFETCHW prefetchw
#define PREFETCHSIZE (128 * 5)
#define ALIGNED_ACCESS
#endif
#ifdef NANO
#define PREFETCH prefetcht0
#define PREFETCHW prefetcht0
#define PREFETCHSIZE (128 * 4)
#define ALIGNED_ACCESS
#endif
#define PREOFFSET 128
#ifdef HAVE_SSE2
#define PSHUFD1(A, B) pshufd A, B, B
#define PSHUFD2(A, B, C) pshufd A, B, C
#else
#define PSHUFD1(A, B) shufps A, B, B
#define PSHUFD2(A, B, C) movaps B, C; shufps A, C, C
#endif
#define MOVDDUP1(OFFSET, BASE, REGS) movddup OFFSET(BASE), REGS
#define MOVAPS(OFFSET, BASE, REGS) movlps REGS, OFFSET(BASE); movhps REGS, OFFSET + SIZE(BASE)

165
src/NativeWrappers/GotoBlas2/include/l2param.h

@ -0,0 +1,165 @@
#ifndef GEMV_PARAM_H
#define GEMV_PARAM_H
#ifdef movsd
#undef movsd
#endif
#undef movapd
#define movapd movaps
#ifdef ATHLON
#define ALIGNED_ACCESS
#define MOVUPS_A movaps
#define MOVUPS_XL movaps
#define MOVUPS_XS movaps
#define MOVUPS_YL movaps
#define MOVUPS_YS movaps
#define PREFETCH prefetcht0
#define PREFETCHSIZE 64 * 3
#endif
#ifdef PENTIUM4
#define ALIGNED_ACCESS
#define MOVUPS_A movaps
#define MOVUPS_XL movaps
#define MOVUPS_XS movaps
#define MOVUPS_YL movaps
#define MOVUPS_YS movaps
#define PREFETCH prefetcht0
#define PREFETCHSIZE 64 * 2
#endif
#ifdef CORE2
#define ALIGNED_ACCESS
#define MOVUPS_A movaps
#define MOVUPS_XL movaps
#define MOVUPS_XS movaps
#define MOVUPS_YL movaps
#define MOVUPS_YS movaps
#define PREFETCH prefetcht0
#define PREFETCHSIZE 64 * 4
#endif
#ifdef PENRYN
#define ALIGNED_ACCESS
#define MOVUPS_A movaps
#define MOVUPS_XL movaps
#define MOVUPS_XS movaps
#define MOVUPS_YL movaps
#define MOVUPS_YS movaps
#define PREFETCH prefetcht0
#define PREFETCHSIZE 64 * 4
#endif
#ifdef NEHALEM
#define MOVUPS_A movups
#define MOVUPS_XL movups
#define MOVUPS_XS movups
#define MOVUPS_YL movups
#define MOVUPS_YS movups
#define PREFETCH prefetcht0
#define PREFETCHW prefetcht0
#define PREFETCHSIZE 64 * 3
#endif
#ifdef OPTERON
#define PREFETCH prefetch
#define PREFETCHW prefetchw
#ifndef COMPLEX
#define PREFETCHSIZE 64 * 1
#else
#define PREFETCHSIZE 64 * 1
#endif
#define movsd movlps
#endif
#if defined(BARCELONA) || defined(SHANGHAI)
#define ALIGNED_ACCESS
#define MOVUPS_A movaps
#define MOVUPS_XL movaps
#define MOVUPS_XS movaps
#define MOVUPS_YL movaps
#define MOVUPS_YS movaps
#define PREFETCH prefetch
#define PREFETCHW prefetchw
#ifndef COMPLEX
#define PREFETCHSIZE 64 * 2
#else
#define PREFETCHSIZE 64 * 4
#endif
#endif
#ifdef NANO
#define ALIGNED_ACCESS
#define MOVUPS_A movaps
#define MOVUPS_XL movaps
#define MOVUPS_XS movaps
#define MOVUPS_YL movaps
#define MOVUPS_YS movaps
#define PREFETCH prefetcht0
#ifndef COMPLEX
#define PREFETCHSIZE 64 * 1
#else
#define PREFETCHSIZE 64 * 2
#endif
#endif
#ifndef PREOFFSET
#ifdef L1_DATA_LINESIZE
#define PREOFFSET (L1_DATA_LINESIZE >> 1)
#else
#define PREOFFSET 32
#endif
#endif
#ifndef GEMV_UNROLL
#define GEMV_UNROLL 4
#endif
#ifndef ZGEMV_UNROLL
#define ZGEMV_UNROLL 4
#endif
/* #define COPY_FORCE */ /* Always copy X or Y to the buffer */
/* #define NOCOPY_UNALIGNED */ /* Not copy if X or Y is not aligned */
#ifdef MOVUPS_A
#define MOVUPS_A1(OFF, ADDR, REGS) MOVUPS_A OFF(ADDR), REGS
#define MOVUPS_A2(OFF, ADDR, BASE, SCALE, REGS) MOVUPS_A OFF(ADDR, BASE, SCALE), REGS
#else
#define MOVUPS_A1(OFF, ADDR, REGS) movsd OFF(ADDR), REGS; movhps OFF + 8(ADDR), REGS
#define MOVUPS_A2(OFF, ADDR, BASE, SCALE, REGS) movsd OFF(ADDR, BASE, SCALE), REGS; movhps OFF + 8(ADDR, BASE, SCALE), REGS
#endif
#define MOVRPS_A1(OFF, ADDR, REGS) movsd OFF + 8(ADDR), REGS; movhps OFF(ADDR), REGS
#define MOVRPS_A2(OFF, ADDR, BASE, SCALE, REGS) movsd OFF + 8(ADDR, BASE, SCALE), REGS; movhps OFF(ADDR, BASE, SCALE), REGS
#ifdef MOVUPS_XL
#define MOVUPS_XL1(OFF, ADDR, REGS) MOVUPS_XL OFF(ADDR), REGS
#else
#define MOVUPS_XL1(OFF, ADDR, REGS) movsd OFF(ADDR), REGS; movhps OFF + 8(ADDR), REGS
#endif
#ifdef MOVUPS_XS
#define MOVUPS_XS1(OFF, ADDR, REGS) MOVUPS_XS REGS, OFF(ADDR)
#else
#define MOVUPS_XS1(OFF, ADDR, REGS) movsd REGS, OFF(ADDR); movhps REGS, OFF + 8(ADDR)
#endif
#ifdef MOVUPS_YL
#define MOVUPS_YL1(OFF, ADDR, REGS) MOVUPS_YL OFF(ADDR), REGS
#else
#define MOVUPS_YL1(OFF, ADDR, REGS) movsd OFF(ADDR), REGS; movhps OFF + 8(ADDR), REGS
#endif
#ifdef MOVUPS_YS
#define MOVUPS_YS1(OFF, ADDR, REGS) MOVUPS_YS REGS, OFF(ADDR)
#else
#define MOVUPS_YS1(OFF, ADDR, REGS) movsd REGS, OFF(ADDR); movhps REGS, OFF + 8(ADDR)
#endif
#endif

1543
src/NativeWrappers/GotoBlas2/include/param.h

File diff suppressed because it is too large

1873
src/NativeWrappers/GotoBlas2/include/symcopy.h

File diff suppressed because it is too large

43
src/NativeWrappers/GotoBlas2/include/version.h

@ -0,0 +1,43 @@
/*********************************************************************/
/* Copyright 2009, 2010 The University of Texas at Austin. */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or */
/* without modification, are permitted provided that the following */
/* conditions are met: */
/* */
/* 1. Redistributions of source code must retain the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer. */
/* */
/* 2. Redistributions in binary form must reproduce the above */
/* copyright notice, this list of conditions and the following */
/* disclaimer in the documentation and/or other materials */
/* provided with the distribution. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
/* */
/* The views and conclusions contained in the software and */
/* documentation are those of the authors and should not be */
/* interpreted as representing official policies, either expressed */
/* or implied, of The University of Texas at Austin. */
/*********************************************************************/
#ifndef VERSION_H
#define VERSION_H
#define VERSION " Optimized BLAS by Kazushige Goto <kgoto@tacc.utexas.edu>"
#endif

2
src/NativeWrappers/MKL/lapack.cpp

@ -1,4 +1,4 @@
#include "common.h"
#include "wrapper_common.h"
#include "blas.h"
#include "mkl_lapack.h"
#include <string>

2
src/NativeWrappers/MKL/vector_functions.c

@ -1,6 +1,6 @@
#include "mkl_vml.h"
#include "blas.h"
#include "common.h"
#include "wrapper_common.h"
DLLEXPORT void s_vector_add( const int n, const float x[], const float y[], float result[] ){

163
src/NativeWrappers/Windows/GotoBLAS2Wrapper/GotoBLAS2Wrapper.vcxproj

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{507FF69E-32A6-495A-9DE2-20EC10EE8963}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>GotoBLAS2Wrapper</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;GOTOBLAS2WRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\Common;.\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\..\lib\GotoBLAS2;</AdditionalLibraryDirectories>
<AdditionalDependencies>libgoto2_core2p-r1.13_x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;GOTOBLAS2WRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\Common;.\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\..\lib\GotoBLAS2;</AdditionalLibraryDirectories>
<AdditionalDependencies>libgoto2_core2p-r1.13_x86_64.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;GOTOBLAS2WRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\Common;.\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>..\..\..\..\lib\GotoBLAS2;</AdditionalLibraryDirectories>
<AdditionalDependencies>libgoto2_core2p-r1.13_x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;GOTOBLAS2WRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\Common;.\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>..\..\..\..\lib\GotoBLAS2;</AdditionalLibraryDirectories>
<AdditionalDependencies>libgoto2_core2p-r1.13_x86_64.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ResourceCompile Include="..\..\Common\resource.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\Common\wrapper_common.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\Common\WindowsDLL.cpp" />
<ClCompile Include="..\..\GotoBlas2\blas.c">
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\Common;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\Common;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\Common;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\Common;</AdditionalIncludeDirectories>
</ClCompile>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

35
src/NativeWrappers/Windows/GotoBLAS2Wrapper/GotoBLAS2Wrapper.vcxproj.filters

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\Common\resource.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\Common\wrapper_common.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\Common\WindowsDLL.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\GotoBlas2\blas.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

5
src/NativeWrappers/Windows/MKL/MKLWrapper.vcxproj

@ -183,12 +183,9 @@
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\Common\common.h" />
<ClInclude Include="..\..\Common\wrapper_common.h" />
<ClInclude Include="..\..\MKL\blas.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\Common\resource.rc" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\Common\blas.c" />
<ClCompile Include="..\..\Common\WindowsDLL.cpp" />

9
src/NativeWrappers/Windows/MKL/MKLWrapper.vcxproj.filters

@ -15,18 +15,13 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\Common\common.h">
<ClInclude Include="..\..\MKL\blas.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\MKL\blas.h">
<ClInclude Include="..\..\Common\wrapper_common.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\Common\resource.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\Common\blas.c">
<Filter>Source Files</Filter>

29
src/NativeWrappers/Windows/NativeWrappers.sln

@ -4,10 +4,10 @@ Microsoft Visual Studio Solution File, Format Version 11.00
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{5A0892FF-82CE-40FC-BCE1-73810C615F52}"
ProjectSection(SolutionItems) = preProject
..\Common\blas.c = ..\Common\blas.c
..\Common\common.h = ..\Common\common.h
..\Common\resource.h = ..\Common\resource.h
..\Common\resource.rc = ..\Common\resource.rc
..\Common\WindowsDLL.cpp = ..\Common\WindowsDLL.cpp
..\Common\wrapper_common.h = ..\Common\wrapper_common.h
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MKLWrapper", "MKL\MKLWrapper.vcxproj", "{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}"
@ -16,17 +16,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MKLWrapper64Tests", "MKLWra
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MKLWrapper32Tests", "MKLWrapper32Tests\MKLWrapper32Tests.csproj", "{D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{953422F5-A946-434B-81FD-A5A0AF92AAE1}"
ProjectSection(SolutionItems) = preProject
Local.testsettings = Local.testsettings
NativeWrappers.vsmdi = NativeWrappers.vsmdi
TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
EndProjectSection
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GotoBLAS2Wrapper", "GotoBLAS2Wrapper\GotoBLAS2Wrapper.vcxproj", "{507FF69E-32A6-495A-9DE2-20EC10EE8963}"
EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = NativeWrappers.vsmdi
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
@ -39,8 +31,8 @@ Global
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Any CPU.ActiveCfg = Debug|x64
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Mixed Platforms.Build.0 = Release|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Win32.ActiveCfg = Debug|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|Win32.Build.0 = Debug|Win32
{C0B0DBA9-7FB0-4C87-BDB1-3EED19DC2B8F}.Debug|x64.ActiveCfg = Debug|x64
@ -55,6 +47,7 @@ Global
{B134AA80-D8CA-4B83-9775-AE6ED2D5CFAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B134AA80-D8CA-4B83-9775-AE6ED2D5CFAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B134AA80-D8CA-4B83-9775-AE6ED2D5CFAB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B134AA80-D8CA-4B83-9775-AE6ED2D5CFAB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B134AA80-D8CA-4B83-9775-AE6ED2D5CFAB}.Debug|Win32.ActiveCfg = Debug|Any CPU
{B134AA80-D8CA-4B83-9775-AE6ED2D5CFAB}.Debug|x64.ActiveCfg = Debug|Any CPU
{B134AA80-D8CA-4B83-9775-AE6ED2D5CFAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -75,6 +68,18 @@ Global
{D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|Win32.ActiveCfg = Release|Any CPU
{D0AD591B-0CE6-4A6D-8DEA-01777EE09BC3}.Release|x64.ActiveCfg = Release|Any CPU
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Debug|Any CPU.ActiveCfg = Debug|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Debug|Mixed Platforms.Build.0 = Release|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Debug|Win32.ActiveCfg = Debug|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Debug|Win32.Build.0 = Debug|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Debug|x64.ActiveCfg = Debug|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Release|Any CPU.ActiveCfg = Release|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Release|Mixed Platforms.Build.0 = Release|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Release|Win32.ActiveCfg = Release|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Release|Win32.Build.0 = Release|Win32
{507FF69E-32A6-495A-9DE2-20EC10EE8963}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

Loading…
Cancel
Save