added zgemm_kernel_4x2_haswell.S and fixed a bug in sgemm_kernel_16x4_haswell.S

This commit is contained in:
wernsaar 2013-08-14 01:23:15 +02:00
parent 89637f87c8
commit 1cb9579cd0
2 changed files with 2033 additions and 11 deletions

View File

@ -131,11 +131,11 @@
#else #else
.macro VFMADD231PS_ y0,y1,y2 .macro VFMADD231PS_ y0,y1,y2
vfmadd231pd \y0,\y1,\y2 vfmadd231ps \y0,\y1,\y2
.endm .endm
.macro VFMADD231SS_ x0,x1,x2 .macro VFMADD231SS_ x0,x1,x2
vfmadd231sd \x0,\x1,\x2 vfmadd231ss \x0,\x1,\x2
.endm .endm
#endif #endif
@ -859,6 +859,7 @@
jz .L4_01b jz .L4_01b
ALIGN_4 ALIGN_4
.L4_01a: .L4_01a:
prefetcht0 512(BO1) prefetcht0 512(BO1)
prefetchw 512(BO) prefetchw 512(BO)
@ -957,7 +958,7 @@
andq $-8, %rax // K = K - ( K % 8 ) andq $-8, %rax // K = K - ( K % 8 )
je .L4_16 je .L4_16
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $4, BI // BI = BI * 4 ; number of values leaq (,BI,4) , BI // BI = BI * 4 ; number of values
salq $4, %rax // rax = rax * 16 ; number of values salq $4, %rax // rax = rax * 16 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
@ -1026,7 +1027,7 @@
je .L4_19 je .L4_19
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $2, BI // BI = BI * 4 ; number of values leaq (,BI,4), BI // BI = BI * 4 ; number of values
salq $4, %rax // rax = rax * 16 ; number of values salq $4, %rax // rax = rax * 16 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
@ -1124,7 +1125,7 @@
andq $-8, %rax andq $-8, %rax
je .L4_20_6 je .L4_20_6
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $2, BI // BI = BI * 4 ; number of values leaq (,BI,4), BI // BI = BI * 4 ; number of values
salq $3, %rax // rax = rax * 8 ; number of values salq $3, %rax // rax = rax * 8 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
@ -1173,7 +1174,7 @@
je .L4_20_9 je .L4_20_9
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $2, BI // BI = BI * 4 ; number of values leaq (,BI,4), BI // BI = BI * 4 ; number of values
salq $3, %rax // rax = rax * 8 ; number of values salq $3, %rax // rax = rax * 8 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
@ -1264,7 +1265,7 @@
andq $-8, %rax andq $-8, %rax
je .L4_26 je .L4_26
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $2, BI // BI = BI * 4 ; number of values leaq (,BI,4), BI // BI = BI * 4 ; number of values
salq $2, %rax // rax = rax * 4 ; number of values salq $2, %rax // rax = rax * 4 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
@ -1313,7 +1314,7 @@
je .L4_29 je .L4_29
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $2, BI // BI = BI * 4 ; number of values leaq (,BI,4), BI // BI = BI * 4 ; number of values
salq $2, %rax // rax = rax * 4 ; number of values salq $2, %rax // rax = rax * 4 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
@ -1401,7 +1402,7 @@
andq $-8, %rax andq $-8, %rax
je .L4_36 je .L4_36
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $2, BI // BI = BI * 4 ; number of values leaq (,BI,4), BI // BI = BI * 4 ; number of values
salq $1, %rax // rax = rax *2 ; number of values salq $1, %rax // rax = rax *2 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
@ -1535,7 +1536,7 @@
andq $-8, %rax andq $-8, %rax
je .L4_46 je .L4_46
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $2, BI // BI = BI * 4 ; number of values leaq (,BI,4), BI // BI = BI * 4 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
leaq (BO, BI, SIZE), BO leaq (BO, BI, SIZE), BO
@ -1583,7 +1584,7 @@
je .L4_49 je .L4_49
movq %rax, BI // Index for BO movq %rax, BI // Index for BO
salq $2, BI // BI = BI * 4 ; number of values leaq (,BI,4), BI // BI = BI * 4 ; number of values
leaq (AO, %rax, SIZE), AO leaq (AO, %rax, SIZE), AO
leaq (BO, BI, SIZE), BO leaq (BO, BI, SIZE), BO

File diff suppressed because it is too large Load Diff