Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Fastor/config/cpuid.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,14 @@ class CPUID {
#ifdef _WIN32
__cpuid((int *)regs, (int)i);

#else
#elif defined(__x86_64__) || defined(__i386__)
asm volatile
("cpuid" : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3])
: "a" (i), "c" (0));
// ECX is set to zero for CPUID function 4
#else
(void)i;
regs[0] = regs[1] = regs[2] = regs[3] = 0;
#endif
}

Expand Down
7 changes: 6 additions & 1 deletion Fastor/util/timeit.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ inline uint64_t rdtsc_end() {
return __rdtsc();
}
// Linux/GCC
#else
#elif defined(__x86_64__) || defined(__i386__)
inline uint64_t rdtsc() {
unsigned int lo, hi;
// This does not clobber the register so rdtsc overwrites
Expand Down Expand Up @@ -158,6 +158,11 @@ inline uint64_t rdtsc_end() {
inline uint64_t rdtsc_begin() { return rdtsc();}
inline uint64_t rdtsc_end() { return rdtsc();}
#endif
#else
// ARM/non-x86 stubs
inline uint64_t rdtsc() { return 0; }
inline uint64_t rdtsc_begin() { return 0; }
inline uint64_t rdtsc_end() { return 0; }
#endif


Expand Down