@ -72,6 +72,53 @@ function ff_pix_abs16_neon, export=1
ret
endfunc
function f f _ p i x _ a b s8 _ 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
movi v30 . 8 h , #0
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 :
ld1 { v0 . 8 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
ld1 { v1 . 8 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 . 8 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
uabal v30 . 8 h , v0 . 8 b , v1 . 8 b / / A b s o l u t e d i f f e r e n c e , f i r s t i t e r a t i o n
ld1 { v3 . 8 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 { v4 . 8 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
uabal v30 . 8 h , v2 . 8 b , v3 . 8 b / / A b s o l u t e d i f f e r e n c e , s e c o n d i t e r a t i o n
ld1 { v5 . 8 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
sub w4 , w4 , #4 / / h - = 4
ld1 { v6 . 8 b } , [ x1 ] , x3 / / L o a d p i x1 f o r f o r u t h i t e r a t i o n
ld1 { v7 . 8 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
uabal v30 . 8 h , v4 . 8 b , v5 . 8 b / / A b s o l u t e d i f f e r e n c e , t h i r d i t e r a t i o n
cmp w4 , #4
uabal v30 . 8 h , v6 . 8 b , v7 . 8 b / / A b s o l u t e d i f f e r e n c e , f o r u 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 { v0 . 8 b } , [ x1 ] , x3 / / L o a d p i x1
ld1 { v1 . 8 b } , [ x2 ] , x3 / / L o a d p i x2
subs w4 , w4 , #1
uabal v30 . 8 h , v0 . 8 b , v1 . 8 b
b. n e 2 b
3 :
uaddlv s20 , v30 . 8 h / / A d d u p v e c t o r
fmov w0 , s20
ret
endfunc
function f f _ p i x _ a b s16 _ x 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