1d8f1308aSJason A. Donenfeld/* SPDX-License-Identifier: GPL-2.0 OR MIT */ 2f0fb006bSJason A. Donenfeld/* 3d8f1308aSJason A. Donenfeld * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 4d8f1308aSJason A. Donenfeld * 5d8f1308aSJason A. Donenfeld * Based on public domain code from Daniel J. Bernstein and Peter Schwabe. This 6d8f1308aSJason A. Donenfeld * began from SUPERCOP's curve25519/neon2/scalarmult.s, but has subsequently been 7d8f1308aSJason A. Donenfeld * manually reworked for use in kernel space. 8f0fb006bSJason A. Donenfeld */ 9f0fb006bSJason A. Donenfeld 10d8f1308aSJason A. Donenfeld#include <linux/linkage.h> 11d8f1308aSJason A. Donenfeld 12f0fb006bSJason A. Donenfeld.text 13d8f1308aSJason A. Donenfeld.arch armv7-a 14*44200f2dSNathan Chancellor.fpu neon 15f0fb006bSJason A. Donenfeld.align 4 16d8f1308aSJason A. Donenfeld 17d8f1308aSJason A. DonenfeldENTRY(curve25519_neon) 18d8f1308aSJason A. Donenfeld push {r4-r11, lr} 19d8f1308aSJason A. Donenfeld mov ip, sp 20d8f1308aSJason A. Donenfeld sub r3, sp, #704 21d8f1308aSJason A. Donenfeld and r3, r3, #0xfffffff0 22d8f1308aSJason A. Donenfeld mov sp, r3 23d8f1308aSJason A. Donenfeld movw r4, #0 24d8f1308aSJason A. Donenfeld movw r5, #254 25f0fb006bSJason A. Donenfeld vmov.i32 q0, #1 26f0fb006bSJason A. Donenfeld vshr.u64 q1, q0, #7 27f0fb006bSJason A. Donenfeld vshr.u64 q0, q0, #8 28f0fb006bSJason A. Donenfeld vmov.i32 d4, #19 29f0fb006bSJason A. Donenfeld vmov.i32 d5, #38 30d8f1308aSJason A. Donenfeld add r6, sp, #480 31d8f1308aSJason A. Donenfeld vst1.8 {d2-d3}, [r6, : 128]! 32d8f1308aSJason A. Donenfeld vst1.8 {d0-d1}, [r6, : 128]! 33f0fb006bSJason A. Donenfeld vst1.8 {d4-d5}, [r6, : 128] 34f0fb006bSJason A. Donenfeld add r6, r3, #0 35f0fb006bSJason A. Donenfeld vmov.i32 q2, #0 36f0fb006bSJason A. Donenfeld vst1.8 {d4-d5}, [r6, : 128]! 37f0fb006bSJason A. Donenfeld vst1.8 {d4-d5}, [r6, : 128]! 38f0fb006bSJason A. Donenfeld vst1.8 d4, [r6, : 64] 39f0fb006bSJason A. Donenfeld add r6, r3, #0 40d8f1308aSJason A. Donenfeld movw r7, #960 41f0fb006bSJason A. Donenfeld sub r7, r7, #2 42f0fb006bSJason A. Donenfeld neg r7, r7 43f0fb006bSJason A. Donenfeld sub r7, r7, r7, LSL #7 44f0fb006bSJason A. Donenfeld str r7, [r6] 45d8f1308aSJason A. Donenfeld add r6, sp, #672 46f0fb006bSJason A. Donenfeld vld1.8 {d4-d5}, [r1]! 47f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r1] 48f0fb006bSJason A. Donenfeld vst1.8 {d4-d5}, [r6, : 128]! 49f0fb006bSJason A. Donenfeld vst1.8 {d6-d7}, [r6, : 128] 50f0fb006bSJason A. Donenfeld sub r1, r6, #16 51f0fb006bSJason A. Donenfeld ldrb r6, [r1] 52f0fb006bSJason A. Donenfeld and r6, r6, #248 53f0fb006bSJason A. Donenfeld strb r6, [r1] 54f0fb006bSJason A. Donenfeld ldrb r6, [r1, #31] 55f0fb006bSJason A. Donenfeld and r6, r6, #127 56f0fb006bSJason A. Donenfeld orr r6, r6, #64 57f0fb006bSJason A. Donenfeld strb r6, [r1, #31] 58f0fb006bSJason A. Donenfeld vmov.i64 q2, #0xffffffff 59f0fb006bSJason A. Donenfeld vshr.u64 q3, q2, #7 60f0fb006bSJason A. Donenfeld vshr.u64 q2, q2, #6 61f0fb006bSJason A. Donenfeld vld1.8 {d8}, [r2] 62f0fb006bSJason A. Donenfeld vld1.8 {d10}, [r2] 63f0fb006bSJason A. Donenfeld add r2, r2, #6 64f0fb006bSJason A. Donenfeld vld1.8 {d12}, [r2] 65f0fb006bSJason A. Donenfeld vld1.8 {d14}, [r2] 66f0fb006bSJason A. Donenfeld add r2, r2, #6 67f0fb006bSJason A. Donenfeld vld1.8 {d16}, [r2] 68f0fb006bSJason A. Donenfeld add r2, r2, #4 69f0fb006bSJason A. Donenfeld vld1.8 {d18}, [r2] 70f0fb006bSJason A. Donenfeld vld1.8 {d20}, [r2] 71f0fb006bSJason A. Donenfeld add r2, r2, #6 72f0fb006bSJason A. Donenfeld vld1.8 {d22}, [r2] 73f0fb006bSJason A. Donenfeld add r2, r2, #2 74f0fb006bSJason A. Donenfeld vld1.8 {d24}, [r2] 75f0fb006bSJason A. Donenfeld vld1.8 {d26}, [r2] 76f0fb006bSJason A. Donenfeld vshr.u64 q5, q5, #26 77f0fb006bSJason A. Donenfeld vshr.u64 q6, q6, #3 78f0fb006bSJason A. Donenfeld vshr.u64 q7, q7, #29 79f0fb006bSJason A. Donenfeld vshr.u64 q8, q8, #6 80f0fb006bSJason A. Donenfeld vshr.u64 q10, q10, #25 81f0fb006bSJason A. Donenfeld vshr.u64 q11, q11, #3 82f0fb006bSJason A. Donenfeld vshr.u64 q12, q12, #12 83f0fb006bSJason A. Donenfeld vshr.u64 q13, q13, #38 84f0fb006bSJason A. Donenfeld vand q4, q4, q2 85f0fb006bSJason A. Donenfeld vand q6, q6, q2 86f0fb006bSJason A. Donenfeld vand q8, q8, q2 87f0fb006bSJason A. Donenfeld vand q10, q10, q2 88f0fb006bSJason A. Donenfeld vand q2, q12, q2 89f0fb006bSJason A. Donenfeld vand q5, q5, q3 90f0fb006bSJason A. Donenfeld vand q7, q7, q3 91f0fb006bSJason A. Donenfeld vand q9, q9, q3 92f0fb006bSJason A. Donenfeld vand q11, q11, q3 93f0fb006bSJason A. Donenfeld vand q3, q13, q3 94f0fb006bSJason A. Donenfeld add r2, r3, #48 95f0fb006bSJason A. Donenfeld vadd.i64 q12, q4, q1 96f0fb006bSJason A. Donenfeld vadd.i64 q13, q10, q1 97f0fb006bSJason A. Donenfeld vshr.s64 q12, q12, #26 98f0fb006bSJason A. Donenfeld vshr.s64 q13, q13, #26 99f0fb006bSJason A. Donenfeld vadd.i64 q5, q5, q12 100f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #26 101f0fb006bSJason A. Donenfeld vadd.i64 q14, q5, q0 102f0fb006bSJason A. Donenfeld vadd.i64 q11, q11, q13 103f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #26 104f0fb006bSJason A. Donenfeld vadd.i64 q15, q11, q0 105f0fb006bSJason A. Donenfeld vsub.i64 q4, q4, q12 106f0fb006bSJason A. Donenfeld vshr.s64 q12, q14, #25 107f0fb006bSJason A. Donenfeld vsub.i64 q10, q10, q13 108f0fb006bSJason A. Donenfeld vshr.s64 q13, q15, #25 109f0fb006bSJason A. Donenfeld vadd.i64 q6, q6, q12 110f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #25 111f0fb006bSJason A. Donenfeld vadd.i64 q14, q6, q1 112f0fb006bSJason A. Donenfeld vadd.i64 q2, q2, q13 113f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q12 114f0fb006bSJason A. Donenfeld vshr.s64 q12, q14, #26 115f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #25 116f0fb006bSJason A. Donenfeld vadd.i64 q14, q2, q1 117f0fb006bSJason A. Donenfeld vadd.i64 q7, q7, q12 118f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #26 119f0fb006bSJason A. Donenfeld vadd.i64 q15, q7, q0 120f0fb006bSJason A. Donenfeld vsub.i64 q11, q11, q13 121f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #26 122f0fb006bSJason A. Donenfeld vsub.i64 q6, q6, q12 123f0fb006bSJason A. Donenfeld vshr.s64 q12, q15, #25 124f0fb006bSJason A. Donenfeld vadd.i64 q3, q3, q13 125f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #26 126f0fb006bSJason A. Donenfeld vadd.i64 q14, q3, q0 127f0fb006bSJason A. Donenfeld vadd.i64 q8, q8, q12 128f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #25 129f0fb006bSJason A. Donenfeld vadd.i64 q15, q8, q1 130f0fb006bSJason A. Donenfeld add r2, r2, #8 131f0fb006bSJason A. Donenfeld vsub.i64 q2, q2, q13 132f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #25 133f0fb006bSJason A. Donenfeld vsub.i64 q7, q7, q12 134f0fb006bSJason A. Donenfeld vshr.s64 q12, q15, #26 135f0fb006bSJason A. Donenfeld vadd.i64 q14, q13, q13 136f0fb006bSJason A. Donenfeld vadd.i64 q9, q9, q12 137f0fb006bSJason A. Donenfeld vtrn.32 d12, d14 138f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #26 139f0fb006bSJason A. Donenfeld vtrn.32 d13, d15 140f0fb006bSJason A. Donenfeld vadd.i64 q0, q9, q0 141f0fb006bSJason A. Donenfeld vadd.i64 q4, q4, q14 142f0fb006bSJason A. Donenfeld vst1.8 d12, [r2, : 64]! 143f0fb006bSJason A. Donenfeld vshl.i64 q6, q13, #4 144f0fb006bSJason A. Donenfeld vsub.i64 q7, q8, q12 145f0fb006bSJason A. Donenfeld vshr.s64 q0, q0, #25 146f0fb006bSJason A. Donenfeld vadd.i64 q4, q4, q6 147f0fb006bSJason A. Donenfeld vadd.i64 q6, q10, q0 148f0fb006bSJason A. Donenfeld vshl.i64 q0, q0, #25 149f0fb006bSJason A. Donenfeld vadd.i64 q8, q6, q1 150f0fb006bSJason A. Donenfeld vadd.i64 q4, q4, q13 151f0fb006bSJason A. Donenfeld vshl.i64 q10, q13, #25 152f0fb006bSJason A. Donenfeld vadd.i64 q1, q4, q1 153f0fb006bSJason A. Donenfeld vsub.i64 q0, q9, q0 154f0fb006bSJason A. Donenfeld vshr.s64 q8, q8, #26 155f0fb006bSJason A. Donenfeld vsub.i64 q3, q3, q10 156f0fb006bSJason A. Donenfeld vtrn.32 d14, d0 157f0fb006bSJason A. Donenfeld vshr.s64 q1, q1, #26 158f0fb006bSJason A. Donenfeld vtrn.32 d15, d1 159f0fb006bSJason A. Donenfeld vadd.i64 q0, q11, q8 160f0fb006bSJason A. Donenfeld vst1.8 d14, [r2, : 64] 161f0fb006bSJason A. Donenfeld vshl.i64 q7, q8, #26 162f0fb006bSJason A. Donenfeld vadd.i64 q5, q5, q1 163f0fb006bSJason A. Donenfeld vtrn.32 d4, d6 164f0fb006bSJason A. Donenfeld vshl.i64 q1, q1, #26 165f0fb006bSJason A. Donenfeld vtrn.32 d5, d7 166f0fb006bSJason A. Donenfeld vsub.i64 q3, q6, q7 167f0fb006bSJason A. Donenfeld add r2, r2, #16 168f0fb006bSJason A. Donenfeld vsub.i64 q1, q4, q1 169f0fb006bSJason A. Donenfeld vst1.8 d4, [r2, : 64] 170f0fb006bSJason A. Donenfeld vtrn.32 d6, d0 171f0fb006bSJason A. Donenfeld vtrn.32 d7, d1 172f0fb006bSJason A. Donenfeld sub r2, r2, #8 173f0fb006bSJason A. Donenfeld vtrn.32 d2, d10 174f0fb006bSJason A. Donenfeld vtrn.32 d3, d11 175f0fb006bSJason A. Donenfeld vst1.8 d6, [r2, : 64] 176f0fb006bSJason A. Donenfeld sub r2, r2, #24 177f0fb006bSJason A. Donenfeld vst1.8 d2, [r2, : 64] 178f0fb006bSJason A. Donenfeld add r2, r3, #96 179f0fb006bSJason A. Donenfeld vmov.i32 q0, #0 180f0fb006bSJason A. Donenfeld vmov.i64 d2, #0xff 181f0fb006bSJason A. Donenfeld vmov.i64 d3, #0 182f0fb006bSJason A. Donenfeld vshr.u32 q1, q1, #7 183f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r2, : 128]! 184f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r2, : 128]! 185f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 186f0fb006bSJason A. Donenfeld add r2, r3, #144 187f0fb006bSJason A. Donenfeld vmov.i32 q0, #0 188f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r2, : 128]! 189f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r2, : 128]! 190f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 191f0fb006bSJason A. Donenfeld add r2, r3, #240 192f0fb006bSJason A. Donenfeld vmov.i32 q0, #0 193f0fb006bSJason A. Donenfeld vmov.i64 d2, #0xff 194f0fb006bSJason A. Donenfeld vmov.i64 d3, #0 195f0fb006bSJason A. Donenfeld vshr.u32 q1, q1, #7 196f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r2, : 128]! 197f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r2, : 128]! 198f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 199f0fb006bSJason A. Donenfeld add r2, r3, #48 200f0fb006bSJason A. Donenfeld add r6, r3, #192 201f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r2, : 128]! 202f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r2, : 128]! 203f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r2, : 64] 204f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r6, : 128]! 205f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r6, : 128]! 206f0fb006bSJason A. Donenfeld vst1.8 d4, [r6, : 64] 207d8f1308aSJason A. Donenfeld.Lmainloop: 208f0fb006bSJason A. Donenfeld mov r2, r5, LSR #3 209f0fb006bSJason A. Donenfeld and r6, r5, #7 210f0fb006bSJason A. Donenfeld ldrb r2, [r1, r2] 211f0fb006bSJason A. Donenfeld mov r2, r2, LSR r6 212f0fb006bSJason A. Donenfeld and r2, r2, #1 213d8f1308aSJason A. Donenfeld str r5, [sp, #456] 214f0fb006bSJason A. Donenfeld eor r4, r4, r2 215d8f1308aSJason A. Donenfeld str r2, [sp, #460] 216f0fb006bSJason A. Donenfeld neg r2, r4 217f0fb006bSJason A. Donenfeld add r4, r3, #96 218f0fb006bSJason A. Donenfeld add r5, r3, #192 219f0fb006bSJason A. Donenfeld add r6, r3, #144 220f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r4, : 128]! 221f0fb006bSJason A. Donenfeld add r7, r3, #240 222f0fb006bSJason A. Donenfeld vld1.8 {d10-d11}, [r5, : 128]! 223f0fb006bSJason A. Donenfeld veor q6, q4, q5 224f0fb006bSJason A. Donenfeld vld1.8 {d14-d15}, [r6, : 128]! 225f0fb006bSJason A. Donenfeld vdup.i32 q8, r2 226f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r7, : 128]! 227f0fb006bSJason A. Donenfeld veor q10, q7, q9 228f0fb006bSJason A. Donenfeld vld1.8 {d22-d23}, [r4, : 128]! 229f0fb006bSJason A. Donenfeld vand q6, q6, q8 230f0fb006bSJason A. Donenfeld vld1.8 {d24-d25}, [r5, : 128]! 231f0fb006bSJason A. Donenfeld vand q10, q10, q8 232f0fb006bSJason A. Donenfeld vld1.8 {d26-d27}, [r6, : 128]! 233f0fb006bSJason A. Donenfeld veor q4, q4, q6 234f0fb006bSJason A. Donenfeld vld1.8 {d28-d29}, [r7, : 128]! 235f0fb006bSJason A. Donenfeld veor q5, q5, q6 236f0fb006bSJason A. Donenfeld vld1.8 {d0}, [r4, : 64] 237f0fb006bSJason A. Donenfeld veor q6, q7, q10 238f0fb006bSJason A. Donenfeld vld1.8 {d2}, [r5, : 64] 239f0fb006bSJason A. Donenfeld veor q7, q9, q10 240f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r6, : 64] 241f0fb006bSJason A. Donenfeld veor q9, q11, q12 242f0fb006bSJason A. Donenfeld vld1.8 {d6}, [r7, : 64] 243f0fb006bSJason A. Donenfeld veor q10, q0, q1 244f0fb006bSJason A. Donenfeld sub r2, r4, #32 245f0fb006bSJason A. Donenfeld vand q9, q9, q8 246f0fb006bSJason A. Donenfeld sub r4, r5, #32 247f0fb006bSJason A. Donenfeld vand q10, q10, q8 248f0fb006bSJason A. Donenfeld sub r5, r6, #32 249f0fb006bSJason A. Donenfeld veor q11, q11, q9 250f0fb006bSJason A. Donenfeld sub r6, r7, #32 251f0fb006bSJason A. Donenfeld veor q0, q0, q10 252f0fb006bSJason A. Donenfeld veor q9, q12, q9 253f0fb006bSJason A. Donenfeld veor q1, q1, q10 254f0fb006bSJason A. Donenfeld veor q10, q13, q14 255f0fb006bSJason A. Donenfeld veor q12, q2, q3 256f0fb006bSJason A. Donenfeld vand q10, q10, q8 257f0fb006bSJason A. Donenfeld vand q8, q12, q8 258f0fb006bSJason A. Donenfeld veor q12, q13, q10 259f0fb006bSJason A. Donenfeld veor q2, q2, q8 260f0fb006bSJason A. Donenfeld veor q10, q14, q10 261f0fb006bSJason A. Donenfeld veor q3, q3, q8 262f0fb006bSJason A. Donenfeld vadd.i32 q8, q4, q6 263f0fb006bSJason A. Donenfeld vsub.i32 q4, q4, q6 264f0fb006bSJason A. Donenfeld vst1.8 {d16-d17}, [r2, : 128]! 265f0fb006bSJason A. Donenfeld vadd.i32 q6, q11, q12 266f0fb006bSJason A. Donenfeld vst1.8 {d8-d9}, [r5, : 128]! 267f0fb006bSJason A. Donenfeld vsub.i32 q4, q11, q12 268f0fb006bSJason A. Donenfeld vst1.8 {d12-d13}, [r2, : 128]! 269f0fb006bSJason A. Donenfeld vadd.i32 q6, q0, q2 270f0fb006bSJason A. Donenfeld vst1.8 {d8-d9}, [r5, : 128]! 271f0fb006bSJason A. Donenfeld vsub.i32 q0, q0, q2 272f0fb006bSJason A. Donenfeld vst1.8 d12, [r2, : 64] 273f0fb006bSJason A. Donenfeld vadd.i32 q2, q5, q7 274f0fb006bSJason A. Donenfeld vst1.8 d0, [r5, : 64] 275f0fb006bSJason A. Donenfeld vsub.i32 q0, q5, q7 276f0fb006bSJason A. Donenfeld vst1.8 {d4-d5}, [r4, : 128]! 277f0fb006bSJason A. Donenfeld vadd.i32 q2, q9, q10 278f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r6, : 128]! 279f0fb006bSJason A. Donenfeld vsub.i32 q0, q9, q10 280f0fb006bSJason A. Donenfeld vst1.8 {d4-d5}, [r4, : 128]! 281f0fb006bSJason A. Donenfeld vadd.i32 q2, q1, q3 282f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r6, : 128]! 283f0fb006bSJason A. Donenfeld vsub.i32 q0, q1, q3 284f0fb006bSJason A. Donenfeld vst1.8 d4, [r4, : 64] 285f0fb006bSJason A. Donenfeld vst1.8 d0, [r6, : 64] 286d8f1308aSJason A. Donenfeld add r2, sp, #512 287f0fb006bSJason A. Donenfeld add r4, r3, #96 288f0fb006bSJason A. Donenfeld add r5, r3, #144 289f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r2, : 128] 290f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r4, : 128]! 291f0fb006bSJason A. Donenfeld vld1.8 {d4-d5}, [r5, : 128]! 292f0fb006bSJason A. Donenfeld vzip.i32 q1, q2 293f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r4, : 128]! 294f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r5, : 128]! 295f0fb006bSJason A. Donenfeld vshl.i32 q5, q1, #1 296f0fb006bSJason A. Donenfeld vzip.i32 q3, q4 297f0fb006bSJason A. Donenfeld vshl.i32 q6, q2, #1 298f0fb006bSJason A. Donenfeld vld1.8 {d14}, [r4, : 64] 299f0fb006bSJason A. Donenfeld vshl.i32 q8, q3, #1 300f0fb006bSJason A. Donenfeld vld1.8 {d15}, [r5, : 64] 301f0fb006bSJason A. Donenfeld vshl.i32 q9, q4, #1 302f0fb006bSJason A. Donenfeld vmul.i32 d21, d7, d1 303f0fb006bSJason A. Donenfeld vtrn.32 d14, d15 304f0fb006bSJason A. Donenfeld vmul.i32 q11, q4, q0 305f0fb006bSJason A. Donenfeld vmul.i32 q0, q7, q0 306f0fb006bSJason A. Donenfeld vmull.s32 q12, d2, d2 307f0fb006bSJason A. Donenfeld vmlal.s32 q12, d11, d1 308f0fb006bSJason A. Donenfeld vmlal.s32 q12, d12, d0 309f0fb006bSJason A. Donenfeld vmlal.s32 q12, d13, d23 310f0fb006bSJason A. Donenfeld vmlal.s32 q12, d16, d22 311f0fb006bSJason A. Donenfeld vmlal.s32 q12, d7, d21 312f0fb006bSJason A. Donenfeld vmull.s32 q10, d2, d11 313f0fb006bSJason A. Donenfeld vmlal.s32 q10, d4, d1 314f0fb006bSJason A. Donenfeld vmlal.s32 q10, d13, d0 315f0fb006bSJason A. Donenfeld vmlal.s32 q10, d6, d23 316f0fb006bSJason A. Donenfeld vmlal.s32 q10, d17, d22 317f0fb006bSJason A. Donenfeld vmull.s32 q13, d10, d4 318f0fb006bSJason A. Donenfeld vmlal.s32 q13, d11, d3 319f0fb006bSJason A. Donenfeld vmlal.s32 q13, d13, d1 320f0fb006bSJason A. Donenfeld vmlal.s32 q13, d16, d0 321f0fb006bSJason A. Donenfeld vmlal.s32 q13, d17, d23 322f0fb006bSJason A. Donenfeld vmlal.s32 q13, d8, d22 323f0fb006bSJason A. Donenfeld vmull.s32 q1, d10, d5 324f0fb006bSJason A. Donenfeld vmlal.s32 q1, d11, d4 325f0fb006bSJason A. Donenfeld vmlal.s32 q1, d6, d1 326f0fb006bSJason A. Donenfeld vmlal.s32 q1, d17, d0 327f0fb006bSJason A. Donenfeld vmlal.s32 q1, d8, d23 328f0fb006bSJason A. Donenfeld vmull.s32 q14, d10, d6 329f0fb006bSJason A. Donenfeld vmlal.s32 q14, d11, d13 330f0fb006bSJason A. Donenfeld vmlal.s32 q14, d4, d4 331f0fb006bSJason A. Donenfeld vmlal.s32 q14, d17, d1 332f0fb006bSJason A. Donenfeld vmlal.s32 q14, d18, d0 333f0fb006bSJason A. Donenfeld vmlal.s32 q14, d9, d23 334f0fb006bSJason A. Donenfeld vmull.s32 q11, d10, d7 335f0fb006bSJason A. Donenfeld vmlal.s32 q11, d11, d6 336f0fb006bSJason A. Donenfeld vmlal.s32 q11, d12, d5 337f0fb006bSJason A. Donenfeld vmlal.s32 q11, d8, d1 338f0fb006bSJason A. Donenfeld vmlal.s32 q11, d19, d0 339f0fb006bSJason A. Donenfeld vmull.s32 q15, d10, d8 340f0fb006bSJason A. Donenfeld vmlal.s32 q15, d11, d17 341f0fb006bSJason A. Donenfeld vmlal.s32 q15, d12, d6 342f0fb006bSJason A. Donenfeld vmlal.s32 q15, d13, d5 343f0fb006bSJason A. Donenfeld vmlal.s32 q15, d19, d1 344f0fb006bSJason A. Donenfeld vmlal.s32 q15, d14, d0 345f0fb006bSJason A. Donenfeld vmull.s32 q2, d10, d9 346f0fb006bSJason A. Donenfeld vmlal.s32 q2, d11, d8 347f0fb006bSJason A. Donenfeld vmlal.s32 q2, d12, d7 348f0fb006bSJason A. Donenfeld vmlal.s32 q2, d13, d6 349f0fb006bSJason A. Donenfeld vmlal.s32 q2, d14, d1 350f0fb006bSJason A. Donenfeld vmull.s32 q0, d15, d1 351f0fb006bSJason A. Donenfeld vmlal.s32 q0, d10, d14 352f0fb006bSJason A. Donenfeld vmlal.s32 q0, d11, d19 353f0fb006bSJason A. Donenfeld vmlal.s32 q0, d12, d8 354f0fb006bSJason A. Donenfeld vmlal.s32 q0, d13, d17 355f0fb006bSJason A. Donenfeld vmlal.s32 q0, d6, d6 356d8f1308aSJason A. Donenfeld add r2, sp, #480 357d8f1308aSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128]! 358f0fb006bSJason A. Donenfeld vmull.s32 q3, d16, d7 359f0fb006bSJason A. Donenfeld vmlal.s32 q3, d10, d15 360f0fb006bSJason A. Donenfeld vmlal.s32 q3, d11, d14 361f0fb006bSJason A. Donenfeld vmlal.s32 q3, d12, d9 362f0fb006bSJason A. Donenfeld vmlal.s32 q3, d13, d8 363f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r2, : 128] 364f0fb006bSJason A. Donenfeld vadd.i64 q5, q12, q9 365f0fb006bSJason A. Donenfeld vadd.i64 q6, q15, q9 366f0fb006bSJason A. Donenfeld vshr.s64 q5, q5, #26 367f0fb006bSJason A. Donenfeld vshr.s64 q6, q6, #26 368f0fb006bSJason A. Donenfeld vadd.i64 q7, q10, q5 369f0fb006bSJason A. Donenfeld vshl.i64 q5, q5, #26 370f0fb006bSJason A. Donenfeld vadd.i64 q8, q7, q4 371f0fb006bSJason A. Donenfeld vadd.i64 q2, q2, q6 372f0fb006bSJason A. Donenfeld vshl.i64 q6, q6, #26 373f0fb006bSJason A. Donenfeld vadd.i64 q10, q2, q4 374f0fb006bSJason A. Donenfeld vsub.i64 q5, q12, q5 375f0fb006bSJason A. Donenfeld vshr.s64 q8, q8, #25 376f0fb006bSJason A. Donenfeld vsub.i64 q6, q15, q6 377f0fb006bSJason A. Donenfeld vshr.s64 q10, q10, #25 378f0fb006bSJason A. Donenfeld vadd.i64 q12, q13, q8 379f0fb006bSJason A. Donenfeld vshl.i64 q8, q8, #25 380f0fb006bSJason A. Donenfeld vadd.i64 q13, q12, q9 381f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q10 382f0fb006bSJason A. Donenfeld vsub.i64 q7, q7, q8 383f0fb006bSJason A. Donenfeld vshr.s64 q8, q13, #26 384f0fb006bSJason A. Donenfeld vshl.i64 q10, q10, #25 385f0fb006bSJason A. Donenfeld vadd.i64 q13, q0, q9 386f0fb006bSJason A. Donenfeld vadd.i64 q1, q1, q8 387f0fb006bSJason A. Donenfeld vshl.i64 q8, q8, #26 388f0fb006bSJason A. Donenfeld vadd.i64 q15, q1, q4 389f0fb006bSJason A. Donenfeld vsub.i64 q2, q2, q10 390f0fb006bSJason A. Donenfeld vshr.s64 q10, q13, #26 391f0fb006bSJason A. Donenfeld vsub.i64 q8, q12, q8 392f0fb006bSJason A. Donenfeld vshr.s64 q12, q15, #25 393f0fb006bSJason A. Donenfeld vadd.i64 q3, q3, q10 394f0fb006bSJason A. Donenfeld vshl.i64 q10, q10, #26 395f0fb006bSJason A. Donenfeld vadd.i64 q13, q3, q4 396f0fb006bSJason A. Donenfeld vadd.i64 q14, q14, q12 397f0fb006bSJason A. Donenfeld add r2, r3, #288 398f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #25 399f0fb006bSJason A. Donenfeld add r4, r3, #336 400f0fb006bSJason A. Donenfeld vadd.i64 q15, q14, q9 401f0fb006bSJason A. Donenfeld add r2, r2, #8 402f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q10 403f0fb006bSJason A. Donenfeld add r4, r4, #8 404f0fb006bSJason A. Donenfeld vshr.s64 q10, q13, #25 405f0fb006bSJason A. Donenfeld vsub.i64 q1, q1, q12 406f0fb006bSJason A. Donenfeld vshr.s64 q12, q15, #26 407f0fb006bSJason A. Donenfeld vadd.i64 q13, q10, q10 408f0fb006bSJason A. Donenfeld vadd.i64 q11, q11, q12 409f0fb006bSJason A. Donenfeld vtrn.32 d16, d2 410f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #26 411f0fb006bSJason A. Donenfeld vtrn.32 d17, d3 412f0fb006bSJason A. Donenfeld vadd.i64 q1, q11, q4 413f0fb006bSJason A. Donenfeld vadd.i64 q4, q5, q13 414f0fb006bSJason A. Donenfeld vst1.8 d16, [r2, : 64]! 415f0fb006bSJason A. Donenfeld vshl.i64 q5, q10, #4 416f0fb006bSJason A. Donenfeld vst1.8 d17, [r4, : 64]! 417f0fb006bSJason A. Donenfeld vsub.i64 q8, q14, q12 418f0fb006bSJason A. Donenfeld vshr.s64 q1, q1, #25 419f0fb006bSJason A. Donenfeld vadd.i64 q4, q4, q5 420f0fb006bSJason A. Donenfeld vadd.i64 q5, q6, q1 421f0fb006bSJason A. Donenfeld vshl.i64 q1, q1, #25 422f0fb006bSJason A. Donenfeld vadd.i64 q6, q5, q9 423f0fb006bSJason A. Donenfeld vadd.i64 q4, q4, q10 424f0fb006bSJason A. Donenfeld vshl.i64 q10, q10, #25 425f0fb006bSJason A. Donenfeld vadd.i64 q9, q4, q9 426f0fb006bSJason A. Donenfeld vsub.i64 q1, q11, q1 427f0fb006bSJason A. Donenfeld vshr.s64 q6, q6, #26 428f0fb006bSJason A. Donenfeld vsub.i64 q3, q3, q10 429f0fb006bSJason A. Donenfeld vtrn.32 d16, d2 430f0fb006bSJason A. Donenfeld vshr.s64 q9, q9, #26 431f0fb006bSJason A. Donenfeld vtrn.32 d17, d3 432f0fb006bSJason A. Donenfeld vadd.i64 q1, q2, q6 433f0fb006bSJason A. Donenfeld vst1.8 d16, [r2, : 64] 434f0fb006bSJason A. Donenfeld vshl.i64 q2, q6, #26 435f0fb006bSJason A. Donenfeld vst1.8 d17, [r4, : 64] 436f0fb006bSJason A. Donenfeld vadd.i64 q6, q7, q9 437f0fb006bSJason A. Donenfeld vtrn.32 d0, d6 438f0fb006bSJason A. Donenfeld vshl.i64 q7, q9, #26 439f0fb006bSJason A. Donenfeld vtrn.32 d1, d7 440f0fb006bSJason A. Donenfeld vsub.i64 q2, q5, q2 441f0fb006bSJason A. Donenfeld add r2, r2, #16 442f0fb006bSJason A. Donenfeld vsub.i64 q3, q4, q7 443f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 444f0fb006bSJason A. Donenfeld add r4, r4, #16 445f0fb006bSJason A. Donenfeld vst1.8 d1, [r4, : 64] 446f0fb006bSJason A. Donenfeld vtrn.32 d4, d2 447f0fb006bSJason A. Donenfeld vtrn.32 d5, d3 448f0fb006bSJason A. Donenfeld sub r2, r2, #8 449f0fb006bSJason A. Donenfeld sub r4, r4, #8 450f0fb006bSJason A. Donenfeld vtrn.32 d6, d12 451f0fb006bSJason A. Donenfeld vtrn.32 d7, d13 452f0fb006bSJason A. Donenfeld vst1.8 d4, [r2, : 64] 453f0fb006bSJason A. Donenfeld vst1.8 d5, [r4, : 64] 454f0fb006bSJason A. Donenfeld sub r2, r2, #24 455f0fb006bSJason A. Donenfeld sub r4, r4, #24 456f0fb006bSJason A. Donenfeld vst1.8 d6, [r2, : 64] 457f0fb006bSJason A. Donenfeld vst1.8 d7, [r4, : 64] 458f0fb006bSJason A. Donenfeld add r2, r3, #240 459f0fb006bSJason A. Donenfeld add r4, r3, #96 460f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r4, : 128]! 461f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r4, : 128]! 462f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r4, : 64] 463f0fb006bSJason A. Donenfeld add r4, r3, #144 464f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r4, : 128]! 465f0fb006bSJason A. Donenfeld vtrn.32 q0, q3 466f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r4, : 128]! 467f0fb006bSJason A. Donenfeld vshl.i32 q5, q0, #4 468f0fb006bSJason A. Donenfeld vtrn.32 q1, q4 469f0fb006bSJason A. Donenfeld vshl.i32 q6, q3, #4 470f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 471f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 472f0fb006bSJason A. Donenfeld vshl.i32 q7, q1, #4 473f0fb006bSJason A. Donenfeld vld1.8 {d5}, [r4, : 64] 474f0fb006bSJason A. Donenfeld vshl.i32 q8, q4, #4 475f0fb006bSJason A. Donenfeld vtrn.32 d4, d5 476f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 477f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 478f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128]! 479f0fb006bSJason A. Donenfeld vshl.i32 q10, q2, #4 480f0fb006bSJason A. Donenfeld vld1.8 {d22-d23}, [r2, : 128]! 481f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 482f0fb006bSJason A. Donenfeld vld1.8 {d24}, [r2, : 64] 483f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 484f0fb006bSJason A. Donenfeld add r2, r3, #192 485f0fb006bSJason A. Donenfeld vld1.8 {d26-d27}, [r2, : 128]! 486f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 487f0fb006bSJason A. Donenfeld vld1.8 {d28-d29}, [r2, : 128]! 488f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 489f0fb006bSJason A. Donenfeld vld1.8 {d25}, [r2, : 64] 490f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 491f0fb006bSJason A. Donenfeld vtrn.32 q9, q13 492f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 493f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 494f0fb006bSJason A. Donenfeld vtrn.32 q11, q14 495f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 496d8f1308aSJason A. Donenfeld add r2, sp, #528 497f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 498f0fb006bSJason A. Donenfeld vtrn.32 d24, d25 499d8f1308aSJason A. Donenfeld vst1.8 {d12-d13}, [r2, : 128]! 500f0fb006bSJason A. Donenfeld vshl.i32 q6, q13, #1 501d8f1308aSJason A. Donenfeld vst1.8 {d20-d21}, [r2, : 128]! 502f0fb006bSJason A. Donenfeld vshl.i32 q10, q14, #1 503d8f1308aSJason A. Donenfeld vst1.8 {d12-d13}, [r2, : 128]! 504f0fb006bSJason A. Donenfeld vshl.i32 q15, q12, #1 505f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 506f0fb006bSJason A. Donenfeld vext.32 d10, d31, d30, #0 507f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 508d8f1308aSJason A. Donenfeld vst1.8 {d16-d17}, [r2, : 128]! 509f0fb006bSJason A. Donenfeld vmull.s32 q8, d18, d5 510f0fb006bSJason A. Donenfeld vmlal.s32 q8, d26, d4 511f0fb006bSJason A. Donenfeld vmlal.s32 q8, d19, d9 512f0fb006bSJason A. Donenfeld vmlal.s32 q8, d27, d3 513f0fb006bSJason A. Donenfeld vmlal.s32 q8, d22, d8 514f0fb006bSJason A. Donenfeld vmlal.s32 q8, d28, d2 515f0fb006bSJason A. Donenfeld vmlal.s32 q8, d23, d7 516f0fb006bSJason A. Donenfeld vmlal.s32 q8, d29, d1 517f0fb006bSJason A. Donenfeld vmlal.s32 q8, d24, d6 518f0fb006bSJason A. Donenfeld vmlal.s32 q8, d25, d0 519d8f1308aSJason A. Donenfeld vst1.8 {d14-d15}, [r2, : 128]! 520f0fb006bSJason A. Donenfeld vmull.s32 q2, d18, d4 521f0fb006bSJason A. Donenfeld vmlal.s32 q2, d12, d9 522f0fb006bSJason A. Donenfeld vmlal.s32 q2, d13, d8 523f0fb006bSJason A. Donenfeld vmlal.s32 q2, d19, d3 524f0fb006bSJason A. Donenfeld vmlal.s32 q2, d22, d2 525f0fb006bSJason A. Donenfeld vmlal.s32 q2, d23, d1 526f0fb006bSJason A. Donenfeld vmlal.s32 q2, d24, d0 527d8f1308aSJason A. Donenfeld vst1.8 {d20-d21}, [r2, : 128]! 528f0fb006bSJason A. Donenfeld vmull.s32 q7, d18, d9 529f0fb006bSJason A. Donenfeld vmlal.s32 q7, d26, d3 530f0fb006bSJason A. Donenfeld vmlal.s32 q7, d19, d8 531f0fb006bSJason A. Donenfeld vmlal.s32 q7, d27, d2 532f0fb006bSJason A. Donenfeld vmlal.s32 q7, d22, d7 533f0fb006bSJason A. Donenfeld vmlal.s32 q7, d28, d1 534f0fb006bSJason A. Donenfeld vmlal.s32 q7, d23, d6 535f0fb006bSJason A. Donenfeld vmlal.s32 q7, d29, d0 536d8f1308aSJason A. Donenfeld vst1.8 {d10-d11}, [r2, : 128]! 537f0fb006bSJason A. Donenfeld vmull.s32 q5, d18, d3 538f0fb006bSJason A. Donenfeld vmlal.s32 q5, d19, d2 539f0fb006bSJason A. Donenfeld vmlal.s32 q5, d22, d1 540f0fb006bSJason A. Donenfeld vmlal.s32 q5, d23, d0 541f0fb006bSJason A. Donenfeld vmlal.s32 q5, d12, d8 542f0fb006bSJason A. Donenfeld vst1.8 {d16-d17}, [r2, : 128] 543f0fb006bSJason A. Donenfeld vmull.s32 q4, d18, d8 544f0fb006bSJason A. Donenfeld vmlal.s32 q4, d26, d2 545f0fb006bSJason A. Donenfeld vmlal.s32 q4, d19, d7 546f0fb006bSJason A. Donenfeld vmlal.s32 q4, d27, d1 547f0fb006bSJason A. Donenfeld vmlal.s32 q4, d22, d6 548f0fb006bSJason A. Donenfeld vmlal.s32 q4, d28, d0 549f0fb006bSJason A. Donenfeld vmull.s32 q8, d18, d7 550f0fb006bSJason A. Donenfeld vmlal.s32 q8, d26, d1 551f0fb006bSJason A. Donenfeld vmlal.s32 q8, d19, d6 552f0fb006bSJason A. Donenfeld vmlal.s32 q8, d27, d0 553d8f1308aSJason A. Donenfeld add r2, sp, #544 554f0fb006bSJason A. Donenfeld vld1.8 {d20-d21}, [r2, : 128] 555f0fb006bSJason A. Donenfeld vmlal.s32 q7, d24, d21 556f0fb006bSJason A. Donenfeld vmlal.s32 q7, d25, d20 557f0fb006bSJason A. Donenfeld vmlal.s32 q4, d23, d21 558f0fb006bSJason A. Donenfeld vmlal.s32 q4, d29, d20 559f0fb006bSJason A. Donenfeld vmlal.s32 q8, d22, d21 560f0fb006bSJason A. Donenfeld vmlal.s32 q8, d28, d20 561f0fb006bSJason A. Donenfeld vmlal.s32 q5, d24, d20 562f0fb006bSJason A. Donenfeld vst1.8 {d14-d15}, [r2, : 128] 563f0fb006bSJason A. Donenfeld vmull.s32 q7, d18, d6 564f0fb006bSJason A. Donenfeld vmlal.s32 q7, d26, d0 565d8f1308aSJason A. Donenfeld add r2, sp, #624 566f0fb006bSJason A. Donenfeld vld1.8 {d30-d31}, [r2, : 128] 567f0fb006bSJason A. Donenfeld vmlal.s32 q2, d30, d21 568f0fb006bSJason A. Donenfeld vmlal.s32 q7, d19, d21 569f0fb006bSJason A. Donenfeld vmlal.s32 q7, d27, d20 570d8f1308aSJason A. Donenfeld add r2, sp, #592 571f0fb006bSJason A. Donenfeld vld1.8 {d26-d27}, [r2, : 128] 572f0fb006bSJason A. Donenfeld vmlal.s32 q4, d25, d27 573f0fb006bSJason A. Donenfeld vmlal.s32 q8, d29, d27 574f0fb006bSJason A. Donenfeld vmlal.s32 q8, d25, d26 575f0fb006bSJason A. Donenfeld vmlal.s32 q7, d28, d27 576f0fb006bSJason A. Donenfeld vmlal.s32 q7, d29, d26 577d8f1308aSJason A. Donenfeld add r2, sp, #576 578f0fb006bSJason A. Donenfeld vld1.8 {d28-d29}, [r2, : 128] 579f0fb006bSJason A. Donenfeld vmlal.s32 q4, d24, d29 580f0fb006bSJason A. Donenfeld vmlal.s32 q8, d23, d29 581f0fb006bSJason A. Donenfeld vmlal.s32 q8, d24, d28 582f0fb006bSJason A. Donenfeld vmlal.s32 q7, d22, d29 583f0fb006bSJason A. Donenfeld vmlal.s32 q7, d23, d28 584f0fb006bSJason A. Donenfeld vst1.8 {d8-d9}, [r2, : 128] 585d8f1308aSJason A. Donenfeld add r2, sp, #528 586f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r2, : 128] 587f0fb006bSJason A. Donenfeld vmlal.s32 q7, d24, d9 588f0fb006bSJason A. Donenfeld vmlal.s32 q7, d25, d31 589f0fb006bSJason A. Donenfeld vmull.s32 q1, d18, d2 590f0fb006bSJason A. Donenfeld vmlal.s32 q1, d19, d1 591f0fb006bSJason A. Donenfeld vmlal.s32 q1, d22, d0 592f0fb006bSJason A. Donenfeld vmlal.s32 q1, d24, d27 593f0fb006bSJason A. Donenfeld vmlal.s32 q1, d23, d20 594f0fb006bSJason A. Donenfeld vmlal.s32 q1, d12, d7 595f0fb006bSJason A. Donenfeld vmlal.s32 q1, d13, d6 596f0fb006bSJason A. Donenfeld vmull.s32 q6, d18, d1 597f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d0 598f0fb006bSJason A. Donenfeld vmlal.s32 q6, d23, d27 599f0fb006bSJason A. Donenfeld vmlal.s32 q6, d22, d20 600f0fb006bSJason A. Donenfeld vmlal.s32 q6, d24, d26 601f0fb006bSJason A. Donenfeld vmull.s32 q0, d18, d0 602f0fb006bSJason A. Donenfeld vmlal.s32 q0, d22, d27 603f0fb006bSJason A. Donenfeld vmlal.s32 q0, d23, d26 604f0fb006bSJason A. Donenfeld vmlal.s32 q0, d24, d31 605f0fb006bSJason A. Donenfeld vmlal.s32 q0, d19, d20 606d8f1308aSJason A. Donenfeld add r2, sp, #608 607f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 608f0fb006bSJason A. Donenfeld vmlal.s32 q2, d18, d7 609f0fb006bSJason A. Donenfeld vmlal.s32 q5, d18, d6 610f0fb006bSJason A. Donenfeld vmlal.s32 q1, d18, d21 611f0fb006bSJason A. Donenfeld vmlal.s32 q0, d18, d28 612f0fb006bSJason A. Donenfeld vmlal.s32 q6, d18, d29 613d8f1308aSJason A. Donenfeld vmlal.s32 q2, d19, d6 614d8f1308aSJason A. Donenfeld vmlal.s32 q5, d19, d21 615d8f1308aSJason A. Donenfeld vmlal.s32 q1, d19, d29 616d8f1308aSJason A. Donenfeld vmlal.s32 q0, d19, d9 617f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d28 618d8f1308aSJason A. Donenfeld add r2, sp, #560 619f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 620d8f1308aSJason A. Donenfeld add r2, sp, #480 621f0fb006bSJason A. Donenfeld vld1.8 {d22-d23}, [r2, : 128] 622f0fb006bSJason A. Donenfeld vmlal.s32 q5, d19, d7 623f0fb006bSJason A. Donenfeld vmlal.s32 q0, d18, d21 624f0fb006bSJason A. Donenfeld vmlal.s32 q0, d19, d29 625f0fb006bSJason A. Donenfeld vmlal.s32 q6, d18, d6 626d8f1308aSJason A. Donenfeld add r2, sp, #496 627f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r2, : 128] 628f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d21 629d8f1308aSJason A. Donenfeld add r2, sp, #544 630f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 631f0fb006bSJason A. Donenfeld vmlal.s32 q0, d30, d8 632d8f1308aSJason A. Donenfeld add r2, sp, #640 633f0fb006bSJason A. Donenfeld vld1.8 {d20-d21}, [r2, : 128] 634f0fb006bSJason A. Donenfeld vmlal.s32 q5, d30, d29 635d8f1308aSJason A. Donenfeld add r2, sp, #576 636f0fb006bSJason A. Donenfeld vld1.8 {d24-d25}, [r2, : 128] 637f0fb006bSJason A. Donenfeld vmlal.s32 q1, d30, d28 638f0fb006bSJason A. Donenfeld vadd.i64 q13, q0, q11 639f0fb006bSJason A. Donenfeld vadd.i64 q14, q5, q11 640f0fb006bSJason A. Donenfeld vmlal.s32 q6, d30, d9 641f0fb006bSJason A. Donenfeld vshr.s64 q4, q13, #26 642f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #26 643f0fb006bSJason A. Donenfeld vadd.i64 q7, q7, q4 644f0fb006bSJason A. Donenfeld vshl.i64 q4, q4, #26 645f0fb006bSJason A. Donenfeld vadd.i64 q14, q7, q3 646f0fb006bSJason A. Donenfeld vadd.i64 q9, q9, q13 647f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #26 648f0fb006bSJason A. Donenfeld vadd.i64 q15, q9, q3 649f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q4 650f0fb006bSJason A. Donenfeld vshr.s64 q4, q14, #25 651f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q13 652f0fb006bSJason A. Donenfeld vshr.s64 q13, q15, #25 653f0fb006bSJason A. Donenfeld vadd.i64 q6, q6, q4 654f0fb006bSJason A. Donenfeld vshl.i64 q4, q4, #25 655f0fb006bSJason A. Donenfeld vadd.i64 q14, q6, q11 656f0fb006bSJason A. Donenfeld vadd.i64 q2, q2, q13 657f0fb006bSJason A. Donenfeld vsub.i64 q4, q7, q4 658f0fb006bSJason A. Donenfeld vshr.s64 q7, q14, #26 659f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #25 660f0fb006bSJason A. Donenfeld vadd.i64 q14, q2, q11 661f0fb006bSJason A. Donenfeld vadd.i64 q8, q8, q7 662f0fb006bSJason A. Donenfeld vshl.i64 q7, q7, #26 663f0fb006bSJason A. Donenfeld vadd.i64 q15, q8, q3 664f0fb006bSJason A. Donenfeld vsub.i64 q9, q9, q13 665f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #26 666f0fb006bSJason A. Donenfeld vsub.i64 q6, q6, q7 667f0fb006bSJason A. Donenfeld vshr.s64 q7, q15, #25 668f0fb006bSJason A. Donenfeld vadd.i64 q10, q10, q13 669f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #26 670f0fb006bSJason A. Donenfeld vadd.i64 q14, q10, q3 671f0fb006bSJason A. Donenfeld vadd.i64 q1, q1, q7 672f0fb006bSJason A. Donenfeld add r2, r3, #144 673f0fb006bSJason A. Donenfeld vshl.i64 q7, q7, #25 674f0fb006bSJason A. Donenfeld add r4, r3, #96 675f0fb006bSJason A. Donenfeld vadd.i64 q15, q1, q11 676f0fb006bSJason A. Donenfeld add r2, r2, #8 677f0fb006bSJason A. Donenfeld vsub.i64 q2, q2, q13 678f0fb006bSJason A. Donenfeld add r4, r4, #8 679f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #25 680f0fb006bSJason A. Donenfeld vsub.i64 q7, q8, q7 681f0fb006bSJason A. Donenfeld vshr.s64 q8, q15, #26 682f0fb006bSJason A. Donenfeld vadd.i64 q14, q13, q13 683f0fb006bSJason A. Donenfeld vadd.i64 q12, q12, q8 684f0fb006bSJason A. Donenfeld vtrn.32 d12, d14 685f0fb006bSJason A. Donenfeld vshl.i64 q8, q8, #26 686f0fb006bSJason A. Donenfeld vtrn.32 d13, d15 687f0fb006bSJason A. Donenfeld vadd.i64 q3, q12, q3 688f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q14 689f0fb006bSJason A. Donenfeld vst1.8 d12, [r2, : 64]! 690f0fb006bSJason A. Donenfeld vshl.i64 q7, q13, #4 691f0fb006bSJason A. Donenfeld vst1.8 d13, [r4, : 64]! 692f0fb006bSJason A. Donenfeld vsub.i64 q1, q1, q8 693f0fb006bSJason A. Donenfeld vshr.s64 q3, q3, #25 694f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q7 695f0fb006bSJason A. Donenfeld vadd.i64 q5, q5, q3 696f0fb006bSJason A. Donenfeld vshl.i64 q3, q3, #25 697f0fb006bSJason A. Donenfeld vadd.i64 q6, q5, q11 698f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q13 699f0fb006bSJason A. Donenfeld vshl.i64 q7, q13, #25 700f0fb006bSJason A. Donenfeld vadd.i64 q8, q0, q11 701f0fb006bSJason A. Donenfeld vsub.i64 q3, q12, q3 702f0fb006bSJason A. Donenfeld vshr.s64 q6, q6, #26 703f0fb006bSJason A. Donenfeld vsub.i64 q7, q10, q7 704f0fb006bSJason A. Donenfeld vtrn.32 d2, d6 705f0fb006bSJason A. Donenfeld vshr.s64 q8, q8, #26 706f0fb006bSJason A. Donenfeld vtrn.32 d3, d7 707f0fb006bSJason A. Donenfeld vadd.i64 q3, q9, q6 708f0fb006bSJason A. Donenfeld vst1.8 d2, [r2, : 64] 709f0fb006bSJason A. Donenfeld vshl.i64 q6, q6, #26 710f0fb006bSJason A. Donenfeld vst1.8 d3, [r4, : 64] 711f0fb006bSJason A. Donenfeld vadd.i64 q1, q4, q8 712f0fb006bSJason A. Donenfeld vtrn.32 d4, d14 713f0fb006bSJason A. Donenfeld vshl.i64 q4, q8, #26 714f0fb006bSJason A. Donenfeld vtrn.32 d5, d15 715f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q6 716f0fb006bSJason A. Donenfeld add r2, r2, #16 717f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q4 718f0fb006bSJason A. Donenfeld vst1.8 d4, [r2, : 64] 719f0fb006bSJason A. Donenfeld add r4, r4, #16 720f0fb006bSJason A. Donenfeld vst1.8 d5, [r4, : 64] 721f0fb006bSJason A. Donenfeld vtrn.32 d10, d6 722f0fb006bSJason A. Donenfeld vtrn.32 d11, d7 723f0fb006bSJason A. Donenfeld sub r2, r2, #8 724f0fb006bSJason A. Donenfeld sub r4, r4, #8 725f0fb006bSJason A. Donenfeld vtrn.32 d0, d2 726f0fb006bSJason A. Donenfeld vtrn.32 d1, d3 727f0fb006bSJason A. Donenfeld vst1.8 d10, [r2, : 64] 728f0fb006bSJason A. Donenfeld vst1.8 d11, [r4, : 64] 729f0fb006bSJason A. Donenfeld sub r2, r2, #24 730f0fb006bSJason A. Donenfeld sub r4, r4, #24 731f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 732f0fb006bSJason A. Donenfeld vst1.8 d1, [r4, : 64] 733f0fb006bSJason A. Donenfeld add r2, r3, #288 734f0fb006bSJason A. Donenfeld add r4, r3, #336 735f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r2, : 128]! 736f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r4, : 128]! 737f0fb006bSJason A. Donenfeld vsub.i32 q0, q0, q1 738f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r2, : 128]! 739f0fb006bSJason A. Donenfeld vld1.8 {d4-d5}, [r4, : 128]! 740f0fb006bSJason A. Donenfeld vsub.i32 q1, q1, q2 741f0fb006bSJason A. Donenfeld add r5, r3, #240 742f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r2, : 64] 743f0fb006bSJason A. Donenfeld vld1.8 {d6}, [r4, : 64] 744f0fb006bSJason A. Donenfeld vsub.i32 q2, q2, q3 745f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r5, : 128]! 746f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r5, : 128]! 747f0fb006bSJason A. Donenfeld vst1.8 d4, [r5, : 64] 748f0fb006bSJason A. Donenfeld add r2, r3, #144 749f0fb006bSJason A. Donenfeld add r4, r3, #96 750f0fb006bSJason A. Donenfeld add r5, r3, #144 751f0fb006bSJason A. Donenfeld add r6, r3, #192 752f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r2, : 128]! 753f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r4, : 128]! 754f0fb006bSJason A. Donenfeld vsub.i32 q2, q0, q1 755f0fb006bSJason A. Donenfeld vadd.i32 q0, q0, q1 756f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r2, : 128]! 757f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r4, : 128]! 758f0fb006bSJason A. Donenfeld vsub.i32 q4, q1, q3 759f0fb006bSJason A. Donenfeld vadd.i32 q1, q1, q3 760f0fb006bSJason A. Donenfeld vld1.8 {d6}, [r2, : 64] 761f0fb006bSJason A. Donenfeld vld1.8 {d10}, [r4, : 64] 762f0fb006bSJason A. Donenfeld vsub.i32 q6, q3, q5 763f0fb006bSJason A. Donenfeld vadd.i32 q3, q3, q5 764f0fb006bSJason A. Donenfeld vst1.8 {d4-d5}, [r5, : 128]! 765f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r6, : 128]! 766f0fb006bSJason A. Donenfeld vst1.8 {d8-d9}, [r5, : 128]! 767f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r6, : 128]! 768f0fb006bSJason A. Donenfeld vst1.8 d12, [r5, : 64] 769f0fb006bSJason A. Donenfeld vst1.8 d6, [r6, : 64] 770f0fb006bSJason A. Donenfeld add r2, r3, #0 771f0fb006bSJason A. Donenfeld add r4, r3, #240 772f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r4, : 128]! 773f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r4, : 128]! 774f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r4, : 64] 775f0fb006bSJason A. Donenfeld add r4, r3, #336 776f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r4, : 128]! 777f0fb006bSJason A. Donenfeld vtrn.32 q0, q3 778f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r4, : 128]! 779f0fb006bSJason A. Donenfeld vshl.i32 q5, q0, #4 780f0fb006bSJason A. Donenfeld vtrn.32 q1, q4 781f0fb006bSJason A. Donenfeld vshl.i32 q6, q3, #4 782f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 783f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 784f0fb006bSJason A. Donenfeld vshl.i32 q7, q1, #4 785f0fb006bSJason A. Donenfeld vld1.8 {d5}, [r4, : 64] 786f0fb006bSJason A. Donenfeld vshl.i32 q8, q4, #4 787f0fb006bSJason A. Donenfeld vtrn.32 d4, d5 788f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 789f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 790f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128]! 791f0fb006bSJason A. Donenfeld vshl.i32 q10, q2, #4 792f0fb006bSJason A. Donenfeld vld1.8 {d22-d23}, [r2, : 128]! 793f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 794f0fb006bSJason A. Donenfeld vld1.8 {d24}, [r2, : 64] 795f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 796f0fb006bSJason A. Donenfeld add r2, r3, #288 797f0fb006bSJason A. Donenfeld vld1.8 {d26-d27}, [r2, : 128]! 798f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 799f0fb006bSJason A. Donenfeld vld1.8 {d28-d29}, [r2, : 128]! 800f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 801f0fb006bSJason A. Donenfeld vld1.8 {d25}, [r2, : 64] 802f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 803f0fb006bSJason A. Donenfeld vtrn.32 q9, q13 804f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 805f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 806f0fb006bSJason A. Donenfeld vtrn.32 q11, q14 807f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 808d8f1308aSJason A. Donenfeld add r2, sp, #528 809f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 810f0fb006bSJason A. Donenfeld vtrn.32 d24, d25 811d8f1308aSJason A. Donenfeld vst1.8 {d12-d13}, [r2, : 128]! 812f0fb006bSJason A. Donenfeld vshl.i32 q6, q13, #1 813d8f1308aSJason A. Donenfeld vst1.8 {d20-d21}, [r2, : 128]! 814f0fb006bSJason A. Donenfeld vshl.i32 q10, q14, #1 815d8f1308aSJason A. Donenfeld vst1.8 {d12-d13}, [r2, : 128]! 816f0fb006bSJason A. Donenfeld vshl.i32 q15, q12, #1 817f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 818f0fb006bSJason A. Donenfeld vext.32 d10, d31, d30, #0 819f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 820d8f1308aSJason A. Donenfeld vst1.8 {d16-d17}, [r2, : 128]! 821f0fb006bSJason A. Donenfeld vmull.s32 q8, d18, d5 822f0fb006bSJason A. Donenfeld vmlal.s32 q8, d26, d4 823f0fb006bSJason A. Donenfeld vmlal.s32 q8, d19, d9 824f0fb006bSJason A. Donenfeld vmlal.s32 q8, d27, d3 825f0fb006bSJason A. Donenfeld vmlal.s32 q8, d22, d8 826f0fb006bSJason A. Donenfeld vmlal.s32 q8, d28, d2 827f0fb006bSJason A. Donenfeld vmlal.s32 q8, d23, d7 828f0fb006bSJason A. Donenfeld vmlal.s32 q8, d29, d1 829f0fb006bSJason A. Donenfeld vmlal.s32 q8, d24, d6 830f0fb006bSJason A. Donenfeld vmlal.s32 q8, d25, d0 831d8f1308aSJason A. Donenfeld vst1.8 {d14-d15}, [r2, : 128]! 832f0fb006bSJason A. Donenfeld vmull.s32 q2, d18, d4 833f0fb006bSJason A. Donenfeld vmlal.s32 q2, d12, d9 834f0fb006bSJason A. Donenfeld vmlal.s32 q2, d13, d8 835f0fb006bSJason A. Donenfeld vmlal.s32 q2, d19, d3 836f0fb006bSJason A. Donenfeld vmlal.s32 q2, d22, d2 837f0fb006bSJason A. Donenfeld vmlal.s32 q2, d23, d1 838f0fb006bSJason A. Donenfeld vmlal.s32 q2, d24, d0 839d8f1308aSJason A. Donenfeld vst1.8 {d20-d21}, [r2, : 128]! 840f0fb006bSJason A. Donenfeld vmull.s32 q7, d18, d9 841f0fb006bSJason A. Donenfeld vmlal.s32 q7, d26, d3 842f0fb006bSJason A. Donenfeld vmlal.s32 q7, d19, d8 843f0fb006bSJason A. Donenfeld vmlal.s32 q7, d27, d2 844f0fb006bSJason A. Donenfeld vmlal.s32 q7, d22, d7 845f0fb006bSJason A. Donenfeld vmlal.s32 q7, d28, d1 846f0fb006bSJason A. Donenfeld vmlal.s32 q7, d23, d6 847f0fb006bSJason A. Donenfeld vmlal.s32 q7, d29, d0 848d8f1308aSJason A. Donenfeld vst1.8 {d10-d11}, [r2, : 128]! 849f0fb006bSJason A. Donenfeld vmull.s32 q5, d18, d3 850f0fb006bSJason A. Donenfeld vmlal.s32 q5, d19, d2 851f0fb006bSJason A. Donenfeld vmlal.s32 q5, d22, d1 852f0fb006bSJason A. Donenfeld vmlal.s32 q5, d23, d0 853f0fb006bSJason A. Donenfeld vmlal.s32 q5, d12, d8 854d8f1308aSJason A. Donenfeld vst1.8 {d16-d17}, [r2, : 128]! 855f0fb006bSJason A. Donenfeld vmull.s32 q4, d18, d8 856f0fb006bSJason A. Donenfeld vmlal.s32 q4, d26, d2 857f0fb006bSJason A. Donenfeld vmlal.s32 q4, d19, d7 858f0fb006bSJason A. Donenfeld vmlal.s32 q4, d27, d1 859f0fb006bSJason A. Donenfeld vmlal.s32 q4, d22, d6 860f0fb006bSJason A. Donenfeld vmlal.s32 q4, d28, d0 861f0fb006bSJason A. Donenfeld vmull.s32 q8, d18, d7 862f0fb006bSJason A. Donenfeld vmlal.s32 q8, d26, d1 863f0fb006bSJason A. Donenfeld vmlal.s32 q8, d19, d6 864f0fb006bSJason A. Donenfeld vmlal.s32 q8, d27, d0 865d8f1308aSJason A. Donenfeld add r2, sp, #544 866f0fb006bSJason A. Donenfeld vld1.8 {d20-d21}, [r2, : 128] 867f0fb006bSJason A. Donenfeld vmlal.s32 q7, d24, d21 868f0fb006bSJason A. Donenfeld vmlal.s32 q7, d25, d20 869f0fb006bSJason A. Donenfeld vmlal.s32 q4, d23, d21 870f0fb006bSJason A. Donenfeld vmlal.s32 q4, d29, d20 871f0fb006bSJason A. Donenfeld vmlal.s32 q8, d22, d21 872f0fb006bSJason A. Donenfeld vmlal.s32 q8, d28, d20 873f0fb006bSJason A. Donenfeld vmlal.s32 q5, d24, d20 874f0fb006bSJason A. Donenfeld vst1.8 {d14-d15}, [r2, : 128] 875f0fb006bSJason A. Donenfeld vmull.s32 q7, d18, d6 876f0fb006bSJason A. Donenfeld vmlal.s32 q7, d26, d0 877d8f1308aSJason A. Donenfeld add r2, sp, #624 878f0fb006bSJason A. Donenfeld vld1.8 {d30-d31}, [r2, : 128] 879f0fb006bSJason A. Donenfeld vmlal.s32 q2, d30, d21 880f0fb006bSJason A. Donenfeld vmlal.s32 q7, d19, d21 881f0fb006bSJason A. Donenfeld vmlal.s32 q7, d27, d20 882d8f1308aSJason A. Donenfeld add r2, sp, #592 883f0fb006bSJason A. Donenfeld vld1.8 {d26-d27}, [r2, : 128] 884f0fb006bSJason A. Donenfeld vmlal.s32 q4, d25, d27 885f0fb006bSJason A. Donenfeld vmlal.s32 q8, d29, d27 886f0fb006bSJason A. Donenfeld vmlal.s32 q8, d25, d26 887f0fb006bSJason A. Donenfeld vmlal.s32 q7, d28, d27 888f0fb006bSJason A. Donenfeld vmlal.s32 q7, d29, d26 889d8f1308aSJason A. Donenfeld add r2, sp, #576 890f0fb006bSJason A. Donenfeld vld1.8 {d28-d29}, [r2, : 128] 891f0fb006bSJason A. Donenfeld vmlal.s32 q4, d24, d29 892f0fb006bSJason A. Donenfeld vmlal.s32 q8, d23, d29 893f0fb006bSJason A. Donenfeld vmlal.s32 q8, d24, d28 894f0fb006bSJason A. Donenfeld vmlal.s32 q7, d22, d29 895f0fb006bSJason A. Donenfeld vmlal.s32 q7, d23, d28 896f0fb006bSJason A. Donenfeld vst1.8 {d8-d9}, [r2, : 128] 897d8f1308aSJason A. Donenfeld add r2, sp, #528 898f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r2, : 128] 899f0fb006bSJason A. Donenfeld vmlal.s32 q7, d24, d9 900f0fb006bSJason A. Donenfeld vmlal.s32 q7, d25, d31 901f0fb006bSJason A. Donenfeld vmull.s32 q1, d18, d2 902f0fb006bSJason A. Donenfeld vmlal.s32 q1, d19, d1 903f0fb006bSJason A. Donenfeld vmlal.s32 q1, d22, d0 904f0fb006bSJason A. Donenfeld vmlal.s32 q1, d24, d27 905f0fb006bSJason A. Donenfeld vmlal.s32 q1, d23, d20 906f0fb006bSJason A. Donenfeld vmlal.s32 q1, d12, d7 907f0fb006bSJason A. Donenfeld vmlal.s32 q1, d13, d6 908f0fb006bSJason A. Donenfeld vmull.s32 q6, d18, d1 909f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d0 910f0fb006bSJason A. Donenfeld vmlal.s32 q6, d23, d27 911f0fb006bSJason A. Donenfeld vmlal.s32 q6, d22, d20 912f0fb006bSJason A. Donenfeld vmlal.s32 q6, d24, d26 913f0fb006bSJason A. Donenfeld vmull.s32 q0, d18, d0 914f0fb006bSJason A. Donenfeld vmlal.s32 q0, d22, d27 915f0fb006bSJason A. Donenfeld vmlal.s32 q0, d23, d26 916f0fb006bSJason A. Donenfeld vmlal.s32 q0, d24, d31 917f0fb006bSJason A. Donenfeld vmlal.s32 q0, d19, d20 918d8f1308aSJason A. Donenfeld add r2, sp, #608 919f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 920f0fb006bSJason A. Donenfeld vmlal.s32 q2, d18, d7 921f0fb006bSJason A. Donenfeld vmlal.s32 q5, d18, d6 922f0fb006bSJason A. Donenfeld vmlal.s32 q1, d18, d21 923f0fb006bSJason A. Donenfeld vmlal.s32 q0, d18, d28 924f0fb006bSJason A. Donenfeld vmlal.s32 q6, d18, d29 925d8f1308aSJason A. Donenfeld vmlal.s32 q2, d19, d6 926d8f1308aSJason A. Donenfeld vmlal.s32 q5, d19, d21 927d8f1308aSJason A. Donenfeld vmlal.s32 q1, d19, d29 928d8f1308aSJason A. Donenfeld vmlal.s32 q0, d19, d9 929f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d28 930d8f1308aSJason A. Donenfeld add r2, sp, #560 931f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 932d8f1308aSJason A. Donenfeld add r2, sp, #480 933f0fb006bSJason A. Donenfeld vld1.8 {d22-d23}, [r2, : 128] 934f0fb006bSJason A. Donenfeld vmlal.s32 q5, d19, d7 935f0fb006bSJason A. Donenfeld vmlal.s32 q0, d18, d21 936f0fb006bSJason A. Donenfeld vmlal.s32 q0, d19, d29 937f0fb006bSJason A. Donenfeld vmlal.s32 q6, d18, d6 938d8f1308aSJason A. Donenfeld add r2, sp, #496 939f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r2, : 128] 940f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d21 941d8f1308aSJason A. Donenfeld add r2, sp, #544 942f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 943f0fb006bSJason A. Donenfeld vmlal.s32 q0, d30, d8 944d8f1308aSJason A. Donenfeld add r2, sp, #640 945f0fb006bSJason A. Donenfeld vld1.8 {d20-d21}, [r2, : 128] 946f0fb006bSJason A. Donenfeld vmlal.s32 q5, d30, d29 947d8f1308aSJason A. Donenfeld add r2, sp, #576 948f0fb006bSJason A. Donenfeld vld1.8 {d24-d25}, [r2, : 128] 949f0fb006bSJason A. Donenfeld vmlal.s32 q1, d30, d28 950f0fb006bSJason A. Donenfeld vadd.i64 q13, q0, q11 951f0fb006bSJason A. Donenfeld vadd.i64 q14, q5, q11 952f0fb006bSJason A. Donenfeld vmlal.s32 q6, d30, d9 953f0fb006bSJason A. Donenfeld vshr.s64 q4, q13, #26 954f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #26 955f0fb006bSJason A. Donenfeld vadd.i64 q7, q7, q4 956f0fb006bSJason A. Donenfeld vshl.i64 q4, q4, #26 957f0fb006bSJason A. Donenfeld vadd.i64 q14, q7, q3 958f0fb006bSJason A. Donenfeld vadd.i64 q9, q9, q13 959f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #26 960f0fb006bSJason A. Donenfeld vadd.i64 q15, q9, q3 961f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q4 962f0fb006bSJason A. Donenfeld vshr.s64 q4, q14, #25 963f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q13 964f0fb006bSJason A. Donenfeld vshr.s64 q13, q15, #25 965f0fb006bSJason A. Donenfeld vadd.i64 q6, q6, q4 966f0fb006bSJason A. Donenfeld vshl.i64 q4, q4, #25 967f0fb006bSJason A. Donenfeld vadd.i64 q14, q6, q11 968f0fb006bSJason A. Donenfeld vadd.i64 q2, q2, q13 969f0fb006bSJason A. Donenfeld vsub.i64 q4, q7, q4 970f0fb006bSJason A. Donenfeld vshr.s64 q7, q14, #26 971f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #25 972f0fb006bSJason A. Donenfeld vadd.i64 q14, q2, q11 973f0fb006bSJason A. Donenfeld vadd.i64 q8, q8, q7 974f0fb006bSJason A. Donenfeld vshl.i64 q7, q7, #26 975f0fb006bSJason A. Donenfeld vadd.i64 q15, q8, q3 976f0fb006bSJason A. Donenfeld vsub.i64 q9, q9, q13 977f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #26 978f0fb006bSJason A. Donenfeld vsub.i64 q6, q6, q7 979f0fb006bSJason A. Donenfeld vshr.s64 q7, q15, #25 980f0fb006bSJason A. Donenfeld vadd.i64 q10, q10, q13 981f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #26 982f0fb006bSJason A. Donenfeld vadd.i64 q14, q10, q3 983f0fb006bSJason A. Donenfeld vadd.i64 q1, q1, q7 984f0fb006bSJason A. Donenfeld add r2, r3, #288 985f0fb006bSJason A. Donenfeld vshl.i64 q7, q7, #25 986f0fb006bSJason A. Donenfeld add r4, r3, #96 987f0fb006bSJason A. Donenfeld vadd.i64 q15, q1, q11 988f0fb006bSJason A. Donenfeld add r2, r2, #8 989f0fb006bSJason A. Donenfeld vsub.i64 q2, q2, q13 990f0fb006bSJason A. Donenfeld add r4, r4, #8 991f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #25 992f0fb006bSJason A. Donenfeld vsub.i64 q7, q8, q7 993f0fb006bSJason A. Donenfeld vshr.s64 q8, q15, #26 994f0fb006bSJason A. Donenfeld vadd.i64 q14, q13, q13 995f0fb006bSJason A. Donenfeld vadd.i64 q12, q12, q8 996f0fb006bSJason A. Donenfeld vtrn.32 d12, d14 997f0fb006bSJason A. Donenfeld vshl.i64 q8, q8, #26 998f0fb006bSJason A. Donenfeld vtrn.32 d13, d15 999f0fb006bSJason A. Donenfeld vadd.i64 q3, q12, q3 1000f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q14 1001f0fb006bSJason A. Donenfeld vst1.8 d12, [r2, : 64]! 1002f0fb006bSJason A. Donenfeld vshl.i64 q7, q13, #4 1003f0fb006bSJason A. Donenfeld vst1.8 d13, [r4, : 64]! 1004f0fb006bSJason A. Donenfeld vsub.i64 q1, q1, q8 1005f0fb006bSJason A. Donenfeld vshr.s64 q3, q3, #25 1006f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q7 1007f0fb006bSJason A. Donenfeld vadd.i64 q5, q5, q3 1008f0fb006bSJason A. Donenfeld vshl.i64 q3, q3, #25 1009f0fb006bSJason A. Donenfeld vadd.i64 q6, q5, q11 1010f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q13 1011f0fb006bSJason A. Donenfeld vshl.i64 q7, q13, #25 1012f0fb006bSJason A. Donenfeld vadd.i64 q8, q0, q11 1013f0fb006bSJason A. Donenfeld vsub.i64 q3, q12, q3 1014f0fb006bSJason A. Donenfeld vshr.s64 q6, q6, #26 1015f0fb006bSJason A. Donenfeld vsub.i64 q7, q10, q7 1016f0fb006bSJason A. Donenfeld vtrn.32 d2, d6 1017f0fb006bSJason A. Donenfeld vshr.s64 q8, q8, #26 1018f0fb006bSJason A. Donenfeld vtrn.32 d3, d7 1019f0fb006bSJason A. Donenfeld vadd.i64 q3, q9, q6 1020f0fb006bSJason A. Donenfeld vst1.8 d2, [r2, : 64] 1021f0fb006bSJason A. Donenfeld vshl.i64 q6, q6, #26 1022f0fb006bSJason A. Donenfeld vst1.8 d3, [r4, : 64] 1023f0fb006bSJason A. Donenfeld vadd.i64 q1, q4, q8 1024f0fb006bSJason A. Donenfeld vtrn.32 d4, d14 1025f0fb006bSJason A. Donenfeld vshl.i64 q4, q8, #26 1026f0fb006bSJason A. Donenfeld vtrn.32 d5, d15 1027f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q6 1028f0fb006bSJason A. Donenfeld add r2, r2, #16 1029f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q4 1030f0fb006bSJason A. Donenfeld vst1.8 d4, [r2, : 64] 1031f0fb006bSJason A. Donenfeld add r4, r4, #16 1032f0fb006bSJason A. Donenfeld vst1.8 d5, [r4, : 64] 1033f0fb006bSJason A. Donenfeld vtrn.32 d10, d6 1034f0fb006bSJason A. Donenfeld vtrn.32 d11, d7 1035f0fb006bSJason A. Donenfeld sub r2, r2, #8 1036f0fb006bSJason A. Donenfeld sub r4, r4, #8 1037f0fb006bSJason A. Donenfeld vtrn.32 d0, d2 1038f0fb006bSJason A. Donenfeld vtrn.32 d1, d3 1039f0fb006bSJason A. Donenfeld vst1.8 d10, [r2, : 64] 1040f0fb006bSJason A. Donenfeld vst1.8 d11, [r4, : 64] 1041f0fb006bSJason A. Donenfeld sub r2, r2, #24 1042f0fb006bSJason A. Donenfeld sub r4, r4, #24 1043f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 1044f0fb006bSJason A. Donenfeld vst1.8 d1, [r4, : 64] 1045d8f1308aSJason A. Donenfeld add r2, sp, #512 1046f0fb006bSJason A. Donenfeld add r4, r3, #144 1047f0fb006bSJason A. Donenfeld add r5, r3, #192 1048f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r2, : 128] 1049f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r4, : 128]! 1050f0fb006bSJason A. Donenfeld vld1.8 {d4-d5}, [r5, : 128]! 1051f0fb006bSJason A. Donenfeld vzip.i32 q1, q2 1052f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r4, : 128]! 1053f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r5, : 128]! 1054f0fb006bSJason A. Donenfeld vshl.i32 q5, q1, #1 1055f0fb006bSJason A. Donenfeld vzip.i32 q3, q4 1056f0fb006bSJason A. Donenfeld vshl.i32 q6, q2, #1 1057f0fb006bSJason A. Donenfeld vld1.8 {d14}, [r4, : 64] 1058f0fb006bSJason A. Donenfeld vshl.i32 q8, q3, #1 1059f0fb006bSJason A. Donenfeld vld1.8 {d15}, [r5, : 64] 1060f0fb006bSJason A. Donenfeld vshl.i32 q9, q4, #1 1061f0fb006bSJason A. Donenfeld vmul.i32 d21, d7, d1 1062f0fb006bSJason A. Donenfeld vtrn.32 d14, d15 1063f0fb006bSJason A. Donenfeld vmul.i32 q11, q4, q0 1064f0fb006bSJason A. Donenfeld vmul.i32 q0, q7, q0 1065f0fb006bSJason A. Donenfeld vmull.s32 q12, d2, d2 1066f0fb006bSJason A. Donenfeld vmlal.s32 q12, d11, d1 1067f0fb006bSJason A. Donenfeld vmlal.s32 q12, d12, d0 1068f0fb006bSJason A. Donenfeld vmlal.s32 q12, d13, d23 1069f0fb006bSJason A. Donenfeld vmlal.s32 q12, d16, d22 1070f0fb006bSJason A. Donenfeld vmlal.s32 q12, d7, d21 1071f0fb006bSJason A. Donenfeld vmull.s32 q10, d2, d11 1072f0fb006bSJason A. Donenfeld vmlal.s32 q10, d4, d1 1073f0fb006bSJason A. Donenfeld vmlal.s32 q10, d13, d0 1074f0fb006bSJason A. Donenfeld vmlal.s32 q10, d6, d23 1075f0fb006bSJason A. Donenfeld vmlal.s32 q10, d17, d22 1076f0fb006bSJason A. Donenfeld vmull.s32 q13, d10, d4 1077f0fb006bSJason A. Donenfeld vmlal.s32 q13, d11, d3 1078f0fb006bSJason A. Donenfeld vmlal.s32 q13, d13, d1 1079f0fb006bSJason A. Donenfeld vmlal.s32 q13, d16, d0 1080f0fb006bSJason A. Donenfeld vmlal.s32 q13, d17, d23 1081f0fb006bSJason A. Donenfeld vmlal.s32 q13, d8, d22 1082f0fb006bSJason A. Donenfeld vmull.s32 q1, d10, d5 1083f0fb006bSJason A. Donenfeld vmlal.s32 q1, d11, d4 1084f0fb006bSJason A. Donenfeld vmlal.s32 q1, d6, d1 1085f0fb006bSJason A. Donenfeld vmlal.s32 q1, d17, d0 1086f0fb006bSJason A. Donenfeld vmlal.s32 q1, d8, d23 1087f0fb006bSJason A. Donenfeld vmull.s32 q14, d10, d6 1088f0fb006bSJason A. Donenfeld vmlal.s32 q14, d11, d13 1089f0fb006bSJason A. Donenfeld vmlal.s32 q14, d4, d4 1090f0fb006bSJason A. Donenfeld vmlal.s32 q14, d17, d1 1091f0fb006bSJason A. Donenfeld vmlal.s32 q14, d18, d0 1092f0fb006bSJason A. Donenfeld vmlal.s32 q14, d9, d23 1093f0fb006bSJason A. Donenfeld vmull.s32 q11, d10, d7 1094f0fb006bSJason A. Donenfeld vmlal.s32 q11, d11, d6 1095f0fb006bSJason A. Donenfeld vmlal.s32 q11, d12, d5 1096f0fb006bSJason A. Donenfeld vmlal.s32 q11, d8, d1 1097f0fb006bSJason A. Donenfeld vmlal.s32 q11, d19, d0 1098f0fb006bSJason A. Donenfeld vmull.s32 q15, d10, d8 1099f0fb006bSJason A. Donenfeld vmlal.s32 q15, d11, d17 1100f0fb006bSJason A. Donenfeld vmlal.s32 q15, d12, d6 1101f0fb006bSJason A. Donenfeld vmlal.s32 q15, d13, d5 1102f0fb006bSJason A. Donenfeld vmlal.s32 q15, d19, d1 1103f0fb006bSJason A. Donenfeld vmlal.s32 q15, d14, d0 1104f0fb006bSJason A. Donenfeld vmull.s32 q2, d10, d9 1105f0fb006bSJason A. Donenfeld vmlal.s32 q2, d11, d8 1106f0fb006bSJason A. Donenfeld vmlal.s32 q2, d12, d7 1107f0fb006bSJason A. Donenfeld vmlal.s32 q2, d13, d6 1108f0fb006bSJason A. Donenfeld vmlal.s32 q2, d14, d1 1109f0fb006bSJason A. Donenfeld vmull.s32 q0, d15, d1 1110f0fb006bSJason A. Donenfeld vmlal.s32 q0, d10, d14 1111f0fb006bSJason A. Donenfeld vmlal.s32 q0, d11, d19 1112f0fb006bSJason A. Donenfeld vmlal.s32 q0, d12, d8 1113f0fb006bSJason A. Donenfeld vmlal.s32 q0, d13, d17 1114f0fb006bSJason A. Donenfeld vmlal.s32 q0, d6, d6 1115d8f1308aSJason A. Donenfeld add r2, sp, #480 1116d8f1308aSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128]! 1117f0fb006bSJason A. Donenfeld vmull.s32 q3, d16, d7 1118f0fb006bSJason A. Donenfeld vmlal.s32 q3, d10, d15 1119f0fb006bSJason A. Donenfeld vmlal.s32 q3, d11, d14 1120f0fb006bSJason A. Donenfeld vmlal.s32 q3, d12, d9 1121f0fb006bSJason A. Donenfeld vmlal.s32 q3, d13, d8 1122f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r2, : 128] 1123f0fb006bSJason A. Donenfeld vadd.i64 q5, q12, q9 1124f0fb006bSJason A. Donenfeld vadd.i64 q6, q15, q9 1125f0fb006bSJason A. Donenfeld vshr.s64 q5, q5, #26 1126f0fb006bSJason A. Donenfeld vshr.s64 q6, q6, #26 1127f0fb006bSJason A. Donenfeld vadd.i64 q7, q10, q5 1128f0fb006bSJason A. Donenfeld vshl.i64 q5, q5, #26 1129f0fb006bSJason A. Donenfeld vadd.i64 q8, q7, q4 1130f0fb006bSJason A. Donenfeld vadd.i64 q2, q2, q6 1131f0fb006bSJason A. Donenfeld vshl.i64 q6, q6, #26 1132f0fb006bSJason A. Donenfeld vadd.i64 q10, q2, q4 1133f0fb006bSJason A. Donenfeld vsub.i64 q5, q12, q5 1134f0fb006bSJason A. Donenfeld vshr.s64 q8, q8, #25 1135f0fb006bSJason A. Donenfeld vsub.i64 q6, q15, q6 1136f0fb006bSJason A. Donenfeld vshr.s64 q10, q10, #25 1137f0fb006bSJason A. Donenfeld vadd.i64 q12, q13, q8 1138f0fb006bSJason A. Donenfeld vshl.i64 q8, q8, #25 1139f0fb006bSJason A. Donenfeld vadd.i64 q13, q12, q9 1140f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q10 1141f0fb006bSJason A. Donenfeld vsub.i64 q7, q7, q8 1142f0fb006bSJason A. Donenfeld vshr.s64 q8, q13, #26 1143f0fb006bSJason A. Donenfeld vshl.i64 q10, q10, #25 1144f0fb006bSJason A. Donenfeld vadd.i64 q13, q0, q9 1145f0fb006bSJason A. Donenfeld vadd.i64 q1, q1, q8 1146f0fb006bSJason A. Donenfeld vshl.i64 q8, q8, #26 1147f0fb006bSJason A. Donenfeld vadd.i64 q15, q1, q4 1148f0fb006bSJason A. Donenfeld vsub.i64 q2, q2, q10 1149f0fb006bSJason A. Donenfeld vshr.s64 q10, q13, #26 1150f0fb006bSJason A. Donenfeld vsub.i64 q8, q12, q8 1151f0fb006bSJason A. Donenfeld vshr.s64 q12, q15, #25 1152f0fb006bSJason A. Donenfeld vadd.i64 q3, q3, q10 1153f0fb006bSJason A. Donenfeld vshl.i64 q10, q10, #26 1154f0fb006bSJason A. Donenfeld vadd.i64 q13, q3, q4 1155f0fb006bSJason A. Donenfeld vadd.i64 q14, q14, q12 1156f0fb006bSJason A. Donenfeld add r2, r3, #144 1157f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #25 1158f0fb006bSJason A. Donenfeld add r4, r3, #192 1159f0fb006bSJason A. Donenfeld vadd.i64 q15, q14, q9 1160f0fb006bSJason A. Donenfeld add r2, r2, #8 1161f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q10 1162f0fb006bSJason A. Donenfeld add r4, r4, #8 1163f0fb006bSJason A. Donenfeld vshr.s64 q10, q13, #25 1164f0fb006bSJason A. Donenfeld vsub.i64 q1, q1, q12 1165f0fb006bSJason A. Donenfeld vshr.s64 q12, q15, #26 1166f0fb006bSJason A. Donenfeld vadd.i64 q13, q10, q10 1167f0fb006bSJason A. Donenfeld vadd.i64 q11, q11, q12 1168f0fb006bSJason A. Donenfeld vtrn.32 d16, d2 1169f0fb006bSJason A. Donenfeld vshl.i64 q12, q12, #26 1170f0fb006bSJason A. Donenfeld vtrn.32 d17, d3 1171f0fb006bSJason A. Donenfeld vadd.i64 q1, q11, q4 1172f0fb006bSJason A. Donenfeld vadd.i64 q4, q5, q13 1173f0fb006bSJason A. Donenfeld vst1.8 d16, [r2, : 64]! 1174f0fb006bSJason A. Donenfeld vshl.i64 q5, q10, #4 1175f0fb006bSJason A. Donenfeld vst1.8 d17, [r4, : 64]! 1176f0fb006bSJason A. Donenfeld vsub.i64 q8, q14, q12 1177f0fb006bSJason A. Donenfeld vshr.s64 q1, q1, #25 1178f0fb006bSJason A. Donenfeld vadd.i64 q4, q4, q5 1179f0fb006bSJason A. Donenfeld vadd.i64 q5, q6, q1 1180f0fb006bSJason A. Donenfeld vshl.i64 q1, q1, #25 1181f0fb006bSJason A. Donenfeld vadd.i64 q6, q5, q9 1182f0fb006bSJason A. Donenfeld vadd.i64 q4, q4, q10 1183f0fb006bSJason A. Donenfeld vshl.i64 q10, q10, #25 1184f0fb006bSJason A. Donenfeld vadd.i64 q9, q4, q9 1185f0fb006bSJason A. Donenfeld vsub.i64 q1, q11, q1 1186f0fb006bSJason A. Donenfeld vshr.s64 q6, q6, #26 1187f0fb006bSJason A. Donenfeld vsub.i64 q3, q3, q10 1188f0fb006bSJason A. Donenfeld vtrn.32 d16, d2 1189f0fb006bSJason A. Donenfeld vshr.s64 q9, q9, #26 1190f0fb006bSJason A. Donenfeld vtrn.32 d17, d3 1191f0fb006bSJason A. Donenfeld vadd.i64 q1, q2, q6 1192f0fb006bSJason A. Donenfeld vst1.8 d16, [r2, : 64] 1193f0fb006bSJason A. Donenfeld vshl.i64 q2, q6, #26 1194f0fb006bSJason A. Donenfeld vst1.8 d17, [r4, : 64] 1195f0fb006bSJason A. Donenfeld vadd.i64 q6, q7, q9 1196f0fb006bSJason A. Donenfeld vtrn.32 d0, d6 1197f0fb006bSJason A. Donenfeld vshl.i64 q7, q9, #26 1198f0fb006bSJason A. Donenfeld vtrn.32 d1, d7 1199f0fb006bSJason A. Donenfeld vsub.i64 q2, q5, q2 1200f0fb006bSJason A. Donenfeld add r2, r2, #16 1201f0fb006bSJason A. Donenfeld vsub.i64 q3, q4, q7 1202f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 1203f0fb006bSJason A. Donenfeld add r4, r4, #16 1204f0fb006bSJason A. Donenfeld vst1.8 d1, [r4, : 64] 1205f0fb006bSJason A. Donenfeld vtrn.32 d4, d2 1206f0fb006bSJason A. Donenfeld vtrn.32 d5, d3 1207f0fb006bSJason A. Donenfeld sub r2, r2, #8 1208f0fb006bSJason A. Donenfeld sub r4, r4, #8 1209f0fb006bSJason A. Donenfeld vtrn.32 d6, d12 1210f0fb006bSJason A. Donenfeld vtrn.32 d7, d13 1211f0fb006bSJason A. Donenfeld vst1.8 d4, [r2, : 64] 1212f0fb006bSJason A. Donenfeld vst1.8 d5, [r4, : 64] 1213f0fb006bSJason A. Donenfeld sub r2, r2, #24 1214f0fb006bSJason A. Donenfeld sub r4, r4, #24 1215f0fb006bSJason A. Donenfeld vst1.8 d6, [r2, : 64] 1216f0fb006bSJason A. Donenfeld vst1.8 d7, [r4, : 64] 1217f0fb006bSJason A. Donenfeld add r2, r3, #336 1218f0fb006bSJason A. Donenfeld add r4, r3, #288 1219f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r2, : 128]! 1220f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r4, : 128]! 1221f0fb006bSJason A. Donenfeld vadd.i32 q0, q0, q1 1222f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r2, : 128]! 1223f0fb006bSJason A. Donenfeld vld1.8 {d4-d5}, [r4, : 128]! 1224f0fb006bSJason A. Donenfeld vadd.i32 q1, q1, q2 1225f0fb006bSJason A. Donenfeld add r5, r3, #288 1226f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r2, : 64] 1227f0fb006bSJason A. Donenfeld vld1.8 {d6}, [r4, : 64] 1228f0fb006bSJason A. Donenfeld vadd.i32 q2, q2, q3 1229f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r5, : 128]! 1230f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r5, : 128]! 1231f0fb006bSJason A. Donenfeld vst1.8 d4, [r5, : 64] 1232f0fb006bSJason A. Donenfeld add r2, r3, #48 1233f0fb006bSJason A. Donenfeld add r4, r3, #144 1234f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r4, : 128]! 1235f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r4, : 128]! 1236f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r4, : 64] 1237f0fb006bSJason A. Donenfeld add r4, r3, #288 1238f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r4, : 128]! 1239f0fb006bSJason A. Donenfeld vtrn.32 q0, q3 1240f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r4, : 128]! 1241f0fb006bSJason A. Donenfeld vshl.i32 q5, q0, #4 1242f0fb006bSJason A. Donenfeld vtrn.32 q1, q4 1243f0fb006bSJason A. Donenfeld vshl.i32 q6, q3, #4 1244f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 1245f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 1246f0fb006bSJason A. Donenfeld vshl.i32 q7, q1, #4 1247f0fb006bSJason A. Donenfeld vld1.8 {d5}, [r4, : 64] 1248f0fb006bSJason A. Donenfeld vshl.i32 q8, q4, #4 1249f0fb006bSJason A. Donenfeld vtrn.32 d4, d5 1250f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 1251f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 1252f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128]! 1253f0fb006bSJason A. Donenfeld vshl.i32 q10, q2, #4 1254f0fb006bSJason A. Donenfeld vld1.8 {d22-d23}, [r2, : 128]! 1255f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 1256f0fb006bSJason A. Donenfeld vld1.8 {d24}, [r2, : 64] 1257f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 1258f0fb006bSJason A. Donenfeld add r2, r3, #240 1259f0fb006bSJason A. Donenfeld vld1.8 {d26-d27}, [r2, : 128]! 1260f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 1261f0fb006bSJason A. Donenfeld vld1.8 {d28-d29}, [r2, : 128]! 1262f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 1263f0fb006bSJason A. Donenfeld vld1.8 {d25}, [r2, : 64] 1264f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 1265f0fb006bSJason A. Donenfeld vtrn.32 q9, q13 1266f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 1267f0fb006bSJason A. Donenfeld vadd.i32 q5, q5, q0 1268f0fb006bSJason A. Donenfeld vtrn.32 q11, q14 1269f0fb006bSJason A. Donenfeld vadd.i32 q6, q6, q3 1270d8f1308aSJason A. Donenfeld add r2, sp, #528 1271f0fb006bSJason A. Donenfeld vadd.i32 q10, q10, q2 1272f0fb006bSJason A. Donenfeld vtrn.32 d24, d25 1273d8f1308aSJason A. Donenfeld vst1.8 {d12-d13}, [r2, : 128]! 1274f0fb006bSJason A. Donenfeld vshl.i32 q6, q13, #1 1275d8f1308aSJason A. Donenfeld vst1.8 {d20-d21}, [r2, : 128]! 1276f0fb006bSJason A. Donenfeld vshl.i32 q10, q14, #1 1277d8f1308aSJason A. Donenfeld vst1.8 {d12-d13}, [r2, : 128]! 1278f0fb006bSJason A. Donenfeld vshl.i32 q15, q12, #1 1279f0fb006bSJason A. Donenfeld vadd.i32 q8, q8, q4 1280f0fb006bSJason A. Donenfeld vext.32 d10, d31, d30, #0 1281f0fb006bSJason A. Donenfeld vadd.i32 q7, q7, q1 1282d8f1308aSJason A. Donenfeld vst1.8 {d16-d17}, [r2, : 128]! 1283f0fb006bSJason A. Donenfeld vmull.s32 q8, d18, d5 1284f0fb006bSJason A. Donenfeld vmlal.s32 q8, d26, d4 1285f0fb006bSJason A. Donenfeld vmlal.s32 q8, d19, d9 1286f0fb006bSJason A. Donenfeld vmlal.s32 q8, d27, d3 1287f0fb006bSJason A. Donenfeld vmlal.s32 q8, d22, d8 1288f0fb006bSJason A. Donenfeld vmlal.s32 q8, d28, d2 1289f0fb006bSJason A. Donenfeld vmlal.s32 q8, d23, d7 1290f0fb006bSJason A. Donenfeld vmlal.s32 q8, d29, d1 1291f0fb006bSJason A. Donenfeld vmlal.s32 q8, d24, d6 1292f0fb006bSJason A. Donenfeld vmlal.s32 q8, d25, d0 1293d8f1308aSJason A. Donenfeld vst1.8 {d14-d15}, [r2, : 128]! 1294f0fb006bSJason A. Donenfeld vmull.s32 q2, d18, d4 1295f0fb006bSJason A. Donenfeld vmlal.s32 q2, d12, d9 1296f0fb006bSJason A. Donenfeld vmlal.s32 q2, d13, d8 1297f0fb006bSJason A. Donenfeld vmlal.s32 q2, d19, d3 1298f0fb006bSJason A. Donenfeld vmlal.s32 q2, d22, d2 1299f0fb006bSJason A. Donenfeld vmlal.s32 q2, d23, d1 1300f0fb006bSJason A. Donenfeld vmlal.s32 q2, d24, d0 1301d8f1308aSJason A. Donenfeld vst1.8 {d20-d21}, [r2, : 128]! 1302f0fb006bSJason A. Donenfeld vmull.s32 q7, d18, d9 1303f0fb006bSJason A. Donenfeld vmlal.s32 q7, d26, d3 1304f0fb006bSJason A. Donenfeld vmlal.s32 q7, d19, d8 1305f0fb006bSJason A. Donenfeld vmlal.s32 q7, d27, d2 1306f0fb006bSJason A. Donenfeld vmlal.s32 q7, d22, d7 1307f0fb006bSJason A. Donenfeld vmlal.s32 q7, d28, d1 1308f0fb006bSJason A. Donenfeld vmlal.s32 q7, d23, d6 1309f0fb006bSJason A. Donenfeld vmlal.s32 q7, d29, d0 1310d8f1308aSJason A. Donenfeld vst1.8 {d10-d11}, [r2, : 128]! 1311f0fb006bSJason A. Donenfeld vmull.s32 q5, d18, d3 1312f0fb006bSJason A. Donenfeld vmlal.s32 q5, d19, d2 1313f0fb006bSJason A. Donenfeld vmlal.s32 q5, d22, d1 1314f0fb006bSJason A. Donenfeld vmlal.s32 q5, d23, d0 1315f0fb006bSJason A. Donenfeld vmlal.s32 q5, d12, d8 1316d8f1308aSJason A. Donenfeld vst1.8 {d16-d17}, [r2, : 128]! 1317f0fb006bSJason A. Donenfeld vmull.s32 q4, d18, d8 1318f0fb006bSJason A. Donenfeld vmlal.s32 q4, d26, d2 1319f0fb006bSJason A. Donenfeld vmlal.s32 q4, d19, d7 1320f0fb006bSJason A. Donenfeld vmlal.s32 q4, d27, d1 1321f0fb006bSJason A. Donenfeld vmlal.s32 q4, d22, d6 1322f0fb006bSJason A. Donenfeld vmlal.s32 q4, d28, d0 1323f0fb006bSJason A. Donenfeld vmull.s32 q8, d18, d7 1324f0fb006bSJason A. Donenfeld vmlal.s32 q8, d26, d1 1325f0fb006bSJason A. Donenfeld vmlal.s32 q8, d19, d6 1326f0fb006bSJason A. Donenfeld vmlal.s32 q8, d27, d0 1327d8f1308aSJason A. Donenfeld add r2, sp, #544 1328f0fb006bSJason A. Donenfeld vld1.8 {d20-d21}, [r2, : 128] 1329f0fb006bSJason A. Donenfeld vmlal.s32 q7, d24, d21 1330f0fb006bSJason A. Donenfeld vmlal.s32 q7, d25, d20 1331f0fb006bSJason A. Donenfeld vmlal.s32 q4, d23, d21 1332f0fb006bSJason A. Donenfeld vmlal.s32 q4, d29, d20 1333f0fb006bSJason A. Donenfeld vmlal.s32 q8, d22, d21 1334f0fb006bSJason A. Donenfeld vmlal.s32 q8, d28, d20 1335f0fb006bSJason A. Donenfeld vmlal.s32 q5, d24, d20 1336f0fb006bSJason A. Donenfeld vst1.8 {d14-d15}, [r2, : 128] 1337f0fb006bSJason A. Donenfeld vmull.s32 q7, d18, d6 1338f0fb006bSJason A. Donenfeld vmlal.s32 q7, d26, d0 1339d8f1308aSJason A. Donenfeld add r2, sp, #624 1340f0fb006bSJason A. Donenfeld vld1.8 {d30-d31}, [r2, : 128] 1341f0fb006bSJason A. Donenfeld vmlal.s32 q2, d30, d21 1342f0fb006bSJason A. Donenfeld vmlal.s32 q7, d19, d21 1343f0fb006bSJason A. Donenfeld vmlal.s32 q7, d27, d20 1344d8f1308aSJason A. Donenfeld add r2, sp, #592 1345f0fb006bSJason A. Donenfeld vld1.8 {d26-d27}, [r2, : 128] 1346f0fb006bSJason A. Donenfeld vmlal.s32 q4, d25, d27 1347f0fb006bSJason A. Donenfeld vmlal.s32 q8, d29, d27 1348f0fb006bSJason A. Donenfeld vmlal.s32 q8, d25, d26 1349f0fb006bSJason A. Donenfeld vmlal.s32 q7, d28, d27 1350f0fb006bSJason A. Donenfeld vmlal.s32 q7, d29, d26 1351d8f1308aSJason A. Donenfeld add r2, sp, #576 1352f0fb006bSJason A. Donenfeld vld1.8 {d28-d29}, [r2, : 128] 1353f0fb006bSJason A. Donenfeld vmlal.s32 q4, d24, d29 1354f0fb006bSJason A. Donenfeld vmlal.s32 q8, d23, d29 1355f0fb006bSJason A. Donenfeld vmlal.s32 q8, d24, d28 1356f0fb006bSJason A. Donenfeld vmlal.s32 q7, d22, d29 1357f0fb006bSJason A. Donenfeld vmlal.s32 q7, d23, d28 1358f0fb006bSJason A. Donenfeld vst1.8 {d8-d9}, [r2, : 128] 1359d8f1308aSJason A. Donenfeld add r2, sp, #528 1360f0fb006bSJason A. Donenfeld vld1.8 {d8-d9}, [r2, : 128] 1361f0fb006bSJason A. Donenfeld vmlal.s32 q7, d24, d9 1362f0fb006bSJason A. Donenfeld vmlal.s32 q7, d25, d31 1363f0fb006bSJason A. Donenfeld vmull.s32 q1, d18, d2 1364f0fb006bSJason A. Donenfeld vmlal.s32 q1, d19, d1 1365f0fb006bSJason A. Donenfeld vmlal.s32 q1, d22, d0 1366f0fb006bSJason A. Donenfeld vmlal.s32 q1, d24, d27 1367f0fb006bSJason A. Donenfeld vmlal.s32 q1, d23, d20 1368f0fb006bSJason A. Donenfeld vmlal.s32 q1, d12, d7 1369f0fb006bSJason A. Donenfeld vmlal.s32 q1, d13, d6 1370f0fb006bSJason A. Donenfeld vmull.s32 q6, d18, d1 1371f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d0 1372f0fb006bSJason A. Donenfeld vmlal.s32 q6, d23, d27 1373f0fb006bSJason A. Donenfeld vmlal.s32 q6, d22, d20 1374f0fb006bSJason A. Donenfeld vmlal.s32 q6, d24, d26 1375f0fb006bSJason A. Donenfeld vmull.s32 q0, d18, d0 1376f0fb006bSJason A. Donenfeld vmlal.s32 q0, d22, d27 1377f0fb006bSJason A. Donenfeld vmlal.s32 q0, d23, d26 1378f0fb006bSJason A. Donenfeld vmlal.s32 q0, d24, d31 1379f0fb006bSJason A. Donenfeld vmlal.s32 q0, d19, d20 1380d8f1308aSJason A. Donenfeld add r2, sp, #608 1381f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 1382f0fb006bSJason A. Donenfeld vmlal.s32 q2, d18, d7 1383f0fb006bSJason A. Donenfeld vmlal.s32 q5, d18, d6 1384f0fb006bSJason A. Donenfeld vmlal.s32 q1, d18, d21 1385f0fb006bSJason A. Donenfeld vmlal.s32 q0, d18, d28 1386f0fb006bSJason A. Donenfeld vmlal.s32 q6, d18, d29 1387d8f1308aSJason A. Donenfeld vmlal.s32 q2, d19, d6 1388d8f1308aSJason A. Donenfeld vmlal.s32 q5, d19, d21 1389d8f1308aSJason A. Donenfeld vmlal.s32 q1, d19, d29 1390d8f1308aSJason A. Donenfeld vmlal.s32 q0, d19, d9 1391f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d28 1392d8f1308aSJason A. Donenfeld add r2, sp, #560 1393f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 1394d8f1308aSJason A. Donenfeld add r2, sp, #480 1395f0fb006bSJason A. Donenfeld vld1.8 {d22-d23}, [r2, : 128] 1396f0fb006bSJason A. Donenfeld vmlal.s32 q5, d19, d7 1397f0fb006bSJason A. Donenfeld vmlal.s32 q0, d18, d21 1398f0fb006bSJason A. Donenfeld vmlal.s32 q0, d19, d29 1399f0fb006bSJason A. Donenfeld vmlal.s32 q6, d18, d6 1400d8f1308aSJason A. Donenfeld add r2, sp, #496 1401f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r2, : 128] 1402f0fb006bSJason A. Donenfeld vmlal.s32 q6, d19, d21 1403d8f1308aSJason A. Donenfeld add r2, sp, #544 1404f0fb006bSJason A. Donenfeld vld1.8 {d18-d19}, [r2, : 128] 1405f0fb006bSJason A. Donenfeld vmlal.s32 q0, d30, d8 1406d8f1308aSJason A. Donenfeld add r2, sp, #640 1407f0fb006bSJason A. Donenfeld vld1.8 {d20-d21}, [r2, : 128] 1408f0fb006bSJason A. Donenfeld vmlal.s32 q5, d30, d29 1409d8f1308aSJason A. Donenfeld add r2, sp, #576 1410f0fb006bSJason A. Donenfeld vld1.8 {d24-d25}, [r2, : 128] 1411f0fb006bSJason A. Donenfeld vmlal.s32 q1, d30, d28 1412f0fb006bSJason A. Donenfeld vadd.i64 q13, q0, q11 1413f0fb006bSJason A. Donenfeld vadd.i64 q14, q5, q11 1414f0fb006bSJason A. Donenfeld vmlal.s32 q6, d30, d9 1415f0fb006bSJason A. Donenfeld vshr.s64 q4, q13, #26 1416f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #26 1417f0fb006bSJason A. Donenfeld vadd.i64 q7, q7, q4 1418f0fb006bSJason A. Donenfeld vshl.i64 q4, q4, #26 1419f0fb006bSJason A. Donenfeld vadd.i64 q14, q7, q3 1420f0fb006bSJason A. Donenfeld vadd.i64 q9, q9, q13 1421f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #26 1422f0fb006bSJason A. Donenfeld vadd.i64 q15, q9, q3 1423f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q4 1424f0fb006bSJason A. Donenfeld vshr.s64 q4, q14, #25 1425f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q13 1426f0fb006bSJason A. Donenfeld vshr.s64 q13, q15, #25 1427f0fb006bSJason A. Donenfeld vadd.i64 q6, q6, q4 1428f0fb006bSJason A. Donenfeld vshl.i64 q4, q4, #25 1429f0fb006bSJason A. Donenfeld vadd.i64 q14, q6, q11 1430f0fb006bSJason A. Donenfeld vadd.i64 q2, q2, q13 1431f0fb006bSJason A. Donenfeld vsub.i64 q4, q7, q4 1432f0fb006bSJason A. Donenfeld vshr.s64 q7, q14, #26 1433f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #25 1434f0fb006bSJason A. Donenfeld vadd.i64 q14, q2, q11 1435f0fb006bSJason A. Donenfeld vadd.i64 q8, q8, q7 1436f0fb006bSJason A. Donenfeld vshl.i64 q7, q7, #26 1437f0fb006bSJason A. Donenfeld vadd.i64 q15, q8, q3 1438f0fb006bSJason A. Donenfeld vsub.i64 q9, q9, q13 1439f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #26 1440f0fb006bSJason A. Donenfeld vsub.i64 q6, q6, q7 1441f0fb006bSJason A. Donenfeld vshr.s64 q7, q15, #25 1442f0fb006bSJason A. Donenfeld vadd.i64 q10, q10, q13 1443f0fb006bSJason A. Donenfeld vshl.i64 q13, q13, #26 1444f0fb006bSJason A. Donenfeld vadd.i64 q14, q10, q3 1445f0fb006bSJason A. Donenfeld vadd.i64 q1, q1, q7 1446f0fb006bSJason A. Donenfeld add r2, r3, #240 1447f0fb006bSJason A. Donenfeld vshl.i64 q7, q7, #25 1448f0fb006bSJason A. Donenfeld add r4, r3, #144 1449f0fb006bSJason A. Donenfeld vadd.i64 q15, q1, q11 1450f0fb006bSJason A. Donenfeld add r2, r2, #8 1451f0fb006bSJason A. Donenfeld vsub.i64 q2, q2, q13 1452f0fb006bSJason A. Donenfeld add r4, r4, #8 1453f0fb006bSJason A. Donenfeld vshr.s64 q13, q14, #25 1454f0fb006bSJason A. Donenfeld vsub.i64 q7, q8, q7 1455f0fb006bSJason A. Donenfeld vshr.s64 q8, q15, #26 1456f0fb006bSJason A. Donenfeld vadd.i64 q14, q13, q13 1457f0fb006bSJason A. Donenfeld vadd.i64 q12, q12, q8 1458f0fb006bSJason A. Donenfeld vtrn.32 d12, d14 1459f0fb006bSJason A. Donenfeld vshl.i64 q8, q8, #26 1460f0fb006bSJason A. Donenfeld vtrn.32 d13, d15 1461f0fb006bSJason A. Donenfeld vadd.i64 q3, q12, q3 1462f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q14 1463f0fb006bSJason A. Donenfeld vst1.8 d12, [r2, : 64]! 1464f0fb006bSJason A. Donenfeld vshl.i64 q7, q13, #4 1465f0fb006bSJason A. Donenfeld vst1.8 d13, [r4, : 64]! 1466f0fb006bSJason A. Donenfeld vsub.i64 q1, q1, q8 1467f0fb006bSJason A. Donenfeld vshr.s64 q3, q3, #25 1468f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q7 1469f0fb006bSJason A. Donenfeld vadd.i64 q5, q5, q3 1470f0fb006bSJason A. Donenfeld vshl.i64 q3, q3, #25 1471f0fb006bSJason A. Donenfeld vadd.i64 q6, q5, q11 1472f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q13 1473f0fb006bSJason A. Donenfeld vshl.i64 q7, q13, #25 1474f0fb006bSJason A. Donenfeld vadd.i64 q8, q0, q11 1475f0fb006bSJason A. Donenfeld vsub.i64 q3, q12, q3 1476f0fb006bSJason A. Donenfeld vshr.s64 q6, q6, #26 1477f0fb006bSJason A. Donenfeld vsub.i64 q7, q10, q7 1478f0fb006bSJason A. Donenfeld vtrn.32 d2, d6 1479f0fb006bSJason A. Donenfeld vshr.s64 q8, q8, #26 1480f0fb006bSJason A. Donenfeld vtrn.32 d3, d7 1481f0fb006bSJason A. Donenfeld vadd.i64 q3, q9, q6 1482f0fb006bSJason A. Donenfeld vst1.8 d2, [r2, : 64] 1483f0fb006bSJason A. Donenfeld vshl.i64 q6, q6, #26 1484f0fb006bSJason A. Donenfeld vst1.8 d3, [r4, : 64] 1485f0fb006bSJason A. Donenfeld vadd.i64 q1, q4, q8 1486f0fb006bSJason A. Donenfeld vtrn.32 d4, d14 1487f0fb006bSJason A. Donenfeld vshl.i64 q4, q8, #26 1488f0fb006bSJason A. Donenfeld vtrn.32 d5, d15 1489f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q6 1490f0fb006bSJason A. Donenfeld add r2, r2, #16 1491f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q4 1492f0fb006bSJason A. Donenfeld vst1.8 d4, [r2, : 64] 1493f0fb006bSJason A. Donenfeld add r4, r4, #16 1494f0fb006bSJason A. Donenfeld vst1.8 d5, [r4, : 64] 1495f0fb006bSJason A. Donenfeld vtrn.32 d10, d6 1496f0fb006bSJason A. Donenfeld vtrn.32 d11, d7 1497f0fb006bSJason A. Donenfeld sub r2, r2, #8 1498f0fb006bSJason A. Donenfeld sub r4, r4, #8 1499f0fb006bSJason A. Donenfeld vtrn.32 d0, d2 1500f0fb006bSJason A. Donenfeld vtrn.32 d1, d3 1501f0fb006bSJason A. Donenfeld vst1.8 d10, [r2, : 64] 1502f0fb006bSJason A. Donenfeld vst1.8 d11, [r4, : 64] 1503f0fb006bSJason A. Donenfeld sub r2, r2, #24 1504f0fb006bSJason A. Donenfeld sub r4, r4, #24 1505f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 1506f0fb006bSJason A. Donenfeld vst1.8 d1, [r4, : 64] 1507d8f1308aSJason A. Donenfeld ldr r2, [sp, #456] 1508d8f1308aSJason A. Donenfeld ldr r4, [sp, #460] 1509f0fb006bSJason A. Donenfeld subs r5, r2, #1 1510d8f1308aSJason A. Donenfeld bge .Lmainloop 1511f0fb006bSJason A. Donenfeld add r1, r3, #144 1512f0fb006bSJason A. Donenfeld add r2, r3, #336 1513f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r1, : 128]! 1514f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r1, : 128]! 1515f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r1, : 64] 1516f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r2, : 128]! 1517f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r2, : 128]! 1518f0fb006bSJason A. Donenfeld vst1.8 d4, [r2, : 64] 1519d8f1308aSJason A. Donenfeld movw r1, #0 1520d8f1308aSJason A. Donenfeld.Linvertloop: 1521f0fb006bSJason A. Donenfeld add r2, r3, #144 1522d8f1308aSJason A. Donenfeld movw r4, #0 1523d8f1308aSJason A. Donenfeld movw r5, #2 1524f0fb006bSJason A. Donenfeld cmp r1, #1 1525d8f1308aSJason A. Donenfeld moveq r5, #1 1526f0fb006bSJason A. Donenfeld addeq r2, r3, #336 1527f0fb006bSJason A. Donenfeld addeq r4, r3, #48 1528f0fb006bSJason A. Donenfeld cmp r1, #2 1529d8f1308aSJason A. Donenfeld moveq r5, #1 1530f0fb006bSJason A. Donenfeld addeq r2, r3, #48 1531f0fb006bSJason A. Donenfeld cmp r1, #3 1532d8f1308aSJason A. Donenfeld moveq r5, #5 1533f0fb006bSJason A. Donenfeld addeq r4, r3, #336 1534f0fb006bSJason A. Donenfeld cmp r1, #4 1535d8f1308aSJason A. Donenfeld moveq r5, #10 1536f0fb006bSJason A. Donenfeld cmp r1, #5 1537d8f1308aSJason A. Donenfeld moveq r5, #20 1538f0fb006bSJason A. Donenfeld cmp r1, #6 1539d8f1308aSJason A. Donenfeld moveq r5, #10 1540f0fb006bSJason A. Donenfeld addeq r2, r3, #336 1541f0fb006bSJason A. Donenfeld addeq r4, r3, #336 1542f0fb006bSJason A. Donenfeld cmp r1, #7 1543d8f1308aSJason A. Donenfeld moveq r5, #50 1544f0fb006bSJason A. Donenfeld cmp r1, #8 1545d8f1308aSJason A. Donenfeld moveq r5, #100 1546f0fb006bSJason A. Donenfeld cmp r1, #9 1547d8f1308aSJason A. Donenfeld moveq r5, #50 1548f0fb006bSJason A. Donenfeld addeq r2, r3, #336 1549f0fb006bSJason A. Donenfeld cmp r1, #10 1550d8f1308aSJason A. Donenfeld moveq r5, #5 1551f0fb006bSJason A. Donenfeld addeq r2, r3, #48 1552f0fb006bSJason A. Donenfeld cmp r1, #11 1553d8f1308aSJason A. Donenfeld moveq r5, #0 1554f0fb006bSJason A. Donenfeld addeq r2, r3, #96 1555f0fb006bSJason A. Donenfeld add r6, r3, #144 1556f0fb006bSJason A. Donenfeld add r7, r3, #288 1557f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r6, : 128]! 1558f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r6, : 128]! 1559f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r6, : 64] 1560f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r7, : 128]! 1561f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r7, : 128]! 1562f0fb006bSJason A. Donenfeld vst1.8 d4, [r7, : 64] 1563f0fb006bSJason A. Donenfeld cmp r5, #0 1564d8f1308aSJason A. Donenfeld beq .Lskipsquaringloop 1565d8f1308aSJason A. Donenfeld.Lsquaringloop: 1566f0fb006bSJason A. Donenfeld add r6, r3, #288 1567f0fb006bSJason A. Donenfeld add r7, r3, #288 1568f0fb006bSJason A. Donenfeld add r8, r3, #288 1569f0fb006bSJason A. Donenfeld vmov.i32 q0, #19 1570f0fb006bSJason A. Donenfeld vmov.i32 q1, #0 1571f0fb006bSJason A. Donenfeld vmov.i32 q2, #1 1572f0fb006bSJason A. Donenfeld vzip.i32 q1, q2 1573f0fb006bSJason A. Donenfeld vld1.8 {d4-d5}, [r7, : 128]! 1574f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r7, : 128]! 1575f0fb006bSJason A. Donenfeld vld1.8 {d9}, [r7, : 64] 1576f0fb006bSJason A. Donenfeld vld1.8 {d10-d11}, [r6, : 128]! 1577d8f1308aSJason A. Donenfeld add r7, sp, #384 1578f0fb006bSJason A. Donenfeld vld1.8 {d12-d13}, [r6, : 128]! 1579f0fb006bSJason A. Donenfeld vmul.i32 q7, q2, q0 1580f0fb006bSJason A. Donenfeld vld1.8 {d8}, [r6, : 64] 1581f0fb006bSJason A. Donenfeld vext.32 d17, d11, d10, #1 1582f0fb006bSJason A. Donenfeld vmul.i32 q9, q3, q0 1583f0fb006bSJason A. Donenfeld vext.32 d16, d10, d8, #1 1584f0fb006bSJason A. Donenfeld vshl.u32 q10, q5, q1 1585f0fb006bSJason A. Donenfeld vext.32 d22, d14, d4, #1 1586f0fb006bSJason A. Donenfeld vext.32 d24, d18, d6, #1 1587f0fb006bSJason A. Donenfeld vshl.u32 q13, q6, q1 1588f0fb006bSJason A. Donenfeld vshl.u32 d28, d8, d2 1589f0fb006bSJason A. Donenfeld vrev64.i32 d22, d22 1590f0fb006bSJason A. Donenfeld vmul.i32 d1, d9, d1 1591f0fb006bSJason A. Donenfeld vrev64.i32 d24, d24 1592f0fb006bSJason A. Donenfeld vext.32 d29, d8, d13, #1 1593f0fb006bSJason A. Donenfeld vext.32 d0, d1, d9, #1 1594f0fb006bSJason A. Donenfeld vrev64.i32 d0, d0 1595f0fb006bSJason A. Donenfeld vext.32 d2, d9, d1, #1 1596f0fb006bSJason A. Donenfeld vext.32 d23, d15, d5, #1 1597f0fb006bSJason A. Donenfeld vmull.s32 q4, d20, d4 1598f0fb006bSJason A. Donenfeld vrev64.i32 d23, d23 1599f0fb006bSJason A. Donenfeld vmlal.s32 q4, d21, d1 1600f0fb006bSJason A. Donenfeld vrev64.i32 d2, d2 1601f0fb006bSJason A. Donenfeld vmlal.s32 q4, d26, d19 1602f0fb006bSJason A. Donenfeld vext.32 d3, d5, d15, #1 1603f0fb006bSJason A. Donenfeld vmlal.s32 q4, d27, d18 1604f0fb006bSJason A. Donenfeld vrev64.i32 d3, d3 1605f0fb006bSJason A. Donenfeld vmlal.s32 q4, d28, d15 1606f0fb006bSJason A. Donenfeld vext.32 d14, d12, d11, #1 1607f0fb006bSJason A. Donenfeld vmull.s32 q5, d16, d23 1608f0fb006bSJason A. Donenfeld vext.32 d15, d13, d12, #1 1609f0fb006bSJason A. Donenfeld vmlal.s32 q5, d17, d4 1610f0fb006bSJason A. Donenfeld vst1.8 d8, [r7, : 64]! 1611f0fb006bSJason A. Donenfeld vmlal.s32 q5, d14, d1 1612f0fb006bSJason A. Donenfeld vext.32 d12, d9, d8, #0 1613f0fb006bSJason A. Donenfeld vmlal.s32 q5, d15, d19 1614f0fb006bSJason A. Donenfeld vmov.i64 d13, #0 1615f0fb006bSJason A. Donenfeld vmlal.s32 q5, d29, d18 1616f0fb006bSJason A. Donenfeld vext.32 d25, d19, d7, #1 1617f0fb006bSJason A. Donenfeld vmlal.s32 q6, d20, d5 1618f0fb006bSJason A. Donenfeld vrev64.i32 d25, d25 1619f0fb006bSJason A. Donenfeld vmlal.s32 q6, d21, d4 1620f0fb006bSJason A. Donenfeld vst1.8 d11, [r7, : 64]! 1621f0fb006bSJason A. Donenfeld vmlal.s32 q6, d26, d1 1622f0fb006bSJason A. Donenfeld vext.32 d9, d10, d10, #0 1623f0fb006bSJason A. Donenfeld vmlal.s32 q6, d27, d19 1624f0fb006bSJason A. Donenfeld vmov.i64 d8, #0 1625f0fb006bSJason A. Donenfeld vmlal.s32 q6, d28, d18 1626f0fb006bSJason A. Donenfeld vmlal.s32 q4, d16, d24 1627f0fb006bSJason A. Donenfeld vmlal.s32 q4, d17, d5 1628f0fb006bSJason A. Donenfeld vmlal.s32 q4, d14, d4 1629f0fb006bSJason A. Donenfeld vst1.8 d12, [r7, : 64]! 1630f0fb006bSJason A. Donenfeld vmlal.s32 q4, d15, d1 1631f0fb006bSJason A. Donenfeld vext.32 d10, d13, d12, #0 1632f0fb006bSJason A. Donenfeld vmlal.s32 q4, d29, d19 1633f0fb006bSJason A. Donenfeld vmov.i64 d11, #0 1634f0fb006bSJason A. Donenfeld vmlal.s32 q5, d20, d6 1635f0fb006bSJason A. Donenfeld vmlal.s32 q5, d21, d5 1636f0fb006bSJason A. Donenfeld vmlal.s32 q5, d26, d4 1637f0fb006bSJason A. Donenfeld vext.32 d13, d8, d8, #0 1638f0fb006bSJason A. Donenfeld vmlal.s32 q5, d27, d1 1639f0fb006bSJason A. Donenfeld vmov.i64 d12, #0 1640f0fb006bSJason A. Donenfeld vmlal.s32 q5, d28, d19 1641f0fb006bSJason A. Donenfeld vst1.8 d9, [r7, : 64]! 1642f0fb006bSJason A. Donenfeld vmlal.s32 q6, d16, d25 1643f0fb006bSJason A. Donenfeld vmlal.s32 q6, d17, d6 1644f0fb006bSJason A. Donenfeld vst1.8 d10, [r7, : 64] 1645f0fb006bSJason A. Donenfeld vmlal.s32 q6, d14, d5 1646f0fb006bSJason A. Donenfeld vext.32 d8, d11, d10, #0 1647f0fb006bSJason A. Donenfeld vmlal.s32 q6, d15, d4 1648f0fb006bSJason A. Donenfeld vmov.i64 d9, #0 1649f0fb006bSJason A. Donenfeld vmlal.s32 q6, d29, d1 1650f0fb006bSJason A. Donenfeld vmlal.s32 q4, d20, d7 1651f0fb006bSJason A. Donenfeld vmlal.s32 q4, d21, d6 1652f0fb006bSJason A. Donenfeld vmlal.s32 q4, d26, d5 1653f0fb006bSJason A. Donenfeld vext.32 d11, d12, d12, #0 1654f0fb006bSJason A. Donenfeld vmlal.s32 q4, d27, d4 1655f0fb006bSJason A. Donenfeld vmov.i64 d10, #0 1656f0fb006bSJason A. Donenfeld vmlal.s32 q4, d28, d1 1657f0fb006bSJason A. Donenfeld vmlal.s32 q5, d16, d0 1658f0fb006bSJason A. Donenfeld sub r6, r7, #32 1659f0fb006bSJason A. Donenfeld vmlal.s32 q5, d17, d7 1660f0fb006bSJason A. Donenfeld vmlal.s32 q5, d14, d6 1661f0fb006bSJason A. Donenfeld vext.32 d30, d9, d8, #0 1662f0fb006bSJason A. Donenfeld vmlal.s32 q5, d15, d5 1663f0fb006bSJason A. Donenfeld vld1.8 {d31}, [r6, : 64]! 1664f0fb006bSJason A. Donenfeld vmlal.s32 q5, d29, d4 1665f0fb006bSJason A. Donenfeld vmlal.s32 q15, d20, d0 1666f0fb006bSJason A. Donenfeld vext.32 d0, d6, d18, #1 1667f0fb006bSJason A. Donenfeld vmlal.s32 q15, d21, d25 1668f0fb006bSJason A. Donenfeld vrev64.i32 d0, d0 1669f0fb006bSJason A. Donenfeld vmlal.s32 q15, d26, d24 1670f0fb006bSJason A. Donenfeld vext.32 d1, d7, d19, #1 1671f0fb006bSJason A. Donenfeld vext.32 d7, d10, d10, #0 1672f0fb006bSJason A. Donenfeld vmlal.s32 q15, d27, d23 1673f0fb006bSJason A. Donenfeld vrev64.i32 d1, d1 1674f0fb006bSJason A. Donenfeld vld1.8 {d6}, [r6, : 64] 1675f0fb006bSJason A. Donenfeld vmlal.s32 q15, d28, d22 1676f0fb006bSJason A. Donenfeld vmlal.s32 q3, d16, d4 1677f0fb006bSJason A. Donenfeld add r6, r6, #24 1678f0fb006bSJason A. Donenfeld vmlal.s32 q3, d17, d2 1679f0fb006bSJason A. Donenfeld vext.32 d4, d31, d30, #0 1680f0fb006bSJason A. Donenfeld vmov d17, d11 1681f0fb006bSJason A. Donenfeld vmlal.s32 q3, d14, d1 1682f0fb006bSJason A. Donenfeld vext.32 d11, d13, d13, #0 1683f0fb006bSJason A. Donenfeld vext.32 d13, d30, d30, #0 1684f0fb006bSJason A. Donenfeld vmlal.s32 q3, d15, d0 1685f0fb006bSJason A. Donenfeld vext.32 d1, d8, d8, #0 1686f0fb006bSJason A. Donenfeld vmlal.s32 q3, d29, d3 1687f0fb006bSJason A. Donenfeld vld1.8 {d5}, [r6, : 64] 1688f0fb006bSJason A. Donenfeld sub r6, r6, #16 1689f0fb006bSJason A. Donenfeld vext.32 d10, d6, d6, #0 1690f0fb006bSJason A. Donenfeld vmov.i32 q1, #0xffffffff 1691f0fb006bSJason A. Donenfeld vshl.i64 q4, q1, #25 1692d8f1308aSJason A. Donenfeld add r7, sp, #480 1693f0fb006bSJason A. Donenfeld vld1.8 {d14-d15}, [r7, : 128] 1694f0fb006bSJason A. Donenfeld vadd.i64 q9, q2, q7 1695f0fb006bSJason A. Donenfeld vshl.i64 q1, q1, #26 1696f0fb006bSJason A. Donenfeld vshr.s64 q10, q9, #26 1697f0fb006bSJason A. Donenfeld vld1.8 {d0}, [r6, : 64]! 1698f0fb006bSJason A. Donenfeld vadd.i64 q5, q5, q10 1699f0fb006bSJason A. Donenfeld vand q9, q9, q1 1700f0fb006bSJason A. Donenfeld vld1.8 {d16}, [r6, : 64]! 1701d8f1308aSJason A. Donenfeld add r6, sp, #496 1702f0fb006bSJason A. Donenfeld vld1.8 {d20-d21}, [r6, : 128] 1703f0fb006bSJason A. Donenfeld vadd.i64 q11, q5, q10 1704f0fb006bSJason A. Donenfeld vsub.i64 q2, q2, q9 1705f0fb006bSJason A. Donenfeld vshr.s64 q9, q11, #25 1706f0fb006bSJason A. Donenfeld vext.32 d12, d5, d4, #0 1707f0fb006bSJason A. Donenfeld vand q11, q11, q4 1708f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q9 1709f0fb006bSJason A. Donenfeld vmov d19, d7 1710f0fb006bSJason A. Donenfeld vadd.i64 q3, q0, q7 1711f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q11 1712f0fb006bSJason A. Donenfeld vshr.s64 q11, q3, #26 1713f0fb006bSJason A. Donenfeld vext.32 d18, d11, d10, #0 1714f0fb006bSJason A. Donenfeld vand q3, q3, q1 1715f0fb006bSJason A. Donenfeld vadd.i64 q8, q8, q11 1716f0fb006bSJason A. Donenfeld vadd.i64 q11, q8, q10 1717f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q3 1718f0fb006bSJason A. Donenfeld vshr.s64 q3, q11, #25 1719f0fb006bSJason A. Donenfeld vand q11, q11, q4 1720f0fb006bSJason A. Donenfeld vadd.i64 q3, q6, q3 1721f0fb006bSJason A. Donenfeld vadd.i64 q6, q3, q7 1722f0fb006bSJason A. Donenfeld vsub.i64 q8, q8, q11 1723f0fb006bSJason A. Donenfeld vshr.s64 q11, q6, #26 1724f0fb006bSJason A. Donenfeld vand q6, q6, q1 1725f0fb006bSJason A. Donenfeld vadd.i64 q9, q9, q11 1726f0fb006bSJason A. Donenfeld vadd.i64 d25, d19, d21 1727f0fb006bSJason A. Donenfeld vsub.i64 q3, q3, q6 1728f0fb006bSJason A. Donenfeld vshr.s64 d23, d25, #25 1729f0fb006bSJason A. Donenfeld vand q4, q12, q4 1730f0fb006bSJason A. Donenfeld vadd.i64 d21, d23, d23 1731f0fb006bSJason A. Donenfeld vshl.i64 d25, d23, #4 1732f0fb006bSJason A. Donenfeld vadd.i64 d21, d21, d23 1733f0fb006bSJason A. Donenfeld vadd.i64 d25, d25, d21 1734f0fb006bSJason A. Donenfeld vadd.i64 d4, d4, d25 1735f0fb006bSJason A. Donenfeld vzip.i32 q0, q8 1736f0fb006bSJason A. Donenfeld vadd.i64 d12, d4, d14 1737f0fb006bSJason A. Donenfeld add r6, r8, #8 1738f0fb006bSJason A. Donenfeld vst1.8 d0, [r6, : 64] 1739f0fb006bSJason A. Donenfeld vsub.i64 d19, d19, d9 1740f0fb006bSJason A. Donenfeld add r6, r6, #16 1741f0fb006bSJason A. Donenfeld vst1.8 d16, [r6, : 64] 1742f0fb006bSJason A. Donenfeld vshr.s64 d22, d12, #26 1743f0fb006bSJason A. Donenfeld vand q0, q6, q1 1744f0fb006bSJason A. Donenfeld vadd.i64 d10, d10, d22 1745f0fb006bSJason A. Donenfeld vzip.i32 q3, q9 1746f0fb006bSJason A. Donenfeld vsub.i64 d4, d4, d0 1747f0fb006bSJason A. Donenfeld sub r6, r6, #8 1748f0fb006bSJason A. Donenfeld vst1.8 d6, [r6, : 64] 1749f0fb006bSJason A. Donenfeld add r6, r6, #16 1750f0fb006bSJason A. Donenfeld vst1.8 d18, [r6, : 64] 1751f0fb006bSJason A. Donenfeld vzip.i32 q2, q5 1752f0fb006bSJason A. Donenfeld sub r6, r6, #32 1753f0fb006bSJason A. Donenfeld vst1.8 d4, [r6, : 64] 1754f0fb006bSJason A. Donenfeld subs r5, r5, #1 1755d8f1308aSJason A. Donenfeld bhi .Lsquaringloop 1756d8f1308aSJason A. Donenfeld.Lskipsquaringloop: 1757f0fb006bSJason A. Donenfeld mov r2, r2 1758f0fb006bSJason A. Donenfeld add r5, r3, #288 1759f0fb006bSJason A. Donenfeld add r6, r3, #144 1760f0fb006bSJason A. Donenfeld vmov.i32 q0, #19 1761f0fb006bSJason A. Donenfeld vmov.i32 q1, #0 1762f0fb006bSJason A. Donenfeld vmov.i32 q2, #1 1763f0fb006bSJason A. Donenfeld vzip.i32 q1, q2 1764f0fb006bSJason A. Donenfeld vld1.8 {d4-d5}, [r5, : 128]! 1765f0fb006bSJason A. Donenfeld vld1.8 {d6-d7}, [r5, : 128]! 1766f0fb006bSJason A. Donenfeld vld1.8 {d9}, [r5, : 64] 1767f0fb006bSJason A. Donenfeld vld1.8 {d10-d11}, [r2, : 128]! 1768d8f1308aSJason A. Donenfeld add r5, sp, #384 1769f0fb006bSJason A. Donenfeld vld1.8 {d12-d13}, [r2, : 128]! 1770f0fb006bSJason A. Donenfeld vmul.i32 q7, q2, q0 1771f0fb006bSJason A. Donenfeld vld1.8 {d8}, [r2, : 64] 1772f0fb006bSJason A. Donenfeld vext.32 d17, d11, d10, #1 1773f0fb006bSJason A. Donenfeld vmul.i32 q9, q3, q0 1774f0fb006bSJason A. Donenfeld vext.32 d16, d10, d8, #1 1775f0fb006bSJason A. Donenfeld vshl.u32 q10, q5, q1 1776f0fb006bSJason A. Donenfeld vext.32 d22, d14, d4, #1 1777f0fb006bSJason A. Donenfeld vext.32 d24, d18, d6, #1 1778f0fb006bSJason A. Donenfeld vshl.u32 q13, q6, q1 1779f0fb006bSJason A. Donenfeld vshl.u32 d28, d8, d2 1780f0fb006bSJason A. Donenfeld vrev64.i32 d22, d22 1781f0fb006bSJason A. Donenfeld vmul.i32 d1, d9, d1 1782f0fb006bSJason A. Donenfeld vrev64.i32 d24, d24 1783f0fb006bSJason A. Donenfeld vext.32 d29, d8, d13, #1 1784f0fb006bSJason A. Donenfeld vext.32 d0, d1, d9, #1 1785f0fb006bSJason A. Donenfeld vrev64.i32 d0, d0 1786f0fb006bSJason A. Donenfeld vext.32 d2, d9, d1, #1 1787f0fb006bSJason A. Donenfeld vext.32 d23, d15, d5, #1 1788f0fb006bSJason A. Donenfeld vmull.s32 q4, d20, d4 1789f0fb006bSJason A. Donenfeld vrev64.i32 d23, d23 1790f0fb006bSJason A. Donenfeld vmlal.s32 q4, d21, d1 1791f0fb006bSJason A. Donenfeld vrev64.i32 d2, d2 1792f0fb006bSJason A. Donenfeld vmlal.s32 q4, d26, d19 1793f0fb006bSJason A. Donenfeld vext.32 d3, d5, d15, #1 1794f0fb006bSJason A. Donenfeld vmlal.s32 q4, d27, d18 1795f0fb006bSJason A. Donenfeld vrev64.i32 d3, d3 1796f0fb006bSJason A. Donenfeld vmlal.s32 q4, d28, d15 1797f0fb006bSJason A. Donenfeld vext.32 d14, d12, d11, #1 1798f0fb006bSJason A. Donenfeld vmull.s32 q5, d16, d23 1799f0fb006bSJason A. Donenfeld vext.32 d15, d13, d12, #1 1800f0fb006bSJason A. Donenfeld vmlal.s32 q5, d17, d4 1801f0fb006bSJason A. Donenfeld vst1.8 d8, [r5, : 64]! 1802f0fb006bSJason A. Donenfeld vmlal.s32 q5, d14, d1 1803f0fb006bSJason A. Donenfeld vext.32 d12, d9, d8, #0 1804f0fb006bSJason A. Donenfeld vmlal.s32 q5, d15, d19 1805f0fb006bSJason A. Donenfeld vmov.i64 d13, #0 1806f0fb006bSJason A. Donenfeld vmlal.s32 q5, d29, d18 1807f0fb006bSJason A. Donenfeld vext.32 d25, d19, d7, #1 1808f0fb006bSJason A. Donenfeld vmlal.s32 q6, d20, d5 1809f0fb006bSJason A. Donenfeld vrev64.i32 d25, d25 1810f0fb006bSJason A. Donenfeld vmlal.s32 q6, d21, d4 1811f0fb006bSJason A. Donenfeld vst1.8 d11, [r5, : 64]! 1812f0fb006bSJason A. Donenfeld vmlal.s32 q6, d26, d1 1813f0fb006bSJason A. Donenfeld vext.32 d9, d10, d10, #0 1814f0fb006bSJason A. Donenfeld vmlal.s32 q6, d27, d19 1815f0fb006bSJason A. Donenfeld vmov.i64 d8, #0 1816f0fb006bSJason A. Donenfeld vmlal.s32 q6, d28, d18 1817f0fb006bSJason A. Donenfeld vmlal.s32 q4, d16, d24 1818f0fb006bSJason A. Donenfeld vmlal.s32 q4, d17, d5 1819f0fb006bSJason A. Donenfeld vmlal.s32 q4, d14, d4 1820f0fb006bSJason A. Donenfeld vst1.8 d12, [r5, : 64]! 1821f0fb006bSJason A. Donenfeld vmlal.s32 q4, d15, d1 1822f0fb006bSJason A. Donenfeld vext.32 d10, d13, d12, #0 1823f0fb006bSJason A. Donenfeld vmlal.s32 q4, d29, d19 1824f0fb006bSJason A. Donenfeld vmov.i64 d11, #0 1825f0fb006bSJason A. Donenfeld vmlal.s32 q5, d20, d6 1826f0fb006bSJason A. Donenfeld vmlal.s32 q5, d21, d5 1827f0fb006bSJason A. Donenfeld vmlal.s32 q5, d26, d4 1828f0fb006bSJason A. Donenfeld vext.32 d13, d8, d8, #0 1829f0fb006bSJason A. Donenfeld vmlal.s32 q5, d27, d1 1830f0fb006bSJason A. Donenfeld vmov.i64 d12, #0 1831f0fb006bSJason A. Donenfeld vmlal.s32 q5, d28, d19 1832f0fb006bSJason A. Donenfeld vst1.8 d9, [r5, : 64]! 1833f0fb006bSJason A. Donenfeld vmlal.s32 q6, d16, d25 1834f0fb006bSJason A. Donenfeld vmlal.s32 q6, d17, d6 1835f0fb006bSJason A. Donenfeld vst1.8 d10, [r5, : 64] 1836f0fb006bSJason A. Donenfeld vmlal.s32 q6, d14, d5 1837f0fb006bSJason A. Donenfeld vext.32 d8, d11, d10, #0 1838f0fb006bSJason A. Donenfeld vmlal.s32 q6, d15, d4 1839f0fb006bSJason A. Donenfeld vmov.i64 d9, #0 1840f0fb006bSJason A. Donenfeld vmlal.s32 q6, d29, d1 1841f0fb006bSJason A. Donenfeld vmlal.s32 q4, d20, d7 1842f0fb006bSJason A. Donenfeld vmlal.s32 q4, d21, d6 1843f0fb006bSJason A. Donenfeld vmlal.s32 q4, d26, d5 1844f0fb006bSJason A. Donenfeld vext.32 d11, d12, d12, #0 1845f0fb006bSJason A. Donenfeld vmlal.s32 q4, d27, d4 1846f0fb006bSJason A. Donenfeld vmov.i64 d10, #0 1847f0fb006bSJason A. Donenfeld vmlal.s32 q4, d28, d1 1848f0fb006bSJason A. Donenfeld vmlal.s32 q5, d16, d0 1849f0fb006bSJason A. Donenfeld sub r2, r5, #32 1850f0fb006bSJason A. Donenfeld vmlal.s32 q5, d17, d7 1851f0fb006bSJason A. Donenfeld vmlal.s32 q5, d14, d6 1852f0fb006bSJason A. Donenfeld vext.32 d30, d9, d8, #0 1853f0fb006bSJason A. Donenfeld vmlal.s32 q5, d15, d5 1854f0fb006bSJason A. Donenfeld vld1.8 {d31}, [r2, : 64]! 1855f0fb006bSJason A. Donenfeld vmlal.s32 q5, d29, d4 1856f0fb006bSJason A. Donenfeld vmlal.s32 q15, d20, d0 1857f0fb006bSJason A. Donenfeld vext.32 d0, d6, d18, #1 1858f0fb006bSJason A. Donenfeld vmlal.s32 q15, d21, d25 1859f0fb006bSJason A. Donenfeld vrev64.i32 d0, d0 1860f0fb006bSJason A. Donenfeld vmlal.s32 q15, d26, d24 1861f0fb006bSJason A. Donenfeld vext.32 d1, d7, d19, #1 1862f0fb006bSJason A. Donenfeld vext.32 d7, d10, d10, #0 1863f0fb006bSJason A. Donenfeld vmlal.s32 q15, d27, d23 1864f0fb006bSJason A. Donenfeld vrev64.i32 d1, d1 1865f0fb006bSJason A. Donenfeld vld1.8 {d6}, [r2, : 64] 1866f0fb006bSJason A. Donenfeld vmlal.s32 q15, d28, d22 1867f0fb006bSJason A. Donenfeld vmlal.s32 q3, d16, d4 1868f0fb006bSJason A. Donenfeld add r2, r2, #24 1869f0fb006bSJason A. Donenfeld vmlal.s32 q3, d17, d2 1870f0fb006bSJason A. Donenfeld vext.32 d4, d31, d30, #0 1871f0fb006bSJason A. Donenfeld vmov d17, d11 1872f0fb006bSJason A. Donenfeld vmlal.s32 q3, d14, d1 1873f0fb006bSJason A. Donenfeld vext.32 d11, d13, d13, #0 1874f0fb006bSJason A. Donenfeld vext.32 d13, d30, d30, #0 1875f0fb006bSJason A. Donenfeld vmlal.s32 q3, d15, d0 1876f0fb006bSJason A. Donenfeld vext.32 d1, d8, d8, #0 1877f0fb006bSJason A. Donenfeld vmlal.s32 q3, d29, d3 1878f0fb006bSJason A. Donenfeld vld1.8 {d5}, [r2, : 64] 1879f0fb006bSJason A. Donenfeld sub r2, r2, #16 1880f0fb006bSJason A. Donenfeld vext.32 d10, d6, d6, #0 1881f0fb006bSJason A. Donenfeld vmov.i32 q1, #0xffffffff 1882f0fb006bSJason A. Donenfeld vshl.i64 q4, q1, #25 1883d8f1308aSJason A. Donenfeld add r5, sp, #480 1884f0fb006bSJason A. Donenfeld vld1.8 {d14-d15}, [r5, : 128] 1885f0fb006bSJason A. Donenfeld vadd.i64 q9, q2, q7 1886f0fb006bSJason A. Donenfeld vshl.i64 q1, q1, #26 1887f0fb006bSJason A. Donenfeld vshr.s64 q10, q9, #26 1888f0fb006bSJason A. Donenfeld vld1.8 {d0}, [r2, : 64]! 1889f0fb006bSJason A. Donenfeld vadd.i64 q5, q5, q10 1890f0fb006bSJason A. Donenfeld vand q9, q9, q1 1891f0fb006bSJason A. Donenfeld vld1.8 {d16}, [r2, : 64]! 1892d8f1308aSJason A. Donenfeld add r2, sp, #496 1893f0fb006bSJason A. Donenfeld vld1.8 {d20-d21}, [r2, : 128] 1894f0fb006bSJason A. Donenfeld vadd.i64 q11, q5, q10 1895f0fb006bSJason A. Donenfeld vsub.i64 q2, q2, q9 1896f0fb006bSJason A. Donenfeld vshr.s64 q9, q11, #25 1897f0fb006bSJason A. Donenfeld vext.32 d12, d5, d4, #0 1898f0fb006bSJason A. Donenfeld vand q11, q11, q4 1899f0fb006bSJason A. Donenfeld vadd.i64 q0, q0, q9 1900f0fb006bSJason A. Donenfeld vmov d19, d7 1901f0fb006bSJason A. Donenfeld vadd.i64 q3, q0, q7 1902f0fb006bSJason A. Donenfeld vsub.i64 q5, q5, q11 1903f0fb006bSJason A. Donenfeld vshr.s64 q11, q3, #26 1904f0fb006bSJason A. Donenfeld vext.32 d18, d11, d10, #0 1905f0fb006bSJason A. Donenfeld vand q3, q3, q1 1906f0fb006bSJason A. Donenfeld vadd.i64 q8, q8, q11 1907f0fb006bSJason A. Donenfeld vadd.i64 q11, q8, q10 1908f0fb006bSJason A. Donenfeld vsub.i64 q0, q0, q3 1909f0fb006bSJason A. Donenfeld vshr.s64 q3, q11, #25 1910f0fb006bSJason A. Donenfeld vand q11, q11, q4 1911f0fb006bSJason A. Donenfeld vadd.i64 q3, q6, q3 1912f0fb006bSJason A. Donenfeld vadd.i64 q6, q3, q7 1913f0fb006bSJason A. Donenfeld vsub.i64 q8, q8, q11 1914f0fb006bSJason A. Donenfeld vshr.s64 q11, q6, #26 1915f0fb006bSJason A. Donenfeld vand q6, q6, q1 1916f0fb006bSJason A. Donenfeld vadd.i64 q9, q9, q11 1917f0fb006bSJason A. Donenfeld vadd.i64 d25, d19, d21 1918f0fb006bSJason A. Donenfeld vsub.i64 q3, q3, q6 1919f0fb006bSJason A. Donenfeld vshr.s64 d23, d25, #25 1920f0fb006bSJason A. Donenfeld vand q4, q12, q4 1921f0fb006bSJason A. Donenfeld vadd.i64 d21, d23, d23 1922f0fb006bSJason A. Donenfeld vshl.i64 d25, d23, #4 1923f0fb006bSJason A. Donenfeld vadd.i64 d21, d21, d23 1924f0fb006bSJason A. Donenfeld vadd.i64 d25, d25, d21 1925f0fb006bSJason A. Donenfeld vadd.i64 d4, d4, d25 1926f0fb006bSJason A. Donenfeld vzip.i32 q0, q8 1927f0fb006bSJason A. Donenfeld vadd.i64 d12, d4, d14 1928f0fb006bSJason A. Donenfeld add r2, r6, #8 1929f0fb006bSJason A. Donenfeld vst1.8 d0, [r2, : 64] 1930f0fb006bSJason A. Donenfeld vsub.i64 d19, d19, d9 1931f0fb006bSJason A. Donenfeld add r2, r2, #16 1932f0fb006bSJason A. Donenfeld vst1.8 d16, [r2, : 64] 1933f0fb006bSJason A. Donenfeld vshr.s64 d22, d12, #26 1934f0fb006bSJason A. Donenfeld vand q0, q6, q1 1935f0fb006bSJason A. Donenfeld vadd.i64 d10, d10, d22 1936f0fb006bSJason A. Donenfeld vzip.i32 q3, q9 1937f0fb006bSJason A. Donenfeld vsub.i64 d4, d4, d0 1938f0fb006bSJason A. Donenfeld sub r2, r2, #8 1939f0fb006bSJason A. Donenfeld vst1.8 d6, [r2, : 64] 1940f0fb006bSJason A. Donenfeld add r2, r2, #16 1941f0fb006bSJason A. Donenfeld vst1.8 d18, [r2, : 64] 1942f0fb006bSJason A. Donenfeld vzip.i32 q2, q5 1943f0fb006bSJason A. Donenfeld sub r2, r2, #32 1944f0fb006bSJason A. Donenfeld vst1.8 d4, [r2, : 64] 1945f0fb006bSJason A. Donenfeld cmp r4, #0 1946d8f1308aSJason A. Donenfeld beq .Lskippostcopy 1947f0fb006bSJason A. Donenfeld add r2, r3, #144 1948f0fb006bSJason A. Donenfeld mov r4, r4 1949f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r2, : 128]! 1950f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r2, : 128]! 1951f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r2, : 64] 1952f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r4, : 128]! 1953f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r4, : 128]! 1954f0fb006bSJason A. Donenfeld vst1.8 d4, [r4, : 64] 1955d8f1308aSJason A. Donenfeld.Lskippostcopy: 1956f0fb006bSJason A. Donenfeld cmp r1, #1 1957d8f1308aSJason A. Donenfeld bne .Lskipfinalcopy 1958f0fb006bSJason A. Donenfeld add r2, r3, #288 1959f0fb006bSJason A. Donenfeld add r4, r3, #144 1960f0fb006bSJason A. Donenfeld vld1.8 {d0-d1}, [r2, : 128]! 1961f0fb006bSJason A. Donenfeld vld1.8 {d2-d3}, [r2, : 128]! 1962f0fb006bSJason A. Donenfeld vld1.8 {d4}, [r2, : 64] 1963f0fb006bSJason A. Donenfeld vst1.8 {d0-d1}, [r4, : 128]! 1964f0fb006bSJason A. Donenfeld vst1.8 {d2-d3}, [r4, : 128]! 1965f0fb006bSJason A. Donenfeld vst1.8 d4, [r4, : 64] 1966d8f1308aSJason A. Donenfeld.Lskipfinalcopy: 1967f0fb006bSJason A. Donenfeld add r1, r1, #1 1968f0fb006bSJason A. Donenfeld cmp r1, #12 1969d8f1308aSJason A. Donenfeld blo .Linvertloop 1970f0fb006bSJason A. Donenfeld add r1, r3, #144 1971f0fb006bSJason A. Donenfeld ldr r2, [r1], #4 1972f0fb006bSJason A. Donenfeld ldr r3, [r1], #4 1973f0fb006bSJason A. Donenfeld ldr r4, [r1], #4 1974f0fb006bSJason A. Donenfeld ldr r5, [r1], #4 1975f0fb006bSJason A. Donenfeld ldr r6, [r1], #4 1976f0fb006bSJason A. Donenfeld ldr r7, [r1], #4 1977f0fb006bSJason A. Donenfeld ldr r8, [r1], #4 1978f0fb006bSJason A. Donenfeld ldr r9, [r1], #4 1979f0fb006bSJason A. Donenfeld ldr r10, [r1], #4 1980f0fb006bSJason A. Donenfeld ldr r1, [r1] 1981f0fb006bSJason A. Donenfeld add r11, r1, r1, LSL #4 1982f0fb006bSJason A. Donenfeld add r11, r11, r1, LSL #1 1983f0fb006bSJason A. Donenfeld add r11, r11, #16777216 1984f0fb006bSJason A. Donenfeld mov r11, r11, ASR #25 1985f0fb006bSJason A. Donenfeld add r11, r11, r2 1986f0fb006bSJason A. Donenfeld mov r11, r11, ASR #26 1987f0fb006bSJason A. Donenfeld add r11, r11, r3 1988f0fb006bSJason A. Donenfeld mov r11, r11, ASR #25 1989f0fb006bSJason A. Donenfeld add r11, r11, r4 1990f0fb006bSJason A. Donenfeld mov r11, r11, ASR #26 1991f0fb006bSJason A. Donenfeld add r11, r11, r5 1992f0fb006bSJason A. Donenfeld mov r11, r11, ASR #25 1993f0fb006bSJason A. Donenfeld add r11, r11, r6 1994f0fb006bSJason A. Donenfeld mov r11, r11, ASR #26 1995f0fb006bSJason A. Donenfeld add r11, r11, r7 1996f0fb006bSJason A. Donenfeld mov r11, r11, ASR #25 1997f0fb006bSJason A. Donenfeld add r11, r11, r8 1998f0fb006bSJason A. Donenfeld mov r11, r11, ASR #26 1999f0fb006bSJason A. Donenfeld add r11, r11, r9 2000f0fb006bSJason A. Donenfeld mov r11, r11, ASR #25 2001f0fb006bSJason A. Donenfeld add r11, r11, r10 2002f0fb006bSJason A. Donenfeld mov r11, r11, ASR #26 2003f0fb006bSJason A. Donenfeld add r11, r11, r1 2004f0fb006bSJason A. Donenfeld mov r11, r11, ASR #25 2005f0fb006bSJason A. Donenfeld add r2, r2, r11 2006f0fb006bSJason A. Donenfeld add r2, r2, r11, LSL #1 2007f0fb006bSJason A. Donenfeld add r2, r2, r11, LSL #4 2008f0fb006bSJason A. Donenfeld mov r11, r2, ASR #26 2009f0fb006bSJason A. Donenfeld add r3, r3, r11 2010f0fb006bSJason A. Donenfeld sub r2, r2, r11, LSL #26 2011f0fb006bSJason A. Donenfeld mov r11, r3, ASR #25 2012f0fb006bSJason A. Donenfeld add r4, r4, r11 2013f0fb006bSJason A. Donenfeld sub r3, r3, r11, LSL #25 2014f0fb006bSJason A. Donenfeld mov r11, r4, ASR #26 2015f0fb006bSJason A. Donenfeld add r5, r5, r11 2016f0fb006bSJason A. Donenfeld sub r4, r4, r11, LSL #26 2017f0fb006bSJason A. Donenfeld mov r11, r5, ASR #25 2018f0fb006bSJason A. Donenfeld add r6, r6, r11 2019f0fb006bSJason A. Donenfeld sub r5, r5, r11, LSL #25 2020f0fb006bSJason A. Donenfeld mov r11, r6, ASR #26 2021f0fb006bSJason A. Donenfeld add r7, r7, r11 2022f0fb006bSJason A. Donenfeld sub r6, r6, r11, LSL #26 2023f0fb006bSJason A. Donenfeld mov r11, r7, ASR #25 2024f0fb006bSJason A. Donenfeld add r8, r8, r11 2025f0fb006bSJason A. Donenfeld sub r7, r7, r11, LSL #25 2026f0fb006bSJason A. Donenfeld mov r11, r8, ASR #26 2027f0fb006bSJason A. Donenfeld add r9, r9, r11 2028f0fb006bSJason A. Donenfeld sub r8, r8, r11, LSL #26 2029f0fb006bSJason A. Donenfeld mov r11, r9, ASR #25 2030f0fb006bSJason A. Donenfeld add r10, r10, r11 2031f0fb006bSJason A. Donenfeld sub r9, r9, r11, LSL #25 2032f0fb006bSJason A. Donenfeld mov r11, r10, ASR #26 2033f0fb006bSJason A. Donenfeld add r1, r1, r11 2034f0fb006bSJason A. Donenfeld sub r10, r10, r11, LSL #26 2035f0fb006bSJason A. Donenfeld mov r11, r1, ASR #25 2036f0fb006bSJason A. Donenfeld sub r1, r1, r11, LSL #25 2037f0fb006bSJason A. Donenfeld add r2, r2, r3, LSL #26 2038f0fb006bSJason A. Donenfeld mov r3, r3, LSR #6 2039f0fb006bSJason A. Donenfeld add r3, r3, r4, LSL #19 2040f0fb006bSJason A. Donenfeld mov r4, r4, LSR #13 2041f0fb006bSJason A. Donenfeld add r4, r4, r5, LSL #13 2042f0fb006bSJason A. Donenfeld mov r5, r5, LSR #19 2043f0fb006bSJason A. Donenfeld add r5, r5, r6, LSL #6 2044f0fb006bSJason A. Donenfeld add r6, r7, r8, LSL #25 2045f0fb006bSJason A. Donenfeld mov r7, r8, LSR #7 2046f0fb006bSJason A. Donenfeld add r7, r7, r9, LSL #19 2047f0fb006bSJason A. Donenfeld mov r8, r9, LSR #13 2048f0fb006bSJason A. Donenfeld add r8, r8, r10, LSL #12 2049f0fb006bSJason A. Donenfeld mov r9, r10, LSR #20 2050f0fb006bSJason A. Donenfeld add r1, r9, r1, LSL #6 2051d8f1308aSJason A. Donenfeld str r2, [r0] 2052d8f1308aSJason A. Donenfeld str r3, [r0, #4] 2053d8f1308aSJason A. Donenfeld str r4, [r0, #8] 2054d8f1308aSJason A. Donenfeld str r5, [r0, #12] 2055d8f1308aSJason A. Donenfeld str r6, [r0, #16] 2056d8f1308aSJason A. Donenfeld str r7, [r0, #20] 2057d8f1308aSJason A. Donenfeld str r8, [r0, #24] 2058d8f1308aSJason A. Donenfeld str r1, [r0, #28] 2059d8f1308aSJason A. Donenfeld movw r0, #0 2060d8f1308aSJason A. Donenfeld mov sp, ip 2061d8f1308aSJason A. Donenfeld pop {r4-r11, pc} 2062d8f1308aSJason A. DonenfeldENDPROC(curve25519_neon) 2063