| #pragma once | |
| #include<simdconfig.h> | |
| #ifdef _MSC_VER | |
| #define ALIGN_16 __declspec(align(16)) | |
| #else | |
| #include<stdalign.h> | |
| #define ALIGN_16 alignas(16) | |
| #endif | |
| /* Yes, I do know that arr[4] decays into a pointer | |
| * as a function argument. Don't do this in real code | |
| * but for this test it is ok. | |
| */ | |
| void increment_fallback(float arr[4]); | |
| #if HAVE_MMX | |
| int mmx_available(void); | |
| void increment_mmx(float arr[4]); | |
| #endif | |
| #if HAVE_SSE | |
| int sse_available(void); | |
| void increment_sse(float arr[4]); | |
| #endif | |
| #if HAVE_SSE2 | |
| int sse2_available(void); | |
| void increment_sse2(float arr[4]); | |
| #endif | |
| #if HAVE_SSE3 | |
| int sse3_available(void); | |
| void increment_sse3(float arr[4]); | |
| #endif | |
| #if HAVE_SSSE3 | |
| int ssse3_available(void); | |
| void increment_ssse3(float arr[4]); | |
| #endif | |
| #if HAVE_SSE41 | |
| int sse41_available(void); | |
| void increment_sse41(float arr[4]); | |
| #endif | |
| #if HAVE_SSE42 | |
| int sse42_available(void); | |
| void increment_sse42(float arr[4]); | |
| #endif | |
| #if HAVE_AVX | |
| int avx_available(void); | |
| void increment_avx(float arr[4]); | |
| #endif | |
| #if HAVE_AVX2 | |
| int avx2_available(void); | |
| void increment_avx2(float arr[4]); | |
| #endif | |
| #if HAVE_NEON | |
| int neon_available(void); | |
| void increment_neon(float arr[4]); | |
| #endif | |
| #if HAVE_ALTIVEC | |
| int altivec_available(void); | |
| void increment_altivec(float arr[4]); | |
| #endif | |
| /* And so on. */ |