Fixed #395. Enable optimized cgemm for Sandybridge. Added optimized sdot kernel.
authorZhang Xianyi <traits.zhang@gmail.com>
Sun, 29 Jun 2014 02:34:51 +0000 (10:34 +0800)
committerZhang Xianyi <traits.zhang@gmail.com>
Sun, 29 Jun 2014 02:34:51 +0000 (10:34 +0800)
Fixed c/zgemm, zgemv computational error of haswell, piledriver, bullldozer, and
barcelona on Windows.

Merge branch 'develop' of https://github.com/wernsaar/OpenBLAS into wernsaar-develop

Conflicts:
kernel/Makefile.L1
kernel/x86_64/KERNEL
param.h

1  2 
Makefile
kernel/Makefile.L1
kernel/x86_64/KERNEL
kernel/x86_64/KERNEL.BARCELONA
kernel/x86_64/KERNEL.BOBCAT
kernel/x86_64/KERNEL.BULLDOZER
kernel/x86_64/KERNEL.OPTERON_SSE3
kernel/x86_64/KERNEL.PILEDRIVER
kernel/x86_64/KERNEL.PRESCOTT
kernel/x86_64/KERNEL.SANDYBRIDGE
param.h

diff --cc Makefile
Simple merge
@@@ -618,184 -618,196 +618,196 @@@ $(KDIR)iqmin_k$(TSUFFIX).$(SUFFIX)  $(K
        $(CC) -c $(CFLAGS) -UCOMPLEX -DXDOUBLE -UUSE_ABS -DUSE_MIN $< -o $@
  
  
 -$(KDIR)sasum_k$(TSUFFIX).$(SUFFIX)   $(KDIR)sasum_k$(TPSUFFIX).$(PSUFFIX)   : $(KERNELDIR)/$(SASUMKERNEL) 
 +$(KDIR)sasum_k$(TSUFFIX).$(SUFFIX)   $(KDIR)sasum_k$(TPSUFFIX).$(PSUFFIX)   : $(KERNELDIR)/$(SASUMKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)dasum_k$(TSUFFIX).$(SUFFIX)   $(KDIR)dasum_k$(TPSUFFIX).$(PSUFFIX)   : $(KERNELDIR)/$(DASUMKERNEL) 
 +$(KDIR)dasum_k$(TSUFFIX).$(SUFFIX)   $(KDIR)dasum_k$(TPSUFFIX).$(PSUFFIX)   : $(KERNELDIR)/$(DASUMKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)qasum_k$(TSUFFIX).$(SUFFIX)   $(KDIR)qasum_k$(TPSUFFIX).$(PSUFFIX)   : $(KERNELDIR)/$(QASUMKERNEL) 
 +$(KDIR)qasum_k$(TSUFFIX).$(SUFFIX)   $(KDIR)qasum_k$(TPSUFFIX).$(PSUFFIX)   : $(KERNELDIR)/$(QASUMKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)casum_k$(TSUFFIX).$(SUFFIX)  $(KDIR)casum_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CASUMKERNEL) 
 +$(KDIR)casum_k$(TSUFFIX).$(SUFFIX)  $(KDIR)casum_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CASUMKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)zasum_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zasum_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZASUMKERNEL) 
 +$(KDIR)zasum_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zasum_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZASUMKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)xasum_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xasum_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XASUMKERNEL) 
 +$(KDIR)xasum_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xasum_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XASUMKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)saxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)saxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SAXPYKERNEL) 
 +$(KDIR)saxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)saxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SAXPYKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)daxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)daxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DAXPYKERNEL) 
 +$(KDIR)daxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)daxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DAXPYKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)qaxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qaxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QAXPYKERNEL) 
 +$(KDIR)qaxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qaxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QAXPYKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)caxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)caxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CAXPYKERNEL) 
 +$(KDIR)caxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)caxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CAXPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -UCONJ -UDOUBLE $< -o $@
  
 -$(KDIR)zaxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zaxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZAXPYKERNEL) 
 +$(KDIR)zaxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zaxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZAXPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -UCONJ -DDOUBLE $< -o $@
  
 -$(KDIR)xaxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xaxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XAXPYKERNEL) 
 +$(KDIR)xaxpy_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xaxpy_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XAXPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -UCONJ -DXDOUBLE $< -o $@
  
 -$(KDIR)caxpyc_k$(TSUFFIX).$(SUFFIX)  $(KDIR)caxpyc_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CAXPYKERNEL) 
 +$(KDIR)caxpyc_k$(TSUFFIX).$(SUFFIX)  $(KDIR)caxpyc_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CAXPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -DCONJ -UDOUBLE $< -o $@
  
 -$(KDIR)zaxpyc_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zaxpyc_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZAXPYKERNEL) 
 +$(KDIR)zaxpyc_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zaxpyc_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZAXPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -DCONJ -DDOUBLE $< -o $@
  
 -$(KDIR)xaxpyc_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xaxpyc_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XAXPYKERNEL) 
 +$(KDIR)xaxpyc_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xaxpyc_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XAXPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -DCONJ -DXDOUBLE $< -o $@
  
 -$(KDIR)scopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)scopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SCOPYKERNEL) 
 +$(KDIR)scopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)scopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SCOPYKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE -UCOMPLEX -DC_INTERFACE $< -o $@
  
 -$(KDIR)dcopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)dcopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DCOPYKERNEL) 
 +$(KDIR)dcopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)dcopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DCOPYKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DDOUBLE -UCOMPLEX -DC_INTERFACE $< -o $@
  
 -$(KDIR)qcopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)qcopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(QCOPYKERNEL) 
 +$(KDIR)qcopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)qcopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(QCOPYKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DXDOUBLE -UCOMPLEX -DC_INTERFACE $< -o $@
  
 -$(KDIR)ccopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)ccopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(CCOPYKERNEL) 
 +$(KDIR)ccopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)ccopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(CCOPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -UDOUBLE -DCOMPLEX -DC_INTERFACE $< -o $@
  
 -$(KDIR)zcopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)zcopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(ZCOPYKERNEL) 
 +$(KDIR)zcopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)zcopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(ZCOPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DDOUBLE -DCOMPLEX -DC_INTERFACE $< -o $@
  
 -$(KDIR)xcopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)xcopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(XCOPYKERNEL) 
 +$(KDIR)xcopy_k$(TSUFFIX).$(SUFFIX) $(KDIR)xcopy_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(XCOPYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE -DCOMPLEX -DC_INTERFACE $< -o $@
  
 -$(KDIR)ddot_k$(TSUFFIX).$(SUFFIX) $(KDIR)ddot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DDOTKERNEL) 
 +$(KDIR)ddot_k$(TSUFFIX).$(SUFFIX) $(KDIR)ddot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DDOTKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)qdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)qdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(QDOTKERNEL) 
 +$(KDIR)qdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)qdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(QDOTKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DXDOUBLE $< -o $@
  
- $(KDIR)dsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)dsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL)
-       $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE -DDSDOT $< -o $@
 -$(KDIR)sdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)sdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL) 
 +$(KDIR)sdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)sdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)dsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)dsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DSDOTKERNEL) 
+ ifdef DSDOTKERNEL
 -$(KDIR)sdsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)sdsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DSDOTKERNEL) 
++$(KDIR)dsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)dsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DSDOTKERNEL)
+       $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE -DDSDOT $< -o $@
 -$(KDIR)dsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)dsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL) 
++$(KDIR)sdsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)sdsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(DSDOTKERNEL)
+       $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE -DDSDOT $< -o $@
+ else
 -$(KDIR)sdsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)sdsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL) 
++$(KDIR)dsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)dsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL)
+       $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE -DDSDOT $< -o $@
 +$(KDIR)sdsdot_k$(TSUFFIX).$(SUFFIX) $(KDIR)sdsdot_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(SDOTKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE -DDSDOT $< -o $@
  
 -$(KDIR)zdotu_k$(TSUFFIX).$(SUFFIX) $(KDIR)zdotu_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(ZDOTKERNEL) 
+ endif
 +$(KDIR)zdotu_k$(TSUFFIX).$(SUFFIX) $(KDIR)zdotu_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(ZDOTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DDOUBLE -UCONJ $< -o $@
  
 -$(KDIR)zdotc_k$(TSUFFIX).$(SUFFIX) $(KDIR)zdotc_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(ZDOTKERNEL) 
 +$(KDIR)zdotc_k$(TSUFFIX).$(SUFFIX) $(KDIR)zdotc_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(ZDOTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DDOUBLE -DCONJ $< -o $@
  
 -$(KDIR)xdotu_k$(TSUFFIX).$(SUFFIX) $(KDIR)xdotu_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(XDOTKERNEL) 
 +$(KDIR)xdotu_k$(TSUFFIX).$(SUFFIX) $(KDIR)xdotu_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(XDOTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE -UCONJ $< -o $@
  
 -$(KDIR)xdotc_k$(TSUFFIX).$(SUFFIX) $(KDIR)xdotc_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(XDOTKERNEL) 
 +$(KDIR)xdotc_k$(TSUFFIX).$(SUFFIX) $(KDIR)xdotc_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(XDOTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE -DCONJ $< -o $@
  
 -$(KDIR)cdotu_k$(TSUFFIX).$(SUFFIX) $(KDIR)cdotu_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(CDOTKERNEL) 
 +$(KDIR)cdotu_k$(TSUFFIX).$(SUFFIX) $(KDIR)cdotu_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(CDOTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -UDOUBLE -UCONJ $< -o $@
  
 -$(KDIR)cdotc_k$(TSUFFIX).$(SUFFIX) $(KDIR)cdotc_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(CDOTKERNEL) 
 +$(KDIR)cdotc_k$(TSUFFIX).$(SUFFIX) $(KDIR)cdotc_k$(TPSUFFIX).$(PSUFFIX) : $(KERNELDIR)/$(CDOTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -UDOUBLE -DCONJ $< -o $@
  
 -$(KDIR)snrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)snrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SNRM2KERNEL) 
 +$(KDIR)snrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)snrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SNRM2KERNEL)
        $(CC) $(CFLAGS) -UCOMPLEX -c -UDOUBLE $< -o $@
  
 -$(KDIR)dnrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)dnrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DNRM2KERNEL) 
 +$(KDIR)dnrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)dnrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DNRM2KERNEL)
        $(CC) $(CFLAGS) -UCOMPLEX -c -DDOUBLE $< -o $@
  
 -$(KDIR)qnrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qnrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QNRM2KERNEL) 
 +$(KDIR)qnrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qnrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QNRM2KERNEL)
        $(CC) $(CFLAGS) -UCOMPLEX -c -DXDOUBLE $< -o $@
  
 -$(KDIR)cnrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)cnrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CNRM2KERNEL) 
 +$(KDIR)cnrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)cnrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CNRM2KERNEL)
        $(CC) $(CFLAGS) -DCOMPLEX -c -UDOUBLE $< -o $@
  
 -$(KDIR)znrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)znrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZNRM2KERNEL) 
 +$(KDIR)znrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)znrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZNRM2KERNEL)
        $(CC) $(CFLAGS) -DCOMPLEX -c -DDOUBLE $< -o $@
  
 -$(KDIR)xnrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xnrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XNRM2KERNEL) 
 +$(KDIR)xnrm2_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xnrm2_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XNRM2KERNEL)
        $(CC) $(CFLAGS) -DCOMPLEX -c -DXDOUBLE $< -o $@
  
 -$(KDIR)srot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)srot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SROTKERNEL) 
 +$(KDIR)srot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)srot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SROTKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UCOMPLEX -UDOUBLE  $< -o $@
  
 -$(KDIR)drot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)drot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DROTKERNEL) 
 +$(KDIR)drot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)drot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DROTKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UCOMPLEX -DDOUBLE  $< -o $@
  
 -$(KDIR)qrot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qrot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QROTKERNEL) 
 +$(KDIR)qrot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qrot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QROTKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)csrot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)csrot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CROTKERNEL) 
 +$(KDIR)csrot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)csrot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CROTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -UDOUBLE  $< -o $@
  
 -$(KDIR)zdrot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zdrot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZROTKERNEL) 
 +$(KDIR)zdrot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zdrot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZROTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -DDOUBLE  $< -o $@
  
 -$(KDIR)xqrot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xqrot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XROTKERNEL) 
 +$(KDIR)xqrot_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xqrot_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XROTKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)sscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)sscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SSCALKERNEL) 
 +$(KDIR)sscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)sscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SSCALKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)dscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)dscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DSCALKERNEL) 
 +$(KDIR)dscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)dscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DSCALKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)qscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QSCALKERNEL) 
 +$(KDIR)qscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QSCALKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)cscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)cscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CSCALKERNEL) 
 +$(KDIR)cscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)cscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CSCALKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)zscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZSCALKERNEL) 
 +$(KDIR)zscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZSCALKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)xscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XSCALKERNEL) 
 +$(KDIR)xscal_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xscal_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XSCALKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)sswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)sswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SSWAPKERNEL) 
 +$(KDIR)sswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)sswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SSWAPKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)dswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)dswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DSWAPKERNEL) 
 +$(KDIR)dswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)dswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DSWAPKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)qswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QSWAPKERNEL) 
 +$(KDIR)qswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)qswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(QSWAPKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)cswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)cswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CSWAPKERNEL) 
 +$(KDIR)cswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)cswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CSWAPKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)zswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZSWAPKERNEL) 
 +$(KDIR)zswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZSWAPKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)xswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XSWAPKERNEL) 
 +$(KDIR)xswap_k$(TSUFFIX).$(SUFFIX)  $(KDIR)xswap_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(XSWAPKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE $< -o $@
  
 -$(KDIR)saxpby_k$(TSUFFIX).$(SUFFIX)  $(KDIR)saxpby_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SAXPBYKERNEL) 
 +$(KDIR)saxpby_k$(TSUFFIX).$(SUFFIX)  $(KDIR)saxpby_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(SAXPBYKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UCOMPLEX -UDOUBLE $< -o $@
  
 -$(KDIR)daxpby_k$(TSUFFIX).$(SUFFIX)  $(KDIR)daxpby_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DAXPBYKERNEL) 
 +$(KDIR)daxpby_k$(TSUFFIX).$(SUFFIX)  $(KDIR)daxpby_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(DAXPBYKERNEL)
        $(CC) -c $(CFLAGS) -UCOMPLEX -UCOMPLEX -DDOUBLE $< -o $@
  
 -$(KDIR)caxpby_k$(TSUFFIX).$(SUFFIX)  $(KDIR)caxpby_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CAXPBYKERNEL) 
 +$(KDIR)caxpby_k$(TSUFFIX).$(SUFFIX)  $(KDIR)caxpby_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(CAXPBYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -UCONJ -UDOUBLE $< -o $@
  
 -$(KDIR)zaxpby_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zaxpby_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZAXPBYKERNEL) 
 +$(KDIR)zaxpby_k$(TSUFFIX).$(SUFFIX)  $(KDIR)zaxpby_k$(TPSUFFIX).$(PSUFFIX)  : $(KERNELDIR)/$(ZAXPBYKERNEL)
        $(CC) -c $(CFLAGS) -DCOMPLEX -DCOMPLEX -UCONJ -DDOUBLE $< -o $@
  
  
@@@ -119,9 -119,15 +119,15 @@@ XCOPYKERNEL = zcopy.
  endif
  
  ifndef SDOTKERNEL
- SDOTKERNEL = ../arm/dot.c
 -SDOTKERNEL = dot_sse.S 
++SDOTKERNEL = dot_sse.S
  endif
  
+ ifndef DSDOTKERNEL
+ DSDOTKERNEL = ../arm/dot.c 
+ endif
  ifndef DDOTKERNEL
  DDOTKERNEL =  dot_sse2.S
  endif
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc param.h
Simple merge