don't use this sgemv_n on Windows
This commit is contained in:
parent
c8a4a56177
commit
b3938fe371
|
@ -1,4 +1,9 @@
|
|||
ifdef OS_WINDOWS
|
||||
SGEMVNKERNEL = ../arm/gemv_n.c
|
||||
else
|
||||
SGEMVNKERNEL = sgemv_n_avx.c
|
||||
endif
|
||||
|
||||
|
||||
ZGEMVNKERNEL = zgemv_n_dup.S
|
||||
ZGEMVTKERNEL = zgemv_t.S
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
ifdef OS_WINDOWS
|
||||
SGEMVNKERNEL = ../arm/gemv_n.c
|
||||
else
|
||||
SGEMVNKERNEL = sgemv_n_avx.c
|
||||
endif
|
||||
|
||||
|
||||
ZGEMVNKERNEL = zgemv_n_dup.S
|
||||
ZGEMVTKERNEL = zgemv_t.S
|
||||
|
|
|
@ -61,8 +61,10 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO
|
|||
FLOAT *a_ptr;
|
||||
FLOAT *x_ptr;
|
||||
FLOAT *y_ptr;
|
||||
BLASLONG n1,n2;
|
||||
BLASLONG m1,m2;
|
||||
BLASLONG n1;
|
||||
BLASLONG m1;
|
||||
BLASLONG register m2;
|
||||
BLASLONG register n2;
|
||||
FLOAT *xbuffer,*ybuffer;
|
||||
xbuffer = buffer;
|
||||
ybuffer = xbuffer + 2048 + 256;
|
||||
|
|
|
@ -31,7 +31,7 @@ static void sgemv_kernel_64( long n, float alpha, float *a, long lda, float *x,
|
|||
|
||||
float *pre = a + lda*3;
|
||||
|
||||
__asm __volatile
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"movq %0, %%rax\n\t" // n -> rax
|
||||
"vbroadcastss %1, %%ymm1\n\t" // alpha -> ymm1
|
||||
|
@ -103,10 +103,10 @@ static void sgemv_kernel_64( long n, float alpha, float *a, long lda, float *x,
|
|||
"m" (x), // 4
|
||||
"m" (y), // 5
|
||||
"m" (pre) // 6
|
||||
: "rax", "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10", "r11",
|
||||
"xmm0" , "xmm1",
|
||||
"xmm8", "xmm9", "xmm10", "xmm11",
|
||||
"xmm12", "xmm13", "xmm14", "xmm15",
|
||||
: "%rax", "%rcx", "%rdx", "%rsi", "%rdi", "%r8",
|
||||
"%xmm0", "%xmm1",
|
||||
"%xmm8", "%xmm9", "%xmm10", "%xmm11",
|
||||
"%xmm12", "%xmm13", "%xmm14", "%xmm15",
|
||||
"memory"
|
||||
);
|
||||
|
||||
|
@ -120,7 +120,7 @@ static void sgemv_kernel_32( long n, float alpha, float *a, long lda, float *x,
|
|||
|
||||
float *pre = a + lda*3;
|
||||
|
||||
__asm __volatile
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"movq %0, %%rax\n\t" // n -> rax
|
||||
"vbroadcastss %1, %%xmm1\n\t" // alpha -> xmm1
|
||||
|
@ -190,11 +190,6 @@ static void sgemv_kernel_32( long n, float alpha, float *a, long lda, float *x,
|
|||
"m" (x), // 4
|
||||
"m" (y), // 5
|
||||
"m" (pre) // 6
|
||||
: "rax", "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10", "r11",
|
||||
"xmm0" , "xmm1",
|
||||
"xmm8", "xmm9", "xmm10", "xmm11",
|
||||
"xmm12", "xmm13", "xmm14", "xmm15",
|
||||
"memory"
|
||||
);
|
||||
|
||||
}
|
||||
|
@ -202,9 +197,9 @@ static void sgemv_kernel_32( long n, float alpha, float *a, long lda, float *x,
|
|||
static void sgemv_kernel_16( long n, float alpha, float *a, long lda, float *x, float *y)
|
||||
{
|
||||
|
||||
float *pre = a + lda*1;
|
||||
float *pre = a + lda*3;
|
||||
|
||||
__asm __volatile
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"movq %0, %%rax\n\t" // n -> rax
|
||||
"vbroadcastss %1, %%ymm1\n\t" // alpha -> ymm1
|
||||
|
@ -248,9 +243,10 @@ static void sgemv_kernel_16( long n, float alpha, float *a, long lda, float *x,
|
|||
"m" (x), // 4
|
||||
"m" (y), // 5
|
||||
"m" (pre) // 6
|
||||
: "rax", "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10", "r11",
|
||||
"xmm0" , "xmm1",
|
||||
"xmm12", "xmm13", "xmm14", "xmm15",
|
||||
: "%rax", "%rcx", "%rdx", "%rsi", "%rdi", "%r8",
|
||||
"%xmm0", "%xmm1",
|
||||
"%xmm8", "%xmm9", "%xmm10", "%xmm11",
|
||||
"%xmm12", "%xmm13", "%xmm14", "%xmm15",
|
||||
"memory"
|
||||
);
|
||||
|
||||
|
@ -261,7 +257,7 @@ static void sgemv_kernel_8( long n, float alpha, float *a, long lda, float *x, f
|
|||
{
|
||||
|
||||
|
||||
__asm __volatile
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"movq %0, %%rax\n\t" // n -> rax
|
||||
"vbroadcastss %1, %%ymm1\n\t" // alpha -> ymm1
|
||||
|
@ -295,9 +291,10 @@ static void sgemv_kernel_8( long n, float alpha, float *a, long lda, float *x, f
|
|||
"m" (lda), // 3
|
||||
"m" (x), // 4
|
||||
"m" (y) // 5
|
||||
: "rax", "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10", "r11",
|
||||
"xmm0" , "xmm1",
|
||||
"xmm12", "xmm13", "xmm14", "xmm15",
|
||||
: "%rax", "%rcx", "%rdx", "%rsi", "%rdi", "%r8",
|
||||
"%xmm0", "%xmm1",
|
||||
"%xmm8", "%xmm9", "%xmm10", "%xmm11",
|
||||
"%xmm12", "%xmm13", "%xmm14", "%xmm15",
|
||||
"memory"
|
||||
);
|
||||
|
||||
|
@ -308,7 +305,7 @@ static void sgemv_kernel_4( long n, float alpha, float *a, long lda, float *x, f
|
|||
{
|
||||
|
||||
|
||||
__asm __volatile
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"movq %0, %%rax\n\t" // n -> rax
|
||||
"vbroadcastss %1, %%xmm1\n\t" // alpha -> xmm1
|
||||
|
@ -342,9 +339,10 @@ static void sgemv_kernel_4( long n, float alpha, float *a, long lda, float *x, f
|
|||
"m" (lda), // 3
|
||||
"m" (x), // 4
|
||||
"m" (y) // 5
|
||||
: "rax", "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10", "r11",
|
||||
"xmm0" , "xmm1",
|
||||
"xmm12", "xmm13", "xmm14", "xmm15",
|
||||
: "%rax", "%rcx", "%rdx", "%rsi", "%rdi", "%r8",
|
||||
"%xmm0", "%xmm1",
|
||||
"%xmm8", "%xmm9", "%xmm10", "%xmm11",
|
||||
"%xmm12", "%xmm13", "%xmm14", "%xmm15",
|
||||
"memory"
|
||||
);
|
||||
|
||||
|
@ -354,7 +352,7 @@ static void sgemv_kernel_2( long n, float alpha, float *a, long lda, float *x, f
|
|||
{
|
||||
|
||||
|
||||
__asm __volatile
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"movq %0, %%rax\n\t" // n -> rax
|
||||
"vmovss %1, %%xmm1\n\t" // alpha -> xmm1
|
||||
|
@ -392,9 +390,10 @@ static void sgemv_kernel_2( long n, float alpha, float *a, long lda, float *x, f
|
|||
"m" (lda), // 3
|
||||
"m" (x), // 4
|
||||
"m" (y) // 5
|
||||
: "rax", "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10", "r11",
|
||||
"xmm0" , "xmm1",
|
||||
"xmm12", "xmm13", "xmm14", "xmm15",
|
||||
: "%rax", "%rcx", "%rdx", "%rsi", "%rdi", "%r8",
|
||||
"%xmm0", "%xmm1",
|
||||
"%xmm8", "%xmm9", "%xmm10", "%xmm11",
|
||||
"%xmm12", "%xmm13", "%xmm14", "%xmm15",
|
||||
"memory"
|
||||
);
|
||||
|
||||
|
@ -406,7 +405,7 @@ static void sgemv_kernel_1( long n, float alpha, float *a, long lda, float *x, f
|
|||
{
|
||||
|
||||
|
||||
__asm __volatile
|
||||
__asm__ __volatile__
|
||||
(
|
||||
"movq %0, %%rax\n\t" // n -> rax
|
||||
"vmovss %1, %%xmm1\n\t" // alpha -> xmm1
|
||||
|
@ -440,9 +439,10 @@ static void sgemv_kernel_1( long n, float alpha, float *a, long lda, float *x, f
|
|||
"m" (lda), // 3
|
||||
"m" (x), // 4
|
||||
"m" (y) // 5
|
||||
: "rax", "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10", "r11",
|
||||
"xmm0" , "xmm1",
|
||||
"xmm12", "xmm13", "xmm14", "xmm15",
|
||||
: "%rax", "%rcx", "%rdx", "%rsi", "%rdi", "%r8",
|
||||
"%xmm0", "%xmm1",
|
||||
"%xmm8", "%xmm9", "%xmm10", "%xmm11",
|
||||
"%xmm12", "%xmm13", "%xmm14", "%xmm15",
|
||||
"memory"
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in New Issue