@ -50,20 +50,21 @@ function ff_hevc_add_residual_4x4_8_neon, export=1
endfunc
function f f _ h e v c _ a d d _ r e s i d u a l _ 8 x8 _ 8 _ n e o n , e x p o r t =1
add r12 , r0 , r2
add r2 , r2 , r2
mov r3 , #8
1 : subs r3 , #2
vld1 . 1 6 { q0 - q1 } , [ r1 , : 1 2 8 ] !
vld1 . 8 { d16 } , [ r0 , : 6 4 ]
add r12 , r0 , r2
vld1 . 8 { d16 } , [ r0 , : 6 4 ]
vld1 . 8 { d17 } , [ r12 , : 6 4 ]
vmovl. u 8 q9 , d16
vld1 . 1 6 { q0 - q1 } , [ r1 , : 1 2 8 ] !
vmovl. u 8 q8 , d17
vqadd. s16 q0 , q9
vqadd. s16 q1 , q8
vqmovun. s16 d0 , q0
vqmovun. s16 d1 , q1
vst1 . 8 d0 , [ r0 , : 6 4 ] , r2
vst1 . 8 d1 , [ r0 , : 6 4 ] , r2
vst1 . 8 d0 , [ r0 , : 6 4 ] , r2
vst1 . 8 d1 , [ r12 , : 6 4 ] , r2
bne 1 b
bx l r
endfunc
@ -96,24 +97,42 @@ function ff_hevc_add_residual_16x16_8_neon, export=1
endfunc
function f f _ h e v c _ a d d _ r e s i d u a l _ 3 2 x32 _ 8 _ n e o n , e x p o r t =1
vpush { q4 - q7 }
add r12 , r0 , r2
add r2 , r2 , r2
mov r3 , #32
1 : subs r3 , #1
vldm r1 ! , { q0 - q3 }
vld1 . 8 { q8 , q9 } , [ r0 , : 1 2 8 ]
vmovl. u 8 q10 , d16
vmovl. u 8 q11 , d17
vmovl. u 8 q12 , d18
vmovl. u 8 q13 , d19
vqadd. s16 q0 , q10
vqadd. s16 q1 , q11
vqadd. s16 q2 , q12
vqadd. s16 q3 , q13
1 : subs r3 , #2
vld1 . 8 { q12 , q13 } , [ r0 , : 1 2 8 ]
vmovl. u 8 q8 , d24
vmovl. u 8 q9 , d25
vld1 . 8 { q14 , q15 } , [ r12 , : 1 2 8 ]
vmovl. u 8 q10 , d26
vmovl. u 8 q11 , d27
vmovl. u 8 q12 , d28
vldm r1 ! , { q0 - q7 }
vmovl. u 8 q13 , d29
vmovl. u 8 q14 , d30
vmovl. u 8 q15 , d31
vqadd. s16 q0 , q8
vqadd. s16 q1 , q9
vqadd. s16 q2 , q10
vqadd. s16 q3 , q11
vqadd. s16 q4 , q12
vqadd. s16 q5 , q13
vqadd. s16 q6 , q14
vqadd. s16 q7 , q15
vqmovun. s16 d0 , q0
vqmovun. s16 d1 , q1
vqmovun. s16 d2 , q2
vqmovun. s16 d3 , q3
vqmovun. s16 d4 , q4
vqmovun. s16 d5 , q5
vst1 . 8 { q0 , q1 } , [ r0 , : 1 2 8 ] , r2
vqmovun. s16 d6 , q6
vqmovun. s16 d7 , q7
vst1 . 8 { q2 , q3 } , [ r12 , : 1 2 8 ] , r2
bne 1 b
vpop { q4 - q7 }
bx l r
endfunc