x64: Simplify RDTSC on non-MSVC compilers
Co-Authored-By: liamwhite <liamwhite@users.noreply.github.com>
This commit is contained in:
		@@ -33,16 +33,13 @@ __forceinline static void TPAUSE() {
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
static u64 FencedRDTSC() {
 | 
			
		||||
    u64 result;
 | 
			
		||||
    u64 eax;
 | 
			
		||||
    u64 edx;
 | 
			
		||||
    asm volatile("lfence\n\t"
 | 
			
		||||
                 "rdtsc\n\t"
 | 
			
		||||
                 "shl $32, %%rdx\n\t"
 | 
			
		||||
                 "or %%rdx, %0\n\t"
 | 
			
		||||
                 "lfence"
 | 
			
		||||
                 : "=a"(result)
 | 
			
		||||
                 :
 | 
			
		||||
                 : "rdx", "memory", "cc");
 | 
			
		||||
    return result;
 | 
			
		||||
                 "lfence\n\t"
 | 
			
		||||
                 : "=a"(eax), "=d"(edx));
 | 
			
		||||
    return (edx << 32) | eax;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void TPAUSE() {
 | 
			
		||||
 
 | 
			
		||||
@@ -27,16 +27,13 @@ __forceinline static u64 FencedRDTSC() {
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
static u64 FencedRDTSC() {
 | 
			
		||||
    u64 result;
 | 
			
		||||
    u64 eax;
 | 
			
		||||
    u64 edx;
 | 
			
		||||
    asm volatile("lfence\n\t"
 | 
			
		||||
                 "rdtsc\n\t"
 | 
			
		||||
                 "shl $32, %%rdx\n\t"
 | 
			
		||||
                 "or %%rdx, %0\n\t"
 | 
			
		||||
                 "lfence"
 | 
			
		||||
                 : "=a"(result)
 | 
			
		||||
                 :
 | 
			
		||||
                 : "rdx", "memory", "cc");
 | 
			
		||||
    return result;
 | 
			
		||||
                 "lfence\n\t"
 | 
			
		||||
                 : "=a"(eax), "=d"(edx));
 | 
			
		||||
    return (edx << 32) | eax;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user