From b206fc7075ad39f5de144a894fe32b8865c243fd Mon Sep 17 00:00:00 2001 From: Xianyi Zhang Date: Fri, 13 May 2011 02:34:30 +0800 Subject: [PATCH] Fixed #28. Convert the result to double precision in the end of dsdot kernel. --- Changelog.txt | 3 ++- kernel/Makefile.L1 | 2 +- kernel/x86_64/dot_sse.S | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 2035dbce1..2b5dc3a94 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -19,7 +19,8 @@ common: * Fixed #25 a wrong result of rotmg. x86/x86_64: - * + * Fixed #28 a wrong result of dsdot on x86_64. + MIPS64: * ==================================================================== diff --git a/kernel/Makefile.L1 b/kernel/Makefile.L1 index 317f14363..b08664a8e 100644 --- a/kernel/Makefile.L1 +++ b/kernel/Makefile.L1 @@ -668,7 +668,7 @@ $(KDIR)qdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)qdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNEL $(CC) -c $(CFLAGS) -UCOMPLEX -DXDOUBLE $< -o $@ $(KDIR)dsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)dsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL) - $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $@ + $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE -DDSDOT $< -o $@ $(KDIR)sdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)sdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL) $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $@ diff --git a/kernel/x86_64/dot_sse.S b/kernel/x86_64/dot_sse.S index cc866a9c5..61c481064 100644 --- a/kernel/x86_64/dot_sse.S +++ b/kernel/x86_64/dot_sse.S @@ -1286,6 +1286,10 @@ haddps %xmm0, %xmm0 #endif +#ifdef DSDOT + cvtss2sd %xmm0, %xmm0 +#endif + RESTOREREGISTERS ret