| @@ -38,11 +38,18 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| #define STACKSIZE 256 | #define STACKSIZE 256 | ||||
| #ifndef ARM_SOFTFP_ABI | |||||
| //hard | |||||
| #define OLD_INC_X [fp, #0 ] | #define OLD_INC_X [fp, #0 ] | ||||
| #define OLD_Y [fp, #4 ] | #define OLD_Y [fp, #4 ] | ||||
| #define OLD_INC_Y [fp, #8 ] | #define OLD_INC_Y [fp, #8 ] | ||||
| #else | |||||
| #define OLD_X [fp, #0 ] | |||||
| #define OLD_INC_X [fp, #4 ] | |||||
| #define OLD_Y [fp, #8 ] | |||||
| #define OLD_INC_Y [fp, #12 ] | |||||
| #endif | |||||
| #define N r0 | #define N r0 | ||||
| #define Y r1 | #define Y r1 | ||||
| #define INC_X r2 | #define INC_X r2 | ||||
| @@ -363,6 +370,13 @@ 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 | |||||
| #ifndef DOUBLE | |||||
| vmov s0, r3 //move alpha to s0 | |||||
| ldr X, OLD_X | |||||
| #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 | ||||
| @@ -38,12 +38,25 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| #define STACKSIZE 256 | #define STACKSIZE 256 | ||||
| #ifndef ARM_SOFTFP_ABI | |||||
| //hard | |||||
| #define OLD_LDA [fp, #0 ] | #define OLD_LDA [fp, #0 ] | ||||
| #define X [fp, #4 ] | #define X [fp, #4 ] | ||||
| #define OLD_INC_X [fp, #8 ] | #define OLD_INC_X [fp, #8 ] | ||||
| #define Y [fp, #12 ] | #define Y [fp, #12 ] | ||||
| #define OLD_INC_Y [fp, #16 ] | #define OLD_INC_Y [fp, #16 ] | ||||
| #define OLD_A r3 | #define OLD_A r3 | ||||
| #else | |||||
| #define OLD_A_SOFTFP [fp, #0 ] | |||||
| #define OLD_LDA [fp, #4 ] | |||||
| #define X [fp, #8 ] | |||||
| #define OLD_INC_X [fp, #12 ] | |||||
| #define Y [fp, #16 ] | |||||
| #define OLD_INC_Y [fp, #20 ] | |||||
| #define OLD_ALPHA r3 | |||||
| #define OLD_A r3 | |||||
| #endif | |||||
| #define OLD_M r0 | #define OLD_M r0 | ||||
| #define AO1 r0 | #define AO1 r0 | ||||
| @@ -552,9 +565,18 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| cmp N, #0 | cmp N, #0 | ||||
| ble gemvn_kernel_L999 | ble gemvn_kernel_L999 | ||||
| #ifndef DOUBLE | |||||
| #ifdef ARM_SOFTFP_ABI | |||||
| vmov s0, OLD_ALPHA | |||||
| ldr OLD_A, OLD_A_SOFTFP | |||||
| #endif | |||||
| #endif | |||||
| str OLD_A, A | str OLD_A, A | ||||
| str OLD_M, M | str OLD_M, M | ||||
| ldr INC_X , OLD_INC_X | ldr INC_X , OLD_INC_X | ||||
| ldr INC_Y , OLD_INC_Y | ldr INC_Y , OLD_INC_Y | ||||
| @@ -38,12 +38,25 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| #define STACKSIZE 256 | #define STACKSIZE 256 | ||||
| #ifndef ARM_SOFTFP_ABI | |||||
| //hard abi | |||||
| #define OLD_LDA [fp, #0 ] | #define OLD_LDA [fp, #0 ] | ||||
| #define X [fp, #4 ] | #define X [fp, #4 ] | ||||
| #define OLD_INC_X [fp, #8 ] | #define OLD_INC_X [fp, #8 ] | ||||
| #define Y [fp, #12 ] | #define Y [fp, #12 ] | ||||
| #define OLD_INC_Y [fp, #16 ] | #define OLD_INC_Y [fp, #16 ] | ||||
| #define OLD_A r3 | #define OLD_A r3 | ||||
| #else | |||||
| #define OLD_A_SOFTFP [fp, #0 ] | |||||
| #define OLD_LDA [fp, #4 ] | |||||
| #define X [fp, #8 ] | |||||
| #define OLD_INC_X [fp, #12 ] | |||||
| #define Y [fp, #16 ] | |||||
| #define OLD_INC_Y [fp, #20 ] | |||||
| #define OLD_ALPHA r3 | |||||
| #define OLD_A r3 | |||||
| #endif | |||||
| #define OLD_N r1 | #define OLD_N r1 | ||||
| #define M r0 | #define M r0 | ||||
| @@ -505,6 +518,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| cmp OLD_N, #0 | cmp OLD_N, #0 | ||||
| ble gemvt_kernel_L999 | ble gemvt_kernel_L999 | ||||
| #ifndef DOUBLE | |||||
| #ifdef ARM_SOFTFP_ABI | |||||
| vmov s0, OLD_ALPHA | |||||
| ldr OLD_A, OLD_A_SOFTFP | |||||
| #endif | |||||
| #endif | |||||
| str OLD_A, A | str OLD_A, A | ||||
| str OLD_N, N | str OLD_N, N | ||||
| @@ -503,6 +503,9 @@ nrm2_kernel_L999: | |||||
| #else | #else | ||||
| vsqrt.f32 s1, s1 | vsqrt.f32 s1, s1 | ||||
| vmul.f32 s0, s0, s1 | vmul.f32 s0, s0, s1 | ||||
| #ifdef ARM_SOFTFP_ABI | |||||
| vmov r0, s0 | |||||
| #endif | |||||
| #endif | #endif | ||||
| bx lr | bx lr | ||||
| @@ -332,10 +332,16 @@ sdot_kernel_L999: | |||||
| vadd.f64 d0 , d0, d1 // set return value | vadd.f64 d0 , d0, d1 // set return value | ||||
| #ifdef ARM_SOFTFP_ABI | |||||
| vmov r0, r1, d0 | |||||
| #endif | |||||
| #else | #else | ||||
| vadd.f32 s0 , s0, s1 // set return value | vadd.f32 s0 , s0, s1 // set return value | ||||
| #ifdef ARM_SOFTFP_ABI | |||||
| vmov r0, s0 | |||||
| #endif | |||||
| #endif | #endif | ||||
| sub sp, fp, #24 | sub sp, fp, #24 | ||||
| pop {r4 - r9, fp} | pop {r4 - r9, fp} | ||||