diff options
author | Josh Blum | 2012-04-18 15:17:55 -0700 |
---|---|---|
committer | Josh Blum | 2012-04-19 18:13:23 -0700 |
commit | f51c4dc7e5e8bab60f9431c51159f9e35907fbb7 (patch) | |
tree | 70832c8f25fbf5ec9430b613c11efccc374569b9 /volk/tmpl | |
parent | 7b0e04c5637dc5ecefb255502862ccb06a26325b (diff) | |
download | gnuradio-f51c4dc7e5e8bab60f9431c51159f9e35907fbb7.tar.gz gnuradio-f51c4dc7e5e8bab60f9431c51159f9e35907fbb7.tar.bz2 gnuradio-f51c4dc7e5e8bab60f9431c51159f9e35907fbb7.zip |
volk: added set_float_rounding to volk_cpu_init
Diffstat (limited to 'volk/tmpl')
-rw-r--r-- | volk/tmpl/volk_cpu.tmpl.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/volk/tmpl/volk_cpu.tmpl.c b/volk/tmpl/volk_cpu.tmpl.c index 1aa36d2bf..81fc679cb 100644 --- a/volk/tmpl/volk_cpu.tmpl.c +++ b/volk/tmpl/volk_cpu.tmpl.c @@ -149,10 +149,29 @@ static int i_can_has_$arch.name (void) { #end for +#if defined(HAVE_FENV_H) + #include <fenv.h> + static inline void set_float_rounding(void){ + fesetround(FE_TONEAREST); + } +#elif defined(_MSC_VER) + #include <float.h> + static inline void set_float_rounding(void){ + unsigned int cwrd; + _controlfp_s(&cwrd, 0, 0); + _controlfp_s(&cwrd, _RC_NEAR, _MCW_RC); + } +#else + static inline void set_float_rounding(void){ + //do nothing + } +#endif + void volk_cpu_init() { #for $arch in $archs volk_cpu.has_$arch.name = &i_can_has_$arch.name; #end for + set_float_rounding(); } unsigned int volk_get_lvarch() { |