[libc][Obvious] Fix timing on AMDGPU not being initialized
authorJoseph Huber <jhuber6@vols.utk.edu>
Wed, 5 Jul 2023 21:07:21 +0000 (16:07 -0500)
committerJoseph Huber <jhuber6@vols.utk.edu>
Wed, 5 Jul 2023 21:08:37 +0000 (16:08 -0500)
Summary:
Reviewer requested that this routine not be a macro, however that means
that it was not being intitialized as the static initializer was done
before the memcpy from the device. Fix this so we can get timing
information.

libc/test/UnitTest/LibcTest.cpp

index d5e6fdf..3ffd0c3 100644 (file)
 #include "src/__support/GPU/utils.h"
 static long clock() { return __llvm_libc::gpu::fixed_frequency_clock(); }
 #if defined(LIBC_TARGET_ARCH_IS_NVPTX)
-uint64_t CLOCKS_PER_SEC = 1000000000UL;
+#define CLOCKS_PER_SEC 1000000000UL
 #else
 // The AMDGPU loader needs to initialize this at runtime by querying the driver.
-extern "C" [[gnu::visibility("protected")]] uint64_t __llvm_libc_clock_freq;
-uint64_t CLOCKS_PER_SEC = __llvm_libc_clock_freq;
+extern "C" [[gnu::visibility("protected")]] uint64_t
+    [[clang::address_space(4)]] __llvm_libc_clock_freq;
+#define CLOCKS_PER_SEC __llvm_libc_clock_freq
 #endif
 #else
 static long clock() { return 0; }