Mercurial > libavcodec.hg
comparison i386/h264dsp_mmx.c @ 3001:b52d8ee430f6 libavcodec
fix some potential arithmetic overflows in pred_direct_motion() and
ff_h264_weight_WxH_mmx2().
author | lorenm |
---|---|
date | Fri, 30 Dec 2005 23:47:41 +0000 |
parents | bfabfdf9ce55 |
children | 7a92269a3ccd |
comparison
equal
deleted
inserted
replaced
3000:b333953b7e6f | 3001:b52d8ee430f6 |
---|---|
516 "paddw 6(%0), %%mm2 \n\t"\ | 516 "paddw 6(%0), %%mm2 \n\t"\ |
517 "psubw %%mm1, %%mm0 \n\t"/*a-b (abccba)*/\ | 517 "psubw %%mm1, %%mm0 \n\t"/*a-b (abccba)*/\ |
518 "psraw $2, %%mm0 \n\t"/*(a-b)/4 */\ | 518 "psraw $2, %%mm0 \n\t"/*(a-b)/4 */\ |
519 "psubw %%mm1, %%mm0 \n\t"/*(a-b)/4-b */\ | 519 "psubw %%mm1, %%mm0 \n\t"/*(a-b)/4-b */\ |
520 "paddsw %%mm2, %%mm0 \n\t"\ | 520 "paddsw %%mm2, %%mm0 \n\t"\ |
521 "psraw $2, %%mm0 \n\t"/*((a-b)/4-b)/4 */\ | 521 "psraw $2, %%mm0 \n\t"/*((a-b)/4-b+c)/4 */\ |
522 "paddw %%mm6, %%mm2 \n\t"\ | 522 "paddw %%mm6, %%mm2 \n\t"\ |
523 "paddw %%mm2, %%mm0 \n\t"\ | 523 "paddw %%mm2, %%mm0 \n\t"/*(a-5*b+20*c)/16 +32 */\ |
524 "psraw $6, %%mm0 \n\t"\ | 524 "psraw $6, %%mm0 \n\t"\ |
525 "packuswb %%mm0, %%mm0 \n\t"\ | 525 "packuswb %%mm0, %%mm0 \n\t"\ |
526 OP(%%mm0, (%1),%%mm7, d)\ | 526 OP(%%mm0, (%1),%%mm7, d)\ |
527 "add $24, %0 \n\t"\ | 527 "add $24, %0 \n\t"\ |
528 "add %3, %1 \n\t"\ | 528 "add %3, %1 \n\t"\ |
953 "movd %1, %%mm1 \n\t" | 953 "movd %1, %%mm1 \n\t" |
954 "punpcklbw %%mm7, %%mm0 \n\t" | 954 "punpcklbw %%mm7, %%mm0 \n\t" |
955 "punpcklbw %%mm7, %%mm1 \n\t" | 955 "punpcklbw %%mm7, %%mm1 \n\t" |
956 "pmullw %%mm4, %%mm0 \n\t" | 956 "pmullw %%mm4, %%mm0 \n\t" |
957 "pmullw %%mm4, %%mm1 \n\t" | 957 "pmullw %%mm4, %%mm1 \n\t" |
958 "paddw %%mm5, %%mm0 \n\t" | 958 "paddsw %%mm5, %%mm0 \n\t" |
959 "paddw %%mm5, %%mm1 \n\t" | 959 "paddsw %%mm5, %%mm1 \n\t" |
960 "psraw %%mm6, %%mm0 \n\t" | 960 "psraw %%mm6, %%mm0 \n\t" |
961 "psraw %%mm6, %%mm1 \n\t" | 961 "psraw %%mm6, %%mm1 \n\t" |
962 "packuswb %%mm7, %%mm0 \n\t" | 962 "packuswb %%mm7, %%mm0 \n\t" |
963 "packuswb %%mm7, %%mm1 \n\t" | 963 "packuswb %%mm7, %%mm1 \n\t" |
964 "movd %%mm0, %0 \n\t" | 964 "movd %%mm0, %0 \n\t" |
993 "movd %1, %%mm1 \n\t" | 993 "movd %1, %%mm1 \n\t" |
994 "punpcklbw %%mm7, %%mm0 \n\t" | 994 "punpcklbw %%mm7, %%mm0 \n\t" |
995 "punpcklbw %%mm7, %%mm1 \n\t" | 995 "punpcklbw %%mm7, %%mm1 \n\t" |
996 "pmullw %%mm3, %%mm0 \n\t" | 996 "pmullw %%mm3, %%mm0 \n\t" |
997 "pmullw %%mm4, %%mm1 \n\t" | 997 "pmullw %%mm4, %%mm1 \n\t" |
998 "paddw %%mm5, %%mm0 \n\t" | 998 "paddsw %%mm1, %%mm0 \n\t" |
999 "paddw %%mm1, %%mm0 \n\t" | 999 "paddsw %%mm5, %%mm0 \n\t" |
1000 "psraw %%mm6, %%mm0 \n\t" | 1000 "psraw %%mm6, %%mm0 \n\t" |
1001 "packuswb %%mm0, %%mm0 \n\t" | 1001 "packuswb %%mm0, %%mm0 \n\t" |
1002 "movd %%mm0, %0 \n\t" | 1002 "movd %%mm0, %0 \n\t" |
1003 : "+m"(*(uint32_t*)(dst+x)) | 1003 : "+m"(*(uint32_t*)(dst+x)) |
1004 : "m"(*(uint32_t*)(src+x)) | 1004 : "m"(*(uint32_t*)(src+x)) |