#pragma once
#include "../../common/sys/platform.h"
#include "../../common/sys/sysinfo.h"
namespace embree
{
#define DEFINE_SYMBOL2(type,name) …
#define DECLARE_SYMBOL2(type,name) …
#define DECLARE_ISA_FUNCTION(type,symbol,args) … \
#define DEFINE_ISA_FUNCTION(type,symbol,args) …
#define ZERO_SYMBOL(features,intersector) …
#define INIT_SYMBOL(features,intersector) …
#define SELECT_SYMBOL_DEFAULT(features,intersector) …
#if defined(__SSE__) || defined(__ARM_NEON)
#if !defined(EMBREE_TARGET_SIMD4)
#define EMBREE_TARGET_SIMD4
#endif
#endif
#if defined(EMBREE_TARGET_SSE42)
#define SELECT_SYMBOL_SSE42 …
#else
#define SELECT_SYMBOL_SSE42(features,intersector) …
#endif
#if defined(EMBREE_TARGET_AVX) || defined(__AVX__)
#if !defined(EMBREE_TARGET_SIMD8)
#define EMBREE_TARGET_SIMD8
#endif
#if defined(__AVX__)
#define SELECT_SYMBOL_AVX …
#else
#define SELECT_SYMBOL_AVX …
#endif
#else
#define SELECT_SYMBOL_AVX(features,intersector) …
#endif
#if defined(EMBREE_TARGET_AVX2)
#if !defined(EMBREE_TARGET_SIMD8)
#define EMBREE_TARGET_SIMD8
#endif
#define SELECT_SYMBOL_AVX2 …
#else
#define SELECT_SYMBOL_AVX2(features,intersector) …
#endif
#if defined(EMBREE_TARGET_AVX512)
#if !defined(EMBREE_TARGET_SIMD16)
#define EMBREE_TARGET_SIMD16
#endif
#define SELECT_SYMBOL_AVX512 …
#else
#define SELECT_SYMBOL_AVX512(features,intersector) …
#endif
#define SELECT_SYMBOL_DEFAULT_SSE42(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_SSE42_AVX(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX512(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_AVX(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_AVX_AVX2(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_AVX(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_AVX_AVX512(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_AVX_AVX512(features,intersector) …
#define SELECT_SYMBOL_INIT_AVX(features,intersector) …
#define SELECT_SYMBOL_INIT_AVX_AVX2(features,intersector) …
#define SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_INIT_SSE42_AVX_AVX2(features,intersector) …
#define SELECT_SYMBOL_INIT_AVX(features,intersector) …
#define SELECT_SYMBOL_INIT_AVX_AVX512(features,intersector) …
#define SELECT_SYMBOL_INIT_AVX_AVX2(features,intersector) …
#define SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_INIT_SSE42_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_ZERO_SSE42_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_DEFAULT_AVX_AVX2_AVX512(features,intersector) …
#define SELECT_SYMBOL_INIT_AVX512(features,intersector) …
#define SELECT_SYMBOL_SSE42_AVX_AVX2(features,intersector) …
struct VerifyMultiTargetLinking { … };
namespace sse2 { int getISA(); };
namespace sse42 { int getISA(); };
namespace avx { int getISA(); };
namespace avx2 { int getISA(); };
namespace avx512 { int getISA(); };
}