LCOV - code coverage report
Current view: top level - port - cpl_cpu_features.h (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 4 4 100.0 %
Date: 2024-11-21 22:18:42 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  CPL - Common Portability Library
       4             :  * Purpose:  Prototypes, and definitions for of CPU features detection
       5             :  * Author:   Even Rouault, <even dot rouault at spatialys dot com>
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2016, Even Rouault <even dot rouault at spatialys dot com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #ifndef CPL_CPU_FEATURES_H
      14             : #define CPL_CPU_FEATURES_H
      15             : 
      16             : #include "cpl_port.h"
      17             : #include "cpl_string.h"
      18             : 
      19             : //! @cond Doxygen_Suppress
      20             : 
      21             : #ifdef HAVE_SSE_AT_COMPILE_TIME
      22             : #if (defined(_M_X64) || defined(__x86_64))
      23             : #define HAVE_INLINE_SSE
      24             : 
      25           3 : static bool inline CPLHaveRuntimeSSE()
      26             : {
      27           3 :     return true;
      28             : }
      29             : #else
      30             : bool CPLHaveRuntimeSSE();
      31             : #endif
      32             : #endif
      33             : 
      34             : #ifdef USE_NEON_OPTIMIZATIONS
      35             : static bool inline CPLHaveRuntimeSSSE3()
      36             : {
      37             :     return true;
      38             : }
      39             : #elif defined(HAVE_SSSE3_AT_COMPILE_TIME)
      40             : #if __SSSE3__
      41             : #define HAVE_INLINE_SSSE3
      42             : 
      43             : static bool inline CPLHaveRuntimeSSSE3()
      44             : {
      45             : #ifdef DEBUG
      46             :     if (!CPLTestBool(CPLGetConfigOption("GDAL_USE_SSSE3", "YES")))
      47             :         return false;
      48             : #endif
      49             :     return true;
      50             : }
      51             : #else
      52             : #if defined(__GNUC__) && !defined(DEBUG)
      53             : extern bool bCPLHasSSSE3;
      54             : 
      55             : static bool inline CPLHaveRuntimeSSSE3()
      56             : {
      57             :     return bCPLHasSSSE3;
      58             : }
      59             : #else
      60             : bool CPLHaveRuntimeSSSE3();
      61             : #endif
      62             : #endif
      63             : #endif
      64             : 
      65             : #ifdef HAVE_AVX_AT_COMPILE_TIME
      66             : #if __AVX__
      67             : #define HAVE_INLINE_AVX
      68             : 
      69             : static bool inline CPLHaveRuntimeAVX()
      70             : {
      71             :     return true;
      72             : }
      73             : #elif defined(__GNUC__)
      74             : extern bool bCPLHasAVX;
      75             : 
      76           8 : static bool inline CPLHaveRuntimeAVX()
      77             : {
      78           8 :     return bCPLHasAVX;
      79             : }
      80             : #else
      81             : bool CPLHaveRuntimeAVX();
      82             : #endif
      83             : #endif
      84             : 
      85             : //! @endcond
      86             : 
      87             : #endif  // CPL_CPU_FEATURES_H

Generated by: LCOV version 1.14