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