As observed using GCC 10 using -march=native -ftree-vectorize on Knights Landing, it is now smart enough to find clobbers inside non-inlined static functions. In particular, sgemv counted on a kernel to preserve the whole %ymm2 register (since it was not in the clobber list), but the top part was destroyed by vzeroupper. This caused many tests to fail. This patch makes sure all xmm (and ymm/zmm by extension) registers are listed as clobbered to avoid this happening, as most kernels already did correctly in fact.tags/v0.3.12
| @@ -122,7 +122,7 @@ static void caxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| @@ -189,9 +189,10 @@ static void caxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | |||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -120,7 +120,7 @@ static void caxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| @@ -104,7 +104,7 @@ static void caxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| @@ -122,7 +122,7 @@ static void caxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| @@ -189,9 +189,10 @@ static void caxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | |||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -67,8 +67,9 @@ static void daxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (y), // 3 | "r" (y), // 3 | ||||
| "r" (alpha) // 4 | "r" (alpha) // 4 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -84,8 +84,9 @@ static void ddot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) | |||||
| "r" (y), // 3 | "r" (y), // 3 | ||||
| "r" (dot) // 4 | "r" (dot) // 4 | ||||
| : "cc", | : "cc", | ||||
| "%xmm4", "%xmm5", | |||||
| "%xmm6", "%xmm7", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -91,6 +91,7 @@ static void ddot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) | |||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | "%xmm0", "%xmm1", "%xmm2", "%xmm3", | ||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -155,6 +156,7 @@ static void ddot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) | |||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | "%xmm0", "%xmm1", "%xmm2", "%xmm3", | ||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -89,8 +89,9 @@ static void ddot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) | |||||
| "r" (y), // 3 | "r" (y), // 3 | ||||
| "r" (dot) // 4 | "r" (dot) // 4 | ||||
| : "cc", | : "cc", | ||||
| "%xmm4", "%xmm5", | |||||
| "%xmm6", "%xmm7", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -88,6 +88,7 @@ static void ddot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) | |||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | "%xmm0", "%xmm1", "%xmm2", "%xmm3", | ||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -105,9 +105,8 @@ static void dgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT | |||||
| "r" (alpha) // 8 | "r" (alpha) // 8 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | "%xmm0", "%xmm1", "%xmm2", "%xmm3", | ||||
| "%xmm4", "%xmm5", | |||||
| "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -182,11 +181,10 @@ static void dgemv_kernel_4x2( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT | |||||
| "r" (ap[1]), // 5 | "r" (ap[1]), // 5 | ||||
| "r" (alpha) // 6 | "r" (alpha) // 6 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm4", "%xmm5", | |||||
| "%xmm6", | |||||
| "%xmm8", | |||||
| "%xmm12", "%xmm13", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | |||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| } | } | ||||
| @@ -140,7 +140,7 @@ static void dgemv_kernel_4x8( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, BLASLO | |||||
| "%xmm2", "%xmm3", | "%xmm2", "%xmm3", | ||||
| "%xmm4", "%xmm5", | "%xmm4", "%xmm5", | ||||
| "%xmm6", "%xmm7", | "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -235,9 +235,11 @@ static void dgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT | |||||
| "r" (ap[3]), // 7 | "r" (ap[3]), // 7 | ||||
| "r" (alpha) // 8 | "r" (alpha) // 8 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", | "%xmm4", "%xmm5", | ||||
| "%xmm6", "%xmm7", | "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -117,7 +117,9 @@ static void dgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) | |||||
| "r" (ap[2]), // 6 | "r" (ap[2]), // 6 | ||||
| "r" (ap[3]) // 7 | "r" (ap[3]) // 7 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -67,7 +67,8 @@ static void saxpy_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (y), // 3 | "r" (y), // 3 | ||||
| "r" (alpha) // 4 | "r" (alpha) // 4 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| @@ -86,7 +86,8 @@ static void saxpy_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (y), // 3 | "r" (y), // 3 | ||||
| "r" (alpha) // 4 | "r" (alpha) // 4 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| @@ -147,7 +148,8 @@ static void saxpy_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (y), // 3 | "r" (y), // 3 | ||||
| "r" (alpha) // 4 | "r" (alpha) // 4 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| @@ -87,8 +87,9 @@ static void sdot_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) | |||||
| "r" (y), // 3 | "r" (y), // 3 | ||||
| "r" (dot) // 4 | "r" (dot) // 4 | ||||
| : "cc", | : "cc", | ||||
| "%xmm4", "%xmm5", | |||||
| "%xmm6", "%xmm7", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -90,8 +90,9 @@ static void sdot_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) | |||||
| "r" (y), // 3 | "r" (y), // 3 | ||||
| "r" (dot) // 4 | "r" (dot) // 4 | ||||
| : "cc", | : "cc", | ||||
| "%xmm4", "%xmm5", | |||||
| "%xmm6", "%xmm7", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -164,11 +164,9 @@ static void sgemv_kernel_4x8( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, BLASLO | |||||
| "r" (ap[3]), // 8 | "r" (ap[3]), // 8 | ||||
| "r" (alpha) // 9 | "r" (alpha) // 9 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", | |||||
| "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -286,9 +284,9 @@ static void sgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT | |||||
| "r" (ap[3]), // 7 | "r" (ap[3]), // 7 | ||||
| "r" (alpha) // 8 | "r" (alpha) // 8 | ||||
| : "cc", | : "cc", | ||||
| "%xmm4", "%xmm5", | |||||
| "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | |||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -138,7 +138,9 @@ static void sgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) | |||||
| "r" (ap[2]), // 6 | "r" (ap[2]), // 6 | ||||
| "r" (ap[3]) // 7 | "r" (ap[3]) // 7 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | |||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -122,7 +122,7 @@ static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| @@ -189,9 +189,10 @@ static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | |||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -120,7 +120,7 @@ static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| @@ -108,9 +108,10 @@ static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | |||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| return; | return; | ||||
| @@ -185,9 +186,10 @@ static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | |||||
| "memory" | "memory" | ||||
| ); | ); | ||||
| @@ -122,7 +122,7 @@ static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | "%xmm12", "%xmm13", "%xmm14", "%xmm15", | ||||
| @@ -189,9 +189,10 @@ static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) | |||||
| "r" (alpha), // 4 | "r" (alpha), // 4 | ||||
| "r" (mvec) // 5 | "r" (mvec) // 5 | ||||
| : "cc", | : "cc", | ||||
| "%xmm0", "%xmm1", | |||||
| "%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7", | "%xmm4", "%xmm5", "%xmm6", "%xmm7", | ||||
| "%xmm8", "%xmm9", "%xmm10", "%xmm11", | "%xmm8", "%xmm9", "%xmm10", "%xmm11", | ||||
| "%xmm12", "%xmm13", "%xmm14", "%xmm15", | |||||
| "memory" | "memory" | ||||
| ); | ); | ||||