@ -96,9 +96,10 @@ T cmp r7, #0
pop { r4 - r7 , p c }
2 : tst r6 , r6
add r12 , r12 , r6
2 : adds r12 , r12 , r6
vdup. 8 d0 , r4
beq 5 f
tst r6 , r6
vdup. 8 d1 , r12
beq 4 f
@ -163,6 +164,33 @@ T cmp r7, #0
vst1 . 8 { d17 } , [ r0 ,: 6 4 ] , r2
bgt 4 b
pop { r4 - r7 , p c }
5 : vld1 . 8 { d4 } , [ r1 ] , r2
vld1 . 8 { d5 } , [ r1 ] , r2
pld [ r1 ]
subs r3 , r3 , #2
vmull. u 8 q8 , d4 , d0
vmull. u 8 q9 , d5 , d0
pld [ r1 , r2 ]
.ifc \ codec,h26 4
vrshrn. u 1 6 d16 , q8 , #6
vrshrn. u 1 6 d17 , q9 , #6
.else
vadd. u 1 6 q8 , q8 , q11
vadd. u 1 6 q9 , q9 , q11
vshrn. u 1 6 d16 , q8 , #6
vshrn. u 1 6 d17 , q9 , #6
.endif
.ifc \ type,a v g
vld1 . 8 { d20 } , [ l r ,: 6 4 ] , r2
vld1 . 8 { d21 } , [ l r ,: 6 4 ] , r2
vrhadd. u 8 q8 , q8 , q10
.endif
vst1 . 8 { d16 } , [ r0 ,: 6 4 ] , r2
vst1 . 8 { d17 } , [ r0 ,: 6 4 ] , r2
bgt 5 b
pop { r4 - r7 , p c }
endfunc
.endm
@ -245,9 +273,10 @@ T cmp r7, #0
pop { r4 - r7 , p c }
2 : tst r6 , r6
add r12 , r12 , r6
2 : adds r12 , r12 , r6
vdup. 8 d0 , r4
beq 5 f
tst r6 , r6
vdup. 8 d1 , r12
vtrn. 3 2 d0 , d1
@ -310,6 +339,29 @@ T cmp r7, #0
vst1 . 3 2 { d16 [ 1 ] } , [ r0 ,: 3 2 ] , r2
bgt 4 b
pop { r4 - r7 , p c }
5 : vld1 . 3 2 { d4 [ 0 ] } , [ r1 ] , r2
vld1 . 3 2 { d4 [ 1 ] } , [ r1 ] , r2
vmull. u 8 q8 , d4 , d0
subs r3 , r3 , #2
pld [ r1 ]
.ifc \ codec,h26 4
vrshrn. u 1 6 d16 , q8 , #6
.else
vadd. u 1 6 q8 , q8 , q11
vshrn. u 1 6 d16 , q8 , #6
.endif
.ifc \ type,a v g
vld1 . 3 2 { d20 [ 0 ] } , [ l r ,: 3 2 ] , r2
vld1 . 3 2 { d20 [ 1 ] } , [ l r ,: 3 2 ] , r2
vrhadd. u 8 d16 , d16 , d20
.endif
pld [ r1 ]
vst1 . 3 2 { d16 [ 0 ] } , [ r0 ,: 3 2 ] , r2
vst1 . 3 2 { d16 [ 1 ] } , [ r0 ,: 3 2 ] , r2
bgt 5 b
pop { r4 - r7 , p c }
endfunc
.endm