diff --git a/src/strategies/avx2/quant-avx2.c b/src/strategies/avx2/quant-avx2.c index 9d05fc39..582823da 100644 --- a/src/strategies/avx2/quant-avx2.c +++ b/src/strategies/avx2/quant-avx2.c @@ -40,6 +40,8 @@ #include #include +#include "strategies/missing-intel-intrinsics.h" + #include "avx2_common_functions.h" #include "cu.h" #include "encoder.h" diff --git a/src/strategies/missing-intel-intrinsics.h b/src/strategies/missing-intel-intrinsics.h index f132f033..af8b805f 100644 --- a/src/strategies/missing-intel-intrinsics.h +++ b/src/strategies/missing-intel-intrinsics.h @@ -30,6 +30,16 @@ #ifndef _mm256_extract_epi32 #define _mm256_extract_epi32(a, index) (_mm_extract_epi32(_mm256_extracti128_si256((a), (index) >> 2), (index) & 3)) #endif + + #ifndef _mm256_storeu2_m128i + #define _mm256_storeu2_m128i(/* __m128i* */ hiaddr, /* __m128i* */ loaddr, /* __m256i */ a) \ + do { __m256i _a = (a); \ + _mm_storeu_si128((__m128i*)(loaddr), _mm256_castsi256_si128(_a)); \ + _mm_storeu_si128((__m128i*)(hiaddr), _mm256_extractf128_si256(_a, 0x1)); \ + } while (0) + #endif + #endif #endif +