PostgreSQL Source Code
git master
Loading...
Searching...
No Matches
pg_cpu.h
Go to the documentation of this file.
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
x86_feature_available
(
X86FeatureId
feature
)
52
{
53
if
(
X86Features
[
INIT_PG_X86
] ==
false
)
54
set_x86_features
();
55
56
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 */
PGDLLIMPORT
#define PGDLLIMPORT
Definition
c.h:1421
uint32
uint32_t uint32
Definition
c.h:624
fb
static int fb(int x)
Definition
preproc-init.c:92
src
include
port
pg_cpu.h
Generated on Sat Apr 11 2026 17:13:16 for PostgreSQL Source Code by
1.9.8