File tree Expand file tree Collapse file tree 1 file changed +4
-21
lines changed
opal/include/opal/sys/amd64 Expand file tree Collapse file tree 1 file changed +4
-21
lines changed Original file line number Diff line number Diff line change @@ -31,31 +31,14 @@ typedef uint64_t opal_timer_t;
31
31
32
32
#if OPAL_GCC_INLINE_ASSEMBLY
33
33
34
- /**
35
- * http://www.intel.com/content/www/us/en/intelligent-systems/embedded-systems-training/ia-32-ia-64-benchmark-code-execution-paper.html
36
- */
34
+ /* TODO: add AMD mfence version and dispatch at init */
37
35
static inline opal_timer_t
38
36
opal_sys_timer_get_cycles (void )
39
37
{
40
- unsigned l , h ;
41
- #if !OPAL_ASSEMBLY_SUPPORTS_RDTSCP
42
- __asm__ __volatile__ ("cpuid\n\t"
38
+ uint32_t l , h ;
39
+ __asm__ __volatile__ ("lfence\n\t"
43
40
"rdtsc\n\t"
44
- : "=a" (l ), "=d" (h )
45
- :: "rbx" , "rcx" );
46
- #else
47
- /* If we need higher accuracy we should implement the algorithm proposed
48
- * on the Intel document referenced above. However, in the context of MPI
49
- * this function will be used as the backend for MPI_Wtime and as such
50
- * can afford a small inaccuracy.
51
- */
52
- __asm__ __volatile__ ("rdtscp\n\t"
53
- "mov %%edx, %0\n\t"
54
- "mov %%eax, %1\n\t"
55
- "cpuid\n\t"
56
- : "=r" (h ), "=r" (l )
57
- :: "rax" , "rbx" , "rcx" , "rdx" );
58
- #endif
41
+ : "=a" (l ), "=d" (h ));
59
42
return ((opal_timer_t )l ) | (((opal_timer_t )h ) << 32 );
60
43
}
61
44
You can’t perform that action at this time.
0 commit comments