kerneltest/e32test/math/t_vfp.h
changeset 43 96e5fb8b040d
equal deleted inserted replaced
-1:000000000000 43:96e5fb8b040d
       
     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