LCOV - code coverage report
Current view: top level - Utility - FlushToZero.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 0 7 0.0 %
Date: 2021-02-18 20:07:22 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /**
       2             :  * \file FlushToZero.cpp
       3             :  */
       4             : 
       5             : #include "FlushToZero.h"
       6             : 
       7             : #if defined(__APPLE__)
       8             : #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
       9             : /* GCC-compatible compiler, targeting x86/x86-64 */
      10             : # include <x86intrin.h>
      11             : # ifndef _MM_DENORMALS_ZERO_OFF
      12             : #  define _MM_DENORMALS_ZERO_MASK   0x0040
      13             : #  define _MM_DENORMALS_ZERO_ON     0x0040
      14             : #  define _MM_DENORMALS_ZERO_OFF    0x0000
      15             : # endif
      16             : #endif
      17             : 
      18             : namespace ATK
      19             : {
      20           0 :   FlushToZero::FlushToZero()
      21             :   {
      22             : #if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
      23             :     _controlfp_s(&previous_state, _MCW_DN, _DN_FLUSH);
      24             : #elif defined(__APPLE__)
      25             :     fegetenv(&previous_state);
      26             :     fesetenv(FE_DFL_DISABLE_SSE_DENORMS_ENV);
      27             : #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
      28           0 :     previous_state = _mm_getcsr() & _MM_DENORMALS_ZERO_MASK;
      29           0 :     _mm_setcsr(_mm_getcsr() | (_MM_DENORMALS_ZERO_ON));
      30             : #endif
      31           0 :   }
      32             :   
      33           0 :   FlushToZero::~FlushToZero()
      34             :   {
      35             : #if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
      36             :     unsigned int new_state;
      37             :     _controlfp_s(&new_state, _MCW_DN, previous_state);
      38             : #elif defined(__APPLE__)
      39             :     fesetenv(&previous_state);
      40             : #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
      41           0 :     _mm_setcsr(_mm_getcsr() & ~_MM_DENORMALS_ZERO_MASK);
      42             : #endif
      43           0 :   }
      44             : }

Generated by: LCOV version TK-3.3.0-4-gdba42eea