From 4fb7c337caedc0ecae9b59afbc155ba540ce45df Mon Sep 17 00:00:00 2001 From: "hunter@kvog.sh" Date: Mon, 2 Mar 2026 18:53:11 -0600 Subject: yuvbench: libyuv --- yuvbench/kbench.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'yuvbench/kbench.h') diff --git a/yuvbench/kbench.h b/yuvbench/kbench.h index c5d4149..42ec646 100644 --- a/yuvbench/kbench.h +++ b/yuvbench/kbench.h @@ -9,12 +9,22 @@ double KBenchElapsedTime(uintptr_t t0, uintptr_t t1); #ifdef KBENCH_IMPLEMENTATION +#ifdef __linux__ +#include +#endif + uintptr_t KBenchTS(void) { uintptr_t result = 0; // macos+aarch64+clang: use CNTVCT_EL0 #if defined(__APPLE__) && defined(__clang__) && defined(__aarch64__) __asm__ volatile("mrs %0, CNTVCT_EL0" : "=r"(result) :: "memory"); +#endif + // linux: use clock_gettime +#if defined(__linux__) + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + result = (uintptr_t)ts.tv_sec * 1e9 + (uintptr_t)ts.tv_nsec; #endif return result; } @@ -34,6 +44,10 @@ double KBenchElapsedTime(uintptr_t t0, uintptr_t t1) uintptr_t cntfreq_el0 = 0; __asm__ volatile("mrs %0, CNTFRQ_EL0" : "=r"(cntfreq_el0) :: "memory"); val = (double)elapsed / (double)cntfreq_el0; +#endif + // linux: use clock_gettime +#if defined(__linux__) && defined(__GNUC__) && defined(__amd64__) + val = (double)elapsed / 1e9; #endif return val; } -- cgit v1.2.3