|
1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of the License "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // e32test\math\t_vfp.h |
|
15 // |
|
16 // |
|
17 |
|
18 #ifndef __T_VFP_H__ |
|
19 #define __T_VFP_H__ |
|
20 #include <e32std.h> |
|
21 #include <arm_vfp.h> |
|
22 |
|
23 #define ARCH_VERSION_VFPV2 1 |
|
24 #define ARCH_VERSION_VFPV3_SUBARCH_V2 2 |
|
25 #define ARCH_VERSION_VFPV3_SUBARCH_NULL 3 |
|
26 #define ARCH_VERSION_VFPV3_SUBARCH_V3 4 |
|
27 |
|
28 class Vfp |
|
29 { |
|
30 public: |
|
31 static TUint32 Fpscr(); |
|
32 static void SetFpscr(TUint32 aVal); |
|
33 |
|
34 static TReal32 SReg(TInt aReg); |
|
35 static void SetSReg(TReal32 aVal, TInt aReg); |
|
36 static TInt32 SRegInt(TInt aReg); |
|
37 static void SetSReg(TInt32 aVal, TInt aReg); |
|
38 |
|
39 static void AbsS(); // S0 = ABS(S1) |
|
40 static void AddS(); // S0 = S1 + S2 |
|
41 static void CmpS(); // compare S0, S1 |
|
42 static void CmpES(); // compare S0, S1 |
|
43 static void CmpEZS(); // compare S0, 0 |
|
44 static void CmpZS(); // compare S0, 0 |
|
45 static void Cpy0S(TInt aReg); // S0 = Sn |
|
46 static void CpyS0(TInt aReg); // Sn = S0 |
|
47 static void DivS(); // S0 = S1 / S2 |
|
48 static void MacS(); // S0 += S1 * S2 |
|
49 static void MscS(); // S0 = S1 * S2 - S0 |
|
50 static void MulS(); // S0 = S1 * S2 |
|
51 static void NegS(); // S0 = -S1 |
|
52 static void NMacS(); // S0 -= S1 * S2 |
|
53 static void NMscS(); // S0 = -S0 - S1 * S2 |
|
54 static void NMulS(); // S0 = -S1 * S2 |
|
55 static void SqrtS(); // S0 = sqrt(S1) |
|
56 static void SubS(); // S0 = S1 - S2 |
|
57 |
|
58 static TReal64 DReg(TInt aReg); |
|
59 static void SetDReg(TReal64 aVal, TInt aReg); |
|
60 static TInt64 DRegInt(TInt aReg); |
|
61 static void SetDReg(TInt64 aVal, TInt aReg); |
|
62 static void AbsD(); // D0 = ABS(D1) |
|
63 static void AddD(); // D0 = D1 + D2 |
|
64 static void CmpD(); // compare D0, D1 |
|
65 static void CmpED(); // compare D0, D1 |
|
66 static void CmpEZD(); // compare D0, 0 |
|
67 static void CmpZD(); // compare D0, 0 |
|
68 static void Cpy0D(TInt aReg); // D0 = Dn |
|
69 static void CpyD0(TInt aReg); // Dn = D0 |
|
70 static void DivD(); // D0 = D1 / D2 |
|
71 static void MacD(); // D0 += D1 * D2 |
|
72 static void MscD(); // D0 = D1 * D2 - D0 |
|
73 static void MulD(); // D0 = D1 * D2 |
|
74 static void NegD(); // D0 = -D1 |
|
75 static void NMacD(); // D0 -= D1 * D2 |
|
76 static void NMscD(); // D0 = -D0 - D1 * D2 |
|
77 static void NMulD(); // D0 = -D1 * D2 |
|
78 static void SqrtD(); // D0 = sqrt(D1) |
|
79 static void SubD(); // D0 = D1 - D2 |
|
80 |
|
81 static void CvtDS(); // D0 = S2 |
|
82 static void CvtSD(); // S0 = D1 |
|
83 static void SitoD(); // D0 = IS2 |
|
84 static void SitoS(); // S0 = IS2 |
|
85 static void TosiD(); // IS0 = D1 |
|
86 static void TosiZD(); // IS0 = D1 round towards 0 |
|
87 static void TosiS(); // IS0 = S2 |
|
88 static void TosiZS(); // IS0 = S2 round towards 0 |
|
89 static void UitoD(); // D0 = US2 |
|
90 static void UitoS(); // S0 = US2 |
|
91 static void TouiD(); // US0 = D1 |
|
92 static void TouiZD(); // US0 = D1 round towards 0 |
|
93 static void TouiS(); // US0 = S2 |
|
94 static void TouiZS(); // US0 = S2 round towards 0 |
|
95 |
|
96 // VFPv3 support |
|
97 static void ToFixedS(TInt aBits); // Convert to fixed (aBits) precision |
|
98 static void FromFixedS(TInt aBits); // Convert from fixed (aBits) precision |
|
99 static void TconstS2(); // S0=2 |
|
100 static void TconstS2_8(); // S0=2.875 |
|
101 static void TconstD2(); // D0=2 |
|
102 static void TconstD2_8(); // D0=2.875 |
|
103 |
|
104 }; |
|
105 |
|
106 GLREF_C TInt NeonWithF2(TAny*); |
|
107 GLREF_C TInt NeonWithF3(TAny*); |
|
108 GLREF_C TInt NeonWithF4x(TAny*); |
|
109 GLREF_C TInt ThumbMode(TAny*); |
|
110 |
|
111 #endif |
|
112 |