1/* 2 * kmp_config.h -- Feature macros 3 */ 4//===----------------------------------------------------------------------===// 5// 6// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 7// See https://llvm.org/LICENSE.txt for license information. 8// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 9// 10//===----------------------------------------------------------------------===// 11#ifndef KMP_CONFIG_H 12#define KMP_CONFIG_H 13 14#include "kmp_platform.h" 15 16// cmakedefine01 MACRO will define MACRO as either 0 or 1 17// cmakedefine MACRO 1 will define MACRO as 1 or leave undefined 18#cmakedefine01 DEBUG_BUILD 19#cmakedefine01 RELWITHDEBINFO_BUILD 20#cmakedefine01 LIBOMP_USE_ITT_NOTIFY 21#define USE_ITT_NOTIFY LIBOMP_USE_ITT_NOTIFY 22#if ! LIBOMP_USE_ITT_NOTIFY 23# define INTEL_NO_ITTNOTIFY_API 24#endif 25#cmakedefine01 LIBOMP_USE_VERSION_SYMBOLS 26#if LIBOMP_USE_VERSION_SYMBOLS 27# define KMP_USE_VERSION_SYMBOLS 28#endif 29#cmakedefine01 LIBOMP_HAVE_WEAK_ATTRIBUTE 30#define KMP_HAVE_WEAK_ATTRIBUTE LIBOMP_HAVE_WEAK_ATTRIBUTE 31#cmakedefine01 LIBOMP_HAVE_PSAPI 32#define KMP_HAVE_PSAPI LIBOMP_HAVE_PSAPI 33#cmakedefine01 LIBOMP_STATS 34#define KMP_STATS_ENABLED LIBOMP_STATS 35#cmakedefine01 LIBOMP_HAVE_X86INTRIN_H 36#define KMP_HAVE_X86INTRIN_H LIBOMP_HAVE_X86INTRIN_H 37#cmakedefine01 LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER 38#define KMP_HAVE___BUILTIN_READCYCLECOUNTER LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER 39#cmakedefine01 LIBOMP_HAVE___RDTSC 40#define KMP_HAVE___RDTSC LIBOMP_HAVE___RDTSC 41#cmakedefine01 LIBOMP_USE_DEBUGGER 42#define USE_DEBUGGER LIBOMP_USE_DEBUGGER 43#cmakedefine01 LIBOMP_OMPT_DEBUG 44#define OMPT_DEBUG LIBOMP_OMPT_DEBUG 45#cmakedefine01 LIBOMP_OMPT_SUPPORT 46#define OMPT_SUPPORT LIBOMP_OMPT_SUPPORT 47#cmakedefine01 LIBOMP_OMPD_SUPPORT 48#define OMPD_SUPPORT LIBOMP_OMPD_SUPPORT 49#cmakedefine01 LIBOMP_OMPX_TASKGRAPH 50#define OMPX_TASKGRAPH LIBOMP_OMPX_TASKGRAPH 51#cmakedefine01 LIBOMP_PROFILING_SUPPORT 52#define OMP_PROFILING_SUPPORT LIBOMP_PROFILING_SUPPORT 53#cmakedefine01 LIBOMP_OMPT_OPTIONAL 54#define OMPT_OPTIONAL LIBOMP_OMPT_OPTIONAL 55#cmakedefine01 LIBOMP_USE_ADAPTIVE_LOCKS 56#define KMP_USE_ADAPTIVE_LOCKS LIBOMP_USE_ADAPTIVE_LOCKS 57#define KMP_DEBUG_ADAPTIVE_LOCKS 0 58#cmakedefine01 LIBOMP_USE_INTERNODE_ALIGNMENT 59#define KMP_USE_INTERNODE_ALIGNMENT LIBOMP_USE_INTERNODE_ALIGNMENT 60#cmakedefine01 LIBOMP_ENABLE_ASSERTIONS 61#define KMP_USE_ASSERT LIBOMP_ENABLE_ASSERTIONS 62#cmakedefine01 LIBOMP_USE_HIER_SCHED 63#define KMP_USE_HIER_SCHED LIBOMP_USE_HIER_SCHED 64#cmakedefine01 STUBS_LIBRARY 65#cmakedefine01 LIBOMP_USE_HWLOC 66#define KMP_USE_HWLOC LIBOMP_USE_HWLOC 67#cmakedefine01 LIBOMP_ENABLE_SHARED 68#define KMP_DYNAMIC_LIB LIBOMP_ENABLE_SHARED 69#define KMP_ARCH_STR "@LIBOMP_LEGAL_ARCH@" 70#define KMP_LIBRARY_FILE "@LIBOMP_LIB_FILE@" 71#define KMP_VERSION_MAJOR @LIBOMP_VERSION_MAJOR@ 72#define KMP_VERSION_MINOR @LIBOMP_VERSION_MINOR@ 73#cmakedefine01 MSVC 74#define KMP_MSVC_COMPAT MSVC 75#cmakedefine01 LIBOMP_HAVE_WAITPKG_INTRINSICS 76#define KMP_HAVE_WAITPKG_INTRINSICS LIBOMP_HAVE_WAITPKG_INTRINSICS 77#cmakedefine01 LIBOMP_HAVE_RTM_INTRINSICS 78#define KMP_HAVE_RTM_INTRINSICS LIBOMP_HAVE_RTM_INTRINSICS 79#cmakedefine01 LIBOMP_HAVE_IMMINTRIN_H 80#define KMP_HAVE_IMMINTRIN_H LIBOMP_HAVE_IMMINTRIN_H 81#cmakedefine01 LIBOMP_HAVE_INTRIN_H 82#define KMP_HAVE_INTRIN_H LIBOMP_HAVE_INTRIN_H 83#cmakedefine01 LIBOMP_HAVE_ATTRIBUTE_WAITPKG 84#define KMP_HAVE_ATTRIBUTE_WAITPKG LIBOMP_HAVE_ATTRIBUTE_WAITPKG 85#cmakedefine01 LIBOMP_HAVE_ATTRIBUTE_RTM 86#define KMP_HAVE_ATTRIBUTE_RTM LIBOMP_HAVE_ATTRIBUTE_RTM 87#cmakedefine01 LIBOMP_ARCH_AARCH64_A64FX 88#define KMP_ARCH_AARCH64_A64FX LIBOMP_ARCH_AARCH64_A64FX 89#cmakedefine01 LIBOMP_HAVE_XMMINTRIN_H 90#define KMP_HAVE_XMMINTRIN_H LIBOMP_HAVE_XMMINTRIN_H 91#cmakedefine01 LIBOMP_HAVE__MM_MALLOC 92#define KMP_HAVE__MM_MALLOC LIBOMP_HAVE__MM_MALLOC 93#cmakedefine01 LIBOMP_HAVE_ALIGNED_ALLOC 94#define KMP_HAVE_ALIGNED_ALLOC LIBOMP_HAVE_ALIGNED_ALLOC 95#cmakedefine01 LIBOMP_HAVE_POSIX_MEMALIGN 96#define KMP_HAVE_POSIX_MEMALIGN LIBOMP_HAVE_POSIX_MEMALIGN 97#cmakedefine01 LIBOMP_HAVE__ALIGNED_MALLOC 98#define KMP_HAVE__ALIGNED_MALLOC LIBOMP_HAVE__ALIGNED_MALLOC 99#cmakedefine01 OPENMP_ENABLE_LIBOMPTARGET 100#define ENABLE_LIBOMPTARGET OPENMP_ENABLE_LIBOMPTARGET 101 102// Configured cache line based on architecture 103#if KMP_ARCH_PPC64 || KMP_ARCH_PPC 104# define CACHE_LINE 128 105#elif KMP_ARCH_AARCH64_A64FX 106# define CACHE_LINE 256 107#elif KMP_ARCH_S390X 108# define CACHE_LINE 256 109#else 110# define CACHE_LINE 64 111#endif 112 113#if ! KMP_32_BIT_ARCH 114# define BUILD_I8 1 115#endif 116 117#define KMP_NESTED_HOT_TEAMS 1 118#define KMP_ADJUST_BLOCKTIME 1 119#define BUILD_PARALLEL_ORDERED 1 120#define KMP_ASM_INTRINS 1 121#define USE_ITT_BUILD LIBOMP_USE_ITT_NOTIFY 122#define INTEL_ITTNOTIFY_PREFIX __kmp_itt_ 123#if ! KMP_MIC 124# define USE_LOAD_BALANCE 1 125#endif 126#if ! (KMP_OS_WINDOWS || KMP_OS_DARWIN) 127# define KMP_TDATA_GTID 1 128#endif 129#if STUBS_LIBRARY 130# define KMP_STUB 1 131#endif 132#if DEBUG_BUILD || RELWITHDEBINFO_BUILD 133# define KMP_DEBUG 1 134#endif 135 136#if KMP_OS_WINDOWS 137# define KMP_WIN_CDECL 138#else 139# define BUILD_TV 140# define KMP_GOMP_COMPAT 141#endif 142 143// use shared memory with dynamic library (except Android, where shm_* 144// functions don't exist). 145#if KMP_OS_UNIX && KMP_DYNAMIC_LIB && !__ANDROID__ 146#define KMP_USE_SHM 147#endif 148#endif // KMP_CONFIG_H 149