Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Alchemy Viewer
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Package registry
Operate
Terraform modules
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Silent mode is enabled
All outbound communications are blocked.
Learn more
.
Show more breadcrumbs
Alchemy Viewer
Alchemy Viewer
Commits
f40216fd
Commit
f40216fd
authored
15 years ago
by
richard
Browse files
Options
Downloads
Plain Diff
merge
parents
5a672bbc
d87de157
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
indra/llcommon/llfasttimer.h
+56
-39
56 additions, 39 deletions
indra/llcommon/llfasttimer.h
with
56 additions
and
39 deletions
indra/llcommon/llfasttimer.h
+
56
−
39
View file @
f40216fd
...
@@ -39,45 +39,62 @@
...
@@ -39,45 +39,62 @@
#define TIME_FAST_TIMERS 0
#define TIME_FAST_TIMERS 0
#if LL_WINDOWS
#if LL_WINDOWS
// because MS has different signatures for these functions in winnt.h
#define LL_INLINE __forceinline
// need to rename them to avoid conflicts
#define _interlockedbittestandset _renamed_interlockedbittestandset
//
#define _interlockedbittestandreset _renamed_interlockedbittestandreset
// NOTE: put back in when we aren't using platform sdk anymore
#include
<intrin.h>
//
#undef _interlockedbittestandset
// because MS has different signatures for these functions in winnt.h
#undef _interlockedbittestandreset
// need to rename them to avoid conflicts
//#define _interlockedbittestandset _renamed_interlockedbittestandset
#define LL_INLINE __forceinline
//#define _interlockedbittestandreset _renamed_interlockedbittestandreset
// shift off lower 8 bits for lower resolution but longer term timing
//#include <intrin.h>
// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing
//#undef _interlockedbittestandset
inline
U32
get_cpu_clock_count_32
()
//#undef _interlockedbittestandreset
{
U64
time_stamp
=
__rdtsc
();
//inline U32 get_cpu_clock_count_32()
return
(
U32
)(
time_stamp
>>
8
);
//{
}
// U64 time_stamp = __rdtsc();
// return (U32)(time_stamp >> 8);
// return full timer value, *not* shifted by 8 bits
//}
inline
U64
get_cpu_clock_count_64
()
//
{
//// return full timer value, *not* shifted by 8 bits
return
__rdtsc
();
//inline U64 get_cpu_clock_count_64()
}
//{
#else
// return __rdtsc();
#define LL_INLINE
//}
#endif // LL_WINDOWS
// shift off lower 8 bits for lower resolution but longer term timing
#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing
inline
U32
get_cpu_clock_count_32
()
inline
U32
get_cpu_clock_count_32
()
{
{
U64
x
;
U32
ret_val
;
__asm__
volatile
(
".byte 0x0f, 0x31"
:
"=A"
(
x
));
__asm
return
(
U32
)
x
>>
8
;
{
}
_emit
0x0f
_emit
0x31
inline
U32
get_cpu_clock_count_64
()
shr
eax
,
8
{
shl
edx
,
24
U64
x
;
or
eax
,
edx
__asm__
volatile
(
".byte 0x0f, 0x31"
:
"=A"
(
x
));
mov
dword
ptr
[
ret_val
],
eax
return
x
;
}
return
ret_val
;
}
// return full timer value, *not* shifted by 8 bits
inline
U64
get_cpu_clock_count_64
()
{
U64
ret_val
;
__asm
{
_emit
0x0f
_emit
0x31
mov
eax
,
eax
mov
edx
,
edx
mov
dword
ptr
[
ret_val
+
4
],
edx
mov
dword
ptr
[
ret_val
],
eax
}
return
ret_val
;
}
}
#endif
#endif
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment