@@ -38,42 +38,42 @@ static void dgemv_kernel_4x8( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, BLASLO
38
38
__asm__ __volatile__
39
39
(
40
40
"vzeroupper \n\t"
41
- "vbroadcastsd (%2 ), %%ymm12 \n\t" // x0
42
- "vbroadcastsd 8(%2 ), %%ymm13 \n\t" // x1
43
- "vbroadcastsd 16(%2 ), %%ymm14 \n\t" // x2
44
- "vbroadcastsd 24(%2 ), %%ymm15 \n\t" // x3
45
- "vbroadcastsd 32(%2 ), %%ymm0 \n\t" // x4
46
- "vbroadcastsd 40(%2 ), %%ymm1 \n\t" // x5
47
- "vbroadcastsd 48(%2 ), %%ymm2 \n\t" // x6
48
- "vbroadcastsd 56(%2 ), %%ymm3 \n\t" // x7
41
+ "vbroadcastsd (%3 ), %%ymm12 \n\t" // x0
42
+ "vbroadcastsd 8(%3 ), %%ymm13 \n\t" // x1
43
+ "vbroadcastsd 16(%3 ), %%ymm14 \n\t" // x2
44
+ "vbroadcastsd 24(%3 ), %%ymm15 \n\t" // x3
45
+ "vbroadcastsd 32(%3 ), %%ymm0 \n\t" // x4
46
+ "vbroadcastsd 40(%3 ), %%ymm1 \n\t" // x5
47
+ "vbroadcastsd 48(%3 ), %%ymm2 \n\t" // x6
48
+ "vbroadcastsd 56(%3 ), %%ymm3 \n\t" // x7
49
49
50
50
"vbroadcastsd (%9), %%ymm6 \n\t" // alpha
51
51
52
52
"testq $0x04, %1 \n\t"
53
53
"jz 2f \n\t"
54
54
55
- "vmovupd (%3 ,%0,8), %%ymm7 \n\t" // 4 * y
55
+ "vmovupd (%4 ,%0,8), %%ymm7 \n\t" // 4 * y
56
56
"vxorpd %%ymm4 , %%ymm4, %%ymm4 \n\t"
57
57
"vxorpd %%ymm5 , %%ymm5, %%ymm5 \n\t"
58
58
59
- "vfmadd231pd (%4 ,%0,8), %%ymm12, %%ymm4 \n\t"
60
- "vfmadd231pd (%5 ,%0,8), %%ymm13, %%ymm5 \n\t"
61
- "vfmadd231pd (%6 ,%0,8), %%ymm14, %%ymm4 \n\t"
62
- "vfmadd231pd (%7 ,%0,8), %%ymm15, %%ymm5 \n\t"
59
+ "vfmadd231pd (%5 ,%0,8), %%ymm12, %%ymm4 \n\t"
60
+ "vfmadd231pd (%6 ,%0,8), %%ymm13, %%ymm5 \n\t"
61
+ "vfmadd231pd (%7 ,%0,8), %%ymm14, %%ymm4 \n\t"
62
+ "vfmadd231pd (%8 ,%0,8), %%ymm15, %%ymm5 \n\t"
63
63
64
- "vfmadd231pd (%4,%8 ,8), %%ymm0 , %%ymm4 \n\t"
65
- "vfmadd231pd (%5,%8 ,8), %%ymm1 , %%ymm5 \n\t"
66
- "vfmadd231pd (%6,%8 ,8), %%ymm2 , %%ymm4 \n\t"
67
- "vfmadd231pd (%7,%8 ,8), %%ymm3 , %%ymm5 \n\t"
64
+ "vfmadd231pd (%5,%2 ,8), %%ymm0 , %%ymm4 \n\t"
65
+ "vfmadd231pd (%6,%2 ,8), %%ymm1 , %%ymm5 \n\t"
66
+ "vfmadd231pd (%7,%2 ,8), %%ymm2 , %%ymm4 \n\t"
67
+ "vfmadd231pd (%8,%2 ,8), %%ymm3 , %%ymm5 \n\t"
68
68
69
69
"vaddpd %%ymm4 , %%ymm5 , %%ymm5 \n\t"
70
70
"vmulpd %%ymm6 , %%ymm5 , %%ymm5 \n\t"
71
71
"vaddpd %%ymm7 , %%ymm5 , %%ymm5 \n\t"
72
72
73
73
74
- "vmovupd %%ymm5, (%3 ,%0,8) \n\t" // 4 * y
74
+ "vmovupd %%ymm5, (%4 ,%0,8) \n\t" // 4 * y
75
75
76
- "addq $4 , %8 \n\t"
76
+ "addq $4 , %2 \n\t"
77
77
"addq $4 , %0 \n\t"
78
78
"subq $4 , %1 \n\t"
79
79
@@ -88,35 +88,35 @@ static void dgemv_kernel_4x8( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, BLASLO
88
88
89
89
"vxorpd %%ymm4 , %%ymm4, %%ymm4 \n\t"
90
90
"vxorpd %%ymm5 , %%ymm5, %%ymm5 \n\t"
91
- "vmovupd (%3 ,%0,8), %%ymm8 \n\t" // 4 * y
92
- "vmovupd 32(%3 ,%0,8), %%ymm9 \n\t" // 4 * y
93
-
94
- "vfmadd231pd (%4 ,%0,8), %%ymm12, %%ymm4 \n\t"
95
- "vfmadd231pd 32(%4 ,%0,8), %%ymm12, %%ymm5 \n\t"
96
- "vfmadd231pd (%5 ,%0,8), %%ymm13, %%ymm4 \n\t"
97
- "vfmadd231pd 32(%5 ,%0,8), %%ymm13, %%ymm5 \n\t"
98
- "vfmadd231pd (%6 ,%0,8), %%ymm14, %%ymm4 \n\t"
99
- "vfmadd231pd 32(%6 ,%0,8), %%ymm14, %%ymm5 \n\t"
100
- "vfmadd231pd (%7 ,%0,8), %%ymm15, %%ymm4 \n\t"
101
- "vfmadd231pd 32(%7 ,%0,8), %%ymm15, %%ymm5 \n\t"
102
-
103
- "vfmadd231pd (%4,%8 ,8), %%ymm0 , %%ymm4 \n\t"
91
+ "vmovupd (%4 ,%0,8), %%ymm8 \n\t" // 4 * y
92
+ "vmovupd 32(%4 ,%0,8), %%ymm9 \n\t" // 4 * y
93
+
94
+ "vfmadd231pd (%5 ,%0,8), %%ymm12, %%ymm4 \n\t"
95
+ "vfmadd231pd 32(%5 ,%0,8), %%ymm12, %%ymm5 \n\t"
96
+ "vfmadd231pd (%6 ,%0,8), %%ymm13, %%ymm4 \n\t"
97
+ "vfmadd231pd 32(%6 ,%0,8), %%ymm13, %%ymm5 \n\t"
98
+ "vfmadd231pd (%7 ,%0,8), %%ymm14, %%ymm4 \n\t"
99
+ "vfmadd231pd 32(%7 ,%0,8), %%ymm14, %%ymm5 \n\t"
100
+ "vfmadd231pd (%8 ,%0,8), %%ymm15, %%ymm4 \n\t"
101
+ "vfmadd231pd 32(%8 ,%0,8), %%ymm15, %%ymm5 \n\t"
102
+
103
+ "vfmadd231pd (%5,%2 ,8), %%ymm0 , %%ymm4 \n\t"
104
104
"addq $8 , %0 \n\t"
105
- "vfmadd231pd 32(%4,%8 ,8), %%ymm0 , %%ymm5 \n\t"
106
- "vfmadd231pd (%5,%8 ,8), %%ymm1 , %%ymm4 \n\t"
107
- "vfmadd231pd 32(%5,%8 ,8), %%ymm1 , %%ymm5 \n\t"
108
- "vfmadd231pd (%6,%8 ,8), %%ymm2 , %%ymm4 \n\t"
109
- "vfmadd231pd 32(%6,%8 ,8), %%ymm2 , %%ymm5 \n\t"
110
- "vfmadd231pd (%7,%8 ,8), %%ymm3 , %%ymm4 \n\t"
111
- "vfmadd231pd 32(%7,%8 ,8), %%ymm3 , %%ymm5 \n\t"
105
+ "vfmadd231pd 32(%5,%2 ,8), %%ymm0 , %%ymm5 \n\t"
106
+ "vfmadd231pd (%6,%2 ,8), %%ymm1 , %%ymm4 \n\t"
107
+ "vfmadd231pd 32(%6,%2 ,8), %%ymm1 , %%ymm5 \n\t"
108
+ "vfmadd231pd (%7,%2 ,8), %%ymm2 , %%ymm4 \n\t"
109
+ "vfmadd231pd 32(%7,%2 ,8), %%ymm2 , %%ymm5 \n\t"
110
+ "vfmadd231pd (%8,%2 ,8), %%ymm3 , %%ymm4 \n\t"
111
+ "vfmadd231pd 32(%8,%2 ,8), %%ymm3 , %%ymm5 \n\t"
112
112
113
113
"vfmadd231pd %%ymm6 , %%ymm4 , %%ymm8 \n\t"
114
114
"vfmadd231pd %%ymm6 , %%ymm5 , %%ymm9 \n\t"
115
115
116
- "addq $8 , %8 \n\t"
116
+ "addq $8 , %2 \n\t"
117
117
"vmovupd %%ymm8,-64(%3,%0,8) \n\t" // 4 * y
118
118
"subq $8 , %1 \n\t"
119
- "vmovupd %%ymm9,-32(%3 ,%0,8) \n\t" // 4 * y
119
+ "vmovupd %%ymm9,-32(%4 ,%0,8) \n\t" // 4 * y
120
120
121
121
"jnz 1b \n\t"
122
122
@@ -125,15 +125,15 @@ static void dgemv_kernel_4x8( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, BLASLO
125
125
126
126
:
127
127
"+r" (i ), // 0
128
- "+r" (n ) // 1
128
+ "+r" (n ), // 1
129
+ "+r" (lda4 ) // 2
129
130
:
130
- "r" (x ), // 2
131
- "r" (y ), // 3
132
- "r" (ap [0 ]), // 4
133
- "r" (ap [1 ]), // 5
134
- "r" (ap [2 ]), // 6
135
- "r" (ap [3 ]), // 7
136
- "r" (lda4 ), // 8
131
+ "r" (x ), // 3
132
+ "r" (y ), // 4
133
+ "r" (ap [0 ]), // 5
134
+ "r" (ap [1 ]), // 6
135
+ "r" (ap [2 ]), // 7
136
+ "r" (ap [3 ]), // 8
137
137
"r" (alpha ) // 9
138
138
: "cc" ,
139
139
"%xmm0" , "%xmm1" ,
0 commit comments