Fixed #28. Convert the result to double precision in MIPS64 dsdot_k kernel.

This commit is contained in:
Xianyi Zhang 2011-05-17 21:24:00 +00:00
parent 830a823be1
commit fcb5ce011b
3 changed files with 16 additions and 8 deletions

View File

@ -1,7 +1,7 @@
OpenBLAS ChangeLog OpenBLAS ChangeLog
==================================================================== ====================================================================
Version 0.1 alpha2(in development) Version 0.1 alpha2(in development)
0;136;0c
common: common:
* Fixed blasint undefined bug in <cblas.h> file. Other software * Fixed blasint undefined bug in <cblas.h> file. Other software
could include this header successfully(Refs issue #13 on github) could include this header successfully(Refs issue #13 on github)
@ -22,7 +22,8 @@ x86/x86_64:
* Fixed #28 a wrong result of dsdot on x86_64. * Fixed #28 a wrong result of dsdot on x86_64.
MIPS64: MIPS64:
* * Fixed #28 a wrong result of dsdot on Loongson3A/MIPS64.
==================================================================== ====================================================================
Version 0.1 alpha1 Version 0.1 alpha1
20-Mar-2011 20-Mar-2011

View File

@ -49,6 +49,7 @@ double NAME(blasint *N, float *x, blasint *INCX, float *y, blasint *INCY){
BLASLONG n = *N; BLASLONG n = *N;
BLASLONG incx = *INCX; BLASLONG incx = *INCX;
BLASLONG incy = *INCY; BLASLONG incy = *INCY;
double ret = 0.0;
PRINT_DEBUG_NAME; PRINT_DEBUG_NAME;
@ -61,13 +62,13 @@ double NAME(blasint *N, float *x, blasint *INCX, float *y, blasint *INCY){
if (incx < 0) x -= (n - 1) * incx; if (incx < 0) x -= (n - 1) * incx;
if (incy < 0) y -= (n - 1) * incy; if (incy < 0) y -= (n - 1) * incy;
return DSDOT_K(n, x, incx, y, incy); ret=DSDOT_K(n, x, incx, y, incy);
FUNCTION_PROFILE_END(1, n, n); FUNCTION_PROFILE_END(1, n, n);
IDEBUG_END; IDEBUG_END;
return 0; return ret;
} }
@ -75,6 +76,8 @@ double NAME(blasint *N, float *x, blasint *INCX, float *y, blasint *INCY){
double CNAME(blasint n, float *x, blasint incx, float *y, blasint incy){ double CNAME(blasint n, float *x, blasint incx, float *y, blasint incy){
double ret = 0.0;
PRINT_DEBUG_CNAME; PRINT_DEBUG_CNAME;
if (n <= 0) return 0; if (n <= 0) return 0;
@ -86,13 +89,13 @@ double CNAME(blasint n, float *x, blasint incx, float *y, blasint incy){
if (incx < 0) x -= (n - 1) * incx; if (incx < 0) x -= (n - 1) * incx;
if (incy < 0) y -= (n - 1) * incy; if (incy < 0) y -= (n - 1) * incy;
return DSDOT_K(n, x, incx, y, incy); ret=DSDOT_K(n, x, incx, y, incy);
FUNCTION_PROFILE_END(1, n, n); FUNCTION_PROFILE_END(1, n, n);
IDEBUG_END; IDEBUG_END;
return 0; return ret;
} }

View File

@ -300,7 +300,11 @@
.align 3 .align 3
.L999: .L999:
j $31
ADD s1, s1, s2 ADD s1, s1, s2
#ifdef DSDOT
cvt.d.s s1, s1
#endif
j $31
NOP
EPILOGUE EPILOGUE