@ -108,14 +108,20 @@ endfunc
function v p3 _ i d c t _ s t a r t _ n e o n
function v p3 _ i d c t _ s t a r t _ n e o n
vpush { d8 - d15 }
vpush { d8 - d15 }
vmov. i 1 6 q4 , #0
vmov. i 1 6 q5 , #0
movrel r3 , v p3 _ i d c t _ c o n s t a n t s
movrel r3 , v p3 _ i d c t _ c o n s t a n t s
vld1 . 6 4 { d0 - d1 } , [ r3 ,: 1 2 8 ]
vld1 . 6 4 { d0 - d1 } , [ r3 ,: 1 2 8 ]
vld1 . 6 4 { d16 - d19 } , [ r2 ,: 1 2 8 ] !
vld1 . 6 4 { d16 - d19 } , [ r2 ,: 1 2 8 ]
vld1 . 6 4 { d20 - d23 } , [ r2 ,: 1 2 8 ] !
vst1 . 6 4 { q4 - q5 } , [ r2 ,: 1 2 8 ] !
vld1 . 6 4 { d24 - d27 } , [ r2 ,: 1 2 8 ] !
vld1 . 6 4 { d20 - d23 } , [ r2 ,: 1 2 8 ]
vst1 . 6 4 { q4 - q5 } , [ r2 ,: 1 2 8 ] !
vld1 . 6 4 { d24 - d27 } , [ r2 ,: 1 2 8 ]
vst1 . 6 4 { q4 - q5 } , [ r2 ,: 1 2 8 ] !
vadd. s16 q1 , q8 , q12
vadd. s16 q1 , q8 , q12
vsub. s16 q8 , q8 , q12
vsub. s16 q8 , q8 , q12
vld1 . 6 4 { d28 - d31 } , [ r2 ,: 1 2 8 ] !
vld1 . 6 4 { d28 - d31 } , [ r2 ,: 1 2 8 ]
vst1 . 6 4 { q4 - q5 } , [ r2 ,: 1 2 8 ] !
vp3_idct_core_neon :
vp3_idct_core_neon :
vmull. s16 q2 , d18 , x C 1 S 7 / / ( i p [ 1 ] * C 1 ) < < 1 6
vmull. s16 q2 , d18 , x C 1 S 7 / / ( i p [ 1 ] * C 1 ) < < 1 6
@ -345,10 +351,12 @@ function ff_vp3_idct_add_neon, export=1
endfunc
endfunc
function f f _ v p3 _ i d c t _ d c _ a d d _ n e o n , e x p o r t =1
function f f _ v p3 _ i d c t _ d c _ a d d _ n e o n , e x p o r t =1
ldrsh r2 , [ r2 ]
ldrsh r1 2 , [ r2 ]
mov r3 , r0
mov r3 , r0
add r2 , r2 , #15
add r12 , r12 , #15
vdup. 1 6 q15 , r2
vdup. 1 6 q15 , r12
mov r12 , 0
strh r12 , [ r2 ]
vshr. s16 q15 , q15 , #5
vshr. s16 q15 , q15 , #5
vld1 . 8 { d0 } , [ r0 ,: 6 4 ] , r1
vld1 . 8 { d0 } , [ r0 ,: 6 4 ] , r1