summaryrefslogtreecommitdiffstats
path: root/src/server/util.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/util.hpp')
-rw-r--r--src/server/util.hpp39
1 files changed, 4 insertions, 35 deletions
diff --git a/src/server/util.hpp b/src/server/util.hpp
index 8f5a39ee..106d09de 100644
--- a/src/server/util.hpp
+++ b/src/server/util.hpp
@@ -19,7 +19,7 @@
#include <cstdlib>
-#include "raul/log.hpp"
+#include "ingen/Log.hpp"
#include "raul/Path.hpp"
#include "ingen_config.h"
@@ -35,48 +35,17 @@
# define REALTIME
#endif
-#ifdef USE_ASSEMBLY
-# if SIZEOF_VOID_P==8
-# define cpuid(a, b, c, d, n) asm("xchgq %%rbx, %1; cpuid; xchgq %%rbx, %1": "=a" (a), "=r" (b), "=c" (c), "=d" (d) : "a" (n));
-# else
-# define cpuid(a, b, c, d, n) asm("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1": "=a" (a), "=r" (b), "=c" (c), "=d" (d) : "a" (n));
-# endif
-#endif
-
namespace Ingen {
namespace Server {
/** Set flags to disable denormal processing.
*/
inline void
-set_denormal_flags()
+set_denormal_flags(Ingen::Log& log)
{
-#ifdef USE_ASSEMBLY
#ifdef __SSE__
- unsigned long a, b, c, d0, d1;
- cpuid(a, b, c, d1, 1);
- if (d1 & 1<<25) { /* It has SSE support */
- _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
- const int family = (a >> 8) & 0xF;
- const int extfamily = (a >> 20) & 0xFF;
- const int model = (a >> 4) & 0xF;
- const int stepping = a & 0xF;
- cpuid(a, b, c, d0, 0);
- if (b == 0x756e6547) { /* It's an Intel */
- if (family == 15 && extfamily == 0 && model == 0 && stepping < 7) {
- return;
- }
- }
- if (d1 & 1<<26) { /* bit 26, SSE2 support */
- _mm_setcsr(_mm_getcsr() | 0x8040); // set DAZ and FZ bits of MXCSR
- Raul::info << "Set SSE denormal fix flag" << endl;
- }
- } else {
- Raul::warn << "This code has been built with SSE support, but your processor does"
- << " not support the SSE instruction set, exiting." << std::endl;
- exit(EXIT_FAILURE);
- }
-#endif
+ _mm_setcsr(_mm_getcsr() | 0x8040);
+ log.info("Set SSE denormal-are-zero and flush-to-zero flags\n");
#endif
}