[libc-commits] [libc] [libc] DRAFT: Add Generic and NVPTX Sin Benchmark (PR #99795)
via libc-commits
libc-commits at lists.llvm.org
Sat Jul 27 20:06:37 PDT 2024
================
@@ -113,27 +114,20 @@ class Benchmark {
// We want our random values to be approximately
// |real value| <= 2^(max_exponent) * (1 + (random 52 bits) * 2^-52) <
// 2^(max_exponent + 1)
-// The largest integer that can be stored in a double is 2^53
-static constexpr int MAX_EXPONENT = 52;
-
-static double get_rand_double() {
- using FPBits = LIBC_NAMESPACE::fputil::FPBits<double>;
- uint64_t bits = LIBC_NAMESPACE::rand();
- double scale = 0.5 + MAX_EXPONENT / 2048.0;
+template <typename T> static T get_rand_input() {
+ using FPBits = LIBC_NAMESPACE::fputil::FPBits<T>;
+
+ // Required to correctly instantiate FPBits for floats and doubles.
+ using RandType = typename cpp::conditional_t<(cpp::is_same_v<T, double>),
+ uint64_t, uint32_t>;
+ RandType bits = LIBC_NAMESPACE::rand();
----------------
jameshu15869 wrote:
I think I was having some problems when trying to instantiate `FPBits` where it would only accept `uint64_t` for doubles and `uint32_t` for floats. Are you able to check if you can reproduce this locally?
https://github.com/llvm/llvm-project/pull/99795
More information about the libc-commits
mailing list