1*8fb009dcSAndroid Build Coastguard Worker// This file is generated from a similarly-named Perl script in the BoringSSL 2*8fb009dcSAndroid Build Coastguard Worker// source tree. Do not edit by hand. 3*8fb009dcSAndroid Build Coastguard Worker 4*8fb009dcSAndroid Build Coastguard Worker#include <openssl/asm_base.h> 5*8fb009dcSAndroid Build Coastguard Worker 6*8fb009dcSAndroid Build Coastguard Worker#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) && defined(__ELF__) 7*8fb009dcSAndroid Build Coastguard Worker@ Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. 8*8fb009dcSAndroid Build Coastguard Worker@ 9*8fb009dcSAndroid Build Coastguard Worker@ Licensed under the OpenSSL license (the "License"). You may not use 10*8fb009dcSAndroid Build Coastguard Worker@ this file except in compliance with the License. You can obtain a copy 11*8fb009dcSAndroid Build Coastguard Worker@ in the file LICENSE in the source distribution or at 12*8fb009dcSAndroid Build Coastguard Worker@ https://www.openssl.org/source/license.html 13*8fb009dcSAndroid Build Coastguard Worker 14*8fb009dcSAndroid Build Coastguard Worker 15*8fb009dcSAndroid Build Coastguard Worker@ ==================================================================== 16*8fb009dcSAndroid Build Coastguard Worker@ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL 17*8fb009dcSAndroid Build Coastguard Worker@ project. The module is, however, dual licensed under OpenSSL and 18*8fb009dcSAndroid Build Coastguard Worker@ CRYPTOGAMS licenses depending on where you obtain it. For further 19*8fb009dcSAndroid Build Coastguard Worker@ details see http://www.openssl.org/~appro/cryptogams/. 20*8fb009dcSAndroid Build Coastguard Worker@ 21*8fb009dcSAndroid Build Coastguard Worker@ Permission to use under GPL terms is granted. 22*8fb009dcSAndroid Build Coastguard Worker@ ==================================================================== 23*8fb009dcSAndroid Build Coastguard Worker 24*8fb009dcSAndroid Build Coastguard Worker@ SHA256 block procedure for ARMv4. May 2007. 25*8fb009dcSAndroid Build Coastguard Worker 26*8fb009dcSAndroid Build Coastguard Worker@ Performance is ~2x better than gcc 3.4 generated code and in "abso- 27*8fb009dcSAndroid Build Coastguard Worker@ lute" terms is ~2250 cycles per 64-byte block or ~35 cycles per 28*8fb009dcSAndroid Build Coastguard Worker@ byte [on single-issue Xscale PXA250 core]. 29*8fb009dcSAndroid Build Coastguard Worker 30*8fb009dcSAndroid Build Coastguard Worker@ July 2010. 31*8fb009dcSAndroid Build Coastguard Worker@ 32*8fb009dcSAndroid Build Coastguard Worker@ Rescheduling for dual-issue pipeline resulted in 22% improvement on 33*8fb009dcSAndroid Build Coastguard Worker@ Cortex A8 core and ~20 cycles per processed byte. 34*8fb009dcSAndroid Build Coastguard Worker 35*8fb009dcSAndroid Build Coastguard Worker@ February 2011. 36*8fb009dcSAndroid Build Coastguard Worker@ 37*8fb009dcSAndroid Build Coastguard Worker@ Profiler-assisted and platform-specific optimization resulted in 16% 38*8fb009dcSAndroid Build Coastguard Worker@ improvement on Cortex A8 core and ~15.4 cycles per processed byte. 39*8fb009dcSAndroid Build Coastguard Worker 40*8fb009dcSAndroid Build Coastguard Worker@ September 2013. 41*8fb009dcSAndroid Build Coastguard Worker@ 42*8fb009dcSAndroid Build Coastguard Worker@ Add NEON implementation. On Cortex A8 it was measured to process one 43*8fb009dcSAndroid Build Coastguard Worker@ byte in 12.5 cycles or 23% faster than integer-only code. Snapdragon 44*8fb009dcSAndroid Build Coastguard Worker@ S4 does it in 12.5 cycles too, but it's 50% faster than integer-only 45*8fb009dcSAndroid Build Coastguard Worker@ code (meaning that latter performs sub-optimally, nothing was done 46*8fb009dcSAndroid Build Coastguard Worker@ about it). 47*8fb009dcSAndroid Build Coastguard Worker 48*8fb009dcSAndroid Build Coastguard Worker@ May 2014. 49*8fb009dcSAndroid Build Coastguard Worker@ 50*8fb009dcSAndroid Build Coastguard Worker@ Add ARMv8 code path performing at 2.0 cpb on Apple A7. 51*8fb009dcSAndroid Build Coastguard Worker 52*8fb009dcSAndroid Build Coastguard Worker#ifndef __KERNEL__ 53*8fb009dcSAndroid Build Coastguard Worker# include <openssl/arm_arch.h> 54*8fb009dcSAndroid Build Coastguard Worker#else 55*8fb009dcSAndroid Build Coastguard Worker# define __ARM_ARCH __LINUX_ARM_ARCH__ 56*8fb009dcSAndroid Build Coastguard Worker# define __ARM_MAX_ARCH__ 7 57*8fb009dcSAndroid Build Coastguard Worker#endif 58*8fb009dcSAndroid Build Coastguard Worker 59*8fb009dcSAndroid Build Coastguard Worker@ Silence ARMv8 deprecated IT instruction warnings. This file is used by both 60*8fb009dcSAndroid Build Coastguard Worker@ ARMv7 and ARMv8 processors. It does have ARMv8-only code, but those 61*8fb009dcSAndroid Build Coastguard Worker@ instructions are manually-encoded. (See unsha256.) 62*8fb009dcSAndroid Build Coastguard Worker.arch armv7-a 63*8fb009dcSAndroid Build Coastguard Worker 64*8fb009dcSAndroid Build Coastguard Worker.text 65*8fb009dcSAndroid Build Coastguard Worker#if defined(__thumb2__) 66*8fb009dcSAndroid Build Coastguard Worker.syntax unified 67*8fb009dcSAndroid Build Coastguard Worker.thumb 68*8fb009dcSAndroid Build Coastguard Worker#else 69*8fb009dcSAndroid Build Coastguard Worker.code 32 70*8fb009dcSAndroid Build Coastguard Worker#endif 71*8fb009dcSAndroid Build Coastguard Worker 72*8fb009dcSAndroid Build Coastguard Worker.type K256,%object 73*8fb009dcSAndroid Build Coastguard Worker.align 5 74*8fb009dcSAndroid Build Coastguard WorkerK256: 75*8fb009dcSAndroid Build Coastguard Worker.word 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 76*8fb009dcSAndroid Build Coastguard Worker.word 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 77*8fb009dcSAndroid Build Coastguard Worker.word 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 78*8fb009dcSAndroid Build Coastguard Worker.word 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 79*8fb009dcSAndroid Build Coastguard Worker.word 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc 80*8fb009dcSAndroid Build Coastguard Worker.word 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da 81*8fb009dcSAndroid Build Coastguard Worker.word 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 82*8fb009dcSAndroid Build Coastguard Worker.word 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 83*8fb009dcSAndroid Build Coastguard Worker.word 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 84*8fb009dcSAndroid Build Coastguard Worker.word 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 85*8fb009dcSAndroid Build Coastguard Worker.word 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 86*8fb009dcSAndroid Build Coastguard Worker.word 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 87*8fb009dcSAndroid Build Coastguard Worker.word 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 88*8fb009dcSAndroid Build Coastguard Worker.word 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 89*8fb009dcSAndroid Build Coastguard Worker.word 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 90*8fb009dcSAndroid Build Coastguard Worker.word 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 91*8fb009dcSAndroid Build Coastguard Worker.size K256,.-K256 92*8fb009dcSAndroid Build Coastguard Worker.word 0 @ terminator 93*8fb009dcSAndroid Build Coastguard Worker.align 5 94*8fb009dcSAndroid Build Coastguard Worker 95*8fb009dcSAndroid Build Coastguard Worker.globl sha256_block_data_order_nohw 96*8fb009dcSAndroid Build Coastguard Worker.hidden sha256_block_data_order_nohw 97*8fb009dcSAndroid Build Coastguard Worker.type sha256_block_data_order_nohw,%function 98*8fb009dcSAndroid Build Coastguard Workersha256_block_data_order_nohw: 99*8fb009dcSAndroid Build Coastguard Worker add r2,r1,r2,lsl#6 @ len to point at the end of inp 100*8fb009dcSAndroid Build Coastguard Worker stmdb sp!,{r0,r1,r2,r4-r11,lr} 101*8fb009dcSAndroid Build Coastguard Worker ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11} 102*8fb009dcSAndroid Build Coastguard Worker adr r14,K256 103*8fb009dcSAndroid Build Coastguard Worker sub sp,sp,#16*4 @ alloca(X[16]) 104*8fb009dcSAndroid Build Coastguard Worker.Loop: 105*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 106*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 107*8fb009dcSAndroid Build Coastguard Worker# else 108*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 109*8fb009dcSAndroid Build Coastguard Worker# endif 110*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ magic 111*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r12 112*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 113*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 0 114*8fb009dcSAndroid Build Coastguard Worker# if 0==15 115*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 116*8fb009dcSAndroid Build Coastguard Worker# endif 117*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 118*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 @ h+=Maj(a,b,c) from the past 119*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#19 @ Sigma1(e) 120*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 121*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 122*8fb009dcSAndroid Build Coastguard Worker# endif 123*8fb009dcSAndroid Build Coastguard Worker#else 124*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 0 125*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 @ h+=Maj(a,b,c) from the past 126*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1,#2] 127*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 128*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#8 129*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1],#4 130*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 131*8fb009dcSAndroid Build Coastguard Worker# if 0==15 132*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 133*8fb009dcSAndroid Build Coastguard Worker# endif 134*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 135*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#24 136*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#19 @ Sigma1(e) 137*8fb009dcSAndroid Build Coastguard Worker#endif 138*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 139*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 @ h+=X[i] 140*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#0*4] 141*8fb009dcSAndroid Build Coastguard Worker eor r2,r9,r10 142*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#6 @ h+=Sigma1(e) 143*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r8 144*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r12 @ h+=K256[i] 145*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r10 @ Ch(e,f,g) 146*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#11 147*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 @ h+=Ch(e,f,g) 148*8fb009dcSAndroid Build Coastguard Worker#if 0==31 149*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 150*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 151*8fb009dcSAndroid Build Coastguard Worker#endif 152*8fb009dcSAndroid Build Coastguard Worker#if 0<15 153*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 154*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 155*8fb009dcSAndroid Build Coastguard Worker# else 156*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 157*8fb009dcSAndroid Build Coastguard Worker# endif 158*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 @ a^b, b^c in next round 159*8fb009dcSAndroid Build Coastguard Worker#else 160*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#2*4] @ from future BODY_16_xx 161*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 @ a^b, b^c in next round 162*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#15*4] @ from future BODY_16_xx 163*8fb009dcSAndroid Build Coastguard Worker#endif 164*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#20 @ Sigma0(a) 165*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 166*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r11 @ d+=h 167*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r5 @ Maj(a,b,c) 168*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#2 @ h+=Sigma0(a) 169*8fb009dcSAndroid Build Coastguard Worker @ add r11,r11,r3 @ h+=Maj(a,b,c) 170*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 171*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 1 172*8fb009dcSAndroid Build Coastguard Worker# if 1==15 173*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 174*8fb009dcSAndroid Build Coastguard Worker# endif 175*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 176*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 @ h+=Maj(a,b,c) from the past 177*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#19 @ Sigma1(e) 178*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 179*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 180*8fb009dcSAndroid Build Coastguard Worker# endif 181*8fb009dcSAndroid Build Coastguard Worker#else 182*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 1 183*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 @ h+=Maj(a,b,c) from the past 184*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1,#2] 185*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 186*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#8 187*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1],#4 188*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 189*8fb009dcSAndroid Build Coastguard Worker# if 1==15 190*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 191*8fb009dcSAndroid Build Coastguard Worker# endif 192*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 193*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#24 194*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#19 @ Sigma1(e) 195*8fb009dcSAndroid Build Coastguard Worker#endif 196*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 197*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 @ h+=X[i] 198*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#1*4] 199*8fb009dcSAndroid Build Coastguard Worker eor r2,r8,r9 200*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#6 @ h+=Sigma1(e) 201*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r7 202*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3 @ h+=K256[i] 203*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r9 @ Ch(e,f,g) 204*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#11 205*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 @ h+=Ch(e,f,g) 206*8fb009dcSAndroid Build Coastguard Worker#if 1==31 207*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 208*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 209*8fb009dcSAndroid Build Coastguard Worker#endif 210*8fb009dcSAndroid Build Coastguard Worker#if 1<15 211*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 212*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 213*8fb009dcSAndroid Build Coastguard Worker# else 214*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 215*8fb009dcSAndroid Build Coastguard Worker# endif 216*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 @ a^b, b^c in next round 217*8fb009dcSAndroid Build Coastguard Worker#else 218*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#3*4] @ from future BODY_16_xx 219*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 @ a^b, b^c in next round 220*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#0*4] @ from future BODY_16_xx 221*8fb009dcSAndroid Build Coastguard Worker#endif 222*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#20 @ Sigma0(a) 223*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 224*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r10 @ d+=h 225*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r4 @ Maj(a,b,c) 226*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#2 @ h+=Sigma0(a) 227*8fb009dcSAndroid Build Coastguard Worker @ add r10,r10,r12 @ h+=Maj(a,b,c) 228*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 229*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 2 230*8fb009dcSAndroid Build Coastguard Worker# if 2==15 231*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 232*8fb009dcSAndroid Build Coastguard Worker# endif 233*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 234*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 @ h+=Maj(a,b,c) from the past 235*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#19 @ Sigma1(e) 236*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 237*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 238*8fb009dcSAndroid Build Coastguard Worker# endif 239*8fb009dcSAndroid Build Coastguard Worker#else 240*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 2 241*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 @ h+=Maj(a,b,c) from the past 242*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1,#2] 243*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 244*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#8 245*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1],#4 246*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 247*8fb009dcSAndroid Build Coastguard Worker# if 2==15 248*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 249*8fb009dcSAndroid Build Coastguard Worker# endif 250*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 251*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#24 252*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#19 @ Sigma1(e) 253*8fb009dcSAndroid Build Coastguard Worker#endif 254*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 255*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 @ h+=X[i] 256*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#2*4] 257*8fb009dcSAndroid Build Coastguard Worker eor r2,r7,r8 258*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#6 @ h+=Sigma1(e) 259*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r6 260*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12 @ h+=K256[i] 261*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r8 @ Ch(e,f,g) 262*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#11 263*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 @ h+=Ch(e,f,g) 264*8fb009dcSAndroid Build Coastguard Worker#if 2==31 265*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 266*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 267*8fb009dcSAndroid Build Coastguard Worker#endif 268*8fb009dcSAndroid Build Coastguard Worker#if 2<15 269*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 270*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 271*8fb009dcSAndroid Build Coastguard Worker# else 272*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 273*8fb009dcSAndroid Build Coastguard Worker# endif 274*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 @ a^b, b^c in next round 275*8fb009dcSAndroid Build Coastguard Worker#else 276*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#4*4] @ from future BODY_16_xx 277*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 @ a^b, b^c in next round 278*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#1*4] @ from future BODY_16_xx 279*8fb009dcSAndroid Build Coastguard Worker#endif 280*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#20 @ Sigma0(a) 281*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 282*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r9 @ d+=h 283*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r11 @ Maj(a,b,c) 284*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#2 @ h+=Sigma0(a) 285*8fb009dcSAndroid Build Coastguard Worker @ add r9,r9,r3 @ h+=Maj(a,b,c) 286*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 287*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 3 288*8fb009dcSAndroid Build Coastguard Worker# if 3==15 289*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 290*8fb009dcSAndroid Build Coastguard Worker# endif 291*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 292*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 @ h+=Maj(a,b,c) from the past 293*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#19 @ Sigma1(e) 294*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 295*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 296*8fb009dcSAndroid Build Coastguard Worker# endif 297*8fb009dcSAndroid Build Coastguard Worker#else 298*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 3 299*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 @ h+=Maj(a,b,c) from the past 300*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1,#2] 301*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 302*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#8 303*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1],#4 304*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 305*8fb009dcSAndroid Build Coastguard Worker# if 3==15 306*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 307*8fb009dcSAndroid Build Coastguard Worker# endif 308*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 309*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#24 310*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#19 @ Sigma1(e) 311*8fb009dcSAndroid Build Coastguard Worker#endif 312*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 313*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 @ h+=X[i] 314*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#3*4] 315*8fb009dcSAndroid Build Coastguard Worker eor r2,r6,r7 316*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#6 @ h+=Sigma1(e) 317*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r5 318*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r3 @ h+=K256[i] 319*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r7 @ Ch(e,f,g) 320*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#11 321*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 @ h+=Ch(e,f,g) 322*8fb009dcSAndroid Build Coastguard Worker#if 3==31 323*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 324*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 325*8fb009dcSAndroid Build Coastguard Worker#endif 326*8fb009dcSAndroid Build Coastguard Worker#if 3<15 327*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 328*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 329*8fb009dcSAndroid Build Coastguard Worker# else 330*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 331*8fb009dcSAndroid Build Coastguard Worker# endif 332*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 @ a^b, b^c in next round 333*8fb009dcSAndroid Build Coastguard Worker#else 334*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#5*4] @ from future BODY_16_xx 335*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 @ a^b, b^c in next round 336*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#2*4] @ from future BODY_16_xx 337*8fb009dcSAndroid Build Coastguard Worker#endif 338*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#20 @ Sigma0(a) 339*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 340*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r8 @ d+=h 341*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r10 @ Maj(a,b,c) 342*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#2 @ h+=Sigma0(a) 343*8fb009dcSAndroid Build Coastguard Worker @ add r8,r8,r12 @ h+=Maj(a,b,c) 344*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 345*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 4 346*8fb009dcSAndroid Build Coastguard Worker# if 4==15 347*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 348*8fb009dcSAndroid Build Coastguard Worker# endif 349*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 350*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 @ h+=Maj(a,b,c) from the past 351*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#19 @ Sigma1(e) 352*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 353*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 354*8fb009dcSAndroid Build Coastguard Worker# endif 355*8fb009dcSAndroid Build Coastguard Worker#else 356*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 4 357*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 @ h+=Maj(a,b,c) from the past 358*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1,#2] 359*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 360*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#8 361*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1],#4 362*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 363*8fb009dcSAndroid Build Coastguard Worker# if 4==15 364*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 365*8fb009dcSAndroid Build Coastguard Worker# endif 366*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 367*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#24 368*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#19 @ Sigma1(e) 369*8fb009dcSAndroid Build Coastguard Worker#endif 370*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 371*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 @ h+=X[i] 372*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#4*4] 373*8fb009dcSAndroid Build Coastguard Worker eor r2,r5,r6 374*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#6 @ h+=Sigma1(e) 375*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r4 376*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r12 @ h+=K256[i] 377*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r6 @ Ch(e,f,g) 378*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#11 379*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 @ h+=Ch(e,f,g) 380*8fb009dcSAndroid Build Coastguard Worker#if 4==31 381*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 382*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 383*8fb009dcSAndroid Build Coastguard Worker#endif 384*8fb009dcSAndroid Build Coastguard Worker#if 4<15 385*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 386*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 387*8fb009dcSAndroid Build Coastguard Worker# else 388*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 389*8fb009dcSAndroid Build Coastguard Worker# endif 390*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 @ a^b, b^c in next round 391*8fb009dcSAndroid Build Coastguard Worker#else 392*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#6*4] @ from future BODY_16_xx 393*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 @ a^b, b^c in next round 394*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#3*4] @ from future BODY_16_xx 395*8fb009dcSAndroid Build Coastguard Worker#endif 396*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#20 @ Sigma0(a) 397*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 398*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r7 @ d+=h 399*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r9 @ Maj(a,b,c) 400*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#2 @ h+=Sigma0(a) 401*8fb009dcSAndroid Build Coastguard Worker @ add r7,r7,r3 @ h+=Maj(a,b,c) 402*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 403*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 5 404*8fb009dcSAndroid Build Coastguard Worker# if 5==15 405*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 406*8fb009dcSAndroid Build Coastguard Worker# endif 407*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 408*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 @ h+=Maj(a,b,c) from the past 409*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#19 @ Sigma1(e) 410*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 411*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 412*8fb009dcSAndroid Build Coastguard Worker# endif 413*8fb009dcSAndroid Build Coastguard Worker#else 414*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 5 415*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 @ h+=Maj(a,b,c) from the past 416*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1,#2] 417*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 418*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#8 419*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1],#4 420*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 421*8fb009dcSAndroid Build Coastguard Worker# if 5==15 422*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 423*8fb009dcSAndroid Build Coastguard Worker# endif 424*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 425*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#24 426*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#19 @ Sigma1(e) 427*8fb009dcSAndroid Build Coastguard Worker#endif 428*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 429*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 @ h+=X[i] 430*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#5*4] 431*8fb009dcSAndroid Build Coastguard Worker eor r2,r4,r5 432*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#6 @ h+=Sigma1(e) 433*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r11 434*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3 @ h+=K256[i] 435*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r5 @ Ch(e,f,g) 436*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#11 437*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 @ h+=Ch(e,f,g) 438*8fb009dcSAndroid Build Coastguard Worker#if 5==31 439*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 440*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 441*8fb009dcSAndroid Build Coastguard Worker#endif 442*8fb009dcSAndroid Build Coastguard Worker#if 5<15 443*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 444*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 445*8fb009dcSAndroid Build Coastguard Worker# else 446*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 447*8fb009dcSAndroid Build Coastguard Worker# endif 448*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 @ a^b, b^c in next round 449*8fb009dcSAndroid Build Coastguard Worker#else 450*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#7*4] @ from future BODY_16_xx 451*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 @ a^b, b^c in next round 452*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#4*4] @ from future BODY_16_xx 453*8fb009dcSAndroid Build Coastguard Worker#endif 454*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#20 @ Sigma0(a) 455*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 456*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r6 @ d+=h 457*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r8 @ Maj(a,b,c) 458*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#2 @ h+=Sigma0(a) 459*8fb009dcSAndroid Build Coastguard Worker @ add r6,r6,r12 @ h+=Maj(a,b,c) 460*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 461*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 6 462*8fb009dcSAndroid Build Coastguard Worker# if 6==15 463*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 464*8fb009dcSAndroid Build Coastguard Worker# endif 465*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 466*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 @ h+=Maj(a,b,c) from the past 467*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#19 @ Sigma1(e) 468*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 469*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 470*8fb009dcSAndroid Build Coastguard Worker# endif 471*8fb009dcSAndroid Build Coastguard Worker#else 472*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 6 473*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 @ h+=Maj(a,b,c) from the past 474*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1,#2] 475*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 476*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#8 477*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1],#4 478*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 479*8fb009dcSAndroid Build Coastguard Worker# if 6==15 480*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 481*8fb009dcSAndroid Build Coastguard Worker# endif 482*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 483*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#24 484*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#19 @ Sigma1(e) 485*8fb009dcSAndroid Build Coastguard Worker#endif 486*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 487*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 @ h+=X[i] 488*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#6*4] 489*8fb009dcSAndroid Build Coastguard Worker eor r2,r11,r4 490*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#6 @ h+=Sigma1(e) 491*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r10 492*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12 @ h+=K256[i] 493*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r4 @ Ch(e,f,g) 494*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#11 495*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 @ h+=Ch(e,f,g) 496*8fb009dcSAndroid Build Coastguard Worker#if 6==31 497*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 498*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 499*8fb009dcSAndroid Build Coastguard Worker#endif 500*8fb009dcSAndroid Build Coastguard Worker#if 6<15 501*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 502*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 503*8fb009dcSAndroid Build Coastguard Worker# else 504*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 505*8fb009dcSAndroid Build Coastguard Worker# endif 506*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 @ a^b, b^c in next round 507*8fb009dcSAndroid Build Coastguard Worker#else 508*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#8*4] @ from future BODY_16_xx 509*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 @ a^b, b^c in next round 510*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#5*4] @ from future BODY_16_xx 511*8fb009dcSAndroid Build Coastguard Worker#endif 512*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#20 @ Sigma0(a) 513*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 514*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r5 @ d+=h 515*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r7 @ Maj(a,b,c) 516*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#2 @ h+=Sigma0(a) 517*8fb009dcSAndroid Build Coastguard Worker @ add r5,r5,r3 @ h+=Maj(a,b,c) 518*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 519*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 7 520*8fb009dcSAndroid Build Coastguard Worker# if 7==15 521*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 522*8fb009dcSAndroid Build Coastguard Worker# endif 523*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 524*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 @ h+=Maj(a,b,c) from the past 525*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#19 @ Sigma1(e) 526*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 527*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 528*8fb009dcSAndroid Build Coastguard Worker# endif 529*8fb009dcSAndroid Build Coastguard Worker#else 530*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 7 531*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 @ h+=Maj(a,b,c) from the past 532*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1,#2] 533*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 534*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#8 535*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1],#4 536*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 537*8fb009dcSAndroid Build Coastguard Worker# if 7==15 538*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 539*8fb009dcSAndroid Build Coastguard Worker# endif 540*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 541*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#24 542*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#19 @ Sigma1(e) 543*8fb009dcSAndroid Build Coastguard Worker#endif 544*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 545*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 @ h+=X[i] 546*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#7*4] 547*8fb009dcSAndroid Build Coastguard Worker eor r2,r10,r11 548*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#6 @ h+=Sigma1(e) 549*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r9 550*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r3 @ h+=K256[i] 551*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r11 @ Ch(e,f,g) 552*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#11 553*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 @ h+=Ch(e,f,g) 554*8fb009dcSAndroid Build Coastguard Worker#if 7==31 555*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 556*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 557*8fb009dcSAndroid Build Coastguard Worker#endif 558*8fb009dcSAndroid Build Coastguard Worker#if 7<15 559*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 560*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 561*8fb009dcSAndroid Build Coastguard Worker# else 562*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 563*8fb009dcSAndroid Build Coastguard Worker# endif 564*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ a^b, b^c in next round 565*8fb009dcSAndroid Build Coastguard Worker#else 566*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#9*4] @ from future BODY_16_xx 567*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ a^b, b^c in next round 568*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#6*4] @ from future BODY_16_xx 569*8fb009dcSAndroid Build Coastguard Worker#endif 570*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#20 @ Sigma0(a) 571*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 572*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r4 @ d+=h 573*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r6 @ Maj(a,b,c) 574*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#2 @ h+=Sigma0(a) 575*8fb009dcSAndroid Build Coastguard Worker @ add r4,r4,r12 @ h+=Maj(a,b,c) 576*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 577*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 8 578*8fb009dcSAndroid Build Coastguard Worker# if 8==15 579*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 580*8fb009dcSAndroid Build Coastguard Worker# endif 581*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 582*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 @ h+=Maj(a,b,c) from the past 583*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#19 @ Sigma1(e) 584*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 585*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 586*8fb009dcSAndroid Build Coastguard Worker# endif 587*8fb009dcSAndroid Build Coastguard Worker#else 588*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 8 589*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 @ h+=Maj(a,b,c) from the past 590*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1,#2] 591*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 592*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#8 593*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1],#4 594*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 595*8fb009dcSAndroid Build Coastguard Worker# if 8==15 596*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 597*8fb009dcSAndroid Build Coastguard Worker# endif 598*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 599*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#24 600*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#19 @ Sigma1(e) 601*8fb009dcSAndroid Build Coastguard Worker#endif 602*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 603*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 @ h+=X[i] 604*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#8*4] 605*8fb009dcSAndroid Build Coastguard Worker eor r2,r9,r10 606*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#6 @ h+=Sigma1(e) 607*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r8 608*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r12 @ h+=K256[i] 609*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r10 @ Ch(e,f,g) 610*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#11 611*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 @ h+=Ch(e,f,g) 612*8fb009dcSAndroid Build Coastguard Worker#if 8==31 613*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 614*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 615*8fb009dcSAndroid Build Coastguard Worker#endif 616*8fb009dcSAndroid Build Coastguard Worker#if 8<15 617*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 618*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 619*8fb009dcSAndroid Build Coastguard Worker# else 620*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 621*8fb009dcSAndroid Build Coastguard Worker# endif 622*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 @ a^b, b^c in next round 623*8fb009dcSAndroid Build Coastguard Worker#else 624*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#10*4] @ from future BODY_16_xx 625*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 @ a^b, b^c in next round 626*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#7*4] @ from future BODY_16_xx 627*8fb009dcSAndroid Build Coastguard Worker#endif 628*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#20 @ Sigma0(a) 629*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 630*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r11 @ d+=h 631*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r5 @ Maj(a,b,c) 632*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#2 @ h+=Sigma0(a) 633*8fb009dcSAndroid Build Coastguard Worker @ add r11,r11,r3 @ h+=Maj(a,b,c) 634*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 635*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 9 636*8fb009dcSAndroid Build Coastguard Worker# if 9==15 637*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 638*8fb009dcSAndroid Build Coastguard Worker# endif 639*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 640*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 @ h+=Maj(a,b,c) from the past 641*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#19 @ Sigma1(e) 642*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 643*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 644*8fb009dcSAndroid Build Coastguard Worker# endif 645*8fb009dcSAndroid Build Coastguard Worker#else 646*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 9 647*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 @ h+=Maj(a,b,c) from the past 648*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1,#2] 649*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 650*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#8 651*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1],#4 652*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 653*8fb009dcSAndroid Build Coastguard Worker# if 9==15 654*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 655*8fb009dcSAndroid Build Coastguard Worker# endif 656*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 657*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#24 658*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#19 @ Sigma1(e) 659*8fb009dcSAndroid Build Coastguard Worker#endif 660*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 661*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 @ h+=X[i] 662*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#9*4] 663*8fb009dcSAndroid Build Coastguard Worker eor r2,r8,r9 664*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#6 @ h+=Sigma1(e) 665*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r7 666*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3 @ h+=K256[i] 667*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r9 @ Ch(e,f,g) 668*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#11 669*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 @ h+=Ch(e,f,g) 670*8fb009dcSAndroid Build Coastguard Worker#if 9==31 671*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 672*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 673*8fb009dcSAndroid Build Coastguard Worker#endif 674*8fb009dcSAndroid Build Coastguard Worker#if 9<15 675*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 676*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 677*8fb009dcSAndroid Build Coastguard Worker# else 678*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 679*8fb009dcSAndroid Build Coastguard Worker# endif 680*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 @ a^b, b^c in next round 681*8fb009dcSAndroid Build Coastguard Worker#else 682*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#11*4] @ from future BODY_16_xx 683*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 @ a^b, b^c in next round 684*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#8*4] @ from future BODY_16_xx 685*8fb009dcSAndroid Build Coastguard Worker#endif 686*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#20 @ Sigma0(a) 687*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 688*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r10 @ d+=h 689*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r4 @ Maj(a,b,c) 690*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#2 @ h+=Sigma0(a) 691*8fb009dcSAndroid Build Coastguard Worker @ add r10,r10,r12 @ h+=Maj(a,b,c) 692*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 693*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 10 694*8fb009dcSAndroid Build Coastguard Worker# if 10==15 695*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 696*8fb009dcSAndroid Build Coastguard Worker# endif 697*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 698*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 @ h+=Maj(a,b,c) from the past 699*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#19 @ Sigma1(e) 700*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 701*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 702*8fb009dcSAndroid Build Coastguard Worker# endif 703*8fb009dcSAndroid Build Coastguard Worker#else 704*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 10 705*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 @ h+=Maj(a,b,c) from the past 706*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1,#2] 707*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 708*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#8 709*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1],#4 710*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 711*8fb009dcSAndroid Build Coastguard Worker# if 10==15 712*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 713*8fb009dcSAndroid Build Coastguard Worker# endif 714*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 715*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#24 716*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#19 @ Sigma1(e) 717*8fb009dcSAndroid Build Coastguard Worker#endif 718*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 719*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 @ h+=X[i] 720*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#10*4] 721*8fb009dcSAndroid Build Coastguard Worker eor r2,r7,r8 722*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#6 @ h+=Sigma1(e) 723*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r6 724*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12 @ h+=K256[i] 725*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r8 @ Ch(e,f,g) 726*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#11 727*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 @ h+=Ch(e,f,g) 728*8fb009dcSAndroid Build Coastguard Worker#if 10==31 729*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 730*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 731*8fb009dcSAndroid Build Coastguard Worker#endif 732*8fb009dcSAndroid Build Coastguard Worker#if 10<15 733*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 734*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 735*8fb009dcSAndroid Build Coastguard Worker# else 736*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 737*8fb009dcSAndroid Build Coastguard Worker# endif 738*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 @ a^b, b^c in next round 739*8fb009dcSAndroid Build Coastguard Worker#else 740*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#12*4] @ from future BODY_16_xx 741*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 @ a^b, b^c in next round 742*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#9*4] @ from future BODY_16_xx 743*8fb009dcSAndroid Build Coastguard Worker#endif 744*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#20 @ Sigma0(a) 745*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 746*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r9 @ d+=h 747*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r11 @ Maj(a,b,c) 748*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#2 @ h+=Sigma0(a) 749*8fb009dcSAndroid Build Coastguard Worker @ add r9,r9,r3 @ h+=Maj(a,b,c) 750*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 751*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 11 752*8fb009dcSAndroid Build Coastguard Worker# if 11==15 753*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 754*8fb009dcSAndroid Build Coastguard Worker# endif 755*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 756*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 @ h+=Maj(a,b,c) from the past 757*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#19 @ Sigma1(e) 758*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 759*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 760*8fb009dcSAndroid Build Coastguard Worker# endif 761*8fb009dcSAndroid Build Coastguard Worker#else 762*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 11 763*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 @ h+=Maj(a,b,c) from the past 764*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1,#2] 765*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 766*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#8 767*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1],#4 768*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 769*8fb009dcSAndroid Build Coastguard Worker# if 11==15 770*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 771*8fb009dcSAndroid Build Coastguard Worker# endif 772*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 773*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#24 774*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#19 @ Sigma1(e) 775*8fb009dcSAndroid Build Coastguard Worker#endif 776*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 777*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 @ h+=X[i] 778*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#11*4] 779*8fb009dcSAndroid Build Coastguard Worker eor r2,r6,r7 780*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#6 @ h+=Sigma1(e) 781*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r5 782*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r3 @ h+=K256[i] 783*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r7 @ Ch(e,f,g) 784*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#11 785*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 @ h+=Ch(e,f,g) 786*8fb009dcSAndroid Build Coastguard Worker#if 11==31 787*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 788*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 789*8fb009dcSAndroid Build Coastguard Worker#endif 790*8fb009dcSAndroid Build Coastguard Worker#if 11<15 791*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 792*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 793*8fb009dcSAndroid Build Coastguard Worker# else 794*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 795*8fb009dcSAndroid Build Coastguard Worker# endif 796*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 @ a^b, b^c in next round 797*8fb009dcSAndroid Build Coastguard Worker#else 798*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#13*4] @ from future BODY_16_xx 799*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 @ a^b, b^c in next round 800*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#10*4] @ from future BODY_16_xx 801*8fb009dcSAndroid Build Coastguard Worker#endif 802*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#20 @ Sigma0(a) 803*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 804*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r8 @ d+=h 805*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r10 @ Maj(a,b,c) 806*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#2 @ h+=Sigma0(a) 807*8fb009dcSAndroid Build Coastguard Worker @ add r8,r8,r12 @ h+=Maj(a,b,c) 808*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 809*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 12 810*8fb009dcSAndroid Build Coastguard Worker# if 12==15 811*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 812*8fb009dcSAndroid Build Coastguard Worker# endif 813*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 814*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 @ h+=Maj(a,b,c) from the past 815*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#19 @ Sigma1(e) 816*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 817*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 818*8fb009dcSAndroid Build Coastguard Worker# endif 819*8fb009dcSAndroid Build Coastguard Worker#else 820*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 12 821*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 @ h+=Maj(a,b,c) from the past 822*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1,#2] 823*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 824*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#8 825*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1],#4 826*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 827*8fb009dcSAndroid Build Coastguard Worker# if 12==15 828*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 829*8fb009dcSAndroid Build Coastguard Worker# endif 830*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 831*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#24 832*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#19 @ Sigma1(e) 833*8fb009dcSAndroid Build Coastguard Worker#endif 834*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 835*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 @ h+=X[i] 836*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#12*4] 837*8fb009dcSAndroid Build Coastguard Worker eor r2,r5,r6 838*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#6 @ h+=Sigma1(e) 839*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r4 840*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r12 @ h+=K256[i] 841*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r6 @ Ch(e,f,g) 842*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#11 843*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 @ h+=Ch(e,f,g) 844*8fb009dcSAndroid Build Coastguard Worker#if 12==31 845*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 846*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 847*8fb009dcSAndroid Build Coastguard Worker#endif 848*8fb009dcSAndroid Build Coastguard Worker#if 12<15 849*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 850*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 851*8fb009dcSAndroid Build Coastguard Worker# else 852*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 853*8fb009dcSAndroid Build Coastguard Worker# endif 854*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 @ a^b, b^c in next round 855*8fb009dcSAndroid Build Coastguard Worker#else 856*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#14*4] @ from future BODY_16_xx 857*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 @ a^b, b^c in next round 858*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#11*4] @ from future BODY_16_xx 859*8fb009dcSAndroid Build Coastguard Worker#endif 860*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#20 @ Sigma0(a) 861*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 862*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r7 @ d+=h 863*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r9 @ Maj(a,b,c) 864*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#2 @ h+=Sigma0(a) 865*8fb009dcSAndroid Build Coastguard Worker @ add r7,r7,r3 @ h+=Maj(a,b,c) 866*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 867*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 13 868*8fb009dcSAndroid Build Coastguard Worker# if 13==15 869*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 870*8fb009dcSAndroid Build Coastguard Worker# endif 871*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 872*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 @ h+=Maj(a,b,c) from the past 873*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#19 @ Sigma1(e) 874*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 875*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 876*8fb009dcSAndroid Build Coastguard Worker# endif 877*8fb009dcSAndroid Build Coastguard Worker#else 878*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 13 879*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 @ h+=Maj(a,b,c) from the past 880*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1,#2] 881*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 882*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#8 883*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1],#4 884*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 885*8fb009dcSAndroid Build Coastguard Worker# if 13==15 886*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 887*8fb009dcSAndroid Build Coastguard Worker# endif 888*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 889*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#24 890*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#19 @ Sigma1(e) 891*8fb009dcSAndroid Build Coastguard Worker#endif 892*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 893*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 @ h+=X[i] 894*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#13*4] 895*8fb009dcSAndroid Build Coastguard Worker eor r2,r4,r5 896*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#6 @ h+=Sigma1(e) 897*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r11 898*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3 @ h+=K256[i] 899*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r5 @ Ch(e,f,g) 900*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#11 901*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 @ h+=Ch(e,f,g) 902*8fb009dcSAndroid Build Coastguard Worker#if 13==31 903*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 904*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 905*8fb009dcSAndroid Build Coastguard Worker#endif 906*8fb009dcSAndroid Build Coastguard Worker#if 13<15 907*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 908*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 909*8fb009dcSAndroid Build Coastguard Worker# else 910*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 911*8fb009dcSAndroid Build Coastguard Worker# endif 912*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 @ a^b, b^c in next round 913*8fb009dcSAndroid Build Coastguard Worker#else 914*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#15*4] @ from future BODY_16_xx 915*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 @ a^b, b^c in next round 916*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#12*4] @ from future BODY_16_xx 917*8fb009dcSAndroid Build Coastguard Worker#endif 918*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#20 @ Sigma0(a) 919*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 920*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r6 @ d+=h 921*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r8 @ Maj(a,b,c) 922*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#2 @ h+=Sigma0(a) 923*8fb009dcSAndroid Build Coastguard Worker @ add r6,r6,r12 @ h+=Maj(a,b,c) 924*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 925*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 14 926*8fb009dcSAndroid Build Coastguard Worker# if 14==15 927*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 928*8fb009dcSAndroid Build Coastguard Worker# endif 929*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 930*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 @ h+=Maj(a,b,c) from the past 931*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#19 @ Sigma1(e) 932*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 933*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 934*8fb009dcSAndroid Build Coastguard Worker# endif 935*8fb009dcSAndroid Build Coastguard Worker#else 936*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 14 937*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 @ h+=Maj(a,b,c) from the past 938*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1,#2] 939*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 940*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#8 941*8fb009dcSAndroid Build Coastguard Worker ldrb r12,[r1],#4 942*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 943*8fb009dcSAndroid Build Coastguard Worker# if 14==15 944*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 945*8fb009dcSAndroid Build Coastguard Worker# endif 946*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 947*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r12,lsl#24 948*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#19 @ Sigma1(e) 949*8fb009dcSAndroid Build Coastguard Worker#endif 950*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 951*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 @ h+=X[i] 952*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#14*4] 953*8fb009dcSAndroid Build Coastguard Worker eor r2,r11,r4 954*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#6 @ h+=Sigma1(e) 955*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r10 956*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12 @ h+=K256[i] 957*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r4 @ Ch(e,f,g) 958*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#11 959*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 @ h+=Ch(e,f,g) 960*8fb009dcSAndroid Build Coastguard Worker#if 14==31 961*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 962*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 963*8fb009dcSAndroid Build Coastguard Worker#endif 964*8fb009dcSAndroid Build Coastguard Worker#if 14<15 965*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 966*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 967*8fb009dcSAndroid Build Coastguard Worker# else 968*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 969*8fb009dcSAndroid Build Coastguard Worker# endif 970*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 @ a^b, b^c in next round 971*8fb009dcSAndroid Build Coastguard Worker#else 972*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#0*4] @ from future BODY_16_xx 973*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 @ a^b, b^c in next round 974*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#13*4] @ from future BODY_16_xx 975*8fb009dcSAndroid Build Coastguard Worker#endif 976*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#20 @ Sigma0(a) 977*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 978*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r5 @ d+=h 979*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r7 @ Maj(a,b,c) 980*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#2 @ h+=Sigma0(a) 981*8fb009dcSAndroid Build Coastguard Worker @ add r5,r5,r3 @ h+=Maj(a,b,c) 982*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 983*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[r1],#4 @ 15 984*8fb009dcSAndroid Build Coastguard Worker# if 15==15 985*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 986*8fb009dcSAndroid Build Coastguard Worker# endif 987*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 988*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 @ h+=Maj(a,b,c) from the past 989*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#19 @ Sigma1(e) 990*8fb009dcSAndroid Build Coastguard Worker# ifndef __ARMEB__ 991*8fb009dcSAndroid Build Coastguard Worker rev r2,r2 992*8fb009dcSAndroid Build Coastguard Worker# endif 993*8fb009dcSAndroid Build Coastguard Worker#else 994*8fb009dcSAndroid Build Coastguard Worker @ ldrb r2,[r1,#3] @ 15 995*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 @ h+=Maj(a,b,c) from the past 996*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1,#2] 997*8fb009dcSAndroid Build Coastguard Worker ldrb r0,[r1,#1] 998*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#8 999*8fb009dcSAndroid Build Coastguard Worker ldrb r3,[r1],#4 1000*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r0,lsl#16 1001*8fb009dcSAndroid Build Coastguard Worker# if 15==15 1002*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#17*4] @ make room for r1 1003*8fb009dcSAndroid Build Coastguard Worker# endif 1004*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 1005*8fb009dcSAndroid Build Coastguard Worker orr r2,r2,r3,lsl#24 1006*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#19 @ Sigma1(e) 1007*8fb009dcSAndroid Build Coastguard Worker#endif 1008*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1009*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 @ h+=X[i] 1010*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#15*4] 1011*8fb009dcSAndroid Build Coastguard Worker eor r2,r10,r11 1012*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#6 @ h+=Sigma1(e) 1013*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r9 1014*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r3 @ h+=K256[i] 1015*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r11 @ Ch(e,f,g) 1016*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#11 1017*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 @ h+=Ch(e,f,g) 1018*8fb009dcSAndroid Build Coastguard Worker#if 15==31 1019*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1020*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1021*8fb009dcSAndroid Build Coastguard Worker#endif 1022*8fb009dcSAndroid Build Coastguard Worker#if 15<15 1023*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1024*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1025*8fb009dcSAndroid Build Coastguard Worker# else 1026*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1027*8fb009dcSAndroid Build Coastguard Worker# endif 1028*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ a^b, b^c in next round 1029*8fb009dcSAndroid Build Coastguard Worker#else 1030*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#1*4] @ from future BODY_16_xx 1031*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ a^b, b^c in next round 1032*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#14*4] @ from future BODY_16_xx 1033*8fb009dcSAndroid Build Coastguard Worker#endif 1034*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#20 @ Sigma0(a) 1035*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1036*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r4 @ d+=h 1037*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r6 @ Maj(a,b,c) 1038*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#2 @ h+=Sigma0(a) 1039*8fb009dcSAndroid Build Coastguard Worker @ add r4,r4,r12 @ h+=Maj(a,b,c) 1040*8fb009dcSAndroid Build Coastguard Worker.Lrounds_16_xx: 1041*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#1*4] @ 16 1042*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#14*4] 1043*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1044*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 @ h+=Maj(a,b,c) from the past 1045*8fb009dcSAndroid Build Coastguard Worker mov r12,r1,ror#17 1046*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1047*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,ror#19 1048*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1049*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#0*4] 1050*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1051*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#9*4] 1052*8fb009dcSAndroid Build Coastguard Worker 1053*8fb009dcSAndroid Build Coastguard Worker add r12,r12,r0 1054*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 @ from BODY_00_15 1055*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r12 1056*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#19 @ Sigma1(e) 1057*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1058*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 1059*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 @ h+=X[i] 1060*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#0*4] 1061*8fb009dcSAndroid Build Coastguard Worker eor r2,r9,r10 1062*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#6 @ h+=Sigma1(e) 1063*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r8 1064*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r12 @ h+=K256[i] 1065*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r10 @ Ch(e,f,g) 1066*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#11 1067*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 @ h+=Ch(e,f,g) 1068*8fb009dcSAndroid Build Coastguard Worker#if 16==31 1069*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 1070*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 1071*8fb009dcSAndroid Build Coastguard Worker#endif 1072*8fb009dcSAndroid Build Coastguard Worker#if 16<15 1073*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1074*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1075*8fb009dcSAndroid Build Coastguard Worker# else 1076*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1077*8fb009dcSAndroid Build Coastguard Worker# endif 1078*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 @ a^b, b^c in next round 1079*8fb009dcSAndroid Build Coastguard Worker#else 1080*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#2*4] @ from future BODY_16_xx 1081*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 @ a^b, b^c in next round 1082*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#15*4] @ from future BODY_16_xx 1083*8fb009dcSAndroid Build Coastguard Worker#endif 1084*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#20 @ Sigma0(a) 1085*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 1086*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r11 @ d+=h 1087*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r5 @ Maj(a,b,c) 1088*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#2 @ h+=Sigma0(a) 1089*8fb009dcSAndroid Build Coastguard Worker @ add r11,r11,r3 @ h+=Maj(a,b,c) 1090*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#2*4] @ 17 1091*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#15*4] 1092*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1093*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 @ h+=Maj(a,b,c) from the past 1094*8fb009dcSAndroid Build Coastguard Worker mov r3,r1,ror#17 1095*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1096*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,ror#19 1097*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1098*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#1*4] 1099*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1100*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#10*4] 1101*8fb009dcSAndroid Build Coastguard Worker 1102*8fb009dcSAndroid Build Coastguard Worker add r3,r3,r0 1103*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 @ from BODY_00_15 1104*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r3 1105*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#19 @ Sigma1(e) 1106*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1107*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1108*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 @ h+=X[i] 1109*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#1*4] 1110*8fb009dcSAndroid Build Coastguard Worker eor r2,r8,r9 1111*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#6 @ h+=Sigma1(e) 1112*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r7 1113*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3 @ h+=K256[i] 1114*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r9 @ Ch(e,f,g) 1115*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#11 1116*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 @ h+=Ch(e,f,g) 1117*8fb009dcSAndroid Build Coastguard Worker#if 17==31 1118*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1119*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1120*8fb009dcSAndroid Build Coastguard Worker#endif 1121*8fb009dcSAndroid Build Coastguard Worker#if 17<15 1122*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1123*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1124*8fb009dcSAndroid Build Coastguard Worker# else 1125*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1126*8fb009dcSAndroid Build Coastguard Worker# endif 1127*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 @ a^b, b^c in next round 1128*8fb009dcSAndroid Build Coastguard Worker#else 1129*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#3*4] @ from future BODY_16_xx 1130*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 @ a^b, b^c in next round 1131*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#0*4] @ from future BODY_16_xx 1132*8fb009dcSAndroid Build Coastguard Worker#endif 1133*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#20 @ Sigma0(a) 1134*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1135*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r10 @ d+=h 1136*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r4 @ Maj(a,b,c) 1137*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#2 @ h+=Sigma0(a) 1138*8fb009dcSAndroid Build Coastguard Worker @ add r10,r10,r12 @ h+=Maj(a,b,c) 1139*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#3*4] @ 18 1140*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#0*4] 1141*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1142*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 @ h+=Maj(a,b,c) from the past 1143*8fb009dcSAndroid Build Coastguard Worker mov r12,r1,ror#17 1144*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1145*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,ror#19 1146*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1147*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#2*4] 1148*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1149*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#11*4] 1150*8fb009dcSAndroid Build Coastguard Worker 1151*8fb009dcSAndroid Build Coastguard Worker add r12,r12,r0 1152*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 @ from BODY_00_15 1153*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r12 1154*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#19 @ Sigma1(e) 1155*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1156*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 1157*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 @ h+=X[i] 1158*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#2*4] 1159*8fb009dcSAndroid Build Coastguard Worker eor r2,r7,r8 1160*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#6 @ h+=Sigma1(e) 1161*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r6 1162*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12 @ h+=K256[i] 1163*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r8 @ Ch(e,f,g) 1164*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#11 1165*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 @ h+=Ch(e,f,g) 1166*8fb009dcSAndroid Build Coastguard Worker#if 18==31 1167*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 1168*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 1169*8fb009dcSAndroid Build Coastguard Worker#endif 1170*8fb009dcSAndroid Build Coastguard Worker#if 18<15 1171*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1172*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1173*8fb009dcSAndroid Build Coastguard Worker# else 1174*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1175*8fb009dcSAndroid Build Coastguard Worker# endif 1176*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 @ a^b, b^c in next round 1177*8fb009dcSAndroid Build Coastguard Worker#else 1178*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#4*4] @ from future BODY_16_xx 1179*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 @ a^b, b^c in next round 1180*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#1*4] @ from future BODY_16_xx 1181*8fb009dcSAndroid Build Coastguard Worker#endif 1182*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#20 @ Sigma0(a) 1183*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 1184*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r9 @ d+=h 1185*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r11 @ Maj(a,b,c) 1186*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#2 @ h+=Sigma0(a) 1187*8fb009dcSAndroid Build Coastguard Worker @ add r9,r9,r3 @ h+=Maj(a,b,c) 1188*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#4*4] @ 19 1189*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#1*4] 1190*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1191*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 @ h+=Maj(a,b,c) from the past 1192*8fb009dcSAndroid Build Coastguard Worker mov r3,r1,ror#17 1193*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1194*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,ror#19 1195*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1196*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#3*4] 1197*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1198*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#12*4] 1199*8fb009dcSAndroid Build Coastguard Worker 1200*8fb009dcSAndroid Build Coastguard Worker add r3,r3,r0 1201*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 @ from BODY_00_15 1202*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r3 1203*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#19 @ Sigma1(e) 1204*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1205*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1206*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 @ h+=X[i] 1207*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#3*4] 1208*8fb009dcSAndroid Build Coastguard Worker eor r2,r6,r7 1209*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#6 @ h+=Sigma1(e) 1210*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r5 1211*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r3 @ h+=K256[i] 1212*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r7 @ Ch(e,f,g) 1213*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#11 1214*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 @ h+=Ch(e,f,g) 1215*8fb009dcSAndroid Build Coastguard Worker#if 19==31 1216*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1217*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1218*8fb009dcSAndroid Build Coastguard Worker#endif 1219*8fb009dcSAndroid Build Coastguard Worker#if 19<15 1220*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1221*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1222*8fb009dcSAndroid Build Coastguard Worker# else 1223*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1224*8fb009dcSAndroid Build Coastguard Worker# endif 1225*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 @ a^b, b^c in next round 1226*8fb009dcSAndroid Build Coastguard Worker#else 1227*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#5*4] @ from future BODY_16_xx 1228*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 @ a^b, b^c in next round 1229*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#2*4] @ from future BODY_16_xx 1230*8fb009dcSAndroid Build Coastguard Worker#endif 1231*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#20 @ Sigma0(a) 1232*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1233*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r8 @ d+=h 1234*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r10 @ Maj(a,b,c) 1235*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#2 @ h+=Sigma0(a) 1236*8fb009dcSAndroid Build Coastguard Worker @ add r8,r8,r12 @ h+=Maj(a,b,c) 1237*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#5*4] @ 20 1238*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#2*4] 1239*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1240*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 @ h+=Maj(a,b,c) from the past 1241*8fb009dcSAndroid Build Coastguard Worker mov r12,r1,ror#17 1242*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1243*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,ror#19 1244*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1245*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#4*4] 1246*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1247*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#13*4] 1248*8fb009dcSAndroid Build Coastguard Worker 1249*8fb009dcSAndroid Build Coastguard Worker add r12,r12,r0 1250*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 @ from BODY_00_15 1251*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r12 1252*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#19 @ Sigma1(e) 1253*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1254*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 1255*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 @ h+=X[i] 1256*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#4*4] 1257*8fb009dcSAndroid Build Coastguard Worker eor r2,r5,r6 1258*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#6 @ h+=Sigma1(e) 1259*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r4 1260*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r12 @ h+=K256[i] 1261*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r6 @ Ch(e,f,g) 1262*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#11 1263*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 @ h+=Ch(e,f,g) 1264*8fb009dcSAndroid Build Coastguard Worker#if 20==31 1265*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 1266*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 1267*8fb009dcSAndroid Build Coastguard Worker#endif 1268*8fb009dcSAndroid Build Coastguard Worker#if 20<15 1269*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1270*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1271*8fb009dcSAndroid Build Coastguard Worker# else 1272*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1273*8fb009dcSAndroid Build Coastguard Worker# endif 1274*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 @ a^b, b^c in next round 1275*8fb009dcSAndroid Build Coastguard Worker#else 1276*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#6*4] @ from future BODY_16_xx 1277*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 @ a^b, b^c in next round 1278*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#3*4] @ from future BODY_16_xx 1279*8fb009dcSAndroid Build Coastguard Worker#endif 1280*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#20 @ Sigma0(a) 1281*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 1282*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r7 @ d+=h 1283*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r9 @ Maj(a,b,c) 1284*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#2 @ h+=Sigma0(a) 1285*8fb009dcSAndroid Build Coastguard Worker @ add r7,r7,r3 @ h+=Maj(a,b,c) 1286*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#6*4] @ 21 1287*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#3*4] 1288*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1289*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 @ h+=Maj(a,b,c) from the past 1290*8fb009dcSAndroid Build Coastguard Worker mov r3,r1,ror#17 1291*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1292*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,ror#19 1293*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1294*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#5*4] 1295*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1296*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#14*4] 1297*8fb009dcSAndroid Build Coastguard Worker 1298*8fb009dcSAndroid Build Coastguard Worker add r3,r3,r0 1299*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 @ from BODY_00_15 1300*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r3 1301*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#19 @ Sigma1(e) 1302*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1303*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1304*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 @ h+=X[i] 1305*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#5*4] 1306*8fb009dcSAndroid Build Coastguard Worker eor r2,r4,r5 1307*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#6 @ h+=Sigma1(e) 1308*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r11 1309*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3 @ h+=K256[i] 1310*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r5 @ Ch(e,f,g) 1311*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#11 1312*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 @ h+=Ch(e,f,g) 1313*8fb009dcSAndroid Build Coastguard Worker#if 21==31 1314*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1315*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1316*8fb009dcSAndroid Build Coastguard Worker#endif 1317*8fb009dcSAndroid Build Coastguard Worker#if 21<15 1318*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1319*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1320*8fb009dcSAndroid Build Coastguard Worker# else 1321*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1322*8fb009dcSAndroid Build Coastguard Worker# endif 1323*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 @ a^b, b^c in next round 1324*8fb009dcSAndroid Build Coastguard Worker#else 1325*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#7*4] @ from future BODY_16_xx 1326*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 @ a^b, b^c in next round 1327*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#4*4] @ from future BODY_16_xx 1328*8fb009dcSAndroid Build Coastguard Worker#endif 1329*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#20 @ Sigma0(a) 1330*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1331*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r6 @ d+=h 1332*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r8 @ Maj(a,b,c) 1333*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#2 @ h+=Sigma0(a) 1334*8fb009dcSAndroid Build Coastguard Worker @ add r6,r6,r12 @ h+=Maj(a,b,c) 1335*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#7*4] @ 22 1336*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#4*4] 1337*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1338*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 @ h+=Maj(a,b,c) from the past 1339*8fb009dcSAndroid Build Coastguard Worker mov r12,r1,ror#17 1340*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1341*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,ror#19 1342*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1343*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#6*4] 1344*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1345*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#15*4] 1346*8fb009dcSAndroid Build Coastguard Worker 1347*8fb009dcSAndroid Build Coastguard Worker add r12,r12,r0 1348*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 @ from BODY_00_15 1349*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r12 1350*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#19 @ Sigma1(e) 1351*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1352*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 1353*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 @ h+=X[i] 1354*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#6*4] 1355*8fb009dcSAndroid Build Coastguard Worker eor r2,r11,r4 1356*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#6 @ h+=Sigma1(e) 1357*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r10 1358*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12 @ h+=K256[i] 1359*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r4 @ Ch(e,f,g) 1360*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#11 1361*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 @ h+=Ch(e,f,g) 1362*8fb009dcSAndroid Build Coastguard Worker#if 22==31 1363*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 1364*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 1365*8fb009dcSAndroid Build Coastguard Worker#endif 1366*8fb009dcSAndroid Build Coastguard Worker#if 22<15 1367*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1368*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1369*8fb009dcSAndroid Build Coastguard Worker# else 1370*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1371*8fb009dcSAndroid Build Coastguard Worker# endif 1372*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 @ a^b, b^c in next round 1373*8fb009dcSAndroid Build Coastguard Worker#else 1374*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#8*4] @ from future BODY_16_xx 1375*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 @ a^b, b^c in next round 1376*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#5*4] @ from future BODY_16_xx 1377*8fb009dcSAndroid Build Coastguard Worker#endif 1378*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#20 @ Sigma0(a) 1379*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 1380*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r5 @ d+=h 1381*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r7 @ Maj(a,b,c) 1382*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#2 @ h+=Sigma0(a) 1383*8fb009dcSAndroid Build Coastguard Worker @ add r5,r5,r3 @ h+=Maj(a,b,c) 1384*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#8*4] @ 23 1385*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#5*4] 1386*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1387*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 @ h+=Maj(a,b,c) from the past 1388*8fb009dcSAndroid Build Coastguard Worker mov r3,r1,ror#17 1389*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1390*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,ror#19 1391*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1392*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#7*4] 1393*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1394*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#0*4] 1395*8fb009dcSAndroid Build Coastguard Worker 1396*8fb009dcSAndroid Build Coastguard Worker add r3,r3,r0 1397*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 @ from BODY_00_15 1398*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r3 1399*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#19 @ Sigma1(e) 1400*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1401*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1402*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 @ h+=X[i] 1403*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#7*4] 1404*8fb009dcSAndroid Build Coastguard Worker eor r2,r10,r11 1405*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#6 @ h+=Sigma1(e) 1406*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r9 1407*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r3 @ h+=K256[i] 1408*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r11 @ Ch(e,f,g) 1409*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#11 1410*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 @ h+=Ch(e,f,g) 1411*8fb009dcSAndroid Build Coastguard Worker#if 23==31 1412*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1413*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1414*8fb009dcSAndroid Build Coastguard Worker#endif 1415*8fb009dcSAndroid Build Coastguard Worker#if 23<15 1416*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1417*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1418*8fb009dcSAndroid Build Coastguard Worker# else 1419*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1420*8fb009dcSAndroid Build Coastguard Worker# endif 1421*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ a^b, b^c in next round 1422*8fb009dcSAndroid Build Coastguard Worker#else 1423*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#9*4] @ from future BODY_16_xx 1424*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ a^b, b^c in next round 1425*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#6*4] @ from future BODY_16_xx 1426*8fb009dcSAndroid Build Coastguard Worker#endif 1427*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#20 @ Sigma0(a) 1428*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1429*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r4 @ d+=h 1430*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r6 @ Maj(a,b,c) 1431*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#2 @ h+=Sigma0(a) 1432*8fb009dcSAndroid Build Coastguard Worker @ add r4,r4,r12 @ h+=Maj(a,b,c) 1433*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#9*4] @ 24 1434*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#6*4] 1435*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1436*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 @ h+=Maj(a,b,c) from the past 1437*8fb009dcSAndroid Build Coastguard Worker mov r12,r1,ror#17 1438*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1439*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,ror#19 1440*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1441*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#8*4] 1442*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1443*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#1*4] 1444*8fb009dcSAndroid Build Coastguard Worker 1445*8fb009dcSAndroid Build Coastguard Worker add r12,r12,r0 1446*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 @ from BODY_00_15 1447*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r12 1448*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#19 @ Sigma1(e) 1449*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1450*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 1451*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 @ h+=X[i] 1452*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#8*4] 1453*8fb009dcSAndroid Build Coastguard Worker eor r2,r9,r10 1454*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#6 @ h+=Sigma1(e) 1455*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r8 1456*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r12 @ h+=K256[i] 1457*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r10 @ Ch(e,f,g) 1458*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#11 1459*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 @ h+=Ch(e,f,g) 1460*8fb009dcSAndroid Build Coastguard Worker#if 24==31 1461*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 1462*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 1463*8fb009dcSAndroid Build Coastguard Worker#endif 1464*8fb009dcSAndroid Build Coastguard Worker#if 24<15 1465*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1466*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1467*8fb009dcSAndroid Build Coastguard Worker# else 1468*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1469*8fb009dcSAndroid Build Coastguard Worker# endif 1470*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 @ a^b, b^c in next round 1471*8fb009dcSAndroid Build Coastguard Worker#else 1472*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#10*4] @ from future BODY_16_xx 1473*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 @ a^b, b^c in next round 1474*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#7*4] @ from future BODY_16_xx 1475*8fb009dcSAndroid Build Coastguard Worker#endif 1476*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#20 @ Sigma0(a) 1477*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 1478*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r11 @ d+=h 1479*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r5 @ Maj(a,b,c) 1480*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#2 @ h+=Sigma0(a) 1481*8fb009dcSAndroid Build Coastguard Worker @ add r11,r11,r3 @ h+=Maj(a,b,c) 1482*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#10*4] @ 25 1483*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#7*4] 1484*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1485*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 @ h+=Maj(a,b,c) from the past 1486*8fb009dcSAndroid Build Coastguard Worker mov r3,r1,ror#17 1487*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1488*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,ror#19 1489*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1490*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#9*4] 1491*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1492*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#2*4] 1493*8fb009dcSAndroid Build Coastguard Worker 1494*8fb009dcSAndroid Build Coastguard Worker add r3,r3,r0 1495*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 @ from BODY_00_15 1496*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r3 1497*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#19 @ Sigma1(e) 1498*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1499*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1500*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 @ h+=X[i] 1501*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#9*4] 1502*8fb009dcSAndroid Build Coastguard Worker eor r2,r8,r9 1503*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#6 @ h+=Sigma1(e) 1504*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r7 1505*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3 @ h+=K256[i] 1506*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r9 @ Ch(e,f,g) 1507*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#11 1508*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 @ h+=Ch(e,f,g) 1509*8fb009dcSAndroid Build Coastguard Worker#if 25==31 1510*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1511*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1512*8fb009dcSAndroid Build Coastguard Worker#endif 1513*8fb009dcSAndroid Build Coastguard Worker#if 25<15 1514*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1515*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1516*8fb009dcSAndroid Build Coastguard Worker# else 1517*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1518*8fb009dcSAndroid Build Coastguard Worker# endif 1519*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 @ a^b, b^c in next round 1520*8fb009dcSAndroid Build Coastguard Worker#else 1521*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#11*4] @ from future BODY_16_xx 1522*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 @ a^b, b^c in next round 1523*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#8*4] @ from future BODY_16_xx 1524*8fb009dcSAndroid Build Coastguard Worker#endif 1525*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#20 @ Sigma0(a) 1526*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1527*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r10 @ d+=h 1528*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r4 @ Maj(a,b,c) 1529*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#2 @ h+=Sigma0(a) 1530*8fb009dcSAndroid Build Coastguard Worker @ add r10,r10,r12 @ h+=Maj(a,b,c) 1531*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#11*4] @ 26 1532*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#8*4] 1533*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1534*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 @ h+=Maj(a,b,c) from the past 1535*8fb009dcSAndroid Build Coastguard Worker mov r12,r1,ror#17 1536*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1537*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,ror#19 1538*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1539*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#10*4] 1540*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1541*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#3*4] 1542*8fb009dcSAndroid Build Coastguard Worker 1543*8fb009dcSAndroid Build Coastguard Worker add r12,r12,r0 1544*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 @ from BODY_00_15 1545*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r12 1546*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#19 @ Sigma1(e) 1547*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1548*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 1549*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 @ h+=X[i] 1550*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#10*4] 1551*8fb009dcSAndroid Build Coastguard Worker eor r2,r7,r8 1552*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#6 @ h+=Sigma1(e) 1553*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r6 1554*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12 @ h+=K256[i] 1555*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r8 @ Ch(e,f,g) 1556*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#11 1557*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 @ h+=Ch(e,f,g) 1558*8fb009dcSAndroid Build Coastguard Worker#if 26==31 1559*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 1560*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 1561*8fb009dcSAndroid Build Coastguard Worker#endif 1562*8fb009dcSAndroid Build Coastguard Worker#if 26<15 1563*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1564*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1565*8fb009dcSAndroid Build Coastguard Worker# else 1566*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1567*8fb009dcSAndroid Build Coastguard Worker# endif 1568*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 @ a^b, b^c in next round 1569*8fb009dcSAndroid Build Coastguard Worker#else 1570*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#12*4] @ from future BODY_16_xx 1571*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 @ a^b, b^c in next round 1572*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#9*4] @ from future BODY_16_xx 1573*8fb009dcSAndroid Build Coastguard Worker#endif 1574*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#20 @ Sigma0(a) 1575*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 1576*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r9 @ d+=h 1577*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r11 @ Maj(a,b,c) 1578*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#2 @ h+=Sigma0(a) 1579*8fb009dcSAndroid Build Coastguard Worker @ add r9,r9,r3 @ h+=Maj(a,b,c) 1580*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#12*4] @ 27 1581*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#9*4] 1582*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1583*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 @ h+=Maj(a,b,c) from the past 1584*8fb009dcSAndroid Build Coastguard Worker mov r3,r1,ror#17 1585*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1586*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,ror#19 1587*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1588*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#11*4] 1589*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1590*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#4*4] 1591*8fb009dcSAndroid Build Coastguard Worker 1592*8fb009dcSAndroid Build Coastguard Worker add r3,r3,r0 1593*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 @ from BODY_00_15 1594*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r3 1595*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#19 @ Sigma1(e) 1596*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1597*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1598*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 @ h+=X[i] 1599*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#11*4] 1600*8fb009dcSAndroid Build Coastguard Worker eor r2,r6,r7 1601*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#6 @ h+=Sigma1(e) 1602*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r5 1603*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r3 @ h+=K256[i] 1604*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r7 @ Ch(e,f,g) 1605*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#11 1606*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 @ h+=Ch(e,f,g) 1607*8fb009dcSAndroid Build Coastguard Worker#if 27==31 1608*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1609*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1610*8fb009dcSAndroid Build Coastguard Worker#endif 1611*8fb009dcSAndroid Build Coastguard Worker#if 27<15 1612*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1613*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1614*8fb009dcSAndroid Build Coastguard Worker# else 1615*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1616*8fb009dcSAndroid Build Coastguard Worker# endif 1617*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 @ a^b, b^c in next round 1618*8fb009dcSAndroid Build Coastguard Worker#else 1619*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#13*4] @ from future BODY_16_xx 1620*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 @ a^b, b^c in next round 1621*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#10*4] @ from future BODY_16_xx 1622*8fb009dcSAndroid Build Coastguard Worker#endif 1623*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#20 @ Sigma0(a) 1624*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1625*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r8 @ d+=h 1626*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r10 @ Maj(a,b,c) 1627*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#2 @ h+=Sigma0(a) 1628*8fb009dcSAndroid Build Coastguard Worker @ add r8,r8,r12 @ h+=Maj(a,b,c) 1629*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#13*4] @ 28 1630*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#10*4] 1631*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1632*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 @ h+=Maj(a,b,c) from the past 1633*8fb009dcSAndroid Build Coastguard Worker mov r12,r1,ror#17 1634*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1635*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,ror#19 1636*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1637*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#12*4] 1638*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1639*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#5*4] 1640*8fb009dcSAndroid Build Coastguard Worker 1641*8fb009dcSAndroid Build Coastguard Worker add r12,r12,r0 1642*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 @ from BODY_00_15 1643*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r12 1644*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#19 @ Sigma1(e) 1645*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1646*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 1647*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 @ h+=X[i] 1648*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#12*4] 1649*8fb009dcSAndroid Build Coastguard Worker eor r2,r5,r6 1650*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#6 @ h+=Sigma1(e) 1651*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r4 1652*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r12 @ h+=K256[i] 1653*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r6 @ Ch(e,f,g) 1654*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#11 1655*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 @ h+=Ch(e,f,g) 1656*8fb009dcSAndroid Build Coastguard Worker#if 28==31 1657*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 1658*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 1659*8fb009dcSAndroid Build Coastguard Worker#endif 1660*8fb009dcSAndroid Build Coastguard Worker#if 28<15 1661*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1662*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1663*8fb009dcSAndroid Build Coastguard Worker# else 1664*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1665*8fb009dcSAndroid Build Coastguard Worker# endif 1666*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 @ a^b, b^c in next round 1667*8fb009dcSAndroid Build Coastguard Worker#else 1668*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#14*4] @ from future BODY_16_xx 1669*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 @ a^b, b^c in next round 1670*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#11*4] @ from future BODY_16_xx 1671*8fb009dcSAndroid Build Coastguard Worker#endif 1672*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#20 @ Sigma0(a) 1673*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 1674*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r7 @ d+=h 1675*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r9 @ Maj(a,b,c) 1676*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#2 @ h+=Sigma0(a) 1677*8fb009dcSAndroid Build Coastguard Worker @ add r7,r7,r3 @ h+=Maj(a,b,c) 1678*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#14*4] @ 29 1679*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#11*4] 1680*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1681*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 @ h+=Maj(a,b,c) from the past 1682*8fb009dcSAndroid Build Coastguard Worker mov r3,r1,ror#17 1683*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1684*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,ror#19 1685*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1686*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#13*4] 1687*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1688*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#6*4] 1689*8fb009dcSAndroid Build Coastguard Worker 1690*8fb009dcSAndroid Build Coastguard Worker add r3,r3,r0 1691*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 @ from BODY_00_15 1692*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r3 1693*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#19 @ Sigma1(e) 1694*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1695*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1696*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 @ h+=X[i] 1697*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#13*4] 1698*8fb009dcSAndroid Build Coastguard Worker eor r2,r4,r5 1699*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#6 @ h+=Sigma1(e) 1700*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r11 1701*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3 @ h+=K256[i] 1702*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r5 @ Ch(e,f,g) 1703*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#11 1704*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 @ h+=Ch(e,f,g) 1705*8fb009dcSAndroid Build Coastguard Worker#if 29==31 1706*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1707*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1708*8fb009dcSAndroid Build Coastguard Worker#endif 1709*8fb009dcSAndroid Build Coastguard Worker#if 29<15 1710*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1711*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1712*8fb009dcSAndroid Build Coastguard Worker# else 1713*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1714*8fb009dcSAndroid Build Coastguard Worker# endif 1715*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 @ a^b, b^c in next round 1716*8fb009dcSAndroid Build Coastguard Worker#else 1717*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#15*4] @ from future BODY_16_xx 1718*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 @ a^b, b^c in next round 1719*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#12*4] @ from future BODY_16_xx 1720*8fb009dcSAndroid Build Coastguard Worker#endif 1721*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#20 @ Sigma0(a) 1722*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1723*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r6 @ d+=h 1724*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r8 @ Maj(a,b,c) 1725*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#2 @ h+=Sigma0(a) 1726*8fb009dcSAndroid Build Coastguard Worker @ add r6,r6,r12 @ h+=Maj(a,b,c) 1727*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#15*4] @ 30 1728*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#12*4] 1729*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1730*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 @ h+=Maj(a,b,c) from the past 1731*8fb009dcSAndroid Build Coastguard Worker mov r12,r1,ror#17 1732*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1733*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,ror#19 1734*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1735*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#14*4] 1736*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1737*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#7*4] 1738*8fb009dcSAndroid Build Coastguard Worker 1739*8fb009dcSAndroid Build Coastguard Worker add r12,r12,r0 1740*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 @ from BODY_00_15 1741*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r12 1742*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#19 @ Sigma1(e) 1743*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1744*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r14],#4 @ *K256++ 1745*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 @ h+=X[i] 1746*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#14*4] 1747*8fb009dcSAndroid Build Coastguard Worker eor r2,r11,r4 1748*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#6 @ h+=Sigma1(e) 1749*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r10 1750*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12 @ h+=K256[i] 1751*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r4 @ Ch(e,f,g) 1752*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#11 1753*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 @ h+=Ch(e,f,g) 1754*8fb009dcSAndroid Build Coastguard Worker#if 30==31 1755*8fb009dcSAndroid Build Coastguard Worker and r12,r12,#0xff 1756*8fb009dcSAndroid Build Coastguard Worker cmp r12,#0xf2 @ done? 1757*8fb009dcSAndroid Build Coastguard Worker#endif 1758*8fb009dcSAndroid Build Coastguard Worker#if 30<15 1759*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1760*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1761*8fb009dcSAndroid Build Coastguard Worker# else 1762*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1763*8fb009dcSAndroid Build Coastguard Worker# endif 1764*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 @ a^b, b^c in next round 1765*8fb009dcSAndroid Build Coastguard Worker#else 1766*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#0*4] @ from future BODY_16_xx 1767*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 @ a^b, b^c in next round 1768*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#13*4] @ from future BODY_16_xx 1769*8fb009dcSAndroid Build Coastguard Worker#endif 1770*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#20 @ Sigma0(a) 1771*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 @ (b^c)&=(a^b) 1772*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r5 @ d+=h 1773*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r7 @ Maj(a,b,c) 1774*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#2 @ h+=Sigma0(a) 1775*8fb009dcSAndroid Build Coastguard Worker @ add r5,r5,r3 @ h+=Maj(a,b,c) 1776*8fb009dcSAndroid Build Coastguard Worker @ ldr r2,[sp,#0*4] @ 31 1777*8fb009dcSAndroid Build Coastguard Worker @ ldr r1,[sp,#13*4] 1778*8fb009dcSAndroid Build Coastguard Worker mov r0,r2,ror#7 1779*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 @ h+=Maj(a,b,c) from the past 1780*8fb009dcSAndroid Build Coastguard Worker mov r3,r1,ror#17 1781*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,ror#18 1782*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,ror#19 1783*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1784*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#15*4] 1785*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1786*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#8*4] 1787*8fb009dcSAndroid Build Coastguard Worker 1788*8fb009dcSAndroid Build Coastguard Worker add r3,r3,r0 1789*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 @ from BODY_00_15 1790*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r3 1791*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#19 @ Sigma1(e) 1792*8fb009dcSAndroid Build Coastguard Worker add r2,r2,r1 @ X[i] 1793*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r14],#4 @ *K256++ 1794*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 @ h+=X[i] 1795*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#15*4] 1796*8fb009dcSAndroid Build Coastguard Worker eor r2,r10,r11 1797*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#6 @ h+=Sigma1(e) 1798*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r9 1799*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r3 @ h+=K256[i] 1800*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r11 @ Ch(e,f,g) 1801*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#11 1802*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 @ h+=Ch(e,f,g) 1803*8fb009dcSAndroid Build Coastguard Worker#if 31==31 1804*8fb009dcSAndroid Build Coastguard Worker and r3,r3,#0xff 1805*8fb009dcSAndroid Build Coastguard Worker cmp r3,#0xf2 @ done? 1806*8fb009dcSAndroid Build Coastguard Worker#endif 1807*8fb009dcSAndroid Build Coastguard Worker#if 31<15 1808*8fb009dcSAndroid Build Coastguard Worker# if __ARM_ARCH>=7 1809*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r1],#4 @ prefetch 1810*8fb009dcSAndroid Build Coastguard Worker# else 1811*8fb009dcSAndroid Build Coastguard Worker ldrb r2,[r1,#3] 1812*8fb009dcSAndroid Build Coastguard Worker# endif 1813*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ a^b, b^c in next round 1814*8fb009dcSAndroid Build Coastguard Worker#else 1815*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#1*4] @ from future BODY_16_xx 1816*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 @ a^b, b^c in next round 1817*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#14*4] @ from future BODY_16_xx 1818*8fb009dcSAndroid Build Coastguard Worker#endif 1819*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#20 @ Sigma0(a) 1820*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 @ (b^c)&=(a^b) 1821*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r4 @ d+=h 1822*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r6 @ Maj(a,b,c) 1823*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#2 @ h+=Sigma0(a) 1824*8fb009dcSAndroid Build Coastguard Worker @ add r4,r4,r12 @ h+=Maj(a,b,c) 1825*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=7 1826*8fb009dcSAndroid Build Coastguard Worker ite eq @ Thumb2 thing, sanity check in ARM 1827*8fb009dcSAndroid Build Coastguard Worker#endif 1828*8fb009dcSAndroid Build Coastguard Worker ldreq r3,[sp,#16*4] @ pull ctx 1829*8fb009dcSAndroid Build Coastguard Worker bne .Lrounds_16_xx 1830*8fb009dcSAndroid Build Coastguard Worker 1831*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 @ h+=Maj(a,b,c) from the past 1832*8fb009dcSAndroid Build Coastguard Worker ldr r0,[r3,#0] 1833*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r3,#4] 1834*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r3,#8] 1835*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0 1836*8fb009dcSAndroid Build Coastguard Worker ldr r0,[r3,#12] 1837*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 1838*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r3,#16] 1839*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 1840*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r3,#20] 1841*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0 1842*8fb009dcSAndroid Build Coastguard Worker ldr r0,[r3,#24] 1843*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 1844*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r3,#28] 1845*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12 1846*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#17*4] @ pull inp 1847*8fb009dcSAndroid Build Coastguard Worker ldr r12,[sp,#18*4] @ pull inp+len 1848*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0 1849*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 1850*8fb009dcSAndroid Build Coastguard Worker stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} 1851*8fb009dcSAndroid Build Coastguard Worker cmp r1,r12 1852*8fb009dcSAndroid Build Coastguard Worker sub r14,r14,#256 @ rewind Ktbl 1853*8fb009dcSAndroid Build Coastguard Worker bne .Loop 1854*8fb009dcSAndroid Build Coastguard Worker 1855*8fb009dcSAndroid Build Coastguard Worker add sp,sp,#19*4 @ destroy frame 1856*8fb009dcSAndroid Build Coastguard Worker#if __ARM_ARCH>=5 1857*8fb009dcSAndroid Build Coastguard Worker ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc} 1858*8fb009dcSAndroid Build Coastguard Worker#else 1859*8fb009dcSAndroid Build Coastguard Worker ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr} 1860*8fb009dcSAndroid Build Coastguard Worker tst lr,#1 1861*8fb009dcSAndroid Build Coastguard Worker moveq pc,lr @ be binary compatible with V4, yet 1862*8fb009dcSAndroid Build Coastguard Worker.word 0xe12fff1e @ interoperable with Thumb ISA:-) 1863*8fb009dcSAndroid Build Coastguard Worker#endif 1864*8fb009dcSAndroid Build Coastguard Worker.size sha256_block_data_order_nohw,.-sha256_block_data_order_nohw 1865*8fb009dcSAndroid Build Coastguard Worker#if __ARM_MAX_ARCH__>=7 1866*8fb009dcSAndroid Build Coastguard Worker.arch armv7-a 1867*8fb009dcSAndroid Build Coastguard Worker.fpu neon 1868*8fb009dcSAndroid Build Coastguard Worker 1869*8fb009dcSAndroid Build Coastguard Worker.LK256_shortcut_neon: 1870*8fb009dcSAndroid Build Coastguard Worker@ PC is 8 bytes ahead in Arm mode and 4 bytes ahead in Thumb mode. 1871*8fb009dcSAndroid Build Coastguard Worker#if defined(__thumb2__) 1872*8fb009dcSAndroid Build Coastguard Worker.word K256-(.LK256_add_neon+4) 1873*8fb009dcSAndroid Build Coastguard Worker#else 1874*8fb009dcSAndroid Build Coastguard Worker.word K256-(.LK256_add_neon+8) 1875*8fb009dcSAndroid Build Coastguard Worker#endif 1876*8fb009dcSAndroid Build Coastguard Worker 1877*8fb009dcSAndroid Build Coastguard Worker.globl sha256_block_data_order_neon 1878*8fb009dcSAndroid Build Coastguard Worker.hidden sha256_block_data_order_neon 1879*8fb009dcSAndroid Build Coastguard Worker.type sha256_block_data_order_neon,%function 1880*8fb009dcSAndroid Build Coastguard Worker.align 5 1881*8fb009dcSAndroid Build Coastguard Worker.skip 16 1882*8fb009dcSAndroid Build Coastguard Workersha256_block_data_order_neon: 1883*8fb009dcSAndroid Build Coastguard Worker stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} 1884*8fb009dcSAndroid Build Coastguard Worker 1885*8fb009dcSAndroid Build Coastguard Worker sub r11,sp,#16*4+16 1886*8fb009dcSAndroid Build Coastguard Worker 1887*8fb009dcSAndroid Build Coastguard Worker @ K256 is just at the boundary of being easily referenced by an ADR from 1888*8fb009dcSAndroid Build Coastguard Worker @ this function. In Arm mode, when building with __ARM_ARCH=6, it does 1889*8fb009dcSAndroid Build Coastguard Worker @ not fit. By moving code around, we could make it fit, but this is too 1890*8fb009dcSAndroid Build Coastguard Worker @ fragile. For simplicity, just load the offset from 1891*8fb009dcSAndroid Build Coastguard Worker @ .LK256_shortcut_neon. 1892*8fb009dcSAndroid Build Coastguard Worker @ 1893*8fb009dcSAndroid Build Coastguard Worker @ TODO(davidben): adrl would avoid a load, but clang-assembler does not 1894*8fb009dcSAndroid Build Coastguard Worker @ support it. We might be able to emulate it with a macro, but Android's 1895*8fb009dcSAndroid Build Coastguard Worker @ did not work when I tried it. 1896*8fb009dcSAndroid Build Coastguard Worker @ https://android.googlesource.com/platform/ndk/+/refs/heads/master/docs/ClangMigration.md#arm 1897*8fb009dcSAndroid Build Coastguard Worker ldr r14,.LK256_shortcut_neon 1898*8fb009dcSAndroid Build Coastguard Worker.LK256_add_neon: 1899*8fb009dcSAndroid Build Coastguard Worker add r14,pc,r14 1900*8fb009dcSAndroid Build Coastguard Worker 1901*8fb009dcSAndroid Build Coastguard Worker bic r11,r11,#15 @ align for 128-bit stores 1902*8fb009dcSAndroid Build Coastguard Worker mov r12,sp 1903*8fb009dcSAndroid Build Coastguard Worker mov sp,r11 @ alloca 1904*8fb009dcSAndroid Build Coastguard Worker add r2,r1,r2,lsl#6 @ len to point at the end of inp 1905*8fb009dcSAndroid Build Coastguard Worker 1906*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q0},[r1]! 1907*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q1},[r1]! 1908*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q2},[r1]! 1909*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q3},[r1]! 1910*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 1911*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q9},[r14,:128]! 1912*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q10},[r14,:128]! 1913*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q11},[r14,:128]! 1914*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q0,q0 @ yes, even on 1915*8fb009dcSAndroid Build Coastguard Worker str r0,[sp,#64] 1916*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q1,q1 @ big-endian 1917*8fb009dcSAndroid Build Coastguard Worker str r1,[sp,#68] 1918*8fb009dcSAndroid Build Coastguard Worker mov r1,sp 1919*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q2,q2 1920*8fb009dcSAndroid Build Coastguard Worker str r2,[sp,#72] 1921*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q3,q3 1922*8fb009dcSAndroid Build Coastguard Worker str r12,[sp,#76] @ save original sp 1923*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q0 1924*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q9,q9,q1 1925*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 1926*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q10,q10,q2 1927*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q9},[r1,:128]! 1928*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q11,q11,q3 1929*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q10},[r1,:128]! 1930*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q11},[r1,:128]! 1931*8fb009dcSAndroid Build Coastguard Worker 1932*8fb009dcSAndroid Build Coastguard Worker ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11} 1933*8fb009dcSAndroid Build Coastguard Worker sub r1,r1,#64 1934*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#0] 1935*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r12 1936*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 1937*8fb009dcSAndroid Build Coastguard Worker b .L_00_48 1938*8fb009dcSAndroid Build Coastguard Worker 1939*8fb009dcSAndroid Build Coastguard Worker.align 4 1940*8fb009dcSAndroid Build Coastguard Worker.L_00_48: 1941*8fb009dcSAndroid Build Coastguard Worker vext.8 q8,q0,q1,#4 1942*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 1943*8fb009dcSAndroid Build Coastguard Worker eor r2,r9,r10 1944*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 1945*8fb009dcSAndroid Build Coastguard Worker vext.8 q9,q2,q3,#4 1946*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 1947*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r8 1948*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r8,ror#19 1949*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q10,q8,#7 1950*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#11 1951*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r10 1952*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q0,q0,q9 1953*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r12,ror#6 1954*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 1955*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q9,q8,#3 1956*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#20 1957*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 1958*8fb009dcSAndroid Build Coastguard Worker vsli.32 q10,q8,#25 1959*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#4] 1960*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 1961*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q11,q8,#18 1962*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r11 1963*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#2 1964*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r5 1965*8fb009dcSAndroid Build Coastguard Worker veor q9,q9,q10 1966*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 1967*8fb009dcSAndroid Build Coastguard Worker vsli.32 q11,q8,#14 1968*8fb009dcSAndroid Build Coastguard Worker eor r2,r8,r9 1969*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 1970*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d7,#17 1971*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 1972*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r7 1973*8fb009dcSAndroid Build Coastguard Worker veor q9,q9,q11 1974*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r7,ror#19 1975*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#11 1976*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d7,#15 1977*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r9 1978*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3,ror#6 1979*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d25,d7,#10 1980*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 1981*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#20 1982*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q0,q0,q9 1983*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 1984*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#8] 1985*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 1986*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 1987*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r10 1988*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d7,#19 1989*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#2 1990*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r4 1991*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d7,#13 1992*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 1993*8fb009dcSAndroid Build Coastguard Worker eor r2,r7,r8 1994*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 1995*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 1996*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 1997*8fb009dcSAndroid Build Coastguard Worker vadd.i32 d0,d0,d25 1998*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r6 1999*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r6,ror#19 2000*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d0,#17 2001*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#11 2002*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r8 2003*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d0,#15 2004*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12,ror#6 2005*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 2006*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d25,d0,#10 2007*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#20 2008*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 2009*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2010*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#12] 2011*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2012*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d0,#19 2013*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r9 2014*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#2 2015*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r11 2016*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 2017*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 2018*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d0,#13 2019*8fb009dcSAndroid Build Coastguard Worker eor r2,r6,r7 2020*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 2021*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2022*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 2023*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r5 2024*8fb009dcSAndroid Build Coastguard Worker vadd.i32 d1,d1,d25 2025*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r5,ror#19 2026*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#11 2027*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q0 2028*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r7 2029*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r3,ror#6 2030*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 2031*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#20 2032*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 2033*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#16] 2034*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2035*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r8 2036*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 2037*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#2 2038*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r10 2039*8fb009dcSAndroid Build Coastguard Worker vext.8 q8,q1,q2,#4 2040*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 2041*8fb009dcSAndroid Build Coastguard Worker eor r2,r5,r6 2042*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 2043*8fb009dcSAndroid Build Coastguard Worker vext.8 q9,q3,q0,#4 2044*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 2045*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r4 2046*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r4,ror#19 2047*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q10,q8,#7 2048*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#11 2049*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r6 2050*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q1,q1,q9 2051*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r12,ror#6 2052*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 2053*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q9,q8,#3 2054*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#20 2055*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 2056*8fb009dcSAndroid Build Coastguard Worker vsli.32 q10,q8,#25 2057*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#20] 2058*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2059*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q11,q8,#18 2060*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r7 2061*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#2 2062*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r9 2063*8fb009dcSAndroid Build Coastguard Worker veor q9,q9,q10 2064*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 2065*8fb009dcSAndroid Build Coastguard Worker vsli.32 q11,q8,#14 2066*8fb009dcSAndroid Build Coastguard Worker eor r2,r4,r5 2067*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 2068*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d1,#17 2069*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 2070*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r11 2071*8fb009dcSAndroid Build Coastguard Worker veor q9,q9,q11 2072*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r11,ror#19 2073*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#11 2074*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d1,#15 2075*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r5 2076*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3,ror#6 2077*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d25,d1,#10 2078*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 2079*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#20 2080*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q1,q1,q9 2081*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 2082*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#24] 2083*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2084*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2085*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r6 2086*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d1,#19 2087*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#2 2088*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r8 2089*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d1,#13 2090*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 2091*8fb009dcSAndroid Build Coastguard Worker eor r2,r11,r4 2092*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2093*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 2094*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 2095*8fb009dcSAndroid Build Coastguard Worker vadd.i32 d2,d2,d25 2096*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r10 2097*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r10,ror#19 2098*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d2,#17 2099*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#11 2100*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r4 2101*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d2,#15 2102*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12,ror#6 2103*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 2104*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d25,d2,#10 2105*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#20 2106*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 2107*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2108*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#28] 2109*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2110*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d2,#19 2111*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r5 2112*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#2 2113*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r7 2114*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 2115*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 2116*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d2,#13 2117*8fb009dcSAndroid Build Coastguard Worker eor r2,r10,r11 2118*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 2119*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2120*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 2121*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r9 2122*8fb009dcSAndroid Build Coastguard Worker vadd.i32 d3,d3,d25 2123*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r9,ror#19 2124*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#11 2125*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q1 2126*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r11 2127*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r3,ror#6 2128*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 2129*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#20 2130*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 2131*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#32] 2132*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2133*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r4 2134*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 2135*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#2 2136*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r6 2137*8fb009dcSAndroid Build Coastguard Worker vext.8 q8,q2,q3,#4 2138*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 2139*8fb009dcSAndroid Build Coastguard Worker eor r2,r9,r10 2140*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 2141*8fb009dcSAndroid Build Coastguard Worker vext.8 q9,q0,q1,#4 2142*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 2143*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r8 2144*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r8,ror#19 2145*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q10,q8,#7 2146*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#11 2147*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r10 2148*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q2,q2,q9 2149*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r12,ror#6 2150*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 2151*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q9,q8,#3 2152*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#20 2153*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 2154*8fb009dcSAndroid Build Coastguard Worker vsli.32 q10,q8,#25 2155*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#36] 2156*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2157*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q11,q8,#18 2158*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r11 2159*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#2 2160*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r5 2161*8fb009dcSAndroid Build Coastguard Worker veor q9,q9,q10 2162*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 2163*8fb009dcSAndroid Build Coastguard Worker vsli.32 q11,q8,#14 2164*8fb009dcSAndroid Build Coastguard Worker eor r2,r8,r9 2165*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 2166*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d3,#17 2167*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 2168*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r7 2169*8fb009dcSAndroid Build Coastguard Worker veor q9,q9,q11 2170*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r7,ror#19 2171*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#11 2172*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d3,#15 2173*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r9 2174*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3,ror#6 2175*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d25,d3,#10 2176*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 2177*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#20 2178*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q2,q2,q9 2179*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 2180*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#40] 2181*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2182*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2183*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r10 2184*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d3,#19 2185*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#2 2186*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r4 2187*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d3,#13 2188*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 2189*8fb009dcSAndroid Build Coastguard Worker eor r2,r7,r8 2190*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2191*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 2192*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 2193*8fb009dcSAndroid Build Coastguard Worker vadd.i32 d4,d4,d25 2194*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r6 2195*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r6,ror#19 2196*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d4,#17 2197*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#11 2198*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r8 2199*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d4,#15 2200*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12,ror#6 2201*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 2202*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d25,d4,#10 2203*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#20 2204*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 2205*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2206*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#44] 2207*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2208*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d4,#19 2209*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r9 2210*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#2 2211*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r11 2212*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 2213*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 2214*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d4,#13 2215*8fb009dcSAndroid Build Coastguard Worker eor r2,r6,r7 2216*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 2217*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2218*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 2219*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r5 2220*8fb009dcSAndroid Build Coastguard Worker vadd.i32 d5,d5,d25 2221*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r5,ror#19 2222*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#11 2223*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q2 2224*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r7 2225*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r3,ror#6 2226*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 2227*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#20 2228*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 2229*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#48] 2230*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2231*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r8 2232*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 2233*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#2 2234*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r10 2235*8fb009dcSAndroid Build Coastguard Worker vext.8 q8,q3,q0,#4 2236*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 2237*8fb009dcSAndroid Build Coastguard Worker eor r2,r5,r6 2238*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 2239*8fb009dcSAndroid Build Coastguard Worker vext.8 q9,q1,q2,#4 2240*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 2241*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r4 2242*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r4,ror#19 2243*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q10,q8,#7 2244*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#11 2245*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r6 2246*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q3,q3,q9 2247*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r12,ror#6 2248*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 2249*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q9,q8,#3 2250*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#20 2251*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 2252*8fb009dcSAndroid Build Coastguard Worker vsli.32 q10,q8,#25 2253*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#52] 2254*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2255*8fb009dcSAndroid Build Coastguard Worker vshr.u32 q11,q8,#18 2256*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r7 2257*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#2 2258*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r9 2259*8fb009dcSAndroid Build Coastguard Worker veor q9,q9,q10 2260*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 2261*8fb009dcSAndroid Build Coastguard Worker vsli.32 q11,q8,#14 2262*8fb009dcSAndroid Build Coastguard Worker eor r2,r4,r5 2263*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 2264*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d5,#17 2265*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 2266*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r11 2267*8fb009dcSAndroid Build Coastguard Worker veor q9,q9,q11 2268*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r11,ror#19 2269*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#11 2270*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d5,#15 2271*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r5 2272*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3,ror#6 2273*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d25,d5,#10 2274*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 2275*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#20 2276*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q3,q3,q9 2277*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 2278*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#56] 2279*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2280*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2281*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r6 2282*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d5,#19 2283*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#2 2284*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r8 2285*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d5,#13 2286*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 2287*8fb009dcSAndroid Build Coastguard Worker eor r2,r11,r4 2288*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2289*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 2290*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 2291*8fb009dcSAndroid Build Coastguard Worker vadd.i32 d6,d6,d25 2292*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r10 2293*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r10,ror#19 2294*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d6,#17 2295*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#11 2296*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r4 2297*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d6,#15 2298*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12,ror#6 2299*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 2300*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d25,d6,#10 2301*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#20 2302*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 2303*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2304*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#60] 2305*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2306*8fb009dcSAndroid Build Coastguard Worker vshr.u32 d24,d6,#19 2307*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r5 2308*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#2 2309*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r7 2310*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 2311*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 2312*8fb009dcSAndroid Build Coastguard Worker vsli.32 d24,d6,#13 2313*8fb009dcSAndroid Build Coastguard Worker eor r2,r10,r11 2314*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 2315*8fb009dcSAndroid Build Coastguard Worker veor d25,d25,d24 2316*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 2317*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r9 2318*8fb009dcSAndroid Build Coastguard Worker vadd.i32 d7,d7,d25 2319*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r9,ror#19 2320*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#11 2321*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q3 2322*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r11 2323*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r3,ror#6 2324*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 2325*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#20 2326*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 2327*8fb009dcSAndroid Build Coastguard Worker ldr r2,[r14] 2328*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2329*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r4 2330*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 2331*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#2 2332*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r6 2333*8fb009dcSAndroid Build Coastguard Worker teq r2,#0 @ check for K256 terminator 2334*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#0] 2335*8fb009dcSAndroid Build Coastguard Worker sub r1,r1,#64 2336*8fb009dcSAndroid Build Coastguard Worker bne .L_00_48 2337*8fb009dcSAndroid Build Coastguard Worker 2338*8fb009dcSAndroid Build Coastguard Worker ldr r1,[sp,#68] 2339*8fb009dcSAndroid Build Coastguard Worker ldr r0,[sp,#72] 2340*8fb009dcSAndroid Build Coastguard Worker sub r14,r14,#256 @ rewind r14 2341*8fb009dcSAndroid Build Coastguard Worker teq r1,r0 2342*8fb009dcSAndroid Build Coastguard Worker it eq 2343*8fb009dcSAndroid Build Coastguard Worker subeq r1,r1,#64 @ avoid SEGV 2344*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q0},[r1]! @ load next input block 2345*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q1},[r1]! 2346*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q2},[r1]! 2347*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q3},[r1]! 2348*8fb009dcSAndroid Build Coastguard Worker it ne 2349*8fb009dcSAndroid Build Coastguard Worker strne r1,[sp,#68] 2350*8fb009dcSAndroid Build Coastguard Worker mov r1,sp 2351*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 2352*8fb009dcSAndroid Build Coastguard Worker eor r2,r9,r10 2353*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 2354*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 2355*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 2356*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r8 2357*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r8,ror#19 2358*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#11 2359*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r10 2360*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q0,q0 2361*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r12,ror#6 2362*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 2363*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#20 2364*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 2365*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q0 2366*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#4] 2367*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2368*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r11 2369*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#2 2370*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r5 2371*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 2372*8fb009dcSAndroid Build Coastguard Worker eor r2,r8,r9 2373*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 2374*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 2375*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r7 2376*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r7,ror#19 2377*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#11 2378*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r9 2379*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3,ror#6 2380*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 2381*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#20 2382*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 2383*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#8] 2384*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2385*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r10 2386*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#2 2387*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r4 2388*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 2389*8fb009dcSAndroid Build Coastguard Worker eor r2,r7,r8 2390*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 2391*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 2392*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r6 2393*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r6,ror#19 2394*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#11 2395*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r8 2396*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12,ror#6 2397*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 2398*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#20 2399*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 2400*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#12] 2401*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2402*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r9 2403*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#2 2404*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r11 2405*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 2406*8fb009dcSAndroid Build Coastguard Worker eor r2,r6,r7 2407*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 2408*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 2409*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r5 2410*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r5,ror#19 2411*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#11 2412*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r7 2413*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r3,ror#6 2414*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 2415*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#20 2416*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 2417*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#16] 2418*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2419*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r8 2420*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#2 2421*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r10 2422*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 2423*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 2424*8fb009dcSAndroid Build Coastguard Worker eor r2,r5,r6 2425*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 2426*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 2427*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 2428*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r4 2429*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r4,ror#19 2430*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#11 2431*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r6 2432*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q1,q1 2433*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r12,ror#6 2434*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 2435*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#20 2436*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 2437*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q1 2438*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#20] 2439*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2440*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r7 2441*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#2 2442*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r9 2443*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 2444*8fb009dcSAndroid Build Coastguard Worker eor r2,r4,r5 2445*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 2446*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 2447*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r11 2448*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r11,ror#19 2449*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#11 2450*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r5 2451*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3,ror#6 2452*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 2453*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#20 2454*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 2455*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#24] 2456*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2457*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r6 2458*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#2 2459*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r8 2460*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 2461*8fb009dcSAndroid Build Coastguard Worker eor r2,r11,r4 2462*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 2463*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 2464*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r10 2465*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r10,ror#19 2466*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#11 2467*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r4 2468*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12,ror#6 2469*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 2470*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#20 2471*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 2472*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#28] 2473*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2474*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r5 2475*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#2 2476*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r7 2477*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 2478*8fb009dcSAndroid Build Coastguard Worker eor r2,r10,r11 2479*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 2480*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 2481*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r9 2482*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r9,ror#19 2483*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#11 2484*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r11 2485*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r3,ror#6 2486*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 2487*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#20 2488*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 2489*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#32] 2490*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2491*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r4 2492*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#2 2493*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r6 2494*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 2495*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 2496*8fb009dcSAndroid Build Coastguard Worker eor r2,r9,r10 2497*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#5 2498*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 2499*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 2500*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r8 2501*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r8,ror#19 2502*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#11 2503*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r10 2504*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q2,q2 2505*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r12,ror#6 2506*8fb009dcSAndroid Build Coastguard Worker eor r12,r4,r5 2507*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r4,ror#20 2508*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r2 2509*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q2 2510*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#36] 2511*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2512*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r11 2513*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r0,ror#2 2514*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r5 2515*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 2516*8fb009dcSAndroid Build Coastguard Worker eor r2,r8,r9 2517*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#5 2518*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r3 2519*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r7 2520*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r7,ror#19 2521*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#11 2522*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r9 2523*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3,ror#6 2524*8fb009dcSAndroid Build Coastguard Worker eor r3,r11,r4 2525*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r11,ror#20 2526*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r2 2527*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#40] 2528*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2529*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r10 2530*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r0,ror#2 2531*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r4 2532*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 2533*8fb009dcSAndroid Build Coastguard Worker eor r2,r7,r8 2534*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#5 2535*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r12 2536*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r6 2537*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r6,ror#19 2538*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#11 2539*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r8 2540*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12,ror#6 2541*8fb009dcSAndroid Build Coastguard Worker eor r12,r10,r11 2542*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r10,ror#20 2543*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r2 2544*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#44] 2545*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2546*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r9 2547*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r0,ror#2 2548*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r11 2549*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 2550*8fb009dcSAndroid Build Coastguard Worker eor r2,r6,r7 2551*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#5 2552*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r3 2553*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r5 2554*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r5,ror#19 2555*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#11 2556*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r7 2557*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r3,ror#6 2558*8fb009dcSAndroid Build Coastguard Worker eor r3,r9,r10 2559*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r9,ror#20 2560*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r2 2561*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#48] 2562*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2563*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r8 2564*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0,ror#2 2565*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r10 2566*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 2567*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 2568*8fb009dcSAndroid Build Coastguard Worker eor r2,r5,r6 2569*8fb009dcSAndroid Build Coastguard Worker eor r0,r4,r4,ror#5 2570*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r12 2571*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q8},[r14,:128]! 2572*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r4 2573*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r4,ror#19 2574*8fb009dcSAndroid Build Coastguard Worker eor r0,r8,r8,ror#11 2575*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r6 2576*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q3,q3 2577*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r12,ror#6 2578*8fb009dcSAndroid Build Coastguard Worker eor r12,r8,r9 2579*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r8,ror#20 2580*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r2 2581*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q8,q8,q3 2582*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#52] 2583*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2584*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r7 2585*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r0,ror#2 2586*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r9 2587*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 2588*8fb009dcSAndroid Build Coastguard Worker eor r2,r4,r5 2589*8fb009dcSAndroid Build Coastguard Worker eor r0,r11,r11,ror#5 2590*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r3 2591*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r11 2592*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r11,ror#19 2593*8fb009dcSAndroid Build Coastguard Worker eor r0,r7,r7,ror#11 2594*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r5 2595*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3,ror#6 2596*8fb009dcSAndroid Build Coastguard Worker eor r3,r7,r8 2597*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r7,ror#20 2598*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r2 2599*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#56] 2600*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2601*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r6 2602*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r0,ror#2 2603*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r8 2604*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 2605*8fb009dcSAndroid Build Coastguard Worker eor r2,r11,r4 2606*8fb009dcSAndroid Build Coastguard Worker eor r0,r10,r10,ror#5 2607*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r12 2608*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r10 2609*8fb009dcSAndroid Build Coastguard Worker eor r12,r0,r10,ror#19 2610*8fb009dcSAndroid Build Coastguard Worker eor r0,r6,r6,ror#11 2611*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r4 2612*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12,ror#6 2613*8fb009dcSAndroid Build Coastguard Worker eor r12,r6,r7 2614*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r6,ror#20 2615*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r2 2616*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#60] 2617*8fb009dcSAndroid Build Coastguard Worker and r3,r3,r12 2618*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r5 2619*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r0,ror#2 2620*8fb009dcSAndroid Build Coastguard Worker eor r3,r3,r7 2621*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 2622*8fb009dcSAndroid Build Coastguard Worker eor r2,r10,r11 2623*8fb009dcSAndroid Build Coastguard Worker eor r0,r9,r9,ror#5 2624*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r3 2625*8fb009dcSAndroid Build Coastguard Worker and r2,r2,r9 2626*8fb009dcSAndroid Build Coastguard Worker eor r3,r0,r9,ror#19 2627*8fb009dcSAndroid Build Coastguard Worker eor r0,r5,r5,ror#11 2628*8fb009dcSAndroid Build Coastguard Worker eor r2,r2,r11 2629*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r3,ror#6 2630*8fb009dcSAndroid Build Coastguard Worker eor r3,r5,r6 2631*8fb009dcSAndroid Build Coastguard Worker eor r0,r0,r5,ror#20 2632*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r2 2633*8fb009dcSAndroid Build Coastguard Worker ldr r2,[sp,#64] 2634*8fb009dcSAndroid Build Coastguard Worker and r12,r12,r3 2635*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r4 2636*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0,ror#2 2637*8fb009dcSAndroid Build Coastguard Worker eor r12,r12,r6 2638*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q8},[r1,:128]! 2639*8fb009dcSAndroid Build Coastguard Worker ldr r0,[r2,#0] 2640*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r12 @ h+=Maj(a,b,c) from the past 2641*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r2,#4] 2642*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r2,#8] 2643*8fb009dcSAndroid Build Coastguard Worker ldr r1,[r2,#12] 2644*8fb009dcSAndroid Build Coastguard Worker add r4,r4,r0 @ accumulate 2645*8fb009dcSAndroid Build Coastguard Worker ldr r0,[r2,#16] 2646*8fb009dcSAndroid Build Coastguard Worker add r5,r5,r12 2647*8fb009dcSAndroid Build Coastguard Worker ldr r12,[r2,#20] 2648*8fb009dcSAndroid Build Coastguard Worker add r6,r6,r3 2649*8fb009dcSAndroid Build Coastguard Worker ldr r3,[r2,#24] 2650*8fb009dcSAndroid Build Coastguard Worker add r7,r7,r1 2651*8fb009dcSAndroid Build Coastguard Worker ldr r1,[r2,#28] 2652*8fb009dcSAndroid Build Coastguard Worker add r8,r8,r0 2653*8fb009dcSAndroid Build Coastguard Worker str r4,[r2],#4 2654*8fb009dcSAndroid Build Coastguard Worker add r9,r9,r12 2655*8fb009dcSAndroid Build Coastguard Worker str r5,[r2],#4 2656*8fb009dcSAndroid Build Coastguard Worker add r10,r10,r3 2657*8fb009dcSAndroid Build Coastguard Worker str r6,[r2],#4 2658*8fb009dcSAndroid Build Coastguard Worker add r11,r11,r1 2659*8fb009dcSAndroid Build Coastguard Worker str r7,[r2],#4 2660*8fb009dcSAndroid Build Coastguard Worker stmia r2,{r8,r9,r10,r11} 2661*8fb009dcSAndroid Build Coastguard Worker 2662*8fb009dcSAndroid Build Coastguard Worker ittte ne 2663*8fb009dcSAndroid Build Coastguard Worker movne r1,sp 2664*8fb009dcSAndroid Build Coastguard Worker ldrne r2,[sp,#0] 2665*8fb009dcSAndroid Build Coastguard Worker eorne r12,r12,r12 2666*8fb009dcSAndroid Build Coastguard Worker ldreq sp,[sp,#76] @ restore original sp 2667*8fb009dcSAndroid Build Coastguard Worker itt ne 2668*8fb009dcSAndroid Build Coastguard Worker eorne r3,r5,r6 2669*8fb009dcSAndroid Build Coastguard Worker bne .L_00_48 2670*8fb009dcSAndroid Build Coastguard Worker 2671*8fb009dcSAndroid Build Coastguard Worker ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} 2672*8fb009dcSAndroid Build Coastguard Worker.size sha256_block_data_order_neon,.-sha256_block_data_order_neon 2673*8fb009dcSAndroid Build Coastguard Worker#endif 2674*8fb009dcSAndroid Build Coastguard Worker#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) 2675*8fb009dcSAndroid Build Coastguard Worker 2676*8fb009dcSAndroid Build Coastguard Worker# if defined(__thumb2__) 2677*8fb009dcSAndroid Build Coastguard Worker# define INST(a,b,c,d) .byte c,d|0xc,a,b 2678*8fb009dcSAndroid Build Coastguard Worker# else 2679*8fb009dcSAndroid Build Coastguard Worker# define INST(a,b,c,d) .byte a,b,c,d 2680*8fb009dcSAndroid Build Coastguard Worker# endif 2681*8fb009dcSAndroid Build Coastguard Worker 2682*8fb009dcSAndroid Build Coastguard Worker.LK256_shortcut_hw: 2683*8fb009dcSAndroid Build Coastguard Worker@ PC is 8 bytes ahead in Arm mode and 4 bytes ahead in Thumb mode. 2684*8fb009dcSAndroid Build Coastguard Worker#if defined(__thumb2__) 2685*8fb009dcSAndroid Build Coastguard Worker.word K256-(.LK256_add_hw+4) 2686*8fb009dcSAndroid Build Coastguard Worker#else 2687*8fb009dcSAndroid Build Coastguard Worker.word K256-(.LK256_add_hw+8) 2688*8fb009dcSAndroid Build Coastguard Worker#endif 2689*8fb009dcSAndroid Build Coastguard Worker 2690*8fb009dcSAndroid Build Coastguard Worker.globl sha256_block_data_order_hw 2691*8fb009dcSAndroid Build Coastguard Worker.hidden sha256_block_data_order_hw 2692*8fb009dcSAndroid Build Coastguard Worker.type sha256_block_data_order_hw,%function 2693*8fb009dcSAndroid Build Coastguard Worker.align 5 2694*8fb009dcSAndroid Build Coastguard Workersha256_block_data_order_hw: 2695*8fb009dcSAndroid Build Coastguard Worker @ K256 is too far to reference from one ADR command in Thumb mode. In 2696*8fb009dcSAndroid Build Coastguard Worker @ Arm mode, we could make it fit by aligning the ADR offset to a 64-byte 2697*8fb009dcSAndroid Build Coastguard Worker @ boundary. For simplicity, just load the offset from .LK256_shortcut_hw. 2698*8fb009dcSAndroid Build Coastguard Worker ldr r3,.LK256_shortcut_hw 2699*8fb009dcSAndroid Build Coastguard Worker.LK256_add_hw: 2700*8fb009dcSAndroid Build Coastguard Worker add r3,pc,r3 2701*8fb009dcSAndroid Build Coastguard Worker 2702*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q0,q1},[r0] 2703*8fb009dcSAndroid Build Coastguard Worker add r2,r1,r2,lsl#6 @ len to point at the end of inp 2704*8fb009dcSAndroid Build Coastguard Worker b .Loop_v8 2705*8fb009dcSAndroid Build Coastguard Worker 2706*8fb009dcSAndroid Build Coastguard Worker.align 4 2707*8fb009dcSAndroid Build Coastguard Worker.Loop_v8: 2708*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q8,q9},[r1]! 2709*8fb009dcSAndroid Build Coastguard Worker vld1.8 {q10,q11},[r1]! 2710*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q12},[r3]! 2711*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q8,q8 2712*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q9,q9 2713*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q10,q10 2714*8fb009dcSAndroid Build Coastguard Worker vrev32.8 q11,q11 2715*8fb009dcSAndroid Build Coastguard Worker vmov q14,q0 @ offload 2716*8fb009dcSAndroid Build Coastguard Worker vmov q15,q1 2717*8fb009dcSAndroid Build Coastguard Worker teq r1,r2 2718*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q13},[r3]! 2719*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q12,q12,q8 2720*8fb009dcSAndroid Build Coastguard Worker INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9 2721*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2722*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 2723*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 2724*8fb009dcSAndroid Build Coastguard Worker INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11 2725*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q12},[r3]! 2726*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q13,q13,q9 2727*8fb009dcSAndroid Build Coastguard Worker INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10 2728*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2729*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 2730*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 2731*8fb009dcSAndroid Build Coastguard Worker INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8 2732*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q13},[r3]! 2733*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q12,q12,q10 2734*8fb009dcSAndroid Build Coastguard Worker INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11 2735*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2736*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 2737*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 2738*8fb009dcSAndroid Build Coastguard Worker INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9 2739*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q12},[r3]! 2740*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q13,q13,q11 2741*8fb009dcSAndroid Build Coastguard Worker INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8 2742*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2743*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 2744*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 2745*8fb009dcSAndroid Build Coastguard Worker INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10 2746*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q13},[r3]! 2747*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q12,q12,q8 2748*8fb009dcSAndroid Build Coastguard Worker INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9 2749*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2750*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 2751*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 2752*8fb009dcSAndroid Build Coastguard Worker INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11 2753*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q12},[r3]! 2754*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q13,q13,q9 2755*8fb009dcSAndroid Build Coastguard Worker INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10 2756*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2757*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 2758*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 2759*8fb009dcSAndroid Build Coastguard Worker INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8 2760*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q13},[r3]! 2761*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q12,q12,q10 2762*8fb009dcSAndroid Build Coastguard Worker INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11 2763*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2764*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 2765*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 2766*8fb009dcSAndroid Build Coastguard Worker INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9 2767*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q12},[r3]! 2768*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q13,q13,q11 2769*8fb009dcSAndroid Build Coastguard Worker INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8 2770*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2771*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 2772*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 2773*8fb009dcSAndroid Build Coastguard Worker INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10 2774*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q13},[r3]! 2775*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q12,q12,q8 2776*8fb009dcSAndroid Build Coastguard Worker INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9 2777*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2778*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 2779*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 2780*8fb009dcSAndroid Build Coastguard Worker INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11 2781*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q12},[r3]! 2782*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q13,q13,q9 2783*8fb009dcSAndroid Build Coastguard Worker INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10 2784*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2785*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 2786*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 2787*8fb009dcSAndroid Build Coastguard Worker INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8 2788*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q13},[r3]! 2789*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q12,q12,q10 2790*8fb009dcSAndroid Build Coastguard Worker INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11 2791*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2792*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 2793*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 2794*8fb009dcSAndroid Build Coastguard Worker INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9 2795*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q12},[r3]! 2796*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q13,q13,q11 2797*8fb009dcSAndroid Build Coastguard Worker INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8 2798*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2799*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 2800*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 2801*8fb009dcSAndroid Build Coastguard Worker INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10 2802*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q13},[r3]! 2803*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q12,q12,q8 2804*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2805*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 2806*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 2807*8fb009dcSAndroid Build Coastguard Worker 2808*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q12},[r3]! 2809*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q13,q13,q9 2810*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2811*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 2812*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 2813*8fb009dcSAndroid Build Coastguard Worker 2814*8fb009dcSAndroid Build Coastguard Worker vld1.32 {q13},[r3] 2815*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q12,q12,q10 2816*8fb009dcSAndroid Build Coastguard Worker sub r3,r3,#256-16 @ rewind 2817*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2818*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12 2819*8fb009dcSAndroid Build Coastguard Worker INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12 2820*8fb009dcSAndroid Build Coastguard Worker 2821*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q13,q13,q11 2822*8fb009dcSAndroid Build Coastguard Worker vmov q2,q0 2823*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13 2824*8fb009dcSAndroid Build Coastguard Worker INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13 2825*8fb009dcSAndroid Build Coastguard Worker 2826*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q0,q0,q14 2827*8fb009dcSAndroid Build Coastguard Worker vadd.i32 q1,q1,q15 2828*8fb009dcSAndroid Build Coastguard Worker it ne 2829*8fb009dcSAndroid Build Coastguard Worker bne .Loop_v8 2830*8fb009dcSAndroid Build Coastguard Worker 2831*8fb009dcSAndroid Build Coastguard Worker vst1.32 {q0,q1},[r0] 2832*8fb009dcSAndroid Build Coastguard Worker 2833*8fb009dcSAndroid Build Coastguard Worker bx lr @ bx lr 2834*8fb009dcSAndroid Build Coastguard Worker.size sha256_block_data_order_hw,.-sha256_block_data_order_hw 2835*8fb009dcSAndroid Build Coastguard Worker#endif 2836*8fb009dcSAndroid Build Coastguard Worker.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,47,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 2837*8fb009dcSAndroid Build Coastguard Worker.align 2 2838*8fb009dcSAndroid Build Coastguard Worker.align 2 2839*8fb009dcSAndroid Build Coastguard Worker#endif // !OPENSSL_NO_ASM && defined(OPENSSL_ARM) && defined(__ELF__) 2840