extension since version 3.0. If neither are available, use a compatible
structure as fallback (see Clause 6.2.5.13 of the C99 standard). */
#if (defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \
- (__GNUC__ >= 3 && !defined(__cplusplus)) || \
- _MSC_VER >= 1800) // Visual Studio 2013 supports complex
+ (__GNUC__ >= 3 && !defined(__cplusplus)) )
#define OPENBLAS_COMPLEX_C99
#ifndef __cplusplus
#include <complex.h>
set(DISABLE_COMPLEX 0)
set(MANGLE_COMPLEX 3)
if (CBLAS_FLAG EQUAL 1)
- set(DISABLE_COMPLEX 1)
- set(MANGLE_COMPLEX 1)
+# set(DISABLE_COMPLEX 1)
+# set(MANGLE_COMPLEX 1)
endif ()
GenerateNamedObjects("${BLAS1_SOURCES}" "" "" ${CBLAS_FLAG} "" "" false ${DISABLE_COMPLEX})
GenerateNamedObjects("${BLAS1_REAL_ONLY_SOURCES}" "" "" ${CBLAS_FLAG} "" "" false 1)
GenerateNamedObjects("imax.c" "USE_ABS;USE_MIN" "i*amin" ${CBLAS_FLAG})
GenerateNamedObjects("imax.c" "USE_MIN" "i*min" ${CBLAS_FLAG})
-endforeach ()
# complex-specific sources
foreach (float_type ${FLOAT_TYPES})
if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX")
- GenerateNamedObjects("zger.c" "" "geru" false "" "" false ${float_type})
- GenerateNamedObjects("zger.c" "CONJ" "gerc" false "" "" false ${float_type})
- GenerateNamedObjects("zdot.c" "CONJ" "dotc" false "" "" false ${float_type})
- GenerateNamedObjects("zdot.c" "" "dotu" false "" "" false ${float_type})
+ GenerateNamedObjects("zger.c" "" "geru" ${CBLAS_FLAG} "" "" false ${float_type})
+ GenerateNamedObjects("zger.c" "CONJ" "gerc" ${CBLAS_FLAG} "" "" false ${float_type})
+ GenerateNamedObjects("zdot.c" "CONJ" "dotc" ${CBLAS_FLAG} "" "" false ${float_type})
+ GenerateNamedObjects("zdot.c" "" "dotu" ${CBLAS_FLAG} "" "" false ${float_type})
- GenerateNamedObjects("symm.c" "HEMM" "hemm" false "" "" false ${float_type})
- GenerateNamedObjects("syrk.c" "HEMM" "herk" false "" "" false ${float_type})
- GenerateNamedObjects("syr2k.c" "HEMM" "her2k" false "" "" false ${float_type})
+ GenerateNamedObjects("symm.c" "HEMM" "hemm" ${CBLAS_FLAG} "" "" false ${float_type})
+ GenerateNamedObjects("syrk.c" "HEMM" "herk" ${CBLAS_FLAG} "" "" false ${float_type})
+ GenerateNamedObjects("syr2k.c" "HEMM" "her2k" ${CBLAS_FLAG} "" "" false ${float_type})
if (USE_GEMM3M)
GenerateNamedObjects("gemm.c" "GEMM3M" "gemm3m" false "" "" false ${float_type})
endif()
endif ()
if (${float_type} STREQUAL "COMPLEX")
- GenerateNamedObjects("zscal.c" "SSCAL" "sscal" false "" "" false "COMPLEX")
- GenerateNamedObjects("nrm2.c" "" "scnrm2" false "" "" true "COMPLEX")
- GenerateNamedObjects("zrot.c" "" "csrot" false "" "" true "COMPLEX")
- GenerateNamedObjects("max.c" "USE_ABS;USE_MIN" "scamin" false "" "" true "COMPLEX")
- GenerateNamedObjects("max.c" "USE_ABS" "scamax" false "" "" true "COMPLEX")
- GenerateNamedObjects("asum.c" "" "scasum" false "" "" true "COMPLEX")
+ GenerateNamedObjects("zscal.c" "SSCAL" "sscal" ${CBLAS_FLAG} "" "" false "COMPLEX")
+ GenerateNamedObjects("nrm2.c" "" "scnrm2" ${CBLAS_FLAG} "" "" true "COMPLEX")
+ GenerateNamedObjects("zrot.c" "" "csrot" ${CBLAS_FLAG} "" "" true "COMPLEX")
+ GenerateNamedObjects("max.c" "USE_ABS;USE_MIN" "scamin" ${CBLAS_FLAG} "" "" true "COMPLEX")
+ GenerateNamedObjects("max.c" "USE_ABS" "scamax" ${CBLAS_FLAG} "" "" true "COMPLEX")
+ GenerateNamedObjects("asum.c" "" "scasum" ${CBLAS_FLAG} "" "" true "COMPLEX")
endif ()
if (${float_type} STREQUAL "ZCOMPLEX")
- GenerateNamedObjects("zscal.c" "SSCAL" "dscal" false "" "" false "ZCOMPLEX")
- GenerateNamedObjects("nrm2.c" "" "dznrm2" false "" "" true "ZCOMPLEX")
- GenerateNamedObjects("zrot.c" "" "zdrot" false "" "" true "ZCOMPLEX")
- GenerateNamedObjects("max.c" "USE_ABS;USE_MIN" "dzamin" false "" "" true "ZCOMPLEX")
- GenerateNamedObjects("max.c" "USE_ABS" "dzamax" false "" "" true "ZCOMPLEX")
- GenerateNamedObjects("asum.c" "" "dzasum" false "" "" true "ZCOMPLEX")
+ GenerateNamedObjects("zscal.c" "SSCAL" "dscal" ${CBLAS_FLAG} "" "" false "ZCOMPLEX")
+ GenerateNamedObjects("nrm2.c" "" "dznrm2" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
+ GenerateNamedObjects("zrot.c" "" "zdrot" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
+ GenerateNamedObjects("max.c" "USE_ABS;USE_MIN" "dzamin" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
+ GenerateNamedObjects("max.c" "USE_ABS" "dzamax" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
+ GenerateNamedObjects("asum.c" "" "dzasum" ${CBLAS_FLAG} "" "" true "ZCOMPLEX")
endif ()
endforeach ()
+endforeach ()
+
+#Special functions for CBLAS
+if (NOT DEFINED NO_CBLAS)
+ foreach (float_type ${FLOAT_TYPES})
+ if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX")
+ #cblas_dotc_sub cblas_dotu_sub
+ GenerateNamedObjects("zdot.c" "FORCE_USE_STACK" "dotu_sub" 1 "" "" false ${float_type})
+ GenerateNamedObjects("zdot.c" "FORCE_USE_STACK;CONJ" "dotc_sub" 1 "" "" false ${float_type})
+ endif()
+ endforeach ()
+endif()
if (NOT DEFINED NO_LAPACK)
set(LAPACK_SOURCES
OPENBLAS_COMPLEX_FLOAT CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){
OPENBLAS_COMPLEX_FLOAT ret;
+ OPENBLAS_COMPLEX_FLOAT zero=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
#endif
PRINT_DEBUG_CNAME;
if (n <= 0) {
#ifdef FORCE_USE_STACK
- *result = OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
+ //*result = OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
+ CREAL(*result) = 0.0;
+ CIMAG(*result) = 0.0;
return;
#else
- return OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
+ return zero;
#endif
}
blasint info, t;
#ifdef SMP
int nthreads;
+ int nthreads_max;
+ int nthreads_avail;
+ double MNK;
#endif
int (*gemv[])(BLASLONG, BLASLONG, BLASLONG, FLOAT, FLOAT, FLOAT *, BLASLONG,
FLOAT *buffer;
int trans, uplo;
blasint info;
+ FLOAT * ALPHA = α
+ FLOAT alpha_r = ALPHA[0];
+ FLOAT alpha_i = ALPHA[1];
#ifdef SMP
int nthreads;
#endif
GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RTC}" "CONJ;ROWM" "omatcopy_k_rtc" false "" "" false ${float_type})
endif()
+ #imatcopy
+ if (NOT DEFINED ${float_char}IMATCOPY_CN)
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ set(${float_char}IMATCOPY_CN ../generic/zimatcopy_cn.c)
+ else ()
+ set(${float_char}IMATCOPY_CN ../generic/imatcopy_cn.c)
+ endif ()
+ endif ()
+
+ if (NOT DEFINED ${float_char}IMATCOPY_RN)
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ set(${float_char}IMATCOPY_RN ../generic/zimatcopy_rn.c)
+ else ()
+ set(${float_char}IMATCOPY_RN ../generic/imatcopy_rn.c)
+ endif ()
+ endif ()
+
+ if (NOT DEFINED ${float_char}IMATCOPY_CT)
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ set(${float_char}IMATCOPY_CT ../generic/zimatcopy_ct.c)
+ else ()
+ set(${float_char}IMATCOPY_CT ../generic/imatcopy_ct.c)
+ endif ()
+ endif ()
+
+ if (NOT DEFINED ${float_char}IMATCOPY_RT)
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ set(${float_char}IMATCOPY_RT ../generic/zimatcopy_rt.c)
+ else ()
+ set(${float_char}IMATCOPY_RT ../generic/imatcopy_rt.c)
+ endif ()
+ endif ()
+
+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CN}" "" "imatcopy_k_cn" false "" "" false ${float_type})
+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RN}" "ROWM" "imatcopy_k_rn" false "" "" false ${float_type})
+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CT}" "" "imatcopy_k_ct" false "" "" false ${float_type})
+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RT}" "ROWM" "imatcopy_k_rt" false "" "" false ${float_type})
+
+
+ if (NOT DEFINED ${float_char}IMATCOPY_CNC)
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ set(${float_char}IMATCOPY_CNC ../generic/zimatcopy_cnc.c)
+ endif ()
+ endif ()
+ if (NOT DEFINED ${float_char}IMATCOPY_RNC)
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ set(${float_char}IMATCOPY_RNC ../generic/zimatcopy_rnc.c)
+ endif ()
+ endif ()
+ if (NOT DEFINED ${float_char}IMATCOPY_CTC)
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ set(${float_char}IMATCOPY_CTC ../generic/zimatcopy_ctc.c)
+ endif ()
+ endif ()
+ if (NOT DEFINED ${float_char}IMATCOPY_RTC)
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ set(${float_char}IMATCOPY_RTC ../generic/zimatcopy_rtc.c)
+ endif ()
+ endif ()
+
+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C")
+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CNC}" "CONJ" "imatcopy_k_cnc" false "" "" false ${float_type})
+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RNC}" "CONJ;ROWM" "imatcopy_k_rnc" false "" "" false ${float_type})
+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CTC}" "CONJ" "imatcopy_k_ctc" false "" "" false ${float_type})
+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RTC}" "CONJ;ROWM" "imatcopy_k_rtc" false "" "" false ${float_type})
+ endif()
+
+ #geadd
GenerateNamedObjects("${KERNELDIR}/${${float_char}GEADD_KERNEL}" "" "geadd_k" false "" "" false ${float_type})
endforeach ()