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