diff --git a/include/arch/simd/cglm-intrin.h b/include/arch/simd/cglm-intrin.h index c3bc3a2..681fc9b 100644 --- a/include/arch/simd/cglm-intrin.h +++ b/include/arch/simd/cglm-intrin.h @@ -17,20 +17,35 @@ #endif #if defined( __SSE__ ) || defined( __SSE2__ ) - -#include -#include +# include +# include /* float */ -#define _mm_shuffle1_ps(a, z, y, x, w) \ - _mm_shuffle_ps(a, a, _MM_SHUFFLE(z, y, x, w)) +# define _mm_shuffle1_ps(a, z, y, x, w) \ + _mm_shuffle_ps(a, a, _MM_SHUFFLE(z, y, x, w)) -#define _mm_shuffle1_ps1(a, x) \ - _mm_shuffle_ps(a, a, _MM_SHUFFLE(x, x, x, x)) - -#define _mm_shuffle2_ps(a, b, z0, y0, x0, w0, z1, y1, x1, w1) \ - _mm_shuffle1_ps(_mm_shuffle_ps(a, b, _MM_SHUFFLE(z0, y0, x0, w0)), \ - z1, y1, x1, w1) +# define _mm_shuffle1_ps1(a, x) \ + _mm_shuffle_ps(a, a, _MM_SHUFFLE(x, x, x, x)) +# define _mm_shuffle2_ps(a, b, z0, y0, x0, w0, z1, y1, x1, w1) \ + _mm_shuffle1_ps(_mm_shuffle_ps(a, b, _MM_SHUFFLE(z0, y0, x0, w0)), \ + z1, y1, x1, w1) #endif + +/* x86, x64 */ +#if defined( __SSE__ ) || defined( __SSE2__ ) +# define CGLM_SSE_FP 1 +#endif + +#ifdef __AVX__ +# define CGLM_AVX_FP 1 +#endif + +/* ARM Neon */ +#if defined(__ARM_NEON) && defined(__ARM_NEON_FP) +# define CGLM_NEON_FP 1 +#else +# undef CGLM_NEON_FP +#endif + #endif /* cglm_intrin_h */ diff --git a/include/cglm-common.h b/include/cglm-common.h index 7b75e34..6898743 100644 --- a/include/cglm-common.h +++ b/include/cglm-common.h @@ -54,5 +54,6 @@ #define glm__memzero(type, dest, size) glm__memset(type, dest, size, 0) #include "cglm-types.h" +#include "arch/simd/cglm-intrin.h" #endif /* cglm_common_h */