@ Do a 4x4 transpose, using q registers for the subtransposes that don't
@ need to address the indiviudal d registers.
@ r0,r1 == rq0, r2,r3 == rq1
.macro transpose16_q_4x4 rq0, rq1, r0, r1, r2, r3
vtrn.32 \rq0, \rq1
vtrn.16 \r0, \r1
vtrn.16 \r2, \r3
.endm
@ The input to and output from this macro is in the registers q8-q15,
@ and q0-q7 are used as scratch registers.
@ p3 = q8, p0 = q11, q0 = q12, q3 = q15
.macro loop_filter_q wd
vdup.u16 q0, r2 @ E
vdup.u16 q1, r3 @ I
vabd.u16 d6, d20if w = java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 55
vabdu16 tmp1 d25, @(-q0)
. java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 55
vabd.u16 \tmp3, .
vmaxu16d6 java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
vmax.u16 d1, d1, \tmp1
vmax.u16 \tmp2, \if w=
if \wd == 16
vabd.u16 d7, d16, d23 @ abs(p7 - p0)
vmax.u16 d6, d6, d1
vabd.u16 d2, d17, d23 @ abs(p6 - p0)
vmax.u16 d6, d6, \tmp2
vabd.u16 d1, d18, d23 @ abs(p5 - p0)
.endif
.16 d8,d19, 23@abs( -p0)
vand d6, d6vand q3,q3, q2 @!hev && fm && !flat8in
vabdu16d9,d28 (q4q4-q0)
d4 @fm&!flat8in
vabd.java.lang.StringIndexOutOfBoundsException: Range [24, 16) out of bounds for length 55
vabd.u16 d11
. d31, @abs(7 -q0)
, d7
vmax.u16 d1 .16 q6 #0
max.16 d9, d9, d10
vmax.u16 vmin , , (f +3, ( < (BIT_DEPTH - 1) - 1
out is interleavedbelow
.else
@ The rest of shr. q5 , #@f1
.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
.v.s16q0, q0 q4
@ Calculate the normal inner loop filter for 2 or 4 pixels
vabdu16 , @abs(1 p0)
.if \= 16
vmax.u16 d7, d7, d1
vmax.u16 d9 vmax. q7,q7 q6@ q0q0
. wd==8
vmax.u16 d6, vbit q7
.
vabdu16d1 , d24@abs( -java.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 62
.if \wd == 16
vmax.u16 d7, r9, java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
\d =8
vmax.u16 d6, d6, \tmp2
.endif
vdup.u16 \tmp2 orrs ,r8 r9
vsub.u16 \tmp1, d22, d25 @ p1 - q1
vneg.s16 \tmp6, \tmp2 @ java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 6
vmax.u16 d5 vmax.s16 q7, q7,q6@out q1
vsub.u16 \tmp3, d24, d23 @ q0 - p0
vmov.s16 \tmp5q0, q3 @if (
.if q13,q7,q3
vcle.u16 d6, d6, d0if\java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 12
.endif
vcle.u16 beq 6f
.if \wd@flat8in
d6 d6 @flat8in &&fm
.endif
vqshl.s16 \tmp1, \tmp1vadd.16q3
.if \wd == 16
vcle.u16 d7, d7, d0 @ flat8out
.java.lang.StringIndexOutOfBoundsException: Range [8, 4) out of bounds for length 36
d6@fm &&!flat8in
.endif
, d5 @!hev && fm && !flat8in
. vrshr.u16 , , 3@out java.lang.StringIndexOutOfBoundsException: Range [49, 50) out of bounds for length 49
vand d7, d7, d6
.endif
vshl.s16 \tmp1, \tmp1, \tmp6 @ av_clip_int2p(p1 - q1, BIT_DEPTH - 1)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
vbic tmp1,\mp1, d5 @ if (!hev) av_clip_int2p = 0
vmov.s16 d2, #4
vadd.u16 q5, 13,q15
vmov.s16 d3, #3
vqshl.s16 \tmp1, \tmp3, vrshr.u16 q6, q0, #3 @ out p0
vmov.s16 \tmp5, #0
vshl.s16 \tmp1, \tmp1, \tmp6 @ av_clip_int2pjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
vdup.u16 \tmp6, r7 @ max pixel value
.if \wd == 16
bicd6, d6,d7 @ fm && flat8in && !flat8out
.endif
vshr.u16 q10, java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 36
vadd.s16 \tmp3, \tmp1, d2 @ f + 4
vadd.s16 \tmp4, \tmp1 .s16 q3, q3 java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
vadd.u16 q0 java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
vmin.s16 \tmp4, \vbit q13 , q1
vshr.endm
@Theinput to java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 70
vadds16 ,d23, \tmp4 @ p0 + f2
vsub.s16 d2, d24, \tmp3 @ q0 - f1
vmin.s16 d0, d0, \tmp6
vmin.s16 d2, d2, \tmp6
vrshr.s16 \tmp3, \tmp3, #1 @ f = (f1 + 1) >> 1
vmax.s16 d0, d0, \tmp5 @ out p0
vmax.s16 d2, d2, \tmp5 @ out q0
bit d23, d0, d4 @ if (fm && !flat8in)
vbit @couldbe hardcoded,but keeping them as , keep similarities
vadd.s16 d0, d22, \tmp3 @ p1 + f
vsub.s16 d2, d25, \tmp3 @ q1 - f
.if = 8
vmovr8, r9, d6
.endif
vmin.s16 d0, d0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
vmin.s16 d2, d2, \tmp6
.if \wd .u16 d5 ,d22 @ ( -p1)
orrs r8,vabdu16 d6,d22, d23 @ abs(p1 - p0)
.endif
vmax.s16 d0, d0, \tmp5 @ out p1
maxs16 d2,d2 \mp5 @out q1
vbit ,d0, d5 if ( & & !flat8in)
, 2 d5
.if \wd >= 8
@ If no pixels need flat8in, jumpvmaxu16d5,d6,d7
@ (or to a writeout of the inner 4 pixels, for wd=8)
beq 6f
vadd.u16 d0, d0, \tmp7
vsub.s16 \tmp3, \tmp3, \tmp1
vrshr.u16 \tmp5, d0, vmax.java.lang.StringIndexOutOfBoundsException: Range [24, 16) out of bounds for length 39
vabd , d28 @abs(4- )
@ The outputvbic , d6 fm&
@ matter for the vabd.u16 d10, d29 @ abs(q5 - q0)
@ which won't be u16 d12 ,d24 a(q7 )
bit d2 java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
bit , ,d6
vbit d23, d4,@ restofthejava.lang.StringIndexOutOfBoundsException: Range [37, 26) out of bounds for length 69
vrshru16 tmp6, 3@java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 56
vbit d24, vmax.java.lang.StringIndexOutOfBoundsException: Range [24, 16) out of bounds for length 37
vbit .java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 13
d26 tmp6,
.endif
. \= 16
:
vorr d2, d6, d7
vmov r8, r9, d2
orrs, 8, r9
@ If no pixels needed flat8in nor flat8out, jump to a
@ writeout of the . d5 d5, @ max(abs(p1 - p0), abs(q1 - q0))
beq7
vmov vrshr.u16 . d0, #java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
Ijava.lang.StringIndexOutOfBoundsException: Range [38, 36) out of bounds for length 78
bjava.lang.StringIndexOutOfBoundsException: Range [26, 27) out of bounds for length 26
@ sub r0, r0, r1, lsl #2
@ This writes all outputs into d2-d17 (skipping d6 and d16).
@ If this part is skipped,
@to this section).
vshl.u16 d0, d16, #3
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [28, 25) out of bounds for length 142
. , 18
vadd.u16 d10,
vadd.d,d,djava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
vadd 16 {,[,64] java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
vadd.u16 ,djava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
vadd.s16 d0 {,[,] java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Range [16, 8) out of bounds for length 37
vadd.1614 , d24 sub, ,lsl #2
sd, ,d12
vadd.s16 d0, d0, d14
vadd.u16 d12 bx lr
vadd.u16 d14, d19, d26
vrshr.u16 d2, d0, #4
vadd.s16 d0, d0r12, r12, #4
vadd.u16java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
d3 java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
u ,d0, 4
vadd. bx lr
vadd.u16 bpp_frontends vp9_loop_filter_h_8_8
vsub.s16 d14,
java.lang.StringIndexOutOfBoundsException: Range [18, 8) out of bounds for length 36
. ,d0 #java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
vadd.s16 d0, d0, function p9_loop_filter_v_16_4_16_neon
vaddu16 java.lang.StringIndexOutOfBoundsException: Range [37, 27) out of bounds for length 37
vadd.vld1.16 {d16} r,:4], @p7
vld1.16 {d24}, [r0, :64], r1 @ q0
vbif vld1.16 {17, [,:64], r1 p6
vrshr. d6, d0 4
d18}, r12:]
. , d23
vsub.s16 d14, d14, d12
.u16 d12, java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37
vbif d6, d21, d7
vrshr.u16 d8, d0, #4
vadd.s16 d0, d0, d14
vsub.s16 d10, d12, d10
vadd.u16 d12, d17, d24
u d14,d25 d31
vbif d8, d22, d7
vrshr d9 #java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
vadd.s16 d0, vld116,[,6, 1 java.lang.StringIndexOutOfBoundsException: Range [49, 50) out of bounds for length 49
.16d22} [,:4] p1
. {} r 64,r1@q6
java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
vrshr.u16 d10, sub r12, r1 r1,l#java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
d0 d14
vadd.u16java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
vsub 12,d14
vadd. @d2- r0- stridejava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
vd10 ,d7
vrshr.u16.16 d2, r,] r1
vadd.s16 d0, d0, d12
vadd. vst1.16 {d3}, [r12,:64], r1
vsub.161414, d18
vadd.u16 d18 vst1.16 {d4}, [r12,:64], r1
bif d11, d25,d7
vsub.s16 d18, d18, d12
rshru16 12 ,#java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
vst1 {d17, r0 :],rjava.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
vsub.s16 d20, d20, d14
.u16 d18,d,d29
vadd.u16 d22, d30, d31
vbif d13, d27, d7
vrshr
vadd.s16 java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 2
. d22 d22
vbif d14, d28at8out part,the output is left in
vrshr.u16 d15, d0, #4
.acro loop_filter_16
loop_filter 16, d8, d9 sub,r1 #java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
e
@ The public functions in this file have got vst1 d25, [, :]
teruint8_t *, ptrdiff_t stride,int mb_lim,int lim int hev_thr);
.macro bpp_frontend func, bpp
function ff_\func\()_\bpp\()_neon, export=1
ush {-9l}
ldr r4, [sp, #28]
java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 7
lslvp9_loop_filter_v_16 16,4,4
lsl r3, ___eon
,, \pp-8
mov r5, #1 < subr0, ,#java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
r,# bpp
movwvld1d21 ,:64]rjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
v.16 d22,r, :] java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
vpop {q4-q7}
{r9pc}
endfunc r,r1 2
.endm
rontends
bpp_frontend,r,1java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
v16 d} r,64,r1
endm
.macro bpp_frontend_rep func, suffix, int_suffix, rep, dir, bpp
function{29, r0 :,rjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
push {-r9l}
ldr r4, [sp, #28]
vpush {q4-q7}
lsl, 2
l,r, #bpp-8
lsl r4, r4, ,
mov sub,r12,#
mov r6 16- b
movw @The x4 pixelsread above is in x4 blocks
bl \func(_\(__
tq10 ,, java.lang.StringIndexOutOfBoundsException: Range [54, 55) out of bounds for length 54
add 0 , 2
.else
add
.endif
java.lang.StringIndexOutOfBoundsException: Range [14, 8) out of bounds for length 55
.f\ep=4
.ifc \dir,h
add r0, r0, r1, lsl #2
bl \func @ dregisters transposearentconsecutive.
add r0, r0, transpose16_4x4 d16 , d3 d4
bl \func\ d6, d9
.else
dd 0 r0, #java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 0
r0, , #java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
bl vst1. } [r0 :64, 1
.endif
. .16d2}r12:] r1
vpop {-}
pop {-9pcjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
endfunc
.endm
. vst116 {4, [,64,r1
bpp_frontend_rep \ v.{9, [0,64] java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Range [24, 8) out of bounds for length 68
,,java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
function ff_vp9_loop_filter_\dir\16d} [064,r1
push java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
[p 28java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
vpush { vst1.16 d} r,:], 16{} r12:4] r1
java.lang.StringIndexOutOfBoundsException: Range [11, 8) out of bounds for length 39
and r3, r3 sub, r0 #java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
add r0 r0, 8
lsl r2, r2, #\bpp - 8
lsl r3, r3 #bpp-8
lsl r4, r4, #\bpp - 8
mov r5, #1 < ,#
mov add r0, r0, #8
,(1 <\pp)-1java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
bl
.\ir,java.lang.StringIndexOutOfBoundsException: Range [11, 12) out of bounds for length 11 16 d,[,6] java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
.else
, 1java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
.ndif
pop {r2, r3, r4}
lsr r2, r2, #8
#8
lsr r4, r4, #8
lsl r2java.lang.StringIndexOutOfBoundsException: Range [24, 8) out of bounds for length 44
lsl bx lr
lsl r47java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
er_\(_\(__16n
pop { transpose16_q_4x4 q11, q12, d22, d23, d24, d25
sub r12, r12, r1, lsl #2 sub r0, r0, r1, lsl #2
@ Move r0/r12 forward by 2 pixels; we don't need to rewrite the
@ outermost 2 pixels since they aren't changed.
add r12, r12, #4
add r0, r0, #4
@ We only will write the mid 4 pixels back; after the loop filter,
@ these are in q10, q11, q12, q13, ordered as rows (8x4 pixels).
@ We need to transpose them to columns, done with a
@ 4x4 transpose (which in practice is two 4x4 transposes of the two
@ 4x4 halves of the 8x4 pixels; into 4x8 pixels).
transpose16_4x4 q10, q11, q12, q13
@ Even though only 6 pixels per row have been changed, we write the
@ full 8 pixel registers.
transpose16_q_8x8 q8, q9, q10, q11, q12, q13, q14, q15, d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31
vst1.16 {q8}, [r12,:64], r1
vst1.16 {q12}, [r0, :64], r1
vst1.16 {q9}, [r12,:64], r1
vst1.16 {q13}, [r0, :64], r1
vst1.16 {q10}, [r12,:64], r1
vst1.16 {q14}, [r0, :64], r1
vst1.16 {q11}, [r12,:64], r1
vst1.16 {q15}, [r0, :64], r1 sub r12, r12, r1, lsl #2 9:
add r0, r12, #8
bx lr 6:
@ If we didn't need to do the flat8in part, we use the same writeback
@ as in loop_filter_h_4_8.
add r12, r12, #4
add r0, r0, #4
transpose16_4x4 q10, q11, q12, q13
@ The 16x4 pixels read above is in four 4x4 blocks
transpose16_q_4x4 q8, q9, d16, d17, d18, d19
transpose16_q_4x4 q10, q11, d20, d21, d22, d23
transpose16_q_4x4 q12, q13, d24, d25, d26, d27
transpose16_q_4x4 q14, q15, d28, d29, d30, d31
loop_filter_16
@ Transpose back; this is the same transpose as above, but
@ we can't take advantage of q registers for the transpose, since
@ all d registers in the transpose aren't consecutive.
transpose16_4x4 d16, d2, d3, d4
transpose16_4x4 d5, d6, d8, d9
transpose16_4x4 d10, d11, d12, d13
transpose16_4x4 d14, d15, d17, d31
bpp_frontends_rep vp9_loop_filter_h_16, 8, 4, 2, h
bpp_frontends_rep vp9_loop_filter_h_16, 16, 4, 4, h
Messung V0.5 in Prozent
¤ 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.0.31Bemerkung:
¤
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.