Skip to content

Commit 0d1518a

Browse files
committed
Refs #173. Fixed overflow internal buffer bug of sgemv_t on x86
1 parent 91ed4e4 commit 0d1518a

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

kernel/x86/gemv_t_sse.S

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
#endif
9090

9191
#define STACKSIZE 16
92-
#define ARGS 16
92+
#define ARGS 20
9393

9494
#define M 4 + STACKSIZE+ARGS(%esp)
9595
#define N 8 + STACKSIZE+ARGS(%esp)
@@ -106,6 +106,7 @@
106106
#define NN 4+STACKSIZE(%esp)
107107
#define AA 8+STACKSIZE(%esp)
108108
#define LDAX 12+STACKSIZE(%esp)
109+
#define XX 16+STACKSIZE(%esp)
109110

110111
#define I %eax
111112
#define J %ebx
@@ -130,6 +131,8 @@
130131

131132
movl STACK_LDA, LDA
132133
movl LDA,LDAX # backup LDA
134+
movl STACK_X, X
135+
movl X,XX
133136
movl N,J
134137
movl J,NN # backup N
135138
movl A,J
@@ -139,7 +142,7 @@
139142
.L0t:
140143
xorl J,J
141144
addl $1,J
142-
sall $23,J # J=2^22
145+
sall $21,J # J=2^22
143146
subl J,MMM # MMM=MMM-J
144147
movl J,M
145148
jge .L00t
@@ -159,8 +162,8 @@
159162

160163

161164
movl LDAX, LDA # reset LDA
165+
movl XX,X
162166

163-
movl STACK_X, X
164167
movl STACK_INCX, INCX
165168
movl STACK_INCY, INCY
166169

@@ -683,6 +686,9 @@
683686
movl M,J
684687
leal (,J,SIZE),%eax
685688
addl %eax,AA
689+
movl XX,J
690+
addl %eax,J
691+
movl J,XX
686692
jmp .L0t
687693
ALIGN_4
688694

0 commit comments

Comments
 (0)