diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index a6eb14e73..31839b054 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,11 +1,8 @@ include_directories(${CMAKE_SOURCE_DIR}) -# TODO: need to read ${KERNELDIR}/KERNEL into CMake vars - # Makeflie -message(STATUS "${ARCH}") if (${ARCH} STREQUAL "x86") GenerateNamedObjects("${KERNELDIR}/cpuid.S" "") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) @@ -14,56 +11,74 @@ endif () # Makefile.L1 -# these are using hardcoded filenames for now, should get them from the KERNEL vars, e.g. DAMAXKERNEL instead of amax.S -GenerateNamedObjects("${KERNELDIR}/amax.S" "DOUBLE" "USE_ABS" "amax_k") +# TODO: need to read ${KERNELDIR}/KERNEL into CMake vars +set(DAMAXKERNEL amax.S) +set(DAMINKERNEL amax.S) +set(DMAXKERNEL amax.S) +set(DMINKERNEL amax.S) +set(IDAMAXKERNEL iamax.S) +set(IDAMINKERNEL iamax.S) +set(IDMAXKERNEL iamax.S) +set(IDMINKERNEL iamax.S) +set(DASUMKERNEL asum.S) +set(DAXPYKERNEL axpy.S) +set(DCOPYKERNEL copy.S) +set(DDOTKERNEL dot.S) +set(DNRM2KERNEL nrm2.S) +set(DROTKERNEL rot.S) +set(DSCALKERNEL scal.S) +set(DSWAPKERNEL swap.S) +set(DAXPBYKERNEL ../arm/axpby.c) + +GenerateNamedObjects("${KERNELDIR}/${DAMAXKERNEL}" "DOUBLE" "USE_ABS" "amax_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/amax.S" "DOUBLE" "USE_ABS;USE_MIN" "amin_k") +GenerateNamedObjects("${KERNELDIR}/${DAMINKERNEL}" "DOUBLE" "USE_ABS;USE_MIN" "amin_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/amax.S" "DOUBLE" "" "max_k") +GenerateNamedObjects("${KERNELDIR}/${DMAXKERNEL}" "DOUBLE" "" "max_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/amax.S" "DOUBLE" "" "min_k") +GenerateNamedObjects("${KERNELDIR}/${DMINKERNEL}" "DOUBLE" "" "min_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/iamax.S" "DOUBLE" "USE_ABS" "i*amax_k") +GenerateNamedObjects("${KERNELDIR}/${IDAMAXKERNEL}" "DOUBLE" "USE_ABS" "i*amax_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/iamax.S" "DOUBLE" "USE_ABS;USE_MIN" "i*amin_k") +GenerateNamedObjects("${KERNELDIR}/${IDAMINKERNEL}" "DOUBLE" "USE_ABS;USE_MIN" "i*amin_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/iamax.S" "DOUBLE" "" "i*max_k") +GenerateNamedObjects("${KERNELDIR}/${IDMAXKERNEL}" "DOUBLE" "" "i*max_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/iamax.S" "DOUBLE" "" "i*min_k") +GenerateNamedObjects("${KERNELDIR}/${IDMINKERNEL}" "DOUBLE" "" "i*min_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/asum.S" "DOUBLE" "" "asum_k") +GenerateNamedObjects("${KERNELDIR}/${DASUMKERNEL}" "DOUBLE" "" "asum_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/axpy.S" "DOUBLE" "" "axpy_k") +GenerateNamedObjects("${KERNELDIR}/${DAXPYKERNEL}" "DOUBLE" "" "axpy_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/copy.S" "DOUBLE" "C_INTERFACE" "copy_k") +GenerateNamedObjects("${KERNELDIR}/${DCOPYKERNEL}" "DOUBLE" "C_INTERFACE" "copy_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/dot.S" "DOUBLE" "" "dot_k") +GenerateNamedObjects("${KERNELDIR}/${DDOTKERNEL}" "DOUBLE" "" "dot_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/nrm2.S" "DOUBLE" "" "nrm2_k") +GenerateNamedObjects("${KERNELDIR}/${DNRM2KERNEL}" "DOUBLE" "" "nrm2_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/rot.S" "DOUBLE" "" "rot_k") +GenerateNamedObjects("${KERNELDIR}/${DROTKERNEL}" "DOUBLE" "" "rot_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/scal.S" "DOUBLE" "" "scal_k") +GenerateNamedObjects("${KERNELDIR}/${DSCALKERNEL}" "DOUBLE" "" "scal_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("${KERNELDIR}/swap.S" "DOUBLE" "" "swap_k") +GenerateNamedObjects("${KERNELDIR}/${DSWAPKERNEL}" "DOUBLE" "" "swap_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) -GenerateNamedObjects("arm/axpby.c" "DOUBLE" "" "axpby_k") +GenerateNamedObjects("${KERNELDIR}/${DAXPBYKERNEL}" "DOUBLE" "" "axpby_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) # Makefile.L2 @@ -81,17 +96,45 @@ GenerateNamedObjects("generic/ger.c" "DOUBLE" "" "ger_k") list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) # Makefile.L3 -#DKERNELOBJS += \ -# dgemm_kernel$(TSUFFIX).$(SUFFIX) \ -# $(DGEMMINCOPYOBJ) $(DGEMMITCOPYOBJ) \ -# $(DGEMMONCOPYOBJ) $(DGEMMOTCOPYOBJ) -#DBLASOBJS += \ -# dgemm_beta$(TSUFFIX).$(SUFFIX) \ -# dtrmm_kernel_LN$(TSUFFIX).$(SUFFIX) dtrmm_kernel_LT$(TSUFFIX).$(SUFFIX) \ -# dtrmm_kernel_RN$(TSUFFIX).$(SUFFIX) dtrmm_kernel_RT$(TSUFFIX).$(SUFFIX) \ -# dtrsm_kernel_LN$(TSUFFIX).$(SUFFIX) dtrsm_kernel_LT$(TSUFFIX).$(SUFFIX) \ -# dtrsm_kernel_RN$(TSUFFIX).$(SUFFIX) dtrsm_kernel_RT$(TSUFFIX).$(SUFFIX) \ +set(DGEMM_BETA ../generic/gemm_beta.c) +set(DGEMMKERNEL gemm_kernel_2x4_penryn.S) + +GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE") +list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) + +if (DGEMMINCOPY) + GenerateNamedObjects(${DGEMMINCOPY} "DOUBLE") + list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) +endif () + +if (DGEMMITCOPY) + GenerateNamedObjects(${DGEMMITCOPY} "DOUBLE") + list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) +endif () + +if (DGEMMONCOPY) + GenerateNamedObjects(${DGEMMONCOPY} "DOUBLE") + list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) +endif () + +if (DGEMMOTCOPY) + GenerateNamedObjects(${DGEMMOTCOPY} "DOUBLE") + list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) +endif () + +GenerateNamedObjects("${KERNELDIR}/${DGEMM_BETA}" "DOUBLE") +list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) +GenerateCombinationObjects("${KERNELDIR}/${DGEMMKERNEL}" "LEFT;TRANSA" "R;N" "DOUBLE" "TRMMKERNEL" 2 "trmm_kernel") +list(APPEND DBLAS_OBJS ${COMBO_OBJ_LIST_OUT}) +GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN") +list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) +GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE" "LT;TRSMKERNEL" "trsm_kernel_LT") +list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) +GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN") +list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) +GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE" "RT;TRSMKERNEL" "trsm_kernel_RT") +list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT}) #DBLASOBJS += \ # dtrmm_iunucopy$(TSUFFIX).$(SUFFIX) dtrmm_iunncopy$(TSUFFIX).$(SUFFIX) \