Skip to content

Commit 90e02cc

Browse files
committed
Support ARM softfp ABI for sgemm on ARMV7.
make ARM_SOFTFP_ABI=1
1 parent 503dcbf commit 90e02cc

3 files changed

Lines changed: 29 additions & 9 deletions

File tree

Makefile.arm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ifeq logical or
1+
#ifeq logical or
22
ifeq ($(CORE), $(filter $(CORE),CORTEXA9 CORTEXA15))
33
ifeq ($(OSNAME), Android)
44
CCOMMON_OPT += -mfpu=neon -march=armv7-a
@@ -11,12 +11,12 @@ endif
1111

1212
ifeq ($(CORE), ARMV7)
1313
ifeq ($(OSNAME), Android)
14-
ifeq ($(ARM_SOFTFP), 1)
14+
ifeq ($(ARM_SOFTFP_ABI), 1)
1515
CCOMMON_OPT += -mfpu=neon -march=armv7-a
1616
FCOMMON_OPT += -mfpu=neon -march=armv7-a
1717
else
18-
CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch
19-
FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch
18+
CCOMMON_OPT += -mfpu=neon -march=armv7-a -Wl,--no-warn-mismatch
19+
FCOMMON_OPT += -mfpu=neon -march=armv7-a -Wl,--no-warn-mismatch
2020
endif
2121
else
2222
CCOMMON_OPT += -mfpu=vfpv3 -march=armv7-a

Makefile.system

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -480,9 +480,9 @@ BINARY_DEFINED = 1
480480
CCOMMON_OPT += -marm
481481
FCOMMON_OPT += -marm
482482

483-
ifeq ($(ARM_SOFT_FLOAT_ABI), 1)
484-
CCOMMON_OPT += -mfloat-abi=softfp
485-
FCOMMON_OPT += -mfloat-abi=softfp
483+
ifeq ($(ARM_SOFTFP_ABI), 1)
484+
CCOMMON_OPT += -mfloat-abi=softfp -DARM_SOFTFP_ABI
485+
FCOMMON_OPT += -mfloat-abi=softfp -DARM_SOFTFP_ABI
486486
else
487487
CCOMMON_OPT += -mfloat-abi=hard
488488
FCOMMON_OPT += -mfloat-abi=hard

kernel/arm/sgemm_kernel_4x4_vfpv3.S

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,14 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5858
#define OLD_M r0
5959
#define OLD_N r1
6060
#define OLD_K r2
61+
62+
#ifdef ARM_SOFTFP_ABI
63+
#define OLD_ALPHA r3
64+
//#define OLD_A
65+
#else //hard
6166
#define OLD_A r3
6267
#define OLD_ALPHA s0
68+
#endif
6369

6470
/******************************************************
6571
* [fp, #-128] - [fp, #-64] is reserved
@@ -71,18 +77,28 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7177
#define M [fp, #-256 ]
7278
#define N [fp, #-260 ]
7379
#define K [fp, #-264 ]
80+
81+
#ifndef ARM_SOFTFP_ABI
7482
#define A [fp, #-268 ]
83+
#endif
7584

7685
#define FP_ZERO [fp, #-240]
7786
#define FP_ZERO_0 [fp, #-240]
7887
#define FP_ZERO_1 [fp, #-236]
7988

8089
#define ALPHA [fp, #-280]
8190

91+
#ifdef ARM_SOFTFP_ABI
92+
#define A [fp, #4 ]
93+
#define B [fp, #8 ]
94+
#define C [fp, #12 ]
95+
#define OLD_LDC [fp, #16 ]
96+
#else //hard
8297
#define B [fp, #4 ]
8398
#define C [fp, #8 ]
8499
#define OLD_LDC [fp, #12 ]
85-
100+
#endif
101+
86102
#define I r0
87103
#define J r1
88104
#define L r2
@@ -854,9 +870,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
854870
str OLD_M, M
855871
str OLD_N, N
856872
str OLD_K, K
873+
874+
#ifdef ARM_SOFTFP_ABI
875+
str OLD_ALPHA, ALPHA
876+
#else //hard
857877
str OLD_A, A
858878
vstr OLD_ALPHA, ALPHA
859-
879+
#endif
860880
sub r3, fp, #128
861881
vstm r3, { s8 - s31} // store floating point registers
862882

0 commit comments

Comments
 (0)