Coverage Report

Created: 2026-06-02 06:36

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/php-src/Zend/zend_cpuinfo.h
Line
Count
Source
1
/*
2
   +----------------------------------------------------------------------+
3
   | Zend Engine                                                          |
4
   +----------------------------------------------------------------------+
5
   | Copyright © Zend Technologies Ltd., a subsidiary company of          |
6
   |     Perforce Software, Inc., and Contributors.                       |
7
   +----------------------------------------------------------------------+
8
   | This source file is subject to the Modified BSD License that is      |
9
   | bundled with this package in the file LICENSE, and is available      |
10
   | through the World Wide Web at <https://www.php.net/license/>.        |
11
   |                                                                      |
12
   | SPDX-License-Identifier: BSD-3-Clause                                |
13
   +----------------------------------------------------------------------+
14
   | Authors: Xinchen Hui <laruence@php.net>                              |
15
   +----------------------------------------------------------------------+
16
*/
17
18
#ifndef ZEND_CPU_INFO_H
19
#define ZEND_CPU_INFO_H
20
21
#include "zend.h"
22
23
0
#define ZEND_CPU_EBX_MASK     (1<<30)
24
0
#define ZEND_CPU_EDX_MASK     (1U<<31)
25
26
typedef enum _zend_cpu_feature {
27
  /* ECX */
28
  ZEND_CPU_FEATURE_SSE3     = (1<<0),
29
  ZEND_CPU_FEATURE_PCLMULQDQ    = (1<<1),
30
  ZEND_CPU_FEATURE_DTES64     = (1<<2),
31
  ZEND_CPU_FEATURE_MONITOR    = (1<<3),
32
  ZEND_CPU_FEATURE_DSCPL      = (1<<4),
33
  ZEND_CPU_FEATURE_VMX      = (1<<5),
34
  ZEND_CPU_FEATURE_SMX      = (1<<6),
35
  ZEND_CPU_FEATURE_EST      = (1<<7),
36
  ZEND_CPU_FEATURE_TM2      = (1<<8),
37
  ZEND_CPU_FEATURE_SSSE3      = (1<<9),
38
  ZEND_CPU_FEATURE_CID      = (1<<10),
39
  ZEND_CPU_FEATURE_SDBG     = (1<<11),
40
  ZEND_CPU_FEATURE_FMA      = (1<<12),
41
  ZEND_CPU_FEATURE_CX16     = (1<<13),
42
  ZEND_CPU_FEATURE_XTPR     = (1<<14),
43
  ZEND_CPU_FEATURE_PDCM     = (1<<15),
44
  /* reserved           = (1<<16),*/
45
  ZEND_CPU_FEATURE_PCID     = (1<<17),
46
  ZEND_CPU_FEATURE_DCA      = (1<<18),
47
  ZEND_CPU_FEATURE_SSE41      = (1<<19),
48
  ZEND_CPU_FEATURE_SSE42      = (1<<20),
49
  ZEND_CPU_FEATURE_X2APIC     = (1<<21),
50
  ZEND_CPU_FEATURE_MOVBE      = (1<<22),
51
  ZEND_CPU_FEATURE_POPCNT     = (1<<23),
52
  ZEND_CPU_FEATURE_TSC_DEADLINE   = (1<<24),
53
  ZEND_CPU_FEATURE_AES      = (1<<25),
54
  ZEND_CPU_FEATURE_XSAVE      = (1<<26),
55
  ZEND_CPU_FEATURE_OSXSAVE    = (1<<27) ,
56
  ZEND_CPU_FEATURE_AVX      = (1<<28),
57
  ZEND_CPU_FEATURE_F16C     = (1<<29),
58
  /* intentionally don't support  = (1<<30) */
59
  /* intentionally don't support  = (1<<31) */
60
61
  /* EBX */
62
  ZEND_CPU_FEATURE_AVX2     = (1<<5 | ZEND_CPU_EBX_MASK),
63
  ZEND_CPU_FEATURE_AVX512F    = (1<<16 | ZEND_CPU_EBX_MASK),
64
  ZEND_CPU_FEATURE_AVX512DQ   = (1<<17 | ZEND_CPU_EBX_MASK),
65
  ZEND_CPU_FEATURE_AVX512CD   = (1<<28 | ZEND_CPU_EBX_MASK),
66
  ZEND_CPU_FEATURE_SHA      = (1<<29 | ZEND_CPU_EBX_MASK),
67
  /* intentionally don't support    = (1<<30 | ZEND_CPU_EBX_MASK) */
68
  /* intentionally don't support    = (1<<31 | ZEND_CPU_EBX_MASK) */
69
70
  /* EDX */
71
  ZEND_CPU_FEATURE_FPU      = (1<<0 | ZEND_CPU_EDX_MASK),
72
  ZEND_CPU_FEATURE_VME      = (1<<1 | ZEND_CPU_EDX_MASK),
73
  ZEND_CPU_FEATURE_DE       = (1<<2 | ZEND_CPU_EDX_MASK),
74
  ZEND_CPU_FEATURE_PSE      = (1<<3 | ZEND_CPU_EDX_MASK),
75
  ZEND_CPU_FEATURE_TSC      = (1<<4 | ZEND_CPU_EDX_MASK),
76
  ZEND_CPU_FEATURE_MSR      = (1<<5 | ZEND_CPU_EDX_MASK),
77
  ZEND_CPU_FEATURE_PAE      = (1<<6 | ZEND_CPU_EDX_MASK),
78
  ZEND_CPU_FEATURE_MCE      = (1<<7 | ZEND_CPU_EDX_MASK),
79
  ZEND_CPU_FEATURE_CX8      = (1<<8 | ZEND_CPU_EDX_MASK),
80
  ZEND_CPU_FEATURE_APIC     = (1<<9 | ZEND_CPU_EDX_MASK),
81
  /* reserved           = (1<<10 | ZEND_CPU_EDX_MASK),*/
82
  ZEND_CPU_FEATURE_SEP      = (1<<11 | ZEND_CPU_EDX_MASK),
83
  ZEND_CPU_FEATURE_MTRR     = (1<<12 | ZEND_CPU_EDX_MASK),
84
  ZEND_CPU_FEATURE_PGE      = (1<<13 | ZEND_CPU_EDX_MASK),
85
  ZEND_CPU_FEATURE_MCA      = (1<<14 | ZEND_CPU_EDX_MASK),
86
  ZEND_CPU_FEATURE_CMOV     = (1<<15 | ZEND_CPU_EDX_MASK),
87
  ZEND_CPU_FEATURE_PAT      = (1<<16 | ZEND_CPU_EDX_MASK),
88
  ZEND_CPU_FEATURE_PSE36      = (1<<17 | ZEND_CPU_EDX_MASK),
89
  ZEND_CPU_FEATURE_PN       = (1<<18 | ZEND_CPU_EDX_MASK),
90
  ZEND_CPU_FEATURE_CLFLUSH    = (1<<19 | ZEND_CPU_EDX_MASK),
91
  /* reserved           = (1<<20 | ZEND_CPU_EDX_MASK),*/
92
  ZEND_CPU_FEATURE_DS       = (1<<21 | ZEND_CPU_EDX_MASK),
93
  ZEND_CPU_FEATURE_ACPI     = (1<<22 | ZEND_CPU_EDX_MASK),
94
  ZEND_CPU_FEATURE_MMX      = (1<<23 | ZEND_CPU_EDX_MASK),
95
  ZEND_CPU_FEATURE_FXSR     = (1<<24 | ZEND_CPU_EDX_MASK),
96
  ZEND_CPU_FEATURE_SSE      = (1<<25 | ZEND_CPU_EDX_MASK),
97
  ZEND_CPU_FEATURE_SSE2     = (1<<26 | ZEND_CPU_EDX_MASK),
98
  ZEND_CPU_FEATURE_SS       = (1<<27 | ZEND_CPU_EDX_MASK),
99
  ZEND_CPU_FEATURE_HT       = (1<<28 | ZEND_CPU_EDX_MASK),
100
  ZEND_CPU_FEATURE_TM       = (1<<29 | ZEND_CPU_EDX_MASK)
101
  /*intentionally don't support   = (1<<30 | ZEND_CPU_EDX_MASK)*/
102
  /*intentionally don't support   = (1<<31 | ZEND_CPU_EDX_MASK)*/
103
} zend_cpu_feature;
104
105
void zend_cpu_startup(void);
106
ZEND_API int zend_cpu_supports(zend_cpu_feature feature);
107
108
#ifndef __has_attribute
109
# define __has_attribute(x) 0
110
#endif
111
112
/* Address sanitizer is incompatible with ifunc resolvers, so exclude the
113
 * CPU support helpers from asan.
114
 * See also https://github.com/google/sanitizers/issues/342. */
115
#if __has_attribute(no_sanitize_address)
116
# define ZEND_NO_SANITIZE_ADDRESS __attribute__((no_sanitize_address))
117
#else
118
# define ZEND_NO_SANITIZE_ADDRESS
119
#endif
120
121
#ifdef PHP_HAVE_BUILTIN_CPU_SUPPORTS
122
/* NOTE: you should use following inline function in
123
 * resolver functions (ifunc), as it could be called
124
 * before all PLT symbols are resolved. in other words,
125
 * resolver functions should not depend on any external
126
 * functions */
127
ZEND_NO_SANITIZE_ADDRESS
128
0
static inline int zend_cpu_supports_sse2(void) {
129
0
#ifdef __aarch64__
130
0
  return 0;
131
0
#else
132
0
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
133
0
  __builtin_cpu_init();
134
0
#endif
135
0
  return __builtin_cpu_supports("sse2");
136
0
#endif
137
0
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_sse2
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_sse2
Unexecuted instantiation: base64.c:zend_cpu_supports_sse2
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_sse2
Unexecuted instantiation: string.c:zend_cpu_supports_sse2
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_sse2
Unexecuted instantiation: zend.c:zend_cpu_supports_sse2
138
139
ZEND_NO_SANITIZE_ADDRESS
140
0
static inline int zend_cpu_supports_sse3(void) {
141
0
#ifdef __aarch64__
142
0
  return 0;
143
0
#else
144
0
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
145
0
  __builtin_cpu_init();
146
0
#endif
147
0
  return __builtin_cpu_supports("sse3");
148
0
#endif
149
0
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_sse3
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_sse3
Unexecuted instantiation: base64.c:zend_cpu_supports_sse3
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_sse3
Unexecuted instantiation: string.c:zend_cpu_supports_sse3
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_sse3
Unexecuted instantiation: zend.c:zend_cpu_supports_sse3
150
151
ZEND_NO_SANITIZE_ADDRESS
152
0
static inline int zend_cpu_supports_ssse3(void) {
153
#ifdef __aarch64__
154
  return 0;
155
#else
156
0
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
157
0
  __builtin_cpu_init();
158
0
#endif
159
0
  return __builtin_cpu_supports("ssse3");
160
0
#endif
161
0
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_ssse3
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_ssse3
Unexecuted instantiation: base64.c:zend_cpu_supports_ssse3
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_ssse3
Unexecuted instantiation: string.c:zend_cpu_supports_ssse3
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_ssse3
Unexecuted instantiation: zend.c:zend_cpu_supports_ssse3
162
163
ZEND_NO_SANITIZE_ADDRESS
164
0
static inline int zend_cpu_supports_sse41(void) {
165
0
#ifdef __aarch64__
166
0
  return 0;
167
0
#else
168
0
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
169
0
  __builtin_cpu_init();
170
0
#endif
171
0
  return __builtin_cpu_supports("sse4.1");
172
0
#endif
173
0
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_sse41
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_sse41
Unexecuted instantiation: base64.c:zend_cpu_supports_sse41
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_sse41
Unexecuted instantiation: string.c:zend_cpu_supports_sse41
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_sse41
Unexecuted instantiation: zend.c:zend_cpu_supports_sse41
174
175
ZEND_NO_SANITIZE_ADDRESS
176
4
static inline int zend_cpu_supports_sse42(void) {
177
#ifdef __aarch64__
178
  return 0;
179
#else
180
4
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
181
4
  __builtin_cpu_init();
182
4
#endif
183
4
  return __builtin_cpu_supports("sse4.2");
184
4
#endif
185
4
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_sse42
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_sse42
Unexecuted instantiation: base64.c:zend_cpu_supports_sse42
crc32_x86.c:zend_cpu_supports_sse42
Line
Count
Source
176
2
static inline int zend_cpu_supports_sse42(void) {
177
#ifdef __aarch64__
178
  return 0;
179
#else
180
2
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
181
2
  __builtin_cpu_init();
182
2
#endif
183
2
  return __builtin_cpu_supports("sse4.2");
184
2
#endif
185
2
}
string.c:zend_cpu_supports_sse42
Line
Count
Source
176
2
static inline int zend_cpu_supports_sse42(void) {
177
#ifdef __aarch64__
178
  return 0;
179
#else
180
2
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
181
2
  __builtin_cpu_init();
182
2
#endif
183
2
  return __builtin_cpu_supports("sse4.2");
184
2
#endif
185
2
}
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_sse42
Unexecuted instantiation: zend.c:zend_cpu_supports_sse42
186
187
ZEND_NO_SANITIZE_ADDRESS
188
0
static inline int zend_cpu_supports_avx(void) {
189
#ifdef __aarch64__
190
  return 0;
191
#else
192
0
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
193
0
  __builtin_cpu_init();
194
0
#endif
195
0
  return __builtin_cpu_supports("avx");
196
0
#endif
197
0
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_avx
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_avx
Unexecuted instantiation: base64.c:zend_cpu_supports_avx
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_avx
Unexecuted instantiation: string.c:zend_cpu_supports_avx
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_avx
Unexecuted instantiation: zend.c:zend_cpu_supports_avx
198
199
ZEND_NO_SANITIZE_ADDRESS
200
4
static inline int zend_cpu_supports_avx2(void) {
201
#ifdef __aarch64__
202
  return 0;
203
#else
204
4
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
205
4
  __builtin_cpu_init();
206
4
#endif
207
4
  return __builtin_cpu_supports("avx2");
208
4
#endif
209
4
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_avx2
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_avx2
base64.c:zend_cpu_supports_avx2
Line
Count
Source
200
4
static inline int zend_cpu_supports_avx2(void) {
201
#ifdef __aarch64__
202
  return 0;
203
#else
204
4
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
205
4
  __builtin_cpu_init();
206
4
#endif
207
4
  return __builtin_cpu_supports("avx2");
208
4
#endif
209
4
}
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_avx2
Unexecuted instantiation: string.c:zend_cpu_supports_avx2
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_avx2
Unexecuted instantiation: zend.c:zend_cpu_supports_avx2
210
211
#ifdef PHP_HAVE_AVX512_SUPPORTS
212
ZEND_NO_SANITIZE_ADDRESS
213
8
static inline int zend_cpu_supports_avx512(void) {
214
8
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
215
8
  __builtin_cpu_init();
216
8
#endif
217
8
  return __builtin_cpu_supports("avx512f") && __builtin_cpu_supports("avx512dq")
218
0
    && __builtin_cpu_supports("avx512cd") && __builtin_cpu_supports("avx512bw")
219
0
    && __builtin_cpu_supports("avx512vl");
220
8
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_avx512
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_avx512
base64.c:zend_cpu_supports_avx512
Line
Count
Source
213
8
static inline int zend_cpu_supports_avx512(void) {
214
8
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
215
8
  __builtin_cpu_init();
216
8
#endif
217
8
  return __builtin_cpu_supports("avx512f") && __builtin_cpu_supports("avx512dq")
218
0
    && __builtin_cpu_supports("avx512cd") && __builtin_cpu_supports("avx512bw")
219
0
    && __builtin_cpu_supports("avx512vl");
220
8
}
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_avx512
Unexecuted instantiation: string.c:zend_cpu_supports_avx512
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_avx512
Unexecuted instantiation: zend.c:zend_cpu_supports_avx512
221
#endif
222
223
#ifdef PHP_HAVE_AVX512_VBMI_SUPPORTS
224
ZEND_NO_SANITIZE_ADDRESS
225
4
static inline int zend_cpu_supports_avx512_vbmi(void) {
226
4
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
227
4
  __builtin_cpu_init();
228
4
#endif
229
4
  return zend_cpu_supports_avx512() && __builtin_cpu_supports("avx512vbmi");
230
4
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_avx512_vbmi
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_avx512_vbmi
base64.c:zend_cpu_supports_avx512_vbmi
Line
Count
Source
225
4
static inline int zend_cpu_supports_avx512_vbmi(void) {
226
4
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
227
4
  __builtin_cpu_init();
228
4
#endif
229
4
  return zend_cpu_supports_avx512() && __builtin_cpu_supports("avx512vbmi");
230
4
}
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_avx512_vbmi
Unexecuted instantiation: string.c:zend_cpu_supports_avx512_vbmi
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_avx512_vbmi
Unexecuted instantiation: zend.c:zend_cpu_supports_avx512_vbmi
231
#endif
232
233
#else
234
235
static inline int zend_cpu_supports_sse2(void) {
236
  return zend_cpu_supports(ZEND_CPU_FEATURE_SSE2);
237
}
238
239
static inline int zend_cpu_supports_sse3(void) {
240
  return zend_cpu_supports(ZEND_CPU_FEATURE_SSE3);
241
}
242
243
static inline int zend_cpu_supports_ssse3(void) {
244
  return zend_cpu_supports(ZEND_CPU_FEATURE_SSSE3);
245
}
246
247
static inline int zend_cpu_supports_sse41(void) {
248
  return zend_cpu_supports(ZEND_CPU_FEATURE_SSE41);
249
}
250
251
static inline int zend_cpu_supports_sse42(void) {
252
  return zend_cpu_supports(ZEND_CPU_FEATURE_SSE42);
253
}
254
255
static inline int zend_cpu_supports_avx(void) {
256
  return zend_cpu_supports(ZEND_CPU_FEATURE_AVX);
257
}
258
259
static inline int zend_cpu_supports_avx2(void) {
260
  return zend_cpu_supports(ZEND_CPU_FEATURE_AVX2);
261
}
262
263
static inline int zend_cpu_supports_avx512(void) {
264
  /* TODO: avx512_bw/avx512_vl use bit 30/31 which are reserved for mask */
265
  return 0;
266
}
267
268
static zend_always_inline int zend_cpu_supports_avx512_vbmi(void) {
269
  /* TODO: avx512_vbmi use ECX of cpuid 7 */
270
  return 0;
271
}
272
#endif
273
274
/* __builtin_cpu_supports has pclmul from gcc9 and clang 19 */
275
#if defined(PHP_HAVE_BUILTIN_CPU_SUPPORTS) && (defined(__x86_64__) || defined(__i386__)) && \
276
  ( \
277
    (!defined(__GNUC__) || (defined(__clang__) && __clang_major__ >= 19) || (ZEND_GCC_VERSION >= 9000)) \
278
  )
279
ZEND_NO_SANITIZE_ADDRESS
280
2
static inline int zend_cpu_supports_pclmul(void) {
281
2
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
282
2
  __builtin_cpu_init();
283
2
#endif
284
2
  return __builtin_cpu_supports("pclmul");
285
2
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_pclmul
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_pclmul
Unexecuted instantiation: base64.c:zend_cpu_supports_pclmul
crc32_x86.c:zend_cpu_supports_pclmul
Line
Count
Source
280
2
static inline int zend_cpu_supports_pclmul(void) {
281
2
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
282
2
  __builtin_cpu_init();
283
2
#endif
284
2
  return __builtin_cpu_supports("pclmul");
285
2
}
Unexecuted instantiation: string.c:zend_cpu_supports_pclmul
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_pclmul
Unexecuted instantiation: zend.c:zend_cpu_supports_pclmul
286
#else
287
static inline int zend_cpu_supports_pclmul(void) {
288
  return zend_cpu_supports(ZEND_CPU_FEATURE_PCLMULQDQ);
289
}
290
#endif
291
292
/* __builtin_cpu_supports has cldemote from gcc11 and clang 19 */
293
#if defined(PHP_HAVE_BUILTIN_CPU_SUPPORTS) && (defined(__x86_64__) || defined(__i386__)) && \
294
  ( \
295
    (defined(__clang__) && (__clang_major__ >= 19)) || \
296
    (!defined(__clang__) && defined(__GNUC__) && (ZEND_GCC_VERSION >= 11000)) \
297
  )
298
#define HAVE_ZEND_CPU_SUPPORTS_CLDEMOTE 1
299
ZEND_NO_SANITIZE_ADDRESS
300
0
static inline int zend_cpu_supports_cldemote(void) {
301
0
#ifdef PHP_HAVE_BUILTIN_CPU_INIT
302
0
  __builtin_cpu_init();
303
0
#endif
304
0
  return __builtin_cpu_supports("cldemote");
305
0
}
Unexecuted instantiation: hash_sha.c:zend_cpu_supports_cldemote
Unexecuted instantiation: zend_jit.c:zend_cpu_supports_cldemote
Unexecuted instantiation: base64.c:zend_cpu_supports_cldemote
Unexecuted instantiation: crc32_x86.c:zend_cpu_supports_cldemote
Unexecuted instantiation: string.c:zend_cpu_supports_cldemote
Unexecuted instantiation: zend_cpuinfo.c:zend_cpu_supports_cldemote
Unexecuted instantiation: zend.c:zend_cpu_supports_cldemote
306
#endif
307
308
#endif