LCOV - code coverage report
Current view: top level - src/include/port - pg_cpu.h (source / functions) Coverage Total Hit
Test: PostgreSQL 20devel Lines: 100.0 % 4 4
Test Date: 2026-07-03 19:57:34 Functions: 100.0 % 1 1
Legend: Lines:     hit not hit
Branches: + taken - not taken # not executed
Branches: 100.0 % 2 2

             Branch data     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(__x86_64__) || 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                 :       25639 : x86_feature_available(X86FeatureId feature)
      52                 :             : {
      53         [ +  + ]:       25639 :     if (X86Features[INIT_PG_X86] == false)
      54                 :        1821 :         set_x86_features();
      55                 :             : 
      56                 :       25639 :     return X86Features[feature];
      57                 :             : }
      58                 :             : 
      59                 :             : extern uint32 x86_tsc_frequency_khz(char *source, size_t source_size);
      60                 :             : 
      61                 :             : #endif                          /* defined(__x86_64__) || defined(__i386__) */
      62                 :             : 
      63                 :             : #endif                          /* PG_CPU_H */
        

Generated by: LCOV version 2.0-1