summaryrefslogtreecommitdiff
path: root/src/libFLAC/stream_encoder_intrin_ssse3.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libFLAC/stream_encoder_intrin_ssse3.c')
-rw-r--r--src/libFLAC/stream_encoder_intrin_ssse3.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libFLAC/stream_encoder_intrin_ssse3.c b/src/libFLAC/stream_encoder_intrin_ssse3.c
index 465950b2..551ffd31 100644
--- a/src/libFLAC/stream_encoder_intrin_ssse3.c
+++ b/src/libFLAC/stream_encoder_intrin_ssse3.c
@@ -87,6 +87,10 @@ void FLAC__precompute_partition_info_sums_intrin_ssse3(const FLAC__int32 residua
mm_sum = _mm_hadd_epi32(mm_sum, mm_sum);
mm_sum = _mm_hadd_epi32(mm_sum, mm_sum);
abs_residual_partition_sums[partition] = (FLAC__uint32)_mm_cvtsi128_si32(mm_sum);
+/* workaround for a bug in MSVC2015U2 - see https://connect.microsoft.com/VisualStudio/feedback/details/2659191/incorrect-code-generation-for-x86-64 */
+#if (defined _MSC_VER) && (_MSC_FULL_VER == 190023918) && (defined FLAC__CPU_X86_64)
+ abs_residual_partition_sums[partition] &= 0xFFFFFFFF;
+#endif
}
}
else { /* have to pessimistically use 64 bits for accumulator */