10
10
.text
11
11
. align 4
12
12
.include "../Arm32/macros_32.S"
13
+ #if ANDROID
14
+ .type _fast_sincos_scalar , %function
15
+ .type _fast_sincos_vector2 , %function
16
+ .type _fast_sincos_vector3 , %function
17
+ .type _fast_sincos_vector4 , %function
18
+ .type _fast_exp_scalar , %function
19
+ .type _fast_exp_vector2 , %function
20
+ .type _fast_exp_vector3 , %function
21
+ .type _fast_exp_vector4 , %function
22
+ .type _fast_ln_scalar , %function
23
+ .type _fast_ln_vector2 , %function
24
+ .type _fast_ln_vector3 , %function
25
+ .type _fast_ln_vector4 , %function
26
+ .type _fast_log2_scalar , %function
27
+ .type _fast_log2_vector2 , %function
28
+ .type _fast_log2_vector3 , %function
29
+ .type _fast_log2_vector4 , %function
30
+ .type _fast_exp2_scalar , %function
31
+ .type _fast_exp2_vector2 , %function
32
+ .type _fast_exp2_vector3 , %function
33
+ .type _fast_exp2_vector4 , %function
34
+ #endif
13
35
.globl _fast_sincos_scalar , _fast_sincos_vector2 , _fast_sincos_vector3 , _fast_sincos_vector4
14
36
.globl _fast_exp_scalar , _fast_exp_vector2 , _fast_exp_vector3 , _fast_exp_vector4
15
37
.globl _fast_ln_scalar , _fast_ln_vector2 , _fast_ln_vector3 , _fast_ln_vector4
@@ -124,7 +146,7 @@ _fast_sincos_vector2: // (const A: TVector2; out Sin, Cos: TVector2);
124
146
125
147
_fast_sincos_vector3: // (const A: TVector3 ; out Sin, Cos: TVector3);
126
148
adr r3 , SINCOS_FACTORS_Q
127
- fldmias r0 , {s0 - s2}
149
+ vldmia.f32 r0 , {s0 - s2}
128
150
vld1. 32 {q8 - q9} , [ r3 ] ! // (q8) FOPI
129
151
// (q9) 1 ( int )
130
152
vld1. 32 {q10 - q11} , [ r3 ] ! // (q10) not 1 ( int )
@@ -171,9 +193,9 @@ _fast_sincos_vector3: // (const A: TVector3; out Sin, Cos: TVector3);
171
193
vneg.f32 q2 , q8 // (q2) - YC
172
194
vbsl.f32 q1 , q0 , q15 // if (SignMaskSin < 0 ) then Sin := - YS else Sin := YS
173
195
vbsl.f32 q14 , q8 , q2 // if (SignMaskCos < 0 ) then Cos := - YC else Cos := YC
174
- fstmias r1 , {s4 - s6} // q1
196
+ vstmia.f32 r1 , {s4 - s6} // q1
175
197
vmov q0 , q14
176
- fstmias r2 , {s0 - s2}
198
+ vstmia.f32 r2 , {s0 - s2}
177
199
bx lr
178
200
179
201
_fast_sincos_vector4: // (const A: TVector4 ; out Sin, Cos: TVector4);
@@ -312,7 +334,7 @@ _fast_exp_vector2: // (const A: TVector2; out Result: TVector2);
312
334
_fast_exp_vector3: // (const A: TVector3 ; out Result: TVector3);
313
335
vpush {q4 - q6}
314
336
adr r2 , EXP_FACTORS_Q
315
- fldmias r0 , {s0 - s2}
337
+ vldmia.f32 r0 , {s0 - s2}
316
338
vld1. 32 {q8 - q9} , [ r2 ] !
317
339
vld1. 32 {q10 - q11} , [ r2 ] !
318
340
vld1. 32 {q12 - q13} , [ r2 ] !
@@ -334,7 +356,7 @@ _fast_exp_vector3: // (const A: TVector3; out Result: TVector3);
334
356
vmla.f32 q9 , q2 , q10 // F2 + B * (F3 + B * (F4 + B * F5))
335
357
vmla.f32 q8 , q2 , q9 // F1 + B * (F2 + B * (F3 + B * (F4 + B * F5)))
336
358
vmul.f32 q0 , q1 , q8 // XU.S * (F1 + B * (F2 + B * (F3 + B * (F4 + B * F5))))
337
- fstmias r1 , {s0 - s2}
359
+ vstmia.f32 r1 , {s0 - s2}
338
360
vpop {q4 - q6}
339
361
bx lr
340
362
@@ -452,7 +474,7 @@ _fast_ln_vector2: // (const A: TVector2; out Result: TVector2);
452
474
_fast_ln_vector3: // (const A: TVector3 ; out Result: TVector3);
453
475
vpush {q4 - q5}
454
476
adr r2 , LN_FACTORS_Q
455
- fldmias r0 , {s0 - s2}
477
+ vldmia.f32 r0 , {s0 - s2}
456
478
vld1. 32 {q8 , q9} , [ r2 ] !
457
479
vld1. 32 {q10 , q11} , [ r2 ] !
458
480
vld1. 32 {q12 , q13} , [ r2 ] !
@@ -477,7 +499,7 @@ _fast_ln_vector3: // (const A: TVector3; out Result: TVector3);
477
499
vmla.f32 q4 , q2 , q3 // (F1 * X + AddCst) + X2 * ((X - F2) + X2 * (F4 + F3 * X))
478
500
vmla.f32 q4 , q12 , q1 // (F1 * X + AddCst) + X2 * ((X - F2) + X2 * (F4 + F3 * X)) + (F5 * Exp)
479
501
480
- fstmias r1 , {s16 - s18}
502
+ vstmia.f32 r1 , {s16 - s18}
481
503
vpop {q4 - q5}
482
504
bx lr
483
505
@@ -574,7 +596,7 @@ _fast_log2_vector2: // (const A: TVector2; out Result: TVector2);
574
596
575
597
_fast_log2_vector3: // (const A: TVector3 ; out Result: TVector3);
576
598
adr r2 , LOG2_FACTORS_Q
577
- fldmias r0 , {s0 - s2}
599
+ vldmia.f32 r0 , {s0 - s2}
578
600
vld1. 32 {q8 - q9} , [ r2 ] !
579
601
vld1. 32 {q10 - q11} , [ r2 ] !
580
602
vld1. 32 {q12 - q13} , [ r2 ] !
@@ -590,7 +612,7 @@ _fast_log2_vector3: // (const A: TVector3; out Result: TVector3);
590
612
RECIPQ_LOW q3 , q2 // 1 /(F4 + MX.S)
591
613
vmls.f32 q8 , q10 , q3 // F1 + (VX.I * F5) - (F2 * MX.S) - (F3/(F4 + MX.S))
592
614
vmov q0 , q8
593
- fstmias r1 , {s0 - s2}
615
+ vstmia.f32 r1 , {s0 - s2}
594
616
bx lr
595
617
596
618
_fast_log2_vector4: // (const A: TVector4 ; out Result: TVector4);
@@ -683,7 +705,7 @@ _fast_exp2_vector2: // (const A: TVector2; out Result: TVector2);
683
705
684
706
_fast_exp2_vector3: // (const A: TVector3 ; out Result: TVector3);
685
707
adr r2 , EXP2_FACTORS_Q
686
- fldmias r0 , {s0 - s2}
708
+ vldmia.f32 r0 , {s0 - s2}
687
709
vld1. 32 {q8 - q9} , [ r2 ] !
688
710
vld1. 32 {q10 - q11} , [ r2 ] !
689
711
vld1. 32 {q12 - q13} , [ r2 ]
@@ -704,7 +726,7 @@ _fast_exp2_vector3: // (const A: TVector3; out Result: TVector3);
704
726
vmul.f32 q0 , q0 , q13 // ( 1 shl 23 ) * (A + F1 + F2/(F3 - Z) - F4 * Z)
705
727
vcvt.s32.f32 q0 , q0 // Trunc(( 1 shl 23 ) * (A + F1 + F2/(F3 - Z) - F4 * Z))
706
728
707
- fstmias r1 , {s0 - s2}
729
+ vstmia.f32 r1 , {s0 - s2}
708
730
bx lr
709
731
710
732
_fast_exp2_vector4: // (const A: TVector4 ; out Result: TVector4);
0 commit comments