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
|
||||
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
|
||||
ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N))
|
||||
SGEMMINCOPY = sgemm_ncopy_4_vfp.S
|
||||
|
@ -76,11 +81,6 @@ ZGEMMOTCOPYOBJ = zgemm_otcopy.o
|
|||
|
||||
ifeq ($(ARM_ABI),hard)
|
||||
|
||||
SAXPYKERNEL = axpy_vfp.S
|
||||
DAXPYKERNEL = axpy_vfp.S
|
||||
CAXPYKERNEL = axpy_vfp.S
|
||||
ZAXPYKERNEL = axpy_vfp.S
|
||||
|
||||
SDOTKERNEL = sdot_vfp.S
|
||||
DDOTKERNEL = ddot_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
|
||||
|
||||
#ifndef ARM_SOFTFP_ABI
|
||||
//hard
|
||||
#define OLD_INC_X [fp, #0 ]
|
||||
#define OLD_Y [fp, #4 ]
|
||||
#define OLD_INC_Y [fp, #8 ]
|
||||
#else
|
||||
#if !defined(__ARM_PCS_VFP)
|
||||
|
||||
#if !defined(COMPLEX)
|
||||
|
||||
#if !defined(DOUBLE)
|
||||
#define OLD_ALPHA r3
|
||||
#define OLD_X [fp, #0 ]
|
||||
#define OLD_INC_X [fp, #4 ]
|
||||
#define OLD_Y [fp, #8 ]
|
||||
#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
|
||||
|
||||
|
||||
#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 Y r1
|
||||
#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
|
||||
sub sp, sp, #STACKSIZE // reserve stack
|
||||
|
||||
#ifdef ARM_SOFTFP_ABI
|
||||
#ifndef DOUBLE
|
||||
vmov s0, r3 //move alpha to s0
|
||||
#if !defined(__ARM_PCS_VFP)
|
||||
#if !defined(COMPLEX)
|
||||
#if !defined(DOUBLE)
|
||||
vmov s0, OLD_ALPHA
|
||||
ldr X, OLD_X
|
||||
#else
|
||||
vldr d0, OLD_ALPHA
|
||||
ldr X, OLD_X
|
||||
#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
|
||||
|
||||
ldr INC_X , OLD_INC_X
|
||||
ldr Y, OLD_Y
|
||||
ldr INC_Y , OLD_INC_Y
|
||||
|
|
Loading…
Reference in New Issue