xref: /aosp_15_r20/external/cpuinfo/src/cpuinfo/common.h (revision 2b54f0db79fd8303838913b20ff3780cddaa909f)
1*2b54f0dbSXin Li /*
2*2b54f0dbSXin Li  * Copyright (c) Facebook, Inc. and its affiliates.
3*2b54f0dbSXin Li  * All rights reserved.
4*2b54f0dbSXin Li  *
5*2b54f0dbSXin Li  * This source code is licensed under the BSD-style license found in the
6*2b54f0dbSXin Li  * LICENSE file in the root directory of this source tree.
7*2b54f0dbSXin Li  */
8*2b54f0dbSXin Li 
9*2b54f0dbSXin Li #pragma once
10*2b54f0dbSXin Li 
11*2b54f0dbSXin Li 
12*2b54f0dbSXin Li #define CPUINFO_COUNT_OF(array) (sizeof(array) / sizeof(0[array]))
13*2b54f0dbSXin Li 
14*2b54f0dbSXin Li #if defined(__GNUC__)
15*2b54f0dbSXin Li 	#define CPUINFO_LIKELY(condition) (__builtin_expect(!!(condition), 1))
16*2b54f0dbSXin Li 	#define CPUINFO_UNLIKELY(condition) (__builtin_expect(!!(condition), 0))
17*2b54f0dbSXin Li #else
18*2b54f0dbSXin Li 	#define CPUINFO_LIKELY(condition) (!!(condition))
19*2b54f0dbSXin Li 	#define CPUINFO_UNLIKELY(condition) (!!(condition))
20*2b54f0dbSXin Li #endif
21*2b54f0dbSXin Li 
22*2b54f0dbSXin Li #ifndef CPUINFO_INTERNAL
23*2b54f0dbSXin Li 	#if defined(__ELF__)
24*2b54f0dbSXin Li 		#define CPUINFO_INTERNAL __attribute__((__visibility__("internal")))
25*2b54f0dbSXin Li 	#elif defined(__MACH__)
26*2b54f0dbSXin Li 		#define CPUINFO_INTERNAL __attribute__((__visibility__("hidden")))
27*2b54f0dbSXin Li 	#else
28*2b54f0dbSXin Li 		#define CPUINFO_INTERNAL
29*2b54f0dbSXin Li 	#endif
30*2b54f0dbSXin Li #endif
31*2b54f0dbSXin Li 
32*2b54f0dbSXin Li #ifndef CPUINFO_PRIVATE
33*2b54f0dbSXin Li 	#if defined(__ELF__)
34*2b54f0dbSXin Li 		#define CPUINFO_PRIVATE __attribute__((__visibility__("hidden")))
35*2b54f0dbSXin Li 	#elif defined(__MACH__)
36*2b54f0dbSXin Li 		#define CPUINFO_PRIVATE __attribute__((__visibility__("hidden")))
37*2b54f0dbSXin Li 	#else
38*2b54f0dbSXin Li 		#define CPUINFO_PRIVATE
39*2b54f0dbSXin Li 	#endif
40*2b54f0dbSXin Li #endif
41