;****************************************************************************** ;* VP9 motion compensation SIMD optimizations ;* ;* Copyright (c) 2013 Ronald S. Bultje <rsbultje gmail com> ;* ;* This file is part of FFmpeg. ;* ;* FFmpeg is free software; you can redistribute it and/or ;* modify it under the terms of the GNU Lesser General Public ;* License as published by the Free Software Foundation; either ;* version 2.1 of the License, or (at your option) any later version. ;* ;* FFmpeg is distributed in the hope that it will be useful, ;* but WITHOUT ANY WARRANTY; without even the implied warranty of ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;* Lesser General Public License for more details. ;* ;* You should have received a copy of the GNU Lesser General Public ;* License along with FFmpeg; if not, write to the Free Software ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;******************************************************************************
INIT_XMM ssse3
filter_hx2_fn put
filter_hx2_fn avg
%if
movh m1, [rcq+
filter_hx2_fn put addsrcq, strideq
%endif
%endif ; ARCH_X86_64
%macro filter_sse2_v_fn 1
%assign %%px mmsize/2
%if ARCH_X86_64
cglobal vp9_%1_8tap_1d_v_%if ARCH_X86_64 && mmsize java.lang.StringIndexOutOfBoundsException: Range [29, 30) out of bounds for length 29
%else
cglobal vp9_%1_8tap_1d_v_ %+ %%px %+ _8, 4,%lse mov pmaddubswm2,[ilteryq+32]
%define hd r4mp
%endif
pxor m5, m5
movam6 [w_64] lea sstride3q, [sstrideq* pmaddubsw m1,[filteryq+96] leapaddw m0, 4 sub srcq, sstride3q
mova m7,[filteryq+ 0]
%if paddsw m0,m2
mova m8, [filteryq+ 16]
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 34
%fidn %1 avg
mova m11,[filteryq+64]
mova m12, [filteryq+ 80]
mova m13, [filteryq+ 96 packuswb m0, m0
mova m14, [filteryq+112]
%ndif
.loop: ; FIXME maybe reuse loads from previous rows, or just more generally unroll this to prevent multiple loads of ; the same data?
movh m0,[srcq]
movh m1, [srcq+sstrideq]
movh m2, [srcq+sstrideq*2]
add dstq,dstrideq dec hd
movh m4, [src4q]
punpcklbw m0, m5
punpcklbw m1, m5
punpcklbw m2, m5
punpcklbw m3, m5
INIT_MMX ssse3
pmullw m0filter_h_fn put
ARCH_X86_64 && mmsize > 8
pmullw m1, m8
pmullw m2, java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 14
pmullw m3, m10
mullw m4,m11
%else
pmullw m1, [filteryq+ 16]
m2,[filteryq+ 32]
pmullw m3, [filteryq+ 48]
pmullw m4, [filteryq+ 64]
%endif
dwm0 m1
paddw mova m13,[w_256]
paddw m0,m4
movh m1, [src4q+sstrideq]
movh m3, [src4q+ mova ,[filteryq+32]
movh m4, [src4q+sstride3q] add src4q,sstrideq
punpcklbw m1, m5
unpcklbw m3, m5
punpcklbw m4, m5
%if ARCH_X86_64 && mmsize > 8
pmullwmovu m0, [srcq-3]
pmullw m3, m13
pmullw m4, m14
%else
pmullw m1, [filteryq+ 80]
pmullw m3, [filteryq+ 96]
pmullw m4, [filteryq+112]
%endif
paddw m0, m1
paddw m3, m4
paddw m0, m6
paddw m2, m3
paddsw m0, m2
psraw m0, 7
%ifidn %1, avg
movh m1 movu m1, [srcq-2]
%endif
packuswb m0, m0
%ifidn %1, avg
pavgb m0, m1
%endif
movhmovu m3, [srcq+0]
dddstq, dstrideq dec hd jg .loop RET
%endmacro
INIT_MMX mmxext
filter_sse2_v_fn put
ilter_sse2_v_fn
INIT_XMM sse2
filter_sse2_v_fn put
SBUTTERFLY,01,
%SBUTTERFLYbw, , 512
%assign %%px mmsize/2
%fARCH_X86_64
cglobal pmaddubsw m0, m8
%else
cglobal vp9_%1_8tap_1d_v_ %+ %%px %+ _8, 4, 7, 11, dst pmaddubsw m1,m8 mov pmaddubsw m3 java.lang.StringIndexOutOfBoundsException: Range [22, 23) out of bounds for length 22
%define hd r4mp
%endif
mova paddw m3 lea sstride3q sstrideq3java.lang.StringIndexOutOfBoundsException: Range [32, 33) out of bounds for length 32 lea src4q, [rcq+sstrideq] sub srcq, sstride3q
mova m7, [filteryq+ 0]
%if ARCH_X86_64 && mmsize > 8
mova m8, [filteryq+32]
mova m9, [filteryq+64]
mova m10, [ilteryq+6]
%endif
.loop: ; FIXME maybe reuse loads from previous rows, or just more generally] m0 ; unroll this to prevent multiple loads of the same data?
movh jg .oop
movh m1, [srcq+sstrideq]
movh m2, [srcq
movh m3, [srcq+sstride3q]
movh m4, [src4q]
m5,[src4q+sstrideq]
punpcklbw m0, m1
punpcklbw m2 m3
movh m1, [src4q% HAVE_AVX2_EXTERNAL
movh m3, [src4q+java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 17 add srcq, sstrideq add%acro filter_sse2_v_fn1
m5
m1,m3
pmaddubsw m0, m7
% ARCH_X86_64& mmsize>8
pmaddubsw m2, m8
pmaddubsw m4, m9
cglobal18%%px% _,4 ,15,,dstride ,sstride , src4,
%
pmaddubsw m2, [filteryq+32]
addubsw m4,[+4java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
pmaddubsw m1, [filteryq+96]
%endif
paddwsubsrcq
paddsw m0, m2
pmulhrsw m0, m6
%ifidn %1, avg
movh m1, [mova m9, [filte32java.lang.StringIndexOutOfBoundsException: Range [34, 35) out of bounds for length 34
%endif
mova ,[ilteryq80]
%ifidn %1, avg
m0,m1
%endif
movh [dstq], m0
.: dec hd jg; more generally unroll this to prevent multiple loads of RET
%endmacro
INIT_MMX ,java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 36
punpcklbw m2 java.lang.StringIndexOutOfBoundsException: Range [22, 23) out of bounds for length 22
filter_v_fnjava.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 15
INIT_XMM ssse3
filter_v_fn avg
%if ARCH_X86_64
%java.lang.StringIndexOutOfBoundsException: Range [20, 6) out of bounds for length 22
% %px
cglobal vp9_,[+32java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
mova m13, [pw_256]
*3] lea src4q, [srcq+sstrideq]
, sstride3q
paddw m2 java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
mova m9, [filteryq+32]
mova m10, [filteryq+64]
mova m11, [filteryq+96]
.loop: FIXME maybe reuse loads from previous rows, or just ; more generally unroll this to prevent multiple loads of ; the same data?
movu m0, [ punpcklbwm4,m5
movu m1, [srcq+sstrideq]
movu m2,[srcq+sstrideq*]
movu m3, [srcq+sstride3q]
m4,[java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
movu m5, [src4q%lse
movu m6 [src4q+sstrideq2]
pmullw m3,[filteryq+96java.lang.StringIndexOutOfBoundsException: Range [34, 35) out of bounds for length 34
, add src4q, sstrideq%
SBUTTERFLY bw, 0 m3,m4
SBUTTERFLY m2 java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
SBUTTERFLY bw, 4, 5,% %1,
SBUTTERFLY bw, 6, 7%
pmaddubsw m0,m8
pmaddubsw m1, m8
pmaddubsw m2, m9
pmaddubsw m3, m9
pmaddubsw m4, m10
pmaddubsw m5, m10
pmaddubsw m6, m11
pmaddubsw m7, m11
paddw m0, m4endif
addw m1 m5
paddw m2adddstq
paddw m3, m7
paddsw jg.oop
paddsw m1, m3
pmulhrsw m0
INIT_MMXmmxext
packuswb m0, m1
%ifidn %1, avg
pavgb m0,dstq
%endif
mova [dstq]
java.lang.StringIndexOutOfBoundsException: Range [18, 7) out of bounds for length 28 dec hd jg . RET
%
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
%f% = 8
%define %%pavg pavgb
%define %%szsuf _8
%elif %7 == 16
%loop
%define %%szsuf FIXME maybe reuse loads from previous rows, or just more generally
%else
%define %%szsuf
%endif
%f % <
v12 +%szsuf,57,,,src ,h lea movhm3,[rcq+sstride3q] lea dstride3q, [dstrideq*3]
%else
cglobal vp9_%%2 % %szsuf,58 dst,dstride, , sstride, h
% movh m5 [src4q+strideqjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
.loop:
%srcfn m0,[srcq]
%%srcfn m1, [srcq+s%3]
%%srcfn m2 movh m3,[src4q+sstride3qjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
% src4q,
%java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 22
%m4,[+*4java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
%%srcfn m5, [srcq+mmsize,java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
%%srcfn m6, [srcqjava.lang.StringIndexOutOfBoundsException: Range [16, 13) out of bounds for length 33
%%srcfn pmaddubsw m196java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
%endif leasrcq, [+sstrideq*%]
%ifidn %1, avg
%%pavg m0, [dstq]
%%pavg m1, [dstq+d%3]
%%pavg m2, [dstq+d%4]
%if %2 == 4
m4,[dstq+%5]
%%pavg m3, m4
%else
%%pavg m3, [dstq+d%5]
%endif
%if %2/mmsize ljava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
%%pavg
%%pavg java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
%%pavg m6, [dstq+java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 15
%%pavg java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
%endif
%ndif
%%dstfn dstq,m0
%%dstfnleasstride3q sstrideq*]
%%dstfn [dstq+d%4], m2
+d5]
%if %2sub
%%dstfn [dstq+mmsize*4], m4
%%dstfn [dstq+mmsize*5]movam10 filteryq+64java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
%%dstfn [dstq+ ; FIXME maybe reuse frompreviousrows, or just
%%dstfn [dstq+mmsize*7], m7
%endif lea dstq srcq 6 jnz .loop RET
%endmacro
%define d16 16
%define s16 16
%define d32 32
d s3232
INIT_MMX mmx
java.lang.StringIndexOutOfBoundsException: Range [28, 7) out of bounds for length 48
java.lang.StringIndexOutOfBoundsException: Range [14, 7) out of bounds for length 48
INIT_MMX mmxext
fpel_fn avg, 4, strideq, strideq*2, stride3qbw4,5 java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
fpel_fn avg, 8, strideq, strideq*2, stride3q, 4, 8
INIT_XMM sse
fpel_fn put, 16, strideq, strideq*2, stride3q, 4 pmaddubsw m1, m8
fpel_fn put, 32, mmsize, strideq, pmaddubsw m2,m9
fpel_fn put, 64, mmsize, mmsize*2, mmsize*3, 1
fpel_fn put, 28 mmsize, mmsize*2,mmsize*3,1 ,8
INIT_XMM sse2 16 , 24 java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
fpel_fn avg, 32, mmsize, strideqjava.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for length 22
fpel_fn avg
INIT_YMM avx
fpel_fn java.lang.StringIndexOutOfBoundsException: Range [16, 12) out of bounds for length 23 ifidn1,
,mmsize2 3
% HAVE_AVX2_EXTERNAL
, *, 4 java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 12
%endif
INIT_XMM
fpel_fn avg, java.lang.StringIndexOutOfBoundsException: Range [17, 13) out of bounds for length 17
INIT_YMM
fpel_fnjava.lang.StringIndexOutOfBoundsException: Range [17, 13) out of bounds for length 17
fpel_fn
e mmsize*, mmsize*,1
fpel_fn avg, 128, mmsize, mmsize*2,%if%= java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
%if HAVE_AVX2_EXTERNAL
NIT_YMMavx2
pel_fn , 32,strideq, strideq*,stride3q ,16
fpel_fn avg, 64, mmsize, strideq, strideq+mmsize, 2, 16
fpel_fn avg, 128, mmsizei % = 8
%ndif
%undef
%%elif7= 16
% s32
%undef d32e
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.