[FFmpeg-cvslog] r12661 - in trunk/libavcodec/i386: dsputil_h264_template_mmx.c dsputil_h264_template_ssse3.c dsputil_mmx.c dsputil_mmx.h h264dsp_mmx.c
Loren Merritt
lorenm
Wed Apr 2 13:01:44 CEST 2008
It seems that icc copies the constants from their global var onto the
stack, at which point they're not aligned, hence the crash.
Try this. It really shouldn't mean anything different, but maybe it'll
confuse icc into not performing that "optimization".
--Loren Merritt
-------------- next part --------------
Index: i386/dsputil_h264_template_ssse3.c
===================================================================
--- i386/dsputil_h264_template_ssse3.c (revision 12661)
+++ i386/dsputil_h264_template_ssse3.c (working copy)
@@ -43,7 +43,8 @@
"pshuflw $0, %%xmm7, %%xmm7 \n\t"
"movlhps %%xmm6, %%xmm6 \n\t"
"movlhps %%xmm7, %%xmm7 \n\t"
- :: "r"(255*(x+y)+8), "m"(rnd?ff_pw_4:ff_pw_3));
+ :: "r"(255*(x+y)+8), "m"(*(rnd?&ff_pw_4:&ff_pw_3))
+ );
if(x) {
asm volatile(
@@ -114,7 +115,7 @@
"pshuflw $0, %%xmm6, %%xmm6 \n\t"
"movlhps %%xmm7, %%xmm7 \n\t"
"movlhps %%xmm6, %%xmm6 \n\t"
- :: "r"((x*255+8)*(8-y)), "r"((x*255+8)*y), "m"(rnd?ff_pw_32:ff_pw_28)
+ :: "r"((x*255+8)*(8-y)), "r"((x*255+8)*y), "m"(*(rnd?&ff_pw_32:&ff_pw_28))
);
asm volatile(
More information about the ffmpeg-cvslog
mailing list