Substitute precompiled gcc7 codes only when gcc is older than 9.x
authorMartin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Fri, 29 Nov 2019 22:49:50 +0000 (23:49 +0100)
committerGitHub <noreply@github.com>
Fri, 29 Nov 2019 22:49:50 +0000 (23:49 +0100)
kernel/power/KERNEL.POWER9

index 2ed843f..4bfa017 100644 (file)
-#SGEMM_BETA = ../generic/gemm_beta.c\r
-#DGEMM_BETA = ../generic/gemm_beta.c\r
-#CGEMM_BETA = ../generic/zgemm_beta.c\r
-#ZGEMM_BETA = ../generic/zgemm_beta.c\r
-\r
-STRMMKERNEL    = sgemm_kernel_power9.S\r
-DTRMMKERNEL    = dgemm_kernel_power9.S\r
-CTRMMKERNEL    = cgemm_kernel_power9.S\r
-ZTRMMKERNEL    = zgemm_kernel_power9.S\r
-\r
-SGEMMKERNEL    =  sgemm_kernel_power9.S\r
-SGEMMINCOPY    = ../generic/gemm_ncopy_16.c\r
-SGEMMITCOPY    = sgemm_tcopy_16_power8.S\r
-SGEMMONCOPY    =  ../generic/gemm_ncopy_8.c\r
-SGEMMOTCOPY    = sgemm_tcopy_8_power8.S \r
-SGEMMINCOPYOBJ =  sgemm_incopy$(TSUFFIX).$(SUFFIX)\r
-SGEMMITCOPYOBJ =  sgemm_itcopy$(TSUFFIX).$(SUFFIX)\r
-SGEMMONCOPYOBJ =  sgemm_oncopy$(TSUFFIX).$(SUFFIX)\r
-SGEMMOTCOPYOBJ =  sgemm_otcopy$(TSUFFIX).$(SUFFIX)\r
-\r
-DGEMMKERNEL    =  dgemm_kernel_power9.S\r
-DGEMMINCOPY    = ../generic/gemm_ncopy_16.c\r
-DGEMMITCOPY    =  dgemm_tcopy_16_power8.S\r
-DGEMMONCOPY    =  dgemm_ncopy_4_power8.S\r
-DGEMMOTCOPY    =  ../generic/gemm_tcopy_4.c\r
-DGEMMINCOPYOBJ =  dgemm_incopy$(TSUFFIX).$(SUFFIX)\r
-DGEMMITCOPYOBJ =  dgemm_itcopy$(TSUFFIX).$(SUFFIX)\r
-DGEMMONCOPYOBJ =  dgemm_oncopy$(TSUFFIX).$(SUFFIX)\r
-DGEMMOTCOPYOBJ =  dgemm_otcopy$(TSUFFIX).$(SUFFIX)\r
-\r
-CGEMMKERNEL    = cgemm_kernel_power9.S\r
-CGEMMINCOPY    = ../generic/zgemm_ncopy_8.c\r
-CGEMMITCOPY    = ../generic/zgemm_tcopy_8.c\r
-CGEMMONCOPY    = ../generic/zgemm_ncopy_4.c\r
-CGEMMOTCOPY    = ../generic/zgemm_tcopy_4.c\r
-CGEMMONCOPYOBJ =  cgemm_oncopy$(TSUFFIX).$(SUFFIX)\r
-CGEMMOTCOPYOBJ =  cgemm_otcopy$(TSUFFIX).$(SUFFIX)\r
-CGEMMINCOPYOBJ =  cgemm_incopy$(TSUFFIX).$(SUFFIX)\r
-CGEMMITCOPYOBJ =  cgemm_itcopy$(TSUFFIX).$(SUFFIX)\r
-\r
-ZGEMMKERNEL    = zgemm_kernel_power9.S\r
-ZGEMMONCOPY    = ../generic/zgemm_ncopy_2.c\r
-ZGEMMOTCOPY    = ../generic/zgemm_tcopy_2.c\r
-ZGEMMINCOPY    = ../generic/zgemm_ncopy_8.c\r
-ZGEMMITCOPY    = zgemm_tcopy_8_power8.S\r
-ZGEMMONCOPYOBJ =  zgemm_oncopy$(TSUFFIX).$(SUFFIX)\r
-ZGEMMOTCOPYOBJ =  zgemm_otcopy$(TSUFFIX).$(SUFFIX)\r
-ZGEMMINCOPYOBJ =  zgemm_incopy$(TSUFFIX).$(SUFFIX)\r
-ZGEMMITCOPYOBJ =  zgemm_itcopy$(TSUFFIX).$(SUFFIX)\r
-\r
-STRSMKERNEL_LN =  ../generic/trsm_kernel_LN.c\r
-STRSMKERNEL_LT =  ../generic/trsm_kernel_LT.c\r
-STRSMKERNEL_RN =  ../generic/trsm_kernel_RN.c\r
-STRSMKERNEL_RT =  ../generic/trsm_kernel_RT.c\r
-\r
-DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c\r
-DTRSMKERNEL_LT = dtrsm_kernel_LT_16x4_power8.S\r
-DTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c\r
-DTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c\r
-\r
-CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c\r
-CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c\r
-CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c\r
-CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c\r
-\r
-ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c\r
-ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c\r
-ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c\r
-ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c\r
-\r
-#Todo: CGEMM3MKERNEL should be 4x4 blocksizes.\r
-#CGEMM3MKERNEL    =  zgemm3m_kernel_8x4_sse3.S\r
-#ZGEMM3MKERNEL    =  zgemm3m_kernel_4x4_sse3.S\r
-\r
-#Pure C for other kernels\r
-#SAMAXKERNEL  = ../arm/amax.c\r
-#DAMAXKERNEL  = ../arm/amax.c\r
-#CAMAXKERNEL  = ../arm/zamax.c\r
-#ZAMAXKERNEL  = ../arm/zamax.c\r
-#\r
-#SAMINKERNEL  = ../arm/amin.c\r
-#DAMINKERNEL  = ../arm/amin.c\r
-#CAMINKERNEL  = ../arm/zamin.c\r
-#ZAMINKERNEL  = ../arm/zamin.c\r
-#\r
-#SMAXKERNEL   = ../arm/max.c\r
-#DMAXKERNEL   = ../arm/max.c\r
-#\r
-#SMINKERNEL   = ../arm/min.c\r
-#DMINKERNEL   = ../arm/min.c\r
-#\r
-ISAMAXKERNEL = isamax_power9.S\r
-IDAMAXKERNEL = idamax.c\r
-ICAMAXKERNEL = icamax_power9.S\r
-IZAMAXKERNEL = izamax.c\r
-#\r
-ISAMINKERNEL = isamin_power9.S\r
-IDAMINKERNEL = idamin.c\r
-ICAMINKERNEL = icamin_power9.S\r
-IZAMINKERNEL = izamin.c\r
-#\r
-#ISMAXKERNEL  = ../arm/imax.c\r
-#IDMAXKERNEL  = ../arm/imax.c\r
-#\r
-#ISMINKERNEL  = ../arm/imin.c\r
-#IDMINKERNEL  = ../arm/imin.c\r
-#\r
-SASUMKERNEL  = sasum.c\r
-DASUMKERNEL  = dasum.c\r
-CASUMKERNEL  = casum.c\r
-ZASUMKERNEL  = zasum.c\r
-#\r
-SAXPYKERNEL  = saxpy.c\r
-DAXPYKERNEL  = daxpy.c\r
-CAXPYKERNEL  = caxpy_power9.S\r
-ZAXPYKERNEL  = zaxpy.c\r
-#\r
-SCOPYKERNEL  = scopy.c\r
-DCOPYKERNEL  = dcopy.c\r
-CCOPYKERNEL  = ccopy.c\r
-ZCOPYKERNEL  = zcopy.c\r
-#\r
-SDOTKERNEL   =  sdot.c\r
-DDOTKERNEL   =  ddot.c\r
-DSDOTKERNEL  =  sdot.c\r
-CDOTKERNEL   =  cdot_power9.S\r
-ZDOTKERNEL   =  zdot.c\r
-#\r
-SNRM2KERNEL  = ../arm/nrm2.c\r
-DNRM2KERNEL  = ../arm/nrm2.c\r
-CNRM2KERNEL  = ../arm/znrm2.c\r
-ZNRM2KERNEL  = ../arm/znrm2.c\r
-#\r
-SROTKERNEL   = srot.c\r
-DROTKERNEL   = drot.c\r
-CROTKERNEL   = crot.c\r
-ZROTKERNEL   = zrot.c\r
-#\r
-SSCALKERNEL  = sscal.c\r
-DSCALKERNEL  = dscal.c\r
-CSCALKERNEL  = zscal.c\r
-ZSCALKERNEL  = zscal.c\r
-#\r
-SSWAPKERNEL  = sswap.c\r
-DSWAPKERNEL  = dswap.c\r
-CSWAPKERNEL  = cswap.c\r
-ZSWAPKERNEL  = zswap.c\r
-#\r
-\r
-SGEMVNKERNEL = sgemv_n.c\r
-DGEMVNKERNEL = dgemv_n.c\r
-CGEMVNKERNEL = cgemv_n.c\r
-ZGEMVNKERNEL = zgemv_n_4.c\r
-#\r
-SGEMVTKERNEL = sgemv_t.c\r
-DGEMVTKERNEL = dgemv_t.c\r
-CGEMVTKERNEL = cgemv_t.c\r
-ZGEMVTKERNEL = zgemv_t_4.c\r
-\r
-\r
-#SSYMV_U_KERNEL =  ../generic/symv_k.c\r
-#SSYMV_L_KERNEL =  ../generic/symv_k.c\r
-#DSYMV_U_KERNEL =  ../generic/symv_k.c\r
-#DSYMV_L_KERNEL =  ../generic/symv_k.c\r
-#QSYMV_U_KERNEL =  ../generic/symv_k.c\r
-#QSYMV_L_KERNEL =  ../generic/symv_k.c\r
-#CSYMV_U_KERNEL =  ../generic/zsymv_k.c\r
-#CSYMV_L_KERNEL =  ../generic/zsymv_k.c\r
-#ZSYMV_U_KERNEL =  ../generic/zsymv_k.c\r
-#ZSYMV_L_KERNEL =  ../generic/zsymv_k.c\r
-#XSYMV_U_KERNEL =  ../generic/zsymv_k.c\r
-#XSYMV_L_KERNEL =  ../generic/zsymv_k.c\r
-\r
-#ZHEMV_U_KERNEL =  ../generic/zhemv_k.c\r
-#ZHEMV_L_KERNEL =  ../generic/zhemv_k.c\r
-\r
-LSAME_KERNEL = ../generic/lsame.c\r
-SCABS_KERNEL   = ../generic/cabs.c\r
-DCABS_KERNEL   = ../generic/cabs.c\r
-QCABS_KERNEL   = ../generic/cabs.c\r
-\r
-#Dump kernel\r
-CGEMM3MKERNEL    = ../generic/zgemm3mkernel_dump.c\r
-ZGEMM3MKERNEL    = ../generic/zgemm3mkernel_dump.c\r
+#SGEMM_BETA = ../generic/gemm_beta.c
+#DGEMM_BETA = ../generic/gemm_beta.c
+#CGEMM_BETA = ../generic/zgemm_beta.c
+#ZGEMM_BETA = ../generic/zgemm_beta.c
+
+STRMMKERNEL    = sgemm_kernel_power9.S
+DTRMMKERNEL    = dgemm_kernel_power9.S
+CTRMMKERNEL    = cgemm_kernel_power9.S
+ZTRMMKERNEL    = zgemm_kernel_power9.S
+
+SGEMMKERNEL    =  sgemm_kernel_power9.S
+SGEMMINCOPY    = ../generic/gemm_ncopy_16.c
+SGEMMITCOPY    = sgemm_tcopy_16_power8.S
+SGEMMONCOPY    =  ../generic/gemm_ncopy_8.c
+SGEMMOTCOPY    = sgemm_tcopy_8_power8.S 
+SGEMMINCOPYOBJ =  sgemm_incopy$(TSUFFIX).$(SUFFIX)
+SGEMMITCOPYOBJ =  sgemm_itcopy$(TSUFFIX).$(SUFFIX)
+SGEMMONCOPYOBJ =  sgemm_oncopy$(TSUFFIX).$(SUFFIX)
+SGEMMOTCOPYOBJ =  sgemm_otcopy$(TSUFFIX).$(SUFFIX)
+
+DGEMMKERNEL    =  dgemm_kernel_power9.S
+DGEMMINCOPY    = ../generic/gemm_ncopy_16.c
+DGEMMITCOPY    =  dgemm_tcopy_16_power8.S
+DGEMMONCOPY    =  dgemm_ncopy_4_power8.S
+DGEMMOTCOPY    =  ../generic/gemm_tcopy_4.c
+DGEMMINCOPYOBJ =  dgemm_incopy$(TSUFFIX).$(SUFFIX)
+DGEMMITCOPYOBJ =  dgemm_itcopy$(TSUFFIX).$(SUFFIX)
+DGEMMONCOPYOBJ =  dgemm_oncopy$(TSUFFIX).$(SUFFIX)
+DGEMMOTCOPYOBJ =  dgemm_otcopy$(TSUFFIX).$(SUFFIX)
+
+CGEMMKERNEL    = cgemm_kernel_power9.S
+CGEMMINCOPY    = ../generic/zgemm_ncopy_8.c
+CGEMMITCOPY    = ../generic/zgemm_tcopy_8.c
+CGEMMONCOPY    = ../generic/zgemm_ncopy_4.c
+CGEMMOTCOPY    = ../generic/zgemm_tcopy_4.c
+CGEMMONCOPYOBJ =  cgemm_oncopy$(TSUFFIX).$(SUFFIX)
+CGEMMOTCOPYOBJ =  cgemm_otcopy$(TSUFFIX).$(SUFFIX)
+CGEMMINCOPYOBJ =  cgemm_incopy$(TSUFFIX).$(SUFFIX)
+CGEMMITCOPYOBJ =  cgemm_itcopy$(TSUFFIX).$(SUFFIX)
+
+ZGEMMKERNEL    = zgemm_kernel_power9.S
+ZGEMMONCOPY    = ../generic/zgemm_ncopy_2.c
+ZGEMMOTCOPY    = ../generic/zgemm_tcopy_2.c
+ZGEMMINCOPY    = ../generic/zgemm_ncopy_8.c
+ZGEMMITCOPY    = zgemm_tcopy_8_power8.S
+ZGEMMONCOPYOBJ =  zgemm_oncopy$(TSUFFIX).$(SUFFIX)
+ZGEMMOTCOPYOBJ =  zgemm_otcopy$(TSUFFIX).$(SUFFIX)
+ZGEMMINCOPYOBJ =  zgemm_incopy$(TSUFFIX).$(SUFFIX)
+ZGEMMITCOPYOBJ =  zgemm_itcopy$(TSUFFIX).$(SUFFIX)
+
+STRSMKERNEL_LN =  ../generic/trsm_kernel_LN.c
+STRSMKERNEL_LT =  ../generic/trsm_kernel_LT.c
+STRSMKERNEL_RN =  ../generic/trsm_kernel_RN.c
+STRSMKERNEL_RT =  ../generic/trsm_kernel_RT.c
+
+DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
+DTRSMKERNEL_LT = dtrsm_kernel_LT_16x4_power8.S
+DTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
+DTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
+
+CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
+CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
+CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
+CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
+
+ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
+ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
+ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
+ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
+
+#Todo: CGEMM3MKERNEL should be 4x4 blocksizes.
+#CGEMM3MKERNEL    =  zgemm3m_kernel_8x4_sse3.S
+#ZGEMM3MKERNEL    =  zgemm3m_kernel_4x4_sse3.S
+
+#Pure C for other kernels
+#SAMAXKERNEL  = ../arm/amax.c
+#DAMAXKERNEL  = ../arm/amax.c
+#CAMAXKERNEL  = ../arm/zamax.c
+#ZAMAXKERNEL  = ../arm/zamax.c
+#
+#SAMINKERNEL  = ../arm/amin.c
+#DAMINKERNEL  = ../arm/amin.c
+#CAMINKERNEL  = ../arm/zamin.c
+#ZAMINKERNEL  = ../arm/zamin.c
+#
+#SMAXKERNEL   = ../arm/max.c
+#DMAXKERNEL   = ../arm/max.c
+#
+#SMINKERNEL   = ../arm/min.c
+#DMINKERNEL   = ../arm/min.c
+#
+ifneq ($(GCCVERSIONGTEQ9),1)
+ISAMAXKERNEL = isamax_power9.S
+else
+ISAMAXKERNEL = isamax.c
+endif
+IDAMAXKERNEL = idamax.c
+ifneq ($(GCCVERSIONGTEQ9),1)
+ICAMAXKERNEL = icamax_power9.S
+else
+ICAMAXKERNEL = icamax.c
+endif
+IZAMAXKERNEL = izamax.c
+#
+ifneq ($(GCCVERSIONGTEQ9),1)
+ISAMINKERNEL = isamin_power9.S
+else
+ISAMINKERNEL = isamin.c
+endif
+IDAMINKERNEL = idamin.c
+ifneq ($(GCCVERSIONGTEQ9),1)
+ICAMINKERNEL = icamin_power9.S
+else
+ICAMINKERNEL = icamin.c
+endif
+IZAMINKERNEL = izamin.c
+#
+#ISMAXKERNEL  = ../arm/imax.c
+#IDMAXKERNEL  = ../arm/imax.c
+#
+#ISMINKERNEL  = ../arm/imin.c
+#IDMINKERNEL  = ../arm/imin.c
+#
+SASUMKERNEL  = sasum.c
+DASUMKERNEL  = dasum.c
+CASUMKERNEL  = casum.c
+ZASUMKERNEL  = zasum.c
+#
+SAXPYKERNEL  = saxpy.c
+DAXPYKERNEL  = daxpy.c
+ifneq ($(GCCVERSIONGTEQ9),1)
+CAXPYKERNEL  = caxpy_power9.S
+else
+CAXPYKERNEL  = caxpy.c
+endif
+ZAXPYKERNEL  = zaxpy.c
+#
+SCOPYKERNEL  = scopy.c
+DCOPYKERNEL  = dcopy.c
+CCOPYKERNEL  = ccopy.c
+ZCOPYKERNEL  = zcopy.c
+#
+SDOTKERNEL   =  sdot.c
+DDOTKERNEL   =  ddot.c
+DSDOTKERNEL  =  sdot.c
+ifneq ($(GCCVERSIONGTEQ9),1)
+CDOTKERNEL   =  cdot_power9.S
+else
+CDOTKERNEL   =  cdot.c
+endif
+ZDOTKERNEL   =  zdot.c
+#
+SNRM2KERNEL  = ../arm/nrm2.c
+DNRM2KERNEL  = ../arm/nrm2.c
+CNRM2KERNEL  = ../arm/znrm2.c
+ZNRM2KERNEL  = ../arm/znrm2.c
+#
+SROTKERNEL   = srot.c
+DROTKERNEL   = drot.c
+CROTKERNEL   = crot.c
+ZROTKERNEL   = zrot.c
+#
+SSCALKERNEL  = sscal.c
+DSCALKERNEL  = dscal.c
+CSCALKERNEL  = zscal.c
+ZSCALKERNEL  = zscal.c
+#
+SSWAPKERNEL  = sswap.c
+DSWAPKERNEL  = dswap.c
+CSWAPKERNEL  = cswap.c
+ZSWAPKERNEL  = zswap.c
+#
+
+SGEMVNKERNEL = sgemv_n.c
+DGEMVNKERNEL = dgemv_n.c
+CGEMVNKERNEL = cgemv_n.c
+ZGEMVNKERNEL = zgemv_n_4.c
+#
+SGEMVTKERNEL = sgemv_t.c
+DGEMVTKERNEL = dgemv_t.c
+CGEMVTKERNEL = cgemv_t.c
+ZGEMVTKERNEL = zgemv_t_4.c
+
+
+#SSYMV_U_KERNEL =  ../generic/symv_k.c
+#SSYMV_L_KERNEL =  ../generic/symv_k.c
+#DSYMV_U_KERNEL =  ../generic/symv_k.c
+#DSYMV_L_KERNEL =  ../generic/symv_k.c
+#QSYMV_U_KERNEL =  ../generic/symv_k.c
+#QSYMV_L_KERNEL =  ../generic/symv_k.c
+#CSYMV_U_KERNEL =  ../generic/zsymv_k.c
+#CSYMV_L_KERNEL =  ../generic/zsymv_k.c
+#ZSYMV_U_KERNEL =  ../generic/zsymv_k.c
+#ZSYMV_L_KERNEL =  ../generic/zsymv_k.c
+#XSYMV_U_KERNEL =  ../generic/zsymv_k.c
+#XSYMV_L_KERNEL =  ../generic/zsymv_k.c
+
+#ZHEMV_U_KERNEL =  ../generic/zhemv_k.c
+#ZHEMV_L_KERNEL =  ../generic/zhemv_k.c
+
+LSAME_KERNEL = ../generic/lsame.c
+SCABS_KERNEL   = ../generic/cabs.c
+DCABS_KERNEL   = ../generic/cabs.c
+QCABS_KERNEL   = ../generic/cabs.c
+
+#Dump kernel
+CGEMM3MKERNEL    = ../generic/zgemm3mkernel_dump.c
+ZGEMM3MKERNEL    = ../generic/zgemm3mkernel_dump.c