Browse Source

updated cgemv and zgemv kernels for armv6

tags/v0.2.16.rc1
Werner Saar 10 years ago
parent
commit
eaa63165df
4 changed files with 65 additions and 32 deletions
  1. +12
    -4
      kernel/arm/cgemv_n_vfp.S
  2. +20
    -12
      kernel/arm/cgemv_t_vfp.S
  3. +13
    -4
      kernel/arm/zgemv_n_vfp.S
  4. +20
    -12
      kernel/arm/zgemv_t_vfp.S

+ 12
- 4
kernel/arm/cgemv_n_vfp.S View File

@@ -59,6 +59,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


#define I r12 #define I r12


#define FP_ZERO [fp, #-228]
#define FP_ZERO_0 [fp, #-228]
#define FP_ZERO_1 [fp, #-224]

#define ALPHA_I [fp, #-236] #define ALPHA_I [fp, #-236]
#define ALPHA_R [fp, #-244] #define ALPHA_R [fp, #-244]


@@ -117,7 +121,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.macro INIT_F4 .macro INIT_F4


pld [ YO, #Y_PRE ] pld [ YO, #Y_PRE ]
vsub.f32 s8 , s8 , s8
flds s8 , FP_ZERO
vmov.f32 s9 , s8 vmov.f32 s9 , s8
vmov.f32 s10, s8 vmov.f32 s10, s8
vmov.f32 s11, s8 vmov.f32 s11, s8
@@ -220,7 +224,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_F1 .macro INIT_F1


vsub.f32 s8 , s8 , s8
flds s8 , FP_ZERO
vmov.f32 s9 , s8 vmov.f32 s9 , s8


.endm .endm
@@ -267,7 +271,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_S4 .macro INIT_S4


vsub.f32 s8 , s8 , s8
flds s8 , FP_ZERO
vmov.f32 s9 , s8 vmov.f32 s9 , s8
vmov.f32 s10, s8 vmov.f32 s10, s8
vmov.f32 s11, s8 vmov.f32 s11, s8
@@ -384,7 +388,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_S1 .macro INIT_S1


vsub.f32 s8 , s8 , s8
flds s8 , FP_ZERO
vmov.f32 s9 , s8 vmov.f32 s9 , s8


.endm .endm
@@ -448,6 +452,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
vstm r12, { s8 - s15 } // store floating point registers vstm r12, { s8 - s15 } // store floating point registers
#endif #endif


movs r12, #0
str r12, FP_ZERO
str r12, FP_ZERO_1

cmp OLD_M, #0 cmp OLD_M, #0
ble cgemvn_kernel_L999 ble cgemvn_kernel_L999




+ 20
- 12
kernel/arm/cgemv_t_vfp.S View File

@@ -59,6 +59,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


#define I r12 #define I r12


#define FP_ZERO [fp, #-228]
#define FP_ZERO_0 [fp, #-228]
#define FP_ZERO_1 [fp, #-224]

#define N [fp, #-252 ] #define N [fp, #-252 ]
#define A [fp, #-256 ] #define A [fp, #-256 ]


@@ -116,10 +120,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_F2 .macro INIT_F2


vsub.f32 s12, s12, s12
vsub.f32 s13, s13, s13
vsub.f32 s14, s14, s14
vsub.f32 s15, s15, s15
flds s12, FP_ZERO
vmov.f32 s13, s12
vmov.f32 s14, s12
vmov.f32 s15, s12


.endm .endm


@@ -172,8 +176,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_F1 .macro INIT_F1


vsub.f32 s12, s12, s12
vsub.f32 s13, s13, s13
flds s12, FP_ZERO
vmov.f32 s13, s12


.endm .endm


@@ -215,10 +219,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_S2 .macro INIT_S2


vsub.f32 s12, s12, s12
vsub.f32 s13, s13, s13
vsub.f32 s14, s14, s14
vsub.f32 s15, s15, s15
flds s12, FP_ZERO
vmov.f32 s13, s12
vmov.f32 s14, s12
vmov.f32 s15, s12


.endm .endm


@@ -281,8 +285,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_S1 .macro INIT_S1


vsub.f32 s12, s12, s12
vsub.f32 s13, s13, s13
flds s12, FP_ZERO
vmov.f32 s13, s12


.endm .endm


@@ -345,6 +349,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
vstm r12, { s8 - s15 } // store floating point registers vstm r12, { s8 - s15 } // store floating point registers
#endif #endif


movs r12, #0
str r12, FP_ZERO
str r12, FP_ZERO_1

cmp M, #0 cmp M, #0
ble cgemvt_kernel_L999 ble cgemvt_kernel_L999




+ 13
- 4
kernel/arm/zgemv_n_vfp.S View File

@@ -59,6 +59,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


#define I r12 #define I r12


#define FP_ZERO [fp, #-228]
#define FP_ZERO_0 [fp, #-228]
#define FP_ZERO_1 [fp, #-224]


#define ALPHA_I [fp, #-236] #define ALPHA_I [fp, #-236]
#define ALPHA_R [fp, #-244] #define ALPHA_R [fp, #-244]


@@ -117,7 +122,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.macro INIT_F4 .macro INIT_F4


pld [ YO, #Y_PRE ] pld [ YO, #Y_PRE ]
vsub.f64 d8 , d8 , d8
fldd d8, FP_ZERO
vmov.f64 d9 , d8 vmov.f64 d9 , d8
vmov.f64 d10, d8 vmov.f64 d10, d8
vmov.f64 d11, d8 vmov.f64 d11, d8
@@ -222,7 +227,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_F1 .macro INIT_F1


vsub.f64 d8 , d8 , d8
fldd d8, FP_ZERO
vmov.f64 d9 , d8 vmov.f64 d9 , d8


.endm .endm
@@ -269,7 +274,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_S4 .macro INIT_S4


vsub.f64 d8 , d8 , d8
fldd d8, FP_ZERO
vmov.f64 d9 , d8 vmov.f64 d9 , d8
vmov.f64 d10, d8 vmov.f64 d10, d8
vmov.f64 d11, d8 vmov.f64 d11, d8
@@ -386,7 +391,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_S1 .macro INIT_S1


vsub.f64 d8 , d8 , d8
fldd d8, FP_ZERO
vmov.f64 d9 , d8 vmov.f64 d9 , d8


.endm .endm
@@ -450,6 +455,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
vstm r12, { s8 - s15 } // store floating point registers vstm r12, { s8 - s15 } // store floating point registers
#endif #endif


movs r12, #0
str r12, FP_ZERO
str r12, FP_ZERO_1

cmp OLD_M, #0 cmp OLD_M, #0
ble zgemvn_kernel_L999 ble zgemvn_kernel_L999




+ 20
- 12
kernel/arm/zgemv_t_vfp.S View File

@@ -59,6 +59,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


#define I r12 #define I r12


#define FP_ZERO [fp, #-228]
#define FP_ZERO_0 [fp, #-228]
#define FP_ZERO_1 [fp, #-224]

#define N [fp, #-252 ] #define N [fp, #-252 ]
#define A [fp, #-256 ] #define A [fp, #-256 ]


@@ -117,10 +121,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_F2 .macro INIT_F2


vsub.f64 d12, d12, d12
vsub.f64 d13, d13, d13
vsub.f64 d14, d14, d14
vsub.f64 d15, d15, d15
fldd d12, FP_ZERO
vmov.f64 d13, d12
vmov.f64 d14, d12
vmov.f64 d15, d12


.endm .endm


@@ -173,8 +177,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_F1 .macro INIT_F1


vsub.f64 d12, d12, d12
vsub.f64 d13, d13, d13
fldd d12, FP_ZERO
vmov.f64 d13, d12


.endm .endm


@@ -216,10 +220,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_S2 .macro INIT_S2


vsub.f64 d12, d12, d12
vsub.f64 d13, d13, d13
vsub.f64 d14, d14, d14
vsub.f64 d15, d15, d15
fldd d12, FP_ZERO
vmov.f64 d13, d12
vmov.f64 d14, d12
vmov.f64 d15, d12


.endm .endm


@@ -282,8 +286,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


.macro INIT_S1 .macro INIT_S1


vsub.f64 d12, d12, d12
vsub.f64 d13, d13, d13
fldd d12, FP_ZERO
vmov.f64 d13, d12


.endm .endm


@@ -346,6 +350,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
vstm r12, { s8 - s15 } // store floating point registers vstm r12, { s8 - s15 } // store floating point registers
#endif #endif


movs r12, #0
str r12, FP_ZERO
str r12, FP_ZERO_1

cmp M, #0 cmp M, #0
ble zgemvt_kernel_L999 ble zgemvt_kernel_L999




Loading…
Cancel
Save