[VCRUNTIME] Fix emmintrin.h for GCC

This commit is contained in:
Timo Kreuzer 2025-01-16 17:49:29 +02:00
parent 94eb475177
commit a015b91e6b

View file

@ -1345,8 +1345,15 @@ __INTRIN_INLINE_SSE2 __m128i _mm_xor_si128(__m128i a, __m128i b)
return (__m128i)((__v2du)a ^ (__v2du)b); return (__m128i)((__v2du)a ^ (__v2du)b);
} }
#ifdef __clang__
#define _mm_slli_si128(a, imm) \ #define _mm_slli_si128(a, imm) \
((__m128i)__builtin_ia32_pslldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))) ((__m128i)__builtin_ia32_pslldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm)))
#else
__INTRIN_INLINE_SSE2 __m128i _mm_slli_si128(__m128i a, const int imm)
{
return (__m128i)__builtin_ia32_pslldqi128(a, imm * 8);
}
#endif
__INTRIN_INLINE_SSE2 __m128i _mm_slli_epi16(__m128i a, int count) __INTRIN_INLINE_SSE2 __m128i _mm_slli_epi16(__m128i a, int count)
{ {
@ -1398,8 +1405,15 @@ __INTRIN_INLINE_SSE2 __m128i _mm_sra_epi32(__m128i a, __m128i count)
return (__m128i)__builtin_ia32_psrad128((__v4si)a, (__v4si)count); return (__m128i)__builtin_ia32_psrad128((__v4si)a, (__v4si)count);
} }
#ifdef __clang__
#define _mm_srli_si128(a, imm) \ #define _mm_srli_si128(a, imm) \
((__m128i)__builtin_ia32_psrldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))) ((__m128i)__builtin_ia32_psrldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm)))
#else
__INTRIN_INLINE_SSE2 __m128i _mm_srli_si128(__m128i a, const int imm)
{
return (__m128i)__builtin_ia32_psrldqi128(a, imm * 8);
}
#endif
__INTRIN_INLINE_SSE2 __m128i _mm_srli_epi16(__m128i a, int count) __INTRIN_INLINE_SSE2 __m128i _mm_srli_epi16(__m128i a, int count)
{ {