@ -733,12 +733,12 @@ FFT16_FN ns_float, 1
add x11 , x1 , x21 , l s l #1
add x12 , x1 , x22
ldp q0 , q1 , [ x1 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q4 , q5 , [ x1 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q2 , q3 , [ x10 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q6 , q7 , [ x10 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q0 , q1 , [ x1 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q4 , q5 , [ x1 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q2 , q3 , [ x10 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q6 , q7 , [ x10 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q8 , q9 , [ x11 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q8 , q9 , [ x11 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q10 , q11 , [ x11 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q12 , q13 , [ x12 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
ldp q14 , q15 , [ x12 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
@ -747,12 +747,12 @@ FFT16_FN ns_float, 1
v8 , v9 , v10 , v11 , v12 , v13 , v14 , v15 , \
x7 , x8 , x9 , 0
stp q0 , q1 , [ x1 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q4 , q5 , [ x1 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q2 , q3 , [ x10 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q6 , q7 , [ x10 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q0 , q1 , [ x1 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q4 , q5 , [ x1 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q2 , q3 , [ x10 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q6 , q7 , [ x10 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q8 , q9 , [ x11 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q8 , q9 , [ x11 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q12 , q13 , [ x11 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q10 , q11 , [ x12 , #( ( 0 + \ p a r t ) * 3 2 + \ o f f ) ]
stp q14 , q15 , [ x12 , #( ( 2 + \ p a r t ) * 3 2 + \ o f f ) ]
@ -775,12 +775,12 @@ FFT16_FN ns_float, 1
add x12 , x15 , #( ( \ p a r t ) * 32 + \ o f f )
add x13 , x16 , #( ( \ p a r t ) * 32 + \ o f f )
ldp q0 , q1 , [ x10 ]
ldp q4 , q5 , [ x10 , #( 2 * 3 2 ) ]
ldp q2 , q3 , [ x11 ]
ldp q6 , q7 , [ x11 , #( 2 * 3 2 ) ]
ldp q0 , q1 , [ x10 ]
ldp q4 , q5 , [ x10 , #( 2 * 3 2 ) ]
ldp q2 , q3 , [ x11 ]
ldp q6 , q7 , [ x11 , #( 2 * 3 2 ) ]
ldp q8 , q9 , [ x12 ]
ldp q8 , q9 , [ x12 ]
ldp q10 , q11 , [ x12 , #( 2 * 3 2 ) ]
ldp q12 , q13 , [ x13 ]
ldp q14 , q15 , [ x13 , #( 2 * 3 2 ) ]
@ -800,10 +800,10 @@ FFT16_FN ns_float, 1
zip1 v22 . 2 d , v3 . 2 d , v7 . 2 d
zip2 v23 . 2 d , v3 . 2 d , v7 . 2 d
ldp q0 , q1 , [ x10 , #( 1 * 3 2 ) ]
ldp q4 , q5 , [ x10 , #( 3 * 3 2 ) ]
ldp q2 , q3 , [ x11 , #( 1 * 3 2 ) ]
ldp q6 , q7 , [ x11 , #( 3 * 3 2 ) ]
ldp q0 , q1 , [ x10 , #( 1 * 3 2 ) ]
ldp q4 , q5 , [ x10 , #( 3 * 3 2 ) ]
ldp q2 , q3 , [ x11 , #( 1 * 3 2 ) ]
ldp q6 , q7 , [ x11 , #( 3 * 3 2 ) ]
st1 { v16 . 4 s , v17 . 4 s , v18 . 4 s , v19 . 4 s } , [ x10 ] , #64
st1 { v20 . 4 s , v21 . 4 s , v22 . 4 s , v23 . 4 s } , [ x11 ] , #64
@ -817,7 +817,7 @@ FFT16_FN ns_float, 1
zip1 v26 . 2 d , v11 . 2 d , v15 . 2 d
zip2 v27 . 2 d , v11 . 2 d , v15 . 2 d
ldp q8 , q9 , [ x12 , #( 1 * 3 2 ) ]
ldp q8 , q9 , [ x12 , #( 1 * 3 2 ) ]
ldp q10 , q11 , [ x12 , #( 3 * 3 2 ) ]
ldp q12 , q13 , [ x13 , #( 1 * 3 2 ) ]
ldp q14 , q15 , [ x13 , #( 3 * 3 2 ) ]
@ -875,9 +875,9 @@ function ff_tx_fft32_\name\()_neon, export=1
SETUP_ S R _ R E C O M B 3 2 , x7 , x8 , x9
SETUP_ L U T \ n o _ p e r m
LOAD_ I N P U T 0 , 1 , 2 , 3 , x2 , \ n o _ p e r m
LOAD_ I N P U T 4 , 5 , 6 , 7 , x2 , \ n o _ p e r m
LOAD_ I N P U T 8 , 9 , 1 0 , 1 1 , x2 , \ n o _ p e r m
LOAD_ I N P U T 0 , 1 , 2 , 3 , x2 , \ n o _ p e r m
LOAD_ I N P U T 4 , 5 , 6 , 7 , x2 , \ n o _ p e r m
LOAD_ I N P U T 8 , 9 , 1 0 , 1 1 , x2 , \ n o _ p e r m
LOAD_ I N P U T 1 2 , 1 3 , 1 4 , 1 5 , x2 , \ n o _ p e r m
FFT8 _ X 2 v8 , v9 , v10 , v11 , v12 , v13 , v14 , v15
@ -982,37 +982,37 @@ function ff_tx_fft_sr_\name\()_neon, export=1
32 :
SETUP_ S R _ R E C O M B 3 2 , x7 , x8 , x9
LOAD_ I N P U T 0 , 1 , 2 , 3 , x2 , \ n o _ p e r m
LOAD_ I N P U T 4 , 6 , 5 , 7 , x2 , \ n o _ p e r m , 1
LOAD_ I N P U T 8 , 9 , 1 0 , 1 1 , x2 , \ n o _ p e r m
LOAD_ I N P U T 0 , 1 , 2 , 3 , x2 , \ n o _ p e r m
LOAD_ I N P U T 4 , 6 , 5 , 7 , x2 , \ n o _ p e r m , 1
LOAD_ I N P U T 8 , 9 , 1 0 , 1 1 , x2 , \ n o _ p e r m
LOAD_ I N P U T 1 2 , 1 3 , 1 4 , 1 5 , x2 , \ n o _ p e r m
FFT8 _ X 2 v8 , v9 , v10 , v11 , v12 , v13 , v14 , v15
FFT1 6 v0 , v1 , v2 , v3 , v4 , v6 , v5 , v7
SR_ C O M B I N E v0 , v1 , v2 , v3 , v4 , v6 , v5 , v7 , \
v8 , v9 , v10 , v11 , v12 , v13 , v14 , v15 , \
x7 , x8 , x9 , 0
SR_ C O M B I N E v0 , v1 , v2 , v3 , v4 , v6 , v5 , v7 , \
v8 , v9 , v10 , v11 , v12 , v13 , v14 , v15 , \
x7 , x8 , x9 , 0
stp q2 , q3 , [ x1 , #32 * 1 ]
stp q6 , q7 , [ x1 , #32 * 3 ]
stp q2 , q3 , [ x1 , #32 * 1 ]
stp q6 , q7 , [ x1 , #32 * 3 ]
stp q10 , q11 , [ x1 , #32 * 5 ]
stp q14 , q15 , [ x1 , #32 * 7 ]
cmp w20 , #32
b. g t 6 4 f
stp q0 , q1 , [ x1 , #32 * 0 ]
stp q4 , q5 , [ x1 , #32 * 2 ]
stp q8 , q9 , [ x1 , #32 * 4 ]
stp q0 , q1 , [ x1 , #32 * 0 ]
stp q4 , q5 , [ x1 , #32 * 2 ]
stp q8 , q9 , [ x1 , #32 * 4 ]
stp q12 , q13 , [ x1 , #32 * 6 ]
ret
64 :
SETUP_ S R _ R E C O M B 6 4 , x7 , x8 , x9
LOAD_ I N P U T 2 , 3 , 1 0 , 1 1 , x2 , \ n o _ p e r m , 1
LOAD_ I N P U T 6 , 1 4 , 7 , 1 5 , x2 , \ n o _ p e r m , 1
LOAD_ I N P U T 2 , 3 , 1 0 , 1 1 , x2 , \ n o _ p e r m , 1
LOAD_ I N P U T 6 , 1 4 , 7 , 1 5 , x2 , \ n o _ p e r m , 1
FFT1 6 v2 , v3 , v10 , v11 , v6 , v14 , v7 , v15
@ -1033,38 +1033,38 @@ function ff_tx_fft_sr_\name\()_neon, export=1
/ / TODO : investigate d o i n g t h e 2 c o m b i n e s l i k e i n d e i n t e r l e a v e
/ / TODO : experiment w i t h s p i l l i n g t o g p r s a n d c o n v e r t i n g t o H A L F o r f u l l
SR_ C O M B I N E _ L I T E v0 , v1 , v8 , v9 , \
v2 , v3 , v16 , v17 , \
SR_ C O M B I N E _ L I T E v0 , v1 , v8 , v9 , \
v2 , v3 , v16 , v17 , \
v2 4 , v25 , v26 , v27 , \
v2 8 , v29 , v30 , 0
stp q0 , q1 , [ x1 , #32 * 0 ]
stp q8 , q9 , [ x1 , #32 * 4 ]
stp q2 , q3 , [ x1 , #32 * 8 ]
stp q0 , q1 , [ x1 , #32 * 0 ]
stp q8 , q9 , [ x1 , #32 * 4 ]
stp q2 , q3 , [ x1 , #32 * 8 ]
stp q16 , q17 , [ x1 , #32 * 1 2 ]
SR_ C O M B I N E _ H A L F v4 , v5 , v12 , v13 , \
v6 , v7 , v20 , v21 , \
SR_ C O M B I N E _ H A L F v4 , v5 , v12 , v13 , \
v6 , v7 , v20 , v21 , \
v2 4 , v25 , v26 , v27 , \
v2 8 , v29 , v30 , v0 , v1 , v8 , 1
stp q4 , q20 , [ x1 , #32 * 2 ]
stp q4 , q20 , [ x1 , #32 * 2 ]
stp q12 , q21 , [ x1 , #32 * 6 ]
stp q6 , q5 , [ x1 , #32 * 1 0 ]
stp q7 , q13 , [ x1 , #32 * 1 4 ]
stp q6 , q5 , [ x1 , #32 * 1 0 ]
stp q7 , q13 , [ x1 , #32 * 1 4 ]
ldp q2 , q3 , [ x1 , #32 * 1 ]
ldp q6 , q7 , [ x1 , #32 * 3 ]
ldp q2 , q3 , [ x1 , #32 * 1 ]
ldp q6 , q7 , [ x1 , #32 * 3 ]
ldp q12 , q13 , [ x1 , #32 * 5 ]
ldp q16 , q17 , [ x1 , #32 * 7 ]
SR_ C O M B I N E v2 , v3 , v12 , v13 , v6 , v16 , v7 , v17 , \
SR_ C O M B I N E v2 , v3 , v12 , v13 , v6 , v16 , v7 , v17 , \
v1 0 , v11 , v14 , v15 , v18 , v19 , v22 , v23 , \
x7 , x8 , x9 , 0 , \
x7 , x8 , x9 , 0 , \
v2 4 , v25 , v26 , v27 , v28 , v29 , v30 , v8 , v0 , v1 , v4 , v5
stp q2 , q3 , [ x1 , #32 * 1 ]
stp q6 , q7 , [ x1 , #32 * 3 ]
stp q2 , q3 , [ x1 , #32 * 1 ]
stp q6 , q7 , [ x1 , #32 * 3 ]
stp q12 , q13 , [ x1 , #32 * 5 ]
stp q16 , q17 , [ x1 , #32 * 7 ]
@ -1198,13 +1198,13 @@ SR_TRANSFORM_DEF 131072
mov x10 , v23 . d [ 0 ]
mov x11 , v23 . d [ 1 ]
SR_ C O M B I N E _ L I T E v0 , v1 , v8 , v9 , \
v2 , v3 , v16 , v17 , \
SR_ C O M B I N E _ L I T E v0 , v1 , v8 , v9 , \
v2 , v3 , v16 , v17 , \
v2 4 , v25 , v26 , v27 , \
v2 8 , v29 , v30 , 0
SR_ C O M B I N E _ H A L F v4 , v5 , v12 , v13 , \
v6 , v7 , v20 , v21 , \
SR_ C O M B I N E _ H A L F v4 , v5 , v12 , v13 , \
v6 , v7 , v20 , v21 , \
v2 4 , v25 , v26 , v27 , \
v2 8 , v29 , v30 , v23 , v24 , v26 , 1
@ -1236,7 +1236,7 @@ SR_TRANSFORM_DEF 131072
zip2 v3 . 2 d , v17 . 2 d , v13 . 2 d
/ / stp i s f a s t e r b y a l i t t l e o n A 5 3 , b u t t h i s i s f a s t e r o n M 1 s ( t h e o r y )
ldp q8 , q9 , [ x1 , #32 * 1 ]
ldp q8 , q9 , [ x1 , #32 * 1 ]
ldp q12 , q13 , [ x1 , #32 * 5 ]
st1 { v23 . 4 s , v24 . 4 s , v25 . 4 s , v26 . 4 s } , [ x12 ] , #64 / / 3 2 * 0 . . . 1
@ -1247,12 +1247,12 @@ SR_TRANSFORM_DEF 131072
mov v23 . d [ 0 ] , x10
mov v23 . d [ 1 ] , x11
ldp q6 , q7 , [ x1 , #32 * 3 ]
ldp q6 , q7 , [ x1 , #32 * 3 ]
ldp q16 , q17 , [ x1 , #32 * 7 ]
SR_ C O M B I N E v8 , v9 , v12 , v13 , v6 , v16 , v7 , v17 , \
SR_ C O M B I N E v8 , v9 , v12 , v13 , v6 , v16 , v7 , v17 , \
v1 0 , v11 , v14 , v15 , v18 , v19 , v22 , v23 , \
x7 , x8 , x9 , 0 , \
x7 , x8 , x9 , 0 , \
v2 4 , v25 , v26 , v27 , v28 , v29 , v30 , v4 , v0 , v1 , v5 , v20
zip1 v0 . 2 d , v8 . 2 d , v6 . 2 d