⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mc_sse2.asm

📁 由bmp生成mpeg2 的I_frame 数据
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		shr        ecx, 3
		mov        edx, edi
;-------------------------------------------------------------------
; loop
prediction_w16_fh_2nd_loop:
		dec        ecx
;-------------------------------------------------------------------
; core
		movdqu     xmm0, [esi]
		add        esi, eax
		movdqu     xmm1, [esi]
		add        esi, eax
		movdqu     xmm2, [esi]
		add        esi, eax
		movdqu     xmm3, [esi]
		add        esi, eax
		movdqu     xmm4, [esi]
		pavgb      xmm0, xmm1
		add        esi, eax
		movdqu     xmm5, [esi]
		pavgb      xmm1, xmm2
		add        esi, eax
		movdqu     xmm6, [esi]
		pavgb      xmm2, xmm3
		add        esi, eax
		movdqu     xmm7, [esi]
		pavgb      xmm3, xmm4
		add        esi, eax
		pavgb      xmm0, [edx]
		add        edx, ebx
		pavgb      xmm4, xmm5
		movdqa     [edi], xmm0
		movdqu     xmm0, [esi]
		add        edi, ebx
		pavgb      xmm1, [edx]
		add        edx, ebx
		pavgb      xmm5, xmm6
		movdqa     [edi], xmm1
		add        edi, ebx
		pavgb      xmm2, [edx]
		add        edx, ebx
		pavgb      xmm6, xmm7
		movdqa     [edi], xmm2
		add        edi, ebx
		pavgb      xmm3, [edx]
		add        edx, ebx
		pavgb      xmm7, xmm0
		movdqa     [edi], xmm3
		add        edi, ebx
		pavgb      xmm4, [edx]
		add        edx, ebx
		pavgb      xmm5, [edx]
		add        edx, ebx
		pavgb      xmm6, [edx]
		add        edx, ebx
		pavgb      xmm7, [edx]
		add        edx, ebx
		movdqa     [edi], xmm4
		add        edi, ebx
		movdqa     [edi], xmm5
		add        edi, ebx
		movdqa     [edi], xmm6
		add        edi, ebx
		movdqa     [edi], xmm7
		add        edi, ebx
;-------------------------------------------------------------------
; 儖乕僾廔抂僠僃僢僋
		test       ecx, ecx
		jnz        prediction_w16_fh_2nd_loop
;-------------------------------------------------------------------
; 儗僕僗僞暅尦側偳屻巒枛
		pop        eax
		pop        ebx
		pop        ecx
		pop        edx
		pop        edi
		pop        esi

		ret        20

_prediction_w16_fh_2nd_sse2@20 ENDP
;-------------------------------------------------------------------
; 廔椆

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 摦偒曗彏乮width 16, Half/Full, 1st乯悈暯 Half, 悅捈 Full
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUBLIC              C _prediction_w16_hf_1st_sse2@20
;      void __stdcall  prediction_w16_hf_1st_sse2(
; [esp+ 4] unsigned char *in,
; [esp+ 8] unsigned char *out,
; [esp+12] int            in_step,
; [esp+16] int            out_step,
; [esp+20] int            height
; )
_prediction_w16_hf_1st_sse2@20 PROC
;-------------------------------------------------------------------
; 巊梡偡傞儗僕僗僞
; esi - 擖椡
; edi - 弌椡
; ecx - 儖乕僾僇僂儞僞
; eax - 擖椡僗僥僢僾
; ebx - 弌椡僗僥僢僾
;-------------------------------------------------------------------
; 儗僕僗僞偺戅旔
		push       esi
		push       edi
		push       ecx
		push       ebx
		push       eax
;-------------------------------------------------------------------
; 堷悢偐傜僨乕僞傪庴偗庢偭偰偍偔
		mov        esi, [esp+20+ 4]
		mov        edi, [esp+20+ 8]
		mov        eax, [esp+20+12]
		mov        ebx, [esp+20+16]
		mov        ecx, [esp+20+20]
;-------------------------------------------------------------------
; 壓弨旛
		shr        ecx, 2
;-------------------------------------------------------------------
; loop
prediction_w16_hf_1st_loop:
		dec        ecx
;-------------------------------------------------------------------
; core
		movdqu     xmm0, [esi]
		movdqu     xmm1, [esi+1]
		add        esi, eax
		movdqu     xmm2, [esi]
		movdqu     xmm3, [esi+1]
		add        esi, eax
		pavgb      xmm0, xmm1
		movdqu     xmm4, [esi]
		movdqu     xmm5, [esi+1]
		add        esi, eax
		pavgb      xmm2, xmm3
		movdqu     xmm6, [esi]
		movdqu     xmm7, [esi+1]
		add        esi, eax
		pavgb      xmm4, xmm5
		movdqa     [edi], xmm0
		add        edi, ebx
		pavgb      xmm6, xmm7
		movdqa     [edi], xmm2
		add        edi, ebx
		movdqa     [edi], xmm4
		add        edi, ebx
		movdqa     [edi], xmm6
		add        edi, ebx
;-------------------------------------------------------------------
; 儖乕僾廔抂僠僃僢僋
		test       ecx, ecx
		jnz        prediction_w16_hf_1st_loop
;-------------------------------------------------------------------
; 儗僕僗僞暅尦側偳屻巒枛
		pop        eax
		pop        ebx
		pop        ecx
		pop        edi
		pop        esi

		ret        20

_prediction_w16_hf_1st_sse2@20 ENDP
;-------------------------------------------------------------------
; 廔椆


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 摦偒曗彏乮width 16, Half/Full, 2nd乯悈暯 Half, 悅捈 Full
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUBLIC              C _prediction_w16_hf_2nd_sse2@20
;      void __stdcall  prediction_w16_hf_2nd_sse2(
; [esp+ 4] unsigned char *in,
; [esp+ 8] unsigned char *out,
; [esp+12] int            in_step,
; [esp+16] int            out_step,
; [esp+20] int            height
; )
_prediction_w16_hf_2nd_sse2@20 PROC
;-------------------------------------------------------------------
; 巊梡偡傞儗僕僗僞
; esi - 擖椡
; edi - 弌椡
; ecx - 儖乕僾僇僂儞僞
; eax - 擖椡僗僥僢僾
; ebx - 弌椡僗僥僢僾
;-------------------------------------------------------------------
; 儗僕僗僞偺戅旔
		push       esi
		push       edi
		push       edx
		push       ecx
		push       ebx
		push       eax
;-------------------------------------------------------------------
; 堷悢偐傜僨乕僞傪庴偗庢偭偰偍偔
		mov        esi, [esp+24+ 4]
		mov        edi, [esp+24+ 8]
		mov        eax, [esp+24+12]
		mov        ebx, [esp+24+16]
		mov        ecx, [esp+24+20]
;-------------------------------------------------------------------
; 壓弨旛
		shr        ecx, 2
		mov        edx, edi
;-------------------------------------------------------------------
; loop
prediction_w16_hf_2nd_loop:
		dec        ecx
;-------------------------------------------------------------------
; core
		movdqu     xmm0, [esi]
		movdqu     xmm1, [esi+1]
		add        esi, eax
		movdqu     xmm2, [esi]
		movdqu     xmm3, [esi+1]
		add        esi, eax
		movdqu     xmm4, [esi]
		movdqu     xmm5, [esi+1]
		pavgb      xmm0, xmm1
		add        esi, eax
		movdqu     xmm6, [esi]
		movdqu     xmm7, [esi+1]
		pavgb      xmm2, xmm3
		add        esi, eax
		pavgb      xmm0, [edx]
		add        edx, ebx
		pavgb      xmm4, xmm5
		movdqa     [edi], xmm0
		add        edi, ebx
		pavgb      xmm2, [edx]
		add        edx, ebx
		pavgb      xmm6, xmm7
		movdqa     [edi], xmm2
		add        edi, ebx
		pavgb      xmm4, [edx]
		add        edx, ebx
		pavgb      xmm6, [edx]
		add        edx, ebx
		movdqa     [edi], xmm4
		add        edi, ebx
		movdqa     [edi], xmm6
		add        edi, ebx
;-------------------------------------------------------------------
; 儖乕僾廔抂僠僃僢僋
		test       ecx, ecx
		jnz        prediction_w16_hf_2nd_loop
;-------------------------------------------------------------------
; 儗僕僗僞暅尦側偳屻巒枛
		pop        eax
		pop        ebx
		pop        ecx
		pop        edx
		pop        edi
		pop        esi

		ret        20

_prediction_w16_hf_2nd_sse2@20 ENDP
;-------------------------------------------------------------------
; 廔椆


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 摦偒曗彏乮width 16, Full/Full, 2nd乯悈暯 Full, 悅捈 Full
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 婎杮曽恓
; 16 bit 惛搙偱 4 暲楍墘嶼
;-------------------------------------------------------------------
PUBLIC              C _prediction_w16_ff_2nd_sse2@20
;      void __stdcall  prediction_w16_ff_2nd_sse2(
; [esp+ 4] unsigned char *in,
; [esp+ 8] unsigned char *out,
; [esp+12] int            in_step,
; [esp+16] int            out_step,
; [esp+20] int            height
; )
_prediction_w16_ff_2nd_sse2@20 PROC
;-------------------------------------------------------------------
; 巊梡偡傞儗僕僗僞
; esi - 擖椡
; edi - 弌椡
; ecx - 儖乕僾僇僂儞僞
; eax - 擖椡僗僥僢僾
; ebx - 弌椡僗僥僢僾
;-------------------------------------------------------------------
; 儗僕僗僞偺戅旔
		push       esi
		push       edi
		push       edx
		push       ecx
		push       ebx
		push       eax
;-------------------------------------------------------------------
; 堷悢偐傜僨乕僞傪庴偗庢偭偰偍偔
		mov        esi, [esp+24+ 4]
		mov        edi, [esp+24+ 8]
		mov        eax, [esp+24+12]
		mov        ebx, [esp+24+16]
		mov        ecx, [esp+24+20]
;-------------------------------------------------------------------
; 壓弨旛
		shr        ecx, 3
		mov        edx, edi
;-------------------------------------------------------------------
; loop
prediction_w16_ff_2nd_loop:
		dec        ecx
;-------------------------------------------------------------------
; core
		movdqu     xmm0, [esi]
		add        esi, eax
		movdqu     xmm1, [esi]
		add        esi, eax
		movdqu     xmm2, [esi]
		add        esi, eax
		movdqu     xmm3, [esi]
		add        esi, eax
		pavgb      xmm0, [edx]
		add        edx, ebx
		movdqu     xmm4, [esi]
		add        esi, eax
		pavgb      xmm1, [edx]
		add        edx, ebx
		movdqu     xmm5, [esi]
		add        esi, eax
		pavgb      xmm2, [edx]
		add        edx, ebx
		movdqu     xmm6, [esi]
		add        esi, eax
		pavgb      xmm3, [edx]
		add        edx, ebx
		movdqu     xmm7, [esi]
		add        esi, eax
		pavgb      xmm4, [edx]
		add        edx, ebx
		pavgb      xmm5, [edx]
		add        edx, ebx
		pavgb      xmm6, [edx]
		add        edx, ebx
		pavgb      xmm7, [edx]
		add        edx, ebx
		movdqa     [edi], xmm0
		add        edi, ebx
		movdqa     [edi], xmm1		
		add        edi, ebx
		movdqa     [edi], xmm2		
		add        edi, ebx
		movdqa     [edi], xmm3		
		add        edi, ebx
		movdqa     [edi], xmm4		
		add        edi, ebx
		movdqa     [edi], xmm5		
		add        edi, ebx
		movdqa     [edi], xmm6		
		add        edi, ebx
		movdqa     [edi], xmm7		
		add        edi, ebx
;-------------------------------------------------------------------
; 儖乕僾廔抂僠僃僢僋
		test       ecx, ecx
		jnz        prediction_w16_ff_2nd_loop
;-------------------------------------------------------------------
; 儗僕僗僞暅尦側偳屻巒枛
		pop        eax
		pop        ebx
		pop        ecx
		pop        edx
		pop        edi
		pop        esi

		ret        20

_prediction_w16_ff_2nd_sse2@20 ENDP
;-------------------------------------------------------------------
; 廔椆

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -