17 #ifndef DISTRHO_SCOPED_DENORMAL_DISABLE_HPP_INCLUDED 
   18 #define DISTRHO_SCOPED_DENORMAL_DISABLE_HPP_INCLUDED 
   20 #include "../DistrhoUtils.hpp" 
   23 # include <xmmintrin.h> 
   55    #if defined(__SSE2_MATH__) 
   56     typedef uint cpuflags_t;
 
   57    #elif defined(__aarch64__) 
   58     typedef uint64_t cpuflags_t;
 
   59    #elif defined(__arm__) && !defined(__SOFTFP__) 
   60     typedef uint32_t cpuflags_t;
 
   62     typedef char cpuflags_t;
 
   69     inline void setFlags(cpuflags_t flags) noexcept;
 
   72     DISTRHO_PREVENT_HEAP_ALLOCATION
 
   78 inline ScopedDenormalDisable::ScopedDenormalDisable() noexcept
 
   81    #if defined(__SSE2_MATH__) 
   82     oldflags = _mm_getcsr();
 
   83     setFlags(oldflags | 0x8040);
 
   84    #elif defined(__aarch64__) 
   85     __asm__ __volatile__(
"mrs %0, fpcr" : 
"=r" (oldflags));
 
   86     setFlags(oldflags | 0x1000000);
 
   87     __asm__ __volatile__(
"isb");
 
   88    #elif defined(__arm__) && !defined(__SOFTFP__) 
   89     __asm__ __volatile__(
"vmrs %0, fpscr" : 
"=r" (oldflags));
 
   90     setFlags(oldflags | 0x1000000);
 
   94 inline void ScopedDenormalDisable::setFlags(
const cpuflags_t flags) noexcept
 
   96    #if defined(__SSE2_MATH__) 
   98    #elif defined(__aarch64__) 
   99     __asm__ __volatile__(
"msr fpcr, %0" :: 
"r" (flags));
 
  100    #elif defined(__arm__) && !defined(__SOFTFP__) 
  101     __asm__ __volatile__(
"vmsr fpscr, %0" :: 
"r" (flags));
 
Definition: ScopedDenormalDisable.hpp:37
 
#define END_NAMESPACE_DISTRHO
Definition: DistrhoInfo.hpp:949
 
#define START_NAMESPACE_DISTRHO
Definition: DistrhoInfo.hpp:943