1 | /*
|
---|
2 | ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
---|
3 | ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
---|
4 | ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
---|
5 | ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
---|
6 | ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
---|
7 | ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
---|
8 | ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
---|
9 | ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
---|
10 | **
|
---|
11 | ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
---|
12 | ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
---|
13 | ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
---|
14 | ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
---|
15 | ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
---|
16 | ** THE UNITED STATES.
|
---|
17 | **
|
---|
18 | ** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
---|
19 | */
|
---|
20 | #ifndef __TSC_H__
|
---|
21 | #define __TSC_H__
|
---|
22 |
|
---|
23 | #ifndef __3DFX_H__
|
---|
24 | # include <3dfx.h>
|
---|
25 | #endif
|
---|
26 |
|
---|
27 | /*
|
---|
28 | ** timing routines
|
---|
29 | */
|
---|
30 | #define TSC_MAX_CLOCKS 5000
|
---|
31 |
|
---|
32 | extern FxU32 tsc_begin, tsc_end;
|
---|
33 |
|
---|
34 | FxU32 *tscGetHistogram( void );
|
---|
35 | FxU32 tscGetMostFrequent(void);
|
---|
36 | void tscInit( void );
|
---|
37 | FxU32 tscReadTSC( void );
|
---|
38 | void tscPrintHistogram( void );
|
---|
39 | void tscStoreDelta();
|
---|
40 | void tscResetHistogram(void);
|
---|
41 |
|
---|
42 | #define tscBegin() \
|
---|
43 | tsc_begin = tscReadTSC();
|
---|
44 | #define tscEnd() \
|
---|
45 | tsc_end = tscReadTSC(); \
|
---|
46 | tscStoreDelta();
|
---|
47 |
|
---|
48 | #if defined(__WATCOMC__)
|
---|
49 | #pragma aux tscReadTSC = \
|
---|
50 | ".586" \
|
---|
51 | "rdtsc" \
|
---|
52 | modify [edx eax] \
|
---|
53 | value [eax];
|
---|
54 |
|
---|
55 | #elif defined(__MSC__)
|
---|
56 | FxU32 tscReadTSC(void);
|
---|
57 | #else
|
---|
58 | #error "TSC: unsupported compiler"
|
---|
59 | #endif
|
---|
60 |
|
---|
61 | #endif
|
---|