#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_R [fp, #-244]
.macro INIT_F4
pld [ YO, #Y_PRE ]
- vsub.f32 s8 , s8 , s8
+ flds s8 , FP_ZERO
vmov.f32 s9 , s8
vmov.f32 s10, s8
vmov.f32 s11, s8
.macro INIT_F1
- vsub.f32 s8 , s8 , s8
+ flds s8 , FP_ZERO
vmov.f32 s9 , s8
.endm
.macro INIT_S4
- vsub.f32 s8 , s8 , s8
+ flds s8 , FP_ZERO
vmov.f32 s9 , s8
vmov.f32 s10, s8
vmov.f32 s11, s8
.macro INIT_S1
- vsub.f32 s8 , s8 , s8
+ flds s8 , FP_ZERO
vmov.f32 s9 , s8
.endm
vstm r12, { s8 - s15 } // store floating point registers
#endif
+ movs r12, #0
+ str r12, FP_ZERO
+ str r12, FP_ZERO_1
+
cmp OLD_M, #0
ble cgemvn_kernel_L999
#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 A [fp, #-256 ]
.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
.macro INIT_F1
- vsub.f32 s12, s12, s12
- vsub.f32 s13, s13, s13
+ flds s12, FP_ZERO
+ vmov.f32 s13, s12
.endm
.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
.macro INIT_S1
- vsub.f32 s12, s12, s12
- vsub.f32 s13, s13, s13
+ flds s12, FP_ZERO
+ vmov.f32 s13, s12
.endm
vstm r12, { s8 - s15 } // store floating point registers
#endif
+ movs r12, #0
+ str r12, FP_ZERO
+ str r12, FP_ZERO_1
+
cmp M, #0
ble cgemvt_kernel_L999
#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_R [fp, #-244]
.macro INIT_F4
pld [ YO, #Y_PRE ]
- vsub.f64 d8 , d8 , d8
+ fldd d8, FP_ZERO
vmov.f64 d9 , d8
vmov.f64 d10, d8
vmov.f64 d11, d8
.macro INIT_F1
- vsub.f64 d8 , d8 , d8
+ fldd d8, FP_ZERO
vmov.f64 d9 , d8
.endm
.macro INIT_S4
- vsub.f64 d8 , d8 , d8
+ fldd d8, FP_ZERO
vmov.f64 d9 , d8
vmov.f64 d10, d8
vmov.f64 d11, d8
.macro INIT_S1
- vsub.f64 d8 , d8 , d8
+ fldd d8, FP_ZERO
vmov.f64 d9 , d8
.endm
vstm r12, { s8 - s15 } // store floating point registers
#endif
+ movs r12, #0
+ str r12, FP_ZERO
+ str r12, FP_ZERO_1
+
cmp OLD_M, #0
ble zgemvn_kernel_L999
#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 A [fp, #-256 ]
.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
.macro INIT_F1
- vsub.f64 d12, d12, d12
- vsub.f64 d13, d13, d13
+ fldd d12, FP_ZERO
+ vmov.f64 d13, d12
.endm
.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
.macro INIT_S1
- vsub.f64 d12, d12, d12
- vsub.f64 d13, d13, d13
+ fldd d12, FP_ZERO
+ vmov.f64 d13, d12
.endm
vstm r12, { s8 - s15 } // store floating point registers
#endif
+ movs r12, #0
+ str r12, FP_ZERO
+ str r12, FP_ZERO_1
+
cmp M, #0
ble zgemvt_kernel_L999