diff --git a/src/arch/intsimdmatrixavx2.cpp b/src/arch/intsimdmatrixavx2.cpp index ddcc1fe25f..6c6902ae2e 100644 --- a/src/arch/intsimdmatrixavx2.cpp +++ b/src/arch/intsimdmatrixavx2.cpp @@ -85,15 +85,13 @@ static inline void ExtractResults(__m256i& result, __m256i& shift_id, const int8_t*& wi, const double*& scales, int num_out, double*& v) { for (int out = 0; out < num_out; ++out) { - auto res = #ifndef _MSC_VER - _mm256_extract_epi32(result, 0) + auto res = _mm256_extract_epi32(result, 0); #else - // Workaround MSVC's ICE - // _mm256_extract_epi32(X, Y) == ((int32_t*)&X)[Y] - ((int32_t*)&result)[0] + // Workaround MSVC's ICE + // _mm256_extract_epi32(X, Y) == ((int32_t*)&X)[Y] + auto res = ((int32_t*)&result)[0]; #endif - ; *v++ = (static_cast(res) / INT8_MAX + *wi++) * *scales++; // Rotate the results in int32_t units, so the next result is ready. result = _mm256_permutevar8x32_epi32(result, shift_id);