Refs #173. Fixed overflow internal buffer bug of sgemv_t on x86

This commit is contained in:
Zhang Xianyi 2012-12-25 09:10:17 +08:00
parent 91ed4e4450
commit 0d1518add9
1 changed files with 9 additions and 3 deletions

View File

@ -89,7 +89,7 @@
#endif
#define STACKSIZE 16
#define ARGS 16
#define ARGS 20
#define M 4 + STACKSIZE+ARGS(%esp)
#define N 8 + STACKSIZE+ARGS(%esp)
@ -106,6 +106,7 @@
#define NN 4+STACKSIZE(%esp)
#define AA 8+STACKSIZE(%esp)
#define LDAX 12+STACKSIZE(%esp)
#define XX 16+STACKSIZE(%esp)
#define I %eax
#define J %ebx
@ -130,6 +131,8 @@
movl STACK_LDA, LDA
movl LDA,LDAX # backup LDA
movl STACK_X, X
movl X,XX
movl N,J
movl J,NN # backup N
movl A,J
@ -139,7 +142,7 @@
.L0t:
xorl J,J
addl $1,J
sall $23,J # J=2^22
sall $21,J # J=2^22
subl J,MMM # MMM=MMM-J
movl J,M
jge .L00t
@ -159,8 +162,8 @@
movl LDAX, LDA # reset LDA
movl XX,X
movl STACK_X, X
movl STACK_INCX, INCX
movl STACK_INCY, INCY
@ -683,6 +686,9 @@
movl M,J
leal (,J,SIZE),%eax
addl %eax,AA
movl XX,J
addl %eax,J
movl J,XX
jmp .L0t
ALIGN_4