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