diff --git a/dpf b/dpf index 5a69a71..0057b19 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 5a69a71bdf773c582b94fba62f56af286c5f7333 +Subproject commit 0057b1940c84e7ecbfd192fe02bf03c557f1ee93 diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index 4ec5896..f359b97 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -1192,6 +1192,24 @@ protected: void run(const float** const inputs, float** const outputs, const uint32_t frames, const MidiEvent* const midiEvents, const uint32_t midiEventCount) override { + // TESTING make this revert itself if proven to work + #if defined(__SSE2_MATH__) + _mm_setcsr(_mm_getcsr() | 0x8040); + #elif defined(__aarch64__) + uint64_t c; + __asm__ __volatile__("mrs %0, fpcr \n" + "orr %0, %0, #0x1000000\n" + "msr fpcr, %0 \n" + "isb \n" + : "=r"(c) :: "memory"); + #elif defined(__arm__) && !defined(__SOFTFP__) + uint32_t c; + __asm__ __volatile__("vmrs %0, fpscr \n" + "orr %0, %0, #0x1000000\n" + "vmsr fpscr, %0 \n" + : "=r"(c) :: "memory"); + #endif + rack::contextSet(context); const bool bypassed = context->bypassed;