Yeppp!
 All Data Structures Functions Variables Enumerations Enumerator Groups Pages
yepPredefines.h: predefined macros for C, C++, and CUDA.

Compiler Identification

#define YEP_MICROSOFT_COMPILER
 Defined only when Microsoft C/C++ compiler (cl.exe) is used for compilation.
 
#define YEP_GNU_COMPILER
 Defined only when GNU C/C++ compiler (gcc/g++) is used for compilation.
 
#define YEP_INTEL_COMPILER
 Defined only when Intel C/C++ compiler is used for compilation.
 
#define YEP_INTEL_COMPILER_FOR_WINDOWS
 Defined only when Intel C/C++ compiler for Windows (icl.exe) is used for compilation.
 
#define YEP_INTEL_COMPILER_FOR_UNIX
 Defined only when Intel C/C++ compiler for Linux, or Mac OS X (icc/icpc) is used for compilation.
 
#define YEP_CLANG_COMPILER
 Defined only when Clang compiler (clang/clang++) is used for compilation.
 
#define YEP_ARM_COMPILER
 Defined only when ARM compiler (armcc) is used for compilation.
 
#define YEP_NVIDIA_COMPILER
 Defined only when nVidia CUDA compiler (nvcc) is used for compilation of GPU-specific code.
 
#define YEP_MSVC_COMPATIBLE_COMPILER
 Defined only when Visual Studio-compatible compiler is used for compilation. More...
 
#define YEP_GCC_COMPATIBLE_COMPILER
 Defined only when GCC-compatible compiler is used for compilation. More...
 

Target Architecture Identification

#define YEP_X86_CPU
 Defined only when the target architecture is x86. More...
 
#define YEP_X64_CPU
 Defined only when the target architecture is x86-64. More...
 
#define YEP_IA64_CPU
 Defined only when the target architecture is IA64. More...
 
#define YEP_ARM_CPU
 Defined only when the target architecture is ARM. More...
 
#define YEP_MIPS_CPU
 Defined only when the target architecture is MIPS. More...
 
#define YEP_SPARC_CPU
 Defined only when the target architecture is SPARC. More...
 
#define YEP_POWERPC_CPU
 Defined only when the target architecture is PowerPC. More...
 
#define YEP_CUDA_GPU
 Defined only when the target architecture is a CUDA-enabled GPU.
 

Common Target ISA Feature Identification

#define YEP_PROCESSOR_SUPPORTS_MISALIGNED_MEMORY_ACCESS
 Defined only when the target processor (either CPU or GPU) supports misaligned memory access. More...
 
#define YEP_PROCESSOR_SUPPORTS_FMA_EXTENSION
 Defined only when the target processor (either CPU or GPU) supports fused multiply-add instruction.
 

x86/x86-64 Target ISA Feature Identification

#define YEP_CPU_SUPPORTS_X86_MMX_EXTENSION
 Defined only when the target processor supports x86/x86-64 MMX instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_MMXPLUS_EXTENSION
 Defined only when the target processor supports x86/x86-64 MMX+ instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_3DNOW_EXTENSION
 Defined only when the target processor supports x86/x86-64 3dnow! instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_3DNOWPLUS_EXTENSION
 Defined only when the target processor supports x86/x86-64 3dnow!+ instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_SSE_EXTENSION
 Defined only when the target processor supports x86/x86-64 SSE instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_SSE2_EXTENSION
 Defined only when the target processor supports x86/x86-64 SSE2 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_SSE3_EXTENSION
 Defined only when the target processor supports x86/x86-64 SSE3 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_SSSE3_EXTENSION
 Defined only when the target processor supports x86/x86-64 SSSE3 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_SSE4A_EXTENSION
 Defined only when the target processor supports x86/x86-64 SSE4a instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_SSE4_1_EXTENSION
 Defined only when the target processor supports x86/x86-64 SSE4.1 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_SSE4_2_EXTENSION
 Defined only when the target processor supports x86/x86-64 SSE4.2 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_AVX_EXTENSION
 Defined only when the target processor supports x86/x86-64 AVX instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_AVX2_EXTENSION
 Defined only when the target processor supports x86/x86-64 AVX2 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_F16C_EXTENSION
 Defined only when the target processor supports x86/x86-64 F16C instructions. More...
 
#define YEP_CPU_SUPPORTS_X86_FMA4_EXTENSION
 Defined only when the target processor supports x86/x86-64 FMA4 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_FMA3_EXTENSION
 Defined only when the target processor supports x86/x86-64 FMA3 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_XOP_EXTENSION
 Defined only when the target processor supports x86/x86-64 XOP instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_LZCNT_EXTENSION
 Defined only when the target processor supports x86/x86-64 LZCNT instruction. More...
 
#define YEP_CPU_SUPPORTS_X86_POPCNT_EXTENSION
 Defined only when the target processor supports x86/x86-64 POPCNT instruction. More...
 
#define YEP_CPU_SUPPORTS_X86_TBM_EXTENSION
 Defined only when the target processor supports x86/x86-64 TBM instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_BMI_EXTENSION
 Defined only when the target processor supports x86/x86-64 BMI instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_BMI2_EXTENSION
 Defined only when the target processor supports x86/x86-64 BMI2 instruction set. More...
 
#define YEP_CPU_SUPPORTS_X86_KNC_EXTENSION
 Defined only when the target processor supports x86/x86-64 KNC instruction set. More...
 

ARM Target ISA Feature Identification

#define YEP_CPU_SUPPORTS_ARM_V4_INSTRUCTIONS
 Defined only when the target processor supports ARMv4 or higher instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_V5_INSTRUCTIONS
 Defined only when the target processor supports ARMv5 or higher instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_V5E_INSTRUCTIONS
 Defined only when the target processor supports ARMv5 DSP instructions. More...
 
#define YEP_CPU_SUPPORTS_ARM_V6_INSTRUCTIONS
 Defined only when the target processor supports ARMv6 or higher instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_V6K_INSTRUCTIONS
 Defined only when the target processor supports ARMv6 multiprocessing extension. More...
 
#define YEP_CPU_SUPPORTS_ARM_V7_INSTRUCTIONS
 Defined only when the target processor supports ARMv7 or higher instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_XSCALE_EXTENSION
 Defined only when the target processor supports ARM XScale instructions. More...
 
#define YEP_CPU_SUPPORTS_ARM_WMMX_EXTENSION
 Defined only when the target processor supports ARM Wireless MMX instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_NEON_EXTENSION
 Defined only when the target processor supports ARM NEON instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_VFP_EXTENSION
 Defined only when the target processor supports ARM VFP instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_VFP2_EXTENSION
 Defined only when the target processor supports ARM VFPv2 instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_VFP3_EXTENSION
 Defined only when the target processor supports ARM VFPv3 instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_VFP3_D32_EXTENSION
 Defined only when the target processor supports 32 double-precision registers in ARM VFPv3 (or higher) instruction set. More...
 
#define YEP_CPU_SUPPORTS_ARM_DIV_EXTENSION
 Defined only when the target processor supports ARM SDIV/UDIV instructions. More...
 

Compiler Support Identification for x86/x86-64 Intrinsics

#define YEP_COMPILER_SUPPORTS_X86_MMX_EXTENSION
 Defined only when the compiler supports x86/x86-64 MMX intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_MMXPLUS_EXTENSION
 Defined only when the compiler supports x86/x86-64 MMX+ intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_3DNOW_EXTENSION
 Defined only when the compiler supports x86/x86-64 3dnow! intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_3DNOWPLUS_EXTENSION
 Defined only when the compiler supports x86/x86-64 3dnow!+ intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_SSE_EXTENSION
 Defined only when the compiler supports x86/x86-64 SSE intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_SSE2_EXTENSION
 Defined only when the compiler supports x86/x86-64 SSE2 intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_SSE3_EXTENSION
 Defined only when the compiler supports x86/x86-64 SSE3 intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_SSSE3_EXTENSION
 Defined only when the compiler supports x86/x86-64 SSSE3 intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_SSE4A_EXTENSION
 Defined only when the compiler supports x86/x86-64 SSE4a intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_SSE4_1_EXTENSION
 Defined only when the compiler supports x86/x86-64 SSE4.1 intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_SSE4_2_EXTENSION
 Defined only when the compiler supports x86/x86-64 SSE4.2 intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_AVX_EXTENSION
 Defined only when the compiler supports x86/x86-64 AVX intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_AVX2_EXTENSION
 Defined only when the compiler supports x86/x86-64 AVX2 intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_F16C_EXTENSION
 Defined only when the compiler supports x86/x86-64 F16C intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_FMA4_EXTENSION
 Defined only when the compiler supports x86/x86-64 FMA4 intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_FMA3_EXTENSION
 Defined only when the compiler supports x86/x86-64 FMA3 intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_XOP_EXTENSION
 Defined only when the compiler supports x86/x86-64 XOP intrinsics for this compilation. More...
 
#define YEP_COMPILER_SUPPORTS_X86_KNC_EXTENSION
 Defined only when the compiler supports x86/x86-64 KNC intrinsics for this compilation. More...
 

Target ABI Identification

#define YEP_LITTLE_ENDIAN_BYTE_ORDER
 Defined only when the target ABI byte order is little endian.
 
#define YEP_BIG_ENDIAN_BYTE_ORDER
 Defined only when the target ABI byte order is big endian.
 
#define YEP_X86_ABI
 Defined only when the target ABI is x86 ABI.
 
#define YEP_X64_ABI
 Defined only when the target ABI is an x86-64 ABI. More...
 
#define YEP_MICROSOFT_X64_ABI
 Defined only when the target ABI is Microsoft x86-64 ABI. More...
 
#define YEP_SYSTEMV_X64_ABI
 Defined only when the target ABI is System V x86-64 ABI. More...
 
#define YEP_K1OM_X64_ABI
 Defined only when the target ABI is Xeon Phi ABI. More...
 

Miscellaneous

#define YEP_COMPILER_SUPPORTS_HEXADECIMAL_FLOATING_POINT_CONSTANTS
 Defined only when the compiler supports hexadecimal floating-point constants.
 
#define YEP_NULL_POINTER   compiler-specific-nullptr
 Expands to compiler-specific null pointer.
 
#define YEP_RESTRICT   compiler-specific-restrict-qualifier
 Expands to compiler-specific analog of C99 restrict qualifier. More...
 
#define YEP_NOINLINE   compiler-specific-noinline-attribute
 Expands to compiler-specific attribute which indicated that the function should not be inlined. More...
 
#define YEP_INLINE   compiler-specific-inline-attribute
 Expands to compiler-specific attribute which indicated that the function should be inlined. More...
 
#define YEP_NORETURN   compiler-specific-noreturn-attribute
 Expands to compiler-specific attribute which indicated that the function never returns. More...
 
#define YEP_NATIVE_FUNCTION
 Marks the function as a device function in CUDA. Has no effect in C and C++. More...
 
#define YEP_LIKELY(condition)   (condition)
 Hints the compiler that the condition in the argument is likely to be true. Returns the condition result.
 
#define YEP_UNLIKELY(condition)   (condition)
 Hints the compiler that the condition in the argument is likely to be false. Returns the condition result.
 
#define YEP_PIC
 Defined only when position-independent code (PIC) generation is enabled.
 
#define YEP_CUSTOM_RUNTIME
 Defined only when a program is compiled by Visual Studio-compatible compiler without default runtime. More...
 
#define YEP_COUNT_OF(x)   (sizeof(x) / sizeof(x[0]))
 Returns the number of elements in an array. The size of the array must be known at compile time.
 

Detailed Description

Macro Definition Documentation

#define YEP_MSVC_COMPATIBLE_COMPILER

Defined only when Visual Studio-compatible compiler is used for compilation.

Visual Studio-compatible compilers currently include only Microsoft C/C++ compiler and Intel C/C++ compiler for Windows.

#define YEP_GCC_COMPATIBLE_COMPILER

Defined only when GCC-compatible compiler is used for compilation.

GCC-compatible compilers currently include only GNU C/C++ compiler, Clang compiler and Intel C/C++ compiler for Linux and Mac OS X.

#define YEP_X86_CPU

Defined only when the target architecture is x86.

See Also
YepCpuArchitectureX86
#define YEP_X64_CPU

Defined only when the target architecture is x86-64.

See Also
YepCpuArchitectureX86
#define YEP_IA64_CPU

Defined only when the target architecture is IA64.

See Also
YepCpuArchitectureIA64
#define YEP_ARM_CPU

Defined only when the target architecture is ARM.

See Also
YepCpuArchitectureARM
#define YEP_MIPS_CPU

Defined only when the target architecture is MIPS.

See Also
YepCpuArchitectureMIPS
#define YEP_SPARC_CPU

Defined only when the target architecture is SPARC.

See Also
YepCpuArchitectureSPARC
#define YEP_POWERPC_CPU

Defined only when the target architecture is PowerPC.

See Also
YepCpuArchitecturePowerPC
#define YEP_PROCESSOR_SUPPORTS_MISALIGNED_MEMORY_ACCESS

Defined only when the target processor (either CPU or GPU) supports misaligned memory access.

See Also
YepSystemFeatureMisalignedAccess
#define YEP_CPU_SUPPORTS_X86_MMX_EXTENSION

Defined only when the target processor supports x86/x86-64 MMX instruction set.

See Also
YepX86SimdFeatureMMX
#define YEP_CPU_SUPPORTS_X86_MMXPLUS_EXTENSION

Defined only when the target processor supports x86/x86-64 MMX+ instruction set.

See Also
YepX86SimdFeatureMMXPlus
#define YEP_CPU_SUPPORTS_X86_3DNOW_EXTENSION

Defined only when the target processor supports x86/x86-64 3dnow! instruction set.

See Also
YepX86SimdFeature3dnow
#define YEP_CPU_SUPPORTS_X86_3DNOWPLUS_EXTENSION

Defined only when the target processor supports x86/x86-64 3dnow!+ instruction set.

See Also
YepX86SimdFeature3dnowPlus
#define YEP_CPU_SUPPORTS_X86_SSE_EXTENSION

Defined only when the target processor supports x86/x86-64 SSE instruction set.

See Also
YepX86SimdFeatureSSE
#define YEP_CPU_SUPPORTS_X86_SSE2_EXTENSION

Defined only when the target processor supports x86/x86-64 SSE2 instruction set.

See Also
YepX86SimdFeatureSSE2
#define YEP_CPU_SUPPORTS_X86_SSE3_EXTENSION

Defined only when the target processor supports x86/x86-64 SSE3 instruction set.

See Also
YepX86SimdFeatureSSE3
#define YEP_CPU_SUPPORTS_X86_SSSE3_EXTENSION

Defined only when the target processor supports x86/x86-64 SSSE3 instruction set.

See Also
YepX86SimdFeatureSSSE3
#define YEP_CPU_SUPPORTS_X86_SSE4A_EXTENSION

Defined only when the target processor supports x86/x86-64 SSE4a instruction set.

See Also
YepX86SimdFeatureSSE4A
#define YEP_CPU_SUPPORTS_X86_SSE4_1_EXTENSION

Defined only when the target processor supports x86/x86-64 SSE4.1 instruction set.

See Also
YepX86SimdFeatureSSE4_1
#define YEP_CPU_SUPPORTS_X86_SSE4_2_EXTENSION

Defined only when the target processor supports x86/x86-64 SSE4.2 instruction set.

See Also
YepX86SimdFeatureSSE4_2
#define YEP_CPU_SUPPORTS_X86_AVX_EXTENSION

Defined only when the target processor supports x86/x86-64 AVX instruction set.

See Also
YepX86SimdFeatureAVX
#define YEP_CPU_SUPPORTS_X86_AVX2_EXTENSION

Defined only when the target processor supports x86/x86-64 AVX2 instruction set.

See Also
YepX86SimdFeatureAVX2
#define YEP_CPU_SUPPORTS_X86_F16C_EXTENSION

Defined only when the target processor supports x86/x86-64 F16C instructions.

See Also
YepX86SimdFeatureF16C
#define YEP_CPU_SUPPORTS_X86_FMA4_EXTENSION

Defined only when the target processor supports x86/x86-64 FMA4 instruction set.

See Also
YepX86SimdFeatureFMA4
#define YEP_CPU_SUPPORTS_X86_FMA3_EXTENSION

Defined only when the target processor supports x86/x86-64 FMA3 instruction set.

See Also
YepX86SimdFeatureFMA3
#define YEP_CPU_SUPPORTS_X86_XOP_EXTENSION

Defined only when the target processor supports x86/x86-64 XOP instruction set.

See Also
YepX86SimdFeatureXOP
#define YEP_CPU_SUPPORTS_X86_LZCNT_EXTENSION

Defined only when the target processor supports x86/x86-64 LZCNT instruction.

See Also
YepX86IsaFeatureLzcnt
#define YEP_CPU_SUPPORTS_X86_POPCNT_EXTENSION

Defined only when the target processor supports x86/x86-64 POPCNT instruction.

See Also
YepX86IsaFeaturePopcnt
#define YEP_CPU_SUPPORTS_X86_TBM_EXTENSION

Defined only when the target processor supports x86/x86-64 TBM instruction set.

See Also
YepX86IsaFeatureTBM
#define YEP_CPU_SUPPORTS_X86_BMI_EXTENSION

Defined only when the target processor supports x86/x86-64 BMI instruction set.

See Also
YepX86IsaFeatureBMI
#define YEP_CPU_SUPPORTS_X86_BMI2_EXTENSION

Defined only when the target processor supports x86/x86-64 BMI2 instruction set.

See Also
YepX86IsaFeatureBMI2
#define YEP_CPU_SUPPORTS_X86_KNC_EXTENSION

Defined only when the target processor supports x86/x86-64 KNC instruction set.

See Also
YepX86SimdFeatureKNC
#define YEP_CPU_SUPPORTS_ARM_V4_INSTRUCTIONS

Defined only when the target processor supports ARMv4 or higher instruction set.

See Also
YepARMIsaFeatureV4
#define YEP_CPU_SUPPORTS_ARM_V5_INSTRUCTIONS

Defined only when the target processor supports ARMv5 or higher instruction set.

See Also
YepARMIsaFeatureV5
#define YEP_CPU_SUPPORTS_ARM_V5E_INSTRUCTIONS

Defined only when the target processor supports ARMv5 DSP instructions.

See Also
YepARMIsaFeatureV5E
#define YEP_CPU_SUPPORTS_ARM_V6_INSTRUCTIONS

Defined only when the target processor supports ARMv6 or higher instruction set.

See Also
YepARMIsaFeatureV6
#define YEP_CPU_SUPPORTS_ARM_V6K_INSTRUCTIONS

Defined only when the target processor supports ARMv6 multiprocessing extension.

See Also
YepARMIsaFeatureV6K
#define YEP_CPU_SUPPORTS_ARM_V7_INSTRUCTIONS

Defined only when the target processor supports ARMv7 or higher instruction set.

See Also
YepARMIsaFeatureV7
#define YEP_CPU_SUPPORTS_ARM_XSCALE_EXTENSION

Defined only when the target processor supports ARM XScale instructions.

See Also
YepARMSimdFeatureXScale
#define YEP_CPU_SUPPORTS_ARM_WMMX_EXTENSION

Defined only when the target processor supports ARM Wireless MMX instruction set.

See Also
YepARMSimdFeatureWMMX
#define YEP_CPU_SUPPORTS_ARM_NEON_EXTENSION

Defined only when the target processor supports ARM NEON instruction set.

See Also
YepARMSimdFeatureNEON
#define YEP_CPU_SUPPORTS_ARM_VFP_EXTENSION

Defined only when the target processor supports ARM VFP instruction set.

See Also
YepARMIsaFeatureVFP
#define YEP_CPU_SUPPORTS_ARM_VFP2_EXTENSION

Defined only when the target processor supports ARM VFPv2 instruction set.

See Also
YepARMIsaFeatureVFP2
#define YEP_CPU_SUPPORTS_ARM_VFP3_EXTENSION

Defined only when the target processor supports ARM VFPv3 instruction set.

See Also
YepARMIsaFeatureVFP3
#define YEP_CPU_SUPPORTS_ARM_VFP3_D32_EXTENSION

Defined only when the target processor supports 32 double-precision registers in ARM VFPv3 (or higher) instruction set.

See Also
YepARMIsaFeatureVFPd32
#define YEP_CPU_SUPPORTS_ARM_DIV_EXTENSION

Defined only when the target processor supports ARM SDIV/UDIV instructions.

See Also
YepARMIsaFeatureDiv
#define YEP_COMPILER_SUPPORTS_X86_MMX_EXTENSION

Defined only when the compiler supports x86/x86-64 MMX intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports MMX instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports MMX instruction set, or YEP_CPU_SUPPORTS_X86_MMX_EXTENSION macro to check availability of MMX instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureMMX, YEP_CPU_SUPPORTS_X86_MMX_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_MMXPLUS_EXTENSION

Defined only when the compiler supports x86/x86-64 MMX+ intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports MMX+ instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports MMX+ instruction set, or YEP_CPU_SUPPORTS_X86_MMXPLUS_EXTENSION macro to check availability of MMX+ instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureMMXPlus, YEP_CPU_SUPPORTS_X86_MMXPLUS_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_3DNOW_EXTENSION

Defined only when the compiler supports x86/x86-64 3dnow! intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports 3dnow! instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports 3dnow! instruction set, or YEP_CPU_SUPPORTS_X86_3DNOW_EXTENSION macro to check availability of 3dnow! instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeature3dnow, YEP_CPU_SUPPORTS_X86_3DNOW_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_3DNOWPLUS_EXTENSION

Defined only when the compiler supports x86/x86-64 3dnow!+ intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports 3dnow!+ instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports 3dnow!+ instruction set, or YEP_CPU_SUPPORTS_X86_3DNOWPLUS_EXTENSION macro to check availability of 3dnow!+ instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeature3dnowPlus, YEP_CPU_SUPPORTS_X86_3DNOWPLUS_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_SSE_EXTENSION

Defined only when the compiler supports x86/x86-64 SSE intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports SSE instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports SSE instruction set, or YEP_CPU_SUPPORTS_X86_SSE_EXTENSION macro to check availability of SSE instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureSSE, YEP_CPU_SUPPORTS_X86_SSE_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_SSE2_EXTENSION

Defined only when the compiler supports x86/x86-64 SSE2 intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports SSE2 instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports SSE2 instruction set, or YEP_CPU_SUPPORTS_X86_SSE2_EXTENSION macro to check availability of SSE2 instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureSSE2, YEP_CPU_SUPPORTS_X86_SSE2_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_SSE3_EXTENSION

Defined only when the compiler supports x86/x86-64 SSE3 intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports SSE3 instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports SSE3 instruction set, or YEP_CPU_SUPPORTS_X86_SSE3_EXTENSION macro to check availability of SSE3 instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureSSE3, YEP_CPU_SUPPORTS_X86_SSE3_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_SSSE3_EXTENSION

Defined only when the compiler supports x86/x86-64 SSSE3 intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports SSSE3 instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports SSSE3 instruction set, or YEP_CPU_SUPPORTS_X86_SSSE3_EXTENSION macro to check availability of SSSE3 instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureSSSE3, YEP_CPU_SUPPORTS_X86_SSSE3_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_SSE4A_EXTENSION

Defined only when the compiler supports x86/x86-64 SSE4a intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports SSE4a instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports SSE4a instruction set, or YEP_CPU_SUPPORTS_X86_SSE4A_EXTENSION macro to check availability of SSE4a instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureSSE4A, YEP_CPU_SUPPORTS_X86_SSE4A_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_SSE4_1_EXTENSION

Defined only when the compiler supports x86/x86-64 SSE4.1 intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports SSE4.1 instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports SSE4.1 instruction set, or YEP_CPU_SUPPORTS_X86_SSE4_1_EXTENSION macro to check availability of SSE4.1 instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureSSE4_1, YEP_CPU_SUPPORTS_X86_SSE4_1_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_SSE4_2_EXTENSION

Defined only when the compiler supports x86/x86-64 SSE4.2 intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports SSE4.2 instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports SSE4.2 instruction set, or YEP_CPU_SUPPORTS_X86_SSE4_2_EXTENSION macro to check availability of SSE4.2 instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureSSE4_2, YEP_CPU_SUPPORTS_X86_SSE4_2_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_AVX_EXTENSION

Defined only when the compiler supports x86/x86-64 AVX intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports AVX instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports AVX instruction set, or YEP_CPU_SUPPORTS_X86_AVX_EXTENSION macro to check availability of AVX instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureAVX, YEP_CPU_SUPPORTS_X86_AVX_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_AVX2_EXTENSION

Defined only when the compiler supports x86/x86-64 AVX2 intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports AVX2 instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports AVX2 instruction set, or YEP_CPU_SUPPORTS_X86_AVX2_EXTENSION macro to check availability of AVX2 instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureAVX2, YEP_CPU_SUPPORTS_X86_AVX2_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_F16C_EXTENSION

Defined only when the compiler supports x86/x86-64 F16C intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports F16C instructions. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports F16C instructions, or YEP_CPU_SUPPORTS_X86_F16C_EXTENSION macro to check availability of F16C instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureF16C, YEP_CPU_SUPPORTS_X86_F16C_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_FMA4_EXTENSION

Defined only when the compiler supports x86/x86-64 FMA4 intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports FMA4 instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports FMA4 instruction set, or YEP_CPU_SUPPORTS_X86_FMA4_EXTENSION macro to check availability of FMA4 instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureFMA4, YEP_CPU_SUPPORTS_X86_FMA4_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_FMA3_EXTENSION

Defined only when the compiler supports x86/x86-64 FMA3 intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports FMA3 instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports FMA3 instruction set, or YEP_CPU_SUPPORTS_X86_FMA3_EXTENSION macro to check availability of FMA3 instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureFMA3, YEP_CPU_SUPPORTS_X86_FMA3_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_XOP_EXTENSION

Defined only when the compiler supports x86/x86-64 XOP intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports XOP instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports XOP instruction set, or YEP_CPU_SUPPORTS_X86_XOP_EXTENSION macro to check availability of XOP instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureXOP, YEP_CPU_SUPPORTS_X86_XOP_EXTENSION
#define YEP_COMPILER_SUPPORTS_X86_KNC_EXTENSION

Defined only when the compiler supports x86/x86-64 KNC intrinsics for this compilation.

Warning
This macro does not guarantee that the target processor supports KNC instruction set. Use yepLibrary_GetCpuSimdFeatures function to detect in run-time if processor supports KNC instruction set, or YEP_CPU_SUPPORTS_X86_KNC_EXTENSION macro to check availability of KNC instructions on target processor in compile-time.
See Also
yepLibrary_GetCpuSimdFeatures, YepX86SimdFeatureKNC, YEP_CPU_SUPPORTS_X86_KNC_EXTENSION
#define YEP_X64_ABI

Defined only when the target ABI is an x86-64 ABI.

See Also
YEP_MICROSOFT_X64_ABI, YEP_SYSTEMV_X64_ABI, YEP_K1OM_X64_ABI
#define YEP_MICROSOFT_X64_ABI

Defined only when the target ABI is Microsoft x86-64 ABI.

1st argumentrcx/xmm0
2nd argumentrdx/xmm1
3rd argumentr8/xmm2
4th argumentr9/xmm3
Return valuerax/xmm0
Volatile registers (general-purpose)rax, rcx, rdx, r8, r9, r10, r11
Volatile registers (MMX)mm0-mm7
Volatile registers (SSE)xmm0-xmm5
Non-volatile registers (general-purpose)rbx, rbp, rdi, rsi, r12, r13, r14, r15
#define YEP_SYSTEMV_X64_ABI

Defined only when the target ABI is System V x86-64 ABI.

1st integer argumentrdi
2nd integer argumentrsi
3rd integer argumentrdx
4th integer argumentrcx
5th integer argumentr8
6th integer argumentr9
1st FP argumentxmm0
2nd FP argumentxmm1
3rd FP argumentxmm2
4th FP argumentxmm3
5th FP argumentxmm4
6th FP argumentxmm5
7th FP argumentxmm6
8th FP argumentxmm7
Return valuerax/xmm0
Volatile registers (general-purpose)rax, rcx, rdx, r8, r9, r10, r11
Volatile registers (MMX)mm0-mm7
Volatile registers (SSE)xmm0-xmm15
Non-volatile registers (general-purpose)rbx, rbp, r12, r13, r14, r15
#define YEP_K1OM_X64_ABI

Defined only when the target ABI is Xeon Phi ABI.

1st integer argumentrdi
2nd integer argumentrsi
3rd integer argumentrdx
4th integer argumentrcx
5th integer argumentr8
6th integer argumentr9
1st FP argumentzmm0
2nd FP argumentzmm1
3rd FP argumentzmm2
4th FP argumentzmm3
5th FP argumentzmm4
6th FP argumentzmm5
7th FP argumentzmm6
8th FP argumentzmm7
Return valuerax/zmm0
Volatile registers (general-purpose)rax, rcx, rdx, r8, r9, r10, r11
Volatile registers (MMX)mm0-mm7
Volatile registers (SSE)zmm0-zmm31
Non-volatile registers (general-purpose)rbx, rbp, r12, r13, r14, r15
#define YEP_RESTRICT   compiler-specific-restrict-qualifier

Expands to compiler-specific analog of C99 restrict qualifier.

Supported compilers currently include only Microsoft compiler, Intel compiler, ARM compiler, GCC, Clang, all C99-compatible compilers, and nVidia CUDA compiler.

#define YEP_NOINLINE   compiler-specific-noinline-attribute

Expands to compiler-specific attribute which indicated that the function should not be inlined.

Supported compilers currently include only Microsoft compiler, Intel compiler, GCC, Clang, and nVidia CUDA compiler.

Warning
The function marked with YEP_NOINLINE can still be inlined if an unsupported compiler is used.
For CUDA devices with compute capability 1.x compiler is not guaranteed to honour YEP_NOINLINE specifier.
#define YEP_INLINE   compiler-specific-inline-attribute

Expands to compiler-specific attribute which indicated that the function should be inlined.

Supported compilers currently include only Microsoft compiler, Intel compiler, GCC, Clang, all C99-compatible compilers, all C++ compilers, and nVidia CUDA compiler.

Warning
The function marked with YEP_INLINE is not 100% guaranteed to be inlined.
#define YEP_NORETURN   compiler-specific-noreturn-attribute

Expands to compiler-specific attribute which indicated that the function never returns.

Supported compilers currently include only Microsoft compiler, Intel compiler, GCC, Clang, ARM compiler, and nVidia CUDA compiler.

#define YEP_NATIVE_FUNCTION

Marks the function as a device function in CUDA. Has no effect in C and C++.

Expands to device when compiled by CUDA compiler for a device. Expands to nothing in all other cases.

#define YEP_CUSTOM_RUNTIME

Defined only when a program is compiled by Visual Studio-compatible compiler without default runtime.

When this macro is defined, an unconventional entry point might be used for programs and dynamic libraries.