162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 OR MIT */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Based on public domain code from Daniel J. Bernstein and Peter Schwabe. This 662306a36Sopenharmony_ci * began from SUPERCOP's curve25519/neon2/scalarmult.s, but has subsequently been 762306a36Sopenharmony_ci * manually reworked for use in kernel space. 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <linux/linkage.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci.text 1362306a36Sopenharmony_ci.arch armv7-a 1462306a36Sopenharmony_ci.fpu neon 1562306a36Sopenharmony_ci.align 4 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciENTRY(curve25519_neon) 1862306a36Sopenharmony_ci push {r4-r11, lr} 1962306a36Sopenharmony_ci mov ip, sp 2062306a36Sopenharmony_ci sub r3, sp, #704 2162306a36Sopenharmony_ci and r3, r3, #0xfffffff0 2262306a36Sopenharmony_ci mov sp, r3 2362306a36Sopenharmony_ci movw r4, #0 2462306a36Sopenharmony_ci movw r5, #254 2562306a36Sopenharmony_ci vmov.i32 q0, #1 2662306a36Sopenharmony_ci vshr.u64 q1, q0, #7 2762306a36Sopenharmony_ci vshr.u64 q0, q0, #8 2862306a36Sopenharmony_ci vmov.i32 d4, #19 2962306a36Sopenharmony_ci vmov.i32 d5, #38 3062306a36Sopenharmony_ci add r6, sp, #480 3162306a36Sopenharmony_ci vst1.8 {d2-d3}, [r6, : 128]! 3262306a36Sopenharmony_ci vst1.8 {d0-d1}, [r6, : 128]! 3362306a36Sopenharmony_ci vst1.8 {d4-d5}, [r6, : 128] 3462306a36Sopenharmony_ci add r6, r3, #0 3562306a36Sopenharmony_ci vmov.i32 q2, #0 3662306a36Sopenharmony_ci vst1.8 {d4-d5}, [r6, : 128]! 3762306a36Sopenharmony_ci vst1.8 {d4-d5}, [r6, : 128]! 3862306a36Sopenharmony_ci vst1.8 d4, [r6, : 64] 3962306a36Sopenharmony_ci add r6, r3, #0 4062306a36Sopenharmony_ci movw r7, #960 4162306a36Sopenharmony_ci sub r7, r7, #2 4262306a36Sopenharmony_ci neg r7, r7 4362306a36Sopenharmony_ci sub r7, r7, r7, LSL #7 4462306a36Sopenharmony_ci str r7, [r6] 4562306a36Sopenharmony_ci add r6, sp, #672 4662306a36Sopenharmony_ci vld1.8 {d4-d5}, [r1]! 4762306a36Sopenharmony_ci vld1.8 {d6-d7}, [r1] 4862306a36Sopenharmony_ci vst1.8 {d4-d5}, [r6, : 128]! 4962306a36Sopenharmony_ci vst1.8 {d6-d7}, [r6, : 128] 5062306a36Sopenharmony_ci sub r1, r6, #16 5162306a36Sopenharmony_ci ldrb r6, [r1] 5262306a36Sopenharmony_ci and r6, r6, #248 5362306a36Sopenharmony_ci strb r6, [r1] 5462306a36Sopenharmony_ci ldrb r6, [r1, #31] 5562306a36Sopenharmony_ci and r6, r6, #127 5662306a36Sopenharmony_ci orr r6, r6, #64 5762306a36Sopenharmony_ci strb r6, [r1, #31] 5862306a36Sopenharmony_ci vmov.i64 q2, #0xffffffff 5962306a36Sopenharmony_ci vshr.u64 q3, q2, #7 6062306a36Sopenharmony_ci vshr.u64 q2, q2, #6 6162306a36Sopenharmony_ci vld1.8 {d8}, [r2] 6262306a36Sopenharmony_ci vld1.8 {d10}, [r2] 6362306a36Sopenharmony_ci add r2, r2, #6 6462306a36Sopenharmony_ci vld1.8 {d12}, [r2] 6562306a36Sopenharmony_ci vld1.8 {d14}, [r2] 6662306a36Sopenharmony_ci add r2, r2, #6 6762306a36Sopenharmony_ci vld1.8 {d16}, [r2] 6862306a36Sopenharmony_ci add r2, r2, #4 6962306a36Sopenharmony_ci vld1.8 {d18}, [r2] 7062306a36Sopenharmony_ci vld1.8 {d20}, [r2] 7162306a36Sopenharmony_ci add r2, r2, #6 7262306a36Sopenharmony_ci vld1.8 {d22}, [r2] 7362306a36Sopenharmony_ci add r2, r2, #2 7462306a36Sopenharmony_ci vld1.8 {d24}, [r2] 7562306a36Sopenharmony_ci vld1.8 {d26}, [r2] 7662306a36Sopenharmony_ci vshr.u64 q5, q5, #26 7762306a36Sopenharmony_ci vshr.u64 q6, q6, #3 7862306a36Sopenharmony_ci vshr.u64 q7, q7, #29 7962306a36Sopenharmony_ci vshr.u64 q8, q8, #6 8062306a36Sopenharmony_ci vshr.u64 q10, q10, #25 8162306a36Sopenharmony_ci vshr.u64 q11, q11, #3 8262306a36Sopenharmony_ci vshr.u64 q12, q12, #12 8362306a36Sopenharmony_ci vshr.u64 q13, q13, #38 8462306a36Sopenharmony_ci vand q4, q4, q2 8562306a36Sopenharmony_ci vand q6, q6, q2 8662306a36Sopenharmony_ci vand q8, q8, q2 8762306a36Sopenharmony_ci vand q10, q10, q2 8862306a36Sopenharmony_ci vand q2, q12, q2 8962306a36Sopenharmony_ci vand q5, q5, q3 9062306a36Sopenharmony_ci vand q7, q7, q3 9162306a36Sopenharmony_ci vand q9, q9, q3 9262306a36Sopenharmony_ci vand q11, q11, q3 9362306a36Sopenharmony_ci vand q3, q13, q3 9462306a36Sopenharmony_ci add r2, r3, #48 9562306a36Sopenharmony_ci vadd.i64 q12, q4, q1 9662306a36Sopenharmony_ci vadd.i64 q13, q10, q1 9762306a36Sopenharmony_ci vshr.s64 q12, q12, #26 9862306a36Sopenharmony_ci vshr.s64 q13, q13, #26 9962306a36Sopenharmony_ci vadd.i64 q5, q5, q12 10062306a36Sopenharmony_ci vshl.i64 q12, q12, #26 10162306a36Sopenharmony_ci vadd.i64 q14, q5, q0 10262306a36Sopenharmony_ci vadd.i64 q11, q11, q13 10362306a36Sopenharmony_ci vshl.i64 q13, q13, #26 10462306a36Sopenharmony_ci vadd.i64 q15, q11, q0 10562306a36Sopenharmony_ci vsub.i64 q4, q4, q12 10662306a36Sopenharmony_ci vshr.s64 q12, q14, #25 10762306a36Sopenharmony_ci vsub.i64 q10, q10, q13 10862306a36Sopenharmony_ci vshr.s64 q13, q15, #25 10962306a36Sopenharmony_ci vadd.i64 q6, q6, q12 11062306a36Sopenharmony_ci vshl.i64 q12, q12, #25 11162306a36Sopenharmony_ci vadd.i64 q14, q6, q1 11262306a36Sopenharmony_ci vadd.i64 q2, q2, q13 11362306a36Sopenharmony_ci vsub.i64 q5, q5, q12 11462306a36Sopenharmony_ci vshr.s64 q12, q14, #26 11562306a36Sopenharmony_ci vshl.i64 q13, q13, #25 11662306a36Sopenharmony_ci vadd.i64 q14, q2, q1 11762306a36Sopenharmony_ci vadd.i64 q7, q7, q12 11862306a36Sopenharmony_ci vshl.i64 q12, q12, #26 11962306a36Sopenharmony_ci vadd.i64 q15, q7, q0 12062306a36Sopenharmony_ci vsub.i64 q11, q11, q13 12162306a36Sopenharmony_ci vshr.s64 q13, q14, #26 12262306a36Sopenharmony_ci vsub.i64 q6, q6, q12 12362306a36Sopenharmony_ci vshr.s64 q12, q15, #25 12462306a36Sopenharmony_ci vadd.i64 q3, q3, q13 12562306a36Sopenharmony_ci vshl.i64 q13, q13, #26 12662306a36Sopenharmony_ci vadd.i64 q14, q3, q0 12762306a36Sopenharmony_ci vadd.i64 q8, q8, q12 12862306a36Sopenharmony_ci vshl.i64 q12, q12, #25 12962306a36Sopenharmony_ci vadd.i64 q15, q8, q1 13062306a36Sopenharmony_ci add r2, r2, #8 13162306a36Sopenharmony_ci vsub.i64 q2, q2, q13 13262306a36Sopenharmony_ci vshr.s64 q13, q14, #25 13362306a36Sopenharmony_ci vsub.i64 q7, q7, q12 13462306a36Sopenharmony_ci vshr.s64 q12, q15, #26 13562306a36Sopenharmony_ci vadd.i64 q14, q13, q13 13662306a36Sopenharmony_ci vadd.i64 q9, q9, q12 13762306a36Sopenharmony_ci vtrn.32 d12, d14 13862306a36Sopenharmony_ci vshl.i64 q12, q12, #26 13962306a36Sopenharmony_ci vtrn.32 d13, d15 14062306a36Sopenharmony_ci vadd.i64 q0, q9, q0 14162306a36Sopenharmony_ci vadd.i64 q4, q4, q14 14262306a36Sopenharmony_ci vst1.8 d12, [r2, : 64]! 14362306a36Sopenharmony_ci vshl.i64 q6, q13, #4 14462306a36Sopenharmony_ci vsub.i64 q7, q8, q12 14562306a36Sopenharmony_ci vshr.s64 q0, q0, #25 14662306a36Sopenharmony_ci vadd.i64 q4, q4, q6 14762306a36Sopenharmony_ci vadd.i64 q6, q10, q0 14862306a36Sopenharmony_ci vshl.i64 q0, q0, #25 14962306a36Sopenharmony_ci vadd.i64 q8, q6, q1 15062306a36Sopenharmony_ci vadd.i64 q4, q4, q13 15162306a36Sopenharmony_ci vshl.i64 q10, q13, #25 15262306a36Sopenharmony_ci vadd.i64 q1, q4, q1 15362306a36Sopenharmony_ci vsub.i64 q0, q9, q0 15462306a36Sopenharmony_ci vshr.s64 q8, q8, #26 15562306a36Sopenharmony_ci vsub.i64 q3, q3, q10 15662306a36Sopenharmony_ci vtrn.32 d14, d0 15762306a36Sopenharmony_ci vshr.s64 q1, q1, #26 15862306a36Sopenharmony_ci vtrn.32 d15, d1 15962306a36Sopenharmony_ci vadd.i64 q0, q11, q8 16062306a36Sopenharmony_ci vst1.8 d14, [r2, : 64] 16162306a36Sopenharmony_ci vshl.i64 q7, q8, #26 16262306a36Sopenharmony_ci vadd.i64 q5, q5, q1 16362306a36Sopenharmony_ci vtrn.32 d4, d6 16462306a36Sopenharmony_ci vshl.i64 q1, q1, #26 16562306a36Sopenharmony_ci vtrn.32 d5, d7 16662306a36Sopenharmony_ci vsub.i64 q3, q6, q7 16762306a36Sopenharmony_ci add r2, r2, #16 16862306a36Sopenharmony_ci vsub.i64 q1, q4, q1 16962306a36Sopenharmony_ci vst1.8 d4, [r2, : 64] 17062306a36Sopenharmony_ci vtrn.32 d6, d0 17162306a36Sopenharmony_ci vtrn.32 d7, d1 17262306a36Sopenharmony_ci sub r2, r2, #8 17362306a36Sopenharmony_ci vtrn.32 d2, d10 17462306a36Sopenharmony_ci vtrn.32 d3, d11 17562306a36Sopenharmony_ci vst1.8 d6, [r2, : 64] 17662306a36Sopenharmony_ci sub r2, r2, #24 17762306a36Sopenharmony_ci vst1.8 d2, [r2, : 64] 17862306a36Sopenharmony_ci add r2, r3, #96 17962306a36Sopenharmony_ci vmov.i32 q0, #0 18062306a36Sopenharmony_ci vmov.i64 d2, #0xff 18162306a36Sopenharmony_ci vmov.i64 d3, #0 18262306a36Sopenharmony_ci vshr.u32 q1, q1, #7 18362306a36Sopenharmony_ci vst1.8 {d2-d3}, [r2, : 128]! 18462306a36Sopenharmony_ci vst1.8 {d0-d1}, [r2, : 128]! 18562306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 18662306a36Sopenharmony_ci add r2, r3, #144 18762306a36Sopenharmony_ci vmov.i32 q0, #0 18862306a36Sopenharmony_ci vst1.8 {d0-d1}, [r2, : 128]! 18962306a36Sopenharmony_ci vst1.8 {d0-d1}, [r2, : 128]! 19062306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 19162306a36Sopenharmony_ci add r2, r3, #240 19262306a36Sopenharmony_ci vmov.i32 q0, #0 19362306a36Sopenharmony_ci vmov.i64 d2, #0xff 19462306a36Sopenharmony_ci vmov.i64 d3, #0 19562306a36Sopenharmony_ci vshr.u32 q1, q1, #7 19662306a36Sopenharmony_ci vst1.8 {d2-d3}, [r2, : 128]! 19762306a36Sopenharmony_ci vst1.8 {d0-d1}, [r2, : 128]! 19862306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 19962306a36Sopenharmony_ci add r2, r3, #48 20062306a36Sopenharmony_ci add r6, r3, #192 20162306a36Sopenharmony_ci vld1.8 {d0-d1}, [r2, : 128]! 20262306a36Sopenharmony_ci vld1.8 {d2-d3}, [r2, : 128]! 20362306a36Sopenharmony_ci vld1.8 {d4}, [r2, : 64] 20462306a36Sopenharmony_ci vst1.8 {d0-d1}, [r6, : 128]! 20562306a36Sopenharmony_ci vst1.8 {d2-d3}, [r6, : 128]! 20662306a36Sopenharmony_ci vst1.8 d4, [r6, : 64] 20762306a36Sopenharmony_ci.Lmainloop: 20862306a36Sopenharmony_ci mov r2, r5, LSR #3 20962306a36Sopenharmony_ci and r6, r5, #7 21062306a36Sopenharmony_ci ldrb r2, [r1, r2] 21162306a36Sopenharmony_ci mov r2, r2, LSR r6 21262306a36Sopenharmony_ci and r2, r2, #1 21362306a36Sopenharmony_ci str r5, [sp, #456] 21462306a36Sopenharmony_ci eor r4, r4, r2 21562306a36Sopenharmony_ci str r2, [sp, #460] 21662306a36Sopenharmony_ci neg r2, r4 21762306a36Sopenharmony_ci add r4, r3, #96 21862306a36Sopenharmony_ci add r5, r3, #192 21962306a36Sopenharmony_ci add r6, r3, #144 22062306a36Sopenharmony_ci vld1.8 {d8-d9}, [r4, : 128]! 22162306a36Sopenharmony_ci add r7, r3, #240 22262306a36Sopenharmony_ci vld1.8 {d10-d11}, [r5, : 128]! 22362306a36Sopenharmony_ci veor q6, q4, q5 22462306a36Sopenharmony_ci vld1.8 {d14-d15}, [r6, : 128]! 22562306a36Sopenharmony_ci vdup.i32 q8, r2 22662306a36Sopenharmony_ci vld1.8 {d18-d19}, [r7, : 128]! 22762306a36Sopenharmony_ci veor q10, q7, q9 22862306a36Sopenharmony_ci vld1.8 {d22-d23}, [r4, : 128]! 22962306a36Sopenharmony_ci vand q6, q6, q8 23062306a36Sopenharmony_ci vld1.8 {d24-d25}, [r5, : 128]! 23162306a36Sopenharmony_ci vand q10, q10, q8 23262306a36Sopenharmony_ci vld1.8 {d26-d27}, [r6, : 128]! 23362306a36Sopenharmony_ci veor q4, q4, q6 23462306a36Sopenharmony_ci vld1.8 {d28-d29}, [r7, : 128]! 23562306a36Sopenharmony_ci veor q5, q5, q6 23662306a36Sopenharmony_ci vld1.8 {d0}, [r4, : 64] 23762306a36Sopenharmony_ci veor q6, q7, q10 23862306a36Sopenharmony_ci vld1.8 {d2}, [r5, : 64] 23962306a36Sopenharmony_ci veor q7, q9, q10 24062306a36Sopenharmony_ci vld1.8 {d4}, [r6, : 64] 24162306a36Sopenharmony_ci veor q9, q11, q12 24262306a36Sopenharmony_ci vld1.8 {d6}, [r7, : 64] 24362306a36Sopenharmony_ci veor q10, q0, q1 24462306a36Sopenharmony_ci sub r2, r4, #32 24562306a36Sopenharmony_ci vand q9, q9, q8 24662306a36Sopenharmony_ci sub r4, r5, #32 24762306a36Sopenharmony_ci vand q10, q10, q8 24862306a36Sopenharmony_ci sub r5, r6, #32 24962306a36Sopenharmony_ci veor q11, q11, q9 25062306a36Sopenharmony_ci sub r6, r7, #32 25162306a36Sopenharmony_ci veor q0, q0, q10 25262306a36Sopenharmony_ci veor q9, q12, q9 25362306a36Sopenharmony_ci veor q1, q1, q10 25462306a36Sopenharmony_ci veor q10, q13, q14 25562306a36Sopenharmony_ci veor q12, q2, q3 25662306a36Sopenharmony_ci vand q10, q10, q8 25762306a36Sopenharmony_ci vand q8, q12, q8 25862306a36Sopenharmony_ci veor q12, q13, q10 25962306a36Sopenharmony_ci veor q2, q2, q8 26062306a36Sopenharmony_ci veor q10, q14, q10 26162306a36Sopenharmony_ci veor q3, q3, q8 26262306a36Sopenharmony_ci vadd.i32 q8, q4, q6 26362306a36Sopenharmony_ci vsub.i32 q4, q4, q6 26462306a36Sopenharmony_ci vst1.8 {d16-d17}, [r2, : 128]! 26562306a36Sopenharmony_ci vadd.i32 q6, q11, q12 26662306a36Sopenharmony_ci vst1.8 {d8-d9}, [r5, : 128]! 26762306a36Sopenharmony_ci vsub.i32 q4, q11, q12 26862306a36Sopenharmony_ci vst1.8 {d12-d13}, [r2, : 128]! 26962306a36Sopenharmony_ci vadd.i32 q6, q0, q2 27062306a36Sopenharmony_ci vst1.8 {d8-d9}, [r5, : 128]! 27162306a36Sopenharmony_ci vsub.i32 q0, q0, q2 27262306a36Sopenharmony_ci vst1.8 d12, [r2, : 64] 27362306a36Sopenharmony_ci vadd.i32 q2, q5, q7 27462306a36Sopenharmony_ci vst1.8 d0, [r5, : 64] 27562306a36Sopenharmony_ci vsub.i32 q0, q5, q7 27662306a36Sopenharmony_ci vst1.8 {d4-d5}, [r4, : 128]! 27762306a36Sopenharmony_ci vadd.i32 q2, q9, q10 27862306a36Sopenharmony_ci vst1.8 {d0-d1}, [r6, : 128]! 27962306a36Sopenharmony_ci vsub.i32 q0, q9, q10 28062306a36Sopenharmony_ci vst1.8 {d4-d5}, [r4, : 128]! 28162306a36Sopenharmony_ci vadd.i32 q2, q1, q3 28262306a36Sopenharmony_ci vst1.8 {d0-d1}, [r6, : 128]! 28362306a36Sopenharmony_ci vsub.i32 q0, q1, q3 28462306a36Sopenharmony_ci vst1.8 d4, [r4, : 64] 28562306a36Sopenharmony_ci vst1.8 d0, [r6, : 64] 28662306a36Sopenharmony_ci add r2, sp, #512 28762306a36Sopenharmony_ci add r4, r3, #96 28862306a36Sopenharmony_ci add r5, r3, #144 28962306a36Sopenharmony_ci vld1.8 {d0-d1}, [r2, : 128] 29062306a36Sopenharmony_ci vld1.8 {d2-d3}, [r4, : 128]! 29162306a36Sopenharmony_ci vld1.8 {d4-d5}, [r5, : 128]! 29262306a36Sopenharmony_ci vzip.i32 q1, q2 29362306a36Sopenharmony_ci vld1.8 {d6-d7}, [r4, : 128]! 29462306a36Sopenharmony_ci vld1.8 {d8-d9}, [r5, : 128]! 29562306a36Sopenharmony_ci vshl.i32 q5, q1, #1 29662306a36Sopenharmony_ci vzip.i32 q3, q4 29762306a36Sopenharmony_ci vshl.i32 q6, q2, #1 29862306a36Sopenharmony_ci vld1.8 {d14}, [r4, : 64] 29962306a36Sopenharmony_ci vshl.i32 q8, q3, #1 30062306a36Sopenharmony_ci vld1.8 {d15}, [r5, : 64] 30162306a36Sopenharmony_ci vshl.i32 q9, q4, #1 30262306a36Sopenharmony_ci vmul.i32 d21, d7, d1 30362306a36Sopenharmony_ci vtrn.32 d14, d15 30462306a36Sopenharmony_ci vmul.i32 q11, q4, q0 30562306a36Sopenharmony_ci vmul.i32 q0, q7, q0 30662306a36Sopenharmony_ci vmull.s32 q12, d2, d2 30762306a36Sopenharmony_ci vmlal.s32 q12, d11, d1 30862306a36Sopenharmony_ci vmlal.s32 q12, d12, d0 30962306a36Sopenharmony_ci vmlal.s32 q12, d13, d23 31062306a36Sopenharmony_ci vmlal.s32 q12, d16, d22 31162306a36Sopenharmony_ci vmlal.s32 q12, d7, d21 31262306a36Sopenharmony_ci vmull.s32 q10, d2, d11 31362306a36Sopenharmony_ci vmlal.s32 q10, d4, d1 31462306a36Sopenharmony_ci vmlal.s32 q10, d13, d0 31562306a36Sopenharmony_ci vmlal.s32 q10, d6, d23 31662306a36Sopenharmony_ci vmlal.s32 q10, d17, d22 31762306a36Sopenharmony_ci vmull.s32 q13, d10, d4 31862306a36Sopenharmony_ci vmlal.s32 q13, d11, d3 31962306a36Sopenharmony_ci vmlal.s32 q13, d13, d1 32062306a36Sopenharmony_ci vmlal.s32 q13, d16, d0 32162306a36Sopenharmony_ci vmlal.s32 q13, d17, d23 32262306a36Sopenharmony_ci vmlal.s32 q13, d8, d22 32362306a36Sopenharmony_ci vmull.s32 q1, d10, d5 32462306a36Sopenharmony_ci vmlal.s32 q1, d11, d4 32562306a36Sopenharmony_ci vmlal.s32 q1, d6, d1 32662306a36Sopenharmony_ci vmlal.s32 q1, d17, d0 32762306a36Sopenharmony_ci vmlal.s32 q1, d8, d23 32862306a36Sopenharmony_ci vmull.s32 q14, d10, d6 32962306a36Sopenharmony_ci vmlal.s32 q14, d11, d13 33062306a36Sopenharmony_ci vmlal.s32 q14, d4, d4 33162306a36Sopenharmony_ci vmlal.s32 q14, d17, d1 33262306a36Sopenharmony_ci vmlal.s32 q14, d18, d0 33362306a36Sopenharmony_ci vmlal.s32 q14, d9, d23 33462306a36Sopenharmony_ci vmull.s32 q11, d10, d7 33562306a36Sopenharmony_ci vmlal.s32 q11, d11, d6 33662306a36Sopenharmony_ci vmlal.s32 q11, d12, d5 33762306a36Sopenharmony_ci vmlal.s32 q11, d8, d1 33862306a36Sopenharmony_ci vmlal.s32 q11, d19, d0 33962306a36Sopenharmony_ci vmull.s32 q15, d10, d8 34062306a36Sopenharmony_ci vmlal.s32 q15, d11, d17 34162306a36Sopenharmony_ci vmlal.s32 q15, d12, d6 34262306a36Sopenharmony_ci vmlal.s32 q15, d13, d5 34362306a36Sopenharmony_ci vmlal.s32 q15, d19, d1 34462306a36Sopenharmony_ci vmlal.s32 q15, d14, d0 34562306a36Sopenharmony_ci vmull.s32 q2, d10, d9 34662306a36Sopenharmony_ci vmlal.s32 q2, d11, d8 34762306a36Sopenharmony_ci vmlal.s32 q2, d12, d7 34862306a36Sopenharmony_ci vmlal.s32 q2, d13, d6 34962306a36Sopenharmony_ci vmlal.s32 q2, d14, d1 35062306a36Sopenharmony_ci vmull.s32 q0, d15, d1 35162306a36Sopenharmony_ci vmlal.s32 q0, d10, d14 35262306a36Sopenharmony_ci vmlal.s32 q0, d11, d19 35362306a36Sopenharmony_ci vmlal.s32 q0, d12, d8 35462306a36Sopenharmony_ci vmlal.s32 q0, d13, d17 35562306a36Sopenharmony_ci vmlal.s32 q0, d6, d6 35662306a36Sopenharmony_ci add r2, sp, #480 35762306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128]! 35862306a36Sopenharmony_ci vmull.s32 q3, d16, d7 35962306a36Sopenharmony_ci vmlal.s32 q3, d10, d15 36062306a36Sopenharmony_ci vmlal.s32 q3, d11, d14 36162306a36Sopenharmony_ci vmlal.s32 q3, d12, d9 36262306a36Sopenharmony_ci vmlal.s32 q3, d13, d8 36362306a36Sopenharmony_ci vld1.8 {d8-d9}, [r2, : 128] 36462306a36Sopenharmony_ci vadd.i64 q5, q12, q9 36562306a36Sopenharmony_ci vadd.i64 q6, q15, q9 36662306a36Sopenharmony_ci vshr.s64 q5, q5, #26 36762306a36Sopenharmony_ci vshr.s64 q6, q6, #26 36862306a36Sopenharmony_ci vadd.i64 q7, q10, q5 36962306a36Sopenharmony_ci vshl.i64 q5, q5, #26 37062306a36Sopenharmony_ci vadd.i64 q8, q7, q4 37162306a36Sopenharmony_ci vadd.i64 q2, q2, q6 37262306a36Sopenharmony_ci vshl.i64 q6, q6, #26 37362306a36Sopenharmony_ci vadd.i64 q10, q2, q4 37462306a36Sopenharmony_ci vsub.i64 q5, q12, q5 37562306a36Sopenharmony_ci vshr.s64 q8, q8, #25 37662306a36Sopenharmony_ci vsub.i64 q6, q15, q6 37762306a36Sopenharmony_ci vshr.s64 q10, q10, #25 37862306a36Sopenharmony_ci vadd.i64 q12, q13, q8 37962306a36Sopenharmony_ci vshl.i64 q8, q8, #25 38062306a36Sopenharmony_ci vadd.i64 q13, q12, q9 38162306a36Sopenharmony_ci vadd.i64 q0, q0, q10 38262306a36Sopenharmony_ci vsub.i64 q7, q7, q8 38362306a36Sopenharmony_ci vshr.s64 q8, q13, #26 38462306a36Sopenharmony_ci vshl.i64 q10, q10, #25 38562306a36Sopenharmony_ci vadd.i64 q13, q0, q9 38662306a36Sopenharmony_ci vadd.i64 q1, q1, q8 38762306a36Sopenharmony_ci vshl.i64 q8, q8, #26 38862306a36Sopenharmony_ci vadd.i64 q15, q1, q4 38962306a36Sopenharmony_ci vsub.i64 q2, q2, q10 39062306a36Sopenharmony_ci vshr.s64 q10, q13, #26 39162306a36Sopenharmony_ci vsub.i64 q8, q12, q8 39262306a36Sopenharmony_ci vshr.s64 q12, q15, #25 39362306a36Sopenharmony_ci vadd.i64 q3, q3, q10 39462306a36Sopenharmony_ci vshl.i64 q10, q10, #26 39562306a36Sopenharmony_ci vadd.i64 q13, q3, q4 39662306a36Sopenharmony_ci vadd.i64 q14, q14, q12 39762306a36Sopenharmony_ci add r2, r3, #288 39862306a36Sopenharmony_ci vshl.i64 q12, q12, #25 39962306a36Sopenharmony_ci add r4, r3, #336 40062306a36Sopenharmony_ci vadd.i64 q15, q14, q9 40162306a36Sopenharmony_ci add r2, r2, #8 40262306a36Sopenharmony_ci vsub.i64 q0, q0, q10 40362306a36Sopenharmony_ci add r4, r4, #8 40462306a36Sopenharmony_ci vshr.s64 q10, q13, #25 40562306a36Sopenharmony_ci vsub.i64 q1, q1, q12 40662306a36Sopenharmony_ci vshr.s64 q12, q15, #26 40762306a36Sopenharmony_ci vadd.i64 q13, q10, q10 40862306a36Sopenharmony_ci vadd.i64 q11, q11, q12 40962306a36Sopenharmony_ci vtrn.32 d16, d2 41062306a36Sopenharmony_ci vshl.i64 q12, q12, #26 41162306a36Sopenharmony_ci vtrn.32 d17, d3 41262306a36Sopenharmony_ci vadd.i64 q1, q11, q4 41362306a36Sopenharmony_ci vadd.i64 q4, q5, q13 41462306a36Sopenharmony_ci vst1.8 d16, [r2, : 64]! 41562306a36Sopenharmony_ci vshl.i64 q5, q10, #4 41662306a36Sopenharmony_ci vst1.8 d17, [r4, : 64]! 41762306a36Sopenharmony_ci vsub.i64 q8, q14, q12 41862306a36Sopenharmony_ci vshr.s64 q1, q1, #25 41962306a36Sopenharmony_ci vadd.i64 q4, q4, q5 42062306a36Sopenharmony_ci vadd.i64 q5, q6, q1 42162306a36Sopenharmony_ci vshl.i64 q1, q1, #25 42262306a36Sopenharmony_ci vadd.i64 q6, q5, q9 42362306a36Sopenharmony_ci vadd.i64 q4, q4, q10 42462306a36Sopenharmony_ci vshl.i64 q10, q10, #25 42562306a36Sopenharmony_ci vadd.i64 q9, q4, q9 42662306a36Sopenharmony_ci vsub.i64 q1, q11, q1 42762306a36Sopenharmony_ci vshr.s64 q6, q6, #26 42862306a36Sopenharmony_ci vsub.i64 q3, q3, q10 42962306a36Sopenharmony_ci vtrn.32 d16, d2 43062306a36Sopenharmony_ci vshr.s64 q9, q9, #26 43162306a36Sopenharmony_ci vtrn.32 d17, d3 43262306a36Sopenharmony_ci vadd.i64 q1, q2, q6 43362306a36Sopenharmony_ci vst1.8 d16, [r2, : 64] 43462306a36Sopenharmony_ci vshl.i64 q2, q6, #26 43562306a36Sopenharmony_ci vst1.8 d17, [r4, : 64] 43662306a36Sopenharmony_ci vadd.i64 q6, q7, q9 43762306a36Sopenharmony_ci vtrn.32 d0, d6 43862306a36Sopenharmony_ci vshl.i64 q7, q9, #26 43962306a36Sopenharmony_ci vtrn.32 d1, d7 44062306a36Sopenharmony_ci vsub.i64 q2, q5, q2 44162306a36Sopenharmony_ci add r2, r2, #16 44262306a36Sopenharmony_ci vsub.i64 q3, q4, q7 44362306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 44462306a36Sopenharmony_ci add r4, r4, #16 44562306a36Sopenharmony_ci vst1.8 d1, [r4, : 64] 44662306a36Sopenharmony_ci vtrn.32 d4, d2 44762306a36Sopenharmony_ci vtrn.32 d5, d3 44862306a36Sopenharmony_ci sub r2, r2, #8 44962306a36Sopenharmony_ci sub r4, r4, #8 45062306a36Sopenharmony_ci vtrn.32 d6, d12 45162306a36Sopenharmony_ci vtrn.32 d7, d13 45262306a36Sopenharmony_ci vst1.8 d4, [r2, : 64] 45362306a36Sopenharmony_ci vst1.8 d5, [r4, : 64] 45462306a36Sopenharmony_ci sub r2, r2, #24 45562306a36Sopenharmony_ci sub r4, r4, #24 45662306a36Sopenharmony_ci vst1.8 d6, [r2, : 64] 45762306a36Sopenharmony_ci vst1.8 d7, [r4, : 64] 45862306a36Sopenharmony_ci add r2, r3, #240 45962306a36Sopenharmony_ci add r4, r3, #96 46062306a36Sopenharmony_ci vld1.8 {d0-d1}, [r4, : 128]! 46162306a36Sopenharmony_ci vld1.8 {d2-d3}, [r4, : 128]! 46262306a36Sopenharmony_ci vld1.8 {d4}, [r4, : 64] 46362306a36Sopenharmony_ci add r4, r3, #144 46462306a36Sopenharmony_ci vld1.8 {d6-d7}, [r4, : 128]! 46562306a36Sopenharmony_ci vtrn.32 q0, q3 46662306a36Sopenharmony_ci vld1.8 {d8-d9}, [r4, : 128]! 46762306a36Sopenharmony_ci vshl.i32 q5, q0, #4 46862306a36Sopenharmony_ci vtrn.32 q1, q4 46962306a36Sopenharmony_ci vshl.i32 q6, q3, #4 47062306a36Sopenharmony_ci vadd.i32 q5, q5, q0 47162306a36Sopenharmony_ci vadd.i32 q6, q6, q3 47262306a36Sopenharmony_ci vshl.i32 q7, q1, #4 47362306a36Sopenharmony_ci vld1.8 {d5}, [r4, : 64] 47462306a36Sopenharmony_ci vshl.i32 q8, q4, #4 47562306a36Sopenharmony_ci vtrn.32 d4, d5 47662306a36Sopenharmony_ci vadd.i32 q7, q7, q1 47762306a36Sopenharmony_ci vadd.i32 q8, q8, q4 47862306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128]! 47962306a36Sopenharmony_ci vshl.i32 q10, q2, #4 48062306a36Sopenharmony_ci vld1.8 {d22-d23}, [r2, : 128]! 48162306a36Sopenharmony_ci vadd.i32 q10, q10, q2 48262306a36Sopenharmony_ci vld1.8 {d24}, [r2, : 64] 48362306a36Sopenharmony_ci vadd.i32 q5, q5, q0 48462306a36Sopenharmony_ci add r2, r3, #192 48562306a36Sopenharmony_ci vld1.8 {d26-d27}, [r2, : 128]! 48662306a36Sopenharmony_ci vadd.i32 q6, q6, q3 48762306a36Sopenharmony_ci vld1.8 {d28-d29}, [r2, : 128]! 48862306a36Sopenharmony_ci vadd.i32 q8, q8, q4 48962306a36Sopenharmony_ci vld1.8 {d25}, [r2, : 64] 49062306a36Sopenharmony_ci vadd.i32 q10, q10, q2 49162306a36Sopenharmony_ci vtrn.32 q9, q13 49262306a36Sopenharmony_ci vadd.i32 q7, q7, q1 49362306a36Sopenharmony_ci vadd.i32 q5, q5, q0 49462306a36Sopenharmony_ci vtrn.32 q11, q14 49562306a36Sopenharmony_ci vadd.i32 q6, q6, q3 49662306a36Sopenharmony_ci add r2, sp, #528 49762306a36Sopenharmony_ci vadd.i32 q10, q10, q2 49862306a36Sopenharmony_ci vtrn.32 d24, d25 49962306a36Sopenharmony_ci vst1.8 {d12-d13}, [r2, : 128]! 50062306a36Sopenharmony_ci vshl.i32 q6, q13, #1 50162306a36Sopenharmony_ci vst1.8 {d20-d21}, [r2, : 128]! 50262306a36Sopenharmony_ci vshl.i32 q10, q14, #1 50362306a36Sopenharmony_ci vst1.8 {d12-d13}, [r2, : 128]! 50462306a36Sopenharmony_ci vshl.i32 q15, q12, #1 50562306a36Sopenharmony_ci vadd.i32 q8, q8, q4 50662306a36Sopenharmony_ci vext.32 d10, d31, d30, #0 50762306a36Sopenharmony_ci vadd.i32 q7, q7, q1 50862306a36Sopenharmony_ci vst1.8 {d16-d17}, [r2, : 128]! 50962306a36Sopenharmony_ci vmull.s32 q8, d18, d5 51062306a36Sopenharmony_ci vmlal.s32 q8, d26, d4 51162306a36Sopenharmony_ci vmlal.s32 q8, d19, d9 51262306a36Sopenharmony_ci vmlal.s32 q8, d27, d3 51362306a36Sopenharmony_ci vmlal.s32 q8, d22, d8 51462306a36Sopenharmony_ci vmlal.s32 q8, d28, d2 51562306a36Sopenharmony_ci vmlal.s32 q8, d23, d7 51662306a36Sopenharmony_ci vmlal.s32 q8, d29, d1 51762306a36Sopenharmony_ci vmlal.s32 q8, d24, d6 51862306a36Sopenharmony_ci vmlal.s32 q8, d25, d0 51962306a36Sopenharmony_ci vst1.8 {d14-d15}, [r2, : 128]! 52062306a36Sopenharmony_ci vmull.s32 q2, d18, d4 52162306a36Sopenharmony_ci vmlal.s32 q2, d12, d9 52262306a36Sopenharmony_ci vmlal.s32 q2, d13, d8 52362306a36Sopenharmony_ci vmlal.s32 q2, d19, d3 52462306a36Sopenharmony_ci vmlal.s32 q2, d22, d2 52562306a36Sopenharmony_ci vmlal.s32 q2, d23, d1 52662306a36Sopenharmony_ci vmlal.s32 q2, d24, d0 52762306a36Sopenharmony_ci vst1.8 {d20-d21}, [r2, : 128]! 52862306a36Sopenharmony_ci vmull.s32 q7, d18, d9 52962306a36Sopenharmony_ci vmlal.s32 q7, d26, d3 53062306a36Sopenharmony_ci vmlal.s32 q7, d19, d8 53162306a36Sopenharmony_ci vmlal.s32 q7, d27, d2 53262306a36Sopenharmony_ci vmlal.s32 q7, d22, d7 53362306a36Sopenharmony_ci vmlal.s32 q7, d28, d1 53462306a36Sopenharmony_ci vmlal.s32 q7, d23, d6 53562306a36Sopenharmony_ci vmlal.s32 q7, d29, d0 53662306a36Sopenharmony_ci vst1.8 {d10-d11}, [r2, : 128]! 53762306a36Sopenharmony_ci vmull.s32 q5, d18, d3 53862306a36Sopenharmony_ci vmlal.s32 q5, d19, d2 53962306a36Sopenharmony_ci vmlal.s32 q5, d22, d1 54062306a36Sopenharmony_ci vmlal.s32 q5, d23, d0 54162306a36Sopenharmony_ci vmlal.s32 q5, d12, d8 54262306a36Sopenharmony_ci vst1.8 {d16-d17}, [r2, : 128] 54362306a36Sopenharmony_ci vmull.s32 q4, d18, d8 54462306a36Sopenharmony_ci vmlal.s32 q4, d26, d2 54562306a36Sopenharmony_ci vmlal.s32 q4, d19, d7 54662306a36Sopenharmony_ci vmlal.s32 q4, d27, d1 54762306a36Sopenharmony_ci vmlal.s32 q4, d22, d6 54862306a36Sopenharmony_ci vmlal.s32 q4, d28, d0 54962306a36Sopenharmony_ci vmull.s32 q8, d18, d7 55062306a36Sopenharmony_ci vmlal.s32 q8, d26, d1 55162306a36Sopenharmony_ci vmlal.s32 q8, d19, d6 55262306a36Sopenharmony_ci vmlal.s32 q8, d27, d0 55362306a36Sopenharmony_ci add r2, sp, #544 55462306a36Sopenharmony_ci vld1.8 {d20-d21}, [r2, : 128] 55562306a36Sopenharmony_ci vmlal.s32 q7, d24, d21 55662306a36Sopenharmony_ci vmlal.s32 q7, d25, d20 55762306a36Sopenharmony_ci vmlal.s32 q4, d23, d21 55862306a36Sopenharmony_ci vmlal.s32 q4, d29, d20 55962306a36Sopenharmony_ci vmlal.s32 q8, d22, d21 56062306a36Sopenharmony_ci vmlal.s32 q8, d28, d20 56162306a36Sopenharmony_ci vmlal.s32 q5, d24, d20 56262306a36Sopenharmony_ci vst1.8 {d14-d15}, [r2, : 128] 56362306a36Sopenharmony_ci vmull.s32 q7, d18, d6 56462306a36Sopenharmony_ci vmlal.s32 q7, d26, d0 56562306a36Sopenharmony_ci add r2, sp, #624 56662306a36Sopenharmony_ci vld1.8 {d30-d31}, [r2, : 128] 56762306a36Sopenharmony_ci vmlal.s32 q2, d30, d21 56862306a36Sopenharmony_ci vmlal.s32 q7, d19, d21 56962306a36Sopenharmony_ci vmlal.s32 q7, d27, d20 57062306a36Sopenharmony_ci add r2, sp, #592 57162306a36Sopenharmony_ci vld1.8 {d26-d27}, [r2, : 128] 57262306a36Sopenharmony_ci vmlal.s32 q4, d25, d27 57362306a36Sopenharmony_ci vmlal.s32 q8, d29, d27 57462306a36Sopenharmony_ci vmlal.s32 q8, d25, d26 57562306a36Sopenharmony_ci vmlal.s32 q7, d28, d27 57662306a36Sopenharmony_ci vmlal.s32 q7, d29, d26 57762306a36Sopenharmony_ci add r2, sp, #576 57862306a36Sopenharmony_ci vld1.8 {d28-d29}, [r2, : 128] 57962306a36Sopenharmony_ci vmlal.s32 q4, d24, d29 58062306a36Sopenharmony_ci vmlal.s32 q8, d23, d29 58162306a36Sopenharmony_ci vmlal.s32 q8, d24, d28 58262306a36Sopenharmony_ci vmlal.s32 q7, d22, d29 58362306a36Sopenharmony_ci vmlal.s32 q7, d23, d28 58462306a36Sopenharmony_ci vst1.8 {d8-d9}, [r2, : 128] 58562306a36Sopenharmony_ci add r2, sp, #528 58662306a36Sopenharmony_ci vld1.8 {d8-d9}, [r2, : 128] 58762306a36Sopenharmony_ci vmlal.s32 q7, d24, d9 58862306a36Sopenharmony_ci vmlal.s32 q7, d25, d31 58962306a36Sopenharmony_ci vmull.s32 q1, d18, d2 59062306a36Sopenharmony_ci vmlal.s32 q1, d19, d1 59162306a36Sopenharmony_ci vmlal.s32 q1, d22, d0 59262306a36Sopenharmony_ci vmlal.s32 q1, d24, d27 59362306a36Sopenharmony_ci vmlal.s32 q1, d23, d20 59462306a36Sopenharmony_ci vmlal.s32 q1, d12, d7 59562306a36Sopenharmony_ci vmlal.s32 q1, d13, d6 59662306a36Sopenharmony_ci vmull.s32 q6, d18, d1 59762306a36Sopenharmony_ci vmlal.s32 q6, d19, d0 59862306a36Sopenharmony_ci vmlal.s32 q6, d23, d27 59962306a36Sopenharmony_ci vmlal.s32 q6, d22, d20 60062306a36Sopenharmony_ci vmlal.s32 q6, d24, d26 60162306a36Sopenharmony_ci vmull.s32 q0, d18, d0 60262306a36Sopenharmony_ci vmlal.s32 q0, d22, d27 60362306a36Sopenharmony_ci vmlal.s32 q0, d23, d26 60462306a36Sopenharmony_ci vmlal.s32 q0, d24, d31 60562306a36Sopenharmony_ci vmlal.s32 q0, d19, d20 60662306a36Sopenharmony_ci add r2, sp, #608 60762306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 60862306a36Sopenharmony_ci vmlal.s32 q2, d18, d7 60962306a36Sopenharmony_ci vmlal.s32 q5, d18, d6 61062306a36Sopenharmony_ci vmlal.s32 q1, d18, d21 61162306a36Sopenharmony_ci vmlal.s32 q0, d18, d28 61262306a36Sopenharmony_ci vmlal.s32 q6, d18, d29 61362306a36Sopenharmony_ci vmlal.s32 q2, d19, d6 61462306a36Sopenharmony_ci vmlal.s32 q5, d19, d21 61562306a36Sopenharmony_ci vmlal.s32 q1, d19, d29 61662306a36Sopenharmony_ci vmlal.s32 q0, d19, d9 61762306a36Sopenharmony_ci vmlal.s32 q6, d19, d28 61862306a36Sopenharmony_ci add r2, sp, #560 61962306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 62062306a36Sopenharmony_ci add r2, sp, #480 62162306a36Sopenharmony_ci vld1.8 {d22-d23}, [r2, : 128] 62262306a36Sopenharmony_ci vmlal.s32 q5, d19, d7 62362306a36Sopenharmony_ci vmlal.s32 q0, d18, d21 62462306a36Sopenharmony_ci vmlal.s32 q0, d19, d29 62562306a36Sopenharmony_ci vmlal.s32 q6, d18, d6 62662306a36Sopenharmony_ci add r2, sp, #496 62762306a36Sopenharmony_ci vld1.8 {d6-d7}, [r2, : 128] 62862306a36Sopenharmony_ci vmlal.s32 q6, d19, d21 62962306a36Sopenharmony_ci add r2, sp, #544 63062306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 63162306a36Sopenharmony_ci vmlal.s32 q0, d30, d8 63262306a36Sopenharmony_ci add r2, sp, #640 63362306a36Sopenharmony_ci vld1.8 {d20-d21}, [r2, : 128] 63462306a36Sopenharmony_ci vmlal.s32 q5, d30, d29 63562306a36Sopenharmony_ci add r2, sp, #576 63662306a36Sopenharmony_ci vld1.8 {d24-d25}, [r2, : 128] 63762306a36Sopenharmony_ci vmlal.s32 q1, d30, d28 63862306a36Sopenharmony_ci vadd.i64 q13, q0, q11 63962306a36Sopenharmony_ci vadd.i64 q14, q5, q11 64062306a36Sopenharmony_ci vmlal.s32 q6, d30, d9 64162306a36Sopenharmony_ci vshr.s64 q4, q13, #26 64262306a36Sopenharmony_ci vshr.s64 q13, q14, #26 64362306a36Sopenharmony_ci vadd.i64 q7, q7, q4 64462306a36Sopenharmony_ci vshl.i64 q4, q4, #26 64562306a36Sopenharmony_ci vadd.i64 q14, q7, q3 64662306a36Sopenharmony_ci vadd.i64 q9, q9, q13 64762306a36Sopenharmony_ci vshl.i64 q13, q13, #26 64862306a36Sopenharmony_ci vadd.i64 q15, q9, q3 64962306a36Sopenharmony_ci vsub.i64 q0, q0, q4 65062306a36Sopenharmony_ci vshr.s64 q4, q14, #25 65162306a36Sopenharmony_ci vsub.i64 q5, q5, q13 65262306a36Sopenharmony_ci vshr.s64 q13, q15, #25 65362306a36Sopenharmony_ci vadd.i64 q6, q6, q4 65462306a36Sopenharmony_ci vshl.i64 q4, q4, #25 65562306a36Sopenharmony_ci vadd.i64 q14, q6, q11 65662306a36Sopenharmony_ci vadd.i64 q2, q2, q13 65762306a36Sopenharmony_ci vsub.i64 q4, q7, q4 65862306a36Sopenharmony_ci vshr.s64 q7, q14, #26 65962306a36Sopenharmony_ci vshl.i64 q13, q13, #25 66062306a36Sopenharmony_ci vadd.i64 q14, q2, q11 66162306a36Sopenharmony_ci vadd.i64 q8, q8, q7 66262306a36Sopenharmony_ci vshl.i64 q7, q7, #26 66362306a36Sopenharmony_ci vadd.i64 q15, q8, q3 66462306a36Sopenharmony_ci vsub.i64 q9, q9, q13 66562306a36Sopenharmony_ci vshr.s64 q13, q14, #26 66662306a36Sopenharmony_ci vsub.i64 q6, q6, q7 66762306a36Sopenharmony_ci vshr.s64 q7, q15, #25 66862306a36Sopenharmony_ci vadd.i64 q10, q10, q13 66962306a36Sopenharmony_ci vshl.i64 q13, q13, #26 67062306a36Sopenharmony_ci vadd.i64 q14, q10, q3 67162306a36Sopenharmony_ci vadd.i64 q1, q1, q7 67262306a36Sopenharmony_ci add r2, r3, #144 67362306a36Sopenharmony_ci vshl.i64 q7, q7, #25 67462306a36Sopenharmony_ci add r4, r3, #96 67562306a36Sopenharmony_ci vadd.i64 q15, q1, q11 67662306a36Sopenharmony_ci add r2, r2, #8 67762306a36Sopenharmony_ci vsub.i64 q2, q2, q13 67862306a36Sopenharmony_ci add r4, r4, #8 67962306a36Sopenharmony_ci vshr.s64 q13, q14, #25 68062306a36Sopenharmony_ci vsub.i64 q7, q8, q7 68162306a36Sopenharmony_ci vshr.s64 q8, q15, #26 68262306a36Sopenharmony_ci vadd.i64 q14, q13, q13 68362306a36Sopenharmony_ci vadd.i64 q12, q12, q8 68462306a36Sopenharmony_ci vtrn.32 d12, d14 68562306a36Sopenharmony_ci vshl.i64 q8, q8, #26 68662306a36Sopenharmony_ci vtrn.32 d13, d15 68762306a36Sopenharmony_ci vadd.i64 q3, q12, q3 68862306a36Sopenharmony_ci vadd.i64 q0, q0, q14 68962306a36Sopenharmony_ci vst1.8 d12, [r2, : 64]! 69062306a36Sopenharmony_ci vshl.i64 q7, q13, #4 69162306a36Sopenharmony_ci vst1.8 d13, [r4, : 64]! 69262306a36Sopenharmony_ci vsub.i64 q1, q1, q8 69362306a36Sopenharmony_ci vshr.s64 q3, q3, #25 69462306a36Sopenharmony_ci vadd.i64 q0, q0, q7 69562306a36Sopenharmony_ci vadd.i64 q5, q5, q3 69662306a36Sopenharmony_ci vshl.i64 q3, q3, #25 69762306a36Sopenharmony_ci vadd.i64 q6, q5, q11 69862306a36Sopenharmony_ci vadd.i64 q0, q0, q13 69962306a36Sopenharmony_ci vshl.i64 q7, q13, #25 70062306a36Sopenharmony_ci vadd.i64 q8, q0, q11 70162306a36Sopenharmony_ci vsub.i64 q3, q12, q3 70262306a36Sopenharmony_ci vshr.s64 q6, q6, #26 70362306a36Sopenharmony_ci vsub.i64 q7, q10, q7 70462306a36Sopenharmony_ci vtrn.32 d2, d6 70562306a36Sopenharmony_ci vshr.s64 q8, q8, #26 70662306a36Sopenharmony_ci vtrn.32 d3, d7 70762306a36Sopenharmony_ci vadd.i64 q3, q9, q6 70862306a36Sopenharmony_ci vst1.8 d2, [r2, : 64] 70962306a36Sopenharmony_ci vshl.i64 q6, q6, #26 71062306a36Sopenharmony_ci vst1.8 d3, [r4, : 64] 71162306a36Sopenharmony_ci vadd.i64 q1, q4, q8 71262306a36Sopenharmony_ci vtrn.32 d4, d14 71362306a36Sopenharmony_ci vshl.i64 q4, q8, #26 71462306a36Sopenharmony_ci vtrn.32 d5, d15 71562306a36Sopenharmony_ci vsub.i64 q5, q5, q6 71662306a36Sopenharmony_ci add r2, r2, #16 71762306a36Sopenharmony_ci vsub.i64 q0, q0, q4 71862306a36Sopenharmony_ci vst1.8 d4, [r2, : 64] 71962306a36Sopenharmony_ci add r4, r4, #16 72062306a36Sopenharmony_ci vst1.8 d5, [r4, : 64] 72162306a36Sopenharmony_ci vtrn.32 d10, d6 72262306a36Sopenharmony_ci vtrn.32 d11, d7 72362306a36Sopenharmony_ci sub r2, r2, #8 72462306a36Sopenharmony_ci sub r4, r4, #8 72562306a36Sopenharmony_ci vtrn.32 d0, d2 72662306a36Sopenharmony_ci vtrn.32 d1, d3 72762306a36Sopenharmony_ci vst1.8 d10, [r2, : 64] 72862306a36Sopenharmony_ci vst1.8 d11, [r4, : 64] 72962306a36Sopenharmony_ci sub r2, r2, #24 73062306a36Sopenharmony_ci sub r4, r4, #24 73162306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 73262306a36Sopenharmony_ci vst1.8 d1, [r4, : 64] 73362306a36Sopenharmony_ci add r2, r3, #288 73462306a36Sopenharmony_ci add r4, r3, #336 73562306a36Sopenharmony_ci vld1.8 {d0-d1}, [r2, : 128]! 73662306a36Sopenharmony_ci vld1.8 {d2-d3}, [r4, : 128]! 73762306a36Sopenharmony_ci vsub.i32 q0, q0, q1 73862306a36Sopenharmony_ci vld1.8 {d2-d3}, [r2, : 128]! 73962306a36Sopenharmony_ci vld1.8 {d4-d5}, [r4, : 128]! 74062306a36Sopenharmony_ci vsub.i32 q1, q1, q2 74162306a36Sopenharmony_ci add r5, r3, #240 74262306a36Sopenharmony_ci vld1.8 {d4}, [r2, : 64] 74362306a36Sopenharmony_ci vld1.8 {d6}, [r4, : 64] 74462306a36Sopenharmony_ci vsub.i32 q2, q2, q3 74562306a36Sopenharmony_ci vst1.8 {d0-d1}, [r5, : 128]! 74662306a36Sopenharmony_ci vst1.8 {d2-d3}, [r5, : 128]! 74762306a36Sopenharmony_ci vst1.8 d4, [r5, : 64] 74862306a36Sopenharmony_ci add r2, r3, #144 74962306a36Sopenharmony_ci add r4, r3, #96 75062306a36Sopenharmony_ci add r5, r3, #144 75162306a36Sopenharmony_ci add r6, r3, #192 75262306a36Sopenharmony_ci vld1.8 {d0-d1}, [r2, : 128]! 75362306a36Sopenharmony_ci vld1.8 {d2-d3}, [r4, : 128]! 75462306a36Sopenharmony_ci vsub.i32 q2, q0, q1 75562306a36Sopenharmony_ci vadd.i32 q0, q0, q1 75662306a36Sopenharmony_ci vld1.8 {d2-d3}, [r2, : 128]! 75762306a36Sopenharmony_ci vld1.8 {d6-d7}, [r4, : 128]! 75862306a36Sopenharmony_ci vsub.i32 q4, q1, q3 75962306a36Sopenharmony_ci vadd.i32 q1, q1, q3 76062306a36Sopenharmony_ci vld1.8 {d6}, [r2, : 64] 76162306a36Sopenharmony_ci vld1.8 {d10}, [r4, : 64] 76262306a36Sopenharmony_ci vsub.i32 q6, q3, q5 76362306a36Sopenharmony_ci vadd.i32 q3, q3, q5 76462306a36Sopenharmony_ci vst1.8 {d4-d5}, [r5, : 128]! 76562306a36Sopenharmony_ci vst1.8 {d0-d1}, [r6, : 128]! 76662306a36Sopenharmony_ci vst1.8 {d8-d9}, [r5, : 128]! 76762306a36Sopenharmony_ci vst1.8 {d2-d3}, [r6, : 128]! 76862306a36Sopenharmony_ci vst1.8 d12, [r5, : 64] 76962306a36Sopenharmony_ci vst1.8 d6, [r6, : 64] 77062306a36Sopenharmony_ci add r2, r3, #0 77162306a36Sopenharmony_ci add r4, r3, #240 77262306a36Sopenharmony_ci vld1.8 {d0-d1}, [r4, : 128]! 77362306a36Sopenharmony_ci vld1.8 {d2-d3}, [r4, : 128]! 77462306a36Sopenharmony_ci vld1.8 {d4}, [r4, : 64] 77562306a36Sopenharmony_ci add r4, r3, #336 77662306a36Sopenharmony_ci vld1.8 {d6-d7}, [r4, : 128]! 77762306a36Sopenharmony_ci vtrn.32 q0, q3 77862306a36Sopenharmony_ci vld1.8 {d8-d9}, [r4, : 128]! 77962306a36Sopenharmony_ci vshl.i32 q5, q0, #4 78062306a36Sopenharmony_ci vtrn.32 q1, q4 78162306a36Sopenharmony_ci vshl.i32 q6, q3, #4 78262306a36Sopenharmony_ci vadd.i32 q5, q5, q0 78362306a36Sopenharmony_ci vadd.i32 q6, q6, q3 78462306a36Sopenharmony_ci vshl.i32 q7, q1, #4 78562306a36Sopenharmony_ci vld1.8 {d5}, [r4, : 64] 78662306a36Sopenharmony_ci vshl.i32 q8, q4, #4 78762306a36Sopenharmony_ci vtrn.32 d4, d5 78862306a36Sopenharmony_ci vadd.i32 q7, q7, q1 78962306a36Sopenharmony_ci vadd.i32 q8, q8, q4 79062306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128]! 79162306a36Sopenharmony_ci vshl.i32 q10, q2, #4 79262306a36Sopenharmony_ci vld1.8 {d22-d23}, [r2, : 128]! 79362306a36Sopenharmony_ci vadd.i32 q10, q10, q2 79462306a36Sopenharmony_ci vld1.8 {d24}, [r2, : 64] 79562306a36Sopenharmony_ci vadd.i32 q5, q5, q0 79662306a36Sopenharmony_ci add r2, r3, #288 79762306a36Sopenharmony_ci vld1.8 {d26-d27}, [r2, : 128]! 79862306a36Sopenharmony_ci vadd.i32 q6, q6, q3 79962306a36Sopenharmony_ci vld1.8 {d28-d29}, [r2, : 128]! 80062306a36Sopenharmony_ci vadd.i32 q8, q8, q4 80162306a36Sopenharmony_ci vld1.8 {d25}, [r2, : 64] 80262306a36Sopenharmony_ci vadd.i32 q10, q10, q2 80362306a36Sopenharmony_ci vtrn.32 q9, q13 80462306a36Sopenharmony_ci vadd.i32 q7, q7, q1 80562306a36Sopenharmony_ci vadd.i32 q5, q5, q0 80662306a36Sopenharmony_ci vtrn.32 q11, q14 80762306a36Sopenharmony_ci vadd.i32 q6, q6, q3 80862306a36Sopenharmony_ci add r2, sp, #528 80962306a36Sopenharmony_ci vadd.i32 q10, q10, q2 81062306a36Sopenharmony_ci vtrn.32 d24, d25 81162306a36Sopenharmony_ci vst1.8 {d12-d13}, [r2, : 128]! 81262306a36Sopenharmony_ci vshl.i32 q6, q13, #1 81362306a36Sopenharmony_ci vst1.8 {d20-d21}, [r2, : 128]! 81462306a36Sopenharmony_ci vshl.i32 q10, q14, #1 81562306a36Sopenharmony_ci vst1.8 {d12-d13}, [r2, : 128]! 81662306a36Sopenharmony_ci vshl.i32 q15, q12, #1 81762306a36Sopenharmony_ci vadd.i32 q8, q8, q4 81862306a36Sopenharmony_ci vext.32 d10, d31, d30, #0 81962306a36Sopenharmony_ci vadd.i32 q7, q7, q1 82062306a36Sopenharmony_ci vst1.8 {d16-d17}, [r2, : 128]! 82162306a36Sopenharmony_ci vmull.s32 q8, d18, d5 82262306a36Sopenharmony_ci vmlal.s32 q8, d26, d4 82362306a36Sopenharmony_ci vmlal.s32 q8, d19, d9 82462306a36Sopenharmony_ci vmlal.s32 q8, d27, d3 82562306a36Sopenharmony_ci vmlal.s32 q8, d22, d8 82662306a36Sopenharmony_ci vmlal.s32 q8, d28, d2 82762306a36Sopenharmony_ci vmlal.s32 q8, d23, d7 82862306a36Sopenharmony_ci vmlal.s32 q8, d29, d1 82962306a36Sopenharmony_ci vmlal.s32 q8, d24, d6 83062306a36Sopenharmony_ci vmlal.s32 q8, d25, d0 83162306a36Sopenharmony_ci vst1.8 {d14-d15}, [r2, : 128]! 83262306a36Sopenharmony_ci vmull.s32 q2, d18, d4 83362306a36Sopenharmony_ci vmlal.s32 q2, d12, d9 83462306a36Sopenharmony_ci vmlal.s32 q2, d13, d8 83562306a36Sopenharmony_ci vmlal.s32 q2, d19, d3 83662306a36Sopenharmony_ci vmlal.s32 q2, d22, d2 83762306a36Sopenharmony_ci vmlal.s32 q2, d23, d1 83862306a36Sopenharmony_ci vmlal.s32 q2, d24, d0 83962306a36Sopenharmony_ci vst1.8 {d20-d21}, [r2, : 128]! 84062306a36Sopenharmony_ci vmull.s32 q7, d18, d9 84162306a36Sopenharmony_ci vmlal.s32 q7, d26, d3 84262306a36Sopenharmony_ci vmlal.s32 q7, d19, d8 84362306a36Sopenharmony_ci vmlal.s32 q7, d27, d2 84462306a36Sopenharmony_ci vmlal.s32 q7, d22, d7 84562306a36Sopenharmony_ci vmlal.s32 q7, d28, d1 84662306a36Sopenharmony_ci vmlal.s32 q7, d23, d6 84762306a36Sopenharmony_ci vmlal.s32 q7, d29, d0 84862306a36Sopenharmony_ci vst1.8 {d10-d11}, [r2, : 128]! 84962306a36Sopenharmony_ci vmull.s32 q5, d18, d3 85062306a36Sopenharmony_ci vmlal.s32 q5, d19, d2 85162306a36Sopenharmony_ci vmlal.s32 q5, d22, d1 85262306a36Sopenharmony_ci vmlal.s32 q5, d23, d0 85362306a36Sopenharmony_ci vmlal.s32 q5, d12, d8 85462306a36Sopenharmony_ci vst1.8 {d16-d17}, [r2, : 128]! 85562306a36Sopenharmony_ci vmull.s32 q4, d18, d8 85662306a36Sopenharmony_ci vmlal.s32 q4, d26, d2 85762306a36Sopenharmony_ci vmlal.s32 q4, d19, d7 85862306a36Sopenharmony_ci vmlal.s32 q4, d27, d1 85962306a36Sopenharmony_ci vmlal.s32 q4, d22, d6 86062306a36Sopenharmony_ci vmlal.s32 q4, d28, d0 86162306a36Sopenharmony_ci vmull.s32 q8, d18, d7 86262306a36Sopenharmony_ci vmlal.s32 q8, d26, d1 86362306a36Sopenharmony_ci vmlal.s32 q8, d19, d6 86462306a36Sopenharmony_ci vmlal.s32 q8, d27, d0 86562306a36Sopenharmony_ci add r2, sp, #544 86662306a36Sopenharmony_ci vld1.8 {d20-d21}, [r2, : 128] 86762306a36Sopenharmony_ci vmlal.s32 q7, d24, d21 86862306a36Sopenharmony_ci vmlal.s32 q7, d25, d20 86962306a36Sopenharmony_ci vmlal.s32 q4, d23, d21 87062306a36Sopenharmony_ci vmlal.s32 q4, d29, d20 87162306a36Sopenharmony_ci vmlal.s32 q8, d22, d21 87262306a36Sopenharmony_ci vmlal.s32 q8, d28, d20 87362306a36Sopenharmony_ci vmlal.s32 q5, d24, d20 87462306a36Sopenharmony_ci vst1.8 {d14-d15}, [r2, : 128] 87562306a36Sopenharmony_ci vmull.s32 q7, d18, d6 87662306a36Sopenharmony_ci vmlal.s32 q7, d26, d0 87762306a36Sopenharmony_ci add r2, sp, #624 87862306a36Sopenharmony_ci vld1.8 {d30-d31}, [r2, : 128] 87962306a36Sopenharmony_ci vmlal.s32 q2, d30, d21 88062306a36Sopenharmony_ci vmlal.s32 q7, d19, d21 88162306a36Sopenharmony_ci vmlal.s32 q7, d27, d20 88262306a36Sopenharmony_ci add r2, sp, #592 88362306a36Sopenharmony_ci vld1.8 {d26-d27}, [r2, : 128] 88462306a36Sopenharmony_ci vmlal.s32 q4, d25, d27 88562306a36Sopenharmony_ci vmlal.s32 q8, d29, d27 88662306a36Sopenharmony_ci vmlal.s32 q8, d25, d26 88762306a36Sopenharmony_ci vmlal.s32 q7, d28, d27 88862306a36Sopenharmony_ci vmlal.s32 q7, d29, d26 88962306a36Sopenharmony_ci add r2, sp, #576 89062306a36Sopenharmony_ci vld1.8 {d28-d29}, [r2, : 128] 89162306a36Sopenharmony_ci vmlal.s32 q4, d24, d29 89262306a36Sopenharmony_ci vmlal.s32 q8, d23, d29 89362306a36Sopenharmony_ci vmlal.s32 q8, d24, d28 89462306a36Sopenharmony_ci vmlal.s32 q7, d22, d29 89562306a36Sopenharmony_ci vmlal.s32 q7, d23, d28 89662306a36Sopenharmony_ci vst1.8 {d8-d9}, [r2, : 128] 89762306a36Sopenharmony_ci add r2, sp, #528 89862306a36Sopenharmony_ci vld1.8 {d8-d9}, [r2, : 128] 89962306a36Sopenharmony_ci vmlal.s32 q7, d24, d9 90062306a36Sopenharmony_ci vmlal.s32 q7, d25, d31 90162306a36Sopenharmony_ci vmull.s32 q1, d18, d2 90262306a36Sopenharmony_ci vmlal.s32 q1, d19, d1 90362306a36Sopenharmony_ci vmlal.s32 q1, d22, d0 90462306a36Sopenharmony_ci vmlal.s32 q1, d24, d27 90562306a36Sopenharmony_ci vmlal.s32 q1, d23, d20 90662306a36Sopenharmony_ci vmlal.s32 q1, d12, d7 90762306a36Sopenharmony_ci vmlal.s32 q1, d13, d6 90862306a36Sopenharmony_ci vmull.s32 q6, d18, d1 90962306a36Sopenharmony_ci vmlal.s32 q6, d19, d0 91062306a36Sopenharmony_ci vmlal.s32 q6, d23, d27 91162306a36Sopenharmony_ci vmlal.s32 q6, d22, d20 91262306a36Sopenharmony_ci vmlal.s32 q6, d24, d26 91362306a36Sopenharmony_ci vmull.s32 q0, d18, d0 91462306a36Sopenharmony_ci vmlal.s32 q0, d22, d27 91562306a36Sopenharmony_ci vmlal.s32 q0, d23, d26 91662306a36Sopenharmony_ci vmlal.s32 q0, d24, d31 91762306a36Sopenharmony_ci vmlal.s32 q0, d19, d20 91862306a36Sopenharmony_ci add r2, sp, #608 91962306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 92062306a36Sopenharmony_ci vmlal.s32 q2, d18, d7 92162306a36Sopenharmony_ci vmlal.s32 q5, d18, d6 92262306a36Sopenharmony_ci vmlal.s32 q1, d18, d21 92362306a36Sopenharmony_ci vmlal.s32 q0, d18, d28 92462306a36Sopenharmony_ci vmlal.s32 q6, d18, d29 92562306a36Sopenharmony_ci vmlal.s32 q2, d19, d6 92662306a36Sopenharmony_ci vmlal.s32 q5, d19, d21 92762306a36Sopenharmony_ci vmlal.s32 q1, d19, d29 92862306a36Sopenharmony_ci vmlal.s32 q0, d19, d9 92962306a36Sopenharmony_ci vmlal.s32 q6, d19, d28 93062306a36Sopenharmony_ci add r2, sp, #560 93162306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 93262306a36Sopenharmony_ci add r2, sp, #480 93362306a36Sopenharmony_ci vld1.8 {d22-d23}, [r2, : 128] 93462306a36Sopenharmony_ci vmlal.s32 q5, d19, d7 93562306a36Sopenharmony_ci vmlal.s32 q0, d18, d21 93662306a36Sopenharmony_ci vmlal.s32 q0, d19, d29 93762306a36Sopenharmony_ci vmlal.s32 q6, d18, d6 93862306a36Sopenharmony_ci add r2, sp, #496 93962306a36Sopenharmony_ci vld1.8 {d6-d7}, [r2, : 128] 94062306a36Sopenharmony_ci vmlal.s32 q6, d19, d21 94162306a36Sopenharmony_ci add r2, sp, #544 94262306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 94362306a36Sopenharmony_ci vmlal.s32 q0, d30, d8 94462306a36Sopenharmony_ci add r2, sp, #640 94562306a36Sopenharmony_ci vld1.8 {d20-d21}, [r2, : 128] 94662306a36Sopenharmony_ci vmlal.s32 q5, d30, d29 94762306a36Sopenharmony_ci add r2, sp, #576 94862306a36Sopenharmony_ci vld1.8 {d24-d25}, [r2, : 128] 94962306a36Sopenharmony_ci vmlal.s32 q1, d30, d28 95062306a36Sopenharmony_ci vadd.i64 q13, q0, q11 95162306a36Sopenharmony_ci vadd.i64 q14, q5, q11 95262306a36Sopenharmony_ci vmlal.s32 q6, d30, d9 95362306a36Sopenharmony_ci vshr.s64 q4, q13, #26 95462306a36Sopenharmony_ci vshr.s64 q13, q14, #26 95562306a36Sopenharmony_ci vadd.i64 q7, q7, q4 95662306a36Sopenharmony_ci vshl.i64 q4, q4, #26 95762306a36Sopenharmony_ci vadd.i64 q14, q7, q3 95862306a36Sopenharmony_ci vadd.i64 q9, q9, q13 95962306a36Sopenharmony_ci vshl.i64 q13, q13, #26 96062306a36Sopenharmony_ci vadd.i64 q15, q9, q3 96162306a36Sopenharmony_ci vsub.i64 q0, q0, q4 96262306a36Sopenharmony_ci vshr.s64 q4, q14, #25 96362306a36Sopenharmony_ci vsub.i64 q5, q5, q13 96462306a36Sopenharmony_ci vshr.s64 q13, q15, #25 96562306a36Sopenharmony_ci vadd.i64 q6, q6, q4 96662306a36Sopenharmony_ci vshl.i64 q4, q4, #25 96762306a36Sopenharmony_ci vadd.i64 q14, q6, q11 96862306a36Sopenharmony_ci vadd.i64 q2, q2, q13 96962306a36Sopenharmony_ci vsub.i64 q4, q7, q4 97062306a36Sopenharmony_ci vshr.s64 q7, q14, #26 97162306a36Sopenharmony_ci vshl.i64 q13, q13, #25 97262306a36Sopenharmony_ci vadd.i64 q14, q2, q11 97362306a36Sopenharmony_ci vadd.i64 q8, q8, q7 97462306a36Sopenharmony_ci vshl.i64 q7, q7, #26 97562306a36Sopenharmony_ci vadd.i64 q15, q8, q3 97662306a36Sopenharmony_ci vsub.i64 q9, q9, q13 97762306a36Sopenharmony_ci vshr.s64 q13, q14, #26 97862306a36Sopenharmony_ci vsub.i64 q6, q6, q7 97962306a36Sopenharmony_ci vshr.s64 q7, q15, #25 98062306a36Sopenharmony_ci vadd.i64 q10, q10, q13 98162306a36Sopenharmony_ci vshl.i64 q13, q13, #26 98262306a36Sopenharmony_ci vadd.i64 q14, q10, q3 98362306a36Sopenharmony_ci vadd.i64 q1, q1, q7 98462306a36Sopenharmony_ci add r2, r3, #288 98562306a36Sopenharmony_ci vshl.i64 q7, q7, #25 98662306a36Sopenharmony_ci add r4, r3, #96 98762306a36Sopenharmony_ci vadd.i64 q15, q1, q11 98862306a36Sopenharmony_ci add r2, r2, #8 98962306a36Sopenharmony_ci vsub.i64 q2, q2, q13 99062306a36Sopenharmony_ci add r4, r4, #8 99162306a36Sopenharmony_ci vshr.s64 q13, q14, #25 99262306a36Sopenharmony_ci vsub.i64 q7, q8, q7 99362306a36Sopenharmony_ci vshr.s64 q8, q15, #26 99462306a36Sopenharmony_ci vadd.i64 q14, q13, q13 99562306a36Sopenharmony_ci vadd.i64 q12, q12, q8 99662306a36Sopenharmony_ci vtrn.32 d12, d14 99762306a36Sopenharmony_ci vshl.i64 q8, q8, #26 99862306a36Sopenharmony_ci vtrn.32 d13, d15 99962306a36Sopenharmony_ci vadd.i64 q3, q12, q3 100062306a36Sopenharmony_ci vadd.i64 q0, q0, q14 100162306a36Sopenharmony_ci vst1.8 d12, [r2, : 64]! 100262306a36Sopenharmony_ci vshl.i64 q7, q13, #4 100362306a36Sopenharmony_ci vst1.8 d13, [r4, : 64]! 100462306a36Sopenharmony_ci vsub.i64 q1, q1, q8 100562306a36Sopenharmony_ci vshr.s64 q3, q3, #25 100662306a36Sopenharmony_ci vadd.i64 q0, q0, q7 100762306a36Sopenharmony_ci vadd.i64 q5, q5, q3 100862306a36Sopenharmony_ci vshl.i64 q3, q3, #25 100962306a36Sopenharmony_ci vadd.i64 q6, q5, q11 101062306a36Sopenharmony_ci vadd.i64 q0, q0, q13 101162306a36Sopenharmony_ci vshl.i64 q7, q13, #25 101262306a36Sopenharmony_ci vadd.i64 q8, q0, q11 101362306a36Sopenharmony_ci vsub.i64 q3, q12, q3 101462306a36Sopenharmony_ci vshr.s64 q6, q6, #26 101562306a36Sopenharmony_ci vsub.i64 q7, q10, q7 101662306a36Sopenharmony_ci vtrn.32 d2, d6 101762306a36Sopenharmony_ci vshr.s64 q8, q8, #26 101862306a36Sopenharmony_ci vtrn.32 d3, d7 101962306a36Sopenharmony_ci vadd.i64 q3, q9, q6 102062306a36Sopenharmony_ci vst1.8 d2, [r2, : 64] 102162306a36Sopenharmony_ci vshl.i64 q6, q6, #26 102262306a36Sopenharmony_ci vst1.8 d3, [r4, : 64] 102362306a36Sopenharmony_ci vadd.i64 q1, q4, q8 102462306a36Sopenharmony_ci vtrn.32 d4, d14 102562306a36Sopenharmony_ci vshl.i64 q4, q8, #26 102662306a36Sopenharmony_ci vtrn.32 d5, d15 102762306a36Sopenharmony_ci vsub.i64 q5, q5, q6 102862306a36Sopenharmony_ci add r2, r2, #16 102962306a36Sopenharmony_ci vsub.i64 q0, q0, q4 103062306a36Sopenharmony_ci vst1.8 d4, [r2, : 64] 103162306a36Sopenharmony_ci add r4, r4, #16 103262306a36Sopenharmony_ci vst1.8 d5, [r4, : 64] 103362306a36Sopenharmony_ci vtrn.32 d10, d6 103462306a36Sopenharmony_ci vtrn.32 d11, d7 103562306a36Sopenharmony_ci sub r2, r2, #8 103662306a36Sopenharmony_ci sub r4, r4, #8 103762306a36Sopenharmony_ci vtrn.32 d0, d2 103862306a36Sopenharmony_ci vtrn.32 d1, d3 103962306a36Sopenharmony_ci vst1.8 d10, [r2, : 64] 104062306a36Sopenharmony_ci vst1.8 d11, [r4, : 64] 104162306a36Sopenharmony_ci sub r2, r2, #24 104262306a36Sopenharmony_ci sub r4, r4, #24 104362306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 104462306a36Sopenharmony_ci vst1.8 d1, [r4, : 64] 104562306a36Sopenharmony_ci add r2, sp, #512 104662306a36Sopenharmony_ci add r4, r3, #144 104762306a36Sopenharmony_ci add r5, r3, #192 104862306a36Sopenharmony_ci vld1.8 {d0-d1}, [r2, : 128] 104962306a36Sopenharmony_ci vld1.8 {d2-d3}, [r4, : 128]! 105062306a36Sopenharmony_ci vld1.8 {d4-d5}, [r5, : 128]! 105162306a36Sopenharmony_ci vzip.i32 q1, q2 105262306a36Sopenharmony_ci vld1.8 {d6-d7}, [r4, : 128]! 105362306a36Sopenharmony_ci vld1.8 {d8-d9}, [r5, : 128]! 105462306a36Sopenharmony_ci vshl.i32 q5, q1, #1 105562306a36Sopenharmony_ci vzip.i32 q3, q4 105662306a36Sopenharmony_ci vshl.i32 q6, q2, #1 105762306a36Sopenharmony_ci vld1.8 {d14}, [r4, : 64] 105862306a36Sopenharmony_ci vshl.i32 q8, q3, #1 105962306a36Sopenharmony_ci vld1.8 {d15}, [r5, : 64] 106062306a36Sopenharmony_ci vshl.i32 q9, q4, #1 106162306a36Sopenharmony_ci vmul.i32 d21, d7, d1 106262306a36Sopenharmony_ci vtrn.32 d14, d15 106362306a36Sopenharmony_ci vmul.i32 q11, q4, q0 106462306a36Sopenharmony_ci vmul.i32 q0, q7, q0 106562306a36Sopenharmony_ci vmull.s32 q12, d2, d2 106662306a36Sopenharmony_ci vmlal.s32 q12, d11, d1 106762306a36Sopenharmony_ci vmlal.s32 q12, d12, d0 106862306a36Sopenharmony_ci vmlal.s32 q12, d13, d23 106962306a36Sopenharmony_ci vmlal.s32 q12, d16, d22 107062306a36Sopenharmony_ci vmlal.s32 q12, d7, d21 107162306a36Sopenharmony_ci vmull.s32 q10, d2, d11 107262306a36Sopenharmony_ci vmlal.s32 q10, d4, d1 107362306a36Sopenharmony_ci vmlal.s32 q10, d13, d0 107462306a36Sopenharmony_ci vmlal.s32 q10, d6, d23 107562306a36Sopenharmony_ci vmlal.s32 q10, d17, d22 107662306a36Sopenharmony_ci vmull.s32 q13, d10, d4 107762306a36Sopenharmony_ci vmlal.s32 q13, d11, d3 107862306a36Sopenharmony_ci vmlal.s32 q13, d13, d1 107962306a36Sopenharmony_ci vmlal.s32 q13, d16, d0 108062306a36Sopenharmony_ci vmlal.s32 q13, d17, d23 108162306a36Sopenharmony_ci vmlal.s32 q13, d8, d22 108262306a36Sopenharmony_ci vmull.s32 q1, d10, d5 108362306a36Sopenharmony_ci vmlal.s32 q1, d11, d4 108462306a36Sopenharmony_ci vmlal.s32 q1, d6, d1 108562306a36Sopenharmony_ci vmlal.s32 q1, d17, d0 108662306a36Sopenharmony_ci vmlal.s32 q1, d8, d23 108762306a36Sopenharmony_ci vmull.s32 q14, d10, d6 108862306a36Sopenharmony_ci vmlal.s32 q14, d11, d13 108962306a36Sopenharmony_ci vmlal.s32 q14, d4, d4 109062306a36Sopenharmony_ci vmlal.s32 q14, d17, d1 109162306a36Sopenharmony_ci vmlal.s32 q14, d18, d0 109262306a36Sopenharmony_ci vmlal.s32 q14, d9, d23 109362306a36Sopenharmony_ci vmull.s32 q11, d10, d7 109462306a36Sopenharmony_ci vmlal.s32 q11, d11, d6 109562306a36Sopenharmony_ci vmlal.s32 q11, d12, d5 109662306a36Sopenharmony_ci vmlal.s32 q11, d8, d1 109762306a36Sopenharmony_ci vmlal.s32 q11, d19, d0 109862306a36Sopenharmony_ci vmull.s32 q15, d10, d8 109962306a36Sopenharmony_ci vmlal.s32 q15, d11, d17 110062306a36Sopenharmony_ci vmlal.s32 q15, d12, d6 110162306a36Sopenharmony_ci vmlal.s32 q15, d13, d5 110262306a36Sopenharmony_ci vmlal.s32 q15, d19, d1 110362306a36Sopenharmony_ci vmlal.s32 q15, d14, d0 110462306a36Sopenharmony_ci vmull.s32 q2, d10, d9 110562306a36Sopenharmony_ci vmlal.s32 q2, d11, d8 110662306a36Sopenharmony_ci vmlal.s32 q2, d12, d7 110762306a36Sopenharmony_ci vmlal.s32 q2, d13, d6 110862306a36Sopenharmony_ci vmlal.s32 q2, d14, d1 110962306a36Sopenharmony_ci vmull.s32 q0, d15, d1 111062306a36Sopenharmony_ci vmlal.s32 q0, d10, d14 111162306a36Sopenharmony_ci vmlal.s32 q0, d11, d19 111262306a36Sopenharmony_ci vmlal.s32 q0, d12, d8 111362306a36Sopenharmony_ci vmlal.s32 q0, d13, d17 111462306a36Sopenharmony_ci vmlal.s32 q0, d6, d6 111562306a36Sopenharmony_ci add r2, sp, #480 111662306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128]! 111762306a36Sopenharmony_ci vmull.s32 q3, d16, d7 111862306a36Sopenharmony_ci vmlal.s32 q3, d10, d15 111962306a36Sopenharmony_ci vmlal.s32 q3, d11, d14 112062306a36Sopenharmony_ci vmlal.s32 q3, d12, d9 112162306a36Sopenharmony_ci vmlal.s32 q3, d13, d8 112262306a36Sopenharmony_ci vld1.8 {d8-d9}, [r2, : 128] 112362306a36Sopenharmony_ci vadd.i64 q5, q12, q9 112462306a36Sopenharmony_ci vadd.i64 q6, q15, q9 112562306a36Sopenharmony_ci vshr.s64 q5, q5, #26 112662306a36Sopenharmony_ci vshr.s64 q6, q6, #26 112762306a36Sopenharmony_ci vadd.i64 q7, q10, q5 112862306a36Sopenharmony_ci vshl.i64 q5, q5, #26 112962306a36Sopenharmony_ci vadd.i64 q8, q7, q4 113062306a36Sopenharmony_ci vadd.i64 q2, q2, q6 113162306a36Sopenharmony_ci vshl.i64 q6, q6, #26 113262306a36Sopenharmony_ci vadd.i64 q10, q2, q4 113362306a36Sopenharmony_ci vsub.i64 q5, q12, q5 113462306a36Sopenharmony_ci vshr.s64 q8, q8, #25 113562306a36Sopenharmony_ci vsub.i64 q6, q15, q6 113662306a36Sopenharmony_ci vshr.s64 q10, q10, #25 113762306a36Sopenharmony_ci vadd.i64 q12, q13, q8 113862306a36Sopenharmony_ci vshl.i64 q8, q8, #25 113962306a36Sopenharmony_ci vadd.i64 q13, q12, q9 114062306a36Sopenharmony_ci vadd.i64 q0, q0, q10 114162306a36Sopenharmony_ci vsub.i64 q7, q7, q8 114262306a36Sopenharmony_ci vshr.s64 q8, q13, #26 114362306a36Sopenharmony_ci vshl.i64 q10, q10, #25 114462306a36Sopenharmony_ci vadd.i64 q13, q0, q9 114562306a36Sopenharmony_ci vadd.i64 q1, q1, q8 114662306a36Sopenharmony_ci vshl.i64 q8, q8, #26 114762306a36Sopenharmony_ci vadd.i64 q15, q1, q4 114862306a36Sopenharmony_ci vsub.i64 q2, q2, q10 114962306a36Sopenharmony_ci vshr.s64 q10, q13, #26 115062306a36Sopenharmony_ci vsub.i64 q8, q12, q8 115162306a36Sopenharmony_ci vshr.s64 q12, q15, #25 115262306a36Sopenharmony_ci vadd.i64 q3, q3, q10 115362306a36Sopenharmony_ci vshl.i64 q10, q10, #26 115462306a36Sopenharmony_ci vadd.i64 q13, q3, q4 115562306a36Sopenharmony_ci vadd.i64 q14, q14, q12 115662306a36Sopenharmony_ci add r2, r3, #144 115762306a36Sopenharmony_ci vshl.i64 q12, q12, #25 115862306a36Sopenharmony_ci add r4, r3, #192 115962306a36Sopenharmony_ci vadd.i64 q15, q14, q9 116062306a36Sopenharmony_ci add r2, r2, #8 116162306a36Sopenharmony_ci vsub.i64 q0, q0, q10 116262306a36Sopenharmony_ci add r4, r4, #8 116362306a36Sopenharmony_ci vshr.s64 q10, q13, #25 116462306a36Sopenharmony_ci vsub.i64 q1, q1, q12 116562306a36Sopenharmony_ci vshr.s64 q12, q15, #26 116662306a36Sopenharmony_ci vadd.i64 q13, q10, q10 116762306a36Sopenharmony_ci vadd.i64 q11, q11, q12 116862306a36Sopenharmony_ci vtrn.32 d16, d2 116962306a36Sopenharmony_ci vshl.i64 q12, q12, #26 117062306a36Sopenharmony_ci vtrn.32 d17, d3 117162306a36Sopenharmony_ci vadd.i64 q1, q11, q4 117262306a36Sopenharmony_ci vadd.i64 q4, q5, q13 117362306a36Sopenharmony_ci vst1.8 d16, [r2, : 64]! 117462306a36Sopenharmony_ci vshl.i64 q5, q10, #4 117562306a36Sopenharmony_ci vst1.8 d17, [r4, : 64]! 117662306a36Sopenharmony_ci vsub.i64 q8, q14, q12 117762306a36Sopenharmony_ci vshr.s64 q1, q1, #25 117862306a36Sopenharmony_ci vadd.i64 q4, q4, q5 117962306a36Sopenharmony_ci vadd.i64 q5, q6, q1 118062306a36Sopenharmony_ci vshl.i64 q1, q1, #25 118162306a36Sopenharmony_ci vadd.i64 q6, q5, q9 118262306a36Sopenharmony_ci vadd.i64 q4, q4, q10 118362306a36Sopenharmony_ci vshl.i64 q10, q10, #25 118462306a36Sopenharmony_ci vadd.i64 q9, q4, q9 118562306a36Sopenharmony_ci vsub.i64 q1, q11, q1 118662306a36Sopenharmony_ci vshr.s64 q6, q6, #26 118762306a36Sopenharmony_ci vsub.i64 q3, q3, q10 118862306a36Sopenharmony_ci vtrn.32 d16, d2 118962306a36Sopenharmony_ci vshr.s64 q9, q9, #26 119062306a36Sopenharmony_ci vtrn.32 d17, d3 119162306a36Sopenharmony_ci vadd.i64 q1, q2, q6 119262306a36Sopenharmony_ci vst1.8 d16, [r2, : 64] 119362306a36Sopenharmony_ci vshl.i64 q2, q6, #26 119462306a36Sopenharmony_ci vst1.8 d17, [r4, : 64] 119562306a36Sopenharmony_ci vadd.i64 q6, q7, q9 119662306a36Sopenharmony_ci vtrn.32 d0, d6 119762306a36Sopenharmony_ci vshl.i64 q7, q9, #26 119862306a36Sopenharmony_ci vtrn.32 d1, d7 119962306a36Sopenharmony_ci vsub.i64 q2, q5, q2 120062306a36Sopenharmony_ci add r2, r2, #16 120162306a36Sopenharmony_ci vsub.i64 q3, q4, q7 120262306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 120362306a36Sopenharmony_ci add r4, r4, #16 120462306a36Sopenharmony_ci vst1.8 d1, [r4, : 64] 120562306a36Sopenharmony_ci vtrn.32 d4, d2 120662306a36Sopenharmony_ci vtrn.32 d5, d3 120762306a36Sopenharmony_ci sub r2, r2, #8 120862306a36Sopenharmony_ci sub r4, r4, #8 120962306a36Sopenharmony_ci vtrn.32 d6, d12 121062306a36Sopenharmony_ci vtrn.32 d7, d13 121162306a36Sopenharmony_ci vst1.8 d4, [r2, : 64] 121262306a36Sopenharmony_ci vst1.8 d5, [r4, : 64] 121362306a36Sopenharmony_ci sub r2, r2, #24 121462306a36Sopenharmony_ci sub r4, r4, #24 121562306a36Sopenharmony_ci vst1.8 d6, [r2, : 64] 121662306a36Sopenharmony_ci vst1.8 d7, [r4, : 64] 121762306a36Sopenharmony_ci add r2, r3, #336 121862306a36Sopenharmony_ci add r4, r3, #288 121962306a36Sopenharmony_ci vld1.8 {d0-d1}, [r2, : 128]! 122062306a36Sopenharmony_ci vld1.8 {d2-d3}, [r4, : 128]! 122162306a36Sopenharmony_ci vadd.i32 q0, q0, q1 122262306a36Sopenharmony_ci vld1.8 {d2-d3}, [r2, : 128]! 122362306a36Sopenharmony_ci vld1.8 {d4-d5}, [r4, : 128]! 122462306a36Sopenharmony_ci vadd.i32 q1, q1, q2 122562306a36Sopenharmony_ci add r5, r3, #288 122662306a36Sopenharmony_ci vld1.8 {d4}, [r2, : 64] 122762306a36Sopenharmony_ci vld1.8 {d6}, [r4, : 64] 122862306a36Sopenharmony_ci vadd.i32 q2, q2, q3 122962306a36Sopenharmony_ci vst1.8 {d0-d1}, [r5, : 128]! 123062306a36Sopenharmony_ci vst1.8 {d2-d3}, [r5, : 128]! 123162306a36Sopenharmony_ci vst1.8 d4, [r5, : 64] 123262306a36Sopenharmony_ci add r2, r3, #48 123362306a36Sopenharmony_ci add r4, r3, #144 123462306a36Sopenharmony_ci vld1.8 {d0-d1}, [r4, : 128]! 123562306a36Sopenharmony_ci vld1.8 {d2-d3}, [r4, : 128]! 123662306a36Sopenharmony_ci vld1.8 {d4}, [r4, : 64] 123762306a36Sopenharmony_ci add r4, r3, #288 123862306a36Sopenharmony_ci vld1.8 {d6-d7}, [r4, : 128]! 123962306a36Sopenharmony_ci vtrn.32 q0, q3 124062306a36Sopenharmony_ci vld1.8 {d8-d9}, [r4, : 128]! 124162306a36Sopenharmony_ci vshl.i32 q5, q0, #4 124262306a36Sopenharmony_ci vtrn.32 q1, q4 124362306a36Sopenharmony_ci vshl.i32 q6, q3, #4 124462306a36Sopenharmony_ci vadd.i32 q5, q5, q0 124562306a36Sopenharmony_ci vadd.i32 q6, q6, q3 124662306a36Sopenharmony_ci vshl.i32 q7, q1, #4 124762306a36Sopenharmony_ci vld1.8 {d5}, [r4, : 64] 124862306a36Sopenharmony_ci vshl.i32 q8, q4, #4 124962306a36Sopenharmony_ci vtrn.32 d4, d5 125062306a36Sopenharmony_ci vadd.i32 q7, q7, q1 125162306a36Sopenharmony_ci vadd.i32 q8, q8, q4 125262306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128]! 125362306a36Sopenharmony_ci vshl.i32 q10, q2, #4 125462306a36Sopenharmony_ci vld1.8 {d22-d23}, [r2, : 128]! 125562306a36Sopenharmony_ci vadd.i32 q10, q10, q2 125662306a36Sopenharmony_ci vld1.8 {d24}, [r2, : 64] 125762306a36Sopenharmony_ci vadd.i32 q5, q5, q0 125862306a36Sopenharmony_ci add r2, r3, #240 125962306a36Sopenharmony_ci vld1.8 {d26-d27}, [r2, : 128]! 126062306a36Sopenharmony_ci vadd.i32 q6, q6, q3 126162306a36Sopenharmony_ci vld1.8 {d28-d29}, [r2, : 128]! 126262306a36Sopenharmony_ci vadd.i32 q8, q8, q4 126362306a36Sopenharmony_ci vld1.8 {d25}, [r2, : 64] 126462306a36Sopenharmony_ci vadd.i32 q10, q10, q2 126562306a36Sopenharmony_ci vtrn.32 q9, q13 126662306a36Sopenharmony_ci vadd.i32 q7, q7, q1 126762306a36Sopenharmony_ci vadd.i32 q5, q5, q0 126862306a36Sopenharmony_ci vtrn.32 q11, q14 126962306a36Sopenharmony_ci vadd.i32 q6, q6, q3 127062306a36Sopenharmony_ci add r2, sp, #528 127162306a36Sopenharmony_ci vadd.i32 q10, q10, q2 127262306a36Sopenharmony_ci vtrn.32 d24, d25 127362306a36Sopenharmony_ci vst1.8 {d12-d13}, [r2, : 128]! 127462306a36Sopenharmony_ci vshl.i32 q6, q13, #1 127562306a36Sopenharmony_ci vst1.8 {d20-d21}, [r2, : 128]! 127662306a36Sopenharmony_ci vshl.i32 q10, q14, #1 127762306a36Sopenharmony_ci vst1.8 {d12-d13}, [r2, : 128]! 127862306a36Sopenharmony_ci vshl.i32 q15, q12, #1 127962306a36Sopenharmony_ci vadd.i32 q8, q8, q4 128062306a36Sopenharmony_ci vext.32 d10, d31, d30, #0 128162306a36Sopenharmony_ci vadd.i32 q7, q7, q1 128262306a36Sopenharmony_ci vst1.8 {d16-d17}, [r2, : 128]! 128362306a36Sopenharmony_ci vmull.s32 q8, d18, d5 128462306a36Sopenharmony_ci vmlal.s32 q8, d26, d4 128562306a36Sopenharmony_ci vmlal.s32 q8, d19, d9 128662306a36Sopenharmony_ci vmlal.s32 q8, d27, d3 128762306a36Sopenharmony_ci vmlal.s32 q8, d22, d8 128862306a36Sopenharmony_ci vmlal.s32 q8, d28, d2 128962306a36Sopenharmony_ci vmlal.s32 q8, d23, d7 129062306a36Sopenharmony_ci vmlal.s32 q8, d29, d1 129162306a36Sopenharmony_ci vmlal.s32 q8, d24, d6 129262306a36Sopenharmony_ci vmlal.s32 q8, d25, d0 129362306a36Sopenharmony_ci vst1.8 {d14-d15}, [r2, : 128]! 129462306a36Sopenharmony_ci vmull.s32 q2, d18, d4 129562306a36Sopenharmony_ci vmlal.s32 q2, d12, d9 129662306a36Sopenharmony_ci vmlal.s32 q2, d13, d8 129762306a36Sopenharmony_ci vmlal.s32 q2, d19, d3 129862306a36Sopenharmony_ci vmlal.s32 q2, d22, d2 129962306a36Sopenharmony_ci vmlal.s32 q2, d23, d1 130062306a36Sopenharmony_ci vmlal.s32 q2, d24, d0 130162306a36Sopenharmony_ci vst1.8 {d20-d21}, [r2, : 128]! 130262306a36Sopenharmony_ci vmull.s32 q7, d18, d9 130362306a36Sopenharmony_ci vmlal.s32 q7, d26, d3 130462306a36Sopenharmony_ci vmlal.s32 q7, d19, d8 130562306a36Sopenharmony_ci vmlal.s32 q7, d27, d2 130662306a36Sopenharmony_ci vmlal.s32 q7, d22, d7 130762306a36Sopenharmony_ci vmlal.s32 q7, d28, d1 130862306a36Sopenharmony_ci vmlal.s32 q7, d23, d6 130962306a36Sopenharmony_ci vmlal.s32 q7, d29, d0 131062306a36Sopenharmony_ci vst1.8 {d10-d11}, [r2, : 128]! 131162306a36Sopenharmony_ci vmull.s32 q5, d18, d3 131262306a36Sopenharmony_ci vmlal.s32 q5, d19, d2 131362306a36Sopenharmony_ci vmlal.s32 q5, d22, d1 131462306a36Sopenharmony_ci vmlal.s32 q5, d23, d0 131562306a36Sopenharmony_ci vmlal.s32 q5, d12, d8 131662306a36Sopenharmony_ci vst1.8 {d16-d17}, [r2, : 128]! 131762306a36Sopenharmony_ci vmull.s32 q4, d18, d8 131862306a36Sopenharmony_ci vmlal.s32 q4, d26, d2 131962306a36Sopenharmony_ci vmlal.s32 q4, d19, d7 132062306a36Sopenharmony_ci vmlal.s32 q4, d27, d1 132162306a36Sopenharmony_ci vmlal.s32 q4, d22, d6 132262306a36Sopenharmony_ci vmlal.s32 q4, d28, d0 132362306a36Sopenharmony_ci vmull.s32 q8, d18, d7 132462306a36Sopenharmony_ci vmlal.s32 q8, d26, d1 132562306a36Sopenharmony_ci vmlal.s32 q8, d19, d6 132662306a36Sopenharmony_ci vmlal.s32 q8, d27, d0 132762306a36Sopenharmony_ci add r2, sp, #544 132862306a36Sopenharmony_ci vld1.8 {d20-d21}, [r2, : 128] 132962306a36Sopenharmony_ci vmlal.s32 q7, d24, d21 133062306a36Sopenharmony_ci vmlal.s32 q7, d25, d20 133162306a36Sopenharmony_ci vmlal.s32 q4, d23, d21 133262306a36Sopenharmony_ci vmlal.s32 q4, d29, d20 133362306a36Sopenharmony_ci vmlal.s32 q8, d22, d21 133462306a36Sopenharmony_ci vmlal.s32 q8, d28, d20 133562306a36Sopenharmony_ci vmlal.s32 q5, d24, d20 133662306a36Sopenharmony_ci vst1.8 {d14-d15}, [r2, : 128] 133762306a36Sopenharmony_ci vmull.s32 q7, d18, d6 133862306a36Sopenharmony_ci vmlal.s32 q7, d26, d0 133962306a36Sopenharmony_ci add r2, sp, #624 134062306a36Sopenharmony_ci vld1.8 {d30-d31}, [r2, : 128] 134162306a36Sopenharmony_ci vmlal.s32 q2, d30, d21 134262306a36Sopenharmony_ci vmlal.s32 q7, d19, d21 134362306a36Sopenharmony_ci vmlal.s32 q7, d27, d20 134462306a36Sopenharmony_ci add r2, sp, #592 134562306a36Sopenharmony_ci vld1.8 {d26-d27}, [r2, : 128] 134662306a36Sopenharmony_ci vmlal.s32 q4, d25, d27 134762306a36Sopenharmony_ci vmlal.s32 q8, d29, d27 134862306a36Sopenharmony_ci vmlal.s32 q8, d25, d26 134962306a36Sopenharmony_ci vmlal.s32 q7, d28, d27 135062306a36Sopenharmony_ci vmlal.s32 q7, d29, d26 135162306a36Sopenharmony_ci add r2, sp, #576 135262306a36Sopenharmony_ci vld1.8 {d28-d29}, [r2, : 128] 135362306a36Sopenharmony_ci vmlal.s32 q4, d24, d29 135462306a36Sopenharmony_ci vmlal.s32 q8, d23, d29 135562306a36Sopenharmony_ci vmlal.s32 q8, d24, d28 135662306a36Sopenharmony_ci vmlal.s32 q7, d22, d29 135762306a36Sopenharmony_ci vmlal.s32 q7, d23, d28 135862306a36Sopenharmony_ci vst1.8 {d8-d9}, [r2, : 128] 135962306a36Sopenharmony_ci add r2, sp, #528 136062306a36Sopenharmony_ci vld1.8 {d8-d9}, [r2, : 128] 136162306a36Sopenharmony_ci vmlal.s32 q7, d24, d9 136262306a36Sopenharmony_ci vmlal.s32 q7, d25, d31 136362306a36Sopenharmony_ci vmull.s32 q1, d18, d2 136462306a36Sopenharmony_ci vmlal.s32 q1, d19, d1 136562306a36Sopenharmony_ci vmlal.s32 q1, d22, d0 136662306a36Sopenharmony_ci vmlal.s32 q1, d24, d27 136762306a36Sopenharmony_ci vmlal.s32 q1, d23, d20 136862306a36Sopenharmony_ci vmlal.s32 q1, d12, d7 136962306a36Sopenharmony_ci vmlal.s32 q1, d13, d6 137062306a36Sopenharmony_ci vmull.s32 q6, d18, d1 137162306a36Sopenharmony_ci vmlal.s32 q6, d19, d0 137262306a36Sopenharmony_ci vmlal.s32 q6, d23, d27 137362306a36Sopenharmony_ci vmlal.s32 q6, d22, d20 137462306a36Sopenharmony_ci vmlal.s32 q6, d24, d26 137562306a36Sopenharmony_ci vmull.s32 q0, d18, d0 137662306a36Sopenharmony_ci vmlal.s32 q0, d22, d27 137762306a36Sopenharmony_ci vmlal.s32 q0, d23, d26 137862306a36Sopenharmony_ci vmlal.s32 q0, d24, d31 137962306a36Sopenharmony_ci vmlal.s32 q0, d19, d20 138062306a36Sopenharmony_ci add r2, sp, #608 138162306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 138262306a36Sopenharmony_ci vmlal.s32 q2, d18, d7 138362306a36Sopenharmony_ci vmlal.s32 q5, d18, d6 138462306a36Sopenharmony_ci vmlal.s32 q1, d18, d21 138562306a36Sopenharmony_ci vmlal.s32 q0, d18, d28 138662306a36Sopenharmony_ci vmlal.s32 q6, d18, d29 138762306a36Sopenharmony_ci vmlal.s32 q2, d19, d6 138862306a36Sopenharmony_ci vmlal.s32 q5, d19, d21 138962306a36Sopenharmony_ci vmlal.s32 q1, d19, d29 139062306a36Sopenharmony_ci vmlal.s32 q0, d19, d9 139162306a36Sopenharmony_ci vmlal.s32 q6, d19, d28 139262306a36Sopenharmony_ci add r2, sp, #560 139362306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 139462306a36Sopenharmony_ci add r2, sp, #480 139562306a36Sopenharmony_ci vld1.8 {d22-d23}, [r2, : 128] 139662306a36Sopenharmony_ci vmlal.s32 q5, d19, d7 139762306a36Sopenharmony_ci vmlal.s32 q0, d18, d21 139862306a36Sopenharmony_ci vmlal.s32 q0, d19, d29 139962306a36Sopenharmony_ci vmlal.s32 q6, d18, d6 140062306a36Sopenharmony_ci add r2, sp, #496 140162306a36Sopenharmony_ci vld1.8 {d6-d7}, [r2, : 128] 140262306a36Sopenharmony_ci vmlal.s32 q6, d19, d21 140362306a36Sopenharmony_ci add r2, sp, #544 140462306a36Sopenharmony_ci vld1.8 {d18-d19}, [r2, : 128] 140562306a36Sopenharmony_ci vmlal.s32 q0, d30, d8 140662306a36Sopenharmony_ci add r2, sp, #640 140762306a36Sopenharmony_ci vld1.8 {d20-d21}, [r2, : 128] 140862306a36Sopenharmony_ci vmlal.s32 q5, d30, d29 140962306a36Sopenharmony_ci add r2, sp, #576 141062306a36Sopenharmony_ci vld1.8 {d24-d25}, [r2, : 128] 141162306a36Sopenharmony_ci vmlal.s32 q1, d30, d28 141262306a36Sopenharmony_ci vadd.i64 q13, q0, q11 141362306a36Sopenharmony_ci vadd.i64 q14, q5, q11 141462306a36Sopenharmony_ci vmlal.s32 q6, d30, d9 141562306a36Sopenharmony_ci vshr.s64 q4, q13, #26 141662306a36Sopenharmony_ci vshr.s64 q13, q14, #26 141762306a36Sopenharmony_ci vadd.i64 q7, q7, q4 141862306a36Sopenharmony_ci vshl.i64 q4, q4, #26 141962306a36Sopenharmony_ci vadd.i64 q14, q7, q3 142062306a36Sopenharmony_ci vadd.i64 q9, q9, q13 142162306a36Sopenharmony_ci vshl.i64 q13, q13, #26 142262306a36Sopenharmony_ci vadd.i64 q15, q9, q3 142362306a36Sopenharmony_ci vsub.i64 q0, q0, q4 142462306a36Sopenharmony_ci vshr.s64 q4, q14, #25 142562306a36Sopenharmony_ci vsub.i64 q5, q5, q13 142662306a36Sopenharmony_ci vshr.s64 q13, q15, #25 142762306a36Sopenharmony_ci vadd.i64 q6, q6, q4 142862306a36Sopenharmony_ci vshl.i64 q4, q4, #25 142962306a36Sopenharmony_ci vadd.i64 q14, q6, q11 143062306a36Sopenharmony_ci vadd.i64 q2, q2, q13 143162306a36Sopenharmony_ci vsub.i64 q4, q7, q4 143262306a36Sopenharmony_ci vshr.s64 q7, q14, #26 143362306a36Sopenharmony_ci vshl.i64 q13, q13, #25 143462306a36Sopenharmony_ci vadd.i64 q14, q2, q11 143562306a36Sopenharmony_ci vadd.i64 q8, q8, q7 143662306a36Sopenharmony_ci vshl.i64 q7, q7, #26 143762306a36Sopenharmony_ci vadd.i64 q15, q8, q3 143862306a36Sopenharmony_ci vsub.i64 q9, q9, q13 143962306a36Sopenharmony_ci vshr.s64 q13, q14, #26 144062306a36Sopenharmony_ci vsub.i64 q6, q6, q7 144162306a36Sopenharmony_ci vshr.s64 q7, q15, #25 144262306a36Sopenharmony_ci vadd.i64 q10, q10, q13 144362306a36Sopenharmony_ci vshl.i64 q13, q13, #26 144462306a36Sopenharmony_ci vadd.i64 q14, q10, q3 144562306a36Sopenharmony_ci vadd.i64 q1, q1, q7 144662306a36Sopenharmony_ci add r2, r3, #240 144762306a36Sopenharmony_ci vshl.i64 q7, q7, #25 144862306a36Sopenharmony_ci add r4, r3, #144 144962306a36Sopenharmony_ci vadd.i64 q15, q1, q11 145062306a36Sopenharmony_ci add r2, r2, #8 145162306a36Sopenharmony_ci vsub.i64 q2, q2, q13 145262306a36Sopenharmony_ci add r4, r4, #8 145362306a36Sopenharmony_ci vshr.s64 q13, q14, #25 145462306a36Sopenharmony_ci vsub.i64 q7, q8, q7 145562306a36Sopenharmony_ci vshr.s64 q8, q15, #26 145662306a36Sopenharmony_ci vadd.i64 q14, q13, q13 145762306a36Sopenharmony_ci vadd.i64 q12, q12, q8 145862306a36Sopenharmony_ci vtrn.32 d12, d14 145962306a36Sopenharmony_ci vshl.i64 q8, q8, #26 146062306a36Sopenharmony_ci vtrn.32 d13, d15 146162306a36Sopenharmony_ci vadd.i64 q3, q12, q3 146262306a36Sopenharmony_ci vadd.i64 q0, q0, q14 146362306a36Sopenharmony_ci vst1.8 d12, [r2, : 64]! 146462306a36Sopenharmony_ci vshl.i64 q7, q13, #4 146562306a36Sopenharmony_ci vst1.8 d13, [r4, : 64]! 146662306a36Sopenharmony_ci vsub.i64 q1, q1, q8 146762306a36Sopenharmony_ci vshr.s64 q3, q3, #25 146862306a36Sopenharmony_ci vadd.i64 q0, q0, q7 146962306a36Sopenharmony_ci vadd.i64 q5, q5, q3 147062306a36Sopenharmony_ci vshl.i64 q3, q3, #25 147162306a36Sopenharmony_ci vadd.i64 q6, q5, q11 147262306a36Sopenharmony_ci vadd.i64 q0, q0, q13 147362306a36Sopenharmony_ci vshl.i64 q7, q13, #25 147462306a36Sopenharmony_ci vadd.i64 q8, q0, q11 147562306a36Sopenharmony_ci vsub.i64 q3, q12, q3 147662306a36Sopenharmony_ci vshr.s64 q6, q6, #26 147762306a36Sopenharmony_ci vsub.i64 q7, q10, q7 147862306a36Sopenharmony_ci vtrn.32 d2, d6 147962306a36Sopenharmony_ci vshr.s64 q8, q8, #26 148062306a36Sopenharmony_ci vtrn.32 d3, d7 148162306a36Sopenharmony_ci vadd.i64 q3, q9, q6 148262306a36Sopenharmony_ci vst1.8 d2, [r2, : 64] 148362306a36Sopenharmony_ci vshl.i64 q6, q6, #26 148462306a36Sopenharmony_ci vst1.8 d3, [r4, : 64] 148562306a36Sopenharmony_ci vadd.i64 q1, q4, q8 148662306a36Sopenharmony_ci vtrn.32 d4, d14 148762306a36Sopenharmony_ci vshl.i64 q4, q8, #26 148862306a36Sopenharmony_ci vtrn.32 d5, d15 148962306a36Sopenharmony_ci vsub.i64 q5, q5, q6 149062306a36Sopenharmony_ci add r2, r2, #16 149162306a36Sopenharmony_ci vsub.i64 q0, q0, q4 149262306a36Sopenharmony_ci vst1.8 d4, [r2, : 64] 149362306a36Sopenharmony_ci add r4, r4, #16 149462306a36Sopenharmony_ci vst1.8 d5, [r4, : 64] 149562306a36Sopenharmony_ci vtrn.32 d10, d6 149662306a36Sopenharmony_ci vtrn.32 d11, d7 149762306a36Sopenharmony_ci sub r2, r2, #8 149862306a36Sopenharmony_ci sub r4, r4, #8 149962306a36Sopenharmony_ci vtrn.32 d0, d2 150062306a36Sopenharmony_ci vtrn.32 d1, d3 150162306a36Sopenharmony_ci vst1.8 d10, [r2, : 64] 150262306a36Sopenharmony_ci vst1.8 d11, [r4, : 64] 150362306a36Sopenharmony_ci sub r2, r2, #24 150462306a36Sopenharmony_ci sub r4, r4, #24 150562306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 150662306a36Sopenharmony_ci vst1.8 d1, [r4, : 64] 150762306a36Sopenharmony_ci ldr r2, [sp, #456] 150862306a36Sopenharmony_ci ldr r4, [sp, #460] 150962306a36Sopenharmony_ci subs r5, r2, #1 151062306a36Sopenharmony_ci bge .Lmainloop 151162306a36Sopenharmony_ci add r1, r3, #144 151262306a36Sopenharmony_ci add r2, r3, #336 151362306a36Sopenharmony_ci vld1.8 {d0-d1}, [r1, : 128]! 151462306a36Sopenharmony_ci vld1.8 {d2-d3}, [r1, : 128]! 151562306a36Sopenharmony_ci vld1.8 {d4}, [r1, : 64] 151662306a36Sopenharmony_ci vst1.8 {d0-d1}, [r2, : 128]! 151762306a36Sopenharmony_ci vst1.8 {d2-d3}, [r2, : 128]! 151862306a36Sopenharmony_ci vst1.8 d4, [r2, : 64] 151962306a36Sopenharmony_ci movw r1, #0 152062306a36Sopenharmony_ci.Linvertloop: 152162306a36Sopenharmony_ci add r2, r3, #144 152262306a36Sopenharmony_ci movw r4, #0 152362306a36Sopenharmony_ci movw r5, #2 152462306a36Sopenharmony_ci cmp r1, #1 152562306a36Sopenharmony_ci moveq r5, #1 152662306a36Sopenharmony_ci addeq r2, r3, #336 152762306a36Sopenharmony_ci addeq r4, r3, #48 152862306a36Sopenharmony_ci cmp r1, #2 152962306a36Sopenharmony_ci moveq r5, #1 153062306a36Sopenharmony_ci addeq r2, r3, #48 153162306a36Sopenharmony_ci cmp r1, #3 153262306a36Sopenharmony_ci moveq r5, #5 153362306a36Sopenharmony_ci addeq r4, r3, #336 153462306a36Sopenharmony_ci cmp r1, #4 153562306a36Sopenharmony_ci moveq r5, #10 153662306a36Sopenharmony_ci cmp r1, #5 153762306a36Sopenharmony_ci moveq r5, #20 153862306a36Sopenharmony_ci cmp r1, #6 153962306a36Sopenharmony_ci moveq r5, #10 154062306a36Sopenharmony_ci addeq r2, r3, #336 154162306a36Sopenharmony_ci addeq r4, r3, #336 154262306a36Sopenharmony_ci cmp r1, #7 154362306a36Sopenharmony_ci moveq r5, #50 154462306a36Sopenharmony_ci cmp r1, #8 154562306a36Sopenharmony_ci moveq r5, #100 154662306a36Sopenharmony_ci cmp r1, #9 154762306a36Sopenharmony_ci moveq r5, #50 154862306a36Sopenharmony_ci addeq r2, r3, #336 154962306a36Sopenharmony_ci cmp r1, #10 155062306a36Sopenharmony_ci moveq r5, #5 155162306a36Sopenharmony_ci addeq r2, r3, #48 155262306a36Sopenharmony_ci cmp r1, #11 155362306a36Sopenharmony_ci moveq r5, #0 155462306a36Sopenharmony_ci addeq r2, r3, #96 155562306a36Sopenharmony_ci add r6, r3, #144 155662306a36Sopenharmony_ci add r7, r3, #288 155762306a36Sopenharmony_ci vld1.8 {d0-d1}, [r6, : 128]! 155862306a36Sopenharmony_ci vld1.8 {d2-d3}, [r6, : 128]! 155962306a36Sopenharmony_ci vld1.8 {d4}, [r6, : 64] 156062306a36Sopenharmony_ci vst1.8 {d0-d1}, [r7, : 128]! 156162306a36Sopenharmony_ci vst1.8 {d2-d3}, [r7, : 128]! 156262306a36Sopenharmony_ci vst1.8 d4, [r7, : 64] 156362306a36Sopenharmony_ci cmp r5, #0 156462306a36Sopenharmony_ci beq .Lskipsquaringloop 156562306a36Sopenharmony_ci.Lsquaringloop: 156662306a36Sopenharmony_ci add r6, r3, #288 156762306a36Sopenharmony_ci add r7, r3, #288 156862306a36Sopenharmony_ci add r8, r3, #288 156962306a36Sopenharmony_ci vmov.i32 q0, #19 157062306a36Sopenharmony_ci vmov.i32 q1, #0 157162306a36Sopenharmony_ci vmov.i32 q2, #1 157262306a36Sopenharmony_ci vzip.i32 q1, q2 157362306a36Sopenharmony_ci vld1.8 {d4-d5}, [r7, : 128]! 157462306a36Sopenharmony_ci vld1.8 {d6-d7}, [r7, : 128]! 157562306a36Sopenharmony_ci vld1.8 {d9}, [r7, : 64] 157662306a36Sopenharmony_ci vld1.8 {d10-d11}, [r6, : 128]! 157762306a36Sopenharmony_ci add r7, sp, #384 157862306a36Sopenharmony_ci vld1.8 {d12-d13}, [r6, : 128]! 157962306a36Sopenharmony_ci vmul.i32 q7, q2, q0 158062306a36Sopenharmony_ci vld1.8 {d8}, [r6, : 64] 158162306a36Sopenharmony_ci vext.32 d17, d11, d10, #1 158262306a36Sopenharmony_ci vmul.i32 q9, q3, q0 158362306a36Sopenharmony_ci vext.32 d16, d10, d8, #1 158462306a36Sopenharmony_ci vshl.u32 q10, q5, q1 158562306a36Sopenharmony_ci vext.32 d22, d14, d4, #1 158662306a36Sopenharmony_ci vext.32 d24, d18, d6, #1 158762306a36Sopenharmony_ci vshl.u32 q13, q6, q1 158862306a36Sopenharmony_ci vshl.u32 d28, d8, d2 158962306a36Sopenharmony_ci vrev64.i32 d22, d22 159062306a36Sopenharmony_ci vmul.i32 d1, d9, d1 159162306a36Sopenharmony_ci vrev64.i32 d24, d24 159262306a36Sopenharmony_ci vext.32 d29, d8, d13, #1 159362306a36Sopenharmony_ci vext.32 d0, d1, d9, #1 159462306a36Sopenharmony_ci vrev64.i32 d0, d0 159562306a36Sopenharmony_ci vext.32 d2, d9, d1, #1 159662306a36Sopenharmony_ci vext.32 d23, d15, d5, #1 159762306a36Sopenharmony_ci vmull.s32 q4, d20, d4 159862306a36Sopenharmony_ci vrev64.i32 d23, d23 159962306a36Sopenharmony_ci vmlal.s32 q4, d21, d1 160062306a36Sopenharmony_ci vrev64.i32 d2, d2 160162306a36Sopenharmony_ci vmlal.s32 q4, d26, d19 160262306a36Sopenharmony_ci vext.32 d3, d5, d15, #1 160362306a36Sopenharmony_ci vmlal.s32 q4, d27, d18 160462306a36Sopenharmony_ci vrev64.i32 d3, d3 160562306a36Sopenharmony_ci vmlal.s32 q4, d28, d15 160662306a36Sopenharmony_ci vext.32 d14, d12, d11, #1 160762306a36Sopenharmony_ci vmull.s32 q5, d16, d23 160862306a36Sopenharmony_ci vext.32 d15, d13, d12, #1 160962306a36Sopenharmony_ci vmlal.s32 q5, d17, d4 161062306a36Sopenharmony_ci vst1.8 d8, [r7, : 64]! 161162306a36Sopenharmony_ci vmlal.s32 q5, d14, d1 161262306a36Sopenharmony_ci vext.32 d12, d9, d8, #0 161362306a36Sopenharmony_ci vmlal.s32 q5, d15, d19 161462306a36Sopenharmony_ci vmov.i64 d13, #0 161562306a36Sopenharmony_ci vmlal.s32 q5, d29, d18 161662306a36Sopenharmony_ci vext.32 d25, d19, d7, #1 161762306a36Sopenharmony_ci vmlal.s32 q6, d20, d5 161862306a36Sopenharmony_ci vrev64.i32 d25, d25 161962306a36Sopenharmony_ci vmlal.s32 q6, d21, d4 162062306a36Sopenharmony_ci vst1.8 d11, [r7, : 64]! 162162306a36Sopenharmony_ci vmlal.s32 q6, d26, d1 162262306a36Sopenharmony_ci vext.32 d9, d10, d10, #0 162362306a36Sopenharmony_ci vmlal.s32 q6, d27, d19 162462306a36Sopenharmony_ci vmov.i64 d8, #0 162562306a36Sopenharmony_ci vmlal.s32 q6, d28, d18 162662306a36Sopenharmony_ci vmlal.s32 q4, d16, d24 162762306a36Sopenharmony_ci vmlal.s32 q4, d17, d5 162862306a36Sopenharmony_ci vmlal.s32 q4, d14, d4 162962306a36Sopenharmony_ci vst1.8 d12, [r7, : 64]! 163062306a36Sopenharmony_ci vmlal.s32 q4, d15, d1 163162306a36Sopenharmony_ci vext.32 d10, d13, d12, #0 163262306a36Sopenharmony_ci vmlal.s32 q4, d29, d19 163362306a36Sopenharmony_ci vmov.i64 d11, #0 163462306a36Sopenharmony_ci vmlal.s32 q5, d20, d6 163562306a36Sopenharmony_ci vmlal.s32 q5, d21, d5 163662306a36Sopenharmony_ci vmlal.s32 q5, d26, d4 163762306a36Sopenharmony_ci vext.32 d13, d8, d8, #0 163862306a36Sopenharmony_ci vmlal.s32 q5, d27, d1 163962306a36Sopenharmony_ci vmov.i64 d12, #0 164062306a36Sopenharmony_ci vmlal.s32 q5, d28, d19 164162306a36Sopenharmony_ci vst1.8 d9, [r7, : 64]! 164262306a36Sopenharmony_ci vmlal.s32 q6, d16, d25 164362306a36Sopenharmony_ci vmlal.s32 q6, d17, d6 164462306a36Sopenharmony_ci vst1.8 d10, [r7, : 64] 164562306a36Sopenharmony_ci vmlal.s32 q6, d14, d5 164662306a36Sopenharmony_ci vext.32 d8, d11, d10, #0 164762306a36Sopenharmony_ci vmlal.s32 q6, d15, d4 164862306a36Sopenharmony_ci vmov.i64 d9, #0 164962306a36Sopenharmony_ci vmlal.s32 q6, d29, d1 165062306a36Sopenharmony_ci vmlal.s32 q4, d20, d7 165162306a36Sopenharmony_ci vmlal.s32 q4, d21, d6 165262306a36Sopenharmony_ci vmlal.s32 q4, d26, d5 165362306a36Sopenharmony_ci vext.32 d11, d12, d12, #0 165462306a36Sopenharmony_ci vmlal.s32 q4, d27, d4 165562306a36Sopenharmony_ci vmov.i64 d10, #0 165662306a36Sopenharmony_ci vmlal.s32 q4, d28, d1 165762306a36Sopenharmony_ci vmlal.s32 q5, d16, d0 165862306a36Sopenharmony_ci sub r6, r7, #32 165962306a36Sopenharmony_ci vmlal.s32 q5, d17, d7 166062306a36Sopenharmony_ci vmlal.s32 q5, d14, d6 166162306a36Sopenharmony_ci vext.32 d30, d9, d8, #0 166262306a36Sopenharmony_ci vmlal.s32 q5, d15, d5 166362306a36Sopenharmony_ci vld1.8 {d31}, [r6, : 64]! 166462306a36Sopenharmony_ci vmlal.s32 q5, d29, d4 166562306a36Sopenharmony_ci vmlal.s32 q15, d20, d0 166662306a36Sopenharmony_ci vext.32 d0, d6, d18, #1 166762306a36Sopenharmony_ci vmlal.s32 q15, d21, d25 166862306a36Sopenharmony_ci vrev64.i32 d0, d0 166962306a36Sopenharmony_ci vmlal.s32 q15, d26, d24 167062306a36Sopenharmony_ci vext.32 d1, d7, d19, #1 167162306a36Sopenharmony_ci vext.32 d7, d10, d10, #0 167262306a36Sopenharmony_ci vmlal.s32 q15, d27, d23 167362306a36Sopenharmony_ci vrev64.i32 d1, d1 167462306a36Sopenharmony_ci vld1.8 {d6}, [r6, : 64] 167562306a36Sopenharmony_ci vmlal.s32 q15, d28, d22 167662306a36Sopenharmony_ci vmlal.s32 q3, d16, d4 167762306a36Sopenharmony_ci add r6, r6, #24 167862306a36Sopenharmony_ci vmlal.s32 q3, d17, d2 167962306a36Sopenharmony_ci vext.32 d4, d31, d30, #0 168062306a36Sopenharmony_ci vmov d17, d11 168162306a36Sopenharmony_ci vmlal.s32 q3, d14, d1 168262306a36Sopenharmony_ci vext.32 d11, d13, d13, #0 168362306a36Sopenharmony_ci vext.32 d13, d30, d30, #0 168462306a36Sopenharmony_ci vmlal.s32 q3, d15, d0 168562306a36Sopenharmony_ci vext.32 d1, d8, d8, #0 168662306a36Sopenharmony_ci vmlal.s32 q3, d29, d3 168762306a36Sopenharmony_ci vld1.8 {d5}, [r6, : 64] 168862306a36Sopenharmony_ci sub r6, r6, #16 168962306a36Sopenharmony_ci vext.32 d10, d6, d6, #0 169062306a36Sopenharmony_ci vmov.i32 q1, #0xffffffff 169162306a36Sopenharmony_ci vshl.i64 q4, q1, #25 169262306a36Sopenharmony_ci add r7, sp, #480 169362306a36Sopenharmony_ci vld1.8 {d14-d15}, [r7, : 128] 169462306a36Sopenharmony_ci vadd.i64 q9, q2, q7 169562306a36Sopenharmony_ci vshl.i64 q1, q1, #26 169662306a36Sopenharmony_ci vshr.s64 q10, q9, #26 169762306a36Sopenharmony_ci vld1.8 {d0}, [r6, : 64]! 169862306a36Sopenharmony_ci vadd.i64 q5, q5, q10 169962306a36Sopenharmony_ci vand q9, q9, q1 170062306a36Sopenharmony_ci vld1.8 {d16}, [r6, : 64]! 170162306a36Sopenharmony_ci add r6, sp, #496 170262306a36Sopenharmony_ci vld1.8 {d20-d21}, [r6, : 128] 170362306a36Sopenharmony_ci vadd.i64 q11, q5, q10 170462306a36Sopenharmony_ci vsub.i64 q2, q2, q9 170562306a36Sopenharmony_ci vshr.s64 q9, q11, #25 170662306a36Sopenharmony_ci vext.32 d12, d5, d4, #0 170762306a36Sopenharmony_ci vand q11, q11, q4 170862306a36Sopenharmony_ci vadd.i64 q0, q0, q9 170962306a36Sopenharmony_ci vmov d19, d7 171062306a36Sopenharmony_ci vadd.i64 q3, q0, q7 171162306a36Sopenharmony_ci vsub.i64 q5, q5, q11 171262306a36Sopenharmony_ci vshr.s64 q11, q3, #26 171362306a36Sopenharmony_ci vext.32 d18, d11, d10, #0 171462306a36Sopenharmony_ci vand q3, q3, q1 171562306a36Sopenharmony_ci vadd.i64 q8, q8, q11 171662306a36Sopenharmony_ci vadd.i64 q11, q8, q10 171762306a36Sopenharmony_ci vsub.i64 q0, q0, q3 171862306a36Sopenharmony_ci vshr.s64 q3, q11, #25 171962306a36Sopenharmony_ci vand q11, q11, q4 172062306a36Sopenharmony_ci vadd.i64 q3, q6, q3 172162306a36Sopenharmony_ci vadd.i64 q6, q3, q7 172262306a36Sopenharmony_ci vsub.i64 q8, q8, q11 172362306a36Sopenharmony_ci vshr.s64 q11, q6, #26 172462306a36Sopenharmony_ci vand q6, q6, q1 172562306a36Sopenharmony_ci vadd.i64 q9, q9, q11 172662306a36Sopenharmony_ci vadd.i64 d25, d19, d21 172762306a36Sopenharmony_ci vsub.i64 q3, q3, q6 172862306a36Sopenharmony_ci vshr.s64 d23, d25, #25 172962306a36Sopenharmony_ci vand q4, q12, q4 173062306a36Sopenharmony_ci vadd.i64 d21, d23, d23 173162306a36Sopenharmony_ci vshl.i64 d25, d23, #4 173262306a36Sopenharmony_ci vadd.i64 d21, d21, d23 173362306a36Sopenharmony_ci vadd.i64 d25, d25, d21 173462306a36Sopenharmony_ci vadd.i64 d4, d4, d25 173562306a36Sopenharmony_ci vzip.i32 q0, q8 173662306a36Sopenharmony_ci vadd.i64 d12, d4, d14 173762306a36Sopenharmony_ci add r6, r8, #8 173862306a36Sopenharmony_ci vst1.8 d0, [r6, : 64] 173962306a36Sopenharmony_ci vsub.i64 d19, d19, d9 174062306a36Sopenharmony_ci add r6, r6, #16 174162306a36Sopenharmony_ci vst1.8 d16, [r6, : 64] 174262306a36Sopenharmony_ci vshr.s64 d22, d12, #26 174362306a36Sopenharmony_ci vand q0, q6, q1 174462306a36Sopenharmony_ci vadd.i64 d10, d10, d22 174562306a36Sopenharmony_ci vzip.i32 q3, q9 174662306a36Sopenharmony_ci vsub.i64 d4, d4, d0 174762306a36Sopenharmony_ci sub r6, r6, #8 174862306a36Sopenharmony_ci vst1.8 d6, [r6, : 64] 174962306a36Sopenharmony_ci add r6, r6, #16 175062306a36Sopenharmony_ci vst1.8 d18, [r6, : 64] 175162306a36Sopenharmony_ci vzip.i32 q2, q5 175262306a36Sopenharmony_ci sub r6, r6, #32 175362306a36Sopenharmony_ci vst1.8 d4, [r6, : 64] 175462306a36Sopenharmony_ci subs r5, r5, #1 175562306a36Sopenharmony_ci bhi .Lsquaringloop 175662306a36Sopenharmony_ci.Lskipsquaringloop: 175762306a36Sopenharmony_ci mov r2, r2 175862306a36Sopenharmony_ci add r5, r3, #288 175962306a36Sopenharmony_ci add r6, r3, #144 176062306a36Sopenharmony_ci vmov.i32 q0, #19 176162306a36Sopenharmony_ci vmov.i32 q1, #0 176262306a36Sopenharmony_ci vmov.i32 q2, #1 176362306a36Sopenharmony_ci vzip.i32 q1, q2 176462306a36Sopenharmony_ci vld1.8 {d4-d5}, [r5, : 128]! 176562306a36Sopenharmony_ci vld1.8 {d6-d7}, [r5, : 128]! 176662306a36Sopenharmony_ci vld1.8 {d9}, [r5, : 64] 176762306a36Sopenharmony_ci vld1.8 {d10-d11}, [r2, : 128]! 176862306a36Sopenharmony_ci add r5, sp, #384 176962306a36Sopenharmony_ci vld1.8 {d12-d13}, [r2, : 128]! 177062306a36Sopenharmony_ci vmul.i32 q7, q2, q0 177162306a36Sopenharmony_ci vld1.8 {d8}, [r2, : 64] 177262306a36Sopenharmony_ci vext.32 d17, d11, d10, #1 177362306a36Sopenharmony_ci vmul.i32 q9, q3, q0 177462306a36Sopenharmony_ci vext.32 d16, d10, d8, #1 177562306a36Sopenharmony_ci vshl.u32 q10, q5, q1 177662306a36Sopenharmony_ci vext.32 d22, d14, d4, #1 177762306a36Sopenharmony_ci vext.32 d24, d18, d6, #1 177862306a36Sopenharmony_ci vshl.u32 q13, q6, q1 177962306a36Sopenharmony_ci vshl.u32 d28, d8, d2 178062306a36Sopenharmony_ci vrev64.i32 d22, d22 178162306a36Sopenharmony_ci vmul.i32 d1, d9, d1 178262306a36Sopenharmony_ci vrev64.i32 d24, d24 178362306a36Sopenharmony_ci vext.32 d29, d8, d13, #1 178462306a36Sopenharmony_ci vext.32 d0, d1, d9, #1 178562306a36Sopenharmony_ci vrev64.i32 d0, d0 178662306a36Sopenharmony_ci vext.32 d2, d9, d1, #1 178762306a36Sopenharmony_ci vext.32 d23, d15, d5, #1 178862306a36Sopenharmony_ci vmull.s32 q4, d20, d4 178962306a36Sopenharmony_ci vrev64.i32 d23, d23 179062306a36Sopenharmony_ci vmlal.s32 q4, d21, d1 179162306a36Sopenharmony_ci vrev64.i32 d2, d2 179262306a36Sopenharmony_ci vmlal.s32 q4, d26, d19 179362306a36Sopenharmony_ci vext.32 d3, d5, d15, #1 179462306a36Sopenharmony_ci vmlal.s32 q4, d27, d18 179562306a36Sopenharmony_ci vrev64.i32 d3, d3 179662306a36Sopenharmony_ci vmlal.s32 q4, d28, d15 179762306a36Sopenharmony_ci vext.32 d14, d12, d11, #1 179862306a36Sopenharmony_ci vmull.s32 q5, d16, d23 179962306a36Sopenharmony_ci vext.32 d15, d13, d12, #1 180062306a36Sopenharmony_ci vmlal.s32 q5, d17, d4 180162306a36Sopenharmony_ci vst1.8 d8, [r5, : 64]! 180262306a36Sopenharmony_ci vmlal.s32 q5, d14, d1 180362306a36Sopenharmony_ci vext.32 d12, d9, d8, #0 180462306a36Sopenharmony_ci vmlal.s32 q5, d15, d19 180562306a36Sopenharmony_ci vmov.i64 d13, #0 180662306a36Sopenharmony_ci vmlal.s32 q5, d29, d18 180762306a36Sopenharmony_ci vext.32 d25, d19, d7, #1 180862306a36Sopenharmony_ci vmlal.s32 q6, d20, d5 180962306a36Sopenharmony_ci vrev64.i32 d25, d25 181062306a36Sopenharmony_ci vmlal.s32 q6, d21, d4 181162306a36Sopenharmony_ci vst1.8 d11, [r5, : 64]! 181262306a36Sopenharmony_ci vmlal.s32 q6, d26, d1 181362306a36Sopenharmony_ci vext.32 d9, d10, d10, #0 181462306a36Sopenharmony_ci vmlal.s32 q6, d27, d19 181562306a36Sopenharmony_ci vmov.i64 d8, #0 181662306a36Sopenharmony_ci vmlal.s32 q6, d28, d18 181762306a36Sopenharmony_ci vmlal.s32 q4, d16, d24 181862306a36Sopenharmony_ci vmlal.s32 q4, d17, d5 181962306a36Sopenharmony_ci vmlal.s32 q4, d14, d4 182062306a36Sopenharmony_ci vst1.8 d12, [r5, : 64]! 182162306a36Sopenharmony_ci vmlal.s32 q4, d15, d1 182262306a36Sopenharmony_ci vext.32 d10, d13, d12, #0 182362306a36Sopenharmony_ci vmlal.s32 q4, d29, d19 182462306a36Sopenharmony_ci vmov.i64 d11, #0 182562306a36Sopenharmony_ci vmlal.s32 q5, d20, d6 182662306a36Sopenharmony_ci vmlal.s32 q5, d21, d5 182762306a36Sopenharmony_ci vmlal.s32 q5, d26, d4 182862306a36Sopenharmony_ci vext.32 d13, d8, d8, #0 182962306a36Sopenharmony_ci vmlal.s32 q5, d27, d1 183062306a36Sopenharmony_ci vmov.i64 d12, #0 183162306a36Sopenharmony_ci vmlal.s32 q5, d28, d19 183262306a36Sopenharmony_ci vst1.8 d9, [r5, : 64]! 183362306a36Sopenharmony_ci vmlal.s32 q6, d16, d25 183462306a36Sopenharmony_ci vmlal.s32 q6, d17, d6 183562306a36Sopenharmony_ci vst1.8 d10, [r5, : 64] 183662306a36Sopenharmony_ci vmlal.s32 q6, d14, d5 183762306a36Sopenharmony_ci vext.32 d8, d11, d10, #0 183862306a36Sopenharmony_ci vmlal.s32 q6, d15, d4 183962306a36Sopenharmony_ci vmov.i64 d9, #0 184062306a36Sopenharmony_ci vmlal.s32 q6, d29, d1 184162306a36Sopenharmony_ci vmlal.s32 q4, d20, d7 184262306a36Sopenharmony_ci vmlal.s32 q4, d21, d6 184362306a36Sopenharmony_ci vmlal.s32 q4, d26, d5 184462306a36Sopenharmony_ci vext.32 d11, d12, d12, #0 184562306a36Sopenharmony_ci vmlal.s32 q4, d27, d4 184662306a36Sopenharmony_ci vmov.i64 d10, #0 184762306a36Sopenharmony_ci vmlal.s32 q4, d28, d1 184862306a36Sopenharmony_ci vmlal.s32 q5, d16, d0 184962306a36Sopenharmony_ci sub r2, r5, #32 185062306a36Sopenharmony_ci vmlal.s32 q5, d17, d7 185162306a36Sopenharmony_ci vmlal.s32 q5, d14, d6 185262306a36Sopenharmony_ci vext.32 d30, d9, d8, #0 185362306a36Sopenharmony_ci vmlal.s32 q5, d15, d5 185462306a36Sopenharmony_ci vld1.8 {d31}, [r2, : 64]! 185562306a36Sopenharmony_ci vmlal.s32 q5, d29, d4 185662306a36Sopenharmony_ci vmlal.s32 q15, d20, d0 185762306a36Sopenharmony_ci vext.32 d0, d6, d18, #1 185862306a36Sopenharmony_ci vmlal.s32 q15, d21, d25 185962306a36Sopenharmony_ci vrev64.i32 d0, d0 186062306a36Sopenharmony_ci vmlal.s32 q15, d26, d24 186162306a36Sopenharmony_ci vext.32 d1, d7, d19, #1 186262306a36Sopenharmony_ci vext.32 d7, d10, d10, #0 186362306a36Sopenharmony_ci vmlal.s32 q15, d27, d23 186462306a36Sopenharmony_ci vrev64.i32 d1, d1 186562306a36Sopenharmony_ci vld1.8 {d6}, [r2, : 64] 186662306a36Sopenharmony_ci vmlal.s32 q15, d28, d22 186762306a36Sopenharmony_ci vmlal.s32 q3, d16, d4 186862306a36Sopenharmony_ci add r2, r2, #24 186962306a36Sopenharmony_ci vmlal.s32 q3, d17, d2 187062306a36Sopenharmony_ci vext.32 d4, d31, d30, #0 187162306a36Sopenharmony_ci vmov d17, d11 187262306a36Sopenharmony_ci vmlal.s32 q3, d14, d1 187362306a36Sopenharmony_ci vext.32 d11, d13, d13, #0 187462306a36Sopenharmony_ci vext.32 d13, d30, d30, #0 187562306a36Sopenharmony_ci vmlal.s32 q3, d15, d0 187662306a36Sopenharmony_ci vext.32 d1, d8, d8, #0 187762306a36Sopenharmony_ci vmlal.s32 q3, d29, d3 187862306a36Sopenharmony_ci vld1.8 {d5}, [r2, : 64] 187962306a36Sopenharmony_ci sub r2, r2, #16 188062306a36Sopenharmony_ci vext.32 d10, d6, d6, #0 188162306a36Sopenharmony_ci vmov.i32 q1, #0xffffffff 188262306a36Sopenharmony_ci vshl.i64 q4, q1, #25 188362306a36Sopenharmony_ci add r5, sp, #480 188462306a36Sopenharmony_ci vld1.8 {d14-d15}, [r5, : 128] 188562306a36Sopenharmony_ci vadd.i64 q9, q2, q7 188662306a36Sopenharmony_ci vshl.i64 q1, q1, #26 188762306a36Sopenharmony_ci vshr.s64 q10, q9, #26 188862306a36Sopenharmony_ci vld1.8 {d0}, [r2, : 64]! 188962306a36Sopenharmony_ci vadd.i64 q5, q5, q10 189062306a36Sopenharmony_ci vand q9, q9, q1 189162306a36Sopenharmony_ci vld1.8 {d16}, [r2, : 64]! 189262306a36Sopenharmony_ci add r2, sp, #496 189362306a36Sopenharmony_ci vld1.8 {d20-d21}, [r2, : 128] 189462306a36Sopenharmony_ci vadd.i64 q11, q5, q10 189562306a36Sopenharmony_ci vsub.i64 q2, q2, q9 189662306a36Sopenharmony_ci vshr.s64 q9, q11, #25 189762306a36Sopenharmony_ci vext.32 d12, d5, d4, #0 189862306a36Sopenharmony_ci vand q11, q11, q4 189962306a36Sopenharmony_ci vadd.i64 q0, q0, q9 190062306a36Sopenharmony_ci vmov d19, d7 190162306a36Sopenharmony_ci vadd.i64 q3, q0, q7 190262306a36Sopenharmony_ci vsub.i64 q5, q5, q11 190362306a36Sopenharmony_ci vshr.s64 q11, q3, #26 190462306a36Sopenharmony_ci vext.32 d18, d11, d10, #0 190562306a36Sopenharmony_ci vand q3, q3, q1 190662306a36Sopenharmony_ci vadd.i64 q8, q8, q11 190762306a36Sopenharmony_ci vadd.i64 q11, q8, q10 190862306a36Sopenharmony_ci vsub.i64 q0, q0, q3 190962306a36Sopenharmony_ci vshr.s64 q3, q11, #25 191062306a36Sopenharmony_ci vand q11, q11, q4 191162306a36Sopenharmony_ci vadd.i64 q3, q6, q3 191262306a36Sopenharmony_ci vadd.i64 q6, q3, q7 191362306a36Sopenharmony_ci vsub.i64 q8, q8, q11 191462306a36Sopenharmony_ci vshr.s64 q11, q6, #26 191562306a36Sopenharmony_ci vand q6, q6, q1 191662306a36Sopenharmony_ci vadd.i64 q9, q9, q11 191762306a36Sopenharmony_ci vadd.i64 d25, d19, d21 191862306a36Sopenharmony_ci vsub.i64 q3, q3, q6 191962306a36Sopenharmony_ci vshr.s64 d23, d25, #25 192062306a36Sopenharmony_ci vand q4, q12, q4 192162306a36Sopenharmony_ci vadd.i64 d21, d23, d23 192262306a36Sopenharmony_ci vshl.i64 d25, d23, #4 192362306a36Sopenharmony_ci vadd.i64 d21, d21, d23 192462306a36Sopenharmony_ci vadd.i64 d25, d25, d21 192562306a36Sopenharmony_ci vadd.i64 d4, d4, d25 192662306a36Sopenharmony_ci vzip.i32 q0, q8 192762306a36Sopenharmony_ci vadd.i64 d12, d4, d14 192862306a36Sopenharmony_ci add r2, r6, #8 192962306a36Sopenharmony_ci vst1.8 d0, [r2, : 64] 193062306a36Sopenharmony_ci vsub.i64 d19, d19, d9 193162306a36Sopenharmony_ci add r2, r2, #16 193262306a36Sopenharmony_ci vst1.8 d16, [r2, : 64] 193362306a36Sopenharmony_ci vshr.s64 d22, d12, #26 193462306a36Sopenharmony_ci vand q0, q6, q1 193562306a36Sopenharmony_ci vadd.i64 d10, d10, d22 193662306a36Sopenharmony_ci vzip.i32 q3, q9 193762306a36Sopenharmony_ci vsub.i64 d4, d4, d0 193862306a36Sopenharmony_ci sub r2, r2, #8 193962306a36Sopenharmony_ci vst1.8 d6, [r2, : 64] 194062306a36Sopenharmony_ci add r2, r2, #16 194162306a36Sopenharmony_ci vst1.8 d18, [r2, : 64] 194262306a36Sopenharmony_ci vzip.i32 q2, q5 194362306a36Sopenharmony_ci sub r2, r2, #32 194462306a36Sopenharmony_ci vst1.8 d4, [r2, : 64] 194562306a36Sopenharmony_ci cmp r4, #0 194662306a36Sopenharmony_ci beq .Lskippostcopy 194762306a36Sopenharmony_ci add r2, r3, #144 194862306a36Sopenharmony_ci mov r4, r4 194962306a36Sopenharmony_ci vld1.8 {d0-d1}, [r2, : 128]! 195062306a36Sopenharmony_ci vld1.8 {d2-d3}, [r2, : 128]! 195162306a36Sopenharmony_ci vld1.8 {d4}, [r2, : 64] 195262306a36Sopenharmony_ci vst1.8 {d0-d1}, [r4, : 128]! 195362306a36Sopenharmony_ci vst1.8 {d2-d3}, [r4, : 128]! 195462306a36Sopenharmony_ci vst1.8 d4, [r4, : 64] 195562306a36Sopenharmony_ci.Lskippostcopy: 195662306a36Sopenharmony_ci cmp r1, #1 195762306a36Sopenharmony_ci bne .Lskipfinalcopy 195862306a36Sopenharmony_ci add r2, r3, #288 195962306a36Sopenharmony_ci add r4, r3, #144 196062306a36Sopenharmony_ci vld1.8 {d0-d1}, [r2, : 128]! 196162306a36Sopenharmony_ci vld1.8 {d2-d3}, [r2, : 128]! 196262306a36Sopenharmony_ci vld1.8 {d4}, [r2, : 64] 196362306a36Sopenharmony_ci vst1.8 {d0-d1}, [r4, : 128]! 196462306a36Sopenharmony_ci vst1.8 {d2-d3}, [r4, : 128]! 196562306a36Sopenharmony_ci vst1.8 d4, [r4, : 64] 196662306a36Sopenharmony_ci.Lskipfinalcopy: 196762306a36Sopenharmony_ci add r1, r1, #1 196862306a36Sopenharmony_ci cmp r1, #12 196962306a36Sopenharmony_ci blo .Linvertloop 197062306a36Sopenharmony_ci add r1, r3, #144 197162306a36Sopenharmony_ci ldr r2, [r1], #4 197262306a36Sopenharmony_ci ldr r3, [r1], #4 197362306a36Sopenharmony_ci ldr r4, [r1], #4 197462306a36Sopenharmony_ci ldr r5, [r1], #4 197562306a36Sopenharmony_ci ldr r6, [r1], #4 197662306a36Sopenharmony_ci ldr r7, [r1], #4 197762306a36Sopenharmony_ci ldr r8, [r1], #4 197862306a36Sopenharmony_ci ldr r9, [r1], #4 197962306a36Sopenharmony_ci ldr r10, [r1], #4 198062306a36Sopenharmony_ci ldr r1, [r1] 198162306a36Sopenharmony_ci add r11, r1, r1, LSL #4 198262306a36Sopenharmony_ci add r11, r11, r1, LSL #1 198362306a36Sopenharmony_ci add r11, r11, #16777216 198462306a36Sopenharmony_ci mov r11, r11, ASR #25 198562306a36Sopenharmony_ci add r11, r11, r2 198662306a36Sopenharmony_ci mov r11, r11, ASR #26 198762306a36Sopenharmony_ci add r11, r11, r3 198862306a36Sopenharmony_ci mov r11, r11, ASR #25 198962306a36Sopenharmony_ci add r11, r11, r4 199062306a36Sopenharmony_ci mov r11, r11, ASR #26 199162306a36Sopenharmony_ci add r11, r11, r5 199262306a36Sopenharmony_ci mov r11, r11, ASR #25 199362306a36Sopenharmony_ci add r11, r11, r6 199462306a36Sopenharmony_ci mov r11, r11, ASR #26 199562306a36Sopenharmony_ci add r11, r11, r7 199662306a36Sopenharmony_ci mov r11, r11, ASR #25 199762306a36Sopenharmony_ci add r11, r11, r8 199862306a36Sopenharmony_ci mov r11, r11, ASR #26 199962306a36Sopenharmony_ci add r11, r11, r9 200062306a36Sopenharmony_ci mov r11, r11, ASR #25 200162306a36Sopenharmony_ci add r11, r11, r10 200262306a36Sopenharmony_ci mov r11, r11, ASR #26 200362306a36Sopenharmony_ci add r11, r11, r1 200462306a36Sopenharmony_ci mov r11, r11, ASR #25 200562306a36Sopenharmony_ci add r2, r2, r11 200662306a36Sopenharmony_ci add r2, r2, r11, LSL #1 200762306a36Sopenharmony_ci add r2, r2, r11, LSL #4 200862306a36Sopenharmony_ci mov r11, r2, ASR #26 200962306a36Sopenharmony_ci add r3, r3, r11 201062306a36Sopenharmony_ci sub r2, r2, r11, LSL #26 201162306a36Sopenharmony_ci mov r11, r3, ASR #25 201262306a36Sopenharmony_ci add r4, r4, r11 201362306a36Sopenharmony_ci sub r3, r3, r11, LSL #25 201462306a36Sopenharmony_ci mov r11, r4, ASR #26 201562306a36Sopenharmony_ci add r5, r5, r11 201662306a36Sopenharmony_ci sub r4, r4, r11, LSL #26 201762306a36Sopenharmony_ci mov r11, r5, ASR #25 201862306a36Sopenharmony_ci add r6, r6, r11 201962306a36Sopenharmony_ci sub r5, r5, r11, LSL #25 202062306a36Sopenharmony_ci mov r11, r6, ASR #26 202162306a36Sopenharmony_ci add r7, r7, r11 202262306a36Sopenharmony_ci sub r6, r6, r11, LSL #26 202362306a36Sopenharmony_ci mov r11, r7, ASR #25 202462306a36Sopenharmony_ci add r8, r8, r11 202562306a36Sopenharmony_ci sub r7, r7, r11, LSL #25 202662306a36Sopenharmony_ci mov r11, r8, ASR #26 202762306a36Sopenharmony_ci add r9, r9, r11 202862306a36Sopenharmony_ci sub r8, r8, r11, LSL #26 202962306a36Sopenharmony_ci mov r11, r9, ASR #25 203062306a36Sopenharmony_ci add r10, r10, r11 203162306a36Sopenharmony_ci sub r9, r9, r11, LSL #25 203262306a36Sopenharmony_ci mov r11, r10, ASR #26 203362306a36Sopenharmony_ci add r1, r1, r11 203462306a36Sopenharmony_ci sub r10, r10, r11, LSL #26 203562306a36Sopenharmony_ci mov r11, r1, ASR #25 203662306a36Sopenharmony_ci sub r1, r1, r11, LSL #25 203762306a36Sopenharmony_ci add r2, r2, r3, LSL #26 203862306a36Sopenharmony_ci mov r3, r3, LSR #6 203962306a36Sopenharmony_ci add r3, r3, r4, LSL #19 204062306a36Sopenharmony_ci mov r4, r4, LSR #13 204162306a36Sopenharmony_ci add r4, r4, r5, LSL #13 204262306a36Sopenharmony_ci mov r5, r5, LSR #19 204362306a36Sopenharmony_ci add r5, r5, r6, LSL #6 204462306a36Sopenharmony_ci add r6, r7, r8, LSL #25 204562306a36Sopenharmony_ci mov r7, r8, LSR #7 204662306a36Sopenharmony_ci add r7, r7, r9, LSL #19 204762306a36Sopenharmony_ci mov r8, r9, LSR #13 204862306a36Sopenharmony_ci add r8, r8, r10, LSL #12 204962306a36Sopenharmony_ci mov r9, r10, LSR #20 205062306a36Sopenharmony_ci add r1, r9, r1, LSL #6 205162306a36Sopenharmony_ci str r2, [r0] 205262306a36Sopenharmony_ci str r3, [r0, #4] 205362306a36Sopenharmony_ci str r4, [r0, #8] 205462306a36Sopenharmony_ci str r5, [r0, #12] 205562306a36Sopenharmony_ci str r6, [r0, #16] 205662306a36Sopenharmony_ci str r7, [r0, #20] 205762306a36Sopenharmony_ci str r8, [r0, #24] 205862306a36Sopenharmony_ci str r1, [r0, #28] 205962306a36Sopenharmony_ci movw r0, #0 206062306a36Sopenharmony_ci mov sp, ip 206162306a36Sopenharmony_ci pop {r4-r11, pc} 206262306a36Sopenharmony_ciENDPROC(curve25519_neon) 2063