ref: ab41e69a5ebfdcfb3c83afc3b86ece4d99fd9f8f
dir: /codec/common/x86/deblock.asm/
;*! ;* \copy ;* Copyright (c) 2009-2013, Cisco Systems ;* All rights reserved. ;* ;* Redistribution and use in source and binary forms, with or without ;* modification, are permitted provided that the following conditions ;* are met: ;* ;* * Redistributions of source code must retain the above copyright ;* notice, this list of conditions and the following disclaimer. ;* ;* * Redistributions in binary form must reproduce the above copyright ;* notice, this list of conditions and the following disclaimer in ;* the documentation and/or other materials provided with the ;* distribution. ;* ;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, ;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER ;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ;* POSSIBILITY OF SUCH DAMAGE. ;* ;* ;* deblock.asm ;* ;* Abstract ;* edge loop ;* ;* History ;* 08/07/2009 Created ;* ;* ;*************************************************************************/ %include "asm_inc.asm" ;******************************************************************************* ; Macros and other preprocessor constants ;******************************************************************************* SECTION .rodata align=16 ALIGN 16 FOUR_16B_SSE2: dw 4, 4, 4, 4, 4, 4, 4, 4 SECTION .text %ifdef WIN64 WELS_EXTERN DeblockLumaLt4V_ssse3 push rbp mov r11,[rsp + 16 + 20h] ; pTC PUSH_XMM 16 sub rsp,1B0h lea rbp,[rsp+20h] movd xmm4,r8d movd xmm2,r9d mov qword [rbp+180h],r12 mov r10,rcx movsxd r12,edx add edx,edx movsxd rdx,edx sub r10,r12 movsx r8d,byte [r11] pxor xmm3,xmm3 punpcklwd xmm2,xmm2 movaps [rbp+50h],xmm14 lea rax,[r12+r12*2] movdqa xmm14,[rdx+rcx] neg rax pshufd xmm0,xmm2,0 movd xmm2,r8d movsx edx,byte [r11+1] movsx r8d,byte [r11+2] movsx r11d,byte [r11+3] movaps [rbp+70h],xmm12 movd xmm1,edx movaps [rbp+80h],xmm11 movd xmm12,r8d movd xmm11,r11d movdqa xmm5, [rax+rcx] lea rax,[r12+r12] punpcklwd xmm12,xmm12 neg rax punpcklwd xmm11,xmm11 movaps [rbp],xmm8 movdqa xmm8, [r10] punpcklwd xmm2,xmm2 punpcklwd xmm1,xmm1 punpcklqdq xmm12,xmm12 punpcklqdq xmm11,xmm11 punpcklqdq xmm2,xmm2 punpcklqdq xmm1,xmm1 shufps xmm12,xmm11,88h movdqa xmm11,xmm8 movaps [rbp+30h],xmm9 movdqa xmm9,[rcx] shufps xmm2,xmm1,88h movdqa xmm1,xmm5 punpcklbw xmm11,xmm3 movaps [rbp+20h],xmm6 movaps [rbp+60h],xmm13 movdqa xmm13,xmm11 movaps [rbp+90h],xmm10 movdqa xmm10,xmm9 movdqa xmm6,[rax+rcx] punpcklbw xmm1,xmm3 movaps [rbp+0A0h],xmm12 psubw xmm13,xmm1 movaps [rbp+40h],xmm15 movdqa xmm15,xmm14 movaps [rbp+10h],xmm7 movdqa xmm7,xmm6 punpcklbw xmm10,xmm3 movdqa xmm12,[r12+rcx] punpcklbw xmm7,xmm3 punpcklbw xmm12,xmm3 punpcklbw xmm15,xmm3 pabsw xmm3,xmm13 movdqa xmm13,xmm10 psubw xmm13,xmm15 movdqa [rbp+0F0h],xmm15 pabsw xmm15,xmm13 movdqa xmm13,xmm11 movdqa [rbp+0B0h],xmm1 movdqa xmm1,xmm0 pavgw xmm13,xmm10 pcmpgtw xmm1,xmm3 movdqa [rbp+120h],xmm13 movaps xmm13,xmm2 punpcklwd xmm4,xmm4 movdqa xmm3,xmm0 movdqa [rbp+100h],xmm1 psubw xmm13,xmm1 movdqa xmm1,xmm10 pcmpgtw xmm3,xmm15 pshufd xmm4,xmm4,0 psubw xmm1,xmm11 movdqa [rbp+0D0h],xmm10 psubw xmm13,xmm3 movdqa [rbp+110h],xmm3 pabsw xmm15,xmm1 movdqa xmm3,xmm4 psubw xmm10,xmm12 pcmpgtw xmm3,xmm15 pabsw xmm15,xmm10 movdqa xmm10,xmm0 psllw xmm1,2 movdqa [rbp+0C0h],xmm11 psubw xmm11,xmm7 pcmpgtw xmm10,xmm15 pabsw xmm11,xmm11 movdqa xmm15,xmm0 pand xmm3,xmm10 pcmpgtw xmm15,xmm11 movaps xmm11,xmm2 pxor xmm10,xmm10 pand xmm3,xmm15 pcmpgtw xmm11,xmm10 pcmpeqw xmm10,xmm2 por xmm11,xmm10 pand xmm3,xmm11 movdqa xmm11,xmm7 psubw xmm11,xmm12 pxor xmm15,xmm15 paddw xmm11,xmm1 psubw xmm15,xmm13 movdqa [rbp+0E0h],xmm12 paddw xmm11,[FOUR_16B_SSE2] pxor xmm12,xmm12 psraw xmm11,3 punpckhbw xmm8,xmm12 pmaxsw xmm15,xmm11 punpckhbw xmm5,xmm12 movdqa xmm11,xmm8 pminsw xmm13,xmm15 psubw xmm11,xmm5 punpckhbw xmm9,xmm12 pand xmm13,xmm3 movdqa [rbp+130h],xmm13 pabsw xmm13,xmm11 punpckhbw xmm14,xmm12 movdqa xmm11,xmm9 psubw xmm11,xmm14 movdqa xmm15,xmm0 movdqa [rbp+140h],xmm14 pabsw xmm14,xmm11 movdqa xmm11,xmm8 pcmpgtw xmm15,xmm14 movdqa xmm1,[r12+rcx] pavgw xmm11,xmm9 movdqa [rbp+170h],xmm11 movdqa xmm10,xmm9 punpckhbw xmm6,xmm12 psubw xmm10,xmm8 punpckhbw xmm1,xmm12 movdqa xmm12,xmm0 movaps xmm11,[rbp+0A0h] pcmpgtw xmm12,xmm13 movaps xmm13,xmm11 psubw xmm13,xmm12 movdqa [rbp+160h],xmm15 psubw xmm13,xmm15 movdqa xmm15,xmm9 psubw xmm15,xmm1 movdqa [rbp+150h],xmm12 pabsw xmm12,xmm10 pabsw xmm14,xmm15 movdqa xmm15,xmm8 pcmpgtw xmm4,xmm12 movdqa xmm12,xmm0 psubw xmm15,xmm6 pcmpgtw xmm12,xmm14 pabsw xmm14,xmm15 psllw xmm10,2 pcmpgtw xmm0,xmm14 movdqa xmm14,xmm6 psubw xmm14,xmm1 pand xmm4,xmm12 paddw xmm14,xmm10 pand xmm4,xmm0 paddw xmm14,[FOUR_16B_SSE2] pxor xmm15,xmm15 movaps xmm12,xmm11 psubw xmm15,xmm13 pxor xmm0,xmm0 psraw xmm14,3 pcmpgtw xmm12,xmm0 pcmpeqw xmm0,xmm11 pmaxsw xmm15,xmm14 por xmm12,xmm0 movdqa xmm0,[rbp+120h] pminsw xmm13,xmm15 movdqa xmm15,[rbp+0B0h] movdqa xmm10,xmm7 pand xmm4,xmm12 paddw xmm15,xmm0 pxor xmm12,xmm12 paddw xmm10,xmm7 movdqa xmm14,xmm12 psubw xmm15,xmm10 psubw xmm14,xmm2 psraw xmm15,1 pmaxsw xmm15,xmm14 movdqa xmm10,xmm6 pminsw xmm15,xmm2 paddw xmm10,xmm6 pand xmm15,xmm3 psubw xmm12,xmm11 pand xmm15,[rbp+100h] pand xmm13,xmm4 paddw xmm7,xmm15 paddw xmm8,xmm13 movdqa xmm15,[rbp+170h] psubw xmm9,xmm13 paddw xmm5,xmm15 psubw xmm5,xmm10 psraw xmm5,1 pmaxsw xmm5,xmm12 pminsw xmm5,xmm11 pand xmm5,xmm4 pand xmm5,[rbp+150h] paddw xmm6,xmm5 movdqa xmm5,[rbp+0C0h] packuswb xmm7,xmm6 movdqa xmm6,[rbp+130h] paddw xmm5,xmm6 packuswb xmm5,xmm8 movdqa xmm8,[rbp+0D0h] psubw xmm8,xmm6 movdqa xmm6,[rbp+0F0h] paddw xmm6,xmm0 movdqa xmm0,[rbp+0E0h] packuswb xmm8,xmm9 movdqa xmm9,xmm0 paddw xmm9,xmm0 psubw xmm6,xmm9 psraw xmm6,1 pmaxsw xmm14,xmm6 pminsw xmm2,xmm14 pand xmm2,xmm3 pand xmm2,[rbp+110h] paddw xmm0,xmm2 movdqa xmm2,[rbp+140h] paddw xmm2,xmm15 movdqa xmm15,xmm1 paddw xmm15,xmm1 psubw xmm2,xmm15 psraw xmm2,1 pmaxsw xmm12,xmm2 pminsw xmm11,xmm12 pand xmm11,xmm4 pand xmm11,[rbp+160h] paddw xmm1,xmm11 movdqa [rax+rcx],xmm7 movdqa [r10],xmm5 packuswb xmm0,xmm1 movdqa [rcx],xmm8 movdqa [r12+rcx],xmm0 mov r12,qword [rbp+180h] lea rsp,[rbp+190h] POP_XMM pop rbp ret WELS_EXTERN DeblockLumaEq4V_ssse3 mov rax,rsp push rbx push rbp push rsi push rdi sub rsp,1D8h movaps [rax-38h],xmm6 movaps [rax-48h],xmm7 movaps [rax-58h],xmm8 pxor xmm1,xmm1 movsxd r10,edx mov rbp,rcx mov r11d,r8d mov rdx,rcx mov rdi,rbp mov rbx,rbp movdqa xmm5,[rbp] movaps [rax-68h],xmm9 movaps [rax-78h],xmm10 punpcklbw xmm5,xmm1 movaps [rax-88h],xmm11 movaps [rax-98h],xmm12 movaps [rax-0A8h],xmm13 movaps [rax-0B8h],xmm14 movdqa xmm14,[r10+rbp] movaps [rax-0C8h],xmm15 lea eax,[r10*4] movsxd r8,eax lea eax,[r10+r10*2] movsxd rcx,eax lea eax,[r10+r10] sub rdx,r8 punpcklbw xmm14,xmm1 movdqa [rsp+90h],xmm5 movdqa [rsp+30h],xmm14 movsxd rsi,eax movsx eax,r11w sub rdi,rcx sub rbx,rsi mov r8,rbp sub r8,r10 movd xmm0,eax movsx eax,r9w movdqa xmm12,[rdi] movdqa xmm6, [rsi+rbp] movdqa xmm13,[rbx] punpcklwd xmm0,xmm0 pshufd xmm11,xmm0,0 punpcklbw xmm13,xmm1 punpcklbw xmm6,xmm1 movdqa xmm8,[r8] movd xmm0,eax movdqa xmm10,xmm11 mov eax,2 punpcklbw xmm8,xmm1 punpcklbw xmm12,xmm1 cwde punpcklwd xmm0,xmm0 psraw xmm10,2 movdqa xmm1,xmm8 movdqa [rsp+0F0h],xmm13 movdqa [rsp+0B0h],xmm8 pshufd xmm7,xmm0,0 psubw xmm1,xmm13 movdqa xmm0,xmm5 movdqa xmm4,xmm7 movdqa xmm2,xmm7 psubw xmm0,xmm8 pabsw xmm3,xmm0 pabsw xmm0,xmm1 movdqa xmm1,xmm5 movdqa [rsp+40h],xmm7 movdqa [rsp+60h],xmm6 pcmpgtw xmm4,xmm0 psubw xmm1,xmm14 pabsw xmm0,xmm1 pcmpgtw xmm2,xmm0 pand xmm4,xmm2 movdqa xmm0,xmm11 pcmpgtw xmm0,xmm3 pand xmm4,xmm0 movd xmm0,eax movdqa [rsp+20h],xmm4 punpcklwd xmm0,xmm0 pshufd xmm2,xmm0,0 paddw xmm10,xmm2 movdqa [rsp+0A0h],xmm2 movdqa xmm15,xmm7 pxor xmm4,xmm4 movdqa xmm0,xmm8 psubw xmm0,xmm12 mov eax,4 pabsw xmm0,xmm0 movdqa xmm1,xmm10 cwde pcmpgtw xmm15,xmm0 pcmpgtw xmm1,xmm3 movdqa xmm3,xmm7 movdqa xmm7,[rdx] movdqa xmm0,xmm5 psubw xmm0,xmm6 pand xmm15,xmm1 punpcklbw xmm7,xmm4 movdqa xmm9,xmm15 pabsw xmm0,xmm0 psllw xmm7,1 pandn xmm9,xmm12 pcmpgtw xmm3,xmm0 paddw xmm7,xmm12 movd xmm0,eax pand xmm3,xmm1 paddw xmm7,xmm12 punpcklwd xmm0,xmm0 paddw xmm7,xmm12 pshufd xmm1,xmm0,0 paddw xmm7,xmm13 movdqa xmm0,xmm3 pandn xmm0,xmm6 paddw xmm7,xmm8 movdqa [rsp+70h],xmm1 paddw xmm7,xmm5 movdqa [rsp+120h],xmm0 movdqa xmm0,[rcx+rbp] punpcklbw xmm0,xmm4 paddw xmm7,xmm1 movdqa xmm4,xmm15 psllw xmm0,1 psraw xmm7,3 paddw xmm0,xmm6 pand xmm7,xmm15 paddw xmm0,xmm6 paddw xmm0,xmm6 paddw xmm0,xmm14 movdqa xmm6,xmm15 paddw xmm0,xmm5 pandn xmm6,xmm13 paddw xmm0,xmm8 paddw xmm0,xmm1 psraw xmm0,3 movdqa xmm1,xmm12 paddw xmm1,xmm13 pand xmm0,xmm3 movdqa [rsp+100h],xmm0 movdqa xmm0,xmm8 paddw xmm0,xmm5 paddw xmm1,xmm0 movdqa xmm0,xmm3 paddw xmm1,xmm2 psraw xmm1,2 pandn xmm0,xmm14 pand xmm4,xmm1 movdqa [rsp+0E0h],xmm0 movdqa xmm0,xmm5 paddw xmm0,xmm8 movdqa xmm1,[rsp+60h] paddw xmm1,xmm14 movdqa xmm14,xmm3 paddw xmm1,xmm0 movdqa xmm0,xmm8 paddw xmm0,[rsp+30h] paddw xmm1,xmm2 psraw xmm1,2 pand xmm14,xmm1 movdqa xmm1,xmm13 paddw xmm1,xmm13 paddw xmm1,xmm0 paddw xmm1,xmm2 psraw xmm1,2 movdqa xmm0,[rsp+30h] movdqa xmm2,xmm13 movdqa xmm5,xmm15 paddw xmm0,[rsp+70h] pandn xmm5,xmm1 paddw xmm2,xmm8 movdqa xmm8,[rsp+90h] movdqa xmm1,xmm12 paddw xmm2,xmm8 psllw xmm2,1 paddw xmm2,xmm0 paddw xmm1,xmm2 movdqa xmm0,xmm8 movdqa xmm8,xmm3 movdqa xmm2,[rsp+30h] paddw xmm0,xmm13 psraw xmm1,3 pand xmm15,xmm1 movdqa xmm1,xmm2 paddw xmm1,xmm2 paddw xmm2,[rsp+90h] paddw xmm2,[rsp+0B0h] paddw xmm1,xmm0 movdqa xmm0,xmm13 movdqa xmm13,[r8] paddw xmm0, [rsp+70h] paddw xmm1, [rsp+0A0h] psllw xmm2,1 paddw xmm2,xmm0 psraw xmm1,2 movdqa xmm0, [rdi] pandn xmm8,xmm1 movdqa xmm1, [rsp+60h] paddw xmm1,xmm2 movdqa xmm2, [rbx] psraw xmm1,3 pand xmm3,xmm1 movdqa xmm1, [rbp] movdqa [rsp+0D0h],xmm3 pxor xmm3,xmm3 punpckhbw xmm0,xmm3 punpckhbw xmm1,xmm3 punpckhbw xmm13,xmm3 movdqa [rsp+0C0h],xmm0 movdqa xmm0,[r10+rbp] movdqa [rsp],xmm1 punpckhbw xmm0,xmm3 punpckhbw xmm2,xmm3 movdqa [rsp+80h],xmm0 movdqa xmm0,[rsi+rbp] movdqa [rsp+10h],xmm13 punpckhbw xmm0,xmm3 movdqa [rsp+50h],xmm0 movdqa xmm0,xmm1 movdqa xmm1,xmm13 psubw xmm0,xmm13 psubw xmm1,xmm2 pabsw xmm3,xmm0 pabsw xmm0,xmm1 movdqa xmm1,[rsp] movdqa xmm13,[rsp+40h] movdqa [rsp+110h],xmm2 psubw xmm1, [rsp+80h] pcmpgtw xmm13,xmm0 pcmpgtw xmm11,xmm3 pabsw xmm0,xmm1 pcmpgtw xmm10,xmm3 movdqa xmm1, [rsp+40h] movdqa xmm2,xmm1 movdqa xmm3,xmm1 pcmpgtw xmm2,xmm0 movdqa xmm0, [rsp+10h] pand xmm13,xmm2 pand xmm13,xmm11 movdqa xmm11,[rsp+0C0h] psubw xmm0,xmm11 pabsw xmm0,xmm0 pcmpgtw xmm3,xmm0 pand xmm3,xmm10 movdqa xmm0,[rsp] psubw xmm0,[rsp+50h] movdqa xmm2,[rdx] pabsw xmm0,xmm0 por xmm7,xmm9 movdqa xmm9,[rsp+20h] pcmpgtw xmm1,xmm0 pand xmm9,xmm7 movdqa xmm7,[rsp+20h] movdqa xmm0,xmm7 pandn xmm0,xmm12 movdqa xmm12,[rsp+110h] pand xmm1,xmm10 movdqa xmm10,[rsp+70h] movdqa [rsp+40h],xmm1 movdqa xmm1,xmm13 por xmm9,xmm0 pxor xmm0,xmm0 por xmm4,xmm6 movdqa xmm6,xmm7 punpckhbw xmm2,xmm0 por xmm15,xmm5 movdqa xmm5,[rsp+20h] movdqa xmm0,xmm3 psllw xmm2,1 pandn xmm0,xmm11 pand xmm6,xmm4 movdqa xmm4,[rsp] paddw xmm2,xmm11 pand xmm5,xmm15 movdqa xmm15,[rsp+20h] paddw xmm2,xmm11 paddw xmm2,xmm11 paddw xmm2,xmm12 paddw xmm2,[rsp+10h] paddw xmm2,[rsp] paddw xmm2,xmm10 psraw xmm2,3 pand xmm2,xmm3 por xmm2,xmm0 pand xmm1,xmm2 movdqa xmm0,xmm13 movdqa xmm2,xmm11 pandn xmm0,xmm11 paddw xmm2,xmm12 por xmm1,xmm0 packuswb xmm9,xmm1 movdqa xmm0,xmm7 movdqa xmm7,[rsp+0A0h] pandn xmm0,[rsp+0F0h] movdqa xmm1,xmm3 por xmm6,xmm0 movdqa xmm0,[rsp+10h] paddw xmm0,xmm4 paddw xmm2,xmm0 paddw xmm2,xmm7 movdqa xmm0,xmm3 pandn xmm0,xmm12 psraw xmm2,2 pand xmm1,xmm2 por xmm1,xmm0 movdqa xmm2,xmm13 movdqa xmm0,xmm13 pand xmm2,xmm1 pandn xmm0,xmm12 movdqa xmm1,xmm12 paddw xmm1,[rsp+10h] por xmm2,xmm0 movdqa xmm0,xmm15 pandn xmm0,[rsp+0B0h] paddw xmm1,xmm4 packuswb xmm6,xmm2 movdqa xmm2,xmm3 psllw xmm1,1 por xmm5,xmm0 movdqa xmm0,[rsp+80h] paddw xmm0,xmm10 paddw xmm1,xmm0 paddw xmm11,xmm1 psraw xmm11,3 movdqa xmm1,xmm12 pand xmm2,xmm11 paddw xmm1,xmm12 movdqa xmm11,[rsp+80h] movdqa xmm0, [rsp+10h] por xmm14,[rsp+0E0h] paddw xmm0,xmm11 movdqa xmm4,xmm15 paddw xmm1,xmm0 movdqa xmm0,xmm13 paddw xmm1,xmm7 psraw xmm1,2 pandn xmm3,xmm1 por xmm2,xmm3 movdqa xmm1,xmm13 movdqa xmm3,[rsp+10h] pandn xmm0,xmm3 pand xmm1,xmm2 movdqa xmm2,xmm11 paddw xmm2,[rsp] por xmm1,xmm0 movdqa xmm0,[rsp+0D0h] por xmm0,xmm8 paddw xmm2,xmm3 packuswb xmm5,xmm1 movdqa xmm8,[rsp+40h] movdqa xmm1,[rsp+50h] movdqa xmm3,xmm8 pand xmm4,xmm0 psllw xmm2,1 movdqa xmm0,xmm15 pandn xmm0,[rsp+90h] por xmm4,xmm0 movdqa xmm0,xmm12 paddw xmm0,xmm10 paddw xmm2,xmm0 paddw xmm1,xmm2 movdqa xmm0,[rsp] movdqa xmm2,xmm11 paddw xmm0,xmm12 movdqa xmm12,[rsp] paddw xmm2,xmm11 paddw xmm2,xmm0 psraw xmm1,3 movdqa xmm0,xmm8 pand xmm3,xmm1 paddw xmm2,xmm7 movdqa xmm1,xmm13 psraw xmm2,2 pandn xmm0,xmm2 por xmm3,xmm0 movdqa xmm2,[rsp+50h] movdqa xmm0,xmm13 pandn xmm0,xmm12 pand xmm1,xmm3 paddw xmm2,xmm11 movdqa xmm3,xmm15 por xmm1,xmm0 pand xmm3,xmm14 movdqa xmm14,[rsp+10h] movdqa xmm0,xmm15 pandn xmm0,[rsp+30h] packuswb xmm4,xmm1 movdqa xmm1,xmm8 por xmm3,xmm0 movdqa xmm0,xmm12 paddw xmm0,xmm14 paddw xmm2,xmm0 paddw xmm2,xmm7 movdqa xmm0,xmm8 pandn xmm0,xmm11 psraw xmm2,2 pand xmm1,xmm2 por xmm1,xmm0 movdqa xmm2,xmm13 movdqa xmm0,xmm13 pandn xmm0,xmm11 pand xmm2,xmm1 movdqa xmm1,xmm15 por xmm2,xmm0 packuswb xmm3,xmm2 movdqa xmm0,[rsp+100h] por xmm0,[rsp+120h] pand xmm1,xmm0 movdqa xmm2,[rcx+rbp] movdqa xmm7,[rsp+50h] pandn xmm15,[rsp+60h] lea r11,[rsp+1D8h] pxor xmm0,xmm0 por xmm1,xmm15 movaps xmm15,[r11-0A8h] movdqa [rdi],xmm9 movaps xmm9,[r11-48h] punpckhbw xmm2,xmm0 psllw xmm2,1 paddw xmm2,xmm7 paddw xmm2,xmm7 movdqa [rbx],xmm6 movaps xmm6,[r11-18h] paddw xmm2,xmm7 paddw xmm2,xmm11 movaps xmm11,[r11-68h] paddw xmm2,xmm12 movaps xmm12,[r11-78h] paddw xmm2,xmm14 paddw xmm2,xmm10 psraw xmm2,3 movaps xmm10,[r11-58h] movaps xmm14,[r11-98h] movdqa xmm0,xmm13 pand xmm2,xmm8 pandn xmm8,xmm7 pandn xmm13,xmm7 por xmm2,xmm8 movaps xmm7,[r11-28h] movaps xmm8,[r11-38h] movdqa [r8],xmm5 pand xmm0,xmm2 por xmm0,xmm13 packuswb xmm1,xmm0 movaps xmm13,[r11-88h] movdqa [rbp],xmm4 movdqa [r10+rbp],xmm3 movdqa [rsi+rbp],xmm1 mov rsp,r11 pop rdi pop rsi pop rbp pop rbx ret WELS_EXTERN DeblockChromaLt4V_ssse3 mov rax,rsp push rbx push rdi PUSH_XMM 16 sub rsp,0C8h mov r10,qword [rax + 30h] ; pTC pxor xmm1,xmm1 mov rbx,rcx movsxd r11,r8d movsx ecx,byte [r10] movsx r8d,byte [r10+2] mov rdi,rdx movq xmm2,[rbx] movq xmm9,[r11+rbx] movsx edx,byte [r10+1] mov word [rsp+2],cx mov word [rsp],cx movsx eax,byte [r10+3] mov word [rsp+6],dx mov word [rsp+4],dx movdqa xmm11,xmm1 mov word [rsp+0Eh],ax mov word [rsp+0Ch],ax lea eax,[r11+r11] movsxd rcx,eax mov rax,rbx mov rdx,rdi sub rax,rcx mov word [rsp+0Ah],r8w mov word [rsp+8],r8w movdqa xmm6,[rsp] movdqa xmm7,xmm6 movq xmm13, [rax] mov rax,rdi sub rax,rcx mov rcx,rbx pcmpgtw xmm7,xmm1 psubw xmm11,xmm6 sub rcx,r11 sub rdx,r11 movq xmm0,[rax] movsx eax,r9w movq xmm15,[rcx] punpcklqdq xmm13,xmm0 movq xmm0, [rdx] movdqa xmm4,xmm13 punpcklqdq xmm15,xmm0 movq xmm0, [rdi] punpcklbw xmm4,xmm1 movdqa xmm12,xmm15 punpcklqdq xmm2,xmm0 movq xmm0, [r11+rdi] punpcklbw xmm12,xmm1 movdqa xmm14,xmm2 punpcklqdq xmm9,xmm0 punpckhbw xmm2,xmm1 punpcklbw xmm14,xmm1 movd xmm0,eax movsx eax,word [rsp + 0C8h + 38h + 160] ; iBeta punpckhbw xmm13,xmm1 punpckhbw xmm15,xmm1 movdqa xmm3,xmm9 movdqa [rsp+10h],xmm2 punpcklwd xmm0,xmm0 punpckhbw xmm9,xmm1 punpcklbw xmm3,xmm1 movdqa xmm1,xmm14 pshufd xmm10,xmm0,0 movd xmm0,eax mov eax,4 cwde punpcklwd xmm0,xmm0 pshufd xmm8,xmm0,0 movd xmm0,eax punpcklwd xmm0,xmm0 pshufd xmm5,xmm0,0 psubw xmm1,xmm12 movdqa xmm2,xmm10 lea r11,[rsp+0C8h] psllw xmm1,2 movdqa xmm0,xmm4 psubw xmm4,xmm12 psubw xmm0,xmm3 psubw xmm3,xmm14 paddw xmm1,xmm0 paddw xmm1,xmm5 movdqa xmm0,xmm11 psraw xmm1,3 pmaxsw xmm0,xmm1 pminsw xmm6,xmm0 movdqa xmm1,xmm8 movdqa xmm0,xmm12 psubw xmm0,xmm14 pabsw xmm0,xmm0 pcmpgtw xmm2,xmm0 pabsw xmm0,xmm4 pcmpgtw xmm1,xmm0 pabsw xmm0,xmm3 movdqa xmm3,[rsp] pand xmm2,xmm1 movdqa xmm1,xmm8 pcmpgtw xmm1,xmm0 movdqa xmm0,xmm13 pand xmm2,xmm1 psubw xmm0,xmm9 psubw xmm13,xmm15 pand xmm2,xmm7 pand xmm6,xmm2 paddw xmm12,xmm6 psubw xmm14,xmm6 movdqa xmm2,[rsp+10h] movaps xmm6,[r11-18h] movdqa xmm1,xmm2 psubw xmm1,xmm15 psubw xmm9,xmm2 psllw xmm1,2 paddw xmm1,xmm0 paddw xmm1,xmm5 movdqa xmm0,xmm15 psubw xmm0,xmm2 psraw xmm1,3 pmaxsw xmm11,xmm1 pabsw xmm0,xmm0 movdqa xmm1,xmm8 pcmpgtw xmm10,xmm0 pabsw xmm0,xmm13 pminsw xmm3,xmm11 movaps xmm11,[r11-68h] movaps xmm13,[rsp+40h] pcmpgtw xmm1,xmm0 pabsw xmm0,xmm9 movaps xmm9, [r11-48h] pand xmm10,xmm1 pcmpgtw xmm8,xmm0 pand xmm10,xmm8 pand xmm10,xmm7 movaps xmm8,[r11-38h] movaps xmm7,[r11-28h] pand xmm3,xmm10 paddw xmm15,xmm3 psubw xmm2,xmm3 movaps xmm10,[r11-58h] packuswb xmm12,xmm15 movaps xmm15,[rsp+20h] packuswb xmm14,xmm2 movq [rcx],xmm12 movq [rbx],xmm14 psrldq xmm12,8 psrldq xmm14,8 movq [rdx],xmm12 movaps xmm12,[r11-78h] movq [rdi],xmm14 movaps xmm14,[rsp+30h] mov rsp,r11 POP_XMM pop rdi pop rbx ret WELS_EXTERN DeblockChromaEq4V_ssse3 mov rax,rsp push rbx PUSH_XMM 15 sub rsp,90h pxor xmm1,xmm1 mov r11,rcx mov rbx,rdx mov r10d,r9d movq xmm13,[r11] lea eax,[r8+r8] movsxd r9,eax mov rax,rcx sub rax,r9 movq xmm14,[rax] mov rax,rdx sub rax,r9 movq xmm0,[rax] movsxd rax,r8d sub rcx,rax sub rdx,rax movq xmm12,[rax+r11] movq xmm10,[rcx] punpcklqdq xmm14,xmm0 movdqa xmm8,xmm14 movq xmm0,[rdx] punpcklbw xmm8,xmm1 punpckhbw xmm14,xmm1 punpcklqdq xmm10,xmm0 movq xmm0,[rbx] movdqa xmm5,xmm10 punpcklqdq xmm13,xmm0 movq xmm0, [rax+rbx] punpcklbw xmm5,xmm1 movsx eax,r10w movdqa xmm9,xmm13 punpcklqdq xmm12,xmm0 punpcklbw xmm9,xmm1 punpckhbw xmm10,xmm1 movd xmm0,eax movsx eax,word [rsp + 90h + 8h + 28h + 144] ; iBeta punpckhbw xmm13,xmm1 movdqa xmm7,xmm12 punpcklwd xmm0,xmm0 punpckhbw xmm12,xmm1 pshufd xmm11,xmm0,0 punpcklbw xmm7,xmm1 movd xmm0,eax movdqa xmm1,xmm8 psubw xmm1,xmm5 punpcklwd xmm0,xmm0 movdqa xmm6,xmm11 pshufd xmm3,xmm0,0 movdqa xmm0,xmm5 psubw xmm0,xmm9 movdqa xmm2,xmm3 pabsw xmm0,xmm0 pcmpgtw xmm6,xmm0 pabsw xmm0,xmm1 movdqa xmm1,xmm3 pcmpgtw xmm2,xmm0 pand xmm6,xmm2 movdqa xmm0,xmm7 movdqa xmm2,xmm3 psubw xmm0,xmm9 pabsw xmm0,xmm0 pcmpgtw xmm1,xmm0 pand xmm6,xmm1 movdqa xmm0,xmm10 movdqa xmm1,xmm14 psubw xmm0,xmm13 psubw xmm1,xmm10 pabsw xmm0,xmm0 pcmpgtw xmm11,xmm0 pabsw xmm0,xmm1 pcmpgtw xmm2,xmm0 pand xmm11,xmm2 movdqa xmm0,xmm12 movdqa xmm4,xmm6 movdqa xmm1,xmm8 mov eax,2 cwde paddw xmm1,xmm8 psubw xmm0,xmm13 paddw xmm1,xmm5 pabsw xmm0,xmm0 movdqa xmm2,xmm14 paddw xmm1,xmm7 pcmpgtw xmm3,xmm0 paddw xmm2,xmm14 movd xmm0,eax pand xmm11,xmm3 paddw xmm7,xmm7 paddw xmm2,xmm10 punpcklwd xmm0,xmm0 paddw xmm2,xmm12 paddw xmm12,xmm12 pshufd xmm3,xmm0,0 paddw xmm7,xmm9 paddw xmm12,xmm13 movdqa xmm0,xmm6 paddw xmm1,xmm3 pandn xmm0,xmm5 paddw xmm7,xmm8 psraw xmm1,2 paddw xmm12,xmm14 paddw xmm7,xmm3 movaps xmm14,[rsp] pand xmm4,xmm1 paddw xmm12,xmm3 psraw xmm7,2 movdqa xmm1,xmm11 por xmm4,xmm0 psraw xmm12,2 paddw xmm2,xmm3 movdqa xmm0,xmm11 pandn xmm0,xmm10 psraw xmm2,2 pand xmm1,xmm2 por xmm1,xmm0 packuswb xmm4,xmm1 movdqa xmm0,xmm11 movdqa xmm1,xmm6 pand xmm1,xmm7 movaps xmm7,[rsp+70h] movq [rcx],xmm4 pandn xmm6,xmm9 pandn xmm11,xmm13 pand xmm0,xmm12 por xmm1,xmm6 por xmm0,xmm11 psrldq xmm4,8 packuswb xmm1,xmm0 movq [r11],xmm1 psrldq xmm1,8 movq [rdx],xmm4 lea r11,[rsp+90h] movaps xmm6,[r11-10h] movaps xmm8,[r11-30h] movaps xmm9,[r11-40h] movq [rbx],xmm1 movaps xmm10,[r11-50h] movaps xmm11,[r11-60h] movaps xmm12,[r11-70h] movaps xmm13,[r11-80h] mov rsp,r11 POP_XMM pop rbx ret WELS_EXTERN DeblockChromaEq4H_ssse3 mov rax,rsp mov [rax+20h],rbx push rdi PUSH_XMM 16 sub rsp,140h mov rdi,rdx lea eax,[r8*4] movsxd r10,eax mov eax,[rcx-2] mov [rsp+10h],eax lea rbx,[r10+rdx-2] lea r11,[r10+rcx-2] movdqa xmm5,[rsp+10h] movsxd r10,r8d mov eax,[r10+rcx-2] lea rdx,[r10+r10*2] mov [rsp+20h],eax mov eax,[rcx+r10*2-2] mov [rsp+30h],eax mov eax,[rdx+rcx-2] movdqa xmm2,[rsp+20h] mov [rsp+40h],eax mov eax, [rdi-2] movdqa xmm4,[rsp+30h] mov [rsp+50h],eax mov eax,[r10+rdi-2] movdqa xmm3,[rsp+40h] mov [rsp+60h],eax mov eax,[rdi+r10*2-2] punpckldq xmm5,[rsp+50h] mov [rsp+70h],eax mov eax, [rdx+rdi-2] punpckldq xmm2, [rsp+60h] mov [rsp+80h],eax mov eax,[r11] punpckldq xmm4, [rsp+70h] mov [rsp+50h],eax mov eax,[rbx] punpckldq xmm3,[rsp+80h] mov [rsp+60h],eax mov eax,[r10+r11] movdqa xmm0, [rsp+50h] punpckldq xmm0, [rsp+60h] punpcklqdq xmm5,xmm0 movdqa [rsp+50h],xmm0 mov [rsp+50h],eax mov eax,[r10+rbx] movdqa xmm0,[rsp+50h] movdqa xmm1,xmm5 mov [rsp+60h],eax mov eax,[r11+r10*2] punpckldq xmm0, [rsp+60h] punpcklqdq xmm2,xmm0 punpcklbw xmm1,xmm2 punpckhbw xmm5,xmm2 movdqa [rsp+50h],xmm0 mov [rsp+50h],eax mov eax,[rbx+r10*2] movdqa xmm0,[rsp+50h] mov [rsp+60h],eax mov eax, [rdx+r11] movdqa xmm15,xmm1 punpckldq xmm0,[rsp+60h] punpcklqdq xmm4,xmm0 movdqa [rsp+50h],xmm0 mov [rsp+50h],eax mov eax, [rdx+rbx] movdqa xmm0,[rsp+50h] mov [rsp+60h],eax punpckldq xmm0, [rsp+60h] punpcklqdq xmm3,xmm0 movdqa xmm0,xmm4 punpcklbw xmm0,xmm3 punpckhbw xmm4,xmm3 punpcklwd xmm15,xmm0 punpckhwd xmm1,xmm0 movdqa xmm0,xmm5 movdqa xmm12,xmm15 punpcklwd xmm0,xmm4 punpckhwd xmm5,xmm4 punpckldq xmm12,xmm0 punpckhdq xmm15,xmm0 movdqa xmm0,xmm1 movdqa xmm11,xmm12 punpckldq xmm0,xmm5 punpckhdq xmm1,xmm5 punpcklqdq xmm11,xmm0 punpckhqdq xmm12,xmm0 movsx eax,r9w movdqa xmm14,xmm15 punpcklqdq xmm14,xmm1 punpckhqdq xmm15,xmm1 pxor xmm1,xmm1 movd xmm0,eax movdqa xmm4,xmm12 movdqa xmm8,xmm11 movsx eax,word [rsp+170h + 160] ; iBeta punpcklwd xmm0,xmm0 punpcklbw xmm4,xmm1 punpckhbw xmm12,xmm1 movdqa xmm9,xmm14 movdqa xmm7,xmm15 movdqa xmm10,xmm15 pshufd xmm13,xmm0,0 punpcklbw xmm9,xmm1 punpckhbw xmm14,xmm1 movdqa xmm6,xmm13 movd xmm0,eax movdqa [rsp],xmm11 mov eax,2 cwde punpckhbw xmm11,xmm1 punpckhbw xmm10,xmm1 punpcklbw xmm7,xmm1 punpcklwd xmm0,xmm0 punpcklbw xmm8,xmm1 pshufd xmm3,xmm0,0 movdqa xmm1,xmm8 movdqa xmm0,xmm4 psubw xmm0,xmm9 psubw xmm1,xmm4 movdqa xmm2,xmm3 pabsw xmm0,xmm0 pcmpgtw xmm6,xmm0 pabsw xmm0,xmm1 movdqa xmm1,xmm3 pcmpgtw xmm2,xmm0 pand xmm6,xmm2 movdqa xmm0,xmm7 movdqa xmm2,xmm3 psubw xmm0,xmm9 pabsw xmm0,xmm0 pcmpgtw xmm1,xmm0 pand xmm6,xmm1 movdqa xmm0,xmm12 movdqa xmm1,xmm11 psubw xmm0,xmm14 psubw xmm1,xmm12 movdqa xmm5,xmm6 pabsw xmm0,xmm0 pcmpgtw xmm13,xmm0 pabsw xmm0,xmm1 movdqa xmm1,xmm8 pcmpgtw xmm2,xmm0 paddw xmm1,xmm8 movdqa xmm0,xmm10 pand xmm13,xmm2 psubw xmm0,xmm14 paddw xmm1,xmm4 movdqa xmm2,xmm11 pabsw xmm0,xmm0 paddw xmm2,xmm11 paddw xmm1,xmm7 pcmpgtw xmm3,xmm0 paddw xmm2,xmm12 movd xmm0,eax pand xmm13,xmm3 paddw xmm2,xmm10 punpcklwd xmm0,xmm0 pshufd xmm3,xmm0,0 movdqa xmm0,xmm6 paddw xmm1,xmm3 pandn xmm0,xmm4 paddw xmm2,xmm3 psraw xmm1,2 pand xmm5,xmm1 por xmm5,xmm0 paddw xmm7,xmm7 paddw xmm10,xmm10 psraw xmm2,2 movdqa xmm1,xmm13 movdqa xmm0,xmm13 pandn xmm0,xmm12 pand xmm1,xmm2 paddw xmm7,xmm9 por xmm1,xmm0 paddw xmm10,xmm14 paddw xmm7,xmm8 movdqa xmm0,xmm13 packuswb xmm5,xmm1 paddw xmm7,xmm3 paddw xmm10,xmm11 movdqa xmm1,xmm6 paddw xmm10,xmm3 pandn xmm6,xmm9 psraw xmm7,2 pand xmm1,xmm7 psraw xmm10,2 pandn xmm13,xmm14 pand xmm0,xmm10 por xmm1,xmm6 movdqa xmm6,[rsp] movdqa xmm4,xmm6 por xmm0,xmm13 punpcklbw xmm4,xmm5 punpckhbw xmm6,xmm5 movdqa xmm3,xmm4 packuswb xmm1,xmm0 movdqa xmm0,xmm1 punpckhbw xmm1,xmm15 punpcklbw xmm0,xmm15 punpcklwd xmm3,xmm0 punpckhwd xmm4,xmm0 movdqa xmm0,xmm6 movdqa xmm2,xmm3 punpcklwd xmm0,xmm1 punpckhwd xmm6,xmm1 movdqa xmm1,xmm4 punpckldq xmm2,xmm0 punpckhdq xmm3,xmm0 punpckldq xmm1,xmm6 movdqa xmm0,xmm2 punpcklqdq xmm0,xmm1 punpckhdq xmm4,xmm6 punpckhqdq xmm2,xmm1 movdqa [rsp+10h],xmm0 movdqa [rsp+60h],xmm2 movdqa xmm0,xmm3 mov eax,[rsp+10h] mov [rcx-2],eax mov eax,[rsp+60h] punpcklqdq xmm0,xmm4 punpckhqdq xmm3,xmm4 mov [r10+rcx-2],eax movdqa [rsp+20h],xmm0 mov eax, [rsp+20h] movdqa [rsp+70h],xmm3 mov [rcx+r10*2-2],eax mov eax,[rsp+70h] mov [rdx+rcx-2],eax mov eax,[rsp+18h] mov [r11],eax mov eax,[rsp+68h] mov [r10+r11],eax mov eax,[rsp+28h] mov [r11+r10*2],eax mov eax,[rsp+78h] mov [rdx+r11],eax mov eax,[rsp+14h] mov [rdi-2],eax mov eax,[rsp+64h] mov [r10+rdi-2],eax mov eax,[rsp+24h] mov [rdi+r10*2-2],eax mov eax, [rsp+74h] mov [rdx+rdi-2],eax mov eax, [rsp+1Ch] mov [rbx],eax mov eax, [rsp+6Ch] mov [r10+rbx],eax mov eax,[rsp+2Ch] mov [rbx+r10*2],eax mov eax,[rsp+7Ch] mov [rdx+rbx],eax lea rsp,[rsp+140h] POP_XMM mov rbx, [rsp+28h] pop rdi ret WELS_EXTERN DeblockChromaLt4H_ssse3 mov rax,rsp push rbx push rbp push rsi push rdi push r12 PUSH_XMM 16 sub rsp,170h movsxd rsi,r8d lea eax,[r8*4] mov r11d,r9d movsxd r10,eax mov eax, [rcx-2] mov r12,rdx mov [rsp+40h],eax mov eax, [rsi+rcx-2] lea rbx,[r10+rcx-2] movdqa xmm5,[rsp+40h] mov [rsp+50h],eax mov eax, [rcx+rsi*2-2] lea rbp,[r10+rdx-2] movdqa xmm2, [rsp+50h] mov [rsp+60h],eax lea r10,[rsi+rsi*2] mov rdi,rcx mov eax,[r10+rcx-2] movdqa xmm4,[rsp+60h] mov [rsp+70h],eax mov eax,[rdx-2] mov [rsp+80h],eax mov eax, [rsi+rdx-2] movdqa xmm3,[rsp+70h] mov [rsp+90h],eax mov eax,[rdx+rsi*2-2] punpckldq xmm5,[rsp+80h] mov [rsp+0A0h],eax mov eax, [r10+rdx-2] punpckldq xmm2,[rsp+90h] mov [rsp+0B0h],eax mov eax, [rbx] punpckldq xmm4,[rsp+0A0h] mov [rsp+80h],eax mov eax,[rbp] punpckldq xmm3,[rsp+0B0h] mov [rsp+90h],eax mov eax,[rsi+rbx] movdqa xmm0,[rsp+80h] punpckldq xmm0,[rsp+90h] punpcklqdq xmm5,xmm0 movdqa [rsp+80h],xmm0 mov [rsp+80h],eax mov eax,[rsi+rbp] movdqa xmm0,[rsp+80h] movdqa xmm1,xmm5 mov [rsp+90h],eax mov eax,[rbx+rsi*2] punpckldq xmm0,[rsp+90h] punpcklqdq xmm2,xmm0 punpcklbw xmm1,xmm2 punpckhbw xmm5,xmm2 movdqa [rsp+80h],xmm0 mov [rsp+80h],eax mov eax,[rbp+rsi*2] movdqa xmm0, [rsp+80h] mov [rsp+90h],eax mov eax,[r10+rbx] movdqa xmm7,xmm1 punpckldq xmm0,[rsp+90h] punpcklqdq xmm4,xmm0 movdqa [rsp+80h],xmm0 mov [rsp+80h],eax mov eax, [r10+rbp] movdqa xmm0,[rsp+80h] mov [rsp+90h],eax punpckldq xmm0,[rsp+90h] punpcklqdq xmm3,xmm0 movdqa xmm0,xmm4 punpcklbw xmm0,xmm3 punpckhbw xmm4,xmm3 punpcklwd xmm7,xmm0 punpckhwd xmm1,xmm0 movdqa xmm0,xmm5 movdqa xmm6,xmm7 punpcklwd xmm0,xmm4 punpckhwd xmm5,xmm4 punpckldq xmm6,xmm0 punpckhdq xmm7,xmm0 movdqa xmm0,xmm1 punpckldq xmm0,xmm5 mov rax, [rsp+1C8h+160] ; pTC punpckhdq xmm1,xmm5 movdqa xmm9,xmm6 punpckhqdq xmm6,xmm0 punpcklqdq xmm9,xmm0 movdqa xmm2,xmm7 movdqa xmm13,xmm6 movdqa xmm4,xmm9 movdqa [rsp+10h],xmm9 punpcklqdq xmm2,xmm1 punpckhqdq xmm7,xmm1 pxor xmm1,xmm1 movsx ecx,byte [rax+3] movsx edx,byte [rax+2] movsx r8d,byte [rax+1] movsx r9d,byte [rax] movdqa xmm10,xmm1 movdqa xmm15,xmm2 punpckhbw xmm2,xmm1 punpckhbw xmm6,xmm1 punpcklbw xmm4,xmm1 movsx eax,r11w mov word [rsp+0Eh],cx mov word [rsp+0Ch],cx movdqa xmm3,xmm7 movdqa xmm8,xmm7 movdqa [rsp+20h],xmm7 punpcklbw xmm15,xmm1 punpcklbw xmm13,xmm1 punpcklbw xmm3,xmm1 mov word [rsp+0Ah],dx mov word [rsp+8],dx mov word [rsp+6],r8w movd xmm0,eax movdqa [rsp+30h],xmm6 punpckhbw xmm9,xmm1 punpckhbw xmm8,xmm1 punpcklwd xmm0,xmm0 movsx eax,word [rsp+1C0h+160] ; iBeta mov word [rsp+4],r8w mov word [rsp+2],r9w pshufd xmm12,xmm0,0 mov word [rsp],r9w movd xmm0,eax mov eax,4 cwde movdqa xmm14, [rsp] movdqa [rsp],xmm2 movdqa xmm2,xmm12 punpcklwd xmm0,xmm0 pshufd xmm11,xmm0,0 psubw xmm10,xmm14 movd xmm0,eax movdqa xmm7,xmm14 movdqa xmm6,xmm14 pcmpgtw xmm7,xmm1 punpcklwd xmm0,xmm0 pshufd xmm5,xmm0,0 movdqa xmm0,xmm4 movdqa xmm1,xmm15 psubw xmm4,xmm13 psubw xmm0,xmm3 psubw xmm1,xmm13 psubw xmm3,xmm15 psllw xmm1,2 paddw xmm1,xmm0 paddw xmm1,xmm5 movdqa xmm0,xmm10 psraw xmm1,3 pmaxsw xmm0,xmm1 pminsw xmm6,xmm0 movdqa xmm1,xmm11 movdqa xmm0,xmm13 psubw xmm0,xmm15 pabsw xmm0,xmm0 pcmpgtw xmm2,xmm0 pabsw xmm0,xmm4 pcmpgtw xmm1,xmm0 pabsw xmm0,xmm3 pand xmm2,xmm1 movdqa xmm1,xmm11 movdqa xmm3,[rsp+30h] pcmpgtw xmm1,xmm0 movdqa xmm0,xmm9 pand xmm2,xmm1 psubw xmm0,xmm8 psubw xmm9,xmm3 pand xmm2,xmm7 pand xmm6,xmm2 psubw xmm15,xmm6 paddw xmm13,xmm6 movdqa xmm2,[rsp] movdqa xmm1,xmm2 psubw xmm1,xmm3 psubw xmm8,xmm2 psllw xmm1,2 paddw xmm1,xmm0 paddw xmm1,xmm5 movdqa xmm0,xmm3 movdqa xmm5,[rsp+10h] psubw xmm0,xmm2 psraw xmm1,3 movdqa xmm4,xmm5 pabsw xmm0,xmm0 pmaxsw xmm10,xmm1 movdqa xmm1,xmm11 pcmpgtw xmm12,xmm0 pabsw xmm0,xmm9 pminsw xmm14,xmm10 pcmpgtw xmm1,xmm0 pabsw xmm0,xmm8 pcmpgtw xmm11,xmm0 pand xmm12,xmm1 movdqa xmm1,[rsp+20h] pand xmm12,xmm11 pand xmm12,xmm7 pand xmm14,xmm12 paddw xmm3,xmm14 psubw xmm2,xmm14 packuswb xmm13,xmm3 packuswb xmm15,xmm2 punpcklbw xmm4,xmm13 punpckhbw xmm5,xmm13 movdqa xmm0,xmm15 punpcklbw xmm0,xmm1 punpckhbw xmm15,xmm1 movdqa xmm3,xmm4 punpcklwd xmm3,xmm0 punpckhwd xmm4,xmm0 movdqa xmm0,xmm5 movdqa xmm2,xmm3 movdqa xmm1,xmm4 punpcklwd xmm0,xmm15 punpckhwd xmm5,xmm15 punpckldq xmm2,xmm0 punpckhdq xmm3,xmm0 punpckldq xmm1,xmm5 movdqa xmm0,xmm2 punpcklqdq xmm0,xmm1 punpckhdq xmm4,xmm5 punpckhqdq xmm2,xmm1 movdqa [rsp+40h],xmm0 movdqa xmm0,xmm3 movdqa [rsp+90h],xmm2 mov eax,[rsp+40h] mov [rdi-2],eax mov eax, [rsp+90h] punpcklqdq xmm0,xmm4 punpckhqdq xmm3,xmm4 mov [rsi+rdi-2],eax movdqa [rsp+50h],xmm0 mov eax,[rsp+50h] movdqa [rsp+0A0h],xmm3 mov [rdi+rsi*2-2],eax mov eax,[rsp+0A0h] mov [r10+rdi-2],eax mov eax,[rsp+48h] mov [rbx],eax mov eax,[rsp+98h] mov [rsi+rbx],eax mov eax,[rsp+58h] mov [rbx+rsi*2],eax mov eax, [rsp+0A8h] mov [r10+rbx],eax mov eax, [rsp+44h] mov [r12-2],eax mov eax,[rsp+94h] mov [rsi+r12-2],eax mov eax,[rsp+54h] mov [r12+rsi*2-2],eax mov eax, [rsp+0A4h] mov [r10+r12-2],eax mov eax,[rsp+4Ch] mov [rbp],eax mov eax,[rsp+9Ch] mov [rsi+rbp],eax mov eax, [rsp+5Ch] mov [rbp+rsi*2],eax mov eax,[rsp+0ACh] mov [r10+rbp],eax lea r11,[rsp+170h] mov rsp,r11 POP_XMM pop r12 pop rdi pop rsi pop rbp pop rbx ret %elifdef UNIX64 WELS_EXTERN DeblockLumaLt4V_ssse3 push rbp mov r11,r8 ; pTC sub rsp,1B0h lea rbp,[rsp+20h] movd xmm4,edx movd xmm2,ecx mov qword [rbp+180h],r12 mov r10,rdi movsxd r12,esi add rsi,rsi movsxd rdx,esi sub r10,r12 movsx r8d,byte [r11] pxor xmm3,xmm3 punpcklwd xmm2,xmm2 movaps [rbp+50h],xmm14 lea rax,[r12+r12*2] movdqa xmm14,[rdx+rdi] neg rax pshufd xmm0,xmm2,0 movd xmm2,r8d movsx rsi,byte [r11+1] movsx r8d,byte [r11+2] movsx r11d,byte [r11+3] movaps [rbp+70h],xmm12 movd xmm1,esi movaps [rbp+80h],xmm11 movd xmm12,r8d movd xmm11,r11d movdqa xmm5, [rax+rdi] lea rax,[r12+r12] punpcklwd xmm12,xmm12 neg rax punpcklwd xmm11,xmm11 movaps [rbp],xmm8 movdqa xmm8, [r10] punpcklwd xmm2,xmm2 punpcklwd xmm1,xmm1 punpcklqdq xmm12,xmm12 punpcklqdq xmm11,xmm11 punpcklqdq xmm2,xmm2 punpcklqdq xmm1,xmm1 shufps xmm12,xmm11,88h movdqa xmm11,xmm8 movaps [rbp+30h],xmm9 movdqa xmm9,[rdi] shufps xmm2,xmm1,88h movdqa xmm1,xmm5 punpcklbw xmm11,xmm3 movaps [rbp+20h],xmm6 movaps [rbp+60h],xmm13 movdqa xmm13,xmm11 movaps [rbp+90h],xmm10 movdqa xmm10,xmm9 movdqa xmm6,[rax+rdi] punpcklbw xmm1,xmm3 movaps [rbp+0A0h],xmm12 psubw xmm13,xmm1 movaps [rbp+40h],xmm15 movdqa xmm15,xmm14 movaps [rbp+10h],xmm7 movdqa xmm7,xmm6 punpcklbw xmm10,xmm3 movdqa xmm12,[r12+rdi] punpcklbw xmm7,xmm3 punpcklbw xmm12,xmm3 punpcklbw xmm15,xmm3 pabsw xmm3,xmm13 movdqa xmm13,xmm10 psubw xmm13,xmm15 movdqa [rbp+0F0h],xmm15 pabsw xmm15,xmm13 movdqa xmm13,xmm11 movdqa [rbp+0B0h],xmm1 movdqa xmm1,xmm0 pavgw xmm13,xmm10 pcmpgtw xmm1,xmm3 movdqa [rbp+120h],xmm13 movaps xmm13,xmm2 punpcklwd xmm4,xmm4 movdqa xmm3,xmm0 movdqa [rbp+100h],xmm1 psubw xmm13,xmm1 movdqa xmm1,xmm10 pcmpgtw xmm3,xmm15 pshufd xmm4,xmm4,0 psubw xmm1,xmm11 movdqa [rbp+0D0h],xmm10 psubw xmm13,xmm3 movdqa [rbp+110h],xmm3 pabsw xmm15,xmm1 movdqa xmm3,xmm4 psubw xmm10,xmm12 pcmpgtw xmm3,xmm15 pabsw xmm15,xmm10 movdqa xmm10,xmm0 psllw xmm1,2 movdqa [rbp+0C0h],xmm11 psubw xmm11,xmm7 pcmpgtw xmm10,xmm15 pabsw xmm11,xmm11 movdqa xmm15,xmm0 pand xmm3,xmm10 pcmpgtw xmm15,xmm11 movaps xmm11,xmm2 pxor xmm10,xmm10 pand xmm3,xmm15 pcmpgtw xmm11,xmm10 pcmpeqw xmm10,xmm2 por xmm11,xmm10 pand xmm3,xmm11 movdqa xmm11,xmm7 psubw xmm11,xmm12 pxor xmm15,xmm15 paddw xmm11,xmm1 psubw xmm15,xmm13 movdqa [rbp+0E0h],xmm12 paddw xmm11,[FOUR_16B_SSE2] pxor xmm12,xmm12 psraw xmm11,3 punpckhbw xmm8,xmm12 pmaxsw xmm15,xmm11 punpckhbw xmm5,xmm12 movdqa xmm11,xmm8 pminsw xmm13,xmm15 psubw xmm11,xmm5 punpckhbw xmm9,xmm12 pand xmm13,xmm3 movdqa [rbp+130h],xmm13 pabsw xmm13,xmm11 punpckhbw xmm14,xmm12 movdqa xmm11,xmm9 psubw xmm11,xmm14 movdqa xmm15,xmm0 movdqa [rbp+140h],xmm14 pabsw xmm14,xmm11 movdqa xmm11,xmm8 pcmpgtw xmm15,xmm14 movdqa xmm1,[r12+rdi] pavgw xmm11,xmm9 movdqa [rbp+170h],xmm11 movdqa xmm10,xmm9 punpckhbw xmm6,xmm12 psubw xmm10,xmm8 punpckhbw xmm1,xmm12 movdqa xmm12,xmm0 movaps xmm11,[rbp+0A0h] pcmpgtw xmm12,xmm13 movaps xmm13,xmm11 psubw xmm13,xmm12 movdqa [rbp+160h],xmm15 psubw xmm13,xmm15 movdqa xmm15,xmm9 psubw xmm15,xmm1 movdqa [rbp+150h],xmm12 pabsw xmm12,xmm10 pabsw xmm14,xmm15 movdqa xmm15,xmm8 pcmpgtw xmm4,xmm12 movdqa xmm12,xmm0 psubw xmm15,xmm6 pcmpgtw xmm12,xmm14 pabsw xmm14,xmm15 psllw xmm10,2 pcmpgtw xmm0,xmm14 movdqa xmm14,xmm6 psubw xmm14,xmm1 pand xmm4,xmm12 paddw xmm14,xmm10 pand xmm4,xmm0 paddw xmm14,[FOUR_16B_SSE2] pxor xmm15,xmm15 movaps xmm12,xmm11 psubw xmm15,xmm13 pxor xmm0,xmm0 psraw xmm14,3 pcmpgtw xmm12,xmm0 pcmpeqw xmm0,xmm11 pmaxsw xmm15,xmm14 por xmm12,xmm0 movdqa xmm0,[rbp+120h] pminsw xmm13,xmm15 movdqa xmm15,[rbp+0B0h] movdqa xmm10,xmm7 pand xmm4,xmm12 paddw xmm15,xmm0 pxor xmm12,xmm12 paddw xmm10,xmm7 movdqa xmm14,xmm12 psubw xmm15,xmm10 psubw xmm14,xmm2 psraw xmm15,1 pmaxsw xmm15,xmm14 movdqa xmm10,xmm6 pminsw xmm15,xmm2 paddw xmm10,xmm6 pand xmm15,xmm3 psubw xmm12,xmm11 pand xmm15,[rbp+100h] pand xmm13,xmm4 paddw xmm7,xmm15 paddw xmm8,xmm13 movdqa xmm15,[rbp+170h] psubw xmm9,xmm13 paddw xmm5,xmm15 psubw xmm5,xmm10 psraw xmm5,1 pmaxsw xmm5,xmm12 pminsw xmm5,xmm11 pand xmm5,xmm4 pand xmm5,[rbp+150h] paddw xmm6,xmm5 movdqa xmm5,[rbp+0C0h] packuswb xmm7,xmm6 movdqa xmm6,[rbp+130h] paddw xmm5,xmm6 packuswb xmm5,xmm8 movdqa xmm8,[rbp+0D0h] psubw xmm8,xmm6 movdqa xmm6,[rbp+0F0h] paddw xmm6,xmm0 movdqa xmm0,[rbp+0E0h] packuswb xmm8,xmm9 movdqa xmm9,xmm0 paddw xmm9,xmm0 psubw xmm6,xmm9 psraw xmm6,1 pmaxsw xmm14,xmm6 pminsw xmm2,xmm14 pand xmm2,xmm3 pand xmm2,[rbp+110h] paddw xmm0,xmm2 movdqa xmm2,[rbp+140h] paddw xmm2,xmm15 movdqa xmm15,xmm1 paddw xmm15,xmm1 psubw xmm2,xmm15 psraw xmm2,1 pmaxsw xmm12,xmm2 pminsw xmm11,xmm12 pand xmm11,xmm4 pand xmm11,[rbp+160h] paddw xmm1,xmm11 movdqa [rax+rdi],xmm7 movdqa [r10],xmm5 packuswb xmm0,xmm1 movdqa [rdi],xmm8 movdqa [r12+rdi],xmm0 mov r12,qword [rbp+180h] lea rsp,[rbp+190h] pop rbp ret WELS_EXTERN DeblockLumaEq4V_ssse3 mov rax,rsp push rbx push rbp mov r8, rdx mov r9, rcx mov rcx, rdi mov rdx, rsi sub rsp,1D8h movaps [rax-38h],xmm6 movaps [rax-48h],xmm7 movaps [rax-58h],xmm8 pxor xmm1,xmm1 movsxd r10,edx mov rbp,rcx mov r11d,r8d mov rdx,rcx mov rdi,rbp mov rbx,rbp movdqa xmm5,[rbp] movaps [rax-68h],xmm9 movaps [rax-78h],xmm10 punpcklbw xmm5,xmm1 movaps [rax-88h],xmm11 movaps [rax-98h],xmm12 movaps [rax-0A8h],xmm13 movaps [rax-0B8h],xmm14 movdqa xmm14,[r10+rbp] movaps [rax-0C8h],xmm15 lea eax,[r10*4] movsxd r8,eax lea eax,[r10+r10*2] movsxd rcx,eax lea eax,[r10+r10] sub rdx,r8 punpcklbw xmm14,xmm1 movdqa [rsp+90h],xmm5 movdqa [rsp+30h],xmm14 movsxd rsi,eax movsx eax,r11w sub rdi,rcx sub rbx,rsi mov r8,rbp sub r8,r10 movd xmm0,eax movsx eax,r9w movdqa xmm12,[rdi] movdqa xmm6, [rsi+rbp] movdqa xmm13,[rbx] punpcklwd xmm0,xmm0 pshufd xmm11,xmm0,0 punpcklbw xmm13,xmm1 punpcklbw xmm6,xmm1 movdqa xmm8,[r8] movd xmm0,eax movdqa xmm10,xmm11 mov eax,2 punpcklbw xmm8,xmm1 punpcklbw xmm12,xmm1 cwde punpcklwd xmm0,xmm0 psraw xmm10,2 movdqa xmm1,xmm8 movdqa [rsp+0F0h],xmm13 movdqa [rsp+0B0h],xmm8 pshufd xmm7,xmm0,0 psubw xmm1,xmm13 movdqa xmm0,xmm5 movdqa xmm4,xmm7 movdqa xmm2,xmm7 psubw xmm0,xmm8 pabsw xmm3,xmm0 pabsw xmm0,xmm1 movdqa xmm1,xmm5 movdqa [rsp+40h],xmm7 movdqa [rsp+60h],xmm6 pcmpgtw xmm4,xmm0 psubw xmm1,xmm14 pabsw xmm0,xmm1 pcmpgtw xmm2,xmm0 pand xmm4,xmm2 movdqa xmm0,xmm11 pcmpgtw xmm0,xmm3 pand xmm4,xmm0 movd xmm0,eax movdqa [rsp+20h],xmm4 punpcklwd xmm0,xmm0 pshufd xmm2,xmm0,0 paddw xmm10,xmm2 movdqa [rsp+0A0h],xmm2 movdqa xmm15,xmm7 pxor xmm4,xmm4 movdqa xmm0,xmm8 psubw xmm0,xmm12 mov eax,4 pabsw xmm0,xmm0 movdqa xmm1,xmm10 cwde pcmpgtw xmm15,xmm0 pcmpgtw xmm1,xmm3 movdqa xmm3,xmm7 movdqa xmm7,[rdx] movdqa xmm0,xmm5 psubw xmm0,xmm6 pand xmm15,xmm1 punpcklbw xmm7,xmm4 movdqa xmm9,xmm15 pabsw xmm0,xmm0 psllw xmm7,1 pandn xmm9,xmm12 pcmpgtw xmm3,xmm0 paddw xmm7,xmm12 movd xmm0,eax pand xmm3,xmm1 paddw xmm7,xmm12 punpcklwd xmm0,xmm0 paddw xmm7,xmm12 pshufd xmm1,xmm0,0 paddw xmm7,xmm13 movdqa xmm0,xmm3 pandn xmm0,xmm6 paddw xmm7,xmm8 movdqa [rsp+70h],xmm1 paddw xmm7,xmm5 movdqa [rsp+120h],xmm0 movdqa xmm0,[rcx+rbp] punpcklbw xmm0,xmm4 paddw xmm7,xmm1 movdqa xmm4,xmm15 psllw xmm0,1 psraw xmm7,3 paddw xmm0,xmm6 pand xmm7,xmm15 paddw xmm0,xmm6 paddw xmm0,xmm6 paddw xmm0,xmm14 movdqa xmm6,xmm15 paddw xmm0,xmm5 pandn xmm6,xmm13 paddw xmm0,xmm8 paddw xmm0,xmm1 psraw xmm0,3 movdqa xmm1,xmm12 paddw xmm1,xmm13 pand xmm0,xmm3 movdqa [rsp+100h],xmm0 movdqa xmm0,xmm8 paddw xmm0,xmm5 paddw xmm1,xmm0 movdqa xmm0,xmm3 paddw xmm1,xmm2 psraw xmm1,2 pandn xmm0,xmm14 pand xmm4,xmm1 movdqa [rsp+0E0h],xmm0 movdqa xmm0,xmm5 paddw xmm0,xmm8 movdqa xmm1,[rsp+60h] paddw xmm1,xmm14 movdqa xmm14,xmm3 paddw xmm1,xmm0 movdqa xmm0,xmm8 paddw xmm0,[rsp+30h] paddw xmm1,xmm2 psraw xmm1,2 pand xmm14,xmm1 movdqa xmm1,xmm13 paddw xmm1,xmm13 paddw xmm1,xmm0 paddw xmm1,xmm2 psraw xmm1,2 movdqa xmm0,[rsp+30h] movdqa xmm2,xmm13 movdqa xmm5,xmm15 paddw xmm0,[rsp+70h] pandn xmm5,xmm1 paddw xmm2,xmm8 movdqa xmm8,[rsp+90h] movdqa xmm1,xmm12 paddw xmm2,xmm8 psllw xmm2,1 paddw xmm2,xmm0 paddw xmm1,xmm2 movdqa xmm0,xmm8 movdqa xmm8,xmm3 movdqa xmm2,[rsp+30h] paddw xmm0,xmm13 psraw xmm1,3 pand xmm15,xmm1 movdqa xmm1,xmm2 paddw xmm1,xmm2 paddw xmm2,[rsp+90h] paddw xmm2,[rsp+0B0h] paddw xmm1,xmm0 movdqa xmm0,xmm13 movdqa xmm13,[r8] paddw xmm0, [rsp+70h] paddw xmm1, [rsp+0A0h] psllw xmm2,1 paddw xmm2,xmm0 psraw xmm1,2 movdqa xmm0, [rdi] pandn xmm8,xmm1 movdqa xmm1, [rsp+60h] paddw xmm1,xmm2 movdqa xmm2, [rbx] psraw xmm1,3 pand xmm3,xmm1 movdqa xmm1, [rbp] movdqa [rsp+0D0h],xmm3 pxor xmm3,xmm3 punpckhbw xmm0,xmm3 punpckhbw xmm1,xmm3 punpckhbw xmm13,xmm3 movdqa [rsp+0C0h],xmm0 movdqa xmm0,[r10+rbp] movdqa [rsp],xmm1 punpckhbw xmm0,xmm3 punpckhbw xmm2,xmm3 movdqa [rsp+80h],xmm0 movdqa xmm0,[rsi+rbp] movdqa [rsp+10h],xmm13 punpckhbw xmm0,xmm3 movdqa [rsp+50h],xmm0 movdqa xmm0,xmm1 movdqa xmm1,xmm13 psubw xmm0,xmm13 psubw xmm1,xmm2 pabsw xmm3,xmm0 pabsw xmm0,xmm1 movdqa xmm1,[rsp] movdqa xmm13,[rsp+40h] movdqa [rsp+110h],xmm2 psubw xmm1, [rsp+80h] pcmpgtw xmm13,xmm0 pcmpgtw xmm11,xmm3 pabsw xmm0,xmm1 pcmpgtw xmm10,xmm3 movdqa xmm1, [rsp+40h] movdqa xmm2,xmm1 movdqa xmm3,xmm1 pcmpgtw xmm2,xmm0 movdqa xmm0, [rsp+10h] pand xmm13,xmm2 pand xmm13,xmm11 movdqa xmm11,[rsp+0C0h] psubw xmm0,xmm11 pabsw xmm0,xmm0 pcmpgtw xmm3,xmm0 pand xmm3,xmm10 movdqa xmm0,[rsp] psubw xmm0,[rsp+50h] movdqa xmm2,[rdx] pabsw xmm0,xmm0 por xmm7,xmm9 movdqa xmm9,[rsp+20h] pcmpgtw xmm1,xmm0 pand xmm9,xmm7 movdqa xmm7,[rsp+20h] movdqa xmm0,xmm7 pandn xmm0,xmm12 movdqa xmm12,[rsp+110h] pand xmm1,xmm10 movdqa xmm10,[rsp+70h] movdqa [rsp+40h],xmm1 movdqa xmm1,xmm13 por xmm9,xmm0 pxor xmm0,xmm0 por xmm4,xmm6 movdqa xmm6,xmm7 punpckhbw xmm2,xmm0 por xmm15,xmm5 movdqa xmm5,[rsp+20h] movdqa xmm0,xmm3 psllw xmm2,1 pandn xmm0,xmm11 pand xmm6,xmm4 movdqa xmm4,[rsp] paddw xmm2,xmm11 pand xmm5,xmm15 movdqa xmm15,[rsp+20h] paddw xmm2,xmm11 paddw xmm2,xmm11 paddw xmm2,xmm12 paddw xmm2,[rsp+10h] paddw xmm2,[rsp] paddw xmm2,xmm10 psraw xmm2,3 pand xmm2,xmm3 por xmm2,xmm0 pand xmm1,xmm2 movdqa xmm0,xmm13 movdqa xmm2,xmm11 pandn xmm0,xmm11 paddw xmm2,xmm12 por xmm1,xmm0 packuswb xmm9,xmm1 movdqa xmm0,xmm7 movdqa xmm7,[rsp+0A0h] pandn xmm0,[rsp+0F0h] movdqa xmm1,xmm3 por xmm6,xmm0 movdqa xmm0,[rsp+10h] paddw xmm0,xmm4 paddw xmm2,xmm0 paddw xmm2,xmm7 movdqa xmm0,xmm3 pandn xmm0,xmm12 psraw xmm2,2 pand xmm1,xmm2 por xmm1,xmm0 movdqa xmm2,xmm13 movdqa xmm0,xmm13 pand xmm2,xmm1 pandn xmm0,xmm12 movdqa xmm1,xmm12 paddw xmm1,[rsp+10h] por xmm2,xmm0 movdqa xmm0,xmm15 pandn xmm0,[rsp+0B0h] paddw xmm1,xmm4 packuswb xmm6,xmm2 movdqa xmm2,xmm3 psllw xmm1,1 por xmm5,xmm0 movdqa xmm0,[rsp+80h] paddw xmm0,xmm10 paddw xmm1,xmm0 paddw xmm11,xmm1 psraw xmm11,3 movdqa xmm1,xmm12 pand xmm2,xmm11 paddw xmm1,xmm12 movdqa xmm11,[rsp+80h] movdqa xmm0, [rsp+10h] por xmm14,[rsp+0E0h] paddw xmm0,xmm11 movdqa xmm4,xmm15 paddw xmm1,xmm0 movdqa xmm0,xmm13 paddw xmm1,xmm7 psraw xmm1,2 pandn xmm3,xmm1 por xmm2,xmm3 movdqa xmm1,xmm13 movdqa xmm3,[rsp+10h] pandn xmm0,xmm3 pand xmm1,xmm2 movdqa xmm2,xmm11 paddw xmm2,[rsp] por xmm1,xmm0 movdqa xmm0,[rsp+0D0h] por xmm0,xmm8 paddw xmm2,xmm3 packuswb xmm5,xmm1 movdqa xmm8,[rsp+40h] movdqa xmm1,[rsp+50h] movdqa xmm3,xmm8 pand xmm4,xmm0 psllw xmm2,1 movdqa xmm0,xmm15 pandn xmm0,[rsp+90h] por xmm4,xmm0 movdqa xmm0,xmm12 paddw xmm0,xmm10 paddw xmm2,xmm0 paddw xmm1,xmm2 movdqa xmm0,[rsp] movdqa xmm2,xmm11 paddw xmm0,xmm12 movdqa xmm12,[rsp] paddw xmm2,xmm11 paddw xmm2,xmm0 psraw xmm1,3 movdqa xmm0,xmm8 pand xmm3,xmm1 paddw xmm2,xmm7 movdqa xmm1,xmm13 psraw xmm2,2 pandn xmm0,xmm2 por xmm3,xmm0 movdqa xmm2,[rsp+50h] movdqa xmm0,xmm13 pandn xmm0,xmm12 pand xmm1,xmm3 paddw xmm2,xmm11 movdqa xmm3,xmm15 por xmm1,xmm0 pand xmm3,xmm14 movdqa xmm14,[rsp+10h] movdqa xmm0,xmm15 pandn xmm0,[rsp+30h] packuswb xmm4,xmm1 movdqa xmm1,xmm8 por xmm3,xmm0 movdqa xmm0,xmm12 paddw xmm0,xmm14 paddw xmm2,xmm0 paddw xmm2,xmm7 movdqa xmm0,xmm8 pandn xmm0,xmm11 psraw xmm2,2 pand xmm1,xmm2 por xmm1,xmm0 movdqa xmm2,xmm13 movdqa xmm0,xmm13 pandn xmm0,xmm11 pand xmm2,xmm1 movdqa xmm1,xmm15 por xmm2,xmm0 packuswb xmm3,xmm2 movdqa xmm0,[rsp+100h] por xmm0,[rsp+120h] pand xmm1,xmm0 movdqa xmm2,[rcx+rbp] movdqa xmm7,[rsp+50h] pandn xmm15,[rsp+60h] lea r11,[rsp+1D8h] pxor xmm0,xmm0 por xmm1,xmm15 movaps xmm15,[r11-0A8h] movdqa [rdi],xmm9 movaps xmm9,[r11-48h] punpckhbw xmm2,xmm0 psllw xmm2,1 paddw xmm2,xmm7 paddw xmm2,xmm7 movdqa [rbx],xmm6 movaps xmm6,[r11-18h] paddw xmm2,xmm7 paddw xmm2,xmm11 movaps xmm11,[r11-68h] paddw xmm2,xmm12 movaps xmm12,[r11-78h] paddw xmm2,xmm14 paddw xmm2,xmm10 psraw xmm2,3 movaps xmm10,[r11-58h] movaps xmm14,[r11-98h] movdqa xmm0,xmm13 pand xmm2,xmm8 pandn xmm8,xmm7 pandn xmm13,xmm7 por xmm2,xmm8 movaps xmm7,[r11-28h] movaps xmm8,[r11-38h] movdqa [r8],xmm5 pand xmm0,xmm2 por xmm0,xmm13 packuswb xmm1,xmm0 movaps xmm13,[r11-88h] movdqa [rbp],xmm4 movdqa [r10+rbp],xmm3 movdqa [rsi+rbp],xmm1 mov rsp,r11 pop rbp pop rbx ret WELS_EXTERN DeblockChromaLt4V_ssse3 mov rax,rsp push rbx push rbp mov r10, rdx mov r11, rcx mov rcx, rdi mov rdx, rsi mov rsi, r10 mov r10, r9 mov rbp, r8 mov r8, rsi mov r9, r11 sub rsp,0C8h pxor xmm1,xmm1 mov rbx,rcx movsxd r11,r8d movsx ecx,byte [r10] movsx r8d,byte [r10+2] mov rdi,rdx movq xmm2,[rbx] movq xmm9,[r11+rbx] movsx edx,byte [r10+1] mov word [rsp+2],cx mov word [rsp],cx movsx eax,byte [r10+3] mov word [rsp+6],dx mov word [rsp+4],dx movdqa xmm11,xmm1 mov word [rsp+0Eh],ax mov word [rsp+0Ch],ax lea eax,[r11+r11] movsxd rcx,eax mov rax,rbx mov rdx,rdi sub rax,rcx mov word [rsp+0Ah],r8w mov word [rsp+8],r8w movdqa xmm6,[rsp] movdqa xmm7,xmm6 movq xmm13, [rax] mov rax,rdi sub rax,rcx mov rcx,rbx pcmpgtw xmm7,xmm1 psubw xmm11,xmm6 sub rcx,r11 sub rdx,r11 movq xmm0,[rax] movsx eax,r9w movq xmm15,[rcx] punpcklqdq xmm13,xmm0 movq xmm0, [rdx] movdqa xmm4,xmm13 punpcklqdq xmm15,xmm0 movq xmm0, [rdi] punpcklbw xmm4,xmm1 movdqa xmm12,xmm15 punpcklqdq xmm2,xmm0 movq xmm0, [r11+rdi] punpcklbw xmm12,xmm1 movdqa xmm14,xmm2 punpcklqdq xmm9,xmm0 punpckhbw xmm2,xmm1 punpcklbw xmm14,xmm1 movd xmm0,eax mov eax, ebp ; iBeta punpckhbw xmm13,xmm1 punpckhbw xmm15,xmm1 movdqa xmm3,xmm9 movdqa [rsp+10h],xmm2 punpcklwd xmm0,xmm0 punpckhbw xmm9,xmm1 punpcklbw xmm3,xmm1 movdqa xmm1,xmm14 pshufd xmm10,xmm0,0 movd xmm0,eax mov eax,4 cwde punpcklwd xmm0,xmm0 pshufd xmm8,xmm0,0 movd xmm0,eax punpcklwd xmm0,xmm0 pshufd xmm5,xmm0,0 psubw xmm1,xmm12 movdqa xmm2,xmm10 lea r11,[rsp+0C8h] psllw xmm1,2 movdqa xmm0,xmm4 psubw xmm4,xmm12 psubw xmm0,xmm3 psubw xmm3,xmm14 paddw xmm1,xmm0 paddw xmm1,xmm5 movdqa xmm0,xmm11 psraw xmm1,3 pmaxsw xmm0,xmm1 pminsw xmm6,xmm0 movdqa xmm1,xmm8 movdqa xmm0,xmm12 psubw xmm0,xmm14 pabsw xmm0,xmm0 pcmpgtw xmm2,xmm0 pabsw xmm0,xmm4 pcmpgtw xmm1,xmm0 pabsw xmm0,xmm3 movdqa xmm3,[rsp] pand xmm2,xmm1 movdqa xmm1,xmm8 pcmpgtw xmm1,xmm0 movdqa xmm0,xmm13 pand xmm2,xmm1 psubw xmm0,xmm9 psubw xmm13,xmm15 pand xmm2,xmm7 pand xmm6,xmm2 paddw xmm12,xmm6 psubw xmm14,xmm6 movdqa xmm2,[rsp+10h] movaps xmm6,[r11-18h] movdqa xmm1,xmm2 psubw xmm1,xmm15 psubw xmm9,xmm2 psllw xmm1,2 paddw xmm1,xmm0 paddw xmm1,xmm5 movdqa xmm0,xmm15 psubw xmm0,xmm2 psraw xmm1,3 pmaxsw xmm11,xmm1 pabsw xmm0,xmm0 movdqa xmm1,xmm8 pcmpgtw xmm10,xmm0 pabsw xmm0,xmm13 pminsw xmm3,xmm11 movaps xmm11,[r11-68h] movaps xmm13,[rsp+40h] pcmpgtw xmm1,xmm0 pabsw xmm0,xmm9 movaps xmm9, [r11-48h] pand xmm10,xmm1 pcmpgtw xmm8,xmm0 pand xmm10,xmm8 pand xmm10,xmm7 movaps xmm8,[r11-38h] movaps xmm7,[r11-28h] pand xmm3,xmm10 paddw xmm15,xmm3 psubw xmm2,xmm3 movaps xmm10,[r11-58h] packuswb xmm12,xmm15 movaps xmm15,[rsp+20h] packuswb xmm14,xmm2 movq [rcx],xmm12 movq [rbx],xmm14 psrldq xmm12,8 psrldq xmm14,8 movq [rdx],xmm12 movaps xmm12,[r11-78h] movq [rdi],xmm14 movaps xmm14,[rsp+30h] mov rsp,r11 pop rbp pop rbx ret WELS_EXTERN DeblockChromaEq4V_ssse3 mov rax,rsp push rbx push rbp mov rbp, r8 mov r8, rdx mov r9, rcx mov rcx, rdi mov rdx, rsi sub rsp,90h pxor xmm1,xmm1 mov r11,rcx mov rbx,rdx mov r10d,r9d movq xmm13,[r11] lea eax,[r8+r8] movsxd r9,eax mov rax,rcx sub rax,r9 movq xmm14,[rax] mov rax,rdx sub rax,r9 movq xmm0,[rax] movsxd rax,r8d sub rcx,rax sub rdx,rax movq xmm12,[rax+r11] movq xmm10,[rcx] punpcklqdq xmm14,xmm0 movdqa xmm8,xmm14 movq xmm0,[rdx] punpcklbw xmm8,xmm1 punpckhbw xmm14,xmm1 punpcklqdq xmm10,xmm0 movq xmm0,[rbx] movdqa xmm5,xmm10 punpcklqdq xmm13,xmm0 movq xmm0, [rax+rbx] punpcklbw xmm5,xmm1 movsx eax,r10w movdqa xmm9,xmm13 punpcklqdq xmm12,xmm0 punpcklbw xmm9,xmm1 punpckhbw xmm10,xmm1 movd xmm0,eax mov eax, ebp ; iBeta punpckhbw xmm13,xmm1 movdqa xmm7,xmm12 punpcklwd xmm0,xmm0 punpckhbw xmm12,xmm1 pshufd xmm11,xmm0,0 punpcklbw xmm7,xmm1 movd xmm0,eax movdqa xmm1,xmm8 psubw xmm1,xmm5 punpcklwd xmm0,xmm0 movdqa xmm6,xmm11 pshufd xmm3,xmm0,0 movdqa xmm0,xmm5 psubw xmm0,xmm9 movdqa xmm2,xmm3 pabsw xmm0,xmm0 pcmpgtw xmm6,xmm0 pabsw xmm0,xmm1 movdqa xmm1,xmm3 pcmpgtw xmm2,xmm0 pand xmm6,xmm2 movdqa xmm0,xmm7 movdqa xmm2,xmm3 psubw xmm0,xmm9 pabsw xmm0,xmm0 pcmpgtw xmm1,xmm0 pand xmm6,xmm1 movdqa xmm0,xmm10 movdqa xmm1,xmm14 psubw xmm0,xmm13 psubw xmm1,xmm10 pabsw xmm0,xmm0 pcmpgtw xmm11,xmm0 pabsw xmm0,xmm1 pcmpgtw xmm2,xmm0 pand xmm11,xmm2 movdqa xmm0,xmm12 movdqa xmm4,xmm6 movdqa xmm1,xmm8 mov eax,2 cwde paddw xmm1,xmm8 psubw xmm0,xmm13 paddw xmm1,xmm5 pabsw xmm0,xmm0 movdqa xmm2,xmm14 paddw xmm1,xmm7 pcmpgtw xmm3,xmm0 paddw xmm2,xmm14 movd xmm0,eax pand xmm11,xmm3 paddw xmm7,xmm7 paddw xmm2,xmm10 punpcklwd xmm0,xmm0 paddw xmm2,xmm12 paddw xmm12,xmm12 pshufd xmm3,xmm0,0 paddw xmm7,xmm9 paddw xmm12,xmm13 movdqa xmm0,xmm6 paddw xmm1,xmm3 pandn xmm0,xmm5 paddw xmm7,xmm8 psraw xmm1,2 paddw xmm12,xmm14 paddw xmm7,xmm3 ;movaps xmm14,[rsp] pand xmm4,xmm1 paddw xmm12,xmm3 psraw xmm7,2 movdqa xmm1,xmm11 por xmm4,xmm0 psraw xmm12,2 paddw xmm2,xmm3 movdqa xmm0,xmm11 pandn xmm0,xmm10 psraw xmm2,2 pand xmm1,xmm2 por xmm1,xmm0 packuswb xmm4,xmm1 movdqa xmm0,xmm11 movdqa xmm1,xmm6 pand xmm1,xmm7 movq [rcx],xmm4 pandn xmm6,xmm9 pandn xmm11,xmm13 pand xmm0,xmm12 por xmm1,xmm6 por xmm0,xmm11 psrldq xmm4,8 packuswb xmm1,xmm0 movq [r11],xmm1 psrldq xmm1,8 movq [rdx],xmm4 lea r11,[rsp+90h] movq [rbx],xmm1 mov rsp,r11 pop rbp pop rbx ret WELS_EXTERN DeblockChromaEq4H_ssse3 mov rax,rsp push rbx push rbp push r12 mov rbp, r8 mov r8, rdx mov r9, rcx mov rcx, rdi mov rdx, rsi mov rdi, rdx sub rsp,140h lea eax,[r8*4] movsxd r10,eax mov eax,[rcx-2] mov [rsp+10h],eax lea rbx,[r10+rdx-2] lea r11,[r10+rcx-2] movdqa xmm5,[rsp+10h] movsxd r10,r8d mov eax,[r10+rcx-2] lea rdx,[r10+r10*2] mov [rsp+20h],eax mov eax,[rcx+r10*2-2] mov [rsp+30h],eax mov eax,[rdx+rcx-2] movdqa xmm2,[rsp+20h] mov [rsp+40h],eax mov eax, [rdi-2] movdqa xmm4,[rsp+30h] mov [rsp+50h],eax mov eax,[r10+rdi-2] movdqa xmm3,[rsp+40h] mov [rsp+60h],eax mov eax,[rdi+r10*2-2] punpckldq xmm5,[rsp+50h] mov [rsp+70h],eax mov eax, [rdx+rdi-2] punpckldq xmm2, [rsp+60h] mov [rsp+80h],eax mov eax,[r11] punpckldq xmm4, [rsp+70h] mov [rsp+50h],eax mov eax,[rbx] punpckldq xmm3,[rsp+80h] mov [rsp+60h],eax mov eax,[r10+r11] movdqa xmm0, [rsp+50h] punpckldq xmm0, [rsp+60h] punpcklqdq xmm5,xmm0 movdqa [rsp+50h],xmm0 mov [rsp+50h],eax mov eax,[r10+rbx] movdqa xmm0,[rsp+50h] movdqa xmm1,xmm5 mov [rsp+60h],eax mov eax,[r11+r10*2] punpckldq xmm0, [rsp+60h] punpcklqdq xmm2,xmm0 punpcklbw xmm1,xmm2 punpckhbw xmm5,xmm2 movdqa [rsp+50h],xmm0 mov [rsp+50h],eax mov eax,[rbx+r10*2] movdqa xmm0,[rsp+50h] mov [rsp+60h],eax mov eax, [rdx+r11] movdqa xmm15,xmm1 punpckldq xmm0,[rsp+60h] punpcklqdq xmm4,xmm0 movdqa [rsp+50h],xmm0 mov [rsp+50h],eax mov eax, [rdx+rbx] movdqa xmm0,[rsp+50h] mov [rsp+60h],eax punpckldq xmm0, [rsp+60h] punpcklqdq xmm3,xmm0 movdqa xmm0,xmm4 punpcklbw xmm0,xmm3 punpckhbw xmm4,xmm3 punpcklwd xmm15,xmm0 punpckhwd xmm1,xmm0 movdqa xmm0,xmm5 movdqa xmm12,xmm15 punpcklwd xmm0,xmm4 punpckhwd xmm5,xmm4 punpckldq xmm12,xmm0 punpckhdq xmm15,xmm0 movdqa xmm0,xmm1 movdqa xmm11,xmm12 punpckldq xmm0,xmm5 punpckhdq xmm1,xmm5 punpcklqdq xmm11,xmm0 punpckhqdq xmm12,xmm0 movsx eax,r9w movdqa xmm14,xmm15 punpcklqdq xmm14,xmm1 punpckhqdq xmm15,xmm1 pxor xmm1,xmm1 movd xmm0,eax movdqa xmm4,xmm12 movdqa xmm8,xmm11 mov eax, ebp ; iBeta punpcklwd xmm0,xmm0 punpcklbw xmm4,xmm1 punpckhbw xmm12,xmm1 movdqa xmm9,xmm14 movdqa xmm7,xmm15 movdqa xmm10,xmm15 pshufd xmm13,xmm0,0 punpcklbw xmm9,xmm1 punpckhbw xmm14,xmm1 movdqa xmm6,xmm13 movd xmm0,eax movdqa [rsp],xmm11 mov eax,2 cwde punpckhbw xmm11,xmm1 punpckhbw xmm10,xmm1 punpcklbw xmm7,xmm1 punpcklwd xmm0,xmm0 punpcklbw xmm8,xmm1 pshufd xmm3,xmm0,0 movdqa xmm1,xmm8 movdqa xmm0,xmm4 psubw xmm0,xmm9 psubw xmm1,xmm4 movdqa xmm2,xmm3 pabsw xmm0,xmm0 pcmpgtw xmm6,xmm0 pabsw xmm0,xmm1 movdqa xmm1,xmm3 pcmpgtw xmm2,xmm0 pand xmm6,xmm2 movdqa xmm0,xmm7 movdqa xmm2,xmm3 psubw xmm0,xmm9 pabsw xmm0,xmm0 pcmpgtw xmm1,xmm0 pand xmm6,xmm1 movdqa xmm0,xmm12 movdqa xmm1,xmm11 psubw xmm0,xmm14 psubw xmm1,xmm12 movdqa xmm5,xmm6 pabsw xmm0,xmm0 pcmpgtw xmm13,xmm0 pabsw xmm0,xmm1 movdqa xmm1,xmm8 pcmpgtw xmm2,xmm0 paddw xmm1,xmm8 movdqa xmm0,xmm10 pand xmm13,xmm2 psubw xmm0,xmm14 paddw xmm1,xmm4 movdqa xmm2,xmm11 pabsw xmm0,xmm0 paddw xmm2,xmm11 paddw xmm1,xmm7 pcmpgtw xmm3,xmm0 paddw xmm2,xmm12 movd xmm0,eax pand xmm13,xmm3 paddw xmm2,xmm10 punpcklwd xmm0,xmm0 pshufd xmm3,xmm0,0 movdqa xmm0,xmm6 paddw xmm1,xmm3 pandn xmm0,xmm4 paddw xmm2,xmm3 psraw xmm1,2 pand xmm5,xmm1 por xmm5,xmm0 paddw xmm7,xmm7 paddw xmm10,xmm10 psraw xmm2,2 movdqa xmm1,xmm13 movdqa xmm0,xmm13 pandn xmm0,xmm12 pand xmm1,xmm2 paddw xmm7,xmm9 por xmm1,xmm0 paddw xmm10,xmm14 paddw xmm7,xmm8 movdqa xmm0,xmm13 packuswb xmm5,xmm1 paddw xmm7,xmm3 paddw xmm10,xmm11 movdqa xmm1,xmm6 paddw xmm10,xmm3 pandn xmm6,xmm9 psraw xmm7,2 pand xmm1,xmm7 psraw xmm10,2 pandn xmm13,xmm14 pand xmm0,xmm10 por xmm1,xmm6 movdqa xmm6,[rsp] movdqa xmm4,xmm6 por xmm0,xmm13 punpcklbw xmm4,xmm5 punpckhbw xmm6,xmm5 movdqa xmm3,xmm4 packuswb xmm1,xmm0 movdqa xmm0,xmm1 punpckhbw xmm1,xmm15 punpcklbw xmm0,xmm15 punpcklwd xmm3,xmm0 punpckhwd xmm4,xmm0 movdqa xmm0,xmm6 movdqa xmm2,xmm3 punpcklwd xmm0,xmm1 punpckhwd xmm6,xmm1 movdqa xmm1,xmm4 punpckldq xmm2,xmm0 punpckhdq xmm3,xmm0 punpckldq xmm1,xmm6 movdqa xmm0,xmm2 punpcklqdq xmm0,xmm1 punpckhdq xmm4,xmm6 punpckhqdq xmm2,xmm1 movdqa [rsp+10h],xmm0 movdqa [rsp+60h],xmm2 movdqa xmm0,xmm3 mov eax,[rsp+10h] mov [rcx-2],eax mov eax,[rsp+60h] punpcklqdq xmm0,xmm4 punpckhqdq xmm3,xmm4 mov [r10+rcx-2],eax movdqa [rsp+20h],xmm0 mov eax, [rsp+20h] movdqa [rsp+70h],xmm3 mov [rcx+r10*2-2],eax mov eax,[rsp+70h] mov [rdx+rcx-2],eax mov eax,[rsp+18h] mov [r11],eax mov eax,[rsp+68h] mov [r10+r11],eax mov eax,[rsp+28h] mov [r11+r10*2],eax mov eax,[rsp+78h] mov [rdx+r11],eax mov eax,[rsp+14h] mov [rdi-2],eax mov eax,[rsp+64h] mov [r10+rdi-2],eax mov eax,[rsp+24h] mov [rdi+r10*2-2],eax mov eax, [rsp+74h] mov [rdx+rdi-2],eax mov eax, [rsp+1Ch] mov [rbx],eax mov eax, [rsp+6Ch] mov [r10+rbx],eax mov eax,[rsp+2Ch] mov [rbx+r10*2],eax mov eax,[rsp+7Ch] mov [rdx+rbx],eax lea r11,[rsp+140h] mov rbx, [r11+28h] mov rsp,r11 pop r12 pop rbp pop rbx ret WELS_EXTERN DeblockChromaLt4H_ssse3 mov rax,rsp push rbx push rbp push r12 push r13 push r14 sub rsp,170h mov r13, r8 mov r14, r9 mov r8, rdx mov r9, rcx mov rdx, rdi mov rcx, rsi movsxd rsi,r8d lea eax,[r8*4] mov r11d,r9d movsxd r10,eax mov eax, [rcx-2] mov r12,rdx mov [rsp+40h],eax mov eax, [rsi+rcx-2] lea rbx,[r10+rcx-2] movdqa xmm5,[rsp+40h] mov [rsp+50h],eax mov eax, [rcx+rsi*2-2] lea rbp,[r10+rdx-2] movdqa xmm2, [rsp+50h] mov [rsp+60h],eax lea r10,[rsi+rsi*2] mov rdi,rcx mov eax,[r10+rcx-2] movdqa xmm4,[rsp+60h] mov [rsp+70h],eax mov eax,[rdx-2] mov [rsp+80h],eax mov eax, [rsi+rdx-2] movdqa xmm3,[rsp+70h] mov [rsp+90h],eax mov eax,[rdx+rsi*2-2] punpckldq xmm5,[rsp+80h] mov [rsp+0A0h],eax mov eax, [r10+rdx-2] punpckldq xmm2,[rsp+90h] mov [rsp+0B0h],eax mov eax, [rbx] punpckldq xmm4,[rsp+0A0h] mov [rsp+80h],eax mov eax,[rbp] punpckldq xmm3,[rsp+0B0h] mov [rsp+90h],eax mov eax,[rsi+rbx] movdqa xmm0,[rsp+80h] punpckldq xmm0,[rsp+90h] punpcklqdq xmm5,xmm0 movdqa [rsp+80h],xmm0 mov [rsp+80h],eax mov eax,[rsi+rbp] movdqa xmm0,[rsp+80h] movdqa xmm1,xmm5 mov [rsp+90h],eax mov eax,[rbx+rsi*2] punpckldq xmm0,[rsp+90h] punpcklqdq xmm2,xmm0 punpcklbw xmm1,xmm2 punpckhbw xmm5,xmm2 movdqa [rsp+80h],xmm0 mov [rsp+80h],eax mov eax,[rbp+rsi*2] movdqa xmm0, [rsp+80h] mov [rsp+90h],eax mov eax,[r10+rbx] movdqa xmm7,xmm1 punpckldq xmm0,[rsp+90h] punpcklqdq xmm4,xmm0 movdqa [rsp+80h],xmm0 mov [rsp+80h],eax mov eax, [r10+rbp] movdqa xmm0,[rsp+80h] mov [rsp+90h],eax punpckldq xmm0,[rsp+90h] punpcklqdq xmm3,xmm0 movdqa xmm0,xmm4 punpcklbw xmm0,xmm3 punpckhbw xmm4,xmm3 punpcklwd xmm7,xmm0 punpckhwd xmm1,xmm0 movdqa xmm0,xmm5 movdqa xmm6,xmm7 punpcklwd xmm0,xmm4 punpckhwd xmm5,xmm4 punpckldq xmm6,xmm0 punpckhdq xmm7,xmm0 movdqa xmm0,xmm1 punpckldq xmm0,xmm5 mov rax, r14 ; pTC punpckhdq xmm1,xmm5 movdqa xmm9,xmm6 punpckhqdq xmm6,xmm0 punpcklqdq xmm9,xmm0 movdqa xmm2,xmm7 movdqa xmm13,xmm6 movdqa xmm4,xmm9 movdqa [rsp+10h],xmm9 punpcklqdq xmm2,xmm1 punpckhqdq xmm7,xmm1 pxor xmm1,xmm1 movsx ecx,byte [rax+3] movsx edx,byte [rax+2] movsx r8d,byte [rax+1] movsx r9d,byte [rax] movdqa xmm10,xmm1 movdqa xmm15,xmm2 punpckhbw xmm2,xmm1 punpckhbw xmm6,xmm1 punpcklbw xmm4,xmm1 movsx eax,r11w mov word [rsp+0Eh],cx mov word [rsp+0Ch],cx movdqa xmm3,xmm7 movdqa xmm8,xmm7 movdqa [rsp+20h],xmm7 punpcklbw xmm15,xmm1 punpcklbw xmm13,xmm1 punpcklbw xmm3,xmm1 mov word [rsp+0Ah],dx mov word [rsp+8],dx mov word [rsp+6],r8w movd xmm0,eax movdqa [rsp+30h],xmm6 punpckhbw xmm9,xmm1 punpckhbw xmm8,xmm1 punpcklwd xmm0,xmm0 mov eax, r13d ; iBeta mov word [rsp+4],r8w mov word [rsp+2],r9w pshufd xmm12,xmm0,0 mov word [rsp],r9w movd xmm0,eax mov eax,4 cwde movdqa xmm14, [rsp] movdqa [rsp],xmm2 movdqa xmm2,xmm12 punpcklwd xmm0,xmm0 pshufd xmm11,xmm0,0 psubw xmm10,xmm14 movd xmm0,eax movdqa xmm7,xmm14 movdqa xmm6,xmm14 pcmpgtw xmm7,xmm1 punpcklwd xmm0,xmm0 pshufd xmm5,xmm0,0 movdqa xmm0,xmm4 movdqa xmm1,xmm15 psubw xmm4,xmm13 psubw xmm0,xmm3 psubw xmm1,xmm13 psubw xmm3,xmm15 psllw xmm1,2 paddw xmm1,xmm0 paddw xmm1,xmm5 movdqa xmm0,xmm10 psraw xmm1,3 pmaxsw xmm0,xmm1 pminsw xmm6,xmm0 movdqa xmm1,xmm11 movdqa xmm0,xmm13 psubw xmm0,xmm15 pabsw xmm0,xmm0 pcmpgtw xmm2,xmm0 pabsw xmm0,xmm4 pcmpgtw xmm1,xmm0 pabsw xmm0,xmm3 pand xmm2,xmm1 movdqa xmm1,xmm11 movdqa xmm3,[rsp+30h] pcmpgtw xmm1,xmm0 movdqa xmm0,xmm9 pand xmm2,xmm1 psubw xmm0,xmm8 psubw xmm9,xmm3 pand xmm2,xmm7 pand xmm6,xmm2 psubw xmm15,xmm6 paddw xmm13,xmm6 movdqa xmm2,[rsp] movdqa xmm1,xmm2 psubw xmm1,xmm3 psubw xmm8,xmm2 psllw xmm1,2 paddw xmm1,xmm0 paddw xmm1,xmm5 movdqa xmm0,xmm3 movdqa xmm5,[rsp+10h] psubw xmm0,xmm2 psraw xmm1,3 movdqa xmm4,xmm5 pabsw xmm0,xmm0 pmaxsw xmm10,xmm1 movdqa xmm1,xmm11 pcmpgtw xmm12,xmm0 pabsw xmm0,xmm9 pminsw xmm14,xmm10 pcmpgtw xmm1,xmm0 pabsw xmm0,xmm8 pcmpgtw xmm11,xmm0 pand xmm12,xmm1 movdqa xmm1,[rsp+20h] pand xmm12,xmm11 pand xmm12,xmm7 pand xmm14,xmm12 paddw xmm3,xmm14 psubw xmm2,xmm14 packuswb xmm13,xmm3 packuswb xmm15,xmm2 punpcklbw xmm4,xmm13 punpckhbw xmm5,xmm13 movdqa xmm0,xmm15 punpcklbw xmm0,xmm1 punpckhbw xmm15,xmm1 movdqa xmm3,xmm4 punpcklwd xmm3,xmm0 punpckhwd xmm4,xmm0 movdqa xmm0,xmm5 movdqa xmm2,xmm3 movdqa xmm1,xmm4 punpcklwd xmm0,xmm15 punpckhwd xmm5,xmm15 punpckldq xmm2,xmm0 punpckhdq xmm3,xmm0 punpckldq xmm1,xmm5 movdqa xmm0,xmm2 punpcklqdq xmm0,xmm1 punpckhdq xmm4,xmm5 punpckhqdq xmm2,xmm1 movdqa [rsp+40h],xmm0 movdqa xmm0,xmm3 movdqa [rsp+90h],xmm2 mov eax,[rsp+40h] mov [rdi-2],eax mov eax, [rsp+90h] punpcklqdq xmm0,xmm4 punpckhqdq xmm3,xmm4 mov [rsi+rdi-2],eax movdqa [rsp+50h],xmm0 mov eax,[rsp+50h] movdqa [rsp+0A0h],xmm3 mov [rdi+rsi*2-2],eax mov eax,[rsp+0A0h] mov [r10+rdi-2],eax mov eax,[rsp+48h] mov [rbx],eax mov eax,[rsp+98h] mov [rsi+rbx],eax mov eax,[rsp+58h] mov [rbx+rsi*2],eax mov eax, [rsp+0A8h] mov [r10+rbx],eax mov eax, [rsp+44h] mov [r12-2],eax mov eax,[rsp+94h] mov [rsi+r12-2],eax mov eax,[rsp+54h] mov [r12+rsi*2-2],eax mov eax, [rsp+0A4h] mov [r10+r12-2],eax mov eax,[rsp+4Ch] mov [rbp],eax mov eax,[rsp+9Ch] mov [rsi+rbp],eax mov eax, [rsp+5Ch] mov [rbp+rsi*2],eax mov eax,[rsp+0ACh] mov [r10+rbp],eax lea r11,[rsp+170h] mov rsp,r11 pop r14 pop r13 pop r12 pop rbp pop rbx ret %elifdef X86_32 ;******************************************************************************** ; void DeblockChromaEq4V_ssse3(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride, ; int32_t iAlpha, int32_t iBeta) ;******************************************************************************** WELS_EXTERN DeblockChromaEq4V_ssse3 push ebp mov ebp,esp and esp,0FFFFFFF0h sub esp,68h mov edx,[ebp+10h] ; iStride mov eax,[ebp+8] ; pPixCb mov ecx,[ebp+0Ch] ; pPixCr movq xmm4,[ecx] movq xmm5,[edx+ecx] push esi push edi lea esi,[edx+edx] mov edi,eax sub edi,esi movq xmm1,[edi] mov edi,ecx sub edi,esi movq xmm2,[edi] punpcklqdq xmm1,xmm2 mov esi,eax sub esi,edx movq xmm2,[esi] mov edi,ecx sub edi,edx movq xmm3,[edi] punpcklqdq xmm2,xmm3 movq xmm3,[eax] punpcklqdq xmm3,xmm4 movq xmm4,[edx+eax] mov edx, [ebp + 14h] punpcklqdq xmm4,xmm5 movd xmm5,edx mov edx, [ebp + 18h] pxor xmm0,xmm0 movdqa xmm6,xmm5 punpcklwd xmm6,xmm5 pshufd xmm5,xmm6,0 movd xmm6,edx movdqa xmm7,xmm6 punpcklwd xmm7,xmm6 pshufd xmm6,xmm7,0 movdqa xmm7,xmm1 punpckhbw xmm1,xmm0 punpcklbw xmm7,xmm0 movdqa [esp+40h],xmm1 movdqa [esp+60h],xmm7 movdqa xmm7,xmm2 punpcklbw xmm7,xmm0 movdqa [esp+10h],xmm7 movdqa xmm7,xmm3 punpcklbw xmm7,xmm0 punpckhbw xmm3,xmm0 movdqa [esp+50h],xmm7 movdqa xmm7,xmm4 punpckhbw xmm4,xmm0 punpckhbw xmm2,xmm0 punpcklbw xmm7,xmm0 movdqa [esp+30h],xmm3 movdqa xmm3,[esp+10h] movdqa xmm1,xmm3 psubw xmm1,[esp+50h] pabsw xmm1,xmm1 movdqa [esp+20h],xmm4 movdqa xmm0,xmm5 pcmpgtw xmm0,xmm1 movdqa xmm1,[esp+60h] psubw xmm1,xmm3 pabsw xmm1,xmm1 movdqa xmm4,xmm6 pcmpgtw xmm4,xmm1 pand xmm0,xmm4 movdqa xmm1,xmm7 psubw xmm1,[esp+50h] pabsw xmm1,xmm1 movdqa xmm4,xmm6 pcmpgtw xmm4,xmm1 movdqa xmm1,xmm2 psubw xmm1,[esp+30h] pabsw xmm1,xmm1 pcmpgtw xmm5,xmm1 movdqa xmm1,[esp+40h] pand xmm0,xmm4 psubw xmm1,xmm2 pabsw xmm1,xmm1 movdqa xmm4,xmm6 pcmpgtw xmm4,xmm1 movdqa xmm1,[esp+20h] psubw xmm1,[esp+30h] pand xmm5,xmm4 pabsw xmm1,xmm1 pcmpgtw xmm6,xmm1 pand xmm5,xmm6 mov edx,2 movsx edx,dx movd xmm1,edx movdqa xmm4,xmm1 punpcklwd xmm4,xmm1 pshufd xmm1,xmm4,0 movdqa xmm4,[esp+60h] movdqa xmm6,xmm4 paddw xmm6,xmm4 paddw xmm6,xmm3 paddw xmm6,xmm7 movdqa [esp+10h],xmm1 paddw xmm6,[esp+10h] psraw xmm6,2 movdqa xmm4,xmm0 pandn xmm4,xmm3 movdqa xmm3,[esp+40h] movdqa xmm1,xmm0 pand xmm1,xmm6 por xmm1,xmm4 movdqa xmm6,xmm3 paddw xmm6,xmm3 movdqa xmm3,[esp+10h] paddw xmm6,xmm2 paddw xmm6,[esp+20h] paddw xmm6,xmm3 psraw xmm6,2 movdqa xmm4,xmm5 pand xmm4,xmm6 movdqa xmm6,xmm5 pandn xmm6,xmm2 por xmm4,xmm6 packuswb xmm1,xmm4 movdqa xmm4,[esp+50h] movdqa xmm6,xmm7 paddw xmm6,xmm7 paddw xmm6,xmm4 paddw xmm6,[esp+60h] paddw xmm6,xmm3 psraw xmm6,2 movdqa xmm2,xmm0 pand xmm2,xmm6 pandn xmm0,xmm4 por xmm2,xmm0 movdqa xmm0,[esp+20h] movdqa xmm6,xmm0 paddw xmm6,xmm0 movdqa xmm0,[esp+30h] paddw xmm6,xmm0 paddw xmm6,[esp+40h] movdqa xmm4,xmm5 paddw xmm6,xmm3 movq [esi],xmm1 psraw xmm6,2 pand xmm4,xmm6 pandn xmm5,xmm0 por xmm4,xmm5 packuswb xmm2,xmm4 movq [eax],xmm2 psrldq xmm1,8 movq [edi],xmm1 pop edi psrldq xmm2,8 movq [ecx],xmm2 pop esi mov esp,ebp pop ebp ret ;****************************************************************************** ; void DeblockChromaLt4V_ssse3(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride, ; int32_t iAlpha, int32_t iBeta, int8_t * pTC); ;******************************************************************************* WELS_EXTERN DeblockChromaLt4V_ssse3 push ebp mov ebp,esp and esp,0FFFFFFF0h sub esp,0E4h push ebx push esi mov esi, [ebp+1Ch] ; pTC movsx ebx, byte [esi+2] push edi movsx di,byte [esi+3] mov word [esp+0Ch],bx movsx bx,byte [esi+1] movsx esi,byte [esi] mov word [esp+0Eh],si movzx esi,di movd xmm1,esi movzx esi,di movd xmm2,esi mov si,word [esp+0Ch] mov edx, [ebp + 10h] mov eax, [ebp + 08h] movzx edi,si movzx esi,si mov ecx, [ebp + 0Ch] movd xmm4,esi movzx esi,bx movd xmm5,esi movd xmm3,edi movzx esi,bx movd xmm6,esi mov si,word [esp+0Eh] movzx edi,si movzx esi,si punpcklwd xmm6,xmm2 pxor xmm0,xmm0 movdqa [esp+40h],xmm0 movd xmm7,edi movd xmm0,esi lea esi,[edx+edx] mov edi,eax sub edi,esi punpcklwd xmm5,xmm1 movdqa xmm1,[esp+40h] punpcklwd xmm0,xmm4 movq xmm4,[edx+ecx] punpcklwd xmm7,xmm3 movq xmm3,[eax] punpcklwd xmm0,xmm6 movq xmm6,[edi] punpcklwd xmm7,xmm5 punpcklwd xmm0,xmm7 mov edi,ecx sub edi,esi movdqa xmm2,xmm1 psubw xmm2,xmm0 movdqa [esp+60h],xmm2 movq xmm2, [edi] punpcklqdq xmm6,xmm2 mov esi,eax sub esi,edx movq xmm7,[esi] mov edi,ecx sub edi,edx movq xmm2,[edi] punpcklqdq xmm7,xmm2 movq xmm2,[ecx] punpcklqdq xmm3,xmm2 movq xmm2,[edx+eax] movsx edx,word [ebp + 14h] punpcklqdq xmm2,xmm4 movdqa [esp+0E0h],xmm2 movd xmm2,edx movsx edx,word [ebp + 18h] movdqa xmm4,xmm2 punpcklwd xmm4,xmm2 movd xmm2,edx movdqa xmm5,xmm2 punpcklwd xmm5,xmm2 pshufd xmm2,xmm5,0 movdqa [esp+50h],xmm2 movdqa xmm2,xmm6 punpcklbw xmm2,xmm1 movdqa [esp+0D0h],xmm3 pshufd xmm4,xmm4,0 movdqa [esp+30h],xmm2 punpckhbw xmm6,xmm1 movdqa [esp+80h],xmm6 movdqa xmm6,[esp+0D0h] punpckhbw xmm6,xmm1 movdqa [esp+70h],xmm6 movdqa xmm6, [esp+0E0h] punpckhbw xmm6,xmm1 movdqa [esp+90h],xmm6 movdqa xmm5, [esp+0E0h] movdqa xmm2,xmm7 punpckhbw xmm7,xmm1 punpcklbw xmm5,xmm1 movdqa [esp+0A0h],xmm7 punpcklbw xmm3,xmm1 mov edx,4 punpcklbw xmm2,xmm1 movsx edx,dx movd xmm6,edx movdqa xmm7,xmm6 punpcklwd xmm7,xmm6 pshufd xmm6,xmm7,0 movdqa xmm7,[esp+30h] movdqa [esp+20h],xmm6 psubw xmm7,xmm5 movdqa xmm6,xmm0 pcmpgtw xmm6,xmm1 movdqa xmm1,[esp+60h] movdqa [esp+40h],xmm6 movdqa xmm6,xmm3 psubw xmm6,xmm2 psllw xmm6,2 paddw xmm6,xmm7 paddw xmm6, [esp+20h] movdqa xmm7, [esp+50h] psraw xmm6,3 pmaxsw xmm1,xmm6 movdqa [esp+10h],xmm0 movdqa xmm6, [esp+10h] pminsw xmm6,xmm1 movdqa [esp+10h],xmm6 movdqa xmm1,xmm2 psubw xmm1,xmm3 pabsw xmm1,xmm1 movdqa xmm6,xmm4 pcmpgtw xmm6,xmm1 movdqa xmm1, [esp+30h] psubw xmm1,xmm2 pabsw xmm1,xmm1 pcmpgtw xmm7,xmm1 movdqa xmm1,[esp+50h] pand xmm6,xmm7 movdqa xmm7,[esp+50h] psubw xmm5,xmm3 pabsw xmm5,xmm5 pcmpgtw xmm1,xmm5 movdqa xmm5,[esp+80h] psubw xmm5,[esp+90h] pand xmm6,xmm1 pand xmm6,[esp+40h] movdqa xmm1,[esp+10h] pand xmm1,xmm6 movdqa xmm6,[esp+70h] movdqa [esp+30h],xmm1 movdqa xmm1,[esp+0A0h] psubw xmm6,xmm1 psllw xmm6,2 paddw xmm6,xmm5 paddw xmm6,[esp+20h] movdqa xmm5,[esp+60h] psraw xmm6,3 pmaxsw xmm5,xmm6 pminsw xmm0,xmm5 movdqa xmm5,[esp+70h] movdqa xmm6,xmm1 psubw xmm6,xmm5 pabsw xmm6,xmm6 pcmpgtw xmm4,xmm6 movdqa xmm6,[esp+80h] psubw xmm6,xmm1 pabsw xmm6,xmm6 pcmpgtw xmm7,xmm6 movdqa xmm6,[esp+90h] pand xmm4,xmm7 movdqa xmm7,[esp+50h] psubw xmm6,xmm5 pabsw xmm6,xmm6 pcmpgtw xmm7,xmm6 pand xmm4,xmm7 pand xmm4,[esp+40h] pand xmm0,xmm4 movdqa xmm4,[esp+30h] paddw xmm2,xmm4 paddw xmm1,xmm0 packuswb xmm2,xmm1 movq [esi],xmm2 psubw xmm3,xmm4 psubw xmm5,xmm0 packuswb xmm3,xmm5 movq [eax],xmm3 psrldq xmm2,8 movq [edi],xmm2 pop edi pop esi psrldq xmm3,8 movq [ecx],xmm3 pop ebx mov esp,ebp pop ebp ret ;*************************************************************************** ; void DeblockChromaEq4H_ssse3(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride, ; int32_t iAlpha, int32_t iBeta) ;*************************************************************************** WELS_EXTERN DeblockChromaEq4H_ssse3 push ebp mov ebp,esp and esp,0FFFFFFF0h sub esp,0C8h mov ecx,dword [ebp+8] mov edx,dword [ebp+0Ch] mov eax,dword [ebp+10h] sub ecx,2 sub edx,2 push esi lea esi,[eax+eax*2] mov dword [esp+18h],ecx mov dword [esp+4],edx lea ecx,[ecx+eax*4] lea edx,[edx+eax*4] lea eax,[esp+7Ch] push edi mov dword [esp+14h],esi mov dword [esp+18h],ecx mov dword [esp+0Ch],edx mov dword [esp+10h],eax mov esi,dword [esp+1Ch] mov ecx,dword [ebp+10h] mov edx,dword [esp+14h] movd xmm0,dword [esi] movd xmm1,dword [esi+ecx] movd xmm2,dword [esi+ecx*2] movd xmm3,dword [esi+edx] mov esi,dword [esp+8] movd xmm4,dword [esi] movd xmm5,dword [esi+ecx] movd xmm6,dword [esi+ecx*2] movd xmm7,dword [esi+edx] punpckldq xmm0,xmm4 punpckldq xmm1,xmm5 punpckldq xmm2,xmm6 punpckldq xmm3,xmm7 mov esi,dword [esp+18h] mov edi,dword [esp+0Ch] movd xmm4,dword [esi] movd xmm5,dword [edi] punpckldq xmm4,xmm5 punpcklqdq xmm0,xmm4 movd xmm4,dword [esi+ecx] movd xmm5,dword [edi+ecx] punpckldq xmm4,xmm5 punpcklqdq xmm1,xmm4 movd xmm4,dword [esi+ecx*2] movd xmm5,dword [edi+ecx*2] punpckldq xmm4,xmm5 punpcklqdq xmm2,xmm4 movd xmm4,dword [esi+edx] movd xmm5,dword [edi+edx] punpckldq xmm4,xmm5 punpcklqdq xmm3,xmm4 movdqa xmm6,xmm0 punpcklbw xmm0,xmm1 punpckhbw xmm6,xmm1 movdqa xmm7,xmm2 punpcklbw xmm2,xmm3 punpckhbw xmm7,xmm3 movdqa xmm4,xmm0 movdqa xmm5,xmm6 punpcklwd xmm0,xmm2 punpckhwd xmm4,xmm2 punpcklwd xmm6,xmm7 punpckhwd xmm5,xmm7 movdqa xmm1,xmm0 movdqa xmm2,xmm4 punpckldq xmm0,xmm6 punpckhdq xmm1,xmm6 punpckldq xmm4,xmm5 punpckhdq xmm2,xmm5 movdqa xmm5,xmm0 movdqa xmm6,xmm1 punpcklqdq xmm0,xmm4 punpckhqdq xmm5,xmm4 punpcklqdq xmm1,xmm2 punpckhqdq xmm6,xmm2 mov edi,dword [esp+10h] movdqa [edi],xmm0 movdqa [edi+10h],xmm5 movdqa [edi+20h],xmm1 movdqa [edi+30h],xmm6 movsx ecx,word [ebp+14h] movsx edx,word [ebp+18h] movdqa xmm6,[esp+80h] movdqa xmm4,[esp+90h] movdqa xmm5,[esp+0A0h] movdqa xmm7,[esp+0B0h] pxor xmm0,xmm0 movd xmm1,ecx movdqa xmm2,xmm1 punpcklwd xmm2,xmm1 pshufd xmm1,xmm2,0 movd xmm2,edx movdqa xmm3,xmm2 punpcklwd xmm3,xmm2 pshufd xmm2,xmm3,0 movdqa xmm3,xmm6 punpckhbw xmm6,xmm0 movdqa [esp+60h],xmm6 movdqa xmm6,[esp+90h] punpckhbw xmm6,xmm0 movdqa [esp+30h],xmm6 movdqa xmm6,[esp+0A0h] punpckhbw xmm6,xmm0 movdqa [esp+40h],xmm6 movdqa xmm6,[esp+0B0h] punpckhbw xmm6,xmm0 movdqa [esp+70h],xmm6 punpcklbw xmm7,xmm0 punpcklbw xmm4,xmm0 punpcklbw xmm5,xmm0 punpcklbw xmm3,xmm0 movdqa [esp+50h],xmm7 movdqa xmm6,xmm4 psubw xmm6,xmm5 pabsw xmm6,xmm6 movdqa xmm0,xmm1 pcmpgtw xmm0,xmm6 movdqa xmm6,xmm3 psubw xmm6,xmm4 pabsw xmm6,xmm6 movdqa xmm7,xmm2 pcmpgtw xmm7,xmm6 movdqa xmm6,[esp+50h] psubw xmm6,xmm5 pabsw xmm6,xmm6 pand xmm0,xmm7 movdqa xmm7,xmm2 pcmpgtw xmm7,xmm6 movdqa xmm6,[esp+30h] psubw xmm6,[esp+40h] pabsw xmm6,xmm6 pcmpgtw xmm1,xmm6 movdqa xmm6,[esp+60h] psubw xmm6,[esp+30h] pabsw xmm6,xmm6 pand xmm0,xmm7 movdqa xmm7,xmm2 pcmpgtw xmm7,xmm6 movdqa xmm6,[esp+70h] psubw xmm6,[esp+40h] pabsw xmm6,xmm6 pand xmm1,xmm7 pcmpgtw xmm2,xmm6 pand xmm1,xmm2 mov eax,2 movsx ecx,ax movd xmm2,ecx movdqa xmm6,xmm2 punpcklwd xmm6,xmm2 pshufd xmm2,xmm6,0 movdqa [esp+20h],xmm2 movdqa xmm2,xmm3 paddw xmm2,xmm3 paddw xmm2,xmm4 paddw xmm2,[esp+50h] paddw xmm2,[esp+20h] psraw xmm2,2 movdqa xmm6,xmm0 pand xmm6,xmm2 movdqa xmm2,xmm0 pandn xmm2,xmm4 por xmm6,xmm2 movdqa xmm2,[esp+60h] movdqa xmm7,xmm2 paddw xmm7,xmm2 paddw xmm7,[esp+30h] paddw xmm7,[esp+70h] paddw xmm7,[esp+20h] movdqa xmm4,xmm1 movdqa xmm2,xmm1 pandn xmm2,[esp+30h] psraw xmm7,2 pand xmm4,xmm7 por xmm4,xmm2 movdqa xmm2,[esp+50h] packuswb xmm6,xmm4 movdqa [esp+90h],xmm6 movdqa xmm6,xmm2 paddw xmm6,xmm2 movdqa xmm2,[esp+20h] paddw xmm6,xmm5 paddw xmm6,xmm3 movdqa xmm4,xmm0 pandn xmm0,xmm5 paddw xmm6,xmm2 psraw xmm6,2 pand xmm4,xmm6 por xmm4,xmm0 movdqa xmm0,[esp+70h] movdqa xmm5,xmm0 paddw xmm5,xmm0 movdqa xmm0,[esp+40h] paddw xmm5,xmm0 paddw xmm5,[esp+60h] movdqa xmm3,xmm1 paddw xmm5,xmm2 psraw xmm5,2 pand xmm3,xmm5 pandn xmm1,xmm0 por xmm3,xmm1 packuswb xmm4,xmm3 movdqa [esp+0A0h],xmm4 mov esi,dword [esp+10h] movdqa xmm0,[esi] movdqa xmm1,[esi+10h] movdqa xmm2,[esi+20h] movdqa xmm3,[esi+30h] movdqa xmm6,xmm0 punpcklbw xmm0,xmm1 punpckhbw xmm6,xmm1 movdqa xmm7,xmm2 punpcklbw xmm2,xmm3 punpckhbw xmm7,xmm3 movdqa xmm4,xmm0 movdqa xmm5,xmm6 punpcklwd xmm0,xmm2 punpckhwd xmm4,xmm2 punpcklwd xmm6,xmm7 punpckhwd xmm5,xmm7 movdqa xmm1,xmm0 movdqa xmm2,xmm4 punpckldq xmm0,xmm6 punpckhdq xmm1,xmm6 punpckldq xmm4,xmm5 punpckhdq xmm2,xmm5 movdqa xmm5,xmm0 movdqa xmm6,xmm1 punpcklqdq xmm0,xmm4 punpckhqdq xmm5,xmm4 punpcklqdq xmm1,xmm2 punpckhqdq xmm6,xmm2 mov esi,dword [esp+1Ch] mov ecx,dword [ebp+10h] mov edx,dword [esp+14h] mov edi,dword [esp+8] movd dword [esi],xmm0 movd dword [esi+ecx],xmm5 movd dword [esi+ecx*2],xmm1 movd dword [esi+edx],xmm6 psrldq xmm0,4 psrldq xmm5,4 psrldq xmm1,4 psrldq xmm6,4 mov esi,dword [esp+18h] movd dword [edi],xmm0 movd dword [edi+ecx],xmm5 movd dword [edi+ecx*2],xmm1 movd dword [edi+edx],xmm6 psrldq xmm0,4 psrldq xmm5,4 psrldq xmm1,4 psrldq xmm6,4 movd dword [esi],xmm0 movd dword [esi+ecx],xmm5 movd dword [esi+ecx*2],xmm1 movd dword [esi+edx],xmm6 psrldq xmm0,4 psrldq xmm5,4 psrldq xmm1,4 psrldq xmm6,4 mov edi,dword [esp+0Ch] movd dword [edi],xmm0 movd dword [edi+ecx],xmm5 movd dword [edi+ecx*2],xmm1 movd dword [edi+edx],xmm6 pop edi pop esi mov esp,ebp pop ebp ret ;******************************************************************************* ; void DeblockChromaLt4H_ssse3(uint8_t * pPixCb, uint8_t * pPixCr, int32_t iStride, ; int32_t iAlpha, int32_t iBeta, int8_t * pTC); ;******************************************************************************* WELS_EXTERN DeblockChromaLt4H_ssse3 push ebp mov ebp,esp and esp,0FFFFFFF0h sub esp,108h mov ecx,dword [ebp+8] mov edx,dword [ebp+0Ch] mov eax,dword [ebp+10h] sub ecx,2 sub edx,2 push esi lea esi,[eax+eax*2] mov dword [esp+10h],ecx mov dword [esp+4],edx lea ecx,[ecx+eax*4] lea edx,[edx+eax*4] lea eax,[esp+6Ch] push edi mov dword [esp+0Ch],esi mov dword [esp+18h],ecx mov dword [esp+10h],edx mov dword [esp+1Ch],eax mov esi,dword [esp+14h] mov ecx,dword [ebp+10h] mov edx,dword [esp+0Ch] movd xmm0,dword [esi] movd xmm1,dword [esi+ecx] movd xmm2,dword [esi+ecx*2] movd xmm3,dword [esi+edx] mov esi,dword [esp+8] movd xmm4,dword [esi] movd xmm5,dword [esi+ecx] movd xmm6,dword [esi+ecx*2] movd xmm7,dword [esi+edx] punpckldq xmm0,xmm4 punpckldq xmm1,xmm5 punpckldq xmm2,xmm6 punpckldq xmm3,xmm7 mov esi,dword [esp+18h] mov edi,dword [esp+10h] movd xmm4,dword [esi] movd xmm5,dword [edi] punpckldq xmm4,xmm5 punpcklqdq xmm0,xmm4 movd xmm4,dword [esi+ecx] movd xmm5,dword [edi+ecx] punpckldq xmm4,xmm5 punpcklqdq xmm1,xmm4 movd xmm4,dword [esi+ecx*2] movd xmm5,dword [edi+ecx*2] punpckldq xmm4,xmm5 punpcklqdq xmm2,xmm4 movd xmm4,dword [esi+edx] movd xmm5,dword [edi+edx] punpckldq xmm4,xmm5 punpcklqdq xmm3,xmm4 movdqa xmm6,xmm0 punpcklbw xmm0,xmm1 punpckhbw xmm6,xmm1 movdqa xmm7,xmm2 punpcklbw xmm2,xmm3 punpckhbw xmm7,xmm3 movdqa xmm4,xmm0 movdqa xmm5,xmm6 punpcklwd xmm0,xmm2 punpckhwd xmm4,xmm2 punpcklwd xmm6,xmm7 punpckhwd xmm5,xmm7 movdqa xmm1,xmm0 movdqa xmm2,xmm4 punpckldq xmm0,xmm6 punpckhdq xmm1,xmm6 punpckldq xmm4,xmm5 punpckhdq xmm2,xmm5 movdqa xmm5,xmm0 movdqa xmm6,xmm1 punpcklqdq xmm0,xmm4 punpckhqdq xmm5,xmm4 punpcklqdq xmm1,xmm2 punpckhqdq xmm6,xmm2 mov edi,dword [esp+1Ch] movdqa [edi],xmm0 movdqa [edi+10h],xmm5 movdqa [edi+20h],xmm1 movdqa [edi+30h],xmm6 mov eax,dword [ebp+1Ch] movsx cx,byte [eax+3] movsx dx,byte [eax+2] movsx si,byte [eax+1] movsx ax,byte [eax] movzx edi,cx movzx ecx,cx movd xmm2,ecx movzx ecx,dx movzx edx,dx movd xmm3,ecx movd xmm4,edx movzx ecx,si movzx edx,si movd xmm5,ecx pxor xmm0,xmm0 movd xmm6,edx movzx ecx,ax movdqa [esp+60h],xmm0 movzx edx,ax movsx eax,word [ebp+14h] punpcklwd xmm6,xmm2 movd xmm1,edi movd xmm7,ecx movsx ecx,word [ebp+18h] movd xmm0,edx punpcklwd xmm7,xmm3 punpcklwd xmm5,xmm1 movdqa xmm1,[esp+60h] punpcklwd xmm7,xmm5 movdqa xmm5,[esp+0A0h] punpcklwd xmm0,xmm4 punpcklwd xmm0,xmm6 movdqa xmm6, [esp+70h] punpcklwd xmm0,xmm7 movdqa xmm7,[esp+80h] movdqa xmm2,xmm1 psubw xmm2,xmm0 movdqa [esp+0D0h],xmm2 movd xmm2,eax movdqa xmm3,xmm2 punpcklwd xmm3,xmm2 pshufd xmm4,xmm3,0 movd xmm2,ecx movdqa xmm3,xmm2 punpcklwd xmm3,xmm2 pshufd xmm2,xmm3,0 movdqa xmm3, [esp+90h] movdqa [esp+50h],xmm2 movdqa xmm2,xmm6 punpcklbw xmm2,xmm1 punpckhbw xmm6,xmm1 movdqa [esp+40h],xmm2 movdqa [esp+0B0h],xmm6 movdqa xmm6,[esp+90h] movdqa xmm2,xmm7 punpckhbw xmm7,xmm1 punpckhbw xmm6,xmm1 punpcklbw xmm2,xmm1 punpcklbw xmm3,xmm1 punpcklbw xmm5,xmm1 movdqa [esp+0F0h],xmm7 movdqa [esp+0C0h],xmm6 movdqa xmm6, [esp+0A0h] punpckhbw xmm6,xmm1 movdqa [esp+0E0h],xmm6 mov edx,4 movsx eax,dx movd xmm6,eax movdqa xmm7,xmm6 punpcklwd xmm7,xmm6 pshufd xmm6,xmm7,0 movdqa [esp+30h],xmm6 movdqa xmm7, [esp+40h] psubw xmm7,xmm5 movdqa xmm6,xmm0 pcmpgtw xmm6,xmm1 movdqa [esp+60h],xmm6 movdqa xmm1, [esp+0D0h] movdqa xmm6,xmm3 psubw xmm6,xmm2 psllw xmm6,2 paddw xmm6,xmm7 paddw xmm6,[esp+30h] psraw xmm6,3 pmaxsw xmm1,xmm6 movdqa xmm7,[esp+50h] movdqa [esp+20h],xmm0 movdqa xmm6, [esp+20h] pminsw xmm6,xmm1 movdqa [esp+20h],xmm6 movdqa xmm6,xmm4 movdqa xmm1,xmm2 psubw xmm1,xmm3 pabsw xmm1,xmm1 pcmpgtw xmm6,xmm1 movdqa xmm1, [esp+40h] psubw xmm1,xmm2 pabsw xmm1,xmm1 pcmpgtw xmm7,xmm1 movdqa xmm1, [esp+50h] pand xmm6,xmm7 movdqa xmm7, [esp+50h] psubw xmm5,xmm3 pabsw xmm5,xmm5 pcmpgtw xmm1,xmm5 movdqa xmm5, [esp+0B0h] psubw xmm5,[esp+0E0h] pand xmm6,xmm1 pand xmm6, [esp+60h] movdqa xmm1, [esp+20h] pand xmm1,xmm6 movdqa xmm6, [esp+0C0h] movdqa [esp+40h],xmm1 movdqa xmm1, [esp+0F0h] psubw xmm6,xmm1 psllw xmm6,2 paddw xmm6,xmm5 paddw xmm6, [esp+30h] movdqa xmm5, [esp+0D0h] psraw xmm6,3 pmaxsw xmm5,xmm6 pminsw xmm0,xmm5 movdqa xmm5,[esp+0C0h] movdqa xmm6,xmm1 psubw xmm6,xmm5 pabsw xmm6,xmm6 pcmpgtw xmm4,xmm6 movdqa xmm6,[esp+0B0h] psubw xmm6,xmm1 pabsw xmm6,xmm6 pcmpgtw xmm7,xmm6 movdqa xmm6, [esp+0E0h] pand xmm4,xmm7 movdqa xmm7, [esp+50h] psubw xmm6,xmm5 pabsw xmm6,xmm6 pcmpgtw xmm7,xmm6 pand xmm4,xmm7 pand xmm4,[esp+60h] pand xmm0,xmm4 movdqa xmm4, [esp+40h] paddw xmm2,xmm4 paddw xmm1,xmm0 psubw xmm3,xmm4 psubw xmm5,xmm0 packuswb xmm2,xmm1 packuswb xmm3,xmm5 movdqa [esp+80h],xmm2 movdqa [esp+90h],xmm3 mov esi,dword [esp+1Ch] movdqa xmm0, [esi] movdqa xmm1, [esi+10h] movdqa xmm2, [esi+20h] movdqa xmm3, [esi+30h] movdqa xmm6,xmm0 punpcklbw xmm0,xmm1 punpckhbw xmm6,xmm1 movdqa xmm7,xmm2 punpcklbw xmm2,xmm3 punpckhbw xmm7,xmm3 movdqa xmm4,xmm0 movdqa xmm5,xmm6 punpcklwd xmm0,xmm2 punpckhwd xmm4,xmm2 punpcklwd xmm6,xmm7 punpckhwd xmm5,xmm7 movdqa xmm1,xmm0 movdqa xmm2,xmm4 punpckldq xmm0,xmm6 punpckhdq xmm1,xmm6 punpckldq xmm4,xmm5 punpckhdq xmm2,xmm5 movdqa xmm5,xmm0 movdqa xmm6,xmm1 punpcklqdq xmm0,xmm4 punpckhqdq xmm5,xmm4 punpcklqdq xmm1,xmm2 punpckhqdq xmm6,xmm2 mov esi,dword [esp+14h] mov ecx,dword [ebp+10h] mov edx,dword [esp+0Ch] mov edi,dword [esp+8] movd dword [esi],xmm0 movd dword [esi+ecx],xmm5 movd dword [esi+ecx*2],xmm1 movd dword [esi+edx],xmm6 psrldq xmm0,4 psrldq xmm5,4 psrldq xmm1,4 psrldq xmm6,4 mov esi,dword [esp+18h] movd dword [edi],xmm0 movd dword [edi+ecx],xmm5 movd dword [edi+ecx*2],xmm1 movd dword [edi+edx],xmm6 psrldq xmm0,4 psrldq xmm5,4 psrldq xmm1,4 psrldq xmm6,4 movd dword [esi],xmm0 movd dword [esi+ecx],xmm5 movd dword [esi+ecx*2],xmm1 movd dword [esi+edx],xmm6 psrldq xmm0,4 psrldq xmm5,4 psrldq xmm1,4 psrldq xmm6,4 mov edi,dword [esp+10h] movd dword [edi],xmm0 movd dword [edi+ecx],xmm5 movd dword [edi+ecx*2],xmm1 movd dword [edi+edx],xmm6 pop edi pop esi mov esp,ebp pop ebp ret ;******************************************************************************* ; void DeblockLumaLt4V_ssse3(uint8_t * pPix, int32_t iStride, int32_t iAlpha, ; int32_t iBeta, int8_t * pTC) ;******************************************************************************* WELS_EXTERN DeblockLumaLt4V_ssse3 push ebp mov ebp, esp and esp, -16 ; fffffff0H sub esp, 420 ; 000001a4H mov eax, dword [ebp+8] mov ecx, dword [ebp+12] pxor xmm0, xmm0 push ebx mov edx, dword [ebp+24] movdqa [esp+424-384], xmm0 push esi lea esi, [ecx+ecx*2] push edi mov edi, eax sub edi, esi movdqa xmm0, [edi] lea esi, [ecx+ecx] movdqa [esp+432-208], xmm0 mov edi, eax sub edi, esi movdqa xmm0, [edi] movdqa [esp+448-208], xmm0 mov ebx, eax sub ebx, ecx movdqa xmm0, [ebx] movdqa [esp+464-208], xmm0 movdqa xmm0, [eax] add ecx, eax movdqa [esp+480-208], xmm0 movdqa xmm0, [ecx] mov dword [esp+432-404], ecx movsx ecx, word [ebp+16] movdqa [esp+496-208], xmm0 movdqa xmm0, [esi+eax] movsx si, byte [edx] movdqa [esp+512-208], xmm0 movd xmm0, ecx movsx ecx, word [ebp+20] movdqa xmm1, xmm0 punpcklwd xmm1, xmm0 pshufd xmm0, xmm1, 0 movdqa [esp+432-112], xmm0 movd xmm0, ecx movsx cx, byte [edx+1] movdqa xmm1, xmm0 punpcklwd xmm1, xmm0 mov dword [esp+432-408], ebx movzx ebx, cx pshufd xmm0, xmm1, 0 movd xmm1, ebx movzx ebx, cx movd xmm2, ebx movzx ebx, cx movzx ecx, cx movd xmm4, ecx movzx ecx, si movd xmm5, ecx movzx ecx, si movd xmm6, ecx movzx ecx, si movd xmm7, ecx movzx ecx, si movdqa [esp+432-336], xmm0 movd xmm0, ecx movsx cx, byte [edx+3] movsx dx, byte [edx+2] movd xmm3, ebx punpcklwd xmm0, xmm4 movzx esi, cx punpcklwd xmm6, xmm2 punpcklwd xmm5, xmm1 punpcklwd xmm0, xmm6 punpcklwd xmm7, xmm3 punpcklwd xmm7, xmm5 punpcklwd xmm0, xmm7 movdqa [esp+432-400], xmm0 movd xmm0, esi movzx esi, cx movd xmm2, esi movzx esi, cx movzx ecx, cx movd xmm4, ecx movzx ecx, dx movd xmm3, esi movd xmm5, ecx punpcklwd xmm5, xmm0 movdqa xmm0, [esp+432-384] movzx ecx, dx movd xmm6, ecx movzx ecx, dx movzx edx, dx punpcklwd xmm6, xmm2 movd xmm7, ecx movd xmm1, edx movdqa xmm2, [esp+448-208] punpcklbw xmm2, xmm0 mov ecx, 4 movsx edx, cx punpcklwd xmm7, xmm3 punpcklwd xmm7, xmm5 movdqa xmm5, [esp+496-208] movdqa xmm3, [esp+464-208] punpcklbw xmm5, xmm0 movdqa [esp+432-240], xmm5 movdqa xmm5, [esp+512-208] punpcklbw xmm5, xmm0 movdqa [esp+432-352], xmm5 punpcklwd xmm1, xmm4 movdqa xmm4, [esp+432-208] punpcklwd xmm1, xmm6 movdqa xmm6, [esp+480-208] punpcklwd xmm1, xmm7 punpcklbw xmm6, xmm0 punpcklbw xmm3, xmm0 punpcklbw xmm4, xmm0 movdqa xmm7, xmm3 psubw xmm7, xmm4 pabsw xmm7, xmm7 movdqa [esp+432-272], xmm4 movdqa xmm4, [esp+432-336] movdqa xmm5, xmm4 pcmpgtw xmm5, xmm7 movdqa [esp+432-288], xmm5 movdqa xmm7, xmm6 psubw xmm7, [esp+432-352] pabsw xmm7, xmm7 movdqa xmm5, xmm4 pcmpgtw xmm5, xmm7 movdqa [esp+432-256], xmm5 movdqa xmm5, xmm3 pavgw xmm5, xmm6 movdqa [esp+432-304], xmm5 movdqa xmm5, [esp+432-400] psubw xmm5, [esp+432-288] psubw xmm5, [esp+432-256] movdqa [esp+432-224], xmm5 movdqa xmm5, xmm6 psubw xmm5, xmm3 movdqa [esp+432-32], xmm6 psubw xmm6, [esp+432-240] movdqa xmm7, xmm5 movdqa [esp+432-384], xmm5 movdqa xmm5, [esp+432-112] pabsw xmm7, xmm7 pcmpgtw xmm5, xmm7 pabsw xmm6, xmm6 movdqa xmm7, xmm4 pcmpgtw xmm7, xmm6 pand xmm5, xmm7 movdqa xmm6, xmm3 psubw xmm6, xmm2 pabsw xmm6, xmm6 movdqa xmm7, xmm4 pcmpgtw xmm7, xmm6 movdqa xmm6, [esp+432-400] pand xmm5, xmm7 movdqa xmm7, xmm6 pcmpeqw xmm6, xmm0 pcmpgtw xmm7, xmm0 por xmm7, xmm6 pand xmm5, xmm7 movdqa [esp+432-320], xmm5 movd xmm5, edx movdqa xmm6, xmm5 punpcklwd xmm6, xmm5 pshufd xmm5, xmm6, 0 movdqa [esp+432-336], xmm5 movdqa xmm5, [esp+432-224] movdqa [esp+432-368], xmm5 movdqa xmm6, xmm0 psubw xmm6, xmm5 movdqa xmm5, [esp+432-384] psllw xmm5, 2 movdqa xmm7, xmm2 psubw xmm7, [esp+432-240] paddw xmm7, xmm5 paddw xmm7, [esp+432-336] movdqa xmm5, [esp+432-368] psraw xmm7, 3 pmaxsw xmm6, xmm7 pminsw xmm5, xmm6 pand xmm5, [esp+432-320] movdqa xmm6, [esp+432-400] movdqa [esp+432-64], xmm5 movdqa [esp+432-384], xmm6 movdqa xmm5, xmm0 psubw xmm5, xmm6 movdqa [esp+432-368], xmm5 movdqa xmm6, xmm5 movdqa xmm5, [esp+432-272] paddw xmm5, [esp+432-304] movdqa xmm7, xmm2 paddw xmm7, xmm2 psubw xmm5, xmm7 psraw xmm5, 1 pmaxsw xmm6, xmm5 movdqa xmm5, [esp+432-384] pminsw xmm5, xmm6 pand xmm5, [esp+432-320] pand xmm5, [esp+432-288] movdqa xmm6, [esp+432-240] movdqa [esp+432-96], xmm5 movdqa xmm5, [esp+432-352] paddw xmm5, [esp+432-304] movdqa xmm7, xmm6 paddw xmm7, xmm6 movdqa xmm6, [esp+432-368] psubw xmm5, xmm7 movdqa xmm7, [esp+496-208] psraw xmm5, 1 pmaxsw xmm6, xmm5 movdqa xmm5, [esp+432-400] pminsw xmm5, xmm6 pand xmm5, [esp+432-320] pand xmm5, [esp+432-256] movdqa xmm6, [esp+448-208] punpckhbw xmm7, xmm0 movdqa [esp+432-352], xmm7 movdqa xmm7, [esp+512-208] punpckhbw xmm6, xmm0 movdqa [esp+432-48], xmm5 movdqa xmm5, [esp+432-208] movdqa [esp+432-368], xmm6 movdqa xmm6, [esp+464-208] punpckhbw xmm7, xmm0 punpckhbw xmm5, xmm0 movdqa [esp+432-384], xmm7 punpckhbw xmm6, xmm0 movdqa [esp+432-400], xmm6 movdqa xmm7, [esp+432-400] movdqa xmm6, [esp+480-208] psubw xmm7, xmm5 movdqa [esp+432-16], xmm5 pabsw xmm7, xmm7 punpckhbw xmm6, xmm0 movdqa xmm5, xmm4 pcmpgtw xmm5, xmm7 movdqa [esp+432-288], xmm5 movdqa xmm7, xmm6 psubw xmm7, [esp+432-384] pabsw xmm7, xmm7 movdqa xmm5, xmm4 pcmpgtw xmm5, xmm7 movdqa [esp+432-256], xmm5 movdqa xmm5, [esp+432-400] movdqa [esp+432-80], xmm6 pavgw xmm5, xmm6 movdqa [esp+432-304], xmm5 movdqa xmm5, xmm1 psubw xmm5, [esp+432-288] psubw xmm5, [esp+432-256] movdqa [esp+432-224], xmm5 movdqa xmm5, xmm6 psubw xmm5, [esp+432-400] psubw xmm6, [esp+432-352] movdqa [esp+432-272], xmm5 movdqa xmm7, xmm5 movdqa xmm5, [esp+432-112] pabsw xmm7, xmm7 pcmpgtw xmm5, xmm7 movdqa xmm7, xmm4 pabsw xmm6, xmm6 pcmpgtw xmm7, xmm6 movdqa xmm6, [esp+432-368] pand xmm5, xmm7 movdqa xmm7, [esp+432-400] psubw xmm7, xmm6 psubw xmm6, [esp+432-352] pabsw xmm7, xmm7 pcmpgtw xmm4, xmm7 pand xmm5, xmm4 paddw xmm2, [esp+432-96] movdqa xmm4, xmm1 pcmpgtw xmm4, xmm0 movdqa xmm7, xmm1 pcmpeqw xmm7, xmm0 por xmm4, xmm7 pand xmm5, xmm4 movdqa xmm4, [esp+432-224] movdqa [esp+432-320], xmm5 movdqa xmm5, [esp+432-272] movdqa xmm7, xmm0 psubw xmm7, xmm4 psubw xmm0, xmm1 psllw xmm5, 2 paddw xmm6, xmm5 paddw xmm6, [esp+432-336] movdqa xmm5, [esp+432-368] movdqa [esp+432-336], xmm0 psraw xmm6, 3 pmaxsw xmm7, xmm6 pminsw xmm4, xmm7 pand xmm4, [esp+432-320] movdqa xmm6, xmm0 movdqa xmm0, [esp+432-16] paddw xmm0, [esp+432-304] movdqa [esp+432-272], xmm4 movdqa xmm4, [esp+432-368] paddw xmm4, xmm4 psubw xmm0, xmm4 movdqa xmm4, [esp+432-64] psraw xmm0, 1 pmaxsw xmm6, xmm0 movdqa xmm0, [esp+432-400] movdqa xmm7, xmm1 pminsw xmm7, xmm6 movdqa xmm6, [esp+432-320] pand xmm7, xmm6 pand xmm7, [esp+432-288] paddw xmm5, xmm7 packuswb xmm2, xmm5 movdqa xmm5, [esp+432-272] paddw xmm0, xmm5 paddw xmm3, xmm4 packuswb xmm3, xmm0 movdqa xmm0, [esp+432-32] psubw xmm0, xmm4 movdqa xmm4, [esp+432-80] psubw xmm4, xmm5 movdqa xmm5, [esp+432-240] paddw xmm5, [esp+432-48] packuswb xmm0, xmm4 movdqa xmm4, [esp+432-384] paddw xmm4, [esp+432-304] movdqa [esp+480-208], xmm0 movdqa xmm0, [esp+432-352] movdqa xmm7, xmm0 paddw xmm0, xmm0 mov ecx, dword [esp+432-408] mov edx, dword [esp+432-404] psubw xmm4, xmm0 movdqa xmm0, [esp+432-336] movdqa [edi], xmm2 psraw xmm4, 1 pmaxsw xmm0, xmm4 pminsw xmm1, xmm0 movdqa xmm0, [esp+480-208] pop edi pand xmm1, xmm6 pand xmm1, [esp+428-256] movdqa [ecx], xmm3 paddw xmm7, xmm1 pop esi packuswb xmm5, xmm7 movdqa [eax], xmm0 movdqa [edx], xmm5 pop ebx mov esp, ebp pop ebp ret ;******************************************************************************* ; void DeblockLumaEq4V_ssse3(uint8_t * pPix, int32_t iStride, int32_t iAlpha, ; int32_t iBeta) ;******************************************************************************* WELS_EXTERN DeblockLumaEq4V_ssse3 push ebp mov ebp, esp and esp, -16 ; fffffff0H sub esp, 628 ; 00000274H mov eax, dword [ebp+8] mov ecx, dword [ebp+12] push ebx push esi lea edx, [ecx*4] pxor xmm0, xmm0 movdqa xmm2, xmm0 movdqa xmm0, [ecx+eax] mov esi, eax sub esi, edx movdqa xmm3, [esi] movdqa xmm5, [eax] push edi lea edi, [ecx+ecx] lea ebx, [ecx+ecx*2] mov dword [esp+640-600], edi mov esi, eax sub esi, edi movdqa xmm1, [esi] movdqa [esp+720-272], xmm0 mov edi, eax sub edi, ecx movdqa xmm4, [edi] add ecx, eax mov dword [esp+640-596], ecx mov ecx, dword [esp+640-600] movdqa xmm0, [ecx+eax] movdqa [esp+736-272], xmm0 movdqa xmm0, [eax+ebx] mov edx, eax sub edx, ebx movsx ebx, word [ebp+16] movdqa xmm6, [edx] add ecx, eax movdqa [esp+752-272], xmm0 movd xmm0, ebx movsx ebx, word [ebp+20] movdqa xmm7, xmm0 punpcklwd xmm7, xmm0 pshufd xmm0, xmm7, 0 movdqa [esp+640-320], xmm0 movd xmm0, ebx movdqa xmm7, xmm0 punpcklwd xmm7, xmm0 pshufd xmm0, xmm7, 0 movdqa xmm7, [esp+736-272] punpcklbw xmm7, xmm2 movdqa [esp+640-416], xmm7 movdqa [esp+640-512], xmm0 movdqa xmm0, xmm1 movdqa [esp+672-272], xmm1 movdqa xmm1, xmm4 movdqa [esp+704-272], xmm5 punpcklbw xmm5, xmm2 punpcklbw xmm1, xmm2 movdqa xmm7, xmm5 psubw xmm7, xmm1 pabsw xmm7, xmm7 movdqa [esp+640-560], xmm7 punpcklbw xmm0, xmm2 movdqa [esp+688-272], xmm4 movdqa xmm4, [esp+720-272] movdqa [esp+640-480], xmm0 movdqa xmm7, xmm1 psubw xmm7, xmm0 movdqa xmm0, [esp+640-512] pabsw xmm7, xmm7 punpcklbw xmm4, xmm2 pcmpgtw xmm0, xmm7 movdqa [esp+640-384], xmm4 movdqa xmm7, xmm5 psubw xmm7, xmm4 movdqa xmm4, [esp+640-512] movdqa [esp+656-272], xmm6 punpcklbw xmm6, xmm2 pabsw xmm7, xmm7 movdqa [esp+640-48], xmm2 movdqa [esp+640-368], xmm6 movdqa [esp+640-144], xmm1 movdqa [esp+640-400], xmm5 pcmpgtw xmm4, xmm7 pand xmm0, xmm4 movdqa xmm4, [esp+640-320] pcmpgtw xmm4, [esp+640-560] pand xmm0, xmm4 mov ebx, 2 movsx ebx, bx movd xmm4, ebx movdqa xmm7, xmm4 punpcklwd xmm7, xmm4 movdqa xmm4, [esp+640-320] psraw xmm4, 2 pshufd xmm7, xmm7, 0 paddw xmm4, xmm7 movdqa [esp+640-576], xmm4 pcmpgtw xmm4, [esp+640-560] movdqa [esp+640-560], xmm4 movdqa xmm4, [esp+640-512] movdqa [esp+640-624], xmm7 movdqa xmm7, xmm1 psubw xmm7, xmm6 pabsw xmm7, xmm7 pcmpgtw xmm4, xmm7 pand xmm4, [esp+640-560] movdqa [esp+640-544], xmm4 movdqa xmm4, [esp+640-512] movdqa xmm7, xmm5 psubw xmm7, [esp+640-416] pabsw xmm7, xmm7 pcmpgtw xmm4, xmm7 pand xmm4, [esp+640-560] movdqa [esp+640-560], xmm4 movdqa xmm4, [esp+640-544] pandn xmm4, xmm6 movdqa [esp+640-16], xmm4 mov ebx, 4 movsx ebx, bx movd xmm4, ebx movdqa xmm7, xmm4 punpcklwd xmm7, xmm4 movdqa xmm4, xmm3 punpcklbw xmm4, xmm2 psllw xmm4, 1 paddw xmm4, xmm6 paddw xmm4, xmm6 paddw xmm4, xmm6 paddw xmm4, [esp+640-480] movdqa xmm6, [esp+640-560] pshufd xmm7, xmm7, 0 paddw xmm4, xmm1 movdqa [esp+640-592], xmm7 paddw xmm4, xmm5 paddw xmm4, xmm7 movdqa xmm7, [esp+640-416] pandn xmm6, xmm7 movdqa [esp+640-80], xmm6 movdqa xmm6, [esp+752-272] punpcklbw xmm6, xmm2 psllw xmm6, 1 paddw xmm6, xmm7 paddw xmm6, xmm7 paddw xmm6, xmm7 paddw xmm6, [esp+640-384] movdqa xmm7, [esp+640-480] paddw xmm6, xmm5 paddw xmm6, xmm1 paddw xmm6, [esp+640-592] psraw xmm6, 3 pand xmm6, [esp+640-560] movdqa [esp+640-112], xmm6 movdqa xmm6, [esp+640-544] pandn xmm6, xmm7 movdqa [esp+640-336], xmm6 movdqa xmm6, [esp+640-544] movdqa [esp+640-528], xmm6 movdqa xmm6, [esp+640-368] paddw xmm6, xmm7 movdqa xmm7, xmm1 psraw xmm4, 3 pand xmm4, [esp+640-544] paddw xmm7, xmm5 paddw xmm6, xmm7 paddw xmm6, [esp+640-624] movdqa xmm7, [esp+640-528] paddw xmm5, xmm1 psraw xmm6, 2 pand xmm7, xmm6 movdqa xmm6, [esp+640-384] movdqa [esp+640-64], xmm7 movdqa xmm7, [esp+640-560] pandn xmm7, xmm6 movdqa [esp+640-304], xmm7 movdqa xmm7, [esp+640-560] movdqa [esp+640-528], xmm7 movdqa xmm7, [esp+640-416] paddw xmm7, xmm6 paddw xmm7, xmm5 paddw xmm7, [esp+640-624] movdqa xmm5, [esp+640-528] psraw xmm7, 2 pand xmm5, xmm7 movdqa [esp+640-32], xmm5 movdqa xmm5, [esp+640-544] movdqa [esp+640-528], xmm5 movdqa xmm5, [esp+640-480] movdqa xmm7, xmm5 paddw xmm7, xmm5 movdqa xmm5, xmm1 paddw xmm5, xmm6 paddw xmm6, [esp+640-592] paddw xmm7, xmm5 paddw xmm7, [esp+640-624] movdqa xmm5, [esp+640-528] psraw xmm7, 2 pandn xmm5, xmm7 movdqa xmm7, [esp+640-480] paddw xmm7, xmm1 paddw xmm7, [esp+640-400] movdqa xmm1, [esp+640-544] movdqa [esp+640-352], xmm5 movdqa xmm5, [esp+640-368] psllw xmm7, 1 paddw xmm7, xmm6 paddw xmm5, xmm7 movdqa xmm7, [esp+640-400] psraw xmm5, 3 pand xmm1, xmm5 movdqa xmm5, [esp+640-480] movdqa [esp+640-96], xmm1 movdqa xmm1, [esp+640-560] movdqa [esp+640-528], xmm1 movdqa xmm1, [esp+640-384] movdqa xmm6, xmm1 paddw xmm6, xmm1 paddw xmm1, [esp+640-400] paddw xmm1, [esp+640-144] paddw xmm7, xmm5 paddw xmm5, [esp+640-592] paddw xmm6, xmm7 paddw xmm6, [esp+640-624] movdqa xmm7, [esp+640-528] psraw xmm6, 2 psllw xmm1, 1 paddw xmm1, xmm5 movdqa xmm5, [esp+656-272] pandn xmm7, xmm6 movdqa xmm6, [esp+640-416] paddw xmm6, xmm1 movdqa xmm1, [esp+640-560] psraw xmm6, 3 pand xmm1, xmm6 movdqa xmm6, [esp+704-272] movdqa [esp+640-128], xmm1 movdqa xmm1, [esp+672-272] punpckhbw xmm1, xmm2 movdqa [esp+640-448], xmm1 movdqa xmm1, [esp+688-272] punpckhbw xmm1, xmm2 punpckhbw xmm6, xmm2 movdqa [esp+640-288], xmm7 punpckhbw xmm5, xmm2 movdqa [esp+640-496], xmm1 movdqa [esp+640-432], xmm6 movdqa xmm7, [esp+720-272] punpckhbw xmm7, xmm2 movdqa [esp+640-464], xmm7 movdqa xmm7, [esp+736-272] punpckhbw xmm7, xmm2 movdqa [esp+640-528], xmm7 movdqa xmm7, xmm6 psubw xmm6, [esp+640-464] psubw xmm7, xmm1 pabsw xmm7, xmm7 movdqa [esp+640-560], xmm7 por xmm4, [esp+640-16] pabsw xmm6, xmm6 movdqa xmm7, xmm1 psubw xmm7, [esp+640-448] movdqa xmm1, [esp+640-512] pabsw xmm7, xmm7 pcmpgtw xmm1, xmm7 movdqa xmm7, [esp+640-512] pcmpgtw xmm7, xmm6 movdqa xmm6, [esp+640-320] pand xmm1, xmm7 movdqa xmm7, [esp+640-560] pcmpgtw xmm6, xmm7 pand xmm1, xmm6 movdqa xmm6, [esp+640-576] pcmpgtw xmm6, xmm7 movdqa xmm7, [esp+640-496] punpckhbw xmm3, xmm2 movdqa [esp+640-560], xmm6 movdqa xmm6, [esp+640-512] psubw xmm7, xmm5 pabsw xmm7, xmm7 pcmpgtw xmm6, xmm7 pand xmm6, [esp+640-560] movdqa xmm7, [esp+640-432] psubw xmm7, [esp+640-528] psllw xmm3, 1 movdqa [esp+640-544], xmm6 movdqa xmm6, [esp+640-512] movdqa xmm2, [esp+640-544] paddw xmm3, xmm5 paddw xmm3, xmm5 paddw xmm3, xmm5 paddw xmm3, [esp+640-448] paddw xmm3, [esp+640-496] pabsw xmm7, xmm7 pcmpgtw xmm6, xmm7 pand xmm6, [esp+640-560] movdqa [esp+640-560], xmm6 movdqa xmm6, xmm0 pand xmm6, xmm4 movdqa xmm4, xmm0 pandn xmm4, [esp+640-368] por xmm6, xmm4 movdqa xmm4, [esp+640-432] paddw xmm3, xmm4 paddw xmm3, [esp+640-592] psraw xmm3, 3 pand xmm3, xmm2 pandn xmm2, xmm5 por xmm3, xmm2 movdqa xmm7, xmm1 pand xmm7, xmm3 movdqa xmm3, [esp+640-64] por xmm3, [esp+640-336] movdqa xmm2, xmm1 pandn xmm2, xmm5 por xmm7, xmm2 movdqa xmm2, xmm0 pand xmm2, xmm3 movdqa xmm3, xmm0 pandn xmm3, [esp+640-480] por xmm2, xmm3 packuswb xmm6, xmm7 movdqa [esp+640-336], xmm2 movdqa [esp+656-272], xmm6 movdqa xmm6, [esp+640-544] movdqa xmm2, xmm5 paddw xmm2, [esp+640-448] movdqa xmm3, xmm1 movdqa xmm7, [esp+640-496] paddw xmm7, xmm4 paddw xmm2, xmm7 paddw xmm2, [esp+640-624] movdqa xmm7, [esp+640-544] psraw xmm2, 2 pand xmm6, xmm2 movdqa xmm2, [esp+640-448] pandn xmm7, xmm2 por xmm6, xmm7 pand xmm3, xmm6 movdqa xmm6, xmm1 pandn xmm6, xmm2 paddw xmm2, [esp+640-496] paddw xmm2, xmm4 por xmm3, xmm6 movdqa xmm6, [esp+640-336] packuswb xmm6, xmm3 psllw xmm2, 1 movdqa [esp+672-272], xmm6 movdqa xmm6, [esp+640-96] por xmm6, [esp+640-352] movdqa xmm3, xmm0 pand xmm3, xmm6 movdqa xmm6, xmm0 pandn xmm6, [esp+640-144] por xmm3, xmm6 movdqa xmm6, [esp+640-544] movdqa [esp+640-352], xmm3 movdqa xmm3, [esp+640-464] paddw xmm3, [esp+640-592] paddw xmm2, xmm3 movdqa xmm3, [esp+640-448] paddw xmm5, xmm2 movdqa xmm2, [esp+640-496] psraw xmm5, 3 pand xmm6, xmm5 movdqa xmm5, [esp+640-464] paddw xmm2, xmm5 paddw xmm5, [esp+640-432] movdqa xmm4, xmm3 paddw xmm4, xmm3 paddw xmm4, xmm2 paddw xmm4, [esp+640-624] movdqa xmm2, [esp+640-544] paddw xmm3, [esp+640-592] psraw xmm4, 2 pandn xmm2, xmm4 por xmm6, xmm2 movdqa xmm7, xmm1 pand xmm7, xmm6 movdqa xmm6, [esp+640-496] movdqa xmm2, xmm1 pandn xmm2, xmm6 por xmm7, xmm2 movdqa xmm2, [esp+640-352] packuswb xmm2, xmm7 movdqa [esp+688-272], xmm2 movdqa xmm2, [esp+640-128] por xmm2, [esp+640-288] movdqa xmm4, xmm0 pand xmm4, xmm2 paddw xmm5, xmm6 movdqa xmm2, xmm0 pandn xmm2, [esp+640-400] por xmm4, xmm2 movdqa xmm2, [esp+640-528] psllw xmm5, 1 paddw xmm5, xmm3 movdqa xmm3, [esp+640-560] paddw xmm2, xmm5 psraw xmm2, 3 movdqa [esp+640-288], xmm4 movdqa xmm4, [esp+640-560] pand xmm4, xmm2 movdqa xmm2, [esp+640-464] movdqa xmm5, xmm2 paddw xmm5, xmm2 movdqa xmm2, [esp+640-432] paddw xmm2, [esp+640-448] movdqa xmm7, xmm1 paddw xmm5, xmm2 paddw xmm5, [esp+640-624] movdqa xmm6, [esp+640-560] psraw xmm5, 2 pandn xmm3, xmm5 por xmm4, xmm3 movdqa xmm3, [esp+640-32] por xmm3, [esp+640-304] pand xmm7, xmm4 movdqa xmm4, [esp+640-432] movdqa xmm5, [esp+640-464] movdqa xmm2, xmm1 pandn xmm2, xmm4 paddw xmm4, [esp+640-496] por xmm7, xmm2 movdqa xmm2, [esp+640-288] packuswb xmm2, xmm7 movdqa [esp+704-272], xmm2 movdqa xmm2, xmm0 pand xmm2, xmm3 movdqa xmm3, xmm0 pandn xmm3, [esp+640-384] por xmm2, xmm3 movdqa [esp+640-304], xmm2 movdqa xmm2, [esp+640-528] movdqa xmm3, xmm2 paddw xmm3, [esp+640-464] paddw xmm3, xmm4 paddw xmm3, [esp+640-624] psraw xmm3, 2 pand xmm6, xmm3 movdqa xmm3, [esp+640-560] movdqa xmm4, xmm3 pandn xmm4, xmm5 por xmm6, xmm4 movdqa xmm7, xmm1 pand xmm7, xmm6 movdqa xmm6, [esp+640-304] movdqa xmm4, xmm1 pandn xmm4, xmm5 por xmm7, xmm4 movdqa xmm4, xmm0 pandn xmm0, [esp+640-416] packuswb xmm6, xmm7 movdqa xmm7, [esp+640-112] por xmm7, [esp+640-80] pand xmm4, xmm7 por xmm4, xmm0 movdqa xmm0, [esp+752-272] punpckhbw xmm0, [esp+640-48] psllw xmm0, 1 paddw xmm0, xmm2 paddw xmm0, xmm2 paddw xmm0, xmm2 paddw xmm0, xmm5 paddw xmm0, [esp+640-432] paddw xmm0, [esp+640-496] paddw xmm0, [esp+640-592] psraw xmm0, 3 pand xmm0, xmm3 movdqa xmm7, xmm1 pandn xmm3, xmm2 por xmm0, xmm3 pand xmm7, xmm0 movdqa xmm0, [esp+656-272] movdqa [edx], xmm0 movdqa xmm0, [esp+672-272] mov edx, dword [esp+640-596] movdqa [esi], xmm0 movdqa xmm0, [esp+688-272] movdqa [edi], xmm0 movdqa xmm0, [esp+704-272] pop edi pandn xmm1, xmm2 movdqa [eax], xmm0 por xmm7, xmm1 pop esi packuswb xmm4, xmm7 movdqa [edx], xmm6 movdqa [ecx], xmm4 pop ebx mov esp, ebp pop ebp ret %endif ;******************************************************************************** ; ; void DeblockLumaTransposeH2V_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pDst); ; ;******************************************************************************** WELS_EXTERN DeblockLumaTransposeH2V_sse2 push r3 push r4 push r5 %assign push_num 3 LOAD_3_PARA PUSH_XMM 8 SIGN_EXTENSION r1, r1d mov r5, r7 mov r3, r7 and r3, 0Fh sub r7, r3 sub r7, 10h lea r3, [r0 + r1 * 8] lea r4, [r1 * 3] movq xmm0, [r0] movq xmm7, [r3] punpcklqdq xmm0, xmm7 movq xmm1, [r0 + r1] movq xmm7, [r3 + r1] punpcklqdq xmm1, xmm7 movq xmm2, [r0 + r1*2] movq xmm7, [r3 + r1*2] punpcklqdq xmm2, xmm7 movq xmm3, [r0 + r4] movq xmm7, [r3 + r4] punpcklqdq xmm3, xmm7 lea r0, [r0 + r1 * 4] lea r3, [r3 + r1 * 4] movq xmm4, [r0] movq xmm7, [r3] punpcklqdq xmm4, xmm7 movq xmm5, [r0 + r1] movq xmm7, [r3 + r1] punpcklqdq xmm5, xmm7 movq xmm6, [r0 + r1*2] movq xmm7, [r3 + r1*2] punpcklqdq xmm6, xmm7 movdqa [r7], xmm0 movq xmm7, [r0 + r4] movq xmm0, [r3 + r4] punpcklqdq xmm7, xmm0 movdqa xmm0, [r7] SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [r7] ;pOut: m5, m3, m4, m8, m6, m2, m7, m1 movdqa [r2], xmm4 movdqa [r2 + 10h], xmm2 movdqa [r2 + 20h], xmm3 movdqa [r2 + 30h], xmm7 movdqa [r2 + 40h], xmm5 movdqa [r2 + 50h], xmm1 movdqa [r2 + 60h], xmm6 movdqa [r2 + 70h], xmm0 mov r7, r5 POP_XMM pop r5 pop r4 pop r3 ret ;******************************************************************************************* ; ; void DeblockLumaTransposeV2H_sse2(uint8_t * pPixY, int32_t iStride, uint8_t * pSrc); ; ;******************************************************************************************* WELS_EXTERN DeblockLumaTransposeV2H_sse2 push r3 push r4 %assign push_num 2 LOAD_3_PARA PUSH_XMM 8 SIGN_EXTENSION r1, r1d mov r4, r7 mov r3, r7 and r3, 0Fh sub r7, r3 sub r7, 10h movdqa xmm0, [r2] movdqa xmm1, [r2 + 10h] movdqa xmm2, [r2 + 20h] movdqa xmm3, [r2 + 30h] movdqa xmm4, [r2 + 40h] movdqa xmm5, [r2 + 50h] movdqa xmm6, [r2 + 60h] movdqa xmm7, [r2 + 70h] SSE2_TransTwo8x8B xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, [r7] ;pOut: m5, m3, m4, m8, m6, m2, m7, m1 lea r2, [r1 * 3] movq [r0], xmm4 movq [r0 + r1], xmm2 movq [r0 + r1*2], xmm3 movq [r0 + r2], xmm7 lea r0, [r0 + r1*4] movq [r0], xmm5 movq [r0 + r1], xmm1 movq [r0 + r1*2], xmm6 movq [r0 + r2], xmm0 psrldq xmm4, 8 psrldq xmm2, 8 psrldq xmm3, 8 psrldq xmm7, 8 psrldq xmm5, 8 psrldq xmm1, 8 psrldq xmm6, 8 psrldq xmm0, 8 lea r0, [r0 + r1*4] movq [r0], xmm4 movq [r0 + r1], xmm2 movq [r0 + r1*2], xmm3 movq [r0 + r2], xmm7 lea r0, [r0 + r1*4] movq [r0], xmm5 movq [r0 + r1], xmm1 movq [r0 + r1*2], xmm6 movq [r0 + r2], xmm0 mov r7, r4 POP_XMM pop r4 pop r3 ret