arm: Use assembly implementations based on the ARM abi
In case of softfp abi, assembly implementations of only those APIs are used which doesnt have a floating point argument or return value. In case of hard abi, all assembly implementations are used.
This commit is contained in:
parent
da7f0ff425
commit
89924b3d5b
|
@ -1,7 +1,5 @@
|
||||||
|
include $(KERNELDIR)/KERNEL.ARMV5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
SAMAXKERNEL = iamax_vfp.S
|
SAMAXKERNEL = iamax_vfp.S
|
||||||
DAMAXKERNEL = iamax_vfp.S
|
DAMAXKERNEL = iamax_vfp.S
|
||||||
CAMAXKERNEL = iamax_vfp.S
|
CAMAXKERNEL = iamax_vfp.S
|
||||||
|
@ -34,6 +32,45 @@ IDMAXKERNEL = iamax_vfp.S
|
||||||
ISMINKERNEL = iamax_vfp.S
|
ISMINKERNEL = iamax_vfp.S
|
||||||
IDMINKERNEL = iamax_vfp.S
|
IDMINKERNEL = iamax_vfp.S
|
||||||
|
|
||||||
|
SGEMMKERNEL = ../generic/gemmkernel_4x2.c
|
||||||
|
ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N))
|
||||||
|
SGEMMINCOPY = sgemm_ncopy_4_vfp.S
|
||||||
|
SGEMMITCOPY = sgemm_tcopy_4_vfp.S
|
||||||
|
SGEMMINCOPYOBJ = sgemm_incopy.o
|
||||||
|
SGEMMITCOPYOBJ = sgemm_itcopy.o
|
||||||
|
endif
|
||||||
|
SGEMMONCOPY = sgemm_ncopy_2_vfp.S
|
||||||
|
SGEMMOTCOPY = ../generic/gemm_tcopy_2.c
|
||||||
|
SGEMMONCOPYOBJ = sgemm_oncopy.o
|
||||||
|
SGEMMOTCOPYOBJ = sgemm_otcopy.o
|
||||||
|
|
||||||
|
DGEMMKERNEL = ../generic/gemmkernel_4x2.c
|
||||||
|
ifneq ($(DGEMM_UNROLL_M), $(DGEMM_UNROLL_N))
|
||||||
|
DGEMMINCOPY = dgemm_ncopy_4_vfp.S
|
||||||
|
DGEMMITCOPY = dgemm_tcopy_4_vfp.S
|
||||||
|
DGEMMINCOPYOBJ = dgemm_incopy.o
|
||||||
|
DGEMMITCOPYOBJ = dgemm_itcopy.o
|
||||||
|
endif
|
||||||
|
DGEMMONCOPY = dgemm_ncopy_2_vfp.S
|
||||||
|
DGEMMOTCOPY = ../generic/gemm_tcopy_2.c
|
||||||
|
DGEMMONCOPYOBJ = dgemm_oncopy.o
|
||||||
|
DGEMMOTCOPYOBJ = dgemm_otcopy.o
|
||||||
|
|
||||||
|
STRMMKERNEL = ../generic/trmmkernel_4x2.c
|
||||||
|
DTRMMKERNEL = ../generic/trmmkernel_4x2.c
|
||||||
|
|
||||||
|
CGEMMONCOPY = cgemm_ncopy_2_vfp.S
|
||||||
|
CGEMMOTCOPY = cgemm_tcopy_2_vfp.S
|
||||||
|
CGEMMONCOPYOBJ = cgemm_oncopy.o
|
||||||
|
CGEMMOTCOPYOBJ = cgemm_otcopy.o
|
||||||
|
|
||||||
|
ZGEMMONCOPY = zgemm_ncopy_2_vfp.S
|
||||||
|
ZGEMMOTCOPY = zgemm_tcopy_2_vfp.S
|
||||||
|
ZGEMMONCOPYOBJ = zgemm_oncopy.o
|
||||||
|
ZGEMMOTCOPYOBJ = zgemm_otcopy.o
|
||||||
|
|
||||||
|
ifeq ($(ARM_ABI),hard)
|
||||||
|
|
||||||
SASUMKERNEL = asum_vfp.S
|
SASUMKERNEL = asum_vfp.S
|
||||||
DASUMKERNEL = asum_vfp.S
|
DASUMKERNEL = asum_vfp.S
|
||||||
CASUMKERNEL = asum_vfp.S
|
CASUMKERNEL = asum_vfp.S
|
||||||
|
@ -44,11 +81,6 @@ DAXPYKERNEL = axpy_vfp.S
|
||||||
CAXPYKERNEL = axpy_vfp.S
|
CAXPYKERNEL = axpy_vfp.S
|
||||||
ZAXPYKERNEL = axpy_vfp.S
|
ZAXPYKERNEL = axpy_vfp.S
|
||||||
|
|
||||||
SCOPYKERNEL = copy.c
|
|
||||||
DCOPYKERNEL = copy.c
|
|
||||||
CCOPYKERNEL = zcopy.c
|
|
||||||
ZCOPYKERNEL = zcopy.c
|
|
||||||
|
|
||||||
SDOTKERNEL = sdot_vfp.S
|
SDOTKERNEL = sdot_vfp.S
|
||||||
DDOTKERNEL = ddot_vfp.S
|
DDOTKERNEL = ddot_vfp.S
|
||||||
CDOTKERNEL = cdot_vfp.S
|
CDOTKERNEL = cdot_vfp.S
|
||||||
|
@ -64,11 +96,6 @@ DROTKERNEL = rot_vfp.S
|
||||||
CROTKERNEL = rot_vfp.S
|
CROTKERNEL = rot_vfp.S
|
||||||
ZROTKERNEL = rot_vfp.S
|
ZROTKERNEL = rot_vfp.S
|
||||||
|
|
||||||
SSCALKERNEL = scal.c
|
|
||||||
DSCALKERNEL = scal.c
|
|
||||||
CSCALKERNEL = zscal.c
|
|
||||||
ZSCALKERNEL = zscal.c
|
|
||||||
|
|
||||||
SSWAPKERNEL = swap_vfp.S
|
SSWAPKERNEL = swap_vfp.S
|
||||||
DSWAPKERNEL = swap_vfp.S
|
DSWAPKERNEL = swap_vfp.S
|
||||||
CSWAPKERNEL = swap_vfp.S
|
CSWAPKERNEL = swap_vfp.S
|
||||||
|
@ -90,57 +117,8 @@ CTRMMKERNEL = ctrmm_kernel_2x2_vfp.S
|
||||||
ZTRMMKERNEL = ztrmm_kernel_2x2_vfp.S
|
ZTRMMKERNEL = ztrmm_kernel_2x2_vfp.S
|
||||||
|
|
||||||
SGEMMKERNEL = sgemm_kernel_4x2_vfp.S
|
SGEMMKERNEL = sgemm_kernel_4x2_vfp.S
|
||||||
SGEMMINCOPY = sgemm_ncopy_4_vfp.S
|
|
||||||
SGEMMITCOPY = sgemm_tcopy_4_vfp.S
|
|
||||||
SGEMMINCOPYOBJ = sgemm_incopy.o
|
|
||||||
SGEMMITCOPYOBJ = sgemm_itcopy.o
|
|
||||||
SGEMMONCOPY = sgemm_ncopy_2_vfp.S
|
|
||||||
SGEMMOTCOPY = ../generic/gemm_tcopy_2.c
|
|
||||||
SGEMMONCOPYOBJ = sgemm_oncopy.o
|
|
||||||
SGEMMOTCOPYOBJ = sgemm_otcopy.o
|
|
||||||
|
|
||||||
DGEMMKERNEL = dgemm_kernel_4x2_vfp.S
|
DGEMMKERNEL = dgemm_kernel_4x2_vfp.S
|
||||||
DGEMMINCOPY = dgemm_ncopy_4_vfp.S
|
|
||||||
DGEMMITCOPY = dgemm_tcopy_4_vfp.S
|
|
||||||
DGEMMINCOPYOBJ = dgemm_incopy.o
|
|
||||||
DGEMMITCOPYOBJ = dgemm_itcopy.o
|
|
||||||
DGEMMONCOPY = dgemm_ncopy_2_vfp.S
|
|
||||||
DGEMMOTCOPY = ../generic/gemm_tcopy_2.c
|
|
||||||
DGEMMONCOPYOBJ = dgemm_oncopy.o
|
|
||||||
DGEMMOTCOPYOBJ = dgemm_otcopy.o
|
|
||||||
|
|
||||||
CGEMMKERNEL = cgemm_kernel_2x2_vfp.S
|
CGEMMKERNEL = cgemm_kernel_2x2_vfp.S
|
||||||
CGEMMONCOPY = cgemm_ncopy_2_vfp.S
|
|
||||||
CGEMMOTCOPY = cgemm_tcopy_2_vfp.S
|
|
||||||
CGEMMONCOPYOBJ = cgemm_oncopy.o
|
|
||||||
CGEMMOTCOPYOBJ = cgemm_otcopy.o
|
|
||||||
|
|
||||||
ZGEMMKERNEL = zgemm_kernel_2x2_vfp.S
|
ZGEMMKERNEL = zgemm_kernel_2x2_vfp.S
|
||||||
ZGEMMONCOPY = zgemm_ncopy_2_vfp.S
|
|
||||||
ZGEMMOTCOPY = zgemm_tcopy_2_vfp.S
|
|
||||||
ZGEMMONCOPYOBJ = zgemm_oncopy.o
|
|
||||||
ZGEMMOTCOPYOBJ = zgemm_otcopy.o
|
|
||||||
|
|
||||||
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 = ../generic/trsm_kernel_LT.c
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -1,86 +1,29 @@
|
||||||
|
include $(KERNELDIR)/KERNEL.ARMV6
|
||||||
|
|
||||||
#################################################################################
|
STRMMKERNEL = ../generic/trmmkernel_4x4.c
|
||||||
SAMAXKERNEL = iamax_vfp.S
|
DTRMMKERNEL = ../generic/trmmkernel_4x4.c
|
||||||
DAMAXKERNEL = iamax_vfp.S
|
|
||||||
CAMAXKERNEL = iamax_vfp.S
|
|
||||||
ZAMAXKERNEL = iamax_vfp.S
|
|
||||||
|
|
||||||
SAMINKERNEL = iamax_vfp.S
|
SGEMMKERNEL = ../generic/gemmkernel_4x4.c
|
||||||
DAMINKERNEL = iamax_vfp.S
|
SGEMMONCOPY = sgemm_ncopy_4_vfp.S
|
||||||
CAMINKERNEL = iamax_vfp.S
|
SGEMMOTCOPY = sgemm_tcopy_4_vfp.S
|
||||||
ZAMINKERNEL = iamax_vfp.S
|
SGEMMONCOPYOBJ = sgemm_oncopy.o
|
||||||
|
SGEMMOTCOPYOBJ = sgemm_otcopy.o
|
||||||
|
|
||||||
SMAXKERNEL = iamax_vfp.S
|
DGEMMKERNEL = ../generic/gemmkernel_4x4.c
|
||||||
DMAXKERNEL = iamax_vfp.S
|
DGEMMONCOPY = dgemm_ncopy_4_vfp.S
|
||||||
|
DGEMMOTCOPY = dgemm_tcopy_4_vfp.S
|
||||||
|
DGEMMONCOPYOBJ = dgemm_oncopy.o
|
||||||
|
DGEMMOTCOPYOBJ = dgemm_otcopy.o
|
||||||
|
|
||||||
SMINKERNEL = iamax_vfp.S
|
ifeq ($(ARM_ABI),hard)
|
||||||
DMINKERNEL = iamax_vfp.S
|
|
||||||
|
|
||||||
ISAMAXKERNEL = iamax_vfp.S
|
|
||||||
IDAMAXKERNEL = iamax_vfp.S
|
|
||||||
ICAMAXKERNEL = iamax_vfp.S
|
|
||||||
IZAMAXKERNEL = iamax_vfp.S
|
|
||||||
|
|
||||||
ISAMINKERNEL = iamax_vfp.S
|
|
||||||
IDAMINKERNEL = iamax_vfp.S
|
|
||||||
ICAMINKERNEL = iamax_vfp.S
|
|
||||||
IZAMINKERNEL = iamax_vfp.S
|
|
||||||
|
|
||||||
ISMAXKERNEL = iamax_vfp.S
|
|
||||||
IDMAXKERNEL = iamax_vfp.S
|
|
||||||
|
|
||||||
ISMINKERNEL = iamax_vfp.S
|
|
||||||
IDMINKERNEL = iamax_vfp.S
|
|
||||||
|
|
||||||
SSWAPKERNEL = swap_vfp.S
|
|
||||||
DSWAPKERNEL = swap_vfp.S
|
|
||||||
CSWAPKERNEL = swap_vfp.S
|
|
||||||
ZSWAPKERNEL = swap_vfp.S
|
|
||||||
|
|
||||||
SASUMKERNEL = asum_vfp.S
|
|
||||||
DASUMKERNEL = asum_vfp.S
|
|
||||||
CASUMKERNEL = asum_vfp.S
|
|
||||||
ZASUMKERNEL = asum_vfp.S
|
|
||||||
|
|
||||||
SAXPYKERNEL = axpy_vfp.S
|
|
||||||
DAXPYKERNEL = axpy_vfp.S
|
|
||||||
CAXPYKERNEL = axpy_vfp.S
|
|
||||||
ZAXPYKERNEL = axpy_vfp.S
|
|
||||||
|
|
||||||
SCOPYKERNEL = copy.c
|
|
||||||
DCOPYKERNEL = copy.c
|
|
||||||
CCOPYKERNEL = zcopy.c
|
|
||||||
ZCOPYKERNEL = zcopy.c
|
|
||||||
|
|
||||||
SDOTKERNEL = sdot_vfp.S
|
|
||||||
DDOTKERNEL = ddot_vfp.S
|
|
||||||
CDOTKERNEL = cdot_vfp.S
|
|
||||||
ZDOTKERNEL = zdot_vfp.S
|
|
||||||
|
|
||||||
SNRM2KERNEL = nrm2_vfpv3.S
|
SNRM2KERNEL = nrm2_vfpv3.S
|
||||||
DNRM2KERNEL = nrm2_vfpv3.S
|
DNRM2KERNEL = nrm2_vfpv3.S
|
||||||
CNRM2KERNEL = nrm2_vfpv3.S
|
CNRM2KERNEL = nrm2_vfpv3.S
|
||||||
ZNRM2KERNEL = nrm2_vfpv3.S
|
ZNRM2KERNEL = nrm2_vfpv3.S
|
||||||
|
|
||||||
SROTKERNEL = rot_vfp.S
|
|
||||||
DROTKERNEL = rot_vfp.S
|
|
||||||
CROTKERNEL = rot_vfp.S
|
|
||||||
ZROTKERNEL = rot_vfp.S
|
|
||||||
|
|
||||||
SSCALKERNEL = scal.c
|
|
||||||
DSCALKERNEL = scal.c
|
|
||||||
CSCALKERNEL = zscal.c
|
|
||||||
ZSCALKERNEL = zscal.c
|
|
||||||
|
|
||||||
SGEMVNKERNEL = gemv_n_vfpv3.S
|
SGEMVNKERNEL = gemv_n_vfpv3.S
|
||||||
DGEMVNKERNEL = gemv_n_vfpv3.S
|
DGEMVNKERNEL = gemv_n_vfpv3.S
|
||||||
CGEMVNKERNEL = cgemv_n_vfp.S
|
|
||||||
ZGEMVNKERNEL = zgemv_n_vfp.S
|
|
||||||
|
|
||||||
SGEMVTKERNEL = gemv_t_vfp.S
|
|
||||||
DGEMVTKERNEL = gemv_t_vfp.S
|
|
||||||
CGEMVTKERNEL = cgemv_t_vfp.S
|
|
||||||
ZGEMVTKERNEL = zgemv_t_vfp.S
|
|
||||||
|
|
||||||
STRMMKERNEL = strmm_kernel_4x4_vfpv3.S
|
STRMMKERNEL = strmm_kernel_4x4_vfpv3.S
|
||||||
DTRMMKERNEL = dtrmm_kernel_4x4_vfpv3.S
|
DTRMMKERNEL = dtrmm_kernel_4x4_vfpv3.S
|
||||||
|
@ -88,47 +31,9 @@ CTRMMKERNEL = ctrmm_kernel_2x2_vfpv3.S
|
||||||
ZTRMMKERNEL = ztrmm_kernel_2x2_vfpv3.S
|
ZTRMMKERNEL = ztrmm_kernel_2x2_vfpv3.S
|
||||||
|
|
||||||
SGEMMKERNEL = sgemm_kernel_4x4_vfpv3.S
|
SGEMMKERNEL = sgemm_kernel_4x4_vfpv3.S
|
||||||
SGEMMONCOPY = sgemm_ncopy_4_vfp.S
|
|
||||||
SGEMMOTCOPY = sgemm_tcopy_4_vfp.S
|
|
||||||
SGEMMONCOPYOBJ = sgemm_oncopy.o
|
|
||||||
SGEMMOTCOPYOBJ = sgemm_otcopy.o
|
|
||||||
|
|
||||||
DGEMMKERNEL = dgemm_kernel_4x4_vfpv3.S
|
DGEMMKERNEL = dgemm_kernel_4x4_vfpv3.S
|
||||||
DGEMMONCOPY = dgemm_ncopy_4_vfp.S
|
|
||||||
DGEMMOTCOPY = dgemm_tcopy_4_vfp.S
|
|
||||||
DGEMMONCOPYOBJ = dgemm_oncopy.o
|
|
||||||
DGEMMOTCOPYOBJ = dgemm_otcopy.o
|
|
||||||
|
|
||||||
CGEMMKERNEL = cgemm_kernel_2x2_vfpv3.S
|
CGEMMKERNEL = cgemm_kernel_2x2_vfpv3.S
|
||||||
CGEMMONCOPY = cgemm_ncopy_2_vfp.S
|
|
||||||
CGEMMOTCOPY = cgemm_tcopy_2_vfp.S
|
|
||||||
CGEMMONCOPYOBJ = cgemm_oncopy.o
|
|
||||||
CGEMMOTCOPYOBJ = cgemm_otcopy.o
|
|
||||||
|
|
||||||
ZGEMMKERNEL = zgemm_kernel_2x2_vfpv3.S
|
ZGEMMKERNEL = zgemm_kernel_2x2_vfpv3.S
|
||||||
ZGEMMONCOPY = zgemm_ncopy_2_vfp.S
|
|
||||||
ZGEMMOTCOPY = zgemm_tcopy_2_vfp.S
|
|
||||||
ZGEMMONCOPYOBJ = zgemm_oncopy.o
|
|
||||||
ZGEMMOTCOPYOBJ = zgemm_otcopy.o
|
|
||||||
|
|
||||||
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 = ../generic/trsm_kernel_LT.c
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
Loading…
Reference in New Issue