Add a RAII wrapper for enabling flush-to-zero

This commit is contained in:
Robbert van der Helm
2021-04-27 22:59:59 +02:00
parent 73d9f5f9b8
commit 3aac8e3483
2 changed files with 35 additions and 0 deletions
+10
View File
@@ -17,6 +17,7 @@
#include "utils.h"
#include <sched.h>
#include <xmmintrin.h>
#include <boost/process/environment.hpp>
namespace bp = boost::process;
@@ -46,3 +47,12 @@ bool set_realtime_priority(bool sched_fifo, int priority) {
return sched_setscheduler(0, sched_fifo ? SCHED_FIFO : SCHED_OTHER,
&params) == 0;
}
ScopedFlushToZero::ScopedFlushToZero() {
old_ftz_mode = _MM_GET_FLUSH_ZERO_MODE();
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
}
ScopedFlushToZero::~ScopedFlushToZero() {
_MM_SET_FLUSH_ZERO_MODE(old_ftz_mode);
}