176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; 276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; Copyright (c) 2014 The WebM project authors. All Rights Reserved. 376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; 476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; Use of this source code is governed by a BSD-style license 576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; that can be found in the LICENSE file in the root of the source 676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; tree. An additional intellectual property rights grant can be found 776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; in the file PATENTS. All contributing project authors may 876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; be found in the AUTHORS file in the root of the source tree. 976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org; 1076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 1176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%include "vpx_ports/x86_abi_support.asm" 1276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 1376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%macro GET_PARAM_4 0 1476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rdx, arg(5) ;filter ptr 1576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rsi, arg(0) ;src_ptr 1676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rdi, arg(2) ;output_ptr 1776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rcx, 0x0400040 1876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 1976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm3, [rdx] ;load filters 2076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psrldq xmm3, 6 2176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org packsswb xmm3, xmm3 2276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pshuflw xmm3, xmm3, 0b ;k3_k4 2376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 2476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movq xmm2, rcx ;rounding 2576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pshufd xmm2, xmm2, 0 2676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 2776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movsxd rax, DWORD PTR arg(1) ;pixels_per_line 2876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movsxd rdx, DWORD PTR arg(3) ;out_pitch 2976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movsxd rcx, DWORD PTR arg(4) ;output_height 3076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%endm 3176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 3276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%macro APPLY_FILTER_4 1 3376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org punpcklbw xmm0, xmm1 3476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pmaddubsw xmm0, xmm3 3576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 3676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org paddsw xmm0, xmm2 ;rounding 3776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psraw xmm0, 7 ;shift 3876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org packuswb xmm0, xmm0 ;pack to byte 3976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 4076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%if %1 4176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movd xmm1, [rdi] 4276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pavgb xmm0, xmm1 4376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%endif 4476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movd [rdi], xmm0 4576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org lea rsi, [rsi + rax] 4676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org lea rdi, [rdi + rdx] 4776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org dec rcx 4876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%endm 4976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 5076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%macro GET_PARAM 0 5176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rdx, arg(5) ;filter ptr 5276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rsi, arg(0) ;src_ptr 5376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rdi, arg(2) ;output_ptr 5476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rcx, 0x0400040 5576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 5676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm7, [rdx] ;load filters 5776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psrldq xmm7, 6 5876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org packsswb xmm7, xmm7 5976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pshuflw xmm7, xmm7, 0b ;k3_k4 6076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org punpcklwd xmm7, xmm7 6176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 6276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movq xmm6, rcx ;rounding 6376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pshufd xmm6, xmm6, 0 6476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 6576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movsxd rax, DWORD PTR arg(1) ;pixels_per_line 6676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movsxd rdx, DWORD PTR arg(3) ;out_pitch 6776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movsxd rcx, DWORD PTR arg(4) ;output_height 6876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%endm 6976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 7076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%macro APPLY_FILTER_8 1 7176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org punpcklbw xmm0, xmm1 7276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pmaddubsw xmm0, xmm7 7376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 7476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org paddsw xmm0, xmm6 ;rounding 7576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psraw xmm0, 7 ;shift 7676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org packuswb xmm0, xmm0 ;pack back to byte 7776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 7876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%if %1 7976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movq xmm1, [rdi] 8076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pavgb xmm0, xmm1 8176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%endif 8276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movq [rdi], xmm0 ;store the result 8376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 8476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org lea rsi, [rsi + rax] 8576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org lea rdi, [rdi + rdx] 8676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org dec rcx 8776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%endm 8876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 8976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%macro APPLY_FILTER_16 1 9076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org punpcklbw xmm0, xmm1 9176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org punpckhbw xmm2, xmm1 9276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pmaddubsw xmm0, xmm7 9376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pmaddubsw xmm2, xmm7 9476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 9576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org paddsw xmm0, xmm6 ;rounding 9676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org paddsw xmm2, xmm6 9776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psraw xmm0, 7 ;shift 9876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psraw xmm2, 7 9976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org packuswb xmm0, xmm2 ;pack back to byte 10076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 10176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%if %1 10276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm1, [rdi] 10376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pavgb xmm0, xmm1 10476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%endif 10576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu [rdi], xmm0 ;store the result 10676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 10776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org lea rsi, [rsi + rax] 10876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org lea rdi, [rdi + rdx] 10976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org dec rcx 11076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org%endm 11176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 11276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d4_v2_ssse3) PRIVATE 11376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d4_v2_ssse3): 11476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 11576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 11676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 11776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 11876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 11976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 12076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 12176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM_4 12276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 12376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movd xmm0, [rsi] ;load src 12476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movd xmm1, [rsi + rax] 12576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 12676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_4 0 12776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 12876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 12976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 13076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 13176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 13276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 13376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 13476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 13576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 13676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d8_v2_ssse3) PRIVATE 13776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d8_v2_ssse3): 13876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 13976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 14076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 14176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SAVE_XMM 7 14276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 14376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 14476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 14576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 14676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM 14776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 14876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movq xmm0, [rsi] ;0 14976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movq xmm1, [rsi + rax] ;1 15076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 15176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_8 0 15276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 15376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 15476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 15576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 15676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 15776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org RESTORE_XMM 15876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 15976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 16076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 16176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 16276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d16_v2_ssse3) PRIVATE 16376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d16_v2_ssse3): 16476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 16576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 16676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 16776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SAVE_XMM 7 16876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 16976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 17076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 17176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 17276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM 17376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 17476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm0, [rsi] ;0 17576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm1, [rsi + rax] ;1 17676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm2, xmm0 17776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 17876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_16 0 17976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 18076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 18176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 18276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 18376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 18476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org RESTORE_XMM 18576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 18676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 18776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 18876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 18976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d4_v2_avg_ssse3) PRIVATE 19076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d4_v2_avg_ssse3): 19176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 19276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 19376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 19476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 19576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 19676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 19776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 19876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM_4 19976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 20076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movd xmm0, [rsi] ;load src 20176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movd xmm1, [rsi + rax] 20276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 20376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_4 1 20476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 20576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 20676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 20776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 20876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 20976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 21076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 21176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 21276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 21376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d8_v2_avg_ssse3) PRIVATE 21476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d8_v2_avg_ssse3): 21576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 21676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 21776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 21876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SAVE_XMM 7 21976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 22076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 22176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 22276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 22376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM 22476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 22576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movq xmm0, [rsi] ;0 22676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movq xmm1, [rsi + rax] ;1 22776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 22876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_8 1 22976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 23076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 23176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 23276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 23376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 23476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org RESTORE_XMM 23576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 23676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 23776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 23876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 23976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d16_v2_avg_ssse3) PRIVATE 24076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d16_v2_avg_ssse3): 24176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 24276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 24376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 24476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SAVE_XMM 7 24576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 24676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 24776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 24876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 24976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM 25076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 25176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm0, [rsi] ;0 25276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm1, [rsi + rax] ;1 25376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm2, xmm0 25476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 25576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_16 1 25676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 25776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 25876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 25976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 26076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 26176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org RESTORE_XMM 26276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 26376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 26476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 26576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 26676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d4_h2_ssse3) PRIVATE 26776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d4_h2_ssse3): 26876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 26976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 27076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 27176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 27276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 27376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 27476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 27576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM_4 27676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 27776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm0, [rsi] ;load src 27876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm1, xmm0 27976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psrldq xmm1, 1 28076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 28176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_4 0 28276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 28376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 28476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 28576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 28676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 28776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 28876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 28976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 29076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 29176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d8_h2_ssse3) PRIVATE 29276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d8_h2_ssse3): 29376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 29476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 29576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 29676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SAVE_XMM 7 29776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 29876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 29976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 30076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 30176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM 30276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 30376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm0, [rsi] ;load src 30476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm1, xmm0 30576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psrldq xmm1, 1 30676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 30776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_8 0 30876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 30976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 31076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 31176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 31276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 31376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org RESTORE_XMM 31476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 31576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 31676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 31776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 31876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d16_h2_ssse3) PRIVATE 31976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d16_h2_ssse3): 32076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 32176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 32276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 32376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SAVE_XMM 7 32476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 32576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 32676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 32776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 32876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM 32976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 33076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm0, [rsi] ;load src 33176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm1, [rsi + 1] 33276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm2, xmm0 33376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 33476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_16 0 33576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 33676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 33776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 33876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 33976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 34076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org RESTORE_XMM 34176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 34276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 34376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 34476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 34576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d4_h2_avg_ssse3) PRIVATE 34676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d4_h2_avg_ssse3): 34776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 34876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 34976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 35076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 35176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 35276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 35376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 35476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM_4 35576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 35676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm0, [rsi] ;load src 35776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm1, xmm0 35876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psrldq xmm1, 1 35976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 36076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_4 1 36176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 36276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 36376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 36476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 36576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 36676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 36776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 36876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 36976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 37076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d8_h2_avg_ssse3) PRIVATE 37176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d8_h2_avg_ssse3): 37276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 37376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 37476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 37576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SAVE_XMM 7 37676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 37776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 37876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 37976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 38076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM 38176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 38276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm0, [rsi] ;load src 38376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm1, xmm0 38476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org psrldq xmm1, 1 38576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 38676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_8 1 38776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 38876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 38976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 39076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 39176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 39276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org RESTORE_XMM 39376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 39476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 39576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 39676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 39776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgglobal sym(vp9_filter_block1d16_h2_avg_ssse3) PRIVATE 39876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgsym(vp9_filter_block1d16_h2_avg_ssse3): 39976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rbp 40076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org mov rbp, rsp 40176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SHADOW_ARGS_TO_STACK 6 40276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org SAVE_XMM 7 40376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rsi 40476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org push rdi 40576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; end prolog 40676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 40776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org GET_PARAM 40876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org.loop: 40976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm0, [rsi] ;load src 41076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqu xmm1, [rsi + 1] 41176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org movdqa xmm2, xmm0 41276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 41376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org APPLY_FILTER_16 1 41476e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org jnz .loop 41576e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org 41676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ; begin epilog 41776e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rdi 41876e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rsi 41976e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org RESTORE_XMM 42076e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org UNSHADOW_ARGS 42176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org pop rbp 42276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org ret 423