Loading debian/include/simde/hedley.h +565 −187 File changed.Preview size limit exceeded, changes collapsed. Show changes debian/include/simde/simde-common.h +54 −23 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ HEDLEY_TINYC_VERSION_CHECK(0,9,24) || \ HEDLEY_TI_VERSION_CHECK(8,1,0) # define SIMDE_ALIGN(alignment) __attribute__((aligned(alignment))) #elif defined(_MSC_VER) && (!defined(_M_IX86) || defined(_M_AMD64)) #elif defined(_MSC_VER) && !(defined(_M_ARM) && !defined(_M_ARM64)) # define SIMDE_ALIGN(alignment) __declspec(align(alignment)) #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) # define SIMDE_ALIGN(alignment) _Alignas(alignment) Loading @@ -50,22 +50,22 @@ #endif #define simde_assert_aligned(alignment, val) \ simde_assert_int(((uintptr_t) (val)) % (alignment), ==, 0) simde_assert_int(HEDLEY_REINTERPRET_CAST(const uintptr_t, (val)) % (alignment), ==, 0) /* TODO: this should really do something like HEDLEY_STATIC_CAST(T, (simde_assert_int(alignment, v), v)) but I need to think about how to handle it in all compilers... may end up moving to Hedley, too. */ #if HEDLEY_HAS_BUILTIN(__builtin_assume_aligned) # define SIMDE_CAST_ALIGN(alignment, T, v) ((T) __builtin_assume_aligned(v, alignment)) # define SIMDE_CAST_ALIGN(alignment, T, v) HEDLEY_REINTERPRET_CAST(T, __builtin_assume_aligned(v, alignment)) #elif HEDLEY_HAS_WARNING("-Wcast-align") # define SIMDE_CAST_ALIGN(alignment, T, v) \ HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wcast-align\"") \ ((T) (v)) \ HEDLEY_REINTERPRET_CAST(T, (v)) \ HEDLEY_DIAGNOSTIC_POP #else # define SIMDE_CAST_ALIGN(alignment, T, v) ((T) (v)) # define SIMDE_CAST_ALIGN(alignment, T, v) HEDLEY_REINTERPRET_CAST(T, (v)) #endif #if HEDLEY_GCC_HAS_ATTRIBUTE(vector_size,4,6,0) Loading Loading @@ -145,10 +145,21 @@ # define SIMDE__END_DECLS HEDLEY_END_C_DECLS #endif #if HEDLEY_HAS_WARNING("-Wpedantic") # define SIMDE_DIAGNOSTIC_DISABLE_INT128 _Pragma("clang diagnostic ignored \"-Wpedantic\"") #elif defined(HEDLEY_GCC_VERSION) # define SIMDE_DIAGNOSTIC_DISABLE_INT128 _Pragma("GCC diagnostic ignored \"-Wpedantic\"") #else # define SIMDE_DIAGNOSTIC_DISABLE_INT128 #endif #if defined(__SIZEOF_INT128__) # define SIMDE__HAVE_INT128 HEDLEY_DIAGNOSTIC_PUSH SIMDE_DIAGNOSTIC_DISABLE_INT128 typedef __int128 simde_int128; typedef unsigned __int128 simde_uint128; HEDLEY_DIAGNOSTIC_POP #endif /* TODO: we should at least make an attempt to detect the correct Loading Loading @@ -211,7 +222,10 @@ HEDLEY_STATIC_ASSERT(sizeof(simde_float64) == 8, "Unable to find 64-bit floating #if HEDLEY_HAS_BUILTIN(__builtin_shufflevector) # define SIMDE__SHUFFLE_VECTOR(elem_size, vec_size, a, b, ...) __builtin_shufflevector(a, b, __VA_ARGS__) #elif HEDLEY_GCC_HAS_BUILTIN(__builtin_shuffle,4,7,0) && !defined(__INTEL_COMPILER) # define SIMDE__SHUFFLE_VECTOR(elem_size, vec_size, a, b, ...) __builtin_shuffle(a, b, (int##elem_size##_t __attribute__((__vector_size__(vec_size)))) { __VA_ARGS__ }) # define SIMDE__SHUFFLE_VECTOR(elem_size, vec_size, a, b, ...) (__extension__ ({ \ int##elem_size##_t __attribute__((__vector_size__(vec_size))) simde_shuffle_ = { __VA_ARGS__ }; \ __builtin_shuffle(a, b, simde_shuffle_); \ })) #endif #if HEDLEY_GCC_HAS_BUILTIN(__builtin_convertvector,9,0,0) Loading @@ -222,12 +236,21 @@ HEDLEY_STATIC_ASSERT(sizeof(simde_float64) == 8, "Unable to find 64-bit floating # define SIMDE_CONVERT_FTOI(T,v) \ HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wbad-function-cast\"") \ ((T) (v)) \ HEDLEY_STATIC_CAST(T, (v)) \ HEDLEY_DIAGNOSTIC_POP #else # define SIMDE_CONVERT_FTOI(T,v) ((T) (v)) #endif #if HEDLEY_HAS_WARNING("-Wfloat-equal") # define SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL _Pragma("clang diagnostic ignored \"-Wfloat-equal\"") #elif HEDLEY_GCC_VERSION_CHECK(3,0,0) # define SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"") #else # define SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL #endif /* Some algorithms are iterative, and fewer iterations means less accuracy. Lower values here will result in faster, but less accurate, calculations for some functions. */ Loading Loading @@ -305,21 +328,29 @@ HEDLEY_STATIC_ASSERT(sizeof(simde_float64) == 8, "Unable to find 64-bit floating # endif #endif #if !defined(__cplusplus) #define SIMDE_F64_ALL_SET (((union { uint64_t u64; simde_float64 f64; }) { .u64 = ~UINT64_C(0x0) }).f64) #define SIMDE_F64_ALL_UNSET (((union { uint64_t u64; simde_float64 f64; }) { .u64 = UINT64_C(0x0) }).f64) #define SIMDE_F32_ALL_SET (((union { uint32_t u32; simde_float32 f32; }) { .u32 = ~UINT32_C(0x0) }).f32) #define SIMDE_F32_ALL_UNSET (((union { uint32_t u32; simde_float32 f32; }) { .u32 = UINT32_C(0x0) }).f32) #else static const union { uint64_t u64; simde_float64 f64; } simde_f64_all_set = { .u64 = ~UINT64_C(0) }; static const union { uint64_t u64; simde_float64 f64; } simde_f64_all_unset = { .u64 = UINT64_C(0) }; static const union { uint64_t u32; simde_float64 f32; } simde_f32_all_set = { .u32 = ~UINT32_C(0) }; static const union { uint64_t u32; simde_float64 f32; } simde_f32_all_unset = { .u32 = UINT32_C(0) }; # define SIMDE_F64_ALL_SET (simde_f64_all_set.f64) # define SIMDE_F64_ALL_UNSET (simde_f64_all_unset.f64) # define SIMDE_F32_ALL_SET (simde_f32_all_set.f32) # define SIMDE_F32_ALL_UNSET (simde_f32_all_unset.f32) #endif HEDLEY_ALWAYS_INLINE static simde_float32 simde_u32_to_f32(uint32_t val) { union { uint32_t u32; simde_float32 f32; } u; u.u32 = val; return u.f32; } HEDLEY_ALWAYS_INLINE static simde_float64 simde_u64_to_f64(uint64_t val) { union { uint64_t u64; simde_float64 f64; } u; u.u64 = val; return u.f64; } #define SIMDE_F32_ALL_SET (simde_u32_to_f32(~UINT32_C(0))) #define SIMDE_F32_ALL_UNSET (simde_u32_to_f32( UINT32_C(0))) #define SIMDE_F64_ALL_SET (simde_u64_to_f64(~UINT64_C(0))) #define SIMDE_F64_ALL_UNSET (simde_u64_to_f64( UINT64_C(0))) #endif /* !defined(SIMDE_COMMON_H) */ debian/include/simde/x86/avx.h +34 −29 Original line number Diff line number Diff line Loading @@ -1100,7 +1100,7 @@ simde_mm256_castpd_ps (simde__m256d a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256_FROM_NATIVE(_mm256_castpd_ps(a.n)); #else return *((simde__m256*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -1113,7 +1113,7 @@ simde_mm256_castpd_si256 (simde__m256d a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256I_FROM_NATIVE(_mm256_castpd_si256(a.n)); #else return *((simde__m256i*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256i*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading Loading @@ -1162,7 +1162,7 @@ simde_mm256_castps_pd (simde__m256 a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256D_FROM_NATIVE(_mm256_castps_pd(a.n)); #else return *((simde__m256d*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256d*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -1175,7 +1175,7 @@ simde_mm256_castps_si256 (simde__m256 a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256I_FROM_NATIVE(_mm256_castps_si256(a.n)); #else return *((simde__m256i*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256i*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading Loading @@ -1260,7 +1260,7 @@ simde_mm256_castsi256_pd (simde__m256i a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256D_FROM_NATIVE(_mm256_castsi256_pd(a.n)); #else return *((simde__m256d*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256d*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -1273,7 +1273,7 @@ simde_mm256_castsi256_ps (simde__m256i a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256_FROM_NATIVE(_mm256_castsi256_ps(a.n)); #else return *((simde__m256*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading Loading @@ -1320,6 +1320,9 @@ simde_mm256_ceil_ps (simde__m256 a) { # define _mm256_ceil_ps(a) SIMDE__M256_TO_NATIVE(simde_mm256_ceil_ps(SIMDE__M256_FROM_NATIVE(a))) #endif HEDLEY_DIAGNOSTIC_PUSH SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL /* This implementation does not support signaling NaNs (yet?) */ SIMDE__FUNCTION_ATTRIBUTES simde__m128d Loading Loading @@ -2457,6 +2460,8 @@ simde_mm256_cmp_ps (simde__m256 a, simde__m256 b, const int imm8) # define _mm256_cmp_ps(a, b, imm8) SIMDE__M256_TO_NATIVE(simde_mm256_cmp_ps(SIMDE__M256_FROM_NATIVE(a), SIMDE__M256_FROM_NATIVE(b), imm8)) #endif HEDLEY_DIAGNOSTIC_POP /* -Wfloat-equal */ SIMDE__FUNCTION_ATTRIBUTES simde__m256d simde_mm256_cvtepi32_pd (simde__m128i a) { Loading @@ -2467,7 +2472,7 @@ simde_mm256_cvtepi32_pd (simde__m128i a) { #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) { r.f64[i] = (simde_float64) a.i32[i]; r.f64[i] = HEDLEY_STATIC_CAST(simde_float64, a.i32[i]); } #endif Loading @@ -2487,7 +2492,7 @@ simde_mm256_cvtepi32_ps (simde__m256i a) { #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) { r.f32[i] = (simde_float32) a.i32[i]; r.f32[i] = HEDLEY_STATIC_CAST(simde_float32, a.i32[i]); } #endif Loading Loading @@ -2527,7 +2532,7 @@ simde_mm256_cvtpd_ps (simde__m256d a) { #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) { r.f32[i] = (simde_float32) a.f64[i]; r.f32[i] = HEDLEY_STATIC_CAST(simde_float32, a.f64[i]); } #endif Loading Loading @@ -2984,7 +2989,7 @@ simde_mm256_load_pd (const double a[HEDLEY_ARRAY_PARAM(4)]) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_load_pd(a); #else r = *SIMDE_CAST_ALIGN(32, simde__m256d*, a); r = *SIMDE_CAST_ALIGN(32, simde__m256d const*, a); #endif return r; Loading @@ -3003,7 +3008,7 @@ simde_mm256_load_ps (const float a[HEDLEY_ARRAY_PARAM(8)]) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_load_ps(a); #else r = *SIMDE_CAST_ALIGN(32, simde__m256*, a); r = *SIMDE_CAST_ALIGN(32, simde__m256 const*, a); #endif return r; Loading Loading @@ -3125,7 +3130,7 @@ simde_mm_maskload_pd (const simde_float64 mem_addr[HEDLEY_ARRAY_PARAM(4)], simde #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) { r.i64[i] = ((int64_t*) mem_addr)[i] & (mask.i64[i] >> 63); r.i64[i] = HEDLEY_REINTERPRET_CAST(int64_t const*, mem_addr)[i] & (mask.i64[i] >> 63); } #endif Loading @@ -3145,7 +3150,7 @@ simde_mm256_maskload_pd (const simde_float64 mem_addr[HEDLEY_ARRAY_PARAM(4)], si #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) { r.i64[i] = ((int64_t*) mem_addr)[i] & (mask.i64[i] >> 63); r.i64[i] = HEDLEY_REINTERPRET_CAST(int64_t const*, mem_addr)[i] & (mask.i64[i] >> 63); } #endif Loading @@ -3165,7 +3170,7 @@ simde_mm_maskload_ps (const simde_float32 mem_addr[HEDLEY_ARRAY_PARAM(4)], simde #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) { r.i32[i] = ((int32_t*) mem_addr)[i] & (mask.i32[i] >> 31); r.i32[i] = HEDLEY_REINTERPRET_CAST(int32_t const*, mem_addr)[i] & (mask.i32[i] >> 31); } #endif Loading @@ -3185,7 +3190,7 @@ simde_mm256_maskload_ps (const simde_float32 mem_addr[HEDLEY_ARRAY_PARAM(4)], si #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) { r.i32[i] = ((int32_t*) mem_addr)[i] & (mask.i32[i] >> 31); r.i32[i] = HEDLEY_REINTERPRET_CAST(int32_t const*, mem_addr)[i] & (mask.i32[i] >> 31); } #endif Loading Loading @@ -3293,7 +3298,7 @@ simde_mm256_min_pd (simde__m256d a, simde__m256d b) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_min_pd(a.n,b.n); #elif defined(SIMDE_SSE_NATIVE) #elif defined(SIMDE_SSE2_NATIVE) r.m128d[0].n = _mm_min_pd(a.m128d[0].n, b.m128d[0].n); r.m128d[1].n = _mm_min_pd(a.m128d[1].n, b.m128d[1].n); #else Loading Loading @@ -3339,7 +3344,7 @@ simde_mm256_max_pd (simde__m256d a, simde__m256d b) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_max_pd(a.n,b.n); #elif defined(SIMDE_SSE_NATIVE) #elif defined(SIMDE_SSE2_NATIVE) r.m128d[0].n = _mm_max_pd(a.m128d[0].n, b.m128d[0].n); r.m128d[1].n = _mm_max_pd(a.m128d[1].n, b.m128d[1].n); #else Loading Loading @@ -3493,7 +3498,7 @@ simde_mm256_mul_pd (simde__m256d a, simde__m256d b) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_mul_pd(a.n,b.n); #elif defined(SIMDE_SSE_NATIVE) #elif defined(SIMDE_SSE2_NATIVE) r.m128d[0].n = _mm_mul_pd(a.m128d[0].n, b.m128d[0].n); r.m128d[1].n = _mm_mul_pd(a.m128d[1].n, b.m128d[1].n); #elif defined(SIMDE__ENABLE_GCC_VEC_EXT) Loading Loading @@ -3543,7 +3548,7 @@ simde_mm256_or_pd (simde__m256d a, simde__m256d b) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_or_pd(a.n,b.n); #elif defined(SIMDE_SSE_NATIVE) #elif defined(SIMDE_SSE2_NATIVE) r.m128d[0].n = _mm_or_pd(a.m128d[0].n, b.m128d[0].n); r.m128d[1].n = _mm_or_pd(a.m128d[1].n, b.m128d[1].n); #elif defined(SIMDE__ENABLE_GCC_VEC_EXT) Loading Loading @@ -4688,7 +4693,7 @@ simde_mm_testc_ps (simde__m128 a, simde__m128 b) { r |= ~a.u32[i] & b.u32[i]; } return (int) ((~r >> 31) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 31) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4708,7 +4713,7 @@ simde_mm_testc_pd (simde__m128d a, simde__m128d b) { r |= ~a.u64[i] & b.u64[i]; } return (int) ((~r >> 63) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 63) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4728,7 +4733,7 @@ simde_mm256_testc_ps (simde__m256 a, simde__m256 b) { r |= ~a.u32[i] & b.u32[i]; } return (int) ((~r >> 31) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 31) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4748,7 +4753,7 @@ simde_mm256_testc_pd (simde__m256d a, simde__m256d b) { r |= ~a.u64[i] & b.u64[i]; } return (int) ((~r >> 63) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 63) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4768,7 +4773,7 @@ simde_mm256_testc_si256 (simde__m256i a, simde__m256i b) { r |= ~a.i32f[i] & b.i32f[i]; } return (int) !r; return HEDLEY_STATIC_CAST(int, !r); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4788,7 +4793,7 @@ simde_mm_testz_ps (simde__m128 a, simde__m128 b) { r |= a.u32[i] & b.u32[i]; } return (int) ((~r >> 31) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 31) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4808,7 +4813,7 @@ simde_mm_testz_pd (simde__m128d a, simde__m128d b) { r |= a.u64[i] & b.u64[i]; } return (int) ((~r >> 63) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 63) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4828,7 +4833,7 @@ simde_mm256_testz_ps (simde__m256 a, simde__m256 b) { r |= a.u32[i] & b.u32[i]; } return (int) ((~r >> 31) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 31) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4848,7 +4853,7 @@ simde_mm256_testz_pd (simde__m256d a, simde__m256d b) { r |= a.u64[i] & b.u64[i]; } return (int) ((~r >> 63) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 63) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4868,7 +4873,7 @@ simde_mm256_testz_si256 (simde__m256i a, simde__m256i b) { r |= a.i32f[i] & b.i32f[i]; } return (int) !r; return HEDLEY_STATIC_CAST(int, !r); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading debian/include/simde/x86/mmx.h +40 −11 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ # if defined(SIMDE_MMX_FORCE_NATIVE) # define SIMDE_MMX_NATIVE # elif defined(__MMX__) && !defined(SIMDE_MMX_NO_NATIVE) && !defined(SIMDE_NO_NATIVE) # elif (defined(__MMX__) || (defined(_MSC_VER) && defined(_M_IX86))) && !defined(SIMDE_MMX_NO_NATIVE) && !defined(SIMDE_NO_NATIVE) # define SIMDE_MMX_NATIVE # elif defined(__ARM_NEON) && !defined(SIMDE_MMX_NO_NEON) && !defined(SIMDE_NO_NEON) # define SIMDE_MMX_NEON Loading Loading @@ -101,6 +101,13 @@ typedef union { #endif HEDLEY_STATIC_ASSERT(8 == sizeof(simde__m64), "__m64 size incorrect"); HEDLEY_DIAGNOSTIC_PUSH /* Function has no EMMS instruction */ #if defined(HEDLEY_MSVC_VERSION) #pragma warning(disable:4799) #endif #if defined(SIMDE_MMX_NATIVE) SIMDE__FUNCTION_ATTRIBUTES simde__m64 SIMDE__M64_FROM_NATIVE(__m64 v) { simde__m64 r; r.n = v; return r; } # define SIMDE__M64_TO_NATIVE(v) (v.n) Loading Loading @@ -721,11 +728,19 @@ simde_mm_set_pi8 (int8_t e7, int8_t e6, int8_t e5, int8_t e4, int8_t e3, int8_t SIMDE__FUNCTION_ATTRIBUTES simde__m64 simde_x_mm_set_pu8 (uint8_t e7, uint8_t e6, uint8_t e5, uint8_t e4, uint8_t e3, uint8_t e2, uint8_t e1, uint8_t e0) { simde__m64 r; #if defined(SIMDE_MMX_NATIVE) return SIMDE__M64_FROM_NATIVE(_mm_set_pi8((int8_t) e7, (int8_t) e6, (int8_t) e5, (int8_t) e4, (int8_t) e3, (int8_t) e2, (int8_t) e1, (int8_t) e0)); r.n = _mm_set_pi8( HEDLEY_STATIC_CAST(int8_t, e7), HEDLEY_STATIC_CAST(int8_t, e6), HEDLEY_STATIC_CAST(int8_t, e5), HEDLEY_STATIC_CAST(int8_t, e4), HEDLEY_STATIC_CAST(int8_t, e3), HEDLEY_STATIC_CAST(int8_t, e2), HEDLEY_STATIC_CAST(int8_t, e1), HEDLEY_STATIC_CAST(int8_t, e0)); #else simde__m64 r; r.u8[0] = e0; r.u8[1] = e1; r.u8[2] = e2; Loading @@ -734,8 +749,9 @@ simde_x_mm_set_pu8 (uint8_t e7, uint8_t e6, uint8_t e5, uint8_t e4, uint8_t e3, r.u8[5] = e5; r.u8[6] = e6; r.u8[7] = e7; return r; #endif return r; } SIMDE__FUNCTION_ATTRIBUTES Loading @@ -759,29 +775,40 @@ simde_mm_set_pi16 (int16_t e3, int16_t e2, int16_t e1, int16_t e0) { SIMDE__FUNCTION_ATTRIBUTES simde__m64 simde_x_mm_set_pu16 (uint16_t e3, uint16_t e2, uint16_t e1, uint16_t e0) { simde__m64 r; #if defined(SIMDE_MMX_NATIVE) return SIMDE__M64_FROM_NATIVE(_mm_set_pi16((int16_t) e3, (int16_t) e2, (int16_t) e1, (int16_t) e0)); r.n = _mm_set_pi16( HEDLEY_STATIC_CAST(int16_t, e3), HEDLEY_STATIC_CAST(int16_t, e2), HEDLEY_STATIC_CAST(int16_t, e1), HEDLEY_STATIC_CAST(int16_t, e0) ); #else simde__m64 r; r.u16[0] = e0; r.u16[1] = e1; r.u16[2] = e2; r.u16[3] = e3; return r; #endif return r; } SIMDE__FUNCTION_ATTRIBUTES simde__m64 simde_x_mm_set_pu32 (uint32_t e1, uint32_t e0) { simde__m64 r; #if defined(SIMDE_MMX_NATIVE) return SIMDE__M64_FROM_NATIVE(_mm_set_pi32((int32_t) e1, (int32_t) e0)); r.n = _mm_set_pi32( HEDLEY_STATIC_CAST(int32_t, e1), HEDLEY_STATIC_CAST(int32_t, e0)); #else simde__m64 r; r.u32[0] = e0; r.u32[1] = e1; return r; #endif return r; } SIMDE__FUNCTION_ATTRIBUTES Loading Loading @@ -1574,6 +1601,8 @@ simde_m_to_int (simde__m64 a) { # define _m_to_int(a) simde_m_to_int(SIMDE__M64_FROM_NATIVE(a)) #endif HEDLEY_DIAGNOSTIC_POP SIMDE__END_DECLS #endif /* !defined(SIMDE__MMX_H) */ debian/include/simde/x86/sse.h +6 −2 Original line number Diff line number Diff line Loading @@ -38,6 +38,10 @@ # define SIMDE_SSE_NATIVE # elif defined(__SSE__) && !defined(SIMDE_SSE_NO_NATIVE) && !defined(SIMDE_NO_NATIVE) # define SIMDE_SSE_NATIVE # elif defined(_M_IX86_FP) && !defined(SIMDE_SSE_NO_NATIVE) && !defined(SIMDE_NO_NATIVE) # if (_M_IX86_FP >= 1) # define SIMDE_SSE_NATIVE # endif # elif defined(__ARM_NEON) && !defined(SIMDE_SSE_NO_NEON) && !defined(SIMDE_NO_NEON) # define SIMDE_SSE_NEON # endif Loading Loading @@ -1584,7 +1588,7 @@ simde_mm_loadh_pi (simde__m128 a, simde__m64 const* mem_addr) { simde__m128 r; #if defined(SIMDE_SSE_NATIVE) r.n = _mm_loadh_pi(a.n, (__m64*) mem_addr); r.n = _mm_loadh_pi(a.n, HEDLEY_REINTERPRET_CAST(__m64 const*, mem_addr)); #else r.f32[0] = a.f32[0]; r.f32[1] = a.f32[1]; Loading @@ -1604,7 +1608,7 @@ simde_mm_loadl_pi (simde__m128 a, simde__m64 const* mem_addr) { simde__m128 r; #if defined(SIMDE_SSE_NATIVE) r.n = _mm_loadl_pi(a.n, (__m64*) mem_addr); r.n = _mm_loadl_pi(a.n, HEDLEY_REINTERPRET_CAST(__m64 const*, mem_addr)); #else r.f32[0] = mem_addr->f32[0]; r.f32[1] = mem_addr->f32[1]; Loading Loading
debian/include/simde/hedley.h +565 −187 File changed.Preview size limit exceeded, changes collapsed. Show changes
debian/include/simde/simde-common.h +54 −23 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ HEDLEY_TINYC_VERSION_CHECK(0,9,24) || \ HEDLEY_TI_VERSION_CHECK(8,1,0) # define SIMDE_ALIGN(alignment) __attribute__((aligned(alignment))) #elif defined(_MSC_VER) && (!defined(_M_IX86) || defined(_M_AMD64)) #elif defined(_MSC_VER) && !(defined(_M_ARM) && !defined(_M_ARM64)) # define SIMDE_ALIGN(alignment) __declspec(align(alignment)) #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) # define SIMDE_ALIGN(alignment) _Alignas(alignment) Loading @@ -50,22 +50,22 @@ #endif #define simde_assert_aligned(alignment, val) \ simde_assert_int(((uintptr_t) (val)) % (alignment), ==, 0) simde_assert_int(HEDLEY_REINTERPRET_CAST(const uintptr_t, (val)) % (alignment), ==, 0) /* TODO: this should really do something like HEDLEY_STATIC_CAST(T, (simde_assert_int(alignment, v), v)) but I need to think about how to handle it in all compilers... may end up moving to Hedley, too. */ #if HEDLEY_HAS_BUILTIN(__builtin_assume_aligned) # define SIMDE_CAST_ALIGN(alignment, T, v) ((T) __builtin_assume_aligned(v, alignment)) # define SIMDE_CAST_ALIGN(alignment, T, v) HEDLEY_REINTERPRET_CAST(T, __builtin_assume_aligned(v, alignment)) #elif HEDLEY_HAS_WARNING("-Wcast-align") # define SIMDE_CAST_ALIGN(alignment, T, v) \ HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wcast-align\"") \ ((T) (v)) \ HEDLEY_REINTERPRET_CAST(T, (v)) \ HEDLEY_DIAGNOSTIC_POP #else # define SIMDE_CAST_ALIGN(alignment, T, v) ((T) (v)) # define SIMDE_CAST_ALIGN(alignment, T, v) HEDLEY_REINTERPRET_CAST(T, (v)) #endif #if HEDLEY_GCC_HAS_ATTRIBUTE(vector_size,4,6,0) Loading Loading @@ -145,10 +145,21 @@ # define SIMDE__END_DECLS HEDLEY_END_C_DECLS #endif #if HEDLEY_HAS_WARNING("-Wpedantic") # define SIMDE_DIAGNOSTIC_DISABLE_INT128 _Pragma("clang diagnostic ignored \"-Wpedantic\"") #elif defined(HEDLEY_GCC_VERSION) # define SIMDE_DIAGNOSTIC_DISABLE_INT128 _Pragma("GCC diagnostic ignored \"-Wpedantic\"") #else # define SIMDE_DIAGNOSTIC_DISABLE_INT128 #endif #if defined(__SIZEOF_INT128__) # define SIMDE__HAVE_INT128 HEDLEY_DIAGNOSTIC_PUSH SIMDE_DIAGNOSTIC_DISABLE_INT128 typedef __int128 simde_int128; typedef unsigned __int128 simde_uint128; HEDLEY_DIAGNOSTIC_POP #endif /* TODO: we should at least make an attempt to detect the correct Loading Loading @@ -211,7 +222,10 @@ HEDLEY_STATIC_ASSERT(sizeof(simde_float64) == 8, "Unable to find 64-bit floating #if HEDLEY_HAS_BUILTIN(__builtin_shufflevector) # define SIMDE__SHUFFLE_VECTOR(elem_size, vec_size, a, b, ...) __builtin_shufflevector(a, b, __VA_ARGS__) #elif HEDLEY_GCC_HAS_BUILTIN(__builtin_shuffle,4,7,0) && !defined(__INTEL_COMPILER) # define SIMDE__SHUFFLE_VECTOR(elem_size, vec_size, a, b, ...) __builtin_shuffle(a, b, (int##elem_size##_t __attribute__((__vector_size__(vec_size)))) { __VA_ARGS__ }) # define SIMDE__SHUFFLE_VECTOR(elem_size, vec_size, a, b, ...) (__extension__ ({ \ int##elem_size##_t __attribute__((__vector_size__(vec_size))) simde_shuffle_ = { __VA_ARGS__ }; \ __builtin_shuffle(a, b, simde_shuffle_); \ })) #endif #if HEDLEY_GCC_HAS_BUILTIN(__builtin_convertvector,9,0,0) Loading @@ -222,12 +236,21 @@ HEDLEY_STATIC_ASSERT(sizeof(simde_float64) == 8, "Unable to find 64-bit floating # define SIMDE_CONVERT_FTOI(T,v) \ HEDLEY_DIAGNOSTIC_PUSH \ _Pragma("clang diagnostic ignored \"-Wbad-function-cast\"") \ ((T) (v)) \ HEDLEY_STATIC_CAST(T, (v)) \ HEDLEY_DIAGNOSTIC_POP #else # define SIMDE_CONVERT_FTOI(T,v) ((T) (v)) #endif #if HEDLEY_HAS_WARNING("-Wfloat-equal") # define SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL _Pragma("clang diagnostic ignored \"-Wfloat-equal\"") #elif HEDLEY_GCC_VERSION_CHECK(3,0,0) # define SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"") #else # define SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL #endif /* Some algorithms are iterative, and fewer iterations means less accuracy. Lower values here will result in faster, but less accurate, calculations for some functions. */ Loading Loading @@ -305,21 +328,29 @@ HEDLEY_STATIC_ASSERT(sizeof(simde_float64) == 8, "Unable to find 64-bit floating # endif #endif #if !defined(__cplusplus) #define SIMDE_F64_ALL_SET (((union { uint64_t u64; simde_float64 f64; }) { .u64 = ~UINT64_C(0x0) }).f64) #define SIMDE_F64_ALL_UNSET (((union { uint64_t u64; simde_float64 f64; }) { .u64 = UINT64_C(0x0) }).f64) #define SIMDE_F32_ALL_SET (((union { uint32_t u32; simde_float32 f32; }) { .u32 = ~UINT32_C(0x0) }).f32) #define SIMDE_F32_ALL_UNSET (((union { uint32_t u32; simde_float32 f32; }) { .u32 = UINT32_C(0x0) }).f32) #else static const union { uint64_t u64; simde_float64 f64; } simde_f64_all_set = { .u64 = ~UINT64_C(0) }; static const union { uint64_t u64; simde_float64 f64; } simde_f64_all_unset = { .u64 = UINT64_C(0) }; static const union { uint64_t u32; simde_float64 f32; } simde_f32_all_set = { .u32 = ~UINT32_C(0) }; static const union { uint64_t u32; simde_float64 f32; } simde_f32_all_unset = { .u32 = UINT32_C(0) }; # define SIMDE_F64_ALL_SET (simde_f64_all_set.f64) # define SIMDE_F64_ALL_UNSET (simde_f64_all_unset.f64) # define SIMDE_F32_ALL_SET (simde_f32_all_set.f32) # define SIMDE_F32_ALL_UNSET (simde_f32_all_unset.f32) #endif HEDLEY_ALWAYS_INLINE static simde_float32 simde_u32_to_f32(uint32_t val) { union { uint32_t u32; simde_float32 f32; } u; u.u32 = val; return u.f32; } HEDLEY_ALWAYS_INLINE static simde_float64 simde_u64_to_f64(uint64_t val) { union { uint64_t u64; simde_float64 f64; } u; u.u64 = val; return u.f64; } #define SIMDE_F32_ALL_SET (simde_u32_to_f32(~UINT32_C(0))) #define SIMDE_F32_ALL_UNSET (simde_u32_to_f32( UINT32_C(0))) #define SIMDE_F64_ALL_SET (simde_u64_to_f64(~UINT64_C(0))) #define SIMDE_F64_ALL_UNSET (simde_u64_to_f64( UINT64_C(0))) #endif /* !defined(SIMDE_COMMON_H) */
debian/include/simde/x86/avx.h +34 −29 Original line number Diff line number Diff line Loading @@ -1100,7 +1100,7 @@ simde_mm256_castpd_ps (simde__m256d a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256_FROM_NATIVE(_mm256_castpd_ps(a.n)); #else return *((simde__m256*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -1113,7 +1113,7 @@ simde_mm256_castpd_si256 (simde__m256d a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256I_FROM_NATIVE(_mm256_castpd_si256(a.n)); #else return *((simde__m256i*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256i*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading Loading @@ -1162,7 +1162,7 @@ simde_mm256_castps_pd (simde__m256 a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256D_FROM_NATIVE(_mm256_castps_pd(a.n)); #else return *((simde__m256d*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256d*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -1175,7 +1175,7 @@ simde_mm256_castps_si256 (simde__m256 a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256I_FROM_NATIVE(_mm256_castps_si256(a.n)); #else return *((simde__m256i*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256i*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading Loading @@ -1260,7 +1260,7 @@ simde_mm256_castsi256_pd (simde__m256i a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256D_FROM_NATIVE(_mm256_castsi256_pd(a.n)); #else return *((simde__m256d*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256d*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -1273,7 +1273,7 @@ simde_mm256_castsi256_ps (simde__m256i a) { #if defined(SIMDE_AVX_NATIVE) return SIMDE__M256_FROM_NATIVE(_mm256_castsi256_ps(a.n)); #else return *((simde__m256*) &a); return *HEDLEY_REINTERPRET_CAST(simde__m256*, &a); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading Loading @@ -1320,6 +1320,9 @@ simde_mm256_ceil_ps (simde__m256 a) { # define _mm256_ceil_ps(a) SIMDE__M256_TO_NATIVE(simde_mm256_ceil_ps(SIMDE__M256_FROM_NATIVE(a))) #endif HEDLEY_DIAGNOSTIC_PUSH SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL /* This implementation does not support signaling NaNs (yet?) */ SIMDE__FUNCTION_ATTRIBUTES simde__m128d Loading Loading @@ -2457,6 +2460,8 @@ simde_mm256_cmp_ps (simde__m256 a, simde__m256 b, const int imm8) # define _mm256_cmp_ps(a, b, imm8) SIMDE__M256_TO_NATIVE(simde_mm256_cmp_ps(SIMDE__M256_FROM_NATIVE(a), SIMDE__M256_FROM_NATIVE(b), imm8)) #endif HEDLEY_DIAGNOSTIC_POP /* -Wfloat-equal */ SIMDE__FUNCTION_ATTRIBUTES simde__m256d simde_mm256_cvtepi32_pd (simde__m128i a) { Loading @@ -2467,7 +2472,7 @@ simde_mm256_cvtepi32_pd (simde__m128i a) { #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) { r.f64[i] = (simde_float64) a.i32[i]; r.f64[i] = HEDLEY_STATIC_CAST(simde_float64, a.i32[i]); } #endif Loading @@ -2487,7 +2492,7 @@ simde_mm256_cvtepi32_ps (simde__m256i a) { #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) { r.f32[i] = (simde_float32) a.i32[i]; r.f32[i] = HEDLEY_STATIC_CAST(simde_float32, a.i32[i]); } #endif Loading Loading @@ -2527,7 +2532,7 @@ simde_mm256_cvtpd_ps (simde__m256d a) { #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) { r.f32[i] = (simde_float32) a.f64[i]; r.f32[i] = HEDLEY_STATIC_CAST(simde_float32, a.f64[i]); } #endif Loading Loading @@ -2984,7 +2989,7 @@ simde_mm256_load_pd (const double a[HEDLEY_ARRAY_PARAM(4)]) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_load_pd(a); #else r = *SIMDE_CAST_ALIGN(32, simde__m256d*, a); r = *SIMDE_CAST_ALIGN(32, simde__m256d const*, a); #endif return r; Loading @@ -3003,7 +3008,7 @@ simde_mm256_load_ps (const float a[HEDLEY_ARRAY_PARAM(8)]) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_load_ps(a); #else r = *SIMDE_CAST_ALIGN(32, simde__m256*, a); r = *SIMDE_CAST_ALIGN(32, simde__m256 const*, a); #endif return r; Loading Loading @@ -3125,7 +3130,7 @@ simde_mm_maskload_pd (const simde_float64 mem_addr[HEDLEY_ARRAY_PARAM(4)], simde #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) { r.i64[i] = ((int64_t*) mem_addr)[i] & (mask.i64[i] >> 63); r.i64[i] = HEDLEY_REINTERPRET_CAST(int64_t const*, mem_addr)[i] & (mask.i64[i] >> 63); } #endif Loading @@ -3145,7 +3150,7 @@ simde_mm256_maskload_pd (const simde_float64 mem_addr[HEDLEY_ARRAY_PARAM(4)], si #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) { r.i64[i] = ((int64_t*) mem_addr)[i] & (mask.i64[i] >> 63); r.i64[i] = HEDLEY_REINTERPRET_CAST(int64_t const*, mem_addr)[i] & (mask.i64[i] >> 63); } #endif Loading @@ -3165,7 +3170,7 @@ simde_mm_maskload_ps (const simde_float32 mem_addr[HEDLEY_ARRAY_PARAM(4)], simde #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) { r.i32[i] = ((int32_t*) mem_addr)[i] & (mask.i32[i] >> 31); r.i32[i] = HEDLEY_REINTERPRET_CAST(int32_t const*, mem_addr)[i] & (mask.i32[i] >> 31); } #endif Loading @@ -3185,7 +3190,7 @@ simde_mm256_maskload_ps (const simde_float32 mem_addr[HEDLEY_ARRAY_PARAM(4)], si #else SIMDE__VECTORIZE for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) { r.i32[i] = ((int32_t*) mem_addr)[i] & (mask.i32[i] >> 31); r.i32[i] = HEDLEY_REINTERPRET_CAST(int32_t const*, mem_addr)[i] & (mask.i32[i] >> 31); } #endif Loading Loading @@ -3293,7 +3298,7 @@ simde_mm256_min_pd (simde__m256d a, simde__m256d b) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_min_pd(a.n,b.n); #elif defined(SIMDE_SSE_NATIVE) #elif defined(SIMDE_SSE2_NATIVE) r.m128d[0].n = _mm_min_pd(a.m128d[0].n, b.m128d[0].n); r.m128d[1].n = _mm_min_pd(a.m128d[1].n, b.m128d[1].n); #else Loading Loading @@ -3339,7 +3344,7 @@ simde_mm256_max_pd (simde__m256d a, simde__m256d b) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_max_pd(a.n,b.n); #elif defined(SIMDE_SSE_NATIVE) #elif defined(SIMDE_SSE2_NATIVE) r.m128d[0].n = _mm_max_pd(a.m128d[0].n, b.m128d[0].n); r.m128d[1].n = _mm_max_pd(a.m128d[1].n, b.m128d[1].n); #else Loading Loading @@ -3493,7 +3498,7 @@ simde_mm256_mul_pd (simde__m256d a, simde__m256d b) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_mul_pd(a.n,b.n); #elif defined(SIMDE_SSE_NATIVE) #elif defined(SIMDE_SSE2_NATIVE) r.m128d[0].n = _mm_mul_pd(a.m128d[0].n, b.m128d[0].n); r.m128d[1].n = _mm_mul_pd(a.m128d[1].n, b.m128d[1].n); #elif defined(SIMDE__ENABLE_GCC_VEC_EXT) Loading Loading @@ -3543,7 +3548,7 @@ simde_mm256_or_pd (simde__m256d a, simde__m256d b) { #if defined(SIMDE_AVX_NATIVE) r.n = _mm256_or_pd(a.n,b.n); #elif defined(SIMDE_SSE_NATIVE) #elif defined(SIMDE_SSE2_NATIVE) r.m128d[0].n = _mm_or_pd(a.m128d[0].n, b.m128d[0].n); r.m128d[1].n = _mm_or_pd(a.m128d[1].n, b.m128d[1].n); #elif defined(SIMDE__ENABLE_GCC_VEC_EXT) Loading Loading @@ -4688,7 +4693,7 @@ simde_mm_testc_ps (simde__m128 a, simde__m128 b) { r |= ~a.u32[i] & b.u32[i]; } return (int) ((~r >> 31) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 31) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4708,7 +4713,7 @@ simde_mm_testc_pd (simde__m128d a, simde__m128d b) { r |= ~a.u64[i] & b.u64[i]; } return (int) ((~r >> 63) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 63) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4728,7 +4733,7 @@ simde_mm256_testc_ps (simde__m256 a, simde__m256 b) { r |= ~a.u32[i] & b.u32[i]; } return (int) ((~r >> 31) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 31) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4748,7 +4753,7 @@ simde_mm256_testc_pd (simde__m256d a, simde__m256d b) { r |= ~a.u64[i] & b.u64[i]; } return (int) ((~r >> 63) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 63) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4768,7 +4773,7 @@ simde_mm256_testc_si256 (simde__m256i a, simde__m256i b) { r |= ~a.i32f[i] & b.i32f[i]; } return (int) !r; return HEDLEY_STATIC_CAST(int, !r); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4788,7 +4793,7 @@ simde_mm_testz_ps (simde__m128 a, simde__m128 b) { r |= a.u32[i] & b.u32[i]; } return (int) ((~r >> 31) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 31) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4808,7 +4813,7 @@ simde_mm_testz_pd (simde__m128d a, simde__m128d b) { r |= a.u64[i] & b.u64[i]; } return (int) ((~r >> 63) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 63) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4828,7 +4833,7 @@ simde_mm256_testz_ps (simde__m256 a, simde__m256 b) { r |= a.u32[i] & b.u32[i]; } return (int) ((~r >> 31) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 31) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4848,7 +4853,7 @@ simde_mm256_testz_pd (simde__m256d a, simde__m256d b) { r |= a.u64[i] & b.u64[i]; } return (int) ((~r >> 63) & 1); return HEDLEY_STATIC_CAST(int, ((~r >> 63) & 1)); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading @@ -4868,7 +4873,7 @@ simde_mm256_testz_si256 (simde__m256i a, simde__m256i b) { r |= a.i32f[i] & b.i32f[i]; } return (int) !r; return HEDLEY_STATIC_CAST(int, !r); #endif } #if defined(SIMDE_AVX_ENABLE_NATIVE_ALIASES) Loading
debian/include/simde/x86/mmx.h +40 −11 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ # if defined(SIMDE_MMX_FORCE_NATIVE) # define SIMDE_MMX_NATIVE # elif defined(__MMX__) && !defined(SIMDE_MMX_NO_NATIVE) && !defined(SIMDE_NO_NATIVE) # elif (defined(__MMX__) || (defined(_MSC_VER) && defined(_M_IX86))) && !defined(SIMDE_MMX_NO_NATIVE) && !defined(SIMDE_NO_NATIVE) # define SIMDE_MMX_NATIVE # elif defined(__ARM_NEON) && !defined(SIMDE_MMX_NO_NEON) && !defined(SIMDE_NO_NEON) # define SIMDE_MMX_NEON Loading Loading @@ -101,6 +101,13 @@ typedef union { #endif HEDLEY_STATIC_ASSERT(8 == sizeof(simde__m64), "__m64 size incorrect"); HEDLEY_DIAGNOSTIC_PUSH /* Function has no EMMS instruction */ #if defined(HEDLEY_MSVC_VERSION) #pragma warning(disable:4799) #endif #if defined(SIMDE_MMX_NATIVE) SIMDE__FUNCTION_ATTRIBUTES simde__m64 SIMDE__M64_FROM_NATIVE(__m64 v) { simde__m64 r; r.n = v; return r; } # define SIMDE__M64_TO_NATIVE(v) (v.n) Loading Loading @@ -721,11 +728,19 @@ simde_mm_set_pi8 (int8_t e7, int8_t e6, int8_t e5, int8_t e4, int8_t e3, int8_t SIMDE__FUNCTION_ATTRIBUTES simde__m64 simde_x_mm_set_pu8 (uint8_t e7, uint8_t e6, uint8_t e5, uint8_t e4, uint8_t e3, uint8_t e2, uint8_t e1, uint8_t e0) { simde__m64 r; #if defined(SIMDE_MMX_NATIVE) return SIMDE__M64_FROM_NATIVE(_mm_set_pi8((int8_t) e7, (int8_t) e6, (int8_t) e5, (int8_t) e4, (int8_t) e3, (int8_t) e2, (int8_t) e1, (int8_t) e0)); r.n = _mm_set_pi8( HEDLEY_STATIC_CAST(int8_t, e7), HEDLEY_STATIC_CAST(int8_t, e6), HEDLEY_STATIC_CAST(int8_t, e5), HEDLEY_STATIC_CAST(int8_t, e4), HEDLEY_STATIC_CAST(int8_t, e3), HEDLEY_STATIC_CAST(int8_t, e2), HEDLEY_STATIC_CAST(int8_t, e1), HEDLEY_STATIC_CAST(int8_t, e0)); #else simde__m64 r; r.u8[0] = e0; r.u8[1] = e1; r.u8[2] = e2; Loading @@ -734,8 +749,9 @@ simde_x_mm_set_pu8 (uint8_t e7, uint8_t e6, uint8_t e5, uint8_t e4, uint8_t e3, r.u8[5] = e5; r.u8[6] = e6; r.u8[7] = e7; return r; #endif return r; } SIMDE__FUNCTION_ATTRIBUTES Loading @@ -759,29 +775,40 @@ simde_mm_set_pi16 (int16_t e3, int16_t e2, int16_t e1, int16_t e0) { SIMDE__FUNCTION_ATTRIBUTES simde__m64 simde_x_mm_set_pu16 (uint16_t e3, uint16_t e2, uint16_t e1, uint16_t e0) { simde__m64 r; #if defined(SIMDE_MMX_NATIVE) return SIMDE__M64_FROM_NATIVE(_mm_set_pi16((int16_t) e3, (int16_t) e2, (int16_t) e1, (int16_t) e0)); r.n = _mm_set_pi16( HEDLEY_STATIC_CAST(int16_t, e3), HEDLEY_STATIC_CAST(int16_t, e2), HEDLEY_STATIC_CAST(int16_t, e1), HEDLEY_STATIC_CAST(int16_t, e0) ); #else simde__m64 r; r.u16[0] = e0; r.u16[1] = e1; r.u16[2] = e2; r.u16[3] = e3; return r; #endif return r; } SIMDE__FUNCTION_ATTRIBUTES simde__m64 simde_x_mm_set_pu32 (uint32_t e1, uint32_t e0) { simde__m64 r; #if defined(SIMDE_MMX_NATIVE) return SIMDE__M64_FROM_NATIVE(_mm_set_pi32((int32_t) e1, (int32_t) e0)); r.n = _mm_set_pi32( HEDLEY_STATIC_CAST(int32_t, e1), HEDLEY_STATIC_CAST(int32_t, e0)); #else simde__m64 r; r.u32[0] = e0; r.u32[1] = e1; return r; #endif return r; } SIMDE__FUNCTION_ATTRIBUTES Loading Loading @@ -1574,6 +1601,8 @@ simde_m_to_int (simde__m64 a) { # define _m_to_int(a) simde_m_to_int(SIMDE__M64_FROM_NATIVE(a)) #endif HEDLEY_DIAGNOSTIC_POP SIMDE__END_DECLS #endif /* !defined(SIMDE__MMX_H) */
debian/include/simde/x86/sse.h +6 −2 Original line number Diff line number Diff line Loading @@ -38,6 +38,10 @@ # define SIMDE_SSE_NATIVE # elif defined(__SSE__) && !defined(SIMDE_SSE_NO_NATIVE) && !defined(SIMDE_NO_NATIVE) # define SIMDE_SSE_NATIVE # elif defined(_M_IX86_FP) && !defined(SIMDE_SSE_NO_NATIVE) && !defined(SIMDE_NO_NATIVE) # if (_M_IX86_FP >= 1) # define SIMDE_SSE_NATIVE # endif # elif defined(__ARM_NEON) && !defined(SIMDE_SSE_NO_NEON) && !defined(SIMDE_NO_NEON) # define SIMDE_SSE_NEON # endif Loading Loading @@ -1584,7 +1588,7 @@ simde_mm_loadh_pi (simde__m128 a, simde__m64 const* mem_addr) { simde__m128 r; #if defined(SIMDE_SSE_NATIVE) r.n = _mm_loadh_pi(a.n, (__m64*) mem_addr); r.n = _mm_loadh_pi(a.n, HEDLEY_REINTERPRET_CAST(__m64 const*, mem_addr)); #else r.f32[0] = a.f32[0]; r.f32[1] = a.f32[1]; Loading @@ -1604,7 +1608,7 @@ simde_mm_loadl_pi (simde__m128 a, simde__m64 const* mem_addr) { simde__m128 r; #if defined(SIMDE_SSE_NATIVE) r.n = _mm_loadl_pi(a.n, (__m64*) mem_addr); r.n = _mm_loadl_pi(a.n, HEDLEY_REINTERPRET_CAST(__m64 const*, mem_addr)); #else r.f32[0] = mem_addr->f32[0]; r.f32[1] = mem_addr->f32[1]; Loading