aboutsummaryrefslogtreecommitdiff
path: root/celt
diff options
context:
space:
mode:
authorRay Essick <essick@google.com>2017-07-31 12:33:38 -0700
committerRay Essick <essick@google.com>2017-08-01 16:09:59 +0000
commit3effb3515f7841552bea5b2b8ad68a51e441769b (patch)
treed1aa752c8e4ec1e5eb35945a82e5ccc64728b00d /celt
parent4704bcf4f8eb142ce9b080624869954dc0ca6217 (diff)
downloadlibopus-3effb3515f7841552bea5b2b8ad68a51e441769b.tar.gz
fix alignment exceptions
some SSE optimizations were using an instruction sequence that required 128-bit alignment, even though this is not always guaranteed. The error was in handling a 64-bit entity; made the same macro changes that had been done previously for 32-bit entities. Bug: 63586076 Test: successful playback of purchased movie from playmovies. (cherry picked from commit e5c277c6dbbedd83ab04880da0569baf15f0a703) Change-Id: I5638bc3a94894c406c92f4aea1b699693ba6ed04
Diffstat (limited to 'celt')
-rw-r--r--celt/x86/x86cpu.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/celt/x86/x86cpu.h b/celt/x86/x86cpu.h
index 04fd48aa..1e2bf17b 100644
--- a/celt/x86/x86cpu.h
+++ b/celt/x86/x86cpu.h
@@ -82,7 +82,9 @@ int opus_select_arch(void);
(_mm_cvtepi8_epi32(*(__m128i *)(x)))
#endif
-# if !defined(__OPTIMIZE__)
+/* similar reasoning about the instruction sequence as in the 32-bit macro above,
+ */
+# if defined(__clang__) || !defined(__OPTIMIZE__)
# define OP_CVTEPI16_EPI32_M64(x) \
(_mm_cvtepi16_epi32(_mm_loadl_epi64((__m128i *)(x))))
# else