vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sat Oct 13 14:05:18 2012 +0300| [485a070fcaa8e6bd7985ce489d5f53edffecfdaf] | committer: Rémi Denis-Courmont
avcodec: clobber XMM registers correctly (fixes #5268) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=485a070fcaa8e6bd7985ce489d5f53edffecfdaf --- modules/codec/avcodec/copy.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/codec/avcodec/copy.c b/modules/codec/avcodec/copy.c index 13a24ce..827892d 100644 --- a/modules/codec/avcodec/copy.c +++ b/modules/codec/avcodec/copy.c @@ -70,7 +70,7 @@ void CopyCleanCache(copy_cache_t *cache) store " %%xmm2, 16(%[dst])\n" \ store " %%xmm3, 32(%[dst])\n" \ store " %%xmm4, 48(%[dst])\n" \ - : : [dst]"r"(dstp), [src]"r"(srcp) : "memory") + : : [dst]"r"(dstp), [src]"r"(srcp) : "memory", "xmm1", "xmm2", "xmm3", "xmm4") #ifndef __SSE4_1__ # undef vlc_CPU_SSE4_1 @@ -91,6 +91,7 @@ void CopyCleanCache(copy_cache_t *cache) * as used by some video surface. * XXX It is really efficient only when SSE4.1 is available. */ +VLC_SSE static void CopyFromUswc(uint8_t *dst, size_t dst_pitch, const uint8_t *src, size_t src_pitch, unsigned width, unsigned height, @@ -136,6 +137,7 @@ static void CopyFromUswc(uint8_t *dst, size_t dst_pitch, } } +VLC_SSE static void Copy2d(uint8_t *dst, size_t dst_pitch, const uint8_t *src, size_t src_pitch, unsigned width, unsigned height) @@ -164,6 +166,7 @@ static void Copy2d(uint8_t *dst, size_t dst_pitch, } } +VLC_SSE static void SSE_SplitUV(uint8_t *dstu, size_t dstu_pitch, uint8_t *dstv, size_t dstv_pitch, const uint8_t *src, size_t src_pitch, @@ -209,7 +212,7 @@ static void SSE_SplitUV(uint8_t *dstu, size_t dstu_pitch, "pshufb %%xmm7, %%xmm2\n" "pshufb %%xmm7, %%xmm3\n" STORE2X32 - : : [dst1]"r"(&dstu[x]), [dst2]"r"(&dstv[x]), [src]"r"(&src[2*x]), [shuffle]"r"(shuffle) : "memory"); + : : [dst1]"r"(&dstu[x]), [dst2]"r"(&dstv[x]), [src]"r"(&src[2*x]), [shuffle]"r"(shuffle) : "memory", "xmm0", "xmm1", "xmm2", "xmm3", "xmm7"); } } else #endif @@ -234,7 +237,7 @@ static void SSE_SplitUV(uint8_t *dstu, size_t dstu_pitch, "packuswb %%xmm6, %%xmm2\n" "packuswb %%xmm7, %%xmm3\n" STORE2X32 - : : [dst2]"r"(&dstu[x]), [dst1]"r"(&dstv[x]), [src]"r"(&src[2*x]), [mask]"r"(mask) : "memory"); + : : [dst2]"r"(&dstu[x]), [dst1]"r"(&dstv[x]), [src]"r"(&src[2*x]), [mask]"r"(mask) : "memory", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"); } } #undef STORE2X32 _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
