From 908878e45d3f13215f06f25b2700ec1dfda32efe Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Wed, 18 Aug 2021 10:52:45 -0400 Subject: [PATCH] Save and restore MXCSR back to original value in Engine::stepBlock(). --- src/engine/Engine.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index 397c17b3..04c9c2a0 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -564,7 +564,10 @@ void Engine::stepBlock(int frames) { std::lock_guard stepLock(internal->blockMutex); ReadLock lock(internal->mutex); // Configure thread + uint32_t csr = _mm_getcsr(); + DEBUG("original MXCSR %x", csr); initMXCSR(); + DEBUG("new MXCSR %x", csr); random::init(); internal->blockFrame = internal->frame; @@ -606,6 +609,9 @@ void Engine::stepBlock(int frames) { internal->meterTotal = 0.0; internal->meterMax = 0.0; } + + // Reset MXCSR back to original value + _mm_setcsr(csr); }