@ -1,5 +1,6 @@
/ *
* Copyright ( c ) 2 0 1 1 J a n n e G r u n a u < j a n n e - l i b a v @jannau.net>
* Copyright ( c ) 2 0 1 1 M a n s R u l l g a r d < m a n s @mansr.com>
*
* This f i l e i s p a r t o f L i b a v .
*
@ -19,6 +20,644 @@
* /
# include " a s m . S "
# include " n e o n . S "
.macro qpel_lowpass r0 , r1 , r c1 , r c2 , s h i f t
vext. 8 d25 , \ r0 , \ r1 , #1 @ src[-1]
vext. 8 d26 , \ r0 , \ r1 , #4 @ src[ 2]
vext. 8 d24 , \ r0 , \ r1 , #5 @ src[ 3]
vaddl. u 8 q9 , d25 , d26
vaddl. u 8 q8 , \ r0 , d24
vext. 8 d27 , \ r0 , \ r1 , #2 @ src[ 0]
vshl. s16 q12 , q9 , #2
vsub. s16 q8 , q8 , q9
vext. 8 d28 , \ r0 , \ r1 , #3 @ src[ 1]
vsub. s16 q8 , q8 , q12
vmlal. u 8 q8 , d27 , \ r c1
vmlal. u 8 q8 , d28 , \ r c2
vqrshrun. s16 \ r0 , q8 , #\ s h i f t
.endm
.macro qpel_lowpass_x2 r0 , r1 , r2 , r3 , r c1 , r c2 , s h i f t
vext. 8 d25 , \ r0 , \ r1 , #1 @ src[-1]
vext. 8 d26 , \ r0 , \ r1 , #4 @ src[ 2]
vext. 8 d24 , \ r0 , \ r1 , #5 @ src[ 3]
vaddl. u 8 q9 , d25 , d26
vaddl. u 8 q8 , \ r0 , d24
vext. 8 d29 , \ r0 , \ r1 , #2 @ src[ 0]
vext. 8 d28 , \ r0 , \ r1 , #3 @ src[ 1]
vshl. s16 q10 , q9 , #2
vext. 8 \ r1 , \ r2 , \ r3 , #1 @ src[-1]
vsub. s16 q8 , q8 , q9
vext. 8 d22 , \ r2 , \ r3 , #4 @ src[ 2]
vext. 8 \ r0 , \ r2 , \ r3 , #5 @ src[ 3]
vaddl. u 8 q13 , \ r1 , d22
vaddl. u 8 q12 , \ r2 , \ r0
vsub. s16 q8 , q8 , q10
vshl. s16 q9 , q13 , #2
vsub. s16 q12 , q12 , q13
vmlal. u 8 q8 , d29 , \ r c1
vmlal. u 8 q8 , d28 , \ r c2
vsub. s16 q12 , q12 , q9
vext. 8 d26 , \ r2 , \ r3 , #2 @ src[ 0]
vext. 8 d27 , \ r2 , \ r3 , #3 @ src[ 1]
vmlal. u 8 q12 , d26 , \ r c1
vmlal. u 8 q12 , d27 , \ r c2
vqrshrun. s16 \ r0 , q8 , #\ s h i f t
vqrshrun. s16 \ r2 , q12 , #\ s h i f t
.endm
.macro rv40_qpel8_h shift
function p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s \ s h i f t \ ( ) _ n e o n
1 :
vld1 . 8 { q2 } , [ r1 ] , r2
vld1 . 8 { q3 } , [ r1 ] , r2
qpel_ l o w p a s s _ x2 d4 , d5 , d6 , d7 , d0 , d1 , \ s h i f t
vst1 . 8 { d4 } , [ r12 ,: 6 4 ] !
vst1 . 8 { d6 } , [ r12 ,: 6 4 ] !
subs r3 , r3 , #2
bgt 1 b
vld1 . 8 { q2 } , [ r1 ]
qpel_ l o w p a s s d4 , d5 , d0 , d1 , \ s h i f t
vst1 . 8 { d4 } , [ r12 ,: 6 4 ] !
bx l r
endfunc
.endm
.macro rv40_qpel8_v shift, t y p e
function \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s \ s h i f t \ ( ) _ n e o n
vld1 . 6 4 { d2 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d3 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d4 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d5 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d6 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d7 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d8 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d9 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d10 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d11 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d12 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d13 } , [ r1 ,: 6 4 ] !
vld1 . 6 4 { d14 } , [ r1 ,: 6 4 ] !
transpose_ 8 x8 d2 , d3 , d4 , d5 , d6 , d7 , d8 , d9
transpose_ 8 x8 d10 , d11 , d12 , d13 , d14 , d15 , d30 , d31
qpel_ l o w p a s s _ x2 d2 , d10 , d3 , d11 , d0 , d1 , \ s h i f t
qpel_ l o w p a s s _ x2 d4 , d12 , d5 , d13 , d0 , d1 , \ s h i f t
qpel_ l o w p a s s _ x2 d6 , d14 , d7 , d15 , d0 , d1 , \ s h i f t
qpel_ l o w p a s s _ x2 d8 , d30 , d9 , d31 , d0 , d1 , \ s h i f t
transpose_ 8 x8 d2 , d3 , d4 , d5 , d6 , d7 , d8 , d9
.ifc \ type,a v g
vld1 . 6 4 d12 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d13 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d14 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d15 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d16 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d17 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d18 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d19 , [ r0 ,: 6 4 ] , r2
sub r0 , r0 , r2 , l s l #3
vrhadd. u 8 q1 , q1 , q6
vrhadd. u 8 q2 , q2 , q7
vrhadd. u 8 q3 , q3 , q8
vrhadd. u 8 q4 , q4 , q9
.endif
vst1 . 6 4 d2 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d3 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d4 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d5 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d6 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d7 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d8 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d9 , [ r0 ,: 6 4 ] , r2
bx l r
endfunc
.endm
rv4 0 _ q p e l 8 _ h 5
rv4 0 _ q p e l 8 _ h 6
.macro rv40_qpel type
function \ t y p e \ ( ) _ r v40 _ q p e l 8 _ h _ l o w p a s s _ n e o n
.ifc \ type,a v g
mov r12 , r0
.endif
1 :
vld1 . 8 { q2 } , [ r1 ] , r2
vld1 . 8 { q3 } , [ r1 ] , r2
qpel_ l o w p a s s _ x2 d4 , d5 , d6 , d7 , d0 , d1 , 6
.ifc \ type,a v g
vld1 . 8 { d3 } , [ r12 ,: 6 4 ] , r2
vld1 . 8 { d16 } , [ r12 ,: 6 4 ] , r2
vrhadd. u 8 d4 , d4 , d3
vrhadd. u 8 d6 , d6 , d16
.endif
vst1 . 8 { d4 } , [ r0 ,: 6 4 ] , r2
vst1 . 8 { d6 } , [ r0 ,: 6 4 ] , r2
subs r3 , r3 , #2
bgt 1 b
bx l r
endfunc
function \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l o w p a s s _ n e o n
vld1 . 6 4 { d2 } , [ r1 ] , r2
vld1 . 6 4 { d3 } , [ r1 ] , r2
vld1 . 6 4 { d4 } , [ r1 ] , r2
vld1 . 6 4 { d5 } , [ r1 ] , r2
vld1 . 6 4 { d6 } , [ r1 ] , r2
vld1 . 6 4 { d7 } , [ r1 ] , r2
vld1 . 6 4 { d8 } , [ r1 ] , r2
vld1 . 6 4 { d9 } , [ r1 ] , r2
vld1 . 6 4 { d10 } , [ r1 ] , r2
vld1 . 6 4 { d11 } , [ r1 ] , r2
vld1 . 6 4 { d12 } , [ r1 ] , r2
vld1 . 6 4 { d13 } , [ r1 ] , r2
vld1 . 6 4 { d14 } , [ r1 ]
transpose_ 8 x8 d2 , d3 , d4 , d5 , d6 , d7 , d8 , d9
transpose_ 8 x8 d10 , d11 , d12 , d13 , d14 , d15 , d30 , d31
qpel_ l o w p a s s _ x2 d2 , d10 , d3 , d11 , d0 , d1 , 6
qpel_ l o w p a s s _ x2 d4 , d12 , d5 , d13 , d0 , d1 , 6
qpel_ l o w p a s s _ x2 d6 , d14 , d7 , d15 , d0 , d1 , 6
qpel_ l o w p a s s _ x2 d8 , d30 , d9 , d31 , d0 , d1 , 6
transpose_ 8 x8 d2 , d3 , d4 , d5 , d6 , d7 , d8 , d9
.ifc \ type,a v g
vld1 . 6 4 d12 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d13 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d14 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d15 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d16 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d17 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d18 , [ r0 ,: 6 4 ] , r2
vld1 . 6 4 d19 , [ r0 ,: 6 4 ] , r2
sub r0 , r0 , r2 , l s l #3
vrhadd. u 8 q1 , q1 , q6
vrhadd. u 8 q2 , q2 , q7
vrhadd. u 8 q3 , q3 , q8
vrhadd. u 8 q4 , q4 , q9
.endif
vst1 . 6 4 d2 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d3 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d4 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d5 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d6 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d7 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d8 , [ r0 ,: 6 4 ] , r2
vst1 . 6 4 d9 , [ r0 ,: 6 4 ] , r2
bx l r
endfunc
rv4 0 _ q p e l 8 _ v 5 , \ t y p e
rv4 0 _ q p e l 8 _ v 6 , \ t y p e
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c10 _ n e o n , e x p o r t =1
sub r1 , r1 , #2
mov r3 , #8
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
b \ t y p e \ ( ) _ r v40 _ q p e l 8 _ h _ l o w p a s s _ n e o n
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c30 _ n e o n , e x p o r t =1
sub r1 , r1 , #2
mov r3 , #8
vmov. i 8 d0 , #20
vmov. i 8 d1 , #52
b \ t y p e \ ( ) _ r v40 _ q p e l 8 _ h _ l o w p a s s _ n e o n
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c01 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub r1 , r1 , r2 , l s l #1
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l o w p a s s _ n e o n
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c11 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub s p , s p , #14 * 8
add r12 , s p , #7
bic r12 , r12 , #7
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
mov r3 , #12
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
add r1 , s p , #7
bic r1 , r1 , #7
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
add s p , s p , #14 * 8
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c21 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub s p , s p , #14 * 8
add r12 , s p , #7
bic r12 , r12 , #7
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
mov r3 , #12
vmov. i 8 d0 , #20
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
add r1 , s p , #7
bic r1 , r1 , #7
vmov. i 8 d0 , #52
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
add s p , s p , #14 * 8
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c31 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub s p , s p , #14 * 8
add r12 , s p , #7
bic r12 , r12 , #7
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
mov r3 , #12
vmov. i 8 d0 , #20
vmov. i 8 d1 , #52
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
add r1 , s p , #7
bic r1 , r1 , #7
vswp d0 , d1
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
add s p , s p , #14 * 8
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c12 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub s p , s p , #14 * 8
add r12 , s p , #7
bic r12 , r12 , #7
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
mov r3 , #12
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
add r1 , s p , #7
bic r1 , r1 , #7
vmov. i 8 d0 , #20
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s5 _ n e o n
add s p , s p , #14 * 8
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c22 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub s p , s p , #14 * 8
add r12 , s p , #7
bic r12 , r12 , #7
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
mov r3 , #12
vmov. i 8 d0 , #20
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
add r1 , s p , #7
bic r1 , r1 , #7
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s5 _ n e o n
add s p , s p , #14 * 8
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c32 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub s p , s p , #14 * 8
add r12 , s p , #7
bic r12 , r12 , #7
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
mov r3 , #12
vmov. i 8 d0 , #20
vmov. i 8 d1 , #52
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
add r1 , s p , #7
bic r1 , r1 , #7
vmov. i 8 d1 , #20
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s5 _ n e o n
add s p , s p , #14 * 8
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c03 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub r1 , r1 , r2 , l s l #1
vmov. i 8 d0 , #20
vmov. i 8 d1 , #52
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l o w p a s s _ n e o n
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c33 _ n e o n , e x p o r t =1
mov r3 , #8
b f f _ \ t y p e \ ( ) _ p i x e l s8 _ x y 2 _ n e o n
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c13 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub s p , s p , #14 * 8
add r12 , s p , #7
bic r12 , r12 , #7
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
mov r3 , #12
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
add r1 , s p , #7
bic r1 , r1 , #7
vswp d0 , d1
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
add s p , s p , #14 * 8
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 8 _ m c23 _ n e o n , e x p o r t =1
push { r4 , l r }
vpush { d8 - d15 }
sub s p , s p , #14 * 8
add r12 , s p , #7
bic r12 , r12 , #7
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
mov r3 , #12
vmov. i 8 d0 , #20
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
add r1 , s p , #7
bic r1 , r1 , #7
vmov. i 8 d1 , #52
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
add s p , s p , #14 * 8
vpop { d8 - d15 }
pop { r4 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c10 _ n e o n , e x p o r t =1
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
.L \ type\ ( ) _ r v40 _ q p e l 1 6 _ h :
push { r1 , l r }
sub r1 , r1 , #2
mov r3 , #16
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ h _ l o w p a s s _ n e o n
pop { r1 , l r }
sub r0 , r0 , r2 , l s l #4
add r0 , r0 , #8
add r1 , r1 , #6
mov r3 , #16
b \ t y p e \ ( ) _ r v40 _ q p e l 8 _ h _ l o w p a s s _ n e o n
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c30 _ n e o n , e x p o r t =1
vmov. i 8 d0 , #20
vmov. i 8 d1 , #52
b . L \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ h
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c01 _ n e o n , e x p o r t =1
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
.L \ type\ ( ) _ r v40 _ q p e l 1 6 _ v :
sub r1 , r1 , r2 , l s l #1
push { r1 , l r }
vpush { d8 - d15 }
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l o w p a s s _ n e o n
sub r1 , r1 , r2 , l s l #2
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l o w p a s s _ n e o n
ldr r1 , [ s p , #64 ]
sub r0 , r0 , r2 , l s l #4
add r0 , r0 , #8
add r1 , r1 , #8
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l o w p a s s _ n e o n
sub r1 , r1 , r2 , l s l #2
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l o w p a s s _ n e o n
vpop { d8 - d15 }
pop { r1 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c11 _ n e o n , e x p o r t =1
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
push { r1 , l r }
vpush { d8 - d15 }
sub s p , s p , #44 * 8
add r12 , s p , #7
bic r12 , r12 , #7
mov r3 , #20
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
ldr r1 , [ s p , #416 ]
add r1 , r1 , #8
mov r3 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
.L \ type\ ( ) _ r v40 _ q p e l 1 6 _ v _ s6 :
add r1 , s p , #7
bic r1 , r1 , #7
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
sub r1 , r1 , #40
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
sub r0 , r0 , r2 , l s l #4
add r0 , r0 , #8
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
sub r1 , r1 , #40
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s6 _ n e o n
add s p , s p , #44 * 8
vpop { d8 - d15 }
pop { r1 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c21 _ n e o n , e x p o r t =1
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
push { r1 , l r }
vpush { d8 - d15 }
sub s p , s p , #44 * 8
add r12 , s p , #7
bic r12 , r12 , #7
mov r3 , #20
vmov. i 8 d0 , #20
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
ldr r1 , [ s p , #416 ]
add r1 , r1 , #8
mov r3 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
vmov. i 8 d0 , #52
b . L \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ v _ s6
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c31 _ n e o n , e x p o r t =1
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
push { r1 , l r }
vpush { d8 - d15 }
sub s p , s p , #44 * 8
add r12 , s p , #7
bic r12 , r12 , #7
mov r3 , #20
vmov. i 8 d0 , #20
vmov. i 8 d1 , #52
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
ldr r1 , [ s p , #416 ]
add r1 , r1 , #8
mov r3 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
vswp d0 , d1
b . L \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ v _ s6
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c12 _ n e o n , e x p o r t =1
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
push { r1 , l r }
vpush { d8 - d15 }
sub s p , s p , #44 * 8
add r12 , s p , #7
bic r12 , r12 , #7
mov r3 , #20
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
ldr r1 , [ s p , #416 ]
add r1 , r1 , #8
mov r3 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
vmov. i 8 d0 , #20
.L \ type\ ( ) _ r v40 _ q p e l 1 6 _ v _ s5 :
add r1 , s p , #7
bic r1 , r1 , #7
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s5 _ n e o n
sub r1 , r1 , #40
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s5 _ n e o n
sub r0 , r0 , r2 , l s l #4
add r0 , r0 , #8
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s5 _ n e o n
sub r1 , r1 , #40
bl \ t y p e \ ( ) _ r v40 _ q p e l 8 _ v _ l p _ p a c k e d _ s5 _ n e o n
add s p , s p , #44 * 8
vpop { d8 - d15 }
pop { r1 , p c }
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c22 _ n e o n , e x p o r t =1
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
push { r1 , l r }
vpush { d8 - d15 }
sub s p , s p , #44 * 8
add r12 , s p , #7
bic r12 , r12 , #7
mov r3 , #20
vmov. i 8 d0 , #20
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
ldr r1 , [ s p , #416 ]
add r1 , r1 , #8
mov r3 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
b . L \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ v _ s5
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c32 _ n e o n , e x p o r t =1
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
push { r1 , l r }
vpush { d8 - d15 }
sub s p , s p , #44 * 8
add r12 , s p , #7
bic r12 , r12 , #7
mov r3 , #20
vmov. i 8 d0 , #20
vmov. i 8 d1 , #52
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
ldr r1 , [ s p , #416 ]
add r1 , r1 , #8
mov r3 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
vmov. i 8 d1 , #20
b . L \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ v _ s5
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c03 _ n e o n , e x p o r t =1
vmov. i 8 d0 , #20
vmov. i 8 d1 , #52
b . L \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ v
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c13 _ n e o n , e x p o r t =1
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
push { r1 , l r }
vpush { d8 - d15 }
sub s p , s p , #44 * 8
add r12 , s p , #7
bic r12 , r12 , #7
mov r3 , #20
vmov. i 8 d0 , #52
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
ldr r1 , [ s p , #416 ]
add r1 , r1 , #8
mov r3 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s6 _ n e o n
vswp d0 , d1
b . L \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ v _ s6
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c23 _ n e o n , e x p o r t =1
sub r1 , r1 , r2 , l s l #1
sub r1 , r1 , #2
push { r1 , l r }
vpush { d8 - d15 }
sub s p , s p , #44 * 8
add r12 , s p , #7
bic r12 , r12 , #7
mov r3 , #20
vmov. i 8 d0 , #20
vmov. i 8 d1 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
ldr r1 , [ s p , #416 ]
add r1 , r1 , #8
mov r3 , #20
bl p u t _ r v40 _ q p e l 8 _ h _ l p _ p a c k e d _ s5 _ n e o n
vmov. i 8 d1 , #52
b . L \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ v _ s6
endfunc
function f f _ \ t y p e \ ( ) _ r v40 _ q p e l 1 6 _ m c33 _ n e o n , e x p o r t =1
mov r3 , #16
b f f _ \ t y p e \ ( ) _ p i x e l s16 _ x y 2 _ n e o n
endfunc
.endm
rv4 0 _ q p e l p u t
rv4 0 _ q p e l a v g
.macro rv40_weight
vmovl. u 8 q8 , d2