Go to the documentation of this file.
22 #ifndef __DAAL_KERNEL_DEFINES_H__
23 #define __DAAL_KERNEL_DEFINES_H__
30 #define DAAL_KERNEL_SSSE3
31 #define DAAL_KERNEL_SSE42
32 #define DAAL_KERNEL_AVX
33 #define DAAL_KERNEL_AVX2
34 #define DAAL_KERNEL_AVX512_MIC
35 #define DAAL_KERNEL_AVX512
37 #define DAAL_KERNEL_CONTAINER_TEMPL(ContainerTemplate, cpuType, ...) ContainerTemplate<__VA_ARGS__, cpuType>
38 #define DAAL_KERNEL_CONTAINER_CASE(ContainerTemplate, cpuType,...)\
39 case cpuType: _cntr = (new DAAL_KERNEL_CONTAINER_TEMPL(ContainerTemplate, cpuType, __VA_ARGS__)(daalEnv)); break;
41 #if defined(DAAL_KERNEL_SSSE3)
42 #define DAAL_KERNEL_SSSE3_ONLY(something) , something
43 #define DAAL_KERNEL_SSSE3_ONLY_CODE(...) __VA_ARGS__
44 #define DAAL_KERNEL_SSSE3_CONTAINER(ContainerTemplate, ...) , DAAL_KERNEL_CONTAINER_TEMPL(ContainerTemplate, ssse3, __VA_ARGS__)
45 #define DAAL_KERNEL_SSSE3_CONTAINER_CASE(ContainerTemplate, ...) DAAL_KERNEL_CONTAINER_CASE(ContainerTemplate, ssse3, __VA_ARGS__)
47 #define DAAL_KERNEL_SSSE3_ONLY(something)
48 #define DAAL_KERNEL_SSSE3_ONLY_CODE(...)
49 #define DAAL_KERNEL_SSSE3_CONTAINER(ContainerTemplate, ...)
50 #define DAAL_KERNEL_SSSE3_CONTAINER_CASE(ContainerTemplate, ...)
53 #if defined(DAAL_KERNEL_SSE42)
54 #define DAAL_KERNEL_SSE42_ONLY(something) , something
55 #define DAAL_KERNEL_SSE42_ONLY_CODE(...) __VA_ARGS__
56 #define DAAL_KERNEL_SSE42_CONTAINER(ContainerTemplate, ...) , DAAL_KERNEL_CONTAINER_TEMPL(ContainerTemplate, sse42, __VA_ARGS__)
57 #define DAAL_KERNEL_SSE42_CONTAINER_CASE(ContainerTemplate, ...) DAAL_KERNEL_CONTAINER_CASE(ContainerTemplate, sse42, __VA_ARGS__)
59 #define DAAL_KERNEL_SSE42_ONLY(something)
60 #define DAAL_KERNEL_SSE42_ONLY_CODE(...)
61 #define DAAL_KERNEL_SSE42_CONTAINER(ContainerTemplate, ...)
62 #define DAAL_KERNEL_SSE42_CONTAINER_CASE(ContainerTemplate, ...)
65 #if defined(DAAL_KERNEL_AVX)
66 #define DAAL_KERNEL_AVX_ONLY(something) , something
67 #define DAAL_KERNEL_AVX_ONLY_CODE(...) __VA_ARGS__
68 #define DAAL_KERNEL_AVX_CONTAINER(ContainerTemplate, ...) , DAAL_KERNEL_CONTAINER_TEMPL(ContainerTemplate, avx, __VA_ARGS__)
69 #define DAAL_KERNEL_AVX_CONTAINER_CASE(ContainerTemplate, ...) DAAL_KERNEL_CONTAINER_CASE(ContainerTemplate, avx, __VA_ARGS__)
71 #define DAAL_KERNEL_AVX_ONLY(something)
72 #define DAAL_KERNEL_AVX_ONLY_CODE(...)
73 #define DAAL_KERNEL_AVX_CONTAINER(ContainerTemplate, ...)
74 #define DAAL_KERNEL_AVX_CONTAINER_CASE(ContainerTemplate, ...)
77 #if defined(DAAL_KERNEL_AVX2)
78 #define DAAL_KERNEL_AVX2_ONLY(something) , something
79 #define DAAL_KERNEL_AVX2_ONLY_CODE(...) __VA_ARGS__
80 #define DAAL_KERNEL_AVX2_CONTAINER(ContainerTemplate, ...) , DAAL_KERNEL_CONTAINER_TEMPL(ContainerTemplate, avx2, __VA_ARGS__)
81 #define DAAL_KERNEL_AVX2_CONTAINER_CASE(ContainerTemplate, ...) DAAL_KERNEL_CONTAINER_CASE(ContainerTemplate, avx2, __VA_ARGS__)
83 #define DAAL_KERNEL_AVX2_ONLY(something)
84 #define DAAL_KERNEL_AVX2_ONLY_CODE(...)
85 #define DAAL_KERNEL_AVX2_CONTAINER(ContainerTemplate, ...)
86 #define DAAL_KERNEL_AVX2_CONTAINER_CASE(ContainerTemplate, ...)
89 #if defined(DAAL_KERNEL_AVX512_MIC)
90 #define DAAL_KERNEL_AVX512_MIC_ONLY(something) , something
91 #define DAAL_KERNEL_AVX512_MIC_ONLY_CODE(...) __VA_ARGS__
92 #define DAAL_KERNEL_AVX512_MIC_CONTAINER(ContainerTemplate, ...) , DAAL_KERNEL_CONTAINER_TEMPL(ContainerTemplate, avx512_mic, __VA_ARGS__)
93 #define DAAL_KERNEL_AVX512_MIC_CONTAINER_CASE(ContainerTemplate, ...) DAAL_KERNEL_CONTAINER_CASE(ContainerTemplate, avx512_mic, __VA_ARGS__)
95 #define DAAL_KERNEL_AVX512_MIC_ONLY(something)
96 #define DAAL_KERNEL_AVX512_MIC_ONLY_CODE(...)
97 #define DAAL_KERNEL_AVX512_MIC_CONTAINER(ContainerTemplate, ...)
98 #define DAAL_KERNEL_AVX512_MIC_CONTAINER_CASE(ContainerTemplate, ...)
101 #if defined(DAAL_KERNEL_AVX512)
102 #define DAAL_KERNEL_AVX512_ONLY(something) , something
103 #define DAAL_KERNEL_AVX512_ONLY_CODE(...) __VA_ARGS__
104 #define DAAL_KERNEL_AVX512_CONTAINER(ContainerTemplate, ...) , DAAL_KERNEL_CONTAINER_TEMPL(ContainerTemplate, avx512, __VA_ARGS__)
105 #define DAAL_KERNEL_AVX512_CONTAINER_CASE(ContainerTemplate, ...) DAAL_KERNEL_CONTAINER_CASE(ContainerTemplate, avx512, __VA_ARGS__)
107 #define DAAL_KERNEL_AVX512_ONLY(something)
108 #define DAAL_KERNEL_AVX512_ONLY_CODE(...)
109 #define DAAL_KERNEL_AVX512_CONTAINER(ContainerTemplate, ...)
110 #define DAAL_KERNEL_AVX512_CONTAINER_CASE(ContainerTemplate, ...)