arm: add softfp support in kernel/arm/axpy_vfp.S
This commit is contained in:
parent
aa5edebc80
commit
4f0773f07d
|
@ -37,6 +37,11 @@ DASUMKERNEL = asum_vfp.S
|
||||||
CASUMKERNEL = asum_vfp.S
|
CASUMKERNEL = asum_vfp.S
|
||||||
ZASUMKERNEL = asum_vfp.S
|
ZASUMKERNEL = asum_vfp.S
|
||||||
|
|
||||||
|
SAXPYKERNEL = axpy_vfp.S
|
||||||
|
DAXPYKERNEL = axpy_vfp.S
|
||||||
|
CAXPYKERNEL = axpy_vfp.S
|
||||||
|
ZAXPYKERNEL = axpy_vfp.S
|
||||||
|
|
||||||
SGEMMKERNEL = ../generic/gemmkernel_4x2.c
|
SGEMMKERNEL = ../generic/gemmkernel_4x2.c
|
||||||
ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N))
|
ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N))
|
||||||
SGEMMINCOPY = sgemm_ncopy_4_vfp.S
|
SGEMMINCOPY = sgemm_ncopy_4_vfp.S
|
||||||
|
@ -76,11 +81,6 @@ ZGEMMOTCOPYOBJ = zgemm_otcopy.o
|
||||||
|
|
||||||
ifeq ($(ARM_ABI),hard)
|
ifeq ($(ARM_ABI),hard)
|
||||||
|
|
||||||
SAXPYKERNEL = axpy_vfp.S
|
|
||||||
DAXPYKERNEL = axpy_vfp.S
|
|
||||||
CAXPYKERNEL = axpy_vfp.S
|
|
||||||
ZAXPYKERNEL = axpy_vfp.S
|
|
||||||
|
|
||||||
SDOTKERNEL = sdot_vfp.S
|
SDOTKERNEL = sdot_vfp.S
|
||||||
DDOTKERNEL = ddot_vfp.S
|
DDOTKERNEL = ddot_vfp.S
|
||||||
CDOTKERNEL = cdot_vfp.S
|
CDOTKERNEL = cdot_vfp.S
|
||||||
|
|
|
@ -38,18 +38,52 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#define STACKSIZE 256
|
#define STACKSIZE 256
|
||||||
|
|
||||||
#ifndef ARM_SOFTFP_ABI
|
#if !defined(__ARM_PCS_VFP)
|
||||||
//hard
|
|
||||||
#define OLD_INC_X [fp, #0 ]
|
#if !defined(COMPLEX)
|
||||||
#define OLD_Y [fp, #4 ]
|
|
||||||
#define OLD_INC_Y [fp, #8 ]
|
#if !defined(DOUBLE)
|
||||||
#else
|
#define OLD_ALPHA r3
|
||||||
#define OLD_X [fp, #0 ]
|
#define OLD_X [fp, #0 ]
|
||||||
#define OLD_INC_X [fp, #4 ]
|
#define OLD_INC_X [fp, #4 ]
|
||||||
#define OLD_Y [fp, #8 ]
|
#define OLD_Y [fp, #8 ]
|
||||||
#define OLD_INC_Y [fp, #12 ]
|
#define OLD_INC_Y [fp, #12 ]
|
||||||
|
#else
|
||||||
|
#define OLD_ALPHA [fp, #0]
|
||||||
|
#define OLD_X [fp, #8 ]
|
||||||
|
#define OLD_INC_X [fp, #12 ]
|
||||||
|
#define OLD_Y [fp, #16 ]
|
||||||
|
#define OLD_INC_Y [fp, #20 ]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#else //COMPLEX
|
||||||
|
|
||||||
|
#if !defined(DOUBLE)
|
||||||
|
#define OLD_ALPHAR r3
|
||||||
|
#define OLD_ALPHAI [fp, #0 ]
|
||||||
|
#define OLD_X [fp, #4 ]
|
||||||
|
#define OLD_INC_X [fp, #8 ]
|
||||||
|
#define OLD_Y [fp, #12 ]
|
||||||
|
#define OLD_INC_Y [fp, #16 ]
|
||||||
|
#else
|
||||||
|
#define OLD_ALPHAR [fp, #0]
|
||||||
|
#define OLD_ALPHAI [fp, #8]
|
||||||
|
#define OLD_X [fp, #16 ]
|
||||||
|
#define OLD_INC_X [fp, #20 ]
|
||||||
|
#define OLD_Y [fp, #24 ]
|
||||||
|
#define OLD_INC_Y [fp, #28 ]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif //!defined(COMPLEX)
|
||||||
|
|
||||||
|
#else //__ARM_PCS_VFP
|
||||||
|
|
||||||
|
#define OLD_INC_X [fp, #0 ]
|
||||||
|
#define OLD_Y [fp, #4 ]
|
||||||
|
#define OLD_INC_Y [fp, #8 ]
|
||||||
|
|
||||||
|
#endif //!defined(__ARM_PCS_VFP)
|
||||||
|
|
||||||
#define N r0
|
#define N r0
|
||||||
#define Y r1
|
#define Y r1
|
||||||
#define INC_X r2
|
#define INC_X r2
|
||||||
|
@ -370,13 +404,28 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
add fp, sp, #8
|
add fp, sp, #8
|
||||||
sub sp, sp, #STACKSIZE // reserve stack
|
sub sp, sp, #STACKSIZE // reserve stack
|
||||||
|
|
||||||
#ifdef ARM_SOFTFP_ABI
|
#if !defined(__ARM_PCS_VFP)
|
||||||
#ifndef DOUBLE
|
#if !defined(COMPLEX)
|
||||||
vmov s0, r3 //move alpha to s0
|
#if !defined(DOUBLE)
|
||||||
|
vmov s0, OLD_ALPHA
|
||||||
|
ldr X, OLD_X
|
||||||
|
#else
|
||||||
|
vldr d0, OLD_ALPHA
|
||||||
ldr X, OLD_X
|
ldr X, OLD_X
|
||||||
#endif
|
#endif
|
||||||
|
#else //COMPLEX
|
||||||
|
#if !defined(DOUBLE)
|
||||||
|
vmov s0, OLD_ALPHAR
|
||||||
|
vldr s1, OLD_ALPHAI
|
||||||
|
ldr X, OLD_X
|
||||||
|
#else
|
||||||
|
vldr d0, OLD_ALPHAR
|
||||||
|
vldr d1, OLD_ALPHAI
|
||||||
|
ldr X, OLD_X
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
ldr INC_X , OLD_INC_X
|
ldr INC_X , OLD_INC_X
|
||||||
ldr Y, OLD_Y
|
ldr Y, OLD_Y
|
||||||
ldr INC_Y , OLD_INC_Y
|
ldr INC_Y , OLD_INC_Y
|
||||||
|
|
Loading…
Reference in New Issue