Support ARM softfp ABI for sgemm on ARMV7.
make ARM_SOFTFP_ABI=1
This commit is contained in:
parent
503dcbfde6
commit
90e02ccf68
|
@ -1,4 +1,4 @@
|
||||||
ifeq logical or
|
#ifeq logical or
|
||||||
ifeq ($(CORE), $(filter $(CORE),CORTEXA9 CORTEXA15))
|
ifeq ($(CORE), $(filter $(CORE),CORTEXA9 CORTEXA15))
|
||||||
ifeq ($(OSNAME), Android)
|
ifeq ($(OSNAME), Android)
|
||||||
CCOMMON_OPT += -mfpu=neon -march=armv7-a
|
CCOMMON_OPT += -mfpu=neon -march=armv7-a
|
||||||
|
@ -11,12 +11,12 @@ endif
|
||||||
|
|
||||||
ifeq ($(CORE), ARMV7)
|
ifeq ($(CORE), ARMV7)
|
||||||
ifeq ($(OSNAME), Android)
|
ifeq ($(OSNAME), Android)
|
||||||
ifeq ($(ARM_SOFTFP), 1)
|
ifeq ($(ARM_SOFTFP_ABI), 1)
|
||||||
CCOMMON_OPT += -mfpu=neon -march=armv7-a
|
CCOMMON_OPT += -mfpu=neon -march=armv7-a
|
||||||
FCOMMON_OPT += -mfpu=neon -march=armv7-a
|
FCOMMON_OPT += -mfpu=neon -march=armv7-a
|
||||||
else
|
else
|
||||||
CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch
|
CCOMMON_OPT += -mfpu=neon -march=armv7-a -Wl,--no-warn-mismatch
|
||||||
FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch
|
FCOMMON_OPT += -mfpu=neon -march=armv7-a -Wl,--no-warn-mismatch
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
CCOMMON_OPT += -mfpu=vfpv3 -march=armv7-a
|
CCOMMON_OPT += -mfpu=vfpv3 -march=armv7-a
|
||||||
|
|
|
@ -480,9 +480,9 @@ BINARY_DEFINED = 1
|
||||||
CCOMMON_OPT += -marm
|
CCOMMON_OPT += -marm
|
||||||
FCOMMON_OPT += -marm
|
FCOMMON_OPT += -marm
|
||||||
|
|
||||||
ifeq ($(ARM_SOFT_FLOAT_ABI), 1)
|
ifeq ($(ARM_SOFTFP_ABI), 1)
|
||||||
CCOMMON_OPT += -mfloat-abi=softfp
|
CCOMMON_OPT += -mfloat-abi=softfp -DARM_SOFTFP_ABI
|
||||||
FCOMMON_OPT += -mfloat-abi=softfp
|
FCOMMON_OPT += -mfloat-abi=softfp -DARM_SOFTFP_ABI
|
||||||
else
|
else
|
||||||
CCOMMON_OPT += -mfloat-abi=hard
|
CCOMMON_OPT += -mfloat-abi=hard
|
||||||
FCOMMON_OPT += -mfloat-abi=hard
|
FCOMMON_OPT += -mfloat-abi=hard
|
||||||
|
|
|
@ -58,8 +58,14 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define OLD_M r0
|
#define OLD_M r0
|
||||||
#define OLD_N r1
|
#define OLD_N r1
|
||||||
#define OLD_K r2
|
#define OLD_K r2
|
||||||
|
|
||||||
|
#ifdef ARM_SOFTFP_ABI
|
||||||
|
#define OLD_ALPHA r3
|
||||||
|
//#define OLD_A
|
||||||
|
#else //hard
|
||||||
#define OLD_A r3
|
#define OLD_A r3
|
||||||
#define OLD_ALPHA s0
|
#define OLD_ALPHA s0
|
||||||
|
#endif
|
||||||
|
|
||||||
/******************************************************
|
/******************************************************
|
||||||
* [fp, #-128] - [fp, #-64] is reserved
|
* [fp, #-128] - [fp, #-64] is reserved
|
||||||
|
@ -71,7 +77,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define M [fp, #-256 ]
|
#define M [fp, #-256 ]
|
||||||
#define N [fp, #-260 ]
|
#define N [fp, #-260 ]
|
||||||
#define K [fp, #-264 ]
|
#define K [fp, #-264 ]
|
||||||
|
|
||||||
|
#ifndef ARM_SOFTFP_ABI
|
||||||
#define A [fp, #-268 ]
|
#define A [fp, #-268 ]
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FP_ZERO [fp, #-240]
|
#define FP_ZERO [fp, #-240]
|
||||||
#define FP_ZERO_0 [fp, #-240]
|
#define FP_ZERO_0 [fp, #-240]
|
||||||
|
@ -79,10 +88,17 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#define ALPHA [fp, #-280]
|
#define ALPHA [fp, #-280]
|
||||||
|
|
||||||
|
#ifdef ARM_SOFTFP_ABI
|
||||||
|
#define A [fp, #4 ]
|
||||||
|
#define B [fp, #8 ]
|
||||||
|
#define C [fp, #12 ]
|
||||||
|
#define OLD_LDC [fp, #16 ]
|
||||||
|
#else //hard
|
||||||
#define B [fp, #4 ]
|
#define B [fp, #4 ]
|
||||||
#define C [fp, #8 ]
|
#define C [fp, #8 ]
|
||||||
#define OLD_LDC [fp, #12 ]
|
#define OLD_LDC [fp, #12 ]
|
||||||
|
#endif
|
||||||
|
|
||||||
#define I r0
|
#define I r0
|
||||||
#define J r1
|
#define J r1
|
||||||
#define L r2
|
#define L r2
|
||||||
|
@ -854,9 +870,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
str OLD_M, M
|
str OLD_M, M
|
||||||
str OLD_N, N
|
str OLD_N, N
|
||||||
str OLD_K, K
|
str OLD_K, K
|
||||||
|
|
||||||
|
#ifdef ARM_SOFTFP_ABI
|
||||||
|
str OLD_ALPHA, ALPHA
|
||||||
|
#else //hard
|
||||||
str OLD_A, A
|
str OLD_A, A
|
||||||
vstr OLD_ALPHA, ALPHA
|
vstr OLD_ALPHA, ALPHA
|
||||||
|
#endif
|
||||||
sub r3, fp, #128
|
sub r3, fp, #128
|
||||||
vstm r3, { s8 - s31} // store floating point registers
|
vstm r3, { s8 - s31} // store floating point registers
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue