2019-11-08 13:22:38 +01:00
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
2019-11-08 13:22:37 +01:00
/ *
2019-11-08 13:22:38 +01:00
* Copyright ( C ) 2 0 1 5 - 2 0 1 9 J a s o n A . D o n e n f e l d < J a s o n @zx2c4.com>. All Rights Reserved.
*
* Based o n p u b l i c d o m a i n c o d e f r o m D a n i e l J . B e r n s t e i n a n d P e t e r S c h w a b e . T h i s
* began f r o m S U P E R C O P ' s c u r v e 2 5 5 1 9 / n e o n 2 / s c a l a r m u l t . s , b u t h a s s u b s e q u e n t l y b e e n
* manually r e w o r k e d f o r u s e i n k e r n e l s p a c e .
2019-11-08 13:22:37 +01:00
* /
2019-11-08 13:22:38 +01:00
# include < l i n u x / l i n k a g e . h >
2019-11-08 13:22:37 +01:00
.text
2019-11-08 13:22:38 +01:00
.arch armv7 - a
2021-04-09 15:11:55 -07:00
.fpu neon
2019-11-08 13:22:37 +01:00
.align 4
2019-11-08 13:22:38 +01:00
ENTRY( c u r v e 2 5 5 1 9 _ n e o n )
push { r4 - r11 , l r }
mov i p , s p
sub r3 , s p , #704
and r3 , r3 , #0xfffffff0
mov s p , r3
movw r4 , #0
movw r5 , #254
2019-11-08 13:22:37 +01:00
vmov. i 3 2 q0 , #1
vshr. u 6 4 q1 , q0 , #7
vshr. u 6 4 q0 , q0 , #8
vmov. i 3 2 d4 , #19
vmov. i 3 2 d5 , #38
2019-11-08 13:22:38 +01:00
add r6 , s p , #480
vst1 . 8 { d2 - d3 } , [ r6 , : 1 2 8 ] !
vst1 . 8 { d0 - d1 } , [ r6 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vst1 . 8 { d4 - d5 } , [ r6 , : 1 2 8 ]
add r6 , r3 , #0
vmov. i 3 2 q2 , #0
vst1 . 8 { d4 - d5 } , [ r6 , : 1 2 8 ] !
vst1 . 8 { d4 - d5 } , [ r6 , : 1 2 8 ] !
vst1 . 8 d4 , [ r6 , : 6 4 ]
add r6 , r3 , #0
2019-11-08 13:22:38 +01:00
movw r7 , #960
2019-11-08 13:22:37 +01:00
sub r7 , r7 , #2
neg r7 , r7
sub r7 , r7 , r7 , L S L #7
str r7 , [ r6 ]
2019-11-08 13:22:38 +01:00
add r6 , s p , #672
2019-11-08 13:22:37 +01:00
vld1 . 8 { d4 - d5 } , [ r1 ] !
vld1 . 8 { d6 - d7 } , [ r1 ]
vst1 . 8 { d4 - d5 } , [ r6 , : 1 2 8 ] !
vst1 . 8 { d6 - d7 } , [ r6 , : 1 2 8 ]
sub r1 , r6 , #16
ldrb r6 , [ r1 ]
and r6 , r6 , #248
strb r6 , [ r1 ]
ldrb r6 , [ r1 , #31 ]
and r6 , r6 , #127
orr r6 , r6 , #64
strb r6 , [ r1 , #31 ]
vmov. i 6 4 q2 , #0xffffffff
vshr. u 6 4 q3 , q2 , #7
vshr. u 6 4 q2 , q2 , #6
vld1 . 8 { d8 } , [ r2 ]
vld1 . 8 { d10 } , [ r2 ]
add r2 , r2 , #6
vld1 . 8 { d12 } , [ r2 ]
vld1 . 8 { d14 } , [ r2 ]
add r2 , r2 , #6
vld1 . 8 { d16 } , [ r2 ]
add r2 , r2 , #4
vld1 . 8 { d18 } , [ r2 ]
vld1 . 8 { d20 } , [ r2 ]
add r2 , r2 , #6
vld1 . 8 { d22 } , [ r2 ]
add r2 , r2 , #2
vld1 . 8 { d24 } , [ r2 ]
vld1 . 8 { d26 } , [ r2 ]
vshr. u 6 4 q5 , q5 , #26
vshr. u 6 4 q6 , q6 , #3
vshr. u 6 4 q7 , q7 , #29
vshr. u 6 4 q8 , q8 , #6
vshr. u 6 4 q10 , q10 , #25
vshr. u 6 4 q11 , q11 , #3
vshr. u 6 4 q12 , q12 , #12
vshr. u 6 4 q13 , q13 , #38
vand q4 , q4 , q2
vand q6 , q6 , q2
vand q8 , q8 , q2
vand q10 , q10 , q2
vand q2 , q12 , q2
vand q5 , q5 , q3
vand q7 , q7 , q3
vand q9 , q9 , q3
vand q11 , q11 , q3
vand q3 , q13 , q3
add r2 , r3 , #48
vadd. i 6 4 q12 , q4 , q1
vadd. i 6 4 q13 , q10 , q1
vshr. s64 q12 , q12 , #26
vshr. s64 q13 , q13 , #26
vadd. i 6 4 q5 , q5 , q12
vshl. i 6 4 q12 , q12 , #26
vadd. i 6 4 q14 , q5 , q0
vadd. i 6 4 q11 , q11 , q13
vshl. i 6 4 q13 , q13 , #26
vadd. i 6 4 q15 , q11 , q0
vsub. i 6 4 q4 , q4 , q12
vshr. s64 q12 , q14 , #25
vsub. i 6 4 q10 , q10 , q13
vshr. s64 q13 , q15 , #25
vadd. i 6 4 q6 , q6 , q12
vshl. i 6 4 q12 , q12 , #25
vadd. i 6 4 q14 , q6 , q1
vadd. i 6 4 q2 , q2 , q13
vsub. i 6 4 q5 , q5 , q12
vshr. s64 q12 , q14 , #26
vshl. i 6 4 q13 , q13 , #25
vadd. i 6 4 q14 , q2 , q1
vadd. i 6 4 q7 , q7 , q12
vshl. i 6 4 q12 , q12 , #26
vadd. i 6 4 q15 , q7 , q0
vsub. i 6 4 q11 , q11 , q13
vshr. s64 q13 , q14 , #26
vsub. i 6 4 q6 , q6 , q12
vshr. s64 q12 , q15 , #25
vadd. i 6 4 q3 , q3 , q13
vshl. i 6 4 q13 , q13 , #26
vadd. i 6 4 q14 , q3 , q0
vadd. i 6 4 q8 , q8 , q12
vshl. i 6 4 q12 , q12 , #25
vadd. i 6 4 q15 , q8 , q1
add r2 , r2 , #8
vsub. i 6 4 q2 , q2 , q13
vshr. s64 q13 , q14 , #25
vsub. i 6 4 q7 , q7 , q12
vshr. s64 q12 , q15 , #26
vadd. i 6 4 q14 , q13 , q13
vadd. i 6 4 q9 , q9 , q12
vtrn. 3 2 d12 , d14
vshl. i 6 4 q12 , q12 , #26
vtrn. 3 2 d13 , d15
vadd. i 6 4 q0 , q9 , q0
vadd. i 6 4 q4 , q4 , q14
vst1 . 8 d12 , [ r2 , : 6 4 ] !
vshl. i 6 4 q6 , q13 , #4
vsub. i 6 4 q7 , q8 , q12
vshr. s64 q0 , q0 , #25
vadd. i 6 4 q4 , q4 , q6
vadd. i 6 4 q6 , q10 , q0
vshl. i 6 4 q0 , q0 , #25
vadd. i 6 4 q8 , q6 , q1
vadd. i 6 4 q4 , q4 , q13
vshl. i 6 4 q10 , q13 , #25
vadd. i 6 4 q1 , q4 , q1
vsub. i 6 4 q0 , q9 , q0
vshr. s64 q8 , q8 , #26
vsub. i 6 4 q3 , q3 , q10
vtrn. 3 2 d14 , d0
vshr. s64 q1 , q1 , #26
vtrn. 3 2 d15 , d1
vadd. i 6 4 q0 , q11 , q8
vst1 . 8 d14 , [ r2 , : 6 4 ]
vshl. i 6 4 q7 , q8 , #26
vadd. i 6 4 q5 , q5 , q1
vtrn. 3 2 d4 , d6
vshl. i 6 4 q1 , q1 , #26
vtrn. 3 2 d5 , d7
vsub. i 6 4 q3 , q6 , q7
add r2 , r2 , #16
vsub. i 6 4 q1 , q4 , q1
vst1 . 8 d4 , [ r2 , : 6 4 ]
vtrn. 3 2 d6 , d0
vtrn. 3 2 d7 , d1
sub r2 , r2 , #8
vtrn. 3 2 d2 , d10
vtrn. 3 2 d3 , d11
vst1 . 8 d6 , [ r2 , : 6 4 ]
sub r2 , r2 , #24
vst1 . 8 d2 , [ r2 , : 6 4 ]
add r2 , r3 , #96
vmov. i 3 2 q0 , #0
vmov. i 6 4 d2 , #0xff
vmov. i 6 4 d3 , #0
vshr. u 3 2 q1 , q1 , #7
vst1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vst1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vst1 . 8 d0 , [ r2 , : 6 4 ]
add r2 , r3 , #144
vmov. i 3 2 q0 , #0
vst1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vst1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vst1 . 8 d0 , [ r2 , : 6 4 ]
add r2 , r3 , #240
vmov. i 3 2 q0 , #0
vmov. i 6 4 d2 , #0xff
vmov. i 6 4 d3 , #0
vshr. u 3 2 q1 , q1 , #7
vst1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vst1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vst1 . 8 d0 , [ r2 , : 6 4 ]
add r2 , r3 , #48
add r6 , r3 , #192
vld1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d4 } , [ r2 , : 6 4 ]
vst1 . 8 { d0 - d1 } , [ r6 , : 1 2 8 ] !
vst1 . 8 { d2 - d3 } , [ r6 , : 1 2 8 ] !
vst1 . 8 d4 , [ r6 , : 6 4 ]
2019-11-08 13:22:38 +01:00
.Lmainloop :
2019-11-08 13:22:37 +01:00
mov r2 , r5 , L S R #3
and r6 , r5 , #7
ldrb r2 , [ r1 , r2 ]
mov r2 , r2 , L S R r6
and r2 , r2 , #1
2019-11-08 13:22:38 +01:00
str r5 , [ s p , #456 ]
2019-11-08 13:22:37 +01:00
eor r4 , r4 , r2
2019-11-08 13:22:38 +01:00
str r2 , [ s p , #460 ]
2019-11-08 13:22:37 +01:00
neg r2 , r4
add r4 , r3 , #96
add r5 , r3 , #192
add r6 , r3 , #144
vld1 . 8 { d8 - d9 } , [ r4 , : 1 2 8 ] !
add r7 , r3 , #240
vld1 . 8 { d10 - d11 } , [ r5 , : 1 2 8 ] !
veor q6 , q4 , q5
vld1 . 8 { d14 - d15 } , [ r6 , : 1 2 8 ] !
vdup. i 3 2 q8 , r2
vld1 . 8 { d18 - d19 } , [ r7 , : 1 2 8 ] !
veor q10 , q7 , q9
vld1 . 8 { d22 - d23 } , [ r4 , : 1 2 8 ] !
vand q6 , q6 , q8
vld1 . 8 { d24 - d25 } , [ r5 , : 1 2 8 ] !
vand q10 , q10 , q8
vld1 . 8 { d26 - d27 } , [ r6 , : 1 2 8 ] !
veor q4 , q4 , q6
vld1 . 8 { d28 - d29 } , [ r7 , : 1 2 8 ] !
veor q5 , q5 , q6
vld1 . 8 { d0 } , [ r4 , : 6 4 ]
veor q6 , q7 , q10
vld1 . 8 { d2 } , [ r5 , : 6 4 ]
veor q7 , q9 , q10
vld1 . 8 { d4 } , [ r6 , : 6 4 ]
veor q9 , q11 , q12
vld1 . 8 { d6 } , [ r7 , : 6 4 ]
veor q10 , q0 , q1
sub r2 , r4 , #32
vand q9 , q9 , q8
sub r4 , r5 , #32
vand q10 , q10 , q8
sub r5 , r6 , #32
veor q11 , q11 , q9
sub r6 , r7 , #32
veor q0 , q0 , q10
veor q9 , q12 , q9
veor q1 , q1 , q10
veor q10 , q13 , q14
veor q12 , q2 , q3
vand q10 , q10 , q8
vand q8 , q12 , q8
veor q12 , q13 , q10
veor q2 , q2 , q8
veor q10 , q14 , q10
veor q3 , q3 , q8
vadd. i 3 2 q8 , q4 , q6
vsub. i 3 2 q4 , q4 , q6
vst1 . 8 { d16 - d17 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q6 , q11 , q12
vst1 . 8 { d8 - d9 } , [ r5 , : 1 2 8 ] !
vsub. i 3 2 q4 , q11 , q12
vst1 . 8 { d12 - d13 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q6 , q0 , q2
vst1 . 8 { d8 - d9 } , [ r5 , : 1 2 8 ] !
vsub. i 3 2 q0 , q0 , q2
vst1 . 8 d12 , [ r2 , : 6 4 ]
vadd. i 3 2 q2 , q5 , q7
vst1 . 8 d0 , [ r5 , : 6 4 ]
vsub. i 3 2 q0 , q5 , q7
vst1 . 8 { d4 - d5 } , [ r4 , : 1 2 8 ] !
vadd. i 3 2 q2 , q9 , q10
vst1 . 8 { d0 - d1 } , [ r6 , : 1 2 8 ] !
vsub. i 3 2 q0 , q9 , q10
vst1 . 8 { d4 - d5 } , [ r4 , : 1 2 8 ] !
vadd. i 3 2 q2 , q1 , q3
vst1 . 8 { d0 - d1 } , [ r6 , : 1 2 8 ] !
vsub. i 3 2 q0 , q1 , q3
vst1 . 8 d4 , [ r4 , : 6 4 ]
vst1 . 8 d0 , [ r6 , : 6 4 ]
2019-11-08 13:22:38 +01:00
add r2 , s p , #512
2019-11-08 13:22:37 +01:00
add r4 , r3 , #96
add r5 , r3 , #144
vld1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ]
vld1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d4 - d5 } , [ r5 , : 1 2 8 ] !
vzip. i 3 2 q1 , q2
vld1 . 8 { d6 - d7 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d8 - d9 } , [ r5 , : 1 2 8 ] !
vshl. i 3 2 q5 , q1 , #1
vzip. i 3 2 q3 , q4
vshl. i 3 2 q6 , q2 , #1
vld1 . 8 { d14 } , [ r4 , : 6 4 ]
vshl. i 3 2 q8 , q3 , #1
vld1 . 8 { d15 } , [ r5 , : 6 4 ]
vshl. i 3 2 q9 , q4 , #1
vmul. i 3 2 d21 , d7 , d1
vtrn. 3 2 d14 , d15
vmul. i 3 2 q11 , q4 , q0
vmul. i 3 2 q0 , q7 , q0
vmull. s32 q12 , d2 , d2
vmlal. s32 q12 , d11 , d1
vmlal. s32 q12 , d12 , d0
vmlal. s32 q12 , d13 , d23
vmlal. s32 q12 , d16 , d22
vmlal. s32 q12 , d7 , d21
vmull. s32 q10 , d2 , d11
vmlal. s32 q10 , d4 , d1
vmlal. s32 q10 , d13 , d0
vmlal. s32 q10 , d6 , d23
vmlal. s32 q10 , d17 , d22
vmull. s32 q13 , d10 , d4
vmlal. s32 q13 , d11 , d3
vmlal. s32 q13 , d13 , d1
vmlal. s32 q13 , d16 , d0
vmlal. s32 q13 , d17 , d23
vmlal. s32 q13 , d8 , d22
vmull. s32 q1 , d10 , d5
vmlal. s32 q1 , d11 , d4
vmlal. s32 q1 , d6 , d1
vmlal. s32 q1 , d17 , d0
vmlal. s32 q1 , d8 , d23
vmull. s32 q14 , d10 , d6
vmlal. s32 q14 , d11 , d13
vmlal. s32 q14 , d4 , d4
vmlal. s32 q14 , d17 , d1
vmlal. s32 q14 , d18 , d0
vmlal. s32 q14 , d9 , d23
vmull. s32 q11 , d10 , d7
vmlal. s32 q11 , d11 , d6
vmlal. s32 q11 , d12 , d5
vmlal. s32 q11 , d8 , d1
vmlal. s32 q11 , d19 , d0
vmull. s32 q15 , d10 , d8
vmlal. s32 q15 , d11 , d17
vmlal. s32 q15 , d12 , d6
vmlal. s32 q15 , d13 , d5
vmlal. s32 q15 , d19 , d1
vmlal. s32 q15 , d14 , d0
vmull. s32 q2 , d10 , d9
vmlal. s32 q2 , d11 , d8
vmlal. s32 q2 , d12 , d7
vmlal. s32 q2 , d13 , d6
vmlal. s32 q2 , d14 , d1
vmull. s32 q0 , d15 , d1
vmlal. s32 q0 , d10 , d14
vmlal. s32 q0 , d11 , d19
vmlal. s32 q0 , d12 , d8
vmlal. s32 q0 , d13 , d17
vmlal. s32 q0 , d6 , d6
2019-11-08 13:22:38 +01:00
add r2 , s p , #480
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q3 , d16 , d7
vmlal. s32 q3 , d10 , d15
vmlal. s32 q3 , d11 , d14
vmlal. s32 q3 , d12 , d9
vmlal. s32 q3 , d13 , d8
vld1 . 8 { d8 - d9 } , [ r2 , : 1 2 8 ]
vadd. i 6 4 q5 , q12 , q9
vadd. i 6 4 q6 , q15 , q9
vshr. s64 q5 , q5 , #26
vshr. s64 q6 , q6 , #26
vadd. i 6 4 q7 , q10 , q5
vshl. i 6 4 q5 , q5 , #26
vadd. i 6 4 q8 , q7 , q4
vadd. i 6 4 q2 , q2 , q6
vshl. i 6 4 q6 , q6 , #26
vadd. i 6 4 q10 , q2 , q4
vsub. i 6 4 q5 , q12 , q5
vshr. s64 q8 , q8 , #25
vsub. i 6 4 q6 , q15 , q6
vshr. s64 q10 , q10 , #25
vadd. i 6 4 q12 , q13 , q8
vshl. i 6 4 q8 , q8 , #25
vadd. i 6 4 q13 , q12 , q9
vadd. i 6 4 q0 , q0 , q10
vsub. i 6 4 q7 , q7 , q8
vshr. s64 q8 , q13 , #26
vshl. i 6 4 q10 , q10 , #25
vadd. i 6 4 q13 , q0 , q9
vadd. i 6 4 q1 , q1 , q8
vshl. i 6 4 q8 , q8 , #26
vadd. i 6 4 q15 , q1 , q4
vsub. i 6 4 q2 , q2 , q10
vshr. s64 q10 , q13 , #26
vsub. i 6 4 q8 , q12 , q8
vshr. s64 q12 , q15 , #25
vadd. i 6 4 q3 , q3 , q10
vshl. i 6 4 q10 , q10 , #26
vadd. i 6 4 q13 , q3 , q4
vadd. i 6 4 q14 , q14 , q12
add r2 , r3 , #288
vshl. i 6 4 q12 , q12 , #25
add r4 , r3 , #336
vadd. i 6 4 q15 , q14 , q9
add r2 , r2 , #8
vsub. i 6 4 q0 , q0 , q10
add r4 , r4 , #8
vshr. s64 q10 , q13 , #25
vsub. i 6 4 q1 , q1 , q12
vshr. s64 q12 , q15 , #26
vadd. i 6 4 q13 , q10 , q10
vadd. i 6 4 q11 , q11 , q12
vtrn. 3 2 d16 , d2
vshl. i 6 4 q12 , q12 , #26
vtrn. 3 2 d17 , d3
vadd. i 6 4 q1 , q11 , q4
vadd. i 6 4 q4 , q5 , q13
vst1 . 8 d16 , [ r2 , : 6 4 ] !
vshl. i 6 4 q5 , q10 , #4
vst1 . 8 d17 , [ r4 , : 6 4 ] !
vsub. i 6 4 q8 , q14 , q12
vshr. s64 q1 , q1 , #25
vadd. i 6 4 q4 , q4 , q5
vadd. i 6 4 q5 , q6 , q1
vshl. i 6 4 q1 , q1 , #25
vadd. i 6 4 q6 , q5 , q9
vadd. i 6 4 q4 , q4 , q10
vshl. i 6 4 q10 , q10 , #25
vadd. i 6 4 q9 , q4 , q9
vsub. i 6 4 q1 , q11 , q1
vshr. s64 q6 , q6 , #26
vsub. i 6 4 q3 , q3 , q10
vtrn. 3 2 d16 , d2
vshr. s64 q9 , q9 , #26
vtrn. 3 2 d17 , d3
vadd. i 6 4 q1 , q2 , q6
vst1 . 8 d16 , [ r2 , : 6 4 ]
vshl. i 6 4 q2 , q6 , #26
vst1 . 8 d17 , [ r4 , : 6 4 ]
vadd. i 6 4 q6 , q7 , q9
vtrn. 3 2 d0 , d6
vshl. i 6 4 q7 , q9 , #26
vtrn. 3 2 d1 , d7
vsub. i 6 4 q2 , q5 , q2
add r2 , r2 , #16
vsub. i 6 4 q3 , q4 , q7
vst1 . 8 d0 , [ r2 , : 6 4 ]
add r4 , r4 , #16
vst1 . 8 d1 , [ r4 , : 6 4 ]
vtrn. 3 2 d4 , d2
vtrn. 3 2 d5 , d3
sub r2 , r2 , #8
sub r4 , r4 , #8
vtrn. 3 2 d6 , d12
vtrn. 3 2 d7 , d13
vst1 . 8 d4 , [ r2 , : 6 4 ]
vst1 . 8 d5 , [ r4 , : 6 4 ]
sub r2 , r2 , #24
sub r4 , r4 , #24
vst1 . 8 d6 , [ r2 , : 6 4 ]
vst1 . 8 d7 , [ r4 , : 6 4 ]
add r2 , r3 , #240
add r4 , r3 , #96
vld1 . 8 { d0 - d1 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d4 } , [ r4 , : 6 4 ]
add r4 , r3 , #144
vld1 . 8 { d6 - d7 } , [ r4 , : 1 2 8 ] !
vtrn. 3 2 q0 , q3
vld1 . 8 { d8 - d9 } , [ r4 , : 1 2 8 ] !
vshl. i 3 2 q5 , q0 , #4
vtrn. 3 2 q1 , q4
vshl. i 3 2 q6 , q3 , #4
vadd. i 3 2 q5 , q5 , q0
vadd. i 3 2 q6 , q6 , q3
vshl. i 3 2 q7 , q1 , #4
vld1 . 8 { d5 } , [ r4 , : 6 4 ]
vshl. i 3 2 q8 , q4 , #4
vtrn. 3 2 d4 , d5
vadd. i 3 2 q7 , q7 , q1
vadd. i 3 2 q8 , q8 , q4
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ] !
vshl. i 3 2 q10 , q2 , #4
vld1 . 8 { d22 - d23 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q10 , q10 , q2
vld1 . 8 { d24 } , [ r2 , : 6 4 ]
vadd. i 3 2 q5 , q5 , q0
add r2 , r3 , #192
vld1 . 8 { d26 - d27 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q6 , q6 , q3
vld1 . 8 { d28 - d29 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q8 , q8 , q4
vld1 . 8 { d25 } , [ r2 , : 6 4 ]
vadd. i 3 2 q10 , q10 , q2
vtrn. 3 2 q9 , q13
vadd. i 3 2 q7 , q7 , q1
vadd. i 3 2 q5 , q5 , q0
vtrn. 3 2 q11 , q14
vadd. i 3 2 q6 , q6 , q3
2019-11-08 13:22:38 +01:00
add r2 , s p , #528
2019-11-08 13:22:37 +01:00
vadd. i 3 2 q10 , q10 , q2
vtrn. 3 2 d24 , d25
2019-11-08 13:22:38 +01:00
vst1 . 8 { d12 - d13 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q6 , q13 , #1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q10 , q14 , #1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d12 - d13 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q15 , q12 , #1
vadd. i 3 2 q8 , q8 , q4
vext. 3 2 d10 , d31 , d30 , #0
vadd. i 3 2 q7 , q7 , q1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d16 - d17 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q8 , d18 , d5
vmlal. s32 q8 , d26 , d4
vmlal. s32 q8 , d19 , d9
vmlal. s32 q8 , d27 , d3
vmlal. s32 q8 , d22 , d8
vmlal. s32 q8 , d28 , d2
vmlal. s32 q8 , d23 , d7
vmlal. s32 q8 , d29 , d1
vmlal. s32 q8 , d24 , d6
vmlal. s32 q8 , d25 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d14 - d15 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q2 , d18 , d4
vmlal. s32 q2 , d12 , d9
vmlal. s32 q2 , d13 , d8
vmlal. s32 q2 , d19 , d3
vmlal. s32 q2 , d22 , d2
vmlal. s32 q2 , d23 , d1
vmlal. s32 q2 , d24 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q7 , d18 , d9
vmlal. s32 q7 , d26 , d3
vmlal. s32 q7 , d19 , d8
vmlal. s32 q7 , d27 , d2
vmlal. s32 q7 , d22 , d7
vmlal. s32 q7 , d28 , d1
vmlal. s32 q7 , d23 , d6
vmlal. s32 q7 , d29 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d10 - d11 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q5 , d18 , d3
vmlal. s32 q5 , d19 , d2
vmlal. s32 q5 , d22 , d1
vmlal. s32 q5 , d23 , d0
vmlal. s32 q5 , d12 , d8
vst1 . 8 { d16 - d17 } , [ r2 , : 1 2 8 ]
vmull. s32 q4 , d18 , d8
vmlal. s32 q4 , d26 , d2
vmlal. s32 q4 , d19 , d7
vmlal. s32 q4 , d27 , d1
vmlal. s32 q4 , d22 , d6
vmlal. s32 q4 , d28 , d0
vmull. s32 q8 , d18 , d7
vmlal. s32 q8 , d26 , d1
vmlal. s32 q8 , d19 , d6
vmlal. s32 q8 , d27 , d0
2019-11-08 13:22:38 +01:00
add r2 , s p , #544
2019-11-08 13:22:37 +01:00
vld1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ]
vmlal. s32 q7 , d24 , d21
vmlal. s32 q7 , d25 , d20
vmlal. s32 q4 , d23 , d21
vmlal. s32 q4 , d29 , d20
vmlal. s32 q8 , d22 , d21
vmlal. s32 q8 , d28 , d20
vmlal. s32 q5 , d24 , d20
vst1 . 8 { d14 - d15 } , [ r2 , : 1 2 8 ]
vmull. s32 q7 , d18 , d6
vmlal. s32 q7 , d26 , d0
2019-11-08 13:22:38 +01:00
add r2 , s p , #624
2019-11-08 13:22:37 +01:00
vld1 . 8 { d30 - d31 } , [ r2 , : 1 2 8 ]
vmlal. s32 q2 , d30 , d21
vmlal. s32 q7 , d19 , d21
vmlal. s32 q7 , d27 , d20
2019-11-08 13:22:38 +01:00
add r2 , s p , #592
2019-11-08 13:22:37 +01:00
vld1 . 8 { d26 - d27 } , [ r2 , : 1 2 8 ]
vmlal. s32 q4 , d25 , d27
vmlal. s32 q8 , d29 , d27
vmlal. s32 q8 , d25 , d26
vmlal. s32 q7 , d28 , d27
vmlal. s32 q7 , d29 , d26
2019-11-08 13:22:38 +01:00
add r2 , s p , #576
2019-11-08 13:22:37 +01:00
vld1 . 8 { d28 - d29 } , [ r2 , : 1 2 8 ]
vmlal. s32 q4 , d24 , d29
vmlal. s32 q8 , d23 , d29
vmlal. s32 q8 , d24 , d28
vmlal. s32 q7 , d22 , d29
vmlal. s32 q7 , d23 , d28
vst1 . 8 { d8 - d9 } , [ r2 , : 1 2 8 ]
2019-11-08 13:22:38 +01:00
add r2 , s p , #528
2019-11-08 13:22:37 +01:00
vld1 . 8 { d8 - d9 } , [ r2 , : 1 2 8 ]
vmlal. s32 q7 , d24 , d9
vmlal. s32 q7 , d25 , d31
vmull. s32 q1 , d18 , d2
vmlal. s32 q1 , d19 , d1
vmlal. s32 q1 , d22 , d0
vmlal. s32 q1 , d24 , d27
vmlal. s32 q1 , d23 , d20
vmlal. s32 q1 , d12 , d7
vmlal. s32 q1 , d13 , d6
vmull. s32 q6 , d18 , d1
vmlal. s32 q6 , d19 , d0
vmlal. s32 q6 , d23 , d27
vmlal. s32 q6 , d22 , d20
vmlal. s32 q6 , d24 , d26
vmull. s32 q0 , d18 , d0
vmlal. s32 q0 , d22 , d27
vmlal. s32 q0 , d23 , d26
vmlal. s32 q0 , d24 , d31
vmlal. s32 q0 , d19 , d20
2019-11-08 13:22:38 +01:00
add r2 , s p , #608
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
vmlal. s32 q2 , d18 , d7
vmlal. s32 q5 , d18 , d6
vmlal. s32 q1 , d18 , d21
vmlal. s32 q0 , d18 , d28
vmlal. s32 q6 , d18 , d29
2019-11-08 13:22:38 +01:00
vmlal. s32 q2 , d19 , d6
vmlal. s32 q5 , d19 , d21
vmlal. s32 q1 , d19 , d29
vmlal. s32 q0 , d19 , d9
2019-11-08 13:22:37 +01:00
vmlal. s32 q6 , d19 , d28
2019-11-08 13:22:38 +01:00
add r2 , s p , #560
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
2019-11-08 13:22:38 +01:00
add r2 , s p , #480
2019-11-08 13:22:37 +01:00
vld1 . 8 { d22 - d23 } , [ r2 , : 1 2 8 ]
vmlal. s32 q5 , d19 , d7
vmlal. s32 q0 , d18 , d21
vmlal. s32 q0 , d19 , d29
vmlal. s32 q6 , d18 , d6
2019-11-08 13:22:38 +01:00
add r2 , s p , #496
2019-11-08 13:22:37 +01:00
vld1 . 8 { d6 - d7 } , [ r2 , : 1 2 8 ]
vmlal. s32 q6 , d19 , d21
2019-11-08 13:22:38 +01:00
add r2 , s p , #544
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
vmlal. s32 q0 , d30 , d8
2019-11-08 13:22:38 +01:00
add r2 , s p , #640
2019-11-08 13:22:37 +01:00
vld1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ]
vmlal. s32 q5 , d30 , d29
2019-11-08 13:22:38 +01:00
add r2 , s p , #576
2019-11-08 13:22:37 +01:00
vld1 . 8 { d24 - d25 } , [ r2 , : 1 2 8 ]
vmlal. s32 q1 , d30 , d28
vadd. i 6 4 q13 , q0 , q11
vadd. i 6 4 q14 , q5 , q11
vmlal. s32 q6 , d30 , d9
vshr. s64 q4 , q13 , #26
vshr. s64 q13 , q14 , #26
vadd. i 6 4 q7 , q7 , q4
vshl. i 6 4 q4 , q4 , #26
vadd. i 6 4 q14 , q7 , q3
vadd. i 6 4 q9 , q9 , q13
vshl. i 6 4 q13 , q13 , #26
vadd. i 6 4 q15 , q9 , q3
vsub. i 6 4 q0 , q0 , q4
vshr. s64 q4 , q14 , #25
vsub. i 6 4 q5 , q5 , q13
vshr. s64 q13 , q15 , #25
vadd. i 6 4 q6 , q6 , q4
vshl. i 6 4 q4 , q4 , #25
vadd. i 6 4 q14 , q6 , q11
vadd. i 6 4 q2 , q2 , q13
vsub. i 6 4 q4 , q7 , q4
vshr. s64 q7 , q14 , #26
vshl. i 6 4 q13 , q13 , #25
vadd. i 6 4 q14 , q2 , q11
vadd. i 6 4 q8 , q8 , q7
vshl. i 6 4 q7 , q7 , #26
vadd. i 6 4 q15 , q8 , q3
vsub. i 6 4 q9 , q9 , q13
vshr. s64 q13 , q14 , #26
vsub. i 6 4 q6 , q6 , q7
vshr. s64 q7 , q15 , #25
vadd. i 6 4 q10 , q10 , q13
vshl. i 6 4 q13 , q13 , #26
vadd. i 6 4 q14 , q10 , q3
vadd. i 6 4 q1 , q1 , q7
add r2 , r3 , #144
vshl. i 6 4 q7 , q7 , #25
add r4 , r3 , #96
vadd. i 6 4 q15 , q1 , q11
add r2 , r2 , #8
vsub. i 6 4 q2 , q2 , q13
add r4 , r4 , #8
vshr. s64 q13 , q14 , #25
vsub. i 6 4 q7 , q8 , q7
vshr. s64 q8 , q15 , #26
vadd. i 6 4 q14 , q13 , q13
vadd. i 6 4 q12 , q12 , q8
vtrn. 3 2 d12 , d14
vshl. i 6 4 q8 , q8 , #26
vtrn. 3 2 d13 , d15
vadd. i 6 4 q3 , q12 , q3
vadd. i 6 4 q0 , q0 , q14
vst1 . 8 d12 , [ r2 , : 6 4 ] !
vshl. i 6 4 q7 , q13 , #4
vst1 . 8 d13 , [ r4 , : 6 4 ] !
vsub. i 6 4 q1 , q1 , q8
vshr. s64 q3 , q3 , #25
vadd. i 6 4 q0 , q0 , q7
vadd. i 6 4 q5 , q5 , q3
vshl. i 6 4 q3 , q3 , #25
vadd. i 6 4 q6 , q5 , q11
vadd. i 6 4 q0 , q0 , q13
vshl. i 6 4 q7 , q13 , #25
vadd. i 6 4 q8 , q0 , q11
vsub. i 6 4 q3 , q12 , q3
vshr. s64 q6 , q6 , #26
vsub. i 6 4 q7 , q10 , q7
vtrn. 3 2 d2 , d6
vshr. s64 q8 , q8 , #26
vtrn. 3 2 d3 , d7
vadd. i 6 4 q3 , q9 , q6
vst1 . 8 d2 , [ r2 , : 6 4 ]
vshl. i 6 4 q6 , q6 , #26
vst1 . 8 d3 , [ r4 , : 6 4 ]
vadd. i 6 4 q1 , q4 , q8
vtrn. 3 2 d4 , d14
vshl. i 6 4 q4 , q8 , #26
vtrn. 3 2 d5 , d15
vsub. i 6 4 q5 , q5 , q6
add r2 , r2 , #16
vsub. i 6 4 q0 , q0 , q4
vst1 . 8 d4 , [ r2 , : 6 4 ]
add r4 , r4 , #16
vst1 . 8 d5 , [ r4 , : 6 4 ]
vtrn. 3 2 d10 , d6
vtrn. 3 2 d11 , d7
sub r2 , r2 , #8
sub r4 , r4 , #8
vtrn. 3 2 d0 , d2
vtrn. 3 2 d1 , d3
vst1 . 8 d10 , [ r2 , : 6 4 ]
vst1 . 8 d11 , [ r4 , : 6 4 ]
sub r2 , r2 , #24
sub r4 , r4 , #24
vst1 . 8 d0 , [ r2 , : 6 4 ]
vst1 . 8 d1 , [ r4 , : 6 4 ]
add r2 , r3 , #288
add r4 , r3 , #336
vld1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vsub. i 3 2 q0 , q0 , q1
vld1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d4 - d5 } , [ r4 , : 1 2 8 ] !
vsub. i 3 2 q1 , q1 , q2
add r5 , r3 , #240
vld1 . 8 { d4 } , [ r2 , : 6 4 ]
vld1 . 8 { d6 } , [ r4 , : 6 4 ]
vsub. i 3 2 q2 , q2 , q3
vst1 . 8 { d0 - d1 } , [ r5 , : 1 2 8 ] !
vst1 . 8 { d2 - d3 } , [ r5 , : 1 2 8 ] !
vst1 . 8 d4 , [ r5 , : 6 4 ]
add r2 , r3 , #144
add r4 , r3 , #96
add r5 , r3 , #144
add r6 , r3 , #192
vld1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vsub. i 3 2 q2 , q0 , q1
vadd. i 3 2 q0 , q0 , q1
vld1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d6 - d7 } , [ r4 , : 1 2 8 ] !
vsub. i 3 2 q4 , q1 , q3
vadd. i 3 2 q1 , q1 , q3
vld1 . 8 { d6 } , [ r2 , : 6 4 ]
vld1 . 8 { d10 } , [ r4 , : 6 4 ]
vsub. i 3 2 q6 , q3 , q5
vadd. i 3 2 q3 , q3 , q5
vst1 . 8 { d4 - d5 } , [ r5 , : 1 2 8 ] !
vst1 . 8 { d0 - d1 } , [ r6 , : 1 2 8 ] !
vst1 . 8 { d8 - d9 } , [ r5 , : 1 2 8 ] !
vst1 . 8 { d2 - d3 } , [ r6 , : 1 2 8 ] !
vst1 . 8 d12 , [ r5 , : 6 4 ]
vst1 . 8 d6 , [ r6 , : 6 4 ]
add r2 , r3 , #0
add r4 , r3 , #240
vld1 . 8 { d0 - d1 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d4 } , [ r4 , : 6 4 ]
add r4 , r3 , #336
vld1 . 8 { d6 - d7 } , [ r4 , : 1 2 8 ] !
vtrn. 3 2 q0 , q3
vld1 . 8 { d8 - d9 } , [ r4 , : 1 2 8 ] !
vshl. i 3 2 q5 , q0 , #4
vtrn. 3 2 q1 , q4
vshl. i 3 2 q6 , q3 , #4
vadd. i 3 2 q5 , q5 , q0
vadd. i 3 2 q6 , q6 , q3
vshl. i 3 2 q7 , q1 , #4
vld1 . 8 { d5 } , [ r4 , : 6 4 ]
vshl. i 3 2 q8 , q4 , #4
vtrn. 3 2 d4 , d5
vadd. i 3 2 q7 , q7 , q1
vadd. i 3 2 q8 , q8 , q4
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ] !
vshl. i 3 2 q10 , q2 , #4
vld1 . 8 { d22 - d23 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q10 , q10 , q2
vld1 . 8 { d24 } , [ r2 , : 6 4 ]
vadd. i 3 2 q5 , q5 , q0
add r2 , r3 , #288
vld1 . 8 { d26 - d27 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q6 , q6 , q3
vld1 . 8 { d28 - d29 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q8 , q8 , q4
vld1 . 8 { d25 } , [ r2 , : 6 4 ]
vadd. i 3 2 q10 , q10 , q2
vtrn. 3 2 q9 , q13
vadd. i 3 2 q7 , q7 , q1
vadd. i 3 2 q5 , q5 , q0
vtrn. 3 2 q11 , q14
vadd. i 3 2 q6 , q6 , q3
2019-11-08 13:22:38 +01:00
add r2 , s p , #528
2019-11-08 13:22:37 +01:00
vadd. i 3 2 q10 , q10 , q2
vtrn. 3 2 d24 , d25
2019-11-08 13:22:38 +01:00
vst1 . 8 { d12 - d13 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q6 , q13 , #1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q10 , q14 , #1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d12 - d13 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q15 , q12 , #1
vadd. i 3 2 q8 , q8 , q4
vext. 3 2 d10 , d31 , d30 , #0
vadd. i 3 2 q7 , q7 , q1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d16 - d17 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q8 , d18 , d5
vmlal. s32 q8 , d26 , d4
vmlal. s32 q8 , d19 , d9
vmlal. s32 q8 , d27 , d3
vmlal. s32 q8 , d22 , d8
vmlal. s32 q8 , d28 , d2
vmlal. s32 q8 , d23 , d7
vmlal. s32 q8 , d29 , d1
vmlal. s32 q8 , d24 , d6
vmlal. s32 q8 , d25 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d14 - d15 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q2 , d18 , d4
vmlal. s32 q2 , d12 , d9
vmlal. s32 q2 , d13 , d8
vmlal. s32 q2 , d19 , d3
vmlal. s32 q2 , d22 , d2
vmlal. s32 q2 , d23 , d1
vmlal. s32 q2 , d24 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q7 , d18 , d9
vmlal. s32 q7 , d26 , d3
vmlal. s32 q7 , d19 , d8
vmlal. s32 q7 , d27 , d2
vmlal. s32 q7 , d22 , d7
vmlal. s32 q7 , d28 , d1
vmlal. s32 q7 , d23 , d6
vmlal. s32 q7 , d29 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d10 - d11 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q5 , d18 , d3
vmlal. s32 q5 , d19 , d2
vmlal. s32 q5 , d22 , d1
vmlal. s32 q5 , d23 , d0
vmlal. s32 q5 , d12 , d8
2019-11-08 13:22:38 +01:00
vst1 . 8 { d16 - d17 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q4 , d18 , d8
vmlal. s32 q4 , d26 , d2
vmlal. s32 q4 , d19 , d7
vmlal. s32 q4 , d27 , d1
vmlal. s32 q4 , d22 , d6
vmlal. s32 q4 , d28 , d0
vmull. s32 q8 , d18 , d7
vmlal. s32 q8 , d26 , d1
vmlal. s32 q8 , d19 , d6
vmlal. s32 q8 , d27 , d0
2019-11-08 13:22:38 +01:00
add r2 , s p , #544
2019-11-08 13:22:37 +01:00
vld1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ]
vmlal. s32 q7 , d24 , d21
vmlal. s32 q7 , d25 , d20
vmlal. s32 q4 , d23 , d21
vmlal. s32 q4 , d29 , d20
vmlal. s32 q8 , d22 , d21
vmlal. s32 q8 , d28 , d20
vmlal. s32 q5 , d24 , d20
vst1 . 8 { d14 - d15 } , [ r2 , : 1 2 8 ]
vmull. s32 q7 , d18 , d6
vmlal. s32 q7 , d26 , d0
2019-11-08 13:22:38 +01:00
add r2 , s p , #624
2019-11-08 13:22:37 +01:00
vld1 . 8 { d30 - d31 } , [ r2 , : 1 2 8 ]
vmlal. s32 q2 , d30 , d21
vmlal. s32 q7 , d19 , d21
vmlal. s32 q7 , d27 , d20
2019-11-08 13:22:38 +01:00
add r2 , s p , #592
2019-11-08 13:22:37 +01:00
vld1 . 8 { d26 - d27 } , [ r2 , : 1 2 8 ]
vmlal. s32 q4 , d25 , d27
vmlal. s32 q8 , d29 , d27
vmlal. s32 q8 , d25 , d26
vmlal. s32 q7 , d28 , d27
vmlal. s32 q7 , d29 , d26
2019-11-08 13:22:38 +01:00
add r2 , s p , #576
2019-11-08 13:22:37 +01:00
vld1 . 8 { d28 - d29 } , [ r2 , : 1 2 8 ]
vmlal. s32 q4 , d24 , d29
vmlal. s32 q8 , d23 , d29
vmlal. s32 q8 , d24 , d28
vmlal. s32 q7 , d22 , d29
vmlal. s32 q7 , d23 , d28
vst1 . 8 { d8 - d9 } , [ r2 , : 1 2 8 ]
2019-11-08 13:22:38 +01:00
add r2 , s p , #528
2019-11-08 13:22:37 +01:00
vld1 . 8 { d8 - d9 } , [ r2 , : 1 2 8 ]
vmlal. s32 q7 , d24 , d9
vmlal. s32 q7 , d25 , d31
vmull. s32 q1 , d18 , d2
vmlal. s32 q1 , d19 , d1
vmlal. s32 q1 , d22 , d0
vmlal. s32 q1 , d24 , d27
vmlal. s32 q1 , d23 , d20
vmlal. s32 q1 , d12 , d7
vmlal. s32 q1 , d13 , d6
vmull. s32 q6 , d18 , d1
vmlal. s32 q6 , d19 , d0
vmlal. s32 q6 , d23 , d27
vmlal. s32 q6 , d22 , d20
vmlal. s32 q6 , d24 , d26
vmull. s32 q0 , d18 , d0
vmlal. s32 q0 , d22 , d27
vmlal. s32 q0 , d23 , d26
vmlal. s32 q0 , d24 , d31
vmlal. s32 q0 , d19 , d20
2019-11-08 13:22:38 +01:00
add r2 , s p , #608
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
vmlal. s32 q2 , d18 , d7
vmlal. s32 q5 , d18 , d6
vmlal. s32 q1 , d18 , d21
vmlal. s32 q0 , d18 , d28
vmlal. s32 q6 , d18 , d29
2019-11-08 13:22:38 +01:00
vmlal. s32 q2 , d19 , d6
vmlal. s32 q5 , d19 , d21
vmlal. s32 q1 , d19 , d29
vmlal. s32 q0 , d19 , d9
2019-11-08 13:22:37 +01:00
vmlal. s32 q6 , d19 , d28
2019-11-08 13:22:38 +01:00
add r2 , s p , #560
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
2019-11-08 13:22:38 +01:00
add r2 , s p , #480
2019-11-08 13:22:37 +01:00
vld1 . 8 { d22 - d23 } , [ r2 , : 1 2 8 ]
vmlal. s32 q5 , d19 , d7
vmlal. s32 q0 , d18 , d21
vmlal. s32 q0 , d19 , d29
vmlal. s32 q6 , d18 , d6
2019-11-08 13:22:38 +01:00
add r2 , s p , #496
2019-11-08 13:22:37 +01:00
vld1 . 8 { d6 - d7 } , [ r2 , : 1 2 8 ]
vmlal. s32 q6 , d19 , d21
2019-11-08 13:22:38 +01:00
add r2 , s p , #544
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
vmlal. s32 q0 , d30 , d8
2019-11-08 13:22:38 +01:00
add r2 , s p , #640
2019-11-08 13:22:37 +01:00
vld1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ]
vmlal. s32 q5 , d30 , d29
2019-11-08 13:22:38 +01:00
add r2 , s p , #576
2019-11-08 13:22:37 +01:00
vld1 . 8 { d24 - d25 } , [ r2 , : 1 2 8 ]
vmlal. s32 q1 , d30 , d28
vadd. i 6 4 q13 , q0 , q11
vadd. i 6 4 q14 , q5 , q11
vmlal. s32 q6 , d30 , d9
vshr. s64 q4 , q13 , #26
vshr. s64 q13 , q14 , #26
vadd. i 6 4 q7 , q7 , q4
vshl. i 6 4 q4 , q4 , #26
vadd. i 6 4 q14 , q7 , q3
vadd. i 6 4 q9 , q9 , q13
vshl. i 6 4 q13 , q13 , #26
vadd. i 6 4 q15 , q9 , q3
vsub. i 6 4 q0 , q0 , q4
vshr. s64 q4 , q14 , #25
vsub. i 6 4 q5 , q5 , q13
vshr. s64 q13 , q15 , #25
vadd. i 6 4 q6 , q6 , q4
vshl. i 6 4 q4 , q4 , #25
vadd. i 6 4 q14 , q6 , q11
vadd. i 6 4 q2 , q2 , q13
vsub. i 6 4 q4 , q7 , q4
vshr. s64 q7 , q14 , #26
vshl. i 6 4 q13 , q13 , #25
vadd. i 6 4 q14 , q2 , q11
vadd. i 6 4 q8 , q8 , q7
vshl. i 6 4 q7 , q7 , #26
vadd. i 6 4 q15 , q8 , q3
vsub. i 6 4 q9 , q9 , q13
vshr. s64 q13 , q14 , #26
vsub. i 6 4 q6 , q6 , q7
vshr. s64 q7 , q15 , #25
vadd. i 6 4 q10 , q10 , q13
vshl. i 6 4 q13 , q13 , #26
vadd. i 6 4 q14 , q10 , q3
vadd. i 6 4 q1 , q1 , q7
add r2 , r3 , #288
vshl. i 6 4 q7 , q7 , #25
add r4 , r3 , #96
vadd. i 6 4 q15 , q1 , q11
add r2 , r2 , #8
vsub. i 6 4 q2 , q2 , q13
add r4 , r4 , #8
vshr. s64 q13 , q14 , #25
vsub. i 6 4 q7 , q8 , q7
vshr. s64 q8 , q15 , #26
vadd. i 6 4 q14 , q13 , q13
vadd. i 6 4 q12 , q12 , q8
vtrn. 3 2 d12 , d14
vshl. i 6 4 q8 , q8 , #26
vtrn. 3 2 d13 , d15
vadd. i 6 4 q3 , q12 , q3
vadd. i 6 4 q0 , q0 , q14
vst1 . 8 d12 , [ r2 , : 6 4 ] !
vshl. i 6 4 q7 , q13 , #4
vst1 . 8 d13 , [ r4 , : 6 4 ] !
vsub. i 6 4 q1 , q1 , q8
vshr. s64 q3 , q3 , #25
vadd. i 6 4 q0 , q0 , q7
vadd. i 6 4 q5 , q5 , q3
vshl. i 6 4 q3 , q3 , #25
vadd. i 6 4 q6 , q5 , q11
vadd. i 6 4 q0 , q0 , q13
vshl. i 6 4 q7 , q13 , #25
vadd. i 6 4 q8 , q0 , q11
vsub. i 6 4 q3 , q12 , q3
vshr. s64 q6 , q6 , #26
vsub. i 6 4 q7 , q10 , q7
vtrn. 3 2 d2 , d6
vshr. s64 q8 , q8 , #26
vtrn. 3 2 d3 , d7
vadd. i 6 4 q3 , q9 , q6
vst1 . 8 d2 , [ r2 , : 6 4 ]
vshl. i 6 4 q6 , q6 , #26
vst1 . 8 d3 , [ r4 , : 6 4 ]
vadd. i 6 4 q1 , q4 , q8
vtrn. 3 2 d4 , d14
vshl. i 6 4 q4 , q8 , #26
vtrn. 3 2 d5 , d15
vsub. i 6 4 q5 , q5 , q6
add r2 , r2 , #16
vsub. i 6 4 q0 , q0 , q4
vst1 . 8 d4 , [ r2 , : 6 4 ]
add r4 , r4 , #16
vst1 . 8 d5 , [ r4 , : 6 4 ]
vtrn. 3 2 d10 , d6
vtrn. 3 2 d11 , d7
sub r2 , r2 , #8
sub r4 , r4 , #8
vtrn. 3 2 d0 , d2
vtrn. 3 2 d1 , d3
vst1 . 8 d10 , [ r2 , : 6 4 ]
vst1 . 8 d11 , [ r4 , : 6 4 ]
sub r2 , r2 , #24
sub r4 , r4 , #24
vst1 . 8 d0 , [ r2 , : 6 4 ]
vst1 . 8 d1 , [ r4 , : 6 4 ]
2019-11-08 13:22:38 +01:00
add r2 , s p , #512
2019-11-08 13:22:37 +01:00
add r4 , r3 , #144
add r5 , r3 , #192
vld1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ]
vld1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d4 - d5 } , [ r5 , : 1 2 8 ] !
vzip. i 3 2 q1 , q2
vld1 . 8 { d6 - d7 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d8 - d9 } , [ r5 , : 1 2 8 ] !
vshl. i 3 2 q5 , q1 , #1
vzip. i 3 2 q3 , q4
vshl. i 3 2 q6 , q2 , #1
vld1 . 8 { d14 } , [ r4 , : 6 4 ]
vshl. i 3 2 q8 , q3 , #1
vld1 . 8 { d15 } , [ r5 , : 6 4 ]
vshl. i 3 2 q9 , q4 , #1
vmul. i 3 2 d21 , d7 , d1
vtrn. 3 2 d14 , d15
vmul. i 3 2 q11 , q4 , q0
vmul. i 3 2 q0 , q7 , q0
vmull. s32 q12 , d2 , d2
vmlal. s32 q12 , d11 , d1
vmlal. s32 q12 , d12 , d0
vmlal. s32 q12 , d13 , d23
vmlal. s32 q12 , d16 , d22
vmlal. s32 q12 , d7 , d21
vmull. s32 q10 , d2 , d11
vmlal. s32 q10 , d4 , d1
vmlal. s32 q10 , d13 , d0
vmlal. s32 q10 , d6 , d23
vmlal. s32 q10 , d17 , d22
vmull. s32 q13 , d10 , d4
vmlal. s32 q13 , d11 , d3
vmlal. s32 q13 , d13 , d1
vmlal. s32 q13 , d16 , d0
vmlal. s32 q13 , d17 , d23
vmlal. s32 q13 , d8 , d22
vmull. s32 q1 , d10 , d5
vmlal. s32 q1 , d11 , d4
vmlal. s32 q1 , d6 , d1
vmlal. s32 q1 , d17 , d0
vmlal. s32 q1 , d8 , d23
vmull. s32 q14 , d10 , d6
vmlal. s32 q14 , d11 , d13
vmlal. s32 q14 , d4 , d4
vmlal. s32 q14 , d17 , d1
vmlal. s32 q14 , d18 , d0
vmlal. s32 q14 , d9 , d23
vmull. s32 q11 , d10 , d7
vmlal. s32 q11 , d11 , d6
vmlal. s32 q11 , d12 , d5
vmlal. s32 q11 , d8 , d1
vmlal. s32 q11 , d19 , d0
vmull. s32 q15 , d10 , d8
vmlal. s32 q15 , d11 , d17
vmlal. s32 q15 , d12 , d6
vmlal. s32 q15 , d13 , d5
vmlal. s32 q15 , d19 , d1
vmlal. s32 q15 , d14 , d0
vmull. s32 q2 , d10 , d9
vmlal. s32 q2 , d11 , d8
vmlal. s32 q2 , d12 , d7
vmlal. s32 q2 , d13 , d6
vmlal. s32 q2 , d14 , d1
vmull. s32 q0 , d15 , d1
vmlal. s32 q0 , d10 , d14
vmlal. s32 q0 , d11 , d19
vmlal. s32 q0 , d12 , d8
vmlal. s32 q0 , d13 , d17
vmlal. s32 q0 , d6 , d6
2019-11-08 13:22:38 +01:00
add r2 , s p , #480
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q3 , d16 , d7
vmlal. s32 q3 , d10 , d15
vmlal. s32 q3 , d11 , d14
vmlal. s32 q3 , d12 , d9
vmlal. s32 q3 , d13 , d8
vld1 . 8 { d8 - d9 } , [ r2 , : 1 2 8 ]
vadd. i 6 4 q5 , q12 , q9
vadd. i 6 4 q6 , q15 , q9
vshr. s64 q5 , q5 , #26
vshr. s64 q6 , q6 , #26
vadd. i 6 4 q7 , q10 , q5
vshl. i 6 4 q5 , q5 , #26
vadd. i 6 4 q8 , q7 , q4
vadd. i 6 4 q2 , q2 , q6
vshl. i 6 4 q6 , q6 , #26
vadd. i 6 4 q10 , q2 , q4
vsub. i 6 4 q5 , q12 , q5
vshr. s64 q8 , q8 , #25
vsub. i 6 4 q6 , q15 , q6
vshr. s64 q10 , q10 , #25
vadd. i 6 4 q12 , q13 , q8
vshl. i 6 4 q8 , q8 , #25
vadd. i 6 4 q13 , q12 , q9
vadd. i 6 4 q0 , q0 , q10
vsub. i 6 4 q7 , q7 , q8
vshr. s64 q8 , q13 , #26
vshl. i 6 4 q10 , q10 , #25
vadd. i 6 4 q13 , q0 , q9
vadd. i 6 4 q1 , q1 , q8
vshl. i 6 4 q8 , q8 , #26
vadd. i 6 4 q15 , q1 , q4
vsub. i 6 4 q2 , q2 , q10
vshr. s64 q10 , q13 , #26
vsub. i 6 4 q8 , q12 , q8
vshr. s64 q12 , q15 , #25
vadd. i 6 4 q3 , q3 , q10
vshl. i 6 4 q10 , q10 , #26
vadd. i 6 4 q13 , q3 , q4
vadd. i 6 4 q14 , q14 , q12
add r2 , r3 , #144
vshl. i 6 4 q12 , q12 , #25
add r4 , r3 , #192
vadd. i 6 4 q15 , q14 , q9
add r2 , r2 , #8
vsub. i 6 4 q0 , q0 , q10
add r4 , r4 , #8
vshr. s64 q10 , q13 , #25
vsub. i 6 4 q1 , q1 , q12
vshr. s64 q12 , q15 , #26
vadd. i 6 4 q13 , q10 , q10
vadd. i 6 4 q11 , q11 , q12
vtrn. 3 2 d16 , d2
vshl. i 6 4 q12 , q12 , #26
vtrn. 3 2 d17 , d3
vadd. i 6 4 q1 , q11 , q4
vadd. i 6 4 q4 , q5 , q13
vst1 . 8 d16 , [ r2 , : 6 4 ] !
vshl. i 6 4 q5 , q10 , #4
vst1 . 8 d17 , [ r4 , : 6 4 ] !
vsub. i 6 4 q8 , q14 , q12
vshr. s64 q1 , q1 , #25
vadd. i 6 4 q4 , q4 , q5
vadd. i 6 4 q5 , q6 , q1
vshl. i 6 4 q1 , q1 , #25
vadd. i 6 4 q6 , q5 , q9
vadd. i 6 4 q4 , q4 , q10
vshl. i 6 4 q10 , q10 , #25
vadd. i 6 4 q9 , q4 , q9
vsub. i 6 4 q1 , q11 , q1
vshr. s64 q6 , q6 , #26
vsub. i 6 4 q3 , q3 , q10
vtrn. 3 2 d16 , d2
vshr. s64 q9 , q9 , #26
vtrn. 3 2 d17 , d3
vadd. i 6 4 q1 , q2 , q6
vst1 . 8 d16 , [ r2 , : 6 4 ]
vshl. i 6 4 q2 , q6 , #26
vst1 . 8 d17 , [ r4 , : 6 4 ]
vadd. i 6 4 q6 , q7 , q9
vtrn. 3 2 d0 , d6
vshl. i 6 4 q7 , q9 , #26
vtrn. 3 2 d1 , d7
vsub. i 6 4 q2 , q5 , q2
add r2 , r2 , #16
vsub. i 6 4 q3 , q4 , q7
vst1 . 8 d0 , [ r2 , : 6 4 ]
add r4 , r4 , #16
vst1 . 8 d1 , [ r4 , : 6 4 ]
vtrn. 3 2 d4 , d2
vtrn. 3 2 d5 , d3
sub r2 , r2 , #8
sub r4 , r4 , #8
vtrn. 3 2 d6 , d12
vtrn. 3 2 d7 , d13
vst1 . 8 d4 , [ r2 , : 6 4 ]
vst1 . 8 d5 , [ r4 , : 6 4 ]
sub r2 , r2 , #24
sub r4 , r4 , #24
vst1 . 8 d6 , [ r2 , : 6 4 ]
vst1 . 8 d7 , [ r4 , : 6 4 ]
add r2 , r3 , #336
add r4 , r3 , #288
vld1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vadd. i 3 2 q0 , q0 , q1
vld1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d4 - d5 } , [ r4 , : 1 2 8 ] !
vadd. i 3 2 q1 , q1 , q2
add r5 , r3 , #288
vld1 . 8 { d4 } , [ r2 , : 6 4 ]
vld1 . 8 { d6 } , [ r4 , : 6 4 ]
vadd. i 3 2 q2 , q2 , q3
vst1 . 8 { d0 - d1 } , [ r5 , : 1 2 8 ] !
vst1 . 8 { d2 - d3 } , [ r5 , : 1 2 8 ] !
vst1 . 8 d4 , [ r5 , : 6 4 ]
add r2 , r3 , #48
add r4 , r3 , #144
vld1 . 8 { d0 - d1 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vld1 . 8 { d4 } , [ r4 , : 6 4 ]
add r4 , r3 , #288
vld1 . 8 { d6 - d7 } , [ r4 , : 1 2 8 ] !
vtrn. 3 2 q0 , q3
vld1 . 8 { d8 - d9 } , [ r4 , : 1 2 8 ] !
vshl. i 3 2 q5 , q0 , #4
vtrn. 3 2 q1 , q4
vshl. i 3 2 q6 , q3 , #4
vadd. i 3 2 q5 , q5 , q0
vadd. i 3 2 q6 , q6 , q3
vshl. i 3 2 q7 , q1 , #4
vld1 . 8 { d5 } , [ r4 , : 6 4 ]
vshl. i 3 2 q8 , q4 , #4
vtrn. 3 2 d4 , d5
vadd. i 3 2 q7 , q7 , q1
vadd. i 3 2 q8 , q8 , q4
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ] !
vshl. i 3 2 q10 , q2 , #4
vld1 . 8 { d22 - d23 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q10 , q10 , q2
vld1 . 8 { d24 } , [ r2 , : 6 4 ]
vadd. i 3 2 q5 , q5 , q0
add r2 , r3 , #240
vld1 . 8 { d26 - d27 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q6 , q6 , q3
vld1 . 8 { d28 - d29 } , [ r2 , : 1 2 8 ] !
vadd. i 3 2 q8 , q8 , q4
vld1 . 8 { d25 } , [ r2 , : 6 4 ]
vadd. i 3 2 q10 , q10 , q2
vtrn. 3 2 q9 , q13
vadd. i 3 2 q7 , q7 , q1
vadd. i 3 2 q5 , q5 , q0
vtrn. 3 2 q11 , q14
vadd. i 3 2 q6 , q6 , q3
2019-11-08 13:22:38 +01:00
add r2 , s p , #528
2019-11-08 13:22:37 +01:00
vadd. i 3 2 q10 , q10 , q2
vtrn. 3 2 d24 , d25
2019-11-08 13:22:38 +01:00
vst1 . 8 { d12 - d13 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q6 , q13 , #1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q10 , q14 , #1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d12 - d13 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vshl. i 3 2 q15 , q12 , #1
vadd. i 3 2 q8 , q8 , q4
vext. 3 2 d10 , d31 , d30 , #0
vadd. i 3 2 q7 , q7 , q1
2019-11-08 13:22:38 +01:00
vst1 . 8 { d16 - d17 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q8 , d18 , d5
vmlal. s32 q8 , d26 , d4
vmlal. s32 q8 , d19 , d9
vmlal. s32 q8 , d27 , d3
vmlal. s32 q8 , d22 , d8
vmlal. s32 q8 , d28 , d2
vmlal. s32 q8 , d23 , d7
vmlal. s32 q8 , d29 , d1
vmlal. s32 q8 , d24 , d6
vmlal. s32 q8 , d25 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d14 - d15 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q2 , d18 , d4
vmlal. s32 q2 , d12 , d9
vmlal. s32 q2 , d13 , d8
vmlal. s32 q2 , d19 , d3
vmlal. s32 q2 , d22 , d2
vmlal. s32 q2 , d23 , d1
vmlal. s32 q2 , d24 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q7 , d18 , d9
vmlal. s32 q7 , d26 , d3
vmlal. s32 q7 , d19 , d8
vmlal. s32 q7 , d27 , d2
vmlal. s32 q7 , d22 , d7
vmlal. s32 q7 , d28 , d1
vmlal. s32 q7 , d23 , d6
vmlal. s32 q7 , d29 , d0
2019-11-08 13:22:38 +01:00
vst1 . 8 { d10 - d11 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q5 , d18 , d3
vmlal. s32 q5 , d19 , d2
vmlal. s32 q5 , d22 , d1
vmlal. s32 q5 , d23 , d0
vmlal. s32 q5 , d12 , d8
2019-11-08 13:22:38 +01:00
vst1 . 8 { d16 - d17 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:37 +01:00
vmull. s32 q4 , d18 , d8
vmlal. s32 q4 , d26 , d2
vmlal. s32 q4 , d19 , d7
vmlal. s32 q4 , d27 , d1
vmlal. s32 q4 , d22 , d6
vmlal. s32 q4 , d28 , d0
vmull. s32 q8 , d18 , d7
vmlal. s32 q8 , d26 , d1
vmlal. s32 q8 , d19 , d6
vmlal. s32 q8 , d27 , d0
2019-11-08 13:22:38 +01:00
add r2 , s p , #544
2019-11-08 13:22:37 +01:00
vld1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ]
vmlal. s32 q7 , d24 , d21
vmlal. s32 q7 , d25 , d20
vmlal. s32 q4 , d23 , d21
vmlal. s32 q4 , d29 , d20
vmlal. s32 q8 , d22 , d21
vmlal. s32 q8 , d28 , d20
vmlal. s32 q5 , d24 , d20
vst1 . 8 { d14 - d15 } , [ r2 , : 1 2 8 ]
vmull. s32 q7 , d18 , d6
vmlal. s32 q7 , d26 , d0
2019-11-08 13:22:38 +01:00
add r2 , s p , #624
2019-11-08 13:22:37 +01:00
vld1 . 8 { d30 - d31 } , [ r2 , : 1 2 8 ]
vmlal. s32 q2 , d30 , d21
vmlal. s32 q7 , d19 , d21
vmlal. s32 q7 , d27 , d20
2019-11-08 13:22:38 +01:00
add r2 , s p , #592
2019-11-08 13:22:37 +01:00
vld1 . 8 { d26 - d27 } , [ r2 , : 1 2 8 ]
vmlal. s32 q4 , d25 , d27
vmlal. s32 q8 , d29 , d27
vmlal. s32 q8 , d25 , d26
vmlal. s32 q7 , d28 , d27
vmlal. s32 q7 , d29 , d26
2019-11-08 13:22:38 +01:00
add r2 , s p , #576
2019-11-08 13:22:37 +01:00
vld1 . 8 { d28 - d29 } , [ r2 , : 1 2 8 ]
vmlal. s32 q4 , d24 , d29
vmlal. s32 q8 , d23 , d29
vmlal. s32 q8 , d24 , d28
vmlal. s32 q7 , d22 , d29
vmlal. s32 q7 , d23 , d28
vst1 . 8 { d8 - d9 } , [ r2 , : 1 2 8 ]
2019-11-08 13:22:38 +01:00
add r2 , s p , #528
2019-11-08 13:22:37 +01:00
vld1 . 8 { d8 - d9 } , [ r2 , : 1 2 8 ]
vmlal. s32 q7 , d24 , d9
vmlal. s32 q7 , d25 , d31
vmull. s32 q1 , d18 , d2
vmlal. s32 q1 , d19 , d1
vmlal. s32 q1 , d22 , d0
vmlal. s32 q1 , d24 , d27
vmlal. s32 q1 , d23 , d20
vmlal. s32 q1 , d12 , d7
vmlal. s32 q1 , d13 , d6
vmull. s32 q6 , d18 , d1
vmlal. s32 q6 , d19 , d0
vmlal. s32 q6 , d23 , d27
vmlal. s32 q6 , d22 , d20
vmlal. s32 q6 , d24 , d26
vmull. s32 q0 , d18 , d0
vmlal. s32 q0 , d22 , d27
vmlal. s32 q0 , d23 , d26
vmlal. s32 q0 , d24 , d31
vmlal. s32 q0 , d19 , d20
2019-11-08 13:22:38 +01:00
add r2 , s p , #608
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
vmlal. s32 q2 , d18 , d7
vmlal. s32 q5 , d18 , d6
vmlal. s32 q1 , d18 , d21
vmlal. s32 q0 , d18 , d28
vmlal. s32 q6 , d18 , d29
2019-11-08 13:22:38 +01:00
vmlal. s32 q2 , d19 , d6
vmlal. s32 q5 , d19 , d21
vmlal. s32 q1 , d19 , d29
vmlal. s32 q0 , d19 , d9
2019-11-08 13:22:37 +01:00
vmlal. s32 q6 , d19 , d28
2019-11-08 13:22:38 +01:00
add r2 , s p , #560
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
2019-11-08 13:22:38 +01:00
add r2 , s p , #480
2019-11-08 13:22:37 +01:00
vld1 . 8 { d22 - d23 } , [ r2 , : 1 2 8 ]
vmlal. s32 q5 , d19 , d7
vmlal. s32 q0 , d18 , d21
vmlal. s32 q0 , d19 , d29
vmlal. s32 q6 , d18 , d6
2019-11-08 13:22:38 +01:00
add r2 , s p , #496
2019-11-08 13:22:37 +01:00
vld1 . 8 { d6 - d7 } , [ r2 , : 1 2 8 ]
vmlal. s32 q6 , d19 , d21
2019-11-08 13:22:38 +01:00
add r2 , s p , #544
2019-11-08 13:22:37 +01:00
vld1 . 8 { d18 - d19 } , [ r2 , : 1 2 8 ]
vmlal. s32 q0 , d30 , d8
2019-11-08 13:22:38 +01:00
add r2 , s p , #640
2019-11-08 13:22:37 +01:00
vld1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ]
vmlal. s32 q5 , d30 , d29
2019-11-08 13:22:38 +01:00
add r2 , s p , #576
2019-11-08 13:22:37 +01:00
vld1 . 8 { d24 - d25 } , [ r2 , : 1 2 8 ]
vmlal. s32 q1 , d30 , d28
vadd. i 6 4 q13 , q0 , q11
vadd. i 6 4 q14 , q5 , q11
vmlal. s32 q6 , d30 , d9
vshr. s64 q4 , q13 , #26
vshr. s64 q13 , q14 , #26
vadd. i 6 4 q7 , q7 , q4
vshl. i 6 4 q4 , q4 , #26
vadd. i 6 4 q14 , q7 , q3
vadd. i 6 4 q9 , q9 , q13
vshl. i 6 4 q13 , q13 , #26
vadd. i 6 4 q15 , q9 , q3
vsub. i 6 4 q0 , q0 , q4
vshr. s64 q4 , q14 , #25
vsub. i 6 4 q5 , q5 , q13
vshr. s64 q13 , q15 , #25
vadd. i 6 4 q6 , q6 , q4
vshl. i 6 4 q4 , q4 , #25
vadd. i 6 4 q14 , q6 , q11
vadd. i 6 4 q2 , q2 , q13
vsub. i 6 4 q4 , q7 , q4
vshr. s64 q7 , q14 , #26
vshl. i 6 4 q13 , q13 , #25
vadd. i 6 4 q14 , q2 , q11
vadd. i 6 4 q8 , q8 , q7
vshl. i 6 4 q7 , q7 , #26
vadd. i 6 4 q15 , q8 , q3
vsub. i 6 4 q9 , q9 , q13
vshr. s64 q13 , q14 , #26
vsub. i 6 4 q6 , q6 , q7
vshr. s64 q7 , q15 , #25
vadd. i 6 4 q10 , q10 , q13
vshl. i 6 4 q13 , q13 , #26
vadd. i 6 4 q14 , q10 , q3
vadd. i 6 4 q1 , q1 , q7
add r2 , r3 , #240
vshl. i 6 4 q7 , q7 , #25
add r4 , r3 , #144
vadd. i 6 4 q15 , q1 , q11
add r2 , r2 , #8
vsub. i 6 4 q2 , q2 , q13
add r4 , r4 , #8
vshr. s64 q13 , q14 , #25
vsub. i 6 4 q7 , q8 , q7
vshr. s64 q8 , q15 , #26
vadd. i 6 4 q14 , q13 , q13
vadd. i 6 4 q12 , q12 , q8
vtrn. 3 2 d12 , d14
vshl. i 6 4 q8 , q8 , #26
vtrn. 3 2 d13 , d15
vadd. i 6 4 q3 , q12 , q3
vadd. i 6 4 q0 , q0 , q14
vst1 . 8 d12 , [ r2 , : 6 4 ] !
vshl. i 6 4 q7 , q13 , #4
vst1 . 8 d13 , [ r4 , : 6 4 ] !
vsub. i 6 4 q1 , q1 , q8
vshr. s64 q3 , q3 , #25
vadd. i 6 4 q0 , q0 , q7
vadd. i 6 4 q5 , q5 , q3
vshl. i 6 4 q3 , q3 , #25
vadd. i 6 4 q6 , q5 , q11
vadd. i 6 4 q0 , q0 , q13
vshl. i 6 4 q7 , q13 , #25
vadd. i 6 4 q8 , q0 , q11
vsub. i 6 4 q3 , q12 , q3
vshr. s64 q6 , q6 , #26
vsub. i 6 4 q7 , q10 , q7
vtrn. 3 2 d2 , d6
vshr. s64 q8 , q8 , #26
vtrn. 3 2 d3 , d7
vadd. i 6 4 q3 , q9 , q6
vst1 . 8 d2 , [ r2 , : 6 4 ]
vshl. i 6 4 q6 , q6 , #26
vst1 . 8 d3 , [ r4 , : 6 4 ]
vadd. i 6 4 q1 , q4 , q8
vtrn. 3 2 d4 , d14
vshl. i 6 4 q4 , q8 , #26
vtrn. 3 2 d5 , d15
vsub. i 6 4 q5 , q5 , q6
add r2 , r2 , #16
vsub. i 6 4 q0 , q0 , q4
vst1 . 8 d4 , [ r2 , : 6 4 ]
add r4 , r4 , #16
vst1 . 8 d5 , [ r4 , : 6 4 ]
vtrn. 3 2 d10 , d6
vtrn. 3 2 d11 , d7
sub r2 , r2 , #8
sub r4 , r4 , #8
vtrn. 3 2 d0 , d2
vtrn. 3 2 d1 , d3
vst1 . 8 d10 , [ r2 , : 6 4 ]
vst1 . 8 d11 , [ r4 , : 6 4 ]
sub r2 , r2 , #24
sub r4 , r4 , #24
vst1 . 8 d0 , [ r2 , : 6 4 ]
vst1 . 8 d1 , [ r4 , : 6 4 ]
2019-11-08 13:22:38 +01:00
ldr r2 , [ s p , #456 ]
ldr r4 , [ s p , #460 ]
2019-11-08 13:22:37 +01:00
subs r5 , r2 , #1
2019-11-08 13:22:38 +01:00
bge . L m a i n l o o p
2019-11-08 13:22:37 +01:00
add r1 , r3 , #144
add r2 , r3 , #336
vld1 . 8 { d0 - d1 } , [ r1 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r1 , : 1 2 8 ] !
vld1 . 8 { d4 } , [ r1 , : 6 4 ]
vst1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vst1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vst1 . 8 d4 , [ r2 , : 6 4 ]
2019-11-08 13:22:38 +01:00
movw r1 , #0
.Linvertloop :
2019-11-08 13:22:37 +01:00
add r2 , r3 , #144
2019-11-08 13:22:38 +01:00
movw r4 , #0
movw r5 , #2
2019-11-08 13:22:37 +01:00
cmp r1 , #1
2019-11-08 13:22:38 +01:00
moveq r5 , #1
2019-11-08 13:22:37 +01:00
addeq r2 , r3 , #336
addeq r4 , r3 , #48
cmp r1 , #2
2019-11-08 13:22:38 +01:00
moveq r5 , #1
2019-11-08 13:22:37 +01:00
addeq r2 , r3 , #48
cmp r1 , #3
2019-11-08 13:22:38 +01:00
moveq r5 , #5
2019-11-08 13:22:37 +01:00
addeq r4 , r3 , #336
cmp r1 , #4
2019-11-08 13:22:38 +01:00
moveq r5 , #10
2019-11-08 13:22:37 +01:00
cmp r1 , #5
2019-11-08 13:22:38 +01:00
moveq r5 , #20
2019-11-08 13:22:37 +01:00
cmp r1 , #6
2019-11-08 13:22:38 +01:00
moveq r5 , #10
2019-11-08 13:22:37 +01:00
addeq r2 , r3 , #336
addeq r4 , r3 , #336
cmp r1 , #7
2019-11-08 13:22:38 +01:00
moveq r5 , #50
2019-11-08 13:22:37 +01:00
cmp r1 , #8
2019-11-08 13:22:38 +01:00
moveq r5 , #100
2019-11-08 13:22:37 +01:00
cmp r1 , #9
2019-11-08 13:22:38 +01:00
moveq r5 , #50
2019-11-08 13:22:37 +01:00
addeq r2 , r3 , #336
cmp r1 , #10
2019-11-08 13:22:38 +01:00
moveq r5 , #5
2019-11-08 13:22:37 +01:00
addeq r2 , r3 , #48
cmp r1 , #11
2019-11-08 13:22:38 +01:00
moveq r5 , #0
2019-11-08 13:22:37 +01:00
addeq r2 , r3 , #96
add r6 , r3 , #144
add r7 , r3 , #288
vld1 . 8 { d0 - d1 } , [ r6 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r6 , : 1 2 8 ] !
vld1 . 8 { d4 } , [ r6 , : 6 4 ]
vst1 . 8 { d0 - d1 } , [ r7 , : 1 2 8 ] !
vst1 . 8 { d2 - d3 } , [ r7 , : 1 2 8 ] !
vst1 . 8 d4 , [ r7 , : 6 4 ]
cmp r5 , #0
2019-11-08 13:22:38 +01:00
beq . L s k i p s q u a r i n g l o o p
.Lsquaringloop :
2019-11-08 13:22:37 +01:00
add r6 , r3 , #288
add r7 , r3 , #288
add r8 , r3 , #288
vmov. i 3 2 q0 , #19
vmov. i 3 2 q1 , #0
vmov. i 3 2 q2 , #1
vzip. i 3 2 q1 , q2
vld1 . 8 { d4 - d5 } , [ r7 , : 1 2 8 ] !
vld1 . 8 { d6 - d7 } , [ r7 , : 1 2 8 ] !
vld1 . 8 { d9 } , [ r7 , : 6 4 ]
vld1 . 8 { d10 - d11 } , [ r6 , : 1 2 8 ] !
2019-11-08 13:22:38 +01:00
add r7 , s p , #384
2019-11-08 13:22:37 +01:00
vld1 . 8 { d12 - d13 } , [ r6 , : 1 2 8 ] !
vmul. i 3 2 q7 , q2 , q0
vld1 . 8 { d8 } , [ r6 , : 6 4 ]
vext. 3 2 d17 , d11 , d10 , #1
vmul. i 3 2 q9 , q3 , q0
vext. 3 2 d16 , d10 , d8 , #1
vshl. u 3 2 q10 , q5 , q1
vext. 3 2 d22 , d14 , d4 , #1
vext. 3 2 d24 , d18 , d6 , #1
vshl. u 3 2 q13 , q6 , q1
vshl. u 3 2 d28 , d8 , d2
vrev6 4 . i 3 2 d22 , d22
vmul. i 3 2 d1 , d9 , d1
vrev6 4 . i 3 2 d24 , d24
vext. 3 2 d29 , d8 , d13 , #1
vext. 3 2 d0 , d1 , d9 , #1
vrev6 4 . i 3 2 d0 , d0
vext. 3 2 d2 , d9 , d1 , #1
vext. 3 2 d23 , d15 , d5 , #1
vmull. s32 q4 , d20 , d4
vrev6 4 . i 3 2 d23 , d23
vmlal. s32 q4 , d21 , d1
vrev6 4 . i 3 2 d2 , d2
vmlal. s32 q4 , d26 , d19
vext. 3 2 d3 , d5 , d15 , #1
vmlal. s32 q4 , d27 , d18
vrev6 4 . i 3 2 d3 , d3
vmlal. s32 q4 , d28 , d15
vext. 3 2 d14 , d12 , d11 , #1
vmull. s32 q5 , d16 , d23
vext. 3 2 d15 , d13 , d12 , #1
vmlal. s32 q5 , d17 , d4
vst1 . 8 d8 , [ r7 , : 6 4 ] !
vmlal. s32 q5 , d14 , d1
vext. 3 2 d12 , d9 , d8 , #0
vmlal. s32 q5 , d15 , d19
vmov. i 6 4 d13 , #0
vmlal. s32 q5 , d29 , d18
vext. 3 2 d25 , d19 , d7 , #1
vmlal. s32 q6 , d20 , d5
vrev6 4 . i 3 2 d25 , d25
vmlal. s32 q6 , d21 , d4
vst1 . 8 d11 , [ r7 , : 6 4 ] !
vmlal. s32 q6 , d26 , d1
vext. 3 2 d9 , d10 , d10 , #0
vmlal. s32 q6 , d27 , d19
vmov. i 6 4 d8 , #0
vmlal. s32 q6 , d28 , d18
vmlal. s32 q4 , d16 , d24
vmlal. s32 q4 , d17 , d5
vmlal. s32 q4 , d14 , d4
vst1 . 8 d12 , [ r7 , : 6 4 ] !
vmlal. s32 q4 , d15 , d1
vext. 3 2 d10 , d13 , d12 , #0
vmlal. s32 q4 , d29 , d19
vmov. i 6 4 d11 , #0
vmlal. s32 q5 , d20 , d6
vmlal. s32 q5 , d21 , d5
vmlal. s32 q5 , d26 , d4
vext. 3 2 d13 , d8 , d8 , #0
vmlal. s32 q5 , d27 , d1
vmov. i 6 4 d12 , #0
vmlal. s32 q5 , d28 , d19
vst1 . 8 d9 , [ r7 , : 6 4 ] !
vmlal. s32 q6 , d16 , d25
vmlal. s32 q6 , d17 , d6
vst1 . 8 d10 , [ r7 , : 6 4 ]
vmlal. s32 q6 , d14 , d5
vext. 3 2 d8 , d11 , d10 , #0
vmlal. s32 q6 , d15 , d4
vmov. i 6 4 d9 , #0
vmlal. s32 q6 , d29 , d1
vmlal. s32 q4 , d20 , d7
vmlal. s32 q4 , d21 , d6
vmlal. s32 q4 , d26 , d5
vext. 3 2 d11 , d12 , d12 , #0
vmlal. s32 q4 , d27 , d4
vmov. i 6 4 d10 , #0
vmlal. s32 q4 , d28 , d1
vmlal. s32 q5 , d16 , d0
sub r6 , r7 , #32
vmlal. s32 q5 , d17 , d7
vmlal. s32 q5 , d14 , d6
vext. 3 2 d30 , d9 , d8 , #0
vmlal. s32 q5 , d15 , d5
vld1 . 8 { d31 } , [ r6 , : 6 4 ] !
vmlal. s32 q5 , d29 , d4
vmlal. s32 q15 , d20 , d0
vext. 3 2 d0 , d6 , d18 , #1
vmlal. s32 q15 , d21 , d25
vrev6 4 . i 3 2 d0 , d0
vmlal. s32 q15 , d26 , d24
vext. 3 2 d1 , d7 , d19 , #1
vext. 3 2 d7 , d10 , d10 , #0
vmlal. s32 q15 , d27 , d23
vrev6 4 . i 3 2 d1 , d1
vld1 . 8 { d6 } , [ r6 , : 6 4 ]
vmlal. s32 q15 , d28 , d22
vmlal. s32 q3 , d16 , d4
add r6 , r6 , #24
vmlal. s32 q3 , d17 , d2
vext. 3 2 d4 , d31 , d30 , #0
vmov d17 , d11
vmlal. s32 q3 , d14 , d1
vext. 3 2 d11 , d13 , d13 , #0
vext. 3 2 d13 , d30 , d30 , #0
vmlal. s32 q3 , d15 , d0
vext. 3 2 d1 , d8 , d8 , #0
vmlal. s32 q3 , d29 , d3
vld1 . 8 { d5 } , [ r6 , : 6 4 ]
sub r6 , r6 , #16
vext. 3 2 d10 , d6 , d6 , #0
vmov. i 3 2 q1 , #0xffffffff
vshl. i 6 4 q4 , q1 , #25
2019-11-08 13:22:38 +01:00
add r7 , s p , #480
2019-11-08 13:22:37 +01:00
vld1 . 8 { d14 - d15 } , [ r7 , : 1 2 8 ]
vadd. i 6 4 q9 , q2 , q7
vshl. i 6 4 q1 , q1 , #26
vshr. s64 q10 , q9 , #26
vld1 . 8 { d0 } , [ r6 , : 6 4 ] !
vadd. i 6 4 q5 , q5 , q10
vand q9 , q9 , q1
vld1 . 8 { d16 } , [ r6 , : 6 4 ] !
2019-11-08 13:22:38 +01:00
add r6 , s p , #496
2019-11-08 13:22:37 +01:00
vld1 . 8 { d20 - d21 } , [ r6 , : 1 2 8 ]
vadd. i 6 4 q11 , q5 , q10
vsub. i 6 4 q2 , q2 , q9
vshr. s64 q9 , q11 , #25
vext. 3 2 d12 , d5 , d4 , #0
vand q11 , q11 , q4
vadd. i 6 4 q0 , q0 , q9
vmov d19 , d7
vadd. i 6 4 q3 , q0 , q7
vsub. i 6 4 q5 , q5 , q11
vshr. s64 q11 , q3 , #26
vext. 3 2 d18 , d11 , d10 , #0
vand q3 , q3 , q1
vadd. i 6 4 q8 , q8 , q11
vadd. i 6 4 q11 , q8 , q10
vsub. i 6 4 q0 , q0 , q3
vshr. s64 q3 , q11 , #25
vand q11 , q11 , q4
vadd. i 6 4 q3 , q6 , q3
vadd. i 6 4 q6 , q3 , q7
vsub. i 6 4 q8 , q8 , q11
vshr. s64 q11 , q6 , #26
vand q6 , q6 , q1
vadd. i 6 4 q9 , q9 , q11
vadd. i 6 4 d25 , d19 , d21
vsub. i 6 4 q3 , q3 , q6
vshr. s64 d23 , d25 , #25
vand q4 , q12 , q4
vadd. i 6 4 d21 , d23 , d23
vshl. i 6 4 d25 , d23 , #4
vadd. i 6 4 d21 , d21 , d23
vadd. i 6 4 d25 , d25 , d21
vadd. i 6 4 d4 , d4 , d25
vzip. i 3 2 q0 , q8
vadd. i 6 4 d12 , d4 , d14
add r6 , r8 , #8
vst1 . 8 d0 , [ r6 , : 6 4 ]
vsub. i 6 4 d19 , d19 , d9
add r6 , r6 , #16
vst1 . 8 d16 , [ r6 , : 6 4 ]
vshr. s64 d22 , d12 , #26
vand q0 , q6 , q1
vadd. i 6 4 d10 , d10 , d22
vzip. i 3 2 q3 , q9
vsub. i 6 4 d4 , d4 , d0
sub r6 , r6 , #8
vst1 . 8 d6 , [ r6 , : 6 4 ]
add r6 , r6 , #16
vst1 . 8 d18 , [ r6 , : 6 4 ]
vzip. i 3 2 q2 , q5
sub r6 , r6 , #32
vst1 . 8 d4 , [ r6 , : 6 4 ]
subs r5 , r5 , #1
2019-11-08 13:22:38 +01:00
bhi . L s q u a r i n g l o o p
.Lskipsquaringloop :
2019-11-08 13:22:37 +01:00
mov r2 , r2
add r5 , r3 , #288
add r6 , r3 , #144
vmov. i 3 2 q0 , #19
vmov. i 3 2 q1 , #0
vmov. i 3 2 q2 , #1
vzip. i 3 2 q1 , q2
vld1 . 8 { d4 - d5 } , [ r5 , : 1 2 8 ] !
vld1 . 8 { d6 - d7 } , [ r5 , : 1 2 8 ] !
vld1 . 8 { d9 } , [ r5 , : 6 4 ]
vld1 . 8 { d10 - d11 } , [ r2 , : 1 2 8 ] !
2019-11-08 13:22:38 +01:00
add r5 , s p , #384
2019-11-08 13:22:37 +01:00
vld1 . 8 { d12 - d13 } , [ r2 , : 1 2 8 ] !
vmul. i 3 2 q7 , q2 , q0
vld1 . 8 { d8 } , [ r2 , : 6 4 ]
vext. 3 2 d17 , d11 , d10 , #1
vmul. i 3 2 q9 , q3 , q0
vext. 3 2 d16 , d10 , d8 , #1
vshl. u 3 2 q10 , q5 , q1
vext. 3 2 d22 , d14 , d4 , #1
vext. 3 2 d24 , d18 , d6 , #1
vshl. u 3 2 q13 , q6 , q1
vshl. u 3 2 d28 , d8 , d2
vrev6 4 . i 3 2 d22 , d22
vmul. i 3 2 d1 , d9 , d1
vrev6 4 . i 3 2 d24 , d24
vext. 3 2 d29 , d8 , d13 , #1
vext. 3 2 d0 , d1 , d9 , #1
vrev6 4 . i 3 2 d0 , d0
vext. 3 2 d2 , d9 , d1 , #1
vext. 3 2 d23 , d15 , d5 , #1
vmull. s32 q4 , d20 , d4
vrev6 4 . i 3 2 d23 , d23
vmlal. s32 q4 , d21 , d1
vrev6 4 . i 3 2 d2 , d2
vmlal. s32 q4 , d26 , d19
vext. 3 2 d3 , d5 , d15 , #1
vmlal. s32 q4 , d27 , d18
vrev6 4 . i 3 2 d3 , d3
vmlal. s32 q4 , d28 , d15
vext. 3 2 d14 , d12 , d11 , #1
vmull. s32 q5 , d16 , d23
vext. 3 2 d15 , d13 , d12 , #1
vmlal. s32 q5 , d17 , d4
vst1 . 8 d8 , [ r5 , : 6 4 ] !
vmlal. s32 q5 , d14 , d1
vext. 3 2 d12 , d9 , d8 , #0
vmlal. s32 q5 , d15 , d19
vmov. i 6 4 d13 , #0
vmlal. s32 q5 , d29 , d18
vext. 3 2 d25 , d19 , d7 , #1
vmlal. s32 q6 , d20 , d5
vrev6 4 . i 3 2 d25 , d25
vmlal. s32 q6 , d21 , d4
vst1 . 8 d11 , [ r5 , : 6 4 ] !
vmlal. s32 q6 , d26 , d1
vext. 3 2 d9 , d10 , d10 , #0
vmlal. s32 q6 , d27 , d19
vmov. i 6 4 d8 , #0
vmlal. s32 q6 , d28 , d18
vmlal. s32 q4 , d16 , d24
vmlal. s32 q4 , d17 , d5
vmlal. s32 q4 , d14 , d4
vst1 . 8 d12 , [ r5 , : 6 4 ] !
vmlal. s32 q4 , d15 , d1
vext. 3 2 d10 , d13 , d12 , #0
vmlal. s32 q4 , d29 , d19
vmov. i 6 4 d11 , #0
vmlal. s32 q5 , d20 , d6
vmlal. s32 q5 , d21 , d5
vmlal. s32 q5 , d26 , d4
vext. 3 2 d13 , d8 , d8 , #0
vmlal. s32 q5 , d27 , d1
vmov. i 6 4 d12 , #0
vmlal. s32 q5 , d28 , d19
vst1 . 8 d9 , [ r5 , : 6 4 ] !
vmlal. s32 q6 , d16 , d25
vmlal. s32 q6 , d17 , d6
vst1 . 8 d10 , [ r5 , : 6 4 ]
vmlal. s32 q6 , d14 , d5
vext. 3 2 d8 , d11 , d10 , #0
vmlal. s32 q6 , d15 , d4
vmov. i 6 4 d9 , #0
vmlal. s32 q6 , d29 , d1
vmlal. s32 q4 , d20 , d7
vmlal. s32 q4 , d21 , d6
vmlal. s32 q4 , d26 , d5
vext. 3 2 d11 , d12 , d12 , #0
vmlal. s32 q4 , d27 , d4
vmov. i 6 4 d10 , #0
vmlal. s32 q4 , d28 , d1
vmlal. s32 q5 , d16 , d0
sub r2 , r5 , #32
vmlal. s32 q5 , d17 , d7
vmlal. s32 q5 , d14 , d6
vext. 3 2 d30 , d9 , d8 , #0
vmlal. s32 q5 , d15 , d5
vld1 . 8 { d31 } , [ r2 , : 6 4 ] !
vmlal. s32 q5 , d29 , d4
vmlal. s32 q15 , d20 , d0
vext. 3 2 d0 , d6 , d18 , #1
vmlal. s32 q15 , d21 , d25
vrev6 4 . i 3 2 d0 , d0
vmlal. s32 q15 , d26 , d24
vext. 3 2 d1 , d7 , d19 , #1
vext. 3 2 d7 , d10 , d10 , #0
vmlal. s32 q15 , d27 , d23
vrev6 4 . i 3 2 d1 , d1
vld1 . 8 { d6 } , [ r2 , : 6 4 ]
vmlal. s32 q15 , d28 , d22
vmlal. s32 q3 , d16 , d4
add r2 , r2 , #24
vmlal. s32 q3 , d17 , d2
vext. 3 2 d4 , d31 , d30 , #0
vmov d17 , d11
vmlal. s32 q3 , d14 , d1
vext. 3 2 d11 , d13 , d13 , #0
vext. 3 2 d13 , d30 , d30 , #0
vmlal. s32 q3 , d15 , d0
vext. 3 2 d1 , d8 , d8 , #0
vmlal. s32 q3 , d29 , d3
vld1 . 8 { d5 } , [ r2 , : 6 4 ]
sub r2 , r2 , #16
vext. 3 2 d10 , d6 , d6 , #0
vmov. i 3 2 q1 , #0xffffffff
vshl. i 6 4 q4 , q1 , #25
2019-11-08 13:22:38 +01:00
add r5 , s p , #480
2019-11-08 13:22:37 +01:00
vld1 . 8 { d14 - d15 } , [ r5 , : 1 2 8 ]
vadd. i 6 4 q9 , q2 , q7
vshl. i 6 4 q1 , q1 , #26
vshr. s64 q10 , q9 , #26
vld1 . 8 { d0 } , [ r2 , : 6 4 ] !
vadd. i 6 4 q5 , q5 , q10
vand q9 , q9 , q1
vld1 . 8 { d16 } , [ r2 , : 6 4 ] !
2019-11-08 13:22:38 +01:00
add r2 , s p , #496
2019-11-08 13:22:37 +01:00
vld1 . 8 { d20 - d21 } , [ r2 , : 1 2 8 ]
vadd. i 6 4 q11 , q5 , q10
vsub. i 6 4 q2 , q2 , q9
vshr. s64 q9 , q11 , #25
vext. 3 2 d12 , d5 , d4 , #0
vand q11 , q11 , q4
vadd. i 6 4 q0 , q0 , q9
vmov d19 , d7
vadd. i 6 4 q3 , q0 , q7
vsub. i 6 4 q5 , q5 , q11
vshr. s64 q11 , q3 , #26
vext. 3 2 d18 , d11 , d10 , #0
vand q3 , q3 , q1
vadd. i 6 4 q8 , q8 , q11
vadd. i 6 4 q11 , q8 , q10
vsub. i 6 4 q0 , q0 , q3
vshr. s64 q3 , q11 , #25
vand q11 , q11 , q4
vadd. i 6 4 q3 , q6 , q3
vadd. i 6 4 q6 , q3 , q7
vsub. i 6 4 q8 , q8 , q11
vshr. s64 q11 , q6 , #26
vand q6 , q6 , q1
vadd. i 6 4 q9 , q9 , q11
vadd. i 6 4 d25 , d19 , d21
vsub. i 6 4 q3 , q3 , q6
vshr. s64 d23 , d25 , #25
vand q4 , q12 , q4
vadd. i 6 4 d21 , d23 , d23
vshl. i 6 4 d25 , d23 , #4
vadd. i 6 4 d21 , d21 , d23
vadd. i 6 4 d25 , d25 , d21
vadd. i 6 4 d4 , d4 , d25
vzip. i 3 2 q0 , q8
vadd. i 6 4 d12 , d4 , d14
add r2 , r6 , #8
vst1 . 8 d0 , [ r2 , : 6 4 ]
vsub. i 6 4 d19 , d19 , d9
add r2 , r2 , #16
vst1 . 8 d16 , [ r2 , : 6 4 ]
vshr. s64 d22 , d12 , #26
vand q0 , q6 , q1
vadd. i 6 4 d10 , d10 , d22
vzip. i 3 2 q3 , q9
vsub. i 6 4 d4 , d4 , d0
sub r2 , r2 , #8
vst1 . 8 d6 , [ r2 , : 6 4 ]
add r2 , r2 , #16
vst1 . 8 d18 , [ r2 , : 6 4 ]
vzip. i 3 2 q2 , q5
sub r2 , r2 , #32
vst1 . 8 d4 , [ r2 , : 6 4 ]
cmp r4 , #0
2019-11-08 13:22:38 +01:00
beq . L s k i p p o s t c o p y
2019-11-08 13:22:37 +01:00
add r2 , r3 , #144
mov r4 , r4
vld1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d4 } , [ r2 , : 6 4 ]
vst1 . 8 { d0 - d1 } , [ r4 , : 1 2 8 ] !
vst1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vst1 . 8 d4 , [ r4 , : 6 4 ]
2019-11-08 13:22:38 +01:00
.Lskippostcopy :
2019-11-08 13:22:37 +01:00
cmp r1 , #1
2019-11-08 13:22:38 +01:00
bne . L s k i p f i n a l c o p y
2019-11-08 13:22:37 +01:00
add r2 , r3 , #288
add r4 , r3 , #144
vld1 . 8 { d0 - d1 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d2 - d3 } , [ r2 , : 1 2 8 ] !
vld1 . 8 { d4 } , [ r2 , : 6 4 ]
vst1 . 8 { d0 - d1 } , [ r4 , : 1 2 8 ] !
vst1 . 8 { d2 - d3 } , [ r4 , : 1 2 8 ] !
vst1 . 8 d4 , [ r4 , : 6 4 ]
2019-11-08 13:22:38 +01:00
.Lskipfinalcopy :
2019-11-08 13:22:37 +01:00
add r1 , r1 , #1
cmp r1 , #12
2019-11-08 13:22:38 +01:00
blo . L i n v e r t l o o p
2019-11-08 13:22:37 +01:00
add r1 , r3 , #144
ldr r2 , [ r1 ] , #4
ldr r3 , [ r1 ] , #4
ldr r4 , [ r1 ] , #4
ldr r5 , [ r1 ] , #4
ldr r6 , [ r1 ] , #4
ldr r7 , [ r1 ] , #4
ldr r8 , [ r1 ] , #4
ldr r9 , [ r1 ] , #4
ldr r10 , [ r1 ] , #4
ldr r1 , [ r1 ]
add r11 , r1 , r1 , L S L #4
add r11 , r11 , r1 , L S L #1
add r11 , r11 , #16777216
mov r11 , r11 , A S R #25
add r11 , r11 , r2
mov r11 , r11 , A S R #26
add r11 , r11 , r3
mov r11 , r11 , A S R #25
add r11 , r11 , r4
mov r11 , r11 , A S R #26
add r11 , r11 , r5
mov r11 , r11 , A S R #25
add r11 , r11 , r6
mov r11 , r11 , A S R #26
add r11 , r11 , r7
mov r11 , r11 , A S R #25
add r11 , r11 , r8
mov r11 , r11 , A S R #26
add r11 , r11 , r9
mov r11 , r11 , A S R #25
add r11 , r11 , r10
mov r11 , r11 , A S R #26
add r11 , r11 , r1
mov r11 , r11 , A S R #25
add r2 , r2 , r11
add r2 , r2 , r11 , L S L #1
add r2 , r2 , r11 , L S L #4
mov r11 , r2 , A S R #26
add r3 , r3 , r11
sub r2 , r2 , r11 , L S L #26
mov r11 , r3 , A S R #25
add r4 , r4 , r11
sub r3 , r3 , r11 , L S L #25
mov r11 , r4 , A S R #26
add r5 , r5 , r11
sub r4 , r4 , r11 , L S L #26
mov r11 , r5 , A S R #25
add r6 , r6 , r11
sub r5 , r5 , r11 , L S L #25
mov r11 , r6 , A S R #26
add r7 , r7 , r11
sub r6 , r6 , r11 , L S L #26
mov r11 , r7 , A S R #25
add r8 , r8 , r11
sub r7 , r7 , r11 , L S L #25
mov r11 , r8 , A S R #26
add r9 , r9 , r11
sub r8 , r8 , r11 , L S L #26
mov r11 , r9 , A S R #25
add r10 , r10 , r11
sub r9 , r9 , r11 , L S L #25
mov r11 , r10 , A S R #26
add r1 , r1 , r11
sub r10 , r10 , r11 , L S L #26
mov r11 , r1 , A S R #25
sub r1 , r1 , r11 , L S L #25
add r2 , r2 , r3 , L S L #26
mov r3 , r3 , L S R #6
add r3 , r3 , r4 , L S L #19
mov r4 , r4 , L S R #13
add r4 , r4 , r5 , L S L #13
mov r5 , r5 , L S R #19
add r5 , r5 , r6 , L S L #6
add r6 , r7 , r8 , L S L #25
mov r7 , r8 , L S R #7
add r7 , r7 , r9 , L S L #19
mov r8 , r9 , L S R #13
add r8 , r8 , r10 , L S L #12
mov r9 , r10 , L S R #20
add r1 , r9 , r1 , L S L #6
2019-11-08 13:22:38 +01:00
str r2 , [ r0 ]
str r3 , [ r0 , #4 ]
str r4 , [ r0 , #8 ]
str r5 , [ r0 , #12 ]
str r6 , [ r0 , #16 ]
str r7 , [ r0 , #20 ]
str r8 , [ r0 , #24 ]
str r1 , [ r0 , #28 ]
movw r0 , #0
mov s p , i p
pop { r4 - r11 , p c }
ENDPROC( c u r v e 2 5 5 1 9 _ n e o n )