Support for processors without AVX.

This commit is contained in:
Marcel Keller
2018-01-03 13:15:45 +01:00
parent 6dab155702
commit a80fd50dea
3 changed files with 7 additions and 2 deletions

View File

@@ -14,11 +14,13 @@
inline void avx_memcpy(void* dest, const void* source, size_t length)
{
__m256i* d = (__m256i*)dest, *s = (__m256i*)source;
#ifdef __AVX__
while (length >= 32)
{
_mm256_storeu_si256(d++, _mm256_loadu_si256(s++));
length -= 32;
}
#endif
__m128i* d2 = (__m128i*)d;
__m128i* s2 = (__m128i*)s;
while (length >= 16)
@@ -33,12 +35,14 @@ inline void avx_memcpy(void* dest, const void* source, size_t length)
inline void avx_memzero(void* dest, size_t length)
{
__m256i* d = (__m256i*)dest;
#ifdef __AVX__
__m256i s = _mm256_setzero_si256();
while (length >= 32)
{
_mm256_storeu_si256(d++, s);
length -= 32;
}
#endif
if (length)
memset(d, 0, length);
}