os/kernelhwsrv/kerneltest/e32test/math/t_vfp.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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