summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshwin Sekhar T K <ashwin.sekhar@cavium.com>2017-07-01 19:57:28 +0530
committerAshwin Sekhar T K <ashwin.sekhar@cavium.com>2017-07-01 19:57:28 +0530
commite25f4c01d60b76ab97252e475abfb8fa7e65c0f9 (patch)
treea9d415b2ddd911d29d6d9c2a59108712c788c3ad
parent54915ce343dba7e00dba21c73b9fd35bcded0de3 (diff)
downloadopenblas-e25f4c01d60b76ab97252e475abfb8fa7e65c0f9.tar.gz
openblas-e25f4c01d60b76ab97252e475abfb8fa7e65c0f9.tar.bz2
openblas-e25f4c01d60b76ab97252e475abfb8fa7e65c0f9.zip
arm: add softfp support in kernel/arm/nrm2_vfp*.S
-rw-r--r--kernel/arm/KERNEL.ARMV610
-rw-r--r--kernel/arm/KERNEL.ARMV710
-rw-r--r--kernel/arm/nrm2_vfp.S7
-rw-r--r--kernel/arm/nrm2_vfpv3.S9
4 files changed, 24 insertions, 12 deletions
diff --git a/kernel/arm/KERNEL.ARMV6 b/kernel/arm/KERNEL.ARMV6
index 022547c9b..be51e83b8 100644
--- a/kernel/arm/KERNEL.ARMV6
+++ b/kernel/arm/KERNEL.ARMV6
@@ -52,6 +52,11 @@ DDOTKERNEL = ddot_vfp.S
CDOTKERNEL = cdot_vfp.S
ZDOTKERNEL = zdot_vfp.S
+SNRM2KERNEL = nrm2_vfp.S
+DNRM2KERNEL = nrm2_vfp.S
+CNRM2KERNEL = nrm2_vfp.S
+ZNRM2KERNEL = nrm2_vfp.S
+
SGEMMKERNEL = ../generic/gemmkernel_4x2.c
ifneq ($(SGEMM_UNROLL_M), $(SGEMM_UNROLL_N))
SGEMMINCOPY = sgemm_ncopy_4_vfp.S
@@ -91,11 +96,6 @@ ZGEMMOTCOPYOBJ = zgemm_otcopy.o
ifeq ($(ARM_ABI),hard)
-SNRM2KERNEL = nrm2_vfp.S
-DNRM2KERNEL = nrm2_vfp.S
-CNRM2KERNEL = nrm2_vfp.S
-ZNRM2KERNEL = nrm2_vfp.S
-
SSWAPKERNEL = swap_vfp.S
DSWAPKERNEL = swap_vfp.S
CSWAPKERNEL = swap_vfp.S
diff --git a/kernel/arm/KERNEL.ARMV7 b/kernel/arm/KERNEL.ARMV7
index d4829faa3..f4823b70a 100644
--- a/kernel/arm/KERNEL.ARMV7
+++ b/kernel/arm/KERNEL.ARMV7
@@ -1,5 +1,10 @@
include $(KERNELDIR)/KERNEL.ARMV6
+SNRM2KERNEL = nrm2_vfpv3.S
+DNRM2KERNEL = nrm2_vfpv3.S
+CNRM2KERNEL = nrm2_vfpv3.S
+ZNRM2KERNEL = nrm2_vfpv3.S
+
STRMMKERNEL = ../generic/trmmkernel_4x4.c
DTRMMKERNEL = ../generic/trmmkernel_4x4.c
@@ -17,11 +22,6 @@ DGEMMOTCOPYOBJ = dgemm_otcopy.o
ifeq ($(ARM_ABI),hard)
-SNRM2KERNEL = nrm2_vfpv3.S
-DNRM2KERNEL = nrm2_vfpv3.S
-CNRM2KERNEL = nrm2_vfpv3.S
-ZNRM2KERNEL = nrm2_vfpv3.S
-
SGEMVNKERNEL = gemv_n_vfpv3.S
DGEMVNKERNEL = gemv_n_vfpv3.S
diff --git a/kernel/arm/nrm2_vfp.S b/kernel/arm/nrm2_vfp.S
index b3bd28152..16ac5a632 100644
--- a/kernel/arm/nrm2_vfp.S
+++ b/kernel/arm/nrm2_vfp.S
@@ -574,6 +574,13 @@ nrm2_kernel_L999:
vsqrt.f32 s1, s1
vmul.f32 s0, s0, s1
#endif
+#if !defined(__ARM_PCS_VFP)
+#if !defined(DOUBLE)
+ vmov r0, s0
+#else
+ vmov r0, r1, d0
+#endif
+#endif
bx lr
diff --git a/kernel/arm/nrm2_vfpv3.S b/kernel/arm/nrm2_vfpv3.S
index 7af966895..84977901d 100644
--- a/kernel/arm/nrm2_vfpv3.S
+++ b/kernel/arm/nrm2_vfpv3.S
@@ -503,8 +503,13 @@ nrm2_kernel_L999:
#else
vsqrt.f32 s1, s1
vmul.f32 s0, s0, s1
-#ifdef ARM_SOFTFP_ABI
- vmov r0, s0
+#endif
+
+#if !defined(__ARM_PCS_VFP)
+#if defined(DOUBLE)
+ vmov r0, r1, d0
+#else
+ vmov r0, s0
#endif
#endif