亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? quantize4_mmx.asm

?? xvid MPEG-4 編解碼源代碼
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
		paddw   mm3, mm5		psrlw	mm0, 2			; mm0 >>= 1   (/4)		psrlw	mm3, 2			;				pxor	mm0, mm1		; mm0 *= sign(mm0)		pxor	mm3, mm4        ;		psubw	mm0, mm1		; undisplace		psubw	mm3, mm4		;				movq	[edi + 8*ecx], mm0		movq	[edi + 8*ecx + 8], mm3		add ecx,2		cmp ecx,16		jnz	near .q2loop		jmp	near .done;===========================================================================;; uint32_t quant4_inter_mmx(int16_t * coeff,;					const int16_t const * data,;					const uint32_t quant);;;===========================================================================align ALIGNcglobal quant4_inter_mmx		quant4_inter_mmx		push	ecx		push	esi		push	edi		mov	edi, [esp + 12 + 4]		; coeff		mov	esi, [esp + 12 + 8]		; data		mov	eax, [esp + 12 + 12]	; quant		xor ecx, ecx		pxor mm5, mm5					; sum		cmp	al, 1		jz  near .q1loop		cmp	al, 2		jz  near .q2loop		movq	mm7, [mmx_div + eax * 8 - 8]	; divideralign ALIGN.loop		movq	mm0, [esi + 8*ecx]		; mm0 = [1st]		movq	mm3, [esi + 8*ecx + 8]	; 		pxor	mm1, mm1		; mm1 = 0		pxor	mm4, mm4		;		pcmpgtw	mm1, mm0		; mm1 = (0 > mm0)		pcmpgtw	mm4, mm3		; 		pxor	mm0, mm1		; mm0 = |mm0|		pxor	mm3, mm4		; 		psubw	mm0, mm1		; displace		psubw	mm3, mm4		;		psllw   mm0, 4		psllw   mm3, 4				movq    mm2, [inter_matrix + 8*ecx]		psrlw   mm2, 1		paddw   mm0, mm2				movq    mm2, [inter_matrix_fix + ecx*8]		pmulhw  mm0, mm2		; (level<<4 + inter_matrix[i]>>1) / inter_matrix[i]		movq    mm2, [inter_matrix + 8*ecx + 8]		psrlw   mm2, 1		paddw   mm3, mm2		movq    mm2, [inter_matrix_fix + ecx*8 + 8]		pmulhw  mm3, mm2		pmulhw	mm0, mm7		; mm0 = (mm0 / 2Q) >> 16		pmulhw	mm3, mm7		; 		psrlw   mm0, 1			; additional shift by 1 => 16 + 1 = 17		psrlw   mm3, 1				paddw	mm5, mm0		; sum += mm0		pxor	mm0, mm1		; mm0 *= sign(mm0)		paddw	mm5, mm3		;		pxor	mm3, mm4		;		psubw	mm0, mm1		; undisplace		psubw	mm3, mm4		movq	[edi + 8*ecx], mm0		movq	[edi + 8*ecx + 8], mm3		add ecx, 2			cmp ecx, 16		jnz near .loop.done		pmaddwd mm5, [mmx_one]		movq    mm0, mm5		psrlq   mm5, 32		paddd   mm0, mm5		movd	eax, mm0		; return sum		pop	edi		pop	esi		pop ecx		retalign ALIGN.q1loop		movq	mm0, [esi + 8*ecx]		; mm0 = [1st]		movq	mm3, [esi + 8*ecx+ 8]				; 		pxor	mm1, mm1		; mm1 = 0		pxor	mm4, mm4		;		pcmpgtw	mm1, mm0		; mm1 = (0 > mm0)		pcmpgtw	mm4, mm3		;		pxor	mm0, mm1		; mm0 = |mm0|		pxor	mm3, mm4		; 		psubw	mm0, mm1		; displace		psubw	mm3, mm4		;				psllw   mm0, 4		psllw   mm3, 4				movq    mm2, [inter_matrix + 8*ecx]		psrlw   mm2, 1		paddw   mm0, mm2				movq    mm2, [inter_matrix_fix + ecx*8]		pmulhw  mm0, mm2		; (level<<4 + inter_matrix[i]>>1) / inter_matrix[i]		movq    mm2, [inter_matrix + 8*ecx + 8]		psrlw   mm2, 1		paddw   mm3, mm2		movq    mm2, [inter_matrix_fix + ecx*8 + 8]		pmulhw  mm3, mm2 		psrlw	mm0, 1			; mm0 >>= 1   (/2)		psrlw	mm3, 1			;		paddw	mm5, mm0		; sum += mm0		pxor	mm0, mm1		; mm0 *= sign(mm0)		paddw	mm5, mm3		;		pxor	mm3, mm4		;		psubw	mm0, mm1		; undisplace		psubw	mm3, mm4		movq	[edi + 8*ecx], mm0		movq	[edi + 8*ecx + 8], mm3				add ecx,2		cmp ecx,16		jnz	near .q1loop		jmp	.donealign ALIGN.q2loop		movq	mm0, [esi + 8*ecx]		; mm0 = [1st]		movq	mm3, [esi + 8*ecx+ 8]				; 		pxor	mm1, mm1		; mm1 = 0		pxor	mm4, mm4		;		pcmpgtw	mm1, mm0		; mm1 = (0 > mm0)		pcmpgtw	mm4, mm3		;		pxor	mm0, mm1		; mm0 = |mm0|		pxor	mm3, mm4		; 		psubw	mm0, mm1		; displace		psubw	mm3, mm4		;				psllw   mm0, 4		psllw   mm3, 4				movq    mm2, [inter_matrix + 8*ecx]		psrlw   mm2, 1		paddw   mm0, mm2				movq    mm2, [inter_matrix_fix + ecx*8]		pmulhw  mm0, mm2		; (level<<4 + inter_matrix[i]>>1) / inter_matrix[i]		movq    mm2, [inter_matrix + 8*ecx + 8]		psrlw   mm2, 1		paddw   mm3, mm2		movq    mm2, [inter_matrix_fix + ecx*8 + 8]		pmulhw  mm3, mm2 		psrlw	mm0, 2			; mm0 >>= 1   (/2)		psrlw	mm3, 2			;		paddw	mm5, mm0		; sum += mm0		pxor	mm0, mm1		; mm0 *= sign(mm0)		paddw	mm5, mm3		;		pxor	mm3, mm4		;		psubw	mm0, mm1		; undisplace		psubw	mm3, mm4		movq	[edi + 8*ecx], mm0		movq	[edi + 8*ecx + 8], mm3				add ecx,2		cmp ecx,16		jnz	near .q2loop		jmp	.done;===========================================================================;; void dequant4_intra_mmx(int16_t *data,;                    const int16_t const *coeff,;                    const uint32_t quant,;                    const uint32_t dcscalar);;;===========================================================================  ;   Note: in order to saturate 'easily', we pre-shift the quantifier  ; by 4. Then, the high-word of (coeff[]*matrix[i]*quant) are used to  ; build a saturating mask. It is non-zero only when an overflow occured.  ; We thus avoid packing/unpacking toward double-word.  ; Moreover, we perform the mult (matrix[i]*quant) first, instead of, e.g.,  ; (coeff[i]*matrix[i]). This is less prone to overflow if coeff[] are not  ; checked. Input ranges are: coeff in [-127,127], inter_matrix in [1..255],a  ; and quant in [1..31].   ;  ; The original loop is:  ;%if 0  movq mm0, [ecx+8*eax + 8*16]   ; mm0 = coeff[i]  pxor mm1, mm1  pcmpgtw mm1, mm0  pxor mm0, mm1     ; change sign if negative  psubw mm0, mm1    ; -> mm0 = abs(coeff[i]), mm1 = sign of coeff[i]  movq mm2, mm7     ; mm2 = quant  pmullw mm2,  [intra_matrix + 8*eax + 8*16 ]  ; matrix[i]*quant.  movq mm6, mm2   pmulhw mm2, mm0   ; high of coeff*(matrix*quant)  (should be 0 if no overflow)  pmullw mm0, mm6   ; low  of coeff*(matrix*quant)  pxor mm5, mm5  pcmpgtw mm2, mm5  ; otherflow?  psrlw mm2, 5      ; =0 if no clamp, 2047 otherwise  psrlw mm0, 5  paddw mm0, mm1    ; start restoring sign  por mm0, mm2      ; saturate to 2047 if needed  pxor mm0, mm1     ; finish negating back  movq [edx + 8*eax + 8*16], mm0   ; data[i]  add eax, 1%endif  ;********************************************************************align 16cglobal dequant4_intra_mmxdequant4_intra_mmx:  mov edx, [esp+4]  ; data  mov ecx, [esp+8]  ; coeff  mov eax, [esp+12] ; quant  movq mm7, [mmx_mul_quant  + eax*8 - 8]  mov eax, -16   ; to keep aligned, we regularly process coeff[0]  psllw mm7, 2   ; << 2. See comment.  pxor mm6, mm6   ; this is a NOPalign 16.loop  movq mm0, [ecx+8*eax + 8*16]   ; mm0 = c  = coeff[i]  movq mm3, [ecx+8*eax + 8*16 +8]; mm3 = c' = coeff[i+1]  pxor mm1, mm1  pxor mm4, mm4  pcmpgtw mm1, mm0  ; mm1 = sgn(c)  movq mm2, mm7     ; mm2 = quant    pcmpgtw mm4, mm3  ; mm4 = sgn(c')  pmullw mm2,  [intra_matrix + 8*eax + 8*16 ]  ; matrix[i]*quant  pxor mm0, mm1     ; negate if negative  pxor mm3, mm4     ; negate if negative    psubw mm0, mm1  psubw mm3, mm4      ; we're short on register, here. Poor pairing...  movq mm5, mm2   pmullw mm2, mm0   ; low  of coeff*(matrix*quant)  pmulhw mm0, mm5   ; high of coeff*(matrix*quant)  movq mm5, mm7     ; mm2 = quant  pmullw mm5,  [intra_matrix + 8*eax + 8*16 +8]  ; matrix[i+1]*quant  movq mm6, mm5  add eax,2   ; z-flag will be tested later  pmullw mm6, mm3   ; low  of coeff*(matrix*quant)  pmulhw mm3, mm5   ; high of coeff*(matrix*quant)  pcmpgtw mm0, [zero]  paddusw mm2, mm0  psrlw mm2, 5  pcmpgtw mm3, [zero]  paddusw mm6, mm3  psrlw mm6, 5  pxor mm2, mm1  ; start negating back  pxor mm6, mm4  ; start negating back  psubusw mm1, mm0  psubusw mm4, mm3  psubw mm2, mm1 ; finish negating back    psubw mm6, mm4 ; finish negating back    movq [edx + 8*eax + 8*16   -2*8   ], mm2   ; data[i]  movq [edx + 8*eax + 8*16   -2*8 +8], mm6   ; data[i+1]  jnz near .loop    ; deal with DC  movd mm0, [ecx]  pmullw mm0, [esp+16]  ; dcscalar  movq mm2, [mmx_32767_minus_2047]  paddsw mm0, mm2  psubsw mm0, mm2  movq mm2, [mmx_32768_minus_2048]  psubsw mm0, mm2  paddsw mm0, mm2  movd eax, mm0  mov [edx], ax  ret;===========================================================================;; void dequant4_inter_mmx(int16_t * data,;                    const int16_t * const coeff,;                    const uint32_t quant);;;===========================================================================    ; Note:  We use (2*c + sgn(c) - sgn(-c)) as multiplier    ; so we handle the 3 cases: c<0, c==0, and c>0 in one shot.    ; sgn(x) is the result of 'pcmpgtw 0,x':  0 if x>=0, -1 if x<0.    ; It's mixed with the extraction of the absolute value.align 16cglobal dequant4_inter_mmxdequant4_inter_mmx:  mov    edx, [esp+ 4]        ; data  mov    ecx, [esp+ 8]        ; coeff  mov    eax, [esp+12]        ; quant  movq mm7, [mmx_mul_quant  + eax*8 - 8]  mov eax, -16  paddw mm7, mm7    ; << 1  pxor mm6, mm6 ; mismatch sumalign 16.loop  movq mm0, [ecx+8*eax + 8*16   ]   ; mm0 = coeff[i]  movq mm2, [ecx+8*eax + 8*16 +8]   ; mm2 = coeff[i+1]  add eax,2  pxor mm1, mm1  pxor mm3, mm3  pcmpgtw mm1, mm0  ; mm1 = sgn(c)    (preserved)  pcmpgtw mm3, mm2  ; mm3 = sgn(c')   (preserved)  paddsw mm0, mm1   ; c += sgn(c)  paddsw mm2, mm3   ; c += sgn(c')  paddw mm0, mm0    ; c *= 2  paddw mm2, mm2    ; c'*= 2  pxor mm4, mm4  pxor mm5, mm5  psubw mm4, mm0    ; -c  psubw mm5, mm2    ; -c'  psraw mm4, 16     ; mm4 = sgn(-c)  psraw mm5, 16     ; mm5 = sgn(-c')  psubsw mm0, mm4   ; c  -= sgn(-c)  psubsw mm2, mm5   ; c' -= sgn(-c')  pxor mm0, mm1     ; finish changing sign if needed  pxor mm2, mm3     ; finish changing sign if needed    ; we're short on register, here. Poor pairing...  movq mm4, mm7     ; (matrix*quant)  pmullw mm4,  [inter_matrix + 8*eax + 8*16 -2*8]  movq mm5, mm4  pmulhw mm5, mm0   ; high of c*(matrix*quant)  pmullw mm0, mm4   ; low  of c*(matrix*quant)  movq mm4, mm7     ; (matrix*quant)  pmullw mm4,  [inter_matrix + 8*eax + 8*16 -2*8 + 8]  pcmpgtw mm5, [zero]  paddusw mm0, mm5  psrlw mm0, 5  pxor mm0, mm1     ; start restoring sign  psubusw mm1, mm5  movq mm5, mm4  pmulhw mm5, mm2   ; high of c*(matrix*quant)  pmullw mm2, mm4   ; low  of c*(matrix*quant)  psubw mm0, mm1    ; finish restoring sign  pcmpgtw mm5, [zero]  paddusw mm2, mm5  psrlw mm2, 5  pxor mm2, mm3    ; start restoring sign  psubusw mm3, mm5  psubw mm2, mm3   ; finish restoring sign  pxor mm6, mm0     ; mismatch control  movq [edx + 8*eax + 8*16 -2*8   ], mm0   ; data[i]  pxor mm6, mm2     ; mismatch control  movq [edx + 8*eax + 8*16 -2*8 +8], mm2   ; data[i+1]  jnz near .loop  ; mismatch control  movq mm0, mm6  psrlq mm0, 48  movq mm1, mm6  movq mm2, mm6  psrlq mm1, 32  pxor mm6, mm0  psrlq mm2, 16  pxor mm6, mm1  pxor mm6, mm2  movd eax, mm6  and eax, 1  xor eax, 1  xor word [edx + 2*63], ax  ret

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美mv和日韩mv国产网站| 亚洲欧美精品午睡沙发| 国产精品久久久久7777按摩| 亚洲国产精品久久久久秋霞影院 | 国产美女精品在线| 欧美丝袜丝交足nylons图片| 久久精品人人爽人人爽| 视频一区国产视频| 一本在线高清不卡dvd| 国产欧美一二三区| 美女在线视频一区| 在线不卡中文字幕| 亚洲一区二区在线免费观看视频 | 亚洲国产精品二十页| 麻豆91精品视频| 欧美日韩二区三区| 亚洲高清免费观看高清完整版在线观看 | 亚洲图片另类小说| 中日韩av电影| 国产欧美一区二区精品性色 | 精品一区二区三区在线视频| 色狠狠av一区二区三区| 国产精品久久久久一区二区三区共| 国产精品亚洲成人| 国产成人自拍网| 91小视频在线免费看| 久久蜜臀中文字幕| 日韩理论片中文av| 蜜臀精品一区二区三区在线观看 | 麻豆freexxxx性91精品| 国产91精品入口| 欧美三级一区二区| 久久久91精品国产一区二区三区| 综合久久一区二区三区| 日韩国产欧美三级| 成人av动漫在线| 欧美狂野另类xxxxoooo| 国产日韩精品一区二区三区在线| 亚洲高清免费在线| 成人综合在线观看| 欧美绝品在线观看成人午夜影视| 欧美国产精品v| 麻豆精品在线看| 色狠狠一区二区| 日本一区二区三区四区| 青青草国产精品97视觉盛宴| 爽好久久久欧美精品| 国产精品久久久久婷婷| 日韩色在线观看| 国产精品视频你懂的| 日韩精品欧美精品| 91国偷自产一区二区开放时间 | 久久精品男人天堂av| 午夜视频在线观看一区二区三区| 国产99久久久国产精品潘金网站| 欧美丰满美乳xxx高潮www| 亚洲精品乱码久久久久久久久| 精品一区二区三区在线视频| 欧美日韩一区不卡| 亚洲乱码国产乱码精品精可以看 | 中文字幕一区二区在线观看| 久久99精品国产麻豆婷婷| 欧美视频日韩视频在线观看| 亚洲视频在线观看一区| 国产成人精品一区二区三区四区 | 久久不见久久见免费视频1| 欧美日韩国产欧美日美国产精品| 成人欧美一区二区三区1314 | 91激情在线视频| 亚洲色图在线播放| 99国内精品久久| 国产精品久久久久9999吃药| 粉嫩13p一区二区三区| 久久精品男人的天堂| 国产精品一区二区在线看| 久久夜色精品一区| 国产在线观看一区二区| 久久久www成人免费毛片麻豆 | 国产日韩一级二级三级| 国产精品77777竹菊影视小说| 精品久久人人做人人爱| 寂寞少妇一区二区三区| 久久日韩粉嫩一区二区三区| 精品无码三级在线观看视频| 久久新电视剧免费观看| 国产精品一区免费视频| 欧美国产一区二区| 99久久伊人久久99| 中文字幕亚洲视频| 色www精品视频在线观看| 亚洲尤物在线视频观看| 欧美精品乱人伦久久久久久| 日韩二区三区四区| 久久久久久夜精品精品免费| 成人激情小说网站| 亚洲综合免费观看高清完整版在线| 精品视频1区2区| 九九热在线视频观看这里只有精品| 精品日韩在线观看| 波多野洁衣一区| 亚洲高清不卡在线观看| 日韩一区二区高清| 成人av网站免费观看| 亚洲国产裸拍裸体视频在线观看乱了 | 在线观看一区日韩| 国产真实乱偷精品视频免| 国产精品久久久久aaaa| 欧美精品日韩一区| 成人av高清在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久久蜜臀国产一区二区| 91丨九色丨蝌蚪丨老版| 欧美aⅴ一区二区三区视频| 国产精品理伦片| 日韩视频免费观看高清完整版| 99久久国产综合色|国产精品| 热久久久久久久| 一区二区三区在线视频播放| 精品欧美乱码久久久久久 | 美女视频黄免费的久久| 一区二区中文视频| 欧美一区二区视频观看视频| 成人高清免费在线播放| 久久66热偷产精品| 日韩精彩视频在线观看| 亚洲欧洲精品一区二区三区 | 婷婷综合在线观看| 中文字幕一区二区在线观看| 欧美精品一区二区三区蜜桃视频| 在线视频一区二区三区| 国产99久久久国产精品| 精品伊人久久久久7777人| 亚洲国产日韩在线一区模特| 国产精品嫩草影院av蜜臀| 精品国一区二区三区| 欧美人狂配大交3d怪物一区| 色婷婷综合久色| 成人免费毛片a| 国产精品一区免费视频| 久久99国产精品尤物| 日本不卡视频在线| 午夜视频在线观看一区二区 | 99久久精品99国产精品| 成人免费电影视频| 丁香网亚洲国际| 国产成人丝袜美腿| 国产成人精品影视| 成人一级黄色片| 国产精品一区二区不卡| 国产精品一二三四区| 久久99久国产精品黄毛片色诱| 日韩av不卡在线观看| 日韩一区精品字幕| 日本午夜一区二区| 久久成人精品无人区| 精品午夜久久福利影院| 国产一区二区精品久久91| 久久精品72免费观看| 国产精华液一区二区三区| 国产精品一卡二| a亚洲天堂av| 欧美在线观看视频一区二区 | 国产麻豆精品在线| 国产露脸91国语对白| 丰满放荡岳乱妇91ww| 91美女片黄在线| 日本精品裸体写真集在线观看| 日本黄色一区二区| 欧美一级欧美三级| 久久久久久久国产精品影院| 中文字幕电影一区| 亚洲综合精品自拍| 久久国产免费看| 成人高清av在线| 欧美日韩精品二区第二页| 日韩免费视频一区二区| 国产精品三级av| 亚洲成人一区在线| 韩国中文字幕2020精品| 99久久婷婷国产综合精品| 欧美日本韩国一区| 国产女人水真多18毛片18精品视频| 中文字幕亚洲不卡| 日韩高清欧美激情| 成人午夜电影网站| 欧洲另类一二三四区| 欧美电影免费观看高清完整版在线 | 欧美一区二区三区在线视频| 久久精品视频在线看| 一区二区三区加勒比av| 国模冰冰炮一区二区| 91在线精品一区二区| 欧美一级理论片| √…a在线天堂一区| 美女脱光内衣内裤视频久久网站 | 欧美日韩成人在线| 久久精品欧美一区二区三区不卡 | 另类人妖一区二区av| 色哟哟国产精品免费观看| 精品国一区二区三区|