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))