LCOV - code coverage report
Current view: top level - src/include/port - pg_cpu.h (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 100.0 % 4 4
Test Date: 2026-04-30 17:16:34 Functions: 100.0 % 1 1
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  * pg_cpu.h
       4              :  *    Runtime CPU feature detection
       5              :  *
       6              :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
       7              :  * Portions Copyright (c) 1994, Regents of the University of California
       8              :  *
       9              :  * src/include/port/pg_cpu.h
      10              :  *
      11              :  *-------------------------------------------------------------------------
      12              :  */
      13              : #ifndef PG_CPU_H
      14              : #define PG_CPU_H
      15              : 
      16              : #if defined(USE_SSE2) || defined(__i386__)
      17              : 
      18              : typedef enum X86FeatureId
      19              : {
      20              :     /* Have we run feature detection? */
      21              :     INIT_PG_X86,
      22              : 
      23              :     /* scalar registers and 128-bit XMM registers */
      24              :     PG_SSE4_2,
      25              :     PG_POPCNT,
      26              : 
      27              :     /* 256-bit YMM registers */
      28              :     PG_AVX2,
      29              : 
      30              :     /* 512-bit ZMM registers */
      31              :     PG_AVX512_BW,
      32              :     PG_AVX512_VL,
      33              :     PG_AVX512_VPCLMULQDQ,
      34              :     PG_AVX512_VPOPCNTDQ,
      35              : 
      36              :     /* identification */
      37              :     PG_HYPERVISOR,
      38              : 
      39              :     /* Time-Stamp Counter (TSC) flags */
      40              :     PG_RDTSCP,
      41              :     PG_TSC_INVARIANT,
      42              :     PG_TSC_ADJUST,
      43              : } X86FeatureId;
      44              : #define X86FeaturesSize (PG_TSC_ADJUST + 1)
      45              : 
      46              : extern PGDLLIMPORT bool X86Features[];
      47              : 
      48              : extern void set_x86_features(void);
      49              : 
      50              : static inline bool
      51        25303 : x86_feature_available(X86FeatureId feature)
      52              : {
      53        25303 :     if (X86Features[INIT_PG_X86] == false)
      54         1805 :         set_x86_features();
      55              : 
      56        25303 :     return X86Features[feature];
      57              : }
      58              : 
      59              : extern uint32 x86_tsc_frequency_khz(void);
      60              : 
      61              : #endif                          /* defined(USE_SSE2) || defined(__i386__) */
      62              : 
      63              : #endif                          /* PG_CPU_H */
        

Generated by: LCOV version 2.0-1