|
LAL
7.5.0.1-08ee4f4
|
|
Go to the documentation of this file.
20 #if !defined(HAVE_SIMD_COMPILER)
21 #error "simd_dispatch.h must be included after config.h"
24 #include <lal/LALSIMD.h>
25 #include <lal/XLALError.h>
53 #define DISPATCH_SELECT_BEGIN() do { do { } while(0)
54 #define DISPATCH_SELECT_END(...) (__VA_ARGS__); } while (0)
55 #define DISPATCH_SELECT_NONE(...) do { } while(0)
57 #if defined(HAVE_SSE_COMPILER)
58 #define DISPATCH_SELECT_SSE(...) if (LAL_HAVE_SSE_RUNTIME()) { (__VA_ARGS__); break; } do { } while(0)
60 #define DISPATCH_SELECT_SSE(...) DISPATCH_SELECT_NONE()
63 #if defined(HAVE_SSE2_COMPILER)
64 #define DISPATCH_SELECT_SSE2(...) if (LAL_HAVE_SSE2_RUNTIME()) { (__VA_ARGS__); break; } do { } while(0)
66 #define DISPATCH_SELECT_SSE2(...) DISPATCH_SELECT_NONE()
69 #if defined(HAVE_SSE3_COMPILER)
70 #define DISPATCH_SELECT_SSE3(...) if (LAL_HAVE_SSE3_RUNTIME()) { (__VA_ARGS__); break; } do { } while(0)
72 #define DISPATCH_SELECT_SSE3(...) DISPATCH_SELECT_NONE()
75 #if defined(HAVE_SSSE3_COMPILER)
76 #define DISPATCH_SELECT_SSSE3(...) if (LAL_HAVE_SSSE3_RUNTIME()) { (__VA_ARGS__); break; } do { } while(0)
78 #define DISPATCH_SELECT_SSSE3(...) DISPATCH_SELECT_NONE()
81 #if defined(HAVE_SSE4_1_COMPILER)
82 #define DISPATCH_SELECT_SSE4_1(...) if (LAL_HAVE_SSE4_1_RUNTIME()) { (__VA_ARGS__); break; } do { } while(0)
84 #define DISPATCH_SELECT_SSE4_1(...) DISPATCH_SELECT_NONE()
87 #if defined(HAVE_SSE4_2_COMPILER)
88 #define DISPATCH_SELECT_SSE4_2(...) if (LAL_HAVE_SSE4_2_RUNTIME()) { (__VA_ARGS__); break; } do { } while(0)
90 #define DISPATCH_SELECT_SSE4_2(...) DISPATCH_SELECT_NONE()
93 #if defined(HAVE_AVX_COMPILER)
94 #define DISPATCH_SELECT_AVX(...) if (LAL_HAVE_AVX_RUNTIME()) { (__VA_ARGS__); break; } do { } while(0)
96 #define DISPATCH_SELECT_AVX(...) DISPATCH_SELECT_NONE()
99 #if defined(HAVE_AVX2_COMPILER)
100 #define DISPATCH_SELECT_AVX2(...) if (LAL_HAVE_AVX2_RUNTIME()) { (__VA_ARGS__); break; } do { } while(0)
102 #define DISPATCH_SELECT_AVX2(...) DISPATCH_SELECT_NONE()