From e2c2baadf630b96b9a52debcd4ba1888af82be8e Mon Sep 17 00:00:00 2001 From: Yedidya Feldblum Date: Mon, 14 Sep 2015 12:51:19 -0700 Subject: [PATCH] Lift the test for ext/random and sfmt19937 Summary: [Folly] Lift the test for `` and `__gnu_cxx::sfmt19937`. Put an actual check in `folly/configure.ac` and use the result in `folly/Random.h`. Reviewed By: @Gownta Differential Revision: D2438420 --- folly/Random-inl.h | 2 +- folly/Random.h | 5 ++--- folly/configure.ac | 16 ++++++++++++++++ folly/test/RandomTest.cpp | 2 +- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/folly/Random-inl.h b/folly/Random-inl.h index 10da8d3a..f3b0433b 100644 --- a/folly/Random-inl.h +++ b/folly/Random-inl.h @@ -67,7 +67,7 @@ constexpr size_t StateSize>::value; -#if FOLLY_USE_SIMD_PRNG +#if FOLLY_HAVE_EXTRANDOM_SFMT19937 template #include -#if __GNUC_PREREQ(4, 8) && !defined(ANDROID) +#if FOLLY_HAVE_EXTRANDOM_SFMT19937 #include -#define FOLLY_USE_SIMD_PRNG 1 #endif namespace folly { @@ -84,7 +83,7 @@ class Random { public: // Default generator type. -#if FOLLY_USE_SIMD_PRNG +#if FOLLY_HAVE_EXTRANDOM_SFMT19937 typedef __gnu_cxx::sfmt19937 DefaultGenerator; #else typedef std::mt19937 DefaultGenerator; diff --git a/folly/configure.ac b/folly/configure.ac index f0add33f..538d8108 100644 --- a/folly/configure.ac +++ b/folly/configure.ac @@ -365,6 +365,20 @@ AC_CACHE_CHECK( [folly_cv_prog_cc_xsi_strerror_r=yes], [folly_cv_prog_cc_xsi_strerror_r=no])]) +AC_CACHE_CHECK( + [for ext/random and __gnu_cxx::sfmt19937], + [folly_cv_prog_cc_have_extrandom_sfmt19937], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE[ + #include + int main(int argc, char** argv) { + __gnu_cxx::sfmt19937 rng; + return 0; + } + ]], + [folly_cv_prog_cc_have_extrandom_sfmt19937=yes], + [folly_cv_prog_cc_have_extrandom_sfmt19937=no])]) + if test "$folly_cv_prog_cc_xsi_strerror_r" = "yes"; then AC_DEFINE([HAVE_XSI_STRERROR_R], [1], [Define to 1 if the runtime supports XSI-style strerror_r]) fi @@ -410,6 +424,8 @@ AM_CONDITIONAL([HAVE_LINUX], [test "$build_os" == "linux-gnu"]) AM_CONDITIONAL([HAVE_WEAK_SYMBOLS], [test "$folly_cv_prog_cc_weak_symbols" = "yes"]) AM_CONDITIONAL([HAVE_BITS_FUNCTEXCEPT], [test "$ac_cv_header_bits_functexcept_h" = "yes"]) +AM_CONDITIONAL([HAVE_EXTRANDOM_SFMT19937], + [test "$folly_cv_prog_cc_have_extrandom_sfmt19937" = "yes"]) # Output AC_CONFIG_FILES([Makefile diff --git a/folly/test/RandomTest.cpp b/folly/test/RandomTest.cpp index 4a45dcc1..e2586d80 100644 --- a/folly/test/RandomTest.cpp +++ b/folly/test/RandomTest.cpp @@ -36,7 +36,7 @@ TEST(Random, StateSize) { EXPECT_EQ(sizeof(uint_fast32_t) / 4 + 3, StateSize::value); EXPECT_EQ(624, StateSize::value); -#if FOLLY_USE_SIMD_PRNG +#if FOLLY_HAVE_EXTRANDOM_SFMT19937 EXPECT_EQ(624, StateSize<__gnu_cxx::sfmt19937>::value); #endif EXPECT_EQ(24, StateSize::value); -- 2.34.1