@ -119,6 +119,198 @@ function ff_pix_abs8_neon, export=1
ret
endfunc
function f f _ p i x _ a b s8 _ x2 _ 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
cmp w4 , #4
movi v26 . 8 h , #0
add x5 , x2 , #1 / / p i x2 + 1
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 { v1 . 8 b } , [ x2 ] , x3
ld1 { v2 . 8 b } , [ x5 ] , x3
ld1 { v0 . 8 b } , [ x1 ] , x3
ld1 { v4 . 8 b } , [ x2 ] , x3
urhadd v30 . 8 b , v1 . 8 b , v2 . 8 b
ld1 { v5 . 8 b } , [ x5 ] , x3
uabal v26 . 8 h , v0 . 8 b , v30 . 8 b
ld1 { v6 . 8 b } , [ x1 ] , x3
urhadd v29 . 8 b , v4 . 8 b , v5 . 8 b
ld1 { v7 . 8 b } , [ x2 ] , x3
ld1 { v20 . 8 b } , [ x5 ] , x3
uabal v26 . 8 h , v6 . 8 b , v29 . 8 b
ld1 { v21 . 8 b } , [ x1 ] , x3
urhadd v28 . 8 b , v7 . 8 b , v20 . 8 b
ld1 { v22 . 8 b } , [ x2 ] , x3
ld1 { v23 . 8 b } , [ x5 ] , x3
uabal v26 . 8 h , v21 . 8 b , v28 . 8 b
sub w4 , w4 , #4
ld1 { v24 . 8 b } , [ x1 ] , x3
urhadd v27 . 8 b , v22 . 8 b , v23 . 8 b
cmp w4 , #4
uabal v26 . 8 h , v24 . 8 b , v27 . 8 b
b. g e 1 b
cbz w4 , 3 f
/ / iterate b y o n e
2 :
ld1 { v1 . 8 b } , [ x2 ] , x3
ld1 { v2 . 8 b } , [ x5 ] , x3
ld1 { v0 . 8 b } , [ x1 ] , x3
urhadd v30 . 8 b , v1 . 8 b , v2 . 8 b
subs w4 , w4 , #1
uabal v26 . 8 h , v0 . 8 b , v30 . 8 b
b. n e 2 b
3 :
uaddlv s20 , v26 . 8 h
fmov w0 , s20
ret
endfunc
function f f _ p i x _ a b s8 _ 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
cmp w4 , #4
movi v26 . 8 h , #0
ld1 { v1 . 8 b } , [ x2 ] , x3
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 { v2 . 8 b } , [ x2 ] , x3
ld1 { v0 . 8 b } , [ x1 ] , x3
urhadd v30 . 8 b , v1 . 8 b , v2 . 8 b
ld1 { v5 . 8 b } , [ x2 ] , x3
ld1 { v6 . 8 b } , [ x1 ] , x3
uabal v26 . 8 h , v0 . 8 b , v30 . 8 b
urhadd v29 . 8 b , v2 . 8 b , v5 . 8 b
ld1 { v20 . 8 b } , [ x2 ] , x3
ld1 { v21 . 8 b } , [ x1 ] , x3
uabal v26 . 8 h , v6 . 8 b , v29 . 8 b
urhadd v28 . 8 b , v5 . 8 b , v20 . 8 b
ld1 { v1 . 8 b } , [ x2 ] , x3
ld1 { v24 . 8 b } , [ x1 ] , x3
urhadd v27 . 8 b , v20 . 8 b , v1 . 8 b
sub w4 , w4 , #4
uabal v26 . 8 h , v21 . 8 b , v28 . 8 b
cmp w4 , #4
uabal v26 . 8 h , v24 . 8 b , v27 . 8 b
b. g e 1 b
cbz w4 , 3 f
/ / iterate b y o n e
2 :
ld1 { v0 . 8 b } , [ x1 ] , x3
ld1 { v2 . 8 b } , [ x2 ] , x3
urhadd v30 . 8 b , v1 . 8 b , v2 . 8 b
subs w4 , w4 , #1
uabal v26 . 8 h , v0 . 8 b , v30 . 8 b
mov v1 . 8 b , v2 . 8 b
b. n e 2 b
3 :
uaddlv s20 , v26 . 8 h
fmov w0 , s20
ret
endfunc
function f f _ p i x _ a b s8 _ 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
/ / 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 v31 . 8 h , #0
add x0 , x2 , 1 / / p i x2 + 1
add x5 , x2 , x3 / / p i x2 + s t r i d e = p i x3
cmp w4 , #4
add x6 , x5 , 1 / / p i x3 + s t r i d e + 1
ld1 { v0 . 8 b } , [ x2 ] , x3
ld1 { v1 . 8 b } , [ x0 ] , x3
uaddl v2 . 8 h , v0 . 8 b , v1 . 8 b
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 { v4 . 8 b } , [ x5 ] , x3
ld1 { v5 . 8 b } , [ x6 ] , x3
ld1 { v7 . 8 b } , [ x5 ] , x3
uaddl v0 . 8 h , v4 . 8 b , v5 . 8 b
ld1 { v16 . 8 b } , [ x6 ] , x3
add v4 . 8 h , v0 . 8 h , v2 . 8 h
ld1 { v5 . 8 b } , [ x1 ] , x3
rshrn v4 . 8 b , v4 . 8 h , #2
uaddl v7 . 8 h , v7 . 8 b , v16 . 8 b
uabal v31 . 8 h , v5 . 8 b , v4 . 8 b
add v2 . 8 h , v0 . 8 h , v7 . 8 h
ld1 { v17 . 8 b } , [ x1 ] , x3
rshrn v2 . 8 b , v2 . 8 h , #2
ld1 { v20 . 8 b } , [ x5 ] , x3
uabal v31 . 8 h , v17 . 8 b , v2 . 8 b
ld1 { v21 . 8 b } , [ x6 ] , x3
ld1 { v25 . 8 b } , [ x5 ] , x3
uaddl v20 . 8 h , v20 . 8 b , v21 . 8 b
ld1 { v26 . 8 b } , [ x6 ] , x3
add v7 . 8 h , v7 . 8 h , v20 . 8 h
uaddl v25 . 8 h , v25 . 8 b , v26 . 8 b
rshrn v7 . 8 b , v7 . 8 h , #2
ld1 { v22 . 8 b } , [ x1 ] , x3
mov v2 . 1 6 b , v25 . 1 6 b
uabal v31 . 8 h , v22 . 8 b , v7 . 8 b
add v20 . 8 h , v20 . 8 h , v25 . 8 h
ld1 { v27 . 8 b } , [ x1 ] , x3
sub w4 , w4 , #4
rshrn v20 . 8 b , v20 . 8 h , #2
cmp w4 , #4
uabal v31 . 8 h , v27 . 8 b , v20 . 8 b
b. g e 1 b
cbz w4 , 3 f
/ / iterate b y o n e
2 :
ld1 { v0 . 8 b } , [ x5 ] , x3
ld1 { v1 . 8 b } , [ x6 ] , x3
ld1 { v4 . 8 b } , [ x1 ] , x3
uaddl v21 . 8 h , v0 . 8 b , v1 . 8 b
subs w4 , w4 , #1
add v3 . 8 h , v2 . 8 h , v21 . 8 h
mov v2 . 1 6 b , v21 . 1 6 b
rshrn v3 . 8 b , v3 . 8 h , #2
uabal v31 . 8 h , v4 . 8 b , v3 . 8 b
b. n e 2 b
3 :
uaddlv s18 , v31 . 8 h
fmov w0 , s18
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