@ -1185,58 +1185,51 @@ function idct32x32_dc_add_neon
endfunc
.macro idct32_end
butterfly d16 , d5 , d4 , d5 @ d16 = t16a, d5 = t19a
butterfly d16 , d9 , d8 , d9 @ d16 = t16a, d9 = t19a
butterfly d17 , d20 , d23 , d20 @ d17 = t17, d20 = t18
butterfly d18 , d6 , d7 , d6 @ d18 = t23a, d6 = t20a
butterfly d18 , d10 , d11 , d10 @ d18 = t23a, d10 = t20a
butterfly d19 , d21 , d22 , d21 @ d19 = t22, d21 = t21
butterfly d4 , d28 , d28 , d30 @ d4 = t24a, d28 = t27a
butterfly d8 , d28 , d28 , d30 @ d8 = t24a, d28 = t27a
butterfly d23 , d26 , d25 , d26 @ d23 = t25, d26 = t26
butterfly d7 , d29 , d29 , d31 @ d7 = t31a, d29 = t28a
butterfly d11 , d29 , d29 , d31 @ d11 = t31a, d29 = t28a
butterfly d22 , d27 , d24 , d27 @ d22 = t30, d27 = t29
mbutterfly d27 , d20 , d0 [ 1 ] , d0 [ 2 ] , q12 , q15 @ d27 = t18a, d20 = t29a
mbutterfly d29 , d5 , d0 [ 1 ] , d0 [ 2 ] , q12 , q15 @ d29 = t19, d5 = t28
mbutterfly d28 , d6 , d0 [ 1 ] , d0 [ 2 ] , q12 , q15 , n e g =1 @ d28 = t27, d6 = t20
mbutterfly d29 , d9 , d0 [ 1 ] , d0 [ 2 ] , q12 , q15 @ d29 = t19, d9 = t28
mbutterfly d28 , d10 , d0 [ 1 ] , d0 [ 2 ] , q12 , q15 , n e g =1 @ d28 = t27, d10 = t20
mbutterfly d26 , d21 , d0 [ 1 ] , d0 [ 2 ] , q12 , q15 , n e g =1 @ d26 = t26a, d21 = t21a
butterfly d31 , d24 , d7 , d4 @ d31 = t31, d24 = t24
butterfly d31 , d24 , d11 , d8 @ d31 = t31, d24 = t24
butterfly d30 , d25 , d22 , d23 @ d30 = t30a, d25 = t25a
butterfly_ r d23 , d16 , d16 , d18 @ d23 = t23, d16 = t16
butterfly_ r d22 , d17 , d17 , d19 @ d22 = t22a, d17 = t17a
butterfly d18 , d21 , d27 , d21 @ d18 = t18, d21 = t21
butterfly_ r d27 , d28 , d5 , d28 @ d27 = t27a, d28 = t28a
butterfly d4 , d26 , d20 , d26 @ d4 = t29, d26 = t26
butterfly d19 , d20 , d29 , d6 @ d19 = t19a, d20 = t20
vmov d29 , d4 @ d29 = t29
mbutterfly0 d27 , d20 , d27 , d20 , d4 , d6 , q2 , q3 @ d27 = t27, d20 = t20
mbutterfly0 d26 , d21 , d26 , d21 , d4 , d6 , q2 , q3 @ d26 = t26a, d21 = t21a
mbutterfly0 d25 , d22 , d25 , d22 , d4 , d6 , q2 , q3 @ d25 = t25, d22 = t22
mbutterfly0 d24 , d23 , d24 , d23 , d4 , d6 , q2 , q3 @ d24 = t24a, d23 = t23a
butterfly_ r d27 , d28 , d9 , d28 @ d27 = t27a, d28 = t28a
butterfly d8 , d26 , d20 , d26 @ d8 = t29, d26 = t26
butterfly d19 , d20 , d29 , d10 @ d19 = t19a, d20 = t20
vmov d29 , d8 @ d29 = t29
mbutterfly0 d27 , d20 , d27 , d20 , d8 , d10 , q4 , q5 @ d27 = t27, d20 = t20
mbutterfly0 d26 , d21 , d26 , d21 , d8 , d10 , q4 , q5 @ d26 = t26a, d21 = t21a
mbutterfly0 d25 , d22 , d25 , d22 , d8 , d10 , q4 , q5 @ d25 = t25, d22 = t22
mbutterfly0 d24 , d23 , d24 , d23 , d8 , d10 , q4 , q5 @ d24 = t24a, d23 = t23a
bx l r
.endm
function i d c t 3 2 _ o d d
movrel r12 , i d c t _ c o e f f s
add r12 , r12 , #32
vld1 . 1 6 { q0 - q1 } , [ r12 ,: 1 2 8 ]
mbutterfly d16 , d31 , d0 [ 0 ] , d0 [ 1 ] , q2 , q3 @ d16 = t16a, d31 = t31a
mbutterfly d24 , d23 , d0 [ 2 ] , d0 [ 3 ] , q2 , q3 @ d24 = t17a, d23 = t30a
mbutterfly d20 , d27 , d1 [ 0 ] , d1 [ 1 ] , q2 , q3 @ d20 = t18a, d27 = t29a
mbutterfly d28 , d19 , d1 [ 2 ] , d1 [ 3 ] , q2 , q3 @ d28 = t19a, d19 = t28a
mbutterfly d18 , d29 , d2 [ 0 ] , d2 [ 1 ] , q2 , q3 @ d18 = t20a, d29 = t27a
mbutterfly d26 , d21 , d2 [ 2 ] , d2 [ 3 ] , q2 , q3 @ d26 = t21a, d21 = t26a
mbutterfly d22 , d25 , d3 [ 0 ] , d3 [ 1 ] , q2 , q3 @ d22 = t22a, d25 = t25a
mbutterfly d30 , d17 , d3 [ 2 ] , d3 [ 3 ] , q2 , q3 @ d30 = t23a, d17 = t24a
sub r12 , r12 , #32
vld1 . 1 6 { q0 } , [ r12 ,: 1 2 8 ]
butterfly d4 , d24 , d16 , d24 @ d4 = t16, d24 = t17
butterfly d5 , d20 , d28 , d20 @ d5 = t19, d20 = t18
butterfly d6 , d26 , d18 , d26 @ d6 = t20, d26 = t21
butterfly d7 , d22 , d30 , d22 @ d7 = t23, d22 = t22
mbutterfly d16 , d31 , d4 [ 0 ] , d4 [ 1 ] , q4 , q5 @ d16 = t16a, d31 = t31a
mbutterfly d24 , d23 , d4 [ 2 ] , d4 [ 3 ] , q4 , q5 @ d24 = t17a, d23 = t30a
mbutterfly d20 , d27 , d5 [ 0 ] , d5 [ 1 ] , q4 , q5 @ d20 = t18a, d27 = t29a
mbutterfly d28 , d19 , d5 [ 2 ] , d5 [ 3 ] , q4 , q5 @ d28 = t19a, d19 = t28a
mbutterfly d18 , d29 , d6 [ 0 ] , d6 [ 1 ] , q4 , q5 @ d18 = t20a, d29 = t27a
mbutterfly d26 , d21 , d6 [ 2 ] , d6 [ 3 ] , q4 , q5 @ d26 = t21a, d21 = t26a
mbutterfly d22 , d25 , d7 [ 0 ] , d7 [ 1 ] , q4 , q5 @ d22 = t22a, d25 = t25a
mbutterfly d30 , d17 , d7 [ 2 ] , d7 [ 3 ] , q4 , q5 @ d30 = t23a, d17 = t24a
butterfly d8 , d24 , d16 , d24 @ d8 = t16, d24 = t17
butterfly d9 , d20 , d28 , d20 @ d9 = t19, d20 = t18
butterfly d10 , d26 , d18 , d26 @ d10 = t20, d26 = t21
butterfly d11 , d22 , d30 , d22 @ d11 = t23, d22 = t22
butterfly d28 , d25 , d17 , d25 @ d28 = t24, d25 = t25
butterfly d30 , d21 , d29 , d21 @ d30 = t27, d21 = t26
butterfly d29 , d23 , d31 , d23 @ d29 = t31, d23 = t30
@ -1250,26 +1243,19 @@ function idct32_odd
endfunc
function i d c t 3 2 _ o d d _ h a l f
movrel r12 , i d c t _ c o e f f s
add r12 , r12 , #32
vld1 . 1 6 { q0 - q1 } , [ r12 ,: 1 2 8 ]
mbutterfly_ h1 d16 , d31 , d0 [ 0 ] , d0 [ 1 ] , q2 , q3 @ d16 = t16a, d31 = t31a
mbutterfly_ h2 d24 , d23 , d0 [ 2 ] , d0 [ 3 ] , q2 , q3 @ d24 = t17a, d23 = t30a
mbutterfly_ h1 d20 , d27 , d1 [ 0 ] , d1 [ 1 ] , q2 , q3 @ d20 = t18a, d27 = t29a
mbutterfly_ h2 d28 , d19 , d1 [ 2 ] , d1 [ 3 ] , q2 , q3 @ d28 = t19a, d19 = t28a
mbutterfly_ h1 d18 , d29 , d2 [ 0 ] , d2 [ 1 ] , q2 , q3 @ d18 = t20a, d29 = t27a
mbutterfly_ h2 d26 , d21 , d2 [ 2 ] , d2 [ 3 ] , q2 , q3 @ d26 = t21a, d21 = t26a
mbutterfly_ h1 d22 , d25 , d3 [ 0 ] , d3 [ 1 ] , q2 , q3 @ d22 = t22a, d25 = t25a
mbutterfly_ h2 d30 , d17 , d3 [ 2 ] , d3 [ 3 ] , q2 , q3 @ d30 = t23a, d17 = t24a
sub r12 , r12 , #32
vld1 . 1 6 { q0 } , [ r12 ,: 1 2 8 ]
butterfly d4 , d24 , d16 , d24 @ d4 = t16, d24 = t17
butterfly d5 , d20 , d28 , d20 @ d5 = t19, d20 = t18
butterfly d6 , d26 , d18 , d26 @ d6 = t20, d26 = t21
butterfly d7 , d22 , d30 , d22 @ d7 = t23, d22 = t22
mbutterfly_ h1 d16 , d31 , d4 [ 0 ] , d4 [ 1 ] , q4 , q5 @ d16 = t16a, d31 = t31a
mbutterfly_ h2 d24 , d23 , d4 [ 2 ] , d4 [ 3 ] , q4 , q5 @ d24 = t17a, d23 = t30a
mbutterfly_ h1 d20 , d27 , d5 [ 0 ] , d5 [ 1 ] , q4 , q5 @ d20 = t18a, d27 = t29a
mbutterfly_ h2 d28 , d19 , d5 [ 2 ] , d5 [ 3 ] , q4 , q5 @ d28 = t19a, d19 = t28a
mbutterfly_ h1 d18 , d29 , d6 [ 0 ] , d6 [ 1 ] , q4 , q5 @ d18 = t20a, d29 = t27a
mbutterfly_ h2 d26 , d21 , d6 [ 2 ] , d6 [ 3 ] , q4 , q5 @ d26 = t21a, d21 = t26a
mbutterfly_ h1 d22 , d25 , d7 [ 0 ] , d7 [ 1 ] , q4 , q5 @ d22 = t22a, d25 = t25a
mbutterfly_ h2 d30 , d17 , d7 [ 2 ] , d7 [ 3 ] , q4 , q5 @ d30 = t23a, d17 = t24a
butterfly d8 , d24 , d16 , d24 @ d8 = t16, d24 = t17
butterfly d9 , d20 , d28 , d20 @ d9 = t19, d20 = t18
butterfly d10 , d26 , d18 , d26 @ d10 = t20, d26 = t21
butterfly d11 , d22 , d30 , d22 @ d11 = t23, d22 = t22
butterfly d28 , d25 , d17 , d25 @ d28 = t24, d25 = t25
butterfly d30 , d21 , d29 , d21 @ d30 = t27, d21 = t26
butterfly d29 , d23 , d31 , d23 @ d29 = t31, d23 = t30
@ -1284,45 +1270,38 @@ function idct32_odd_half
endfunc
function i d c t 3 2 _ o d d _ q u a r t e r
movrel r12 , i d c t _ c o e f f s
add r12 , r12 , #32
vld1 . 1 6 { q0 - q1 } , [ r12 ,: 1 2 8 ]
vmull. s16 q2 , d16 , d0 [ 0 ]
vmull. s16 q14 , d19 , d1 [ 3 ]
vmull. s16 q15 , d16 , d0 [ 1 ]
vmull. s16 q11 , d17 , d3 [ 2 ]
vmull. s16 q3 , d17 , d3 [ 3 ]
vmull. s16 q13 , d19 , d1 [ 2 ]
vmull. s16 q10 , d18 , d2 [ 0 ]
vmull. s16 q12 , d18 , d2 [ 1 ]
sub r12 , r12 , #32
vld1 . 1 6 { q0 } , [ r12 ,: 1 2 8 ]
vmull. s16 q4 , d16 , d4 [ 0 ]
vmull. s16 q14 , d19 , d5 [ 3 ]
vmull. s16 q15 , d16 , d4 [ 1 ]
vmull. s16 q11 , d17 , d7 [ 2 ]
vmull. s16 q5 , d17 , d7 [ 3 ]
vmull. s16 q13 , d19 , d5 [ 2 ]
vmull. s16 q10 , d18 , d6 [ 0 ]
vmull. s16 q12 , d18 , d6 [ 1 ]
vneg. s32 q14 , q14
vneg. s32 q3 , q3
vneg. s32 q5 , q5
vrshrn. s32 d4 , q2 , #14
vrshrn. s32 d5 , q14 , #14
vrshrn. s32 d8 , q4 , #14
vrshrn. s32 d9 , q14 , #14
vrshrn. s32 d29 , q15 , #14
vrshrn. s32 d28 , q11 , #14
vrshrn. s32 d7 , q3 , #14
vrshrn. s32 d11 , q5 , #14
vrshrn. s32 d31 , q13 , #14
vrshrn. s32 d6 , q10 , #14
vrshrn. s32 d10 , q10 , #14
vrshrn. s32 d30 , q12 , #14
mbutterfly_ l q8 , q9 , d29 , d4 , d0 [ 3 ] , d1 [ 0 ]
mbutterfly_ l q13 , q10 , d31 , d5 , d0 [ 3 ] , d1 [ 0 ]
mbutterfly_ l q8 , q9 , d29 , d8 , d0 [ 3 ] , d1 [ 0 ]
mbutterfly_ l q13 , q10 , d31 , d9 , d0 [ 3 ] , d1 [ 0 ]
vrshrn. s32 d23 , q8 , #14
vrshrn. s32 d24 , q9 , #14
vneg. s32 q10 , q10
vrshrn. s32 d27 , q13 , #14
vrshrn. s32 d20 , q10 , #14
mbutterfly_ l q8 , q9 , d30 , d6 , d1 [ 1 ] , d1 [ 2 ]
mbutterfly_ l q8 , q9 , d30 , d10 , d1 [ 1 ] , d1 [ 2 ]
vrshrn. s32 d21 , q8 , #14
vrshrn. s32 d26 , q9 , #14
mbutterfly_ l q8 , q9 , d28 , d7 , d1 [ 1 ] , d1 [ 2 ]
mbutterfly_ l q8 , q9 , d28 , d11 , d1 [ 1 ] , d1 [ 2 ]
vrshrn. s32 d25 , q8 , #14
vneg. s32 q9 , q9
vrshrn. s32 d22 , q9 , #14
@ -1343,8 +1322,11 @@ endfunc
function i d c t 3 2 _ 1 d _ 4 x32 _ p a s s1 \ s u f f i x \ ( ) _ n e o n
push { l r }
movrel r12 , i d c t _ c o e f f s
vld1 . 1 6 { q0 - q1 } , [ r12 ,: 1 2 8 ]
@ idct16 clobbers q2-q3 (since it doesn't clobber q4-q7 at all
@ when doing the normal 16x16 idct), so move the idct32_odd coeffs
@ to q4-q5
vmov q4 , q2
vmov q5 , q3
@ Double stride of the input, since we only read every other line
mov r12 , #128
@ -1372,6 +1354,11 @@ function idct32_1d_4x32_pass1\suffix\()_neon
bl i d c t 1 6 \ s u f f i x
@ Move the idct32_odd coeffs back into q2-q3 for idct32_odd;
@ the constants for a vmul with a lane must be in q0-q3.
vmov q2 , q4
vmov q3 , q5
@ Do four 4x4 transposes. Originally, d16-d31 contain the
@ 16 rows. Afterwards, d16-d19, d20-d23, d24-d27, d28-d31
@ contain the transposed 4x4 blocks.
@ -1407,24 +1394,24 @@ function idct32_1d_4x32_pass1\suffix\()_neon
.endif
add r2 , r2 , #64
vmov. s16 d4 , #0
vmov. s16 d8 , #0
@ d16 = IN(1), d17 = IN(3) ... d31 = IN(31)
.ifb \ suffix
.irp i, 1 6 , 1 7 , 1 8 , 1 9 , 2 0 , 2 1 , 2 2 , 2 3 , 2 4 , 2 5 , 2 6 , 2 7 , 2 8 , 2 9 , 3 0 , 3 1
vld1 . 1 6 { d \ i } , [ r2 ,: 6 4 ]
vst1 . 1 6 { d4 } , [ r2 ,: 6 4 ] , r12
vst1 . 1 6 { d8 } , [ r2 ,: 6 4 ] , r12
.endr
.endif
.ifc \ suffix,_ q u a r t e r
.irp i, 1 6 , 1 7 , 1 8 , 1 9
vld1 . 1 6 { d \ i } , [ r2 ,: 6 4 ]
vst1 . 1 6 { d4 } , [ r2 ,: 6 4 ] , r12
vst1 . 1 6 { d8 } , [ r2 ,: 6 4 ] , r12
.endr
.endif
.ifc \ suffix,_ h a l f
.irp i, 1 6 , 1 7 , 1 8 , 1 9 , 2 0 , 2 1 , 2 2 , 2 3
vld1 . 1 6 { d \ i } , [ r2 ,: 6 4 ]
vst1 . 1 6 { d4 } , [ r2 ,: 6 4 ] , r12
vst1 . 1 6 { d8 } , [ r2 ,: 6 4 ] , r12
.endr
.endif
@ -1437,15 +1424,15 @@ function idct32_1d_4x32_pass1\suffix\()_neon
@ from the output.
.macro store_rev a, b , c , d
.irp i, \ a , \ b , \ c , \ d
vld1 . 1 6 { d4 } , [ r0 ,: 6 4 ]
vadd. s16 d4 , d4 , d \ i
vst1 . 1 6 { d4 } , [ r0 ,: 6 4 ] !
vld1 . 1 6 { d8 } , [ r0 ,: 6 4 ]
vadd. s16 d8 , d8 , d \ i
vst1 . 1 6 { d8 } , [ r0 ,: 6 4 ] !
vrev6 4 . 1 6 d \ i , d \ i
.endr
.irp i, \ d , \ c , \ b , \ a
vld1 . 1 6 { d4 } , [ r0 ,: 6 4 ]
vsub. s16 d4 , d4 , d \ i
vst1 . 1 6 { d4 } , [ r0 ,: 6 4 ] !
vld1 . 1 6 { d8 } , [ r0 ,: 6 4 ]
vsub. s16 d8 , d8 , d \ i
vst1 . 1 6 { d8 } , [ r0 ,: 6 4 ] !
.endr
.endm
@ -1466,8 +1453,8 @@ endfunc
@ r2 = src (temp buffer)
function i d c t 3 2 _ 1 d _ 4 x32 _ p a s s2 \ s u f f i x \ ( ) _ n e o n
push { l r }
movrel r12 , i d c t _ c o e f f s
vld1 . 1 6 { q0 - q1 } , [ r12 ,: 1 2 8 ]
vmov q4 , q2
vmov q5 , q3
mov r12 , #128
@ d16 = IN(0), d17 = IN(2) ... d31 = IN(30)
@ -1492,6 +1479,9 @@ function idct32_1d_4x32_pass2\suffix\()_neon
bl i d c t 1 6 \ s u f f i x
vmov q2 , q4
vmov q3 , q5
.irp i, 1 6 , 1 7 , 1 8 , 1 9 , 2 0 , 2 1 , 2 2 , 2 3 , 2 4 , 2 5 , 2 6 , 2 7 , 2 8 , 2 9 , 3 0 , 3 1
vst1 . 1 6 { d \ i } , [ r2 ,: 6 4 ] , r12
.endr
@ -1524,38 +1514,38 @@ function idct32_1d_4x32_pass2\suffix\()_neon
mov r12 , #128
.macro load_acc_store a, b , c , d , n e g =0
vld1 . 1 6 { d4 } , [ r2 ,: 6 4 ] , r12
vld1 . 1 6 { d5 } , [ r2 ,: 6 4 ] , r12
vld1 . 1 6 { d8 } , [ r2 ,: 6 4 ] , r12
vld1 . 1 6 { d9 } , [ r2 ,: 6 4 ] , r12
.if \ neg = = 0
vadd. s16 d4 , d4 , d \ a
vld1 . 1 6 { d6 } , [ r2 ,: 6 4 ] , r12
vadd. s16 d5 , d5 , d \ b
vld1 . 1 6 { d7 } , [ r2 ,: 6 4 ] , r12
vadd. s16 d6 , d6 , d \ c
vadd. s16 d7 , d7 , d \ d
vadd. s16 d8 , d8 , d \ a
vld1 . 1 6 { d10 } , [ r2 ,: 6 4 ] , r12
vadd. s16 d9 , d9 , d \ b
vld1 . 1 6 { d11 } , [ r2 ,: 6 4 ] , r12
vadd. s16 d10 , d10 , d \ c
vadd. s16 d11 , d11 , d \ d
.else
vsub. s16 d4 , d4 , d \ a
vld1 . 1 6 { d6 } , [ r2 ,: 6 4 ] , r12
vsub. s16 d5 , d5 , d \ b
vld1 . 1 6 { d7 } , [ r2 ,: 6 4 ] , r12
vsub. s16 d6 , d6 , d \ c
vsub. s16 d7 , d7 , d \ d
vsub. s16 d8 , d8 , d \ a
vld1 . 1 6 { d10 } , [ r2 ,: 6 4 ] , r12
vsub. s16 d9 , d9 , d \ b
vld1 . 1 6 { d11 } , [ r2 ,: 6 4 ] , r12
vsub. s16 d10 , d10 , d \ c
vsub. s16 d11 , d11 , d \ d
.endif
vld1 . 3 2 { d2 [ ] } , [ r0 ,: 3 2 ] , r1
vld1 . 3 2 { d2 [ 1 ] } , [ r0 ,: 3 2 ] , r1
vrshr. s16 q2 , q2 , #6
vld1 . 3 2 { d3 [ ] } , [ r0 ,: 3 2 ] , r1
vrshr. s16 q3 , q3 , #6
vld1 . 3 2 { d3 [ 1 ] } , [ r0 ,: 3 2 ] , r1
vld1 . 3 2 { d1 2 [ ] } , [ r0 ,: 3 2 ] , r1
vld1 . 3 2 { d1 2 [ 1 ] } , [ r0 ,: 3 2 ] , r1
vrshr. s16 q4 , q4 , #6
vld1 . 3 2 { d1 3 [ ] } , [ r0 ,: 3 2 ] , r1
vrshr. s16 q5 , q5 , #6
vld1 . 3 2 { d1 3 [ 1 ] } , [ r0 ,: 3 2 ] , r1
sub r0 , r0 , r1 , l s l #2
vaddw. u 8 q2 , q2 , d 2
vaddw. u 8 q3 , q3 , d 3
vqmovun. s16 d4 , q2
vqmovun. s16 d5 , q3
vst1 . 3 2 { d4 [ 0 ] } , [ r0 ,: 3 2 ] , r1
vst1 . 3 2 { d4 [ 1 ] } , [ r0 ,: 3 2 ] , r1
vst1 . 3 2 { d5 [ 0 ] } , [ r0 ,: 3 2 ] , r1
vst1 . 3 2 { d5 [ 1 ] } , [ r0 ,: 3 2 ] , r1
vaddw. u 8 q4 , q4 , d1 2
vaddw. u 8 q5 , q5 , d1 3
vqmovun. s16 d8 , q4
vqmovun. s16 d9 , q5
vst1 . 3 2 { d8 [ 0 ] } , [ r0 ,: 3 2 ] , r1
vst1 . 3 2 { d8 [ 1 ] } , [ r0 ,: 3 2 ] , r1
vst1 . 3 2 { d9 [ 0 ] } , [ r0 ,: 3 2 ] , r1
vst1 . 3 2 { d9 [ 1 ] } , [ r0 ,: 3 2 ] , r1
.endm
load_ a c c _ s t o r e 3 1 , 3 0 , 2 9 , 2 8
load_ a c c _ s t o r e 2 7 , 2 6 , 2 5 , 2 4
@ -1584,7 +1574,7 @@ function ff_vp9_idct_idct_32x32_add_neon, export=1
cmp r3 , #1
beq i d c t 3 2 x32 _ d c _ a d d _ n e o n
push { r4 - r8 ,l r }
vpush { q4 - q7 }
vpush { q4 - q6 }
movrel r8 , m i n _ e o b _ i d c t _ i d c t _ 3 2 + 2
@ Align the stack, allocate a temp buffer
@ -1598,6 +1588,10 @@ A and r7, sp, #15
mov r5 , r1
mov r6 , r2
movrel r12 , i d c t _ c o e f f s
vld1 . 1 6 { q0 - q1 } , [ r12 ,: 1 2 8 ] !
vld1 . 1 6 { q2 - q3 } , [ r12 ,: 1 2 8 ]
cmp r3 , #34
ble i d c t 3 2 x32 _ q u a r t e r _ a d d _ n e o n
cmp r3 , #135
@ -1636,7 +1630,7 @@ A and r7, sp, #15
.endr
add s p , s p , r7
vpop { q4 - q7 }
vpop { q4 - q6 }
pop { r4 - r8 ,p c }
endfunc
@ -1668,7 +1662,7 @@ function idct32x32_quarter_add_neon
.endr
add s p , s p , r7
vpop { q4 - q7 }
vpop { q4 - q6 }
pop { r4 - r8 ,p c }
endfunc
@ -1706,6 +1700,6 @@ function idct32x32_half_add_neon
.endr
add s p , s p , r7
vpop { q4 - q7 }
vpop { q4 - q6 }
pop { r4 - r8 ,p c }
endfunc