@ -181,3 +181,420 @@ hevc_h_loop_filter_chroma 12
hevc_ v _ l o o p _ f i l t e r _ c h r o m a 8
hevc_ v _ l o o p _ f i l t e r _ c h r o m a 1 0
hevc_ v _ l o o p _ f i l t e r _ c h r o m a 1 2
.macro hevc_loop_filter_luma_body bitdepth
function h e v c _ l o o p _ f i l t e r _ l u m a _ b o d y _ \ b i t d e p t h \ ( ) _ n e o n , e x p o r t =0
.if \ bitdepth > 8
lsl w2 , w2 , #( \ b i t d e p t h - 8 ) / / b e t a < < = B I T _ D E P T H - 8
.else
uxtl v0 . 8 h , v0 . 8 b
uxtl v1 . 8 h , v1 . 8 b
uxtl v2 . 8 h , v2 . 8 b
uxtl v3 . 8 h , v3 . 8 b
uxtl v4 . 8 h , v4 . 8 b
uxtl v5 . 8 h , v5 . 8 b
uxtl v6 . 8 h , v6 . 8 b
uxtl v7 . 8 h , v7 . 8 b
.endif
ldr w7 , [ x3 ] / / t c [ 0 ]
ldr w8 , [ x3 , #4 ] / / t c [ 1 ]
dup v18 . 4 h , w7
dup v19 . 4 h , w8
trn1 v18 . 2 d , v18 . 2 d , v19 . 2 d
.if \ bitdepth > 8
shl v18 . 8 h , v18 . 8 h , #( \ b i t d e p t h - 8 )
.endif
dup v27 . 8 h , w2 / / b e t a
/ / tc2 5
shl v19 . 8 h , v18 . 8 h , #2 / / * 4
add v19 . 8 h , v19 . 8 h , v18 . 8 h / / ( t c * 5 )
srshr v19 . 8 h , v19 . 8 h , #1 / / ( t c * 5 + 1 ) > > 1
sshr v17 . 8 h , v27 . 8 h , #2 / / b e t a2
/ / / / / / beta_ 2 c h e c k
/ / dp0 = a b s ( P 2 - 2 * P 1 + P 0 )
add v22 . 8 h , v3 . 8 h , v1 . 8 h
shl v23 . 8 h , v2 . 8 h , #1
sabd v30 . 8 h , v22 . 8 h , v23 . 8 h
/ / dq0 = a b s ( Q 2 - 2 * Q 1 + Q 0 )
add v21 . 8 h , v6 . 8 h , v4 . 8 h
shl v26 . 8 h , v5 . 8 h , #1
sabd v31 . 8 h , v21 . 8 h , v26 . 8 h
/ / d0 = d p0 + d q0
add v20 . 8 h , v30 . 8 h , v31 . 8 h
shl v25 . 8 h , v20 . 8 h , #1
/ / ( d0 < < 1 ) < b e t a _ 2
cmgt v23 . 8 h , v17 . 8 h , v25 . 8 h
/ / / / / / beta c h e c k
/ / d0 + d3 < b e t a
mov x9 , #0xFFFF0000 0 0 0 0 F F F F
dup v24 . 2 d , x9
and v25 . 1 6 b , v24 . 1 6 b , v20 . 1 6 b
addp v25 . 8 h , v25 . 8 h , v25 . 8 h / / 1 + 0 0 + 1 1 + 0 0 + 1
addp v25 . 4 h , v25 . 4 h , v25 . 4 h / / 1 + 0 + 0 + 1 1 + 0 + 0 + 1
cmgt v25 . 4 h , v27 . 4 h , v25 . 4 h / / l o w e r / u p p e r m a s k i n h [ 0 / 1 ]
mov w9 , v25 . s [ 0 ]
cmp w9 , #0
sxtl v26 . 4 s , v25 . 4 h
sxtl v16 . 2 d , v26 . 2 s / / f u l l s k i p m a s k
b. e q 3 f / / s k i p b o t h b l o c k s
/ / TODO : we c a n c h e c k t h e f u l l s k i p m a s k w i t h t h e w e a k / s t r o n g m a s k t o
/ / potentially s k i p w e a k o r s t r o n g c a l c u l a t i o n e n t i r e l y i f w e o n l y h a v e o n e
/ / / / / / beta_ 3 c h e c k
/ / abs( P 3 - P 0 ) + a b s ( Q 3 - Q 0 ) < b e t a _ 3
sshr v17 . 8 h , v17 . 8 h , #1 / / b e t a _ 3
sabd v20 . 8 h , v0 . 8 h , v3 . 8 h
saba v20 . 8 h , v7 . 8 h , v4 . 8 h
cmgt v21 . 8 h , v17 . 8 h , v20 . 8 h
and v23 . 1 6 b , v23 . 1 6 b , v21 . 1 6 b
/ / / / / / tc2 5 c h e c k
/ / abs( P 0 - Q 0 ) < t c25
sabd v20 . 8 h , v3 . 8 h , v4 . 8 h
cmgt v21 . 8 h , v19 . 8 h , v20 . 8 h
and v23 . 1 6 b , v23 . 1 6 b , v21 . 1 6 b
/ / / / / / Generate l o w / h i g h l i n e m a x f r o m l i n e s 0 / 3 / 4 / 7
/ / mask o u t l i n e s 2 / 3 / 5 / 6
not v20 . 1 6 b , v24 . 1 6 b / / 0 x00 0 0 F F F F F F F F 0 0 0 0
orr v23 . 1 6 b , v23 . 1 6 b , v20 . 1 6 b
/ / generate w e a k / s t r o n g m a s k
uminp v23 . 8 h , v23 . 8 h , v23 . 8 h / / e x t e n d t o s i n g l e s
sxtl v23 . 4 s , v23 . 4 h
uminp v26 . 4 s , v23 . 4 s , v23 . 4 s / / c h e c k l i n e s
/ / extract t o g p r
ext v25 . 1 6 b , v26 . 1 6 b , v26 . 1 6 b , #2
zip1 v17 . 4 s , v26 . 4 s , v26 . 4 s
mov w12 , v25 . s [ 0 ]
mov w11 , #0x0000FFFF
mov w13 , #0xFFFF0000
/ / FFFF F F F F - > s t r o n g s t r o n g
/ / FFFF 0 0 0 0 - > s t r o n g w e a k
/ / 0 0 0 0 FFFF - > w e a k s t r o n g
/ / 0 0 0 0 0 0 0 0 - > weak w e a k
cmp w12 , w13
b. h i 0 f / / o n l y s t r o n g / s t r o n g , s k i p w e a k n d _ p / n d _ q c a l c
/ / / / / / weak n d _ p / n d _ q
/ / d0 + d3
and v30 . 1 6 b , v30 . 1 6 b , v24 . 1 6 b / / d0 _ _ _ _ d3 d4 _ _ _ _ d7
and v31 . 1 6 b , v31 . 1 6 b , v24 . 1 6 b
addp v30 . 8 h , v30 . 8 h , v30 . 8 h / / [ d0 + _ _ _ _ + d3 d4 + _ _ _ _ + d7 ] [ . . . ]
addp v31 . 8 h , v31 . 8 h , v31 . 8 h / / [ d0 + d3 d4 + d7 ]
addp v30 . 4 h , v30 . 4 h , v30 . 4 h
addp v31 . 4 h , v31 . 4 h , v31 . 4 h
/ / ( ( beta + ( b e t a > > 1 ) ) > > 3 )
sshr v21 . 8 h , v27 . 8 h , #1
add v21 . 8 h , v21 . 8 h , v27 . 8 h
sshr v21 . 8 h , v21 . 8 h , #3
/ / nd_ p = d p0 + d p3 < ( ( b e t a + ( b e t a > > 1 ) ) > > 3 )
cmgt v30 . 8 h , v21 . 8 h , v30 . 8 h
/ / nd_ q = d q0 + d q3 < ( ( b e t a + ( b e t a > > 1 ) ) > > 3 )
cmgt v31 . 8 h , v21 . 8 h , v31 . 8 h
sxtl v30 . 4 s , v30 . 4 h
sxtl v31 . 4 s , v31 . 4 h
sxtl v28 . 2 d , v30 . 2 s
sxtl v29 . 2 d , v31 . 2 s
cmp w12 , w11
b. l o 1 f / / c a n o n l y b e w e a k w e a k , s k i p s t r o n g
0 : / / STRONG F I L T E R
/ / P0 = p0 + a v _ c l i p ( ( ( p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4 ) > > 3 ) - p0 , - t c3 , t c3 ) ;
add v21 . 8 h , v2 . 8 h , v3 . 8 h / / ( p1 + p0
add v21 . 8 h , v4 . 8 h , v21 . 8 h / / + q0 )
shl v21 . 8 h , v21 . 8 h , #1 / / * 2
add v22 . 8 h , v1 . 8 h , v5 . 8 h / / ( p2 + q1 )
add v21 . 8 h , v22 . 8 h , v21 . 8 h / / +
srshr v21 . 8 h , v21 . 8 h , #3 / / > > 3
sub v21 . 8 h , v21 . 8 h , v3 . 8 h / / - p0
/ / P1 = p1 + a v _ c l i p ( ( ( p2 + p1 + p0 + q0 + 2 ) > > 2 ) - p1 , - t c2 , t c2 ) ;
add v22 . 8 h , v1 . 8 h , v2 . 8 h
add v23 . 8 h , v3 . 8 h , v4 . 8 h
add v22 . 8 h , v22 . 8 h , v23 . 8 h
srshr v22 . 8 h , v22 . 8 h , #2
sub v22 . 8 h , v22 . 8 h , v2 . 8 h
/ / P2 = p2 + a v _ c l i p ( ( ( 2 * p3 + 3 * p2 + p1 + p0 + q0 + 4 ) > > 3 ) - p2 , - t c , t c ) ;
add v23 . 8 h , v0 . 8 h , v1 . 8 h / / p3 + p2
add v24 . 8 h , v3 . 8 h , v4 . 8 h / / p0 + q0
shl v23 . 8 h , v23 . 8 h , #1 / / * 2
add v23 . 8 h , v23 . 8 h , v24 . 8 h
add v24 . 8 h , v1 . 8 h , v2 . 8 h / / p2 + p1
add v23 . 8 h , v23 . 8 h , v24 . 8 h
srshr v23 . 8 h , v23 . 8 h , #3
sub v23 . 8 h , v23 . 8 h , v1 . 8 h
/ / Q0 = q0 + a v _ c l i p ( ( ( p1 + 2 * p0 + 2 * q0 + 2 * q1 + q2 + 4 ) > > 3 ) - q0 , - t c3 , t c3 ) ;
add v24 . 8 h , v3 . 8 h , v4 . 8 h / / ( p0 + q0
add v24 . 8 h , v5 . 8 h , v24 . 8 h / / + q1 )
shl v24 . 8 h , v24 . 8 h , #1 / / * 2
add v25 . 8 h , v2 . 8 h , v6 . 8 h / / ( p1 + q2 )
add v24 . 8 h , v25 . 8 h , v24 . 8 h / / +
srshr v24 . 8 h , v24 . 8 h , #3 / / > > 3
sub v24 . 8 h , v24 . 8 h , v4 . 8 h / / - q0
/ / Q1 = q1 + a v _ c l i p ( ( ( p0 + q0 + q1 + q2 + 2 ) > > 2 ) - q1 , - t c2 , t c2 ) ;
add v25 . 8 h , v6 . 8 h , v5 . 8 h
add v26 . 8 h , v3 . 8 h , v4 . 8 h
add v25 . 8 h , v25 . 8 h , v26 . 8 h
srshr v25 . 8 h , v25 . 8 h , #2
sub v25 . 8 h , v25 . 8 h , v5 . 8 h
/ / Q2 = q2 + a v _ c l i p ( ( ( 2 * q3 + 3 * q2 + q1 + q0 + p0 + 4 ) > > 3 ) - q2 , - t c , t c ) ;
add v26 . 8 h , v7 . 8 h , v6 . 8 h
add v27 . 8 h , v6 . 8 h , v5 . 8 h
shl v26 . 8 h , v26 . 8 h , #1
add v26 . 8 h , v26 . 8 h , v27 . 8 h
add v27 . 8 h , v3 . 8 h , v4 . 8 h
add v26 . 8 h , v26 . 8 h , v27 . 8 h
srshr v26 . 8 h , v26 . 8 h , #3
sub v26 . 8 h , v26 . 8 h , v6 . 8 h
/ / this c l i p s h o u l d w o r k p r o p e r l y
shl v30 . 8 h , v18 . 8 h , #1 / / t c2
neg v31 . 8 h , v30 . 8 h / / - t c2
clip v31 . 8 h , v30 . 8 h , v21 . 8 h , v22 . 8 h , v23 . 8 h , v24 . 8 h , v25 . 8 h , v26 . 8 h
and v21 . 1 6 b , v21 . 1 6 b , v16 . 1 6 b
and v22 . 1 6 b , v22 . 1 6 b , v16 . 1 6 b
and v23 . 1 6 b , v23 . 1 6 b , v16 . 1 6 b
and v24 . 1 6 b , v24 . 1 6 b , v16 . 1 6 b
and v25 . 1 6 b , v25 . 1 6 b , v16 . 1 6 b
and v26 . 1 6 b , v26 . 1 6 b , v16 . 1 6 b
add v23 . 8 h , v23 . 8 h , v1 . 8 h / / c a r e f u l
add v22 . 8 h , v22 . 8 h , v2 . 8 h
add v21 . 8 h , v21 . 8 h , v3 . 8 h
add v24 . 8 h , v24 . 8 h , v4 . 8 h
add v25 . 8 h , v25 . 8 h , v5 . 8 h
add v26 . 8 h , v26 . 8 h , v6 . 8 h
cmp w12 , w13
b. h i 2 f / / o n l y s t r o n g / s t r o n g , s k i p w e a k
1 : / / WEAK F I L T E R
/ / delta0 = ( 9 * ( q0 - p0 ) - 3 * ( q1 - p1 ) + 8 ) > > 4
.if \ bitdepth < 1 2
sub v27 . 8 h , v4 . 8 h , v3 . 8 h / / q0 - p0
shl v30 . 8 h , v27 . 8 h , #3 / / * 8
add v27 . 8 h , v27 . 8 h , v30 . 8 h / / 9 * ( q0 - p0 )
sub v30 . 8 h , v5 . 8 h , v2 . 8 h / / q1 - p1
shl v31 . 8 h , v30 . 8 h , #1 / / * 2
sub v27 . 8 h , v27 . 8 h , v31 . 8 h
sub v27 . 8 h , v27 . 8 h , v30 . 8 h / / - 3 * ( q1 - p1 )
srshr v27 . 8 h , v27 . 8 h , #4
.else
sub v19 . 8 h , v4 . 8 h , v3 . 8 h / / q0 - p0
sub v20 . 8 h , v5 . 8 h , v2 . 8 h / / q1 - p1
sshll v30 . 4 s , v19 . 4 h , #3 / / * 8
sshll2 v31 . 4 s , v19 . 8 h , #3
shl v27 . 8 h , v20 . 8 h , #1
saddw v30 . 4 s , v30 . 4 s , v19 . 4 h / / 9 * ( q0 - p0 )
saddw2 v31 . 4 s , v31 . 4 s , v19 . 8 h
saddl v19 . 4 s , v27 . 4 h , v20 . 4 h / / 3 * ( q1 - p1 )
saddl2 v20 . 4 s , v27 . 8 h , v20 . 8 h
sub v19 . 4 s , v30 . 4 s , v19 . 4 s
sub v20 . 4 s , v31 . 4 s , v20 . 4 s
sqrshrn v27 . 4 h , v19 . 4 s , #4
sqrshrn2 v27 . 8 h , v20 . 4 s , #4
.endif
/ / delta0 1 0 t c c h e c k m a s k
shl v30 . 8 h , v18 . 8 h , #1 / / * 2
shl v31 . 8 h , v18 . 8 h , #3 / / * 8
add v30 . 8 h , v30 . 8 h , v31 . 8 h / / 1 0 * t c
abs v31 . 8 h , v27 . 8 h
cmgt v20 . 8 h , v30 . 8 h , v31 . 8 h / / a b s ( d e l t a0 ) < 1 0 * t c
and v20 . 1 6 b , v20 . 1 6 b , v16 . 1 6 b / / c o m b i n e w i t h f u l l m a s k
neg v31 . 8 h , v18 . 8 h / / - t c
clip v31 . 8 h , v18 . 8 h , v27 . 8 h / / d e l t a0 = a v _ c l i p ( d e l t a0 , - t c , t c )
/ / deltap1 = a v _ c l i p ( ( ( ( p2 + p0 + 1 ) > > 1 ) - p1 + d e l t a0 ) > > 1 , - t c _ 2 , t c _ 2 )
add v30 . 8 h , v1 . 8 h , v3 . 8 h
srshr v30 . 8 h , v30 . 8 h , #1
sub v30 . 8 h , v30 . 8 h , v2 . 8 h
add v30 . 8 h , v30 . 8 h , v27 . 8 h
sshr v30 . 8 h , v30 . 8 h , #1
/ / p3 p2 p1 p0 q0 q1 q2 q3
/ / v0 v1 v2 v3 v4 v5 v6 v7
/ / deltaq1 = a v _ c l i p ( ( ( ( q2 + q0 + 1 ) > > 1 ) - q1 - d e l t a0 ) > > 1 , - t c _ 2 , t c _ 2 ) ;
add v31 . 8 h , v6 . 8 h , v4 . 8 h
srshr v31 . 8 h , v31 . 8 h , #1
sub v31 . 8 h , v31 . 8 h , v5 . 8 h
sub v31 . 8 h , v31 . 8 h , v27 . 8 h
sshr v31 . 8 h , v31 . 8 h , #1
/ / apply n d _ p n d _ q m a s k t o d e l t a p1 / d e l t a q1
and v30 . 1 6 b , v30 . 1 6 b , v28 . 1 6 b
and v31 . 1 6 b , v31 . 1 6 b , v29 . 1 6 b
/ / apply f u l l s k i p m a s k t o d e l t a p1 / d e l t a q1 / d e l t a0
and v30 . 1 6 b , v30 . 1 6 b , v20 . 1 6 b
and v27 . 1 6 b , v27 . 1 6 b , v20 . 1 6 b
and v31 . 1 6 b , v31 . 1 6 b , v20 . 1 6 b
/ / clip P 1 / Q 1 t o - t c _ 2 , t c _ 2
sshr v18 . 8 h , v18 . 8 h , #1 / / t c2
neg v28 . 8 h , v18 . 8 h
clip v28 . 8 h , v18 . 8 h , v30 . 8 h , v31 . 8 h
/ / P0 = a v _ c l i p _ p i x e l ( p0 + d e l t a0 )
/ / Q0 = a v _ c l i p _ p i x e l ( q0 - d e l t a0 )
add v29 . 8 h , v3 . 8 h , v27 . 8 h / / P 0
sub v27 . 8 h , v4 . 8 h , v27 . 8 h / / Q 0
/ / P1 = a v _ c l i p _ p i x e l ( p1 + d e l t a p1 )
/ / Q1 = a v _ c l i p _ p i x e l ( q1 + d e l t a q1 )
add v30 . 8 h , v2 . 8 h , v30 . 8 h / / P 1
add v31 . 8 h , v5 . 8 h , v31 . 8 h / / Q 1
2 : / / MIX W E A K / S T R O N G
mov v19 . 1 6 b , v1 . 1 6 b
mov v20 . 1 6 b , v6 . 1 6 b
/ / copy s e l e c t i o n m a s k
mov v1 . 1 6 b , v17 . 1 6 b
mov v2 . 1 6 b , v17 . 1 6 b
mov v3 . 1 6 b , v17 . 1 6 b
mov v4 . 1 6 b , v17 . 1 6 b
mov v5 . 1 6 b , v17 . 1 6 b
mov v6 . 1 6 b , v17 . 1 6 b
/ / select
bsl v1 . 1 6 b , v23 . 1 6 b , v19 . 1 6 b / / P 2 s t r o n g / o r i g
bsl v2 . 1 6 b , v22 . 1 6 b , v30 . 1 6 b / / P 1 s t r o n g / w e a k
bsl v3 . 1 6 b , v21 . 1 6 b , v29 . 1 6 b / / P 0 s t r o n g / w e a k
bsl v4 . 1 6 b , v24 . 1 6 b , v27 . 1 6 b / / Q 0 s t r o n g / w e a k
bsl v5 . 1 6 b , v25 . 1 6 b , v31 . 1 6 b / / Q 1 s t r o n g / w e a k
bsl v6 . 1 6 b , v26 . 1 6 b , v20 . 1 6 b / / Q 2 s t r o n g / o r i g
/ / NOTE : Q3 / P 3 a r e u n c h a n g e d
.if \ bitdepth > 8
movi v19 . 8 h , #0
dup v20 . 8 h , w14
clip v19 . 8 h , v20 . 8 h , v1 . 8 h , v2 . 8 h , v3 . 8 h , v4 . 8 h , v5 . 8 h , v6 . 8 h
.else
sqxtun v0 . 8 b , v0 . 8 h
sqxtun v1 . 8 b , v1 . 8 h
sqxtun v2 . 8 b , v2 . 8 h
sqxtun v3 . 8 b , v3 . 8 h
sqxtun v4 . 8 b , v4 . 8 h
sqxtun v5 . 8 b , v5 . 8 h
sqxtun v6 . 8 b , v6 . 8 h
sqxtun v7 . 8 b , v7 . 8 h
.endif
ret
3 : ret x6
endfunc
.endm
hevc_ l o o p _ f i l t e r _ l u m a _ b o d y 8
hevc_ l o o p _ f i l t e r _ l u m a _ b o d y 1 0
hevc_ l o o p _ f i l t e r _ l u m a _ b o d y 1 2
/ / hevc_ v _ l o o p _ f i l t e r _ l u m a ( u i n t 8 _ t * p i x , p t r d i f f _ t s t r i d e , i n t b e t a , c o n s t i n t 3 2 _ t * t c , c o n s t u i n t 8 _ t * n o _ p , c o n s t u i n t 8 _ t * n o _ q )
.macro hevc_loop_filter_luma dir, b i t d e p t h
function f f _ h e v c _ \ d i r \ ( ) _ l o o p _ f i l t e r _ l u m a _ \ b i t d e p t h \ ( ) _ n e o n , e x p o r t =1
mov x6 , x30
.ifc \ dir, v
.if \ bitdepth > 8
sub x0 , x0 , #8
.else
sub x0 , x0 , #4
.endif
.else
sub x0 , x0 , x1 , l s l #2 / / - 4 * x s t r i d e
.endif
mov x10 , x0
.if \ bitdepth > 8
ld1 { v0 . 8 h } , [ x0 ] , x1
ld1 { v1 . 8 h } , [ x0 ] , x1
ld1 { v2 . 8 h } , [ x0 ] , x1
ld1 { v3 . 8 h } , [ x0 ] , x1
ld1 { v4 . 8 h } , [ x0 ] , x1
ld1 { v5 . 8 h } , [ x0 ] , x1
ld1 { v6 . 8 h } , [ x0 ] , x1
ld1 { v7 . 8 h } , [ x0 ]
mov w14 , #( ( 1 < < \ b i t d e p t h ) - 1 )
.ifc \ dir, v
transpose_ 8 x8 H v0 , v1 , v2 , v3 , v4 , v5 , v6 , v7 , v16 , v17
.endif
.else
ld1 { v0 . 8 b } , [ x0 ] , x1
ld1 { v1 . 8 b } , [ x0 ] , x1
ld1 { v2 . 8 b } , [ x0 ] , x1
ld1 { v3 . 8 b } , [ x0 ] , x1
ld1 { v4 . 8 b } , [ x0 ] , x1
ld1 { v5 . 8 b } , [ x0 ] , x1
ld1 { v6 . 8 b } , [ x0 ] , x1
ld1 { v7 . 8 b } , [ x0 ]
.ifc \ dir, v
transpose_ 8 x8 B v0 , v1 , v2 , v3 , v4 , v5 , v6 , v7 , v16 , v17
.endif
.endif
bl h e v c _ l o o p _ f i l t e r _ l u m a _ b o d y _ \ b i t d e p t h \ ( ) _ n e o n
.if \ bitdepth > 8
.ifc \ dir, v
transpose_ 8 x8 H v0 , v1 , v2 , v3 , v4 , v5 , v6 , v7 , v16 , v17
.endif
st1 { v0 . 8 h } , [ x10 ] , x1
st1 { v1 . 8 h } , [ x10 ] , x1
st1 { v2 . 8 h } , [ x10 ] , x1
st1 { v3 . 8 h } , [ x10 ] , x1
st1 { v4 . 8 h } , [ x10 ] , x1
st1 { v5 . 8 h } , [ x10 ] , x1
st1 { v6 . 8 h } , [ x10 ] , x1
st1 { v7 . 8 h } , [ x10 ]
.else
.ifc \ dir, v
transpose_ 8 x8 B v0 , v1 , v2 , v3 , v4 , v5 , v6 , v7 , v16 , v17
.endif
st1 { v0 . 8 b } , [ x10 ] , x1
st1 { v1 . 8 b } , [ x10 ] , x1
st1 { v2 . 8 b } , [ x10 ] , x1
st1 { v3 . 8 b } , [ x10 ] , x1
st1 { v4 . 8 b } , [ x10 ] , x1
st1 { v5 . 8 b } , [ x10 ] , x1
st1 { v6 . 8 b } , [ x10 ] , x1
st1 { v7 . 8 b } , [ x10 ]
.endif
ret x6
endfunc
.endm
hevc_ l o o p _ f i l t e r _ l u m a h , 8
hevc_ l o o p _ f i l t e r _ l u m a h , 1 0
hevc_ l o o p _ f i l t e r _ l u m a h , 1 2
hevc_ l o o p _ f i l t e r _ l u m a v , 8
hevc_ l o o p _ f i l t e r _ l u m a v , 1 0
hevc_ l o o p _ f i l t e r _ l u m a v , 1 2