Fixed #28. Convert the result to double precision in MIPS64 dsdot_k kernel.
This commit is contained in:
parent
830a823be1
commit
fcb5ce011b
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue