@ -598,6 +598,51 @@ endfunc
st1 { v2 . 8 h } , [ \ s r c ] , \ i n c
st1 { v2 . 8 h } , [ \ s r c ] , \ i n c
.endm
.endm
.macro load_add_store coef0 , c o e f1 , c o e f2 , c o e f3 , c o e f4 , c o e f5 , c o e f6 , c o e f7 , t m p1 , t m p2
srshr \ c o e f0 , \ c o e f0 , #6
ld1 { v2 . 8 b } , [ x0 ] , x1
srshr \ c o e f1 , \ c o e f1 , #6
ld1 { v3 . 8 b } , [ x3 ] , x1
srshr \ c o e f2 , \ c o e f2 , #6
ld1 { v4 . 8 b } , [ x0 ] , x1
srshr \ c o e f3 , \ c o e f3 , #6
uaddw \ c o e f0 , \ c o e f0 , v2 . 8 b
ld1 { v5 . 8 b } , [ x3 ] , x1
uaddw \ c o e f1 , \ c o e f1 , v3 . 8 b
srshr \ c o e f4 , \ c o e f4 , #6
ld1 { v6 . 8 b } , [ x0 ] , x1
srshr \ c o e f5 , \ c o e f5 , #6
ld1 { v7 . 8 b } , [ x3 ] , x1
sqxtun v2 . 8 b , \ c o e f0
srshr \ c o e f6 , \ c o e f6 , #6
sqxtun v3 . 8 b , \ c o e f1
srshr \ c o e f7 , \ c o e f7 , #6
uaddw \ c o e f2 , \ c o e f2 , v4 . 8 b
ld1 { \ t m p1 } , [ x0 ] , x1
uaddw \ c o e f3 , \ c o e f3 , v5 . 8 b
ld1 { \ t m p2 } , [ x3 ] , x1
sqxtun v4 . 8 b , \ c o e f2
sub x0 , x0 , x1 , l s l #2
sub x3 , x3 , x1 , l s l #2
sqxtun v5 . 8 b , \ c o e f3
uaddw \ c o e f4 , \ c o e f4 , v6 . 8 b
st1 { v2 . 8 b } , [ x0 ] , x1
uaddw \ c o e f5 , \ c o e f5 , v7 . 8 b
st1 { v3 . 8 b } , [ x3 ] , x1
sqxtun v6 . 8 b , \ c o e f4
st1 { v4 . 8 b } , [ x0 ] , x1
sqxtun v7 . 8 b , \ c o e f5
st1 { v5 . 8 b } , [ x3 ] , x1
uaddw \ c o e f6 , \ c o e f6 , \ t m p1
st1 { v6 . 8 b } , [ x0 ] , x1
uaddw \ c o e f7 , \ c o e f7 , \ t m p2
st1 { v7 . 8 b } , [ x3 ] , x1
sqxtun \ t m p1 , \ c o e f6
sqxtun \ t m p2 , \ c o e f7
st1 { \ t m p1 } , [ x0 ] , x1
st1 { \ t m p2 } , [ x3 ] , x1
.endm
/ / Read a v e r t i c a l 8 x16 s l i c e o u t o f a 1 6 x16 m a t r i x , d o a t r a n s f o r m o n i t ,
/ / Read a v e r t i c a l 8 x16 s l i c e o u t o f a 1 6 x16 m a t r i x , d o a t r a n s f o r m o n i t ,
/ / transpose i n t o a h o r i z o n t a l 1 6 x8 s l i c e a n d s t o r e .
/ / transpose i n t o a h o r i z o n t a l 1 6 x8 s l i c e a n d s t o r e .
/ / x0 = d s t ( t e m p b u f f e r )
/ / x0 = d s t ( t e m p b u f f e r )
@ -671,53 +716,8 @@ function \txfm\()16_1d_8x16_pass2_neon
lsl x1 , x1 , #1
lsl x1 , x1 , #1
bl \ t x f m \ ( ) 1 6
bl \ t x f m \ ( ) 1 6
.macro load_add_store coef0 , c o e f1 , c o e f2 , c o e f3 , c o e f4 , c o e f5 , c o e f6 , c o e f7 , t m p1 , t m p2
srshr \ c o e f0 , \ c o e f0 , #6
ld1 { v2 . 8 b } , [ x0 ] , x1
srshr \ c o e f1 , \ c o e f1 , #6
ld1 { v3 . 8 b } , [ x3 ] , x1
srshr \ c o e f2 , \ c o e f2 , #6
ld1 { v4 . 8 b } , [ x0 ] , x1
srshr \ c o e f3 , \ c o e f3 , #6
uaddw \ c o e f0 , \ c o e f0 , v2 . 8 b
ld1 { v5 . 8 b } , [ x3 ] , x1
uaddw \ c o e f1 , \ c o e f1 , v3 . 8 b
srshr \ c o e f4 , \ c o e f4 , #6
ld1 { v6 . 8 b } , [ x0 ] , x1
srshr \ c o e f5 , \ c o e f5 , #6
ld1 { v7 . 8 b } , [ x3 ] , x1
sqxtun v2 . 8 b , \ c o e f0
srshr \ c o e f6 , \ c o e f6 , #6
sqxtun v3 . 8 b , \ c o e f1
srshr \ c o e f7 , \ c o e f7 , #6
uaddw \ c o e f2 , \ c o e f2 , v4 . 8 b
ld1 { \ t m p1 } , [ x0 ] , x1
uaddw \ c o e f3 , \ c o e f3 , v5 . 8 b
ld1 { \ t m p2 } , [ x3 ] , x1
sqxtun v4 . 8 b , \ c o e f2
sub x0 , x0 , x1 , l s l #2
sub x3 , x3 , x1 , l s l #2
sqxtun v5 . 8 b , \ c o e f3
uaddw \ c o e f4 , \ c o e f4 , v6 . 8 b
st1 { v2 . 8 b } , [ x0 ] , x1
uaddw \ c o e f5 , \ c o e f5 , v7 . 8 b
st1 { v3 . 8 b } , [ x3 ] , x1
sqxtun v6 . 8 b , \ c o e f4
st1 { v4 . 8 b } , [ x0 ] , x1
sqxtun v7 . 8 b , \ c o e f5
st1 { v5 . 8 b } , [ x3 ] , x1
uaddw \ c o e f6 , \ c o e f6 , \ t m p1
st1 { v6 . 8 b } , [ x0 ] , x1
uaddw \ c o e f7 , \ c o e f7 , \ t m p2
st1 { v7 . 8 b } , [ x3 ] , x1
sqxtun \ t m p1 , \ c o e f6
sqxtun \ t m p2 , \ c o e f7
st1 { \ t m p1 } , [ x0 ] , x1
st1 { \ t m p2 } , [ x3 ] , x1
.endm
load_ a d d _ s t o r e v16 . 8 h , v17 . 8 h , v18 . 8 h , v19 . 8 h , v20 . 8 h , v21 . 8 h , v22 . 8 h , v23 . 8 h , v16 . 8 b , v17 . 8 b
load_ a d d _ s t o r e v16 . 8 h , v17 . 8 h , v18 . 8 h , v19 . 8 h , v20 . 8 h , v21 . 8 h , v22 . 8 h , v23 . 8 h , v16 . 8 b , v17 . 8 b
load_ a d d _ s t o r e v24 . 8 h , v25 . 8 h , v26 . 8 h , v27 . 8 h , v28 . 8 h , v29 . 8 h , v30 . 8 h , v31 . 8 h , v16 . 8 b , v17 . 8 b
load_ a d d _ s t o r e v24 . 8 h , v25 . 8 h , v26 . 8 h , v27 . 8 h , v28 . 8 h , v29 . 8 h , v30 . 8 h , v31 . 8 h , v16 . 8 b , v17 . 8 b
.purgem load_add_store
br x14
br x14
endfunc
endfunc