@ -271,6 +271,81 @@ function ff_pix_abs16_x2_neon, export=1
ret
endfunc
function f f _ p i x _ a b s16 _ y 2 _ n e o n , e x p o r t =1
/ / x0 u n u s e d
/ / x1 u i n t 8 _ t * p i x1
/ / x2 u i n t 8 _ t * p i x2
/ / x3 p t r d i f f _ t s t r i d e
/ / w4 i n t h
/ / initialize b u f f e r s
movi v29 . 8 h , #0 / / c l e a r t h e a c c u m u l a t o r
movi v28 . 8 h , #0 / / c l e a r t h e a c c u m u l a t o r
movi d18 , #0
add x5 , x2 , x3 / / p i x2 + s t r i d e
cmp w4 , #4
b. l t 2 f
/ / make 4 i t e r a t i o n s a t o n c e
1 :
/ / abs( p i x1 [ 0 ] , a v g 2 ( p i x2 [ 0 ] , p i x2 [ 0 + s t r i d e ] ) )
/ / avg2 ( a , b ) = ( ( ( a ) + ( b ) + 1 ) > > 1 )
/ / abs( x ) = ( x < 0 ? ( - x ) : ( x ) )
ld1 { v1 . 1 6 b } , [ x2 ] , x3 / / L o a d p i x2 f o r f i r s t i t e r a t i o n
ld1 { v2 . 1 6 b } , [ x5 ] , x3 / / L o a d p i x3 f o r f i r s t i t e r a t i o n
ld1 { v0 . 1 6 b } , [ x1 ] , x3 / / L o a d p i x1 f o r f i r s t i t e r a t i o n
urhadd v30 . 1 6 b , v1 . 1 6 b , v2 . 1 6 b / / R o u n d i n g h a l v i n g a d d , f i r s t i t e r a t i o n
ld1 { v4 . 1 6 b } , [ x2 ] , x3 / / L o a d p i x2 f o r s e c o n d i t e r a t i o n
ld1 { v5 . 1 6 b } , [ x5 ] , x3 / / L o a d p i x3 f o r s e c o n d i t e a r t i o n
uabal v29 . 8 h , v0 . 8 b , v30 . 8 b / / A b s o l u t e d i f f e r e n c e o f l o w e r h a l f , f i r s t i t e r a t i o n
uabal2 v28 . 8 h , v0 . 1 6 b , v30 . 1 6 b / / A b s o l u t e d i f f e r e n c e o f u p p e r h a l f , f i r s t i t e r a t i o n
ld1 { v3 . 1 6 b } , [ x1 ] , x3 / / L o a d p i x1 f o r s e c o n d i t e r a t i o n
urhadd v27 . 1 6 b , v4 . 1 6 b , v5 . 1 6 b / / R o u n d i n g h a l v i n g a d d , s e c o n d i t e r a t i o n
ld1 { v7 . 1 6 b } , [ x2 ] , x3 / / L o a d p i x2 f o r t h i r d i t e r a t i o n
ld1 { v20 . 1 6 b } , [ x5 ] , x3 / / L o a d p i x3 f o r t h i r d i t e r a t i o n
uabal v29 . 8 h , v3 . 8 b , v27 . 8 b / / A b s o l u t e d i f f e r e n c e o f l o w e r h a l f f o r s e c o n d i t e r a t i o n
uabal2 v28 . 8 h , v3 . 1 6 b , v27 . 1 6 b / / A b s o l u t e d i f f e r e n c e o f u p p e r h a l f f o r s e c o n d i t e r a t i o n
ld1 { v6 . 1 6 b } , [ x1 ] , x3 / / L o a d p i x1 f o r t h i r d i t e r a t i o n
urhadd v26 . 1 6 b , v7 . 1 6 b , v20 . 1 6 b / / R o u n d i n g h a l v i n g a d d , t h i r d i t e r a t i o n
ld1 { v22 . 1 6 b } , [ x2 ] , x3 / / L o a d p i x2 f o r f o u r t h i t e r a t i o n
ld1 { v23 . 1 6 b } , [ x5 ] , x3 / / L o a d p i x3 f o r f o u r t h i t e r a t i o n
uabal v29 . 8 h , v6 . 8 b , v26 . 8 b / / A b s o l u t e d i f f e r e n c e o f l o w e r h a l f f o r t h i r d i t e r a t i o n
uabal2 v28 . 8 h , v6 . 1 6 b , v26 . 1 6 b / / A b s o l u t e d i f f e r e n c e o f u p p e r h a l f f o r t h i r d i t e r a t i o n
ld1 { v21 . 1 6 b } , [ x1 ] , x3 / / L o a d p i x1 f o r f o u r t h i t e r a t i o n
sub w4 , w4 , #4 / / h - = 4
urhadd v25 . 1 6 b , v22 . 1 6 b , v23 . 1 6 b / / R o u n d i n g h a l v i n g a d d
cmp w4 , #4
uabal v29 . 8 h , v21 . 8 b , v25 . 8 b / / A b s o l u t e d i f f e r e n c e o f l o w e r h a l f f o r f o u r t h i t e r a t i o n
uabal2 v28 . 8 h , v21 . 1 6 b , v25 . 1 6 b / / A b s o l u t e d i f f e r e n c e o f u p p e r h a l f f o r f o u r t h i t e r a t i o n
b. g e 1 b
cbz w4 , 3 f
/ / iterate b y o n e
2 :
ld1 { v1 . 1 6 b } , [ x2 ] , x3 / / L o a d p i x2
ld1 { v2 . 1 6 b } , [ x5 ] , x3 / / L o a d p i x3
subs w4 , w4 , #1
ld1 { v0 . 1 6 b } , [ x1 ] , x3 / / L o a d p i x1
urhadd v30 . 1 6 b , v1 . 1 6 b , v2 . 1 6 b / / R o u n d i n g h a l v i n g a d d
uabal v29 . 8 h , v30 . 8 b , v0 . 8 b
uabal2 v28 . 8 h , v30 . 1 6 b , v0 . 1 6 b
b. n e 2 b
3 :
add v29 . 8 h , v29 . 8 h , v28 . 8 h / / A d d v e c t o r s t o g e t h e r
uaddlv s16 , v29 . 8 h / / A d d u p v e c t o r v a l u e s
add d18 , d18 , d16
fmov w0 , s18
ret
endfunc
function s s e 1 6 _ n e o n , e x p o r t =1
/ / x0 - u n u s e d
/ / x1 - p i x1