Replace vpermpd with vpermilpd

to improve performance on Zen/Zen2 (as demonstrated by wjc404 in #2180)
This commit is contained in:
Martin Kroeker 2019-07-22 08:28:16 +02:00 committed by GitHub
parent abea977ded
commit 28e96458e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 8 deletions

View File

@ -66,13 +66,17 @@ static void zdot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot)
"vfmadd231pd %%ymm8 , %%ymm12, %%ymm0 \n\t" // x_r * y_r, x_i * y_i
"vfmadd231pd %%ymm9 , %%ymm13, %%ymm1 \n\t" // x_r * y_r, x_i * y_i
"vpermpd $0xb1 , %%ymm12, %%ymm12 \n\t"
"vpermpd $0xb1 , %%ymm13, %%ymm13 \n\t"
"vpermilpd $0x05 , %%ymm12, %%ymm12 \n\t"
"vpermilpd $0x05 , %%ymm13, %%ymm13 \n\t"
// "vpermpd $0xb1 , %%ymm12, %%ymm12 \n\t"
// "vpermpd $0xb1 , %%ymm13, %%ymm13 \n\t"
"vfmadd231pd %%ymm10, %%ymm14, %%ymm2 \n\t" // x_r * y_r, x_i * y_i
"vfmadd231pd %%ymm11, %%ymm15, %%ymm3 \n\t" // x_r * y_r, x_i * y_i
"vpermpd $0xb1 , %%ymm14, %%ymm14 \n\t"
"vpermpd $0xb1 , %%ymm15, %%ymm15 \n\t"
"vpermilpd $0x05 , %%ymm14, %%ymm14 \n\t"
"vpermilpd $0x05 , %%ymm15, %%ymm15 \n\t"
// "vpermpd $0xb1 , %%ymm14, %%ymm14 \n\t"
// "vpermpd $0xb1 , %%ymm15, %%ymm15 \n\t"
"vfmadd231pd %%ymm8 , %%ymm12, %%ymm4 \n\t" // x_r * y_i, x_i * y_r
"addq $16 , %0 \n\t"
@ -151,13 +155,17 @@ static void zdot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot)
"vfmadd231pd %%ymm8 , %%ymm12, %%ymm0 \n\t" // x_r * y_r, x_i * y_i
"vfmadd231pd %%ymm9 , %%ymm13, %%ymm1 \n\t" // x_r * y_r, x_i * y_i
"vpermpd $0xb1 , %%ymm12, %%ymm12 \n\t"
"vpermpd $0xb1 , %%ymm13, %%ymm13 \n\t"
"vpermilpd $0x05 , %%ymm12, %%ymm12 \n\t"
"vpermilpd $0x05 , %%ymm13, %%ymm13 \n\t"
// "vpermpd $0xb1 , %%ymm12, %%ymm12 \n\t"
// "vpermpd $0xb1 , %%ymm13, %%ymm13 \n\t"
"vfmadd231pd %%ymm10, %%ymm14, %%ymm2 \n\t" // x_r * y_r, x_i * y_i
"vfmadd231pd %%ymm11, %%ymm15, %%ymm3 \n\t" // x_r * y_r, x_i * y_i
"vpermpd $0xb1 , %%ymm14, %%ymm14 \n\t"
"vpermpd $0xb1 , %%ymm15, %%ymm15 \n\t"
"vpermilpd $0x05 , %%ymm14, %%ymm14 \n\t"
"vpermilpd $0x05 , %%ymm15, %%ymm15 \n\t"
// "vpermpd $0xb1 , %%ymm14, %%ymm14 \n\t"
// "vpermpd $0xb1 , %%ymm15, %%ymm15 \n\t"
"vfmadd231pd %%ymm8 , %%ymm12, %%ymm4 \n\t" // x_r * y_i, x_i * y_r
"addq $16 , %0 \n\t"