1// This file is generated from a similarly-named Perl script in the BoringSSL 2// source tree. Do not edit by hand. 3 4#if defined(__has_feature) 5#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) 6#define OPENSSL_NO_ASM 7#endif 8#endif 9 10#if !defined(OPENSSL_NO_ASM) 11#if defined(BORINGSSL_PREFIX) 12#include <boringssl_prefix_symbols_asm.h> 13#endif 14#include <openssl/arm_arch.h> 15 16.text 17#if defined(__thumb2__) 18.syntax unified 19.thumb 20#else 21.code 32 22#endif 23 24.globl _sha1_block_data_order 25.private_extern _sha1_block_data_order 26#ifdef __thumb2__ 27.thumb_func _sha1_block_data_order 28#endif 29 30.align 5 31_sha1_block_data_order: 32#if __ARM_MAX_ARCH__>=7 33Lsha1_block: 34 adr r3,Lsha1_block 35 ldr r12,LOPENSSL_armcap 36 ldr r12,[r3,r12] @ OPENSSL_armcap_P 37#ifdef __APPLE__ 38 ldr r12,[r12] 39#endif 40 tst r12,#ARMV8_SHA1 41 bne LARMv8 42 tst r12,#ARMV7_NEON 43 bne LNEON 44#endif 45 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} 46 add r2,r1,r2,lsl#6 @ r2 to point at the end of r1 47 ldmia r0,{r3,r4,r5,r6,r7} 48Lloop: 49 ldr r8,LK_00_19 50 mov r14,sp 51 sub sp,sp,#15*4 52 mov r5,r5,ror#30 53 mov r6,r6,ror#30 54 mov r7,r7,ror#30 @ [6] 55L_00_15: 56#if __ARM_ARCH__<7 57 ldrb r10,[r1,#2] 58 ldrb r9,[r1,#3] 59 ldrb r11,[r1,#1] 60 add r7,r8,r7,ror#2 @ E+=K_00_19 61 ldrb r12,[r1],#4 62 orr r9,r9,r10,lsl#8 63 eor r10,r5,r6 @ F_xx_xx 64 orr r9,r9,r11,lsl#16 65 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 66 orr r9,r9,r12,lsl#24 67#else 68 ldr r9,[r1],#4 @ handles unaligned 69 add r7,r8,r7,ror#2 @ E+=K_00_19 70 eor r10,r5,r6 @ F_xx_xx 71 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 72#ifdef __ARMEL__ 73 rev r9,r9 @ byte swap 74#endif 75#endif 76 and r10,r4,r10,ror#2 77 add r7,r7,r9 @ E+=X[i] 78 eor r10,r10,r6,ror#2 @ F_00_19(B,C,D) 79 str r9,[r14,#-4]! 80 add r7,r7,r10 @ E+=F_00_19(B,C,D) 81#if __ARM_ARCH__<7 82 ldrb r10,[r1,#2] 83 ldrb r9,[r1,#3] 84 ldrb r11,[r1,#1] 85 add r6,r8,r6,ror#2 @ E+=K_00_19 86 ldrb r12,[r1],#4 87 orr r9,r9,r10,lsl#8 88 eor r10,r4,r5 @ F_xx_xx 89 orr r9,r9,r11,lsl#16 90 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 91 orr r9,r9,r12,lsl#24 92#else 93 ldr r9,[r1],#4 @ handles unaligned 94 add r6,r8,r6,ror#2 @ E+=K_00_19 95 eor r10,r4,r5 @ F_xx_xx 96 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 97#ifdef __ARMEL__ 98 rev r9,r9 @ byte swap 99#endif 100#endif 101 and r10,r3,r10,ror#2 102 add r6,r6,r9 @ E+=X[i] 103 eor r10,r10,r5,ror#2 @ F_00_19(B,C,D) 104 str r9,[r14,#-4]! 105 add r6,r6,r10 @ E+=F_00_19(B,C,D) 106#if __ARM_ARCH__<7 107 ldrb r10,[r1,#2] 108 ldrb r9,[r1,#3] 109 ldrb r11,[r1,#1] 110 add r5,r8,r5,ror#2 @ E+=K_00_19 111 ldrb r12,[r1],#4 112 orr r9,r9,r10,lsl#8 113 eor r10,r3,r4 @ F_xx_xx 114 orr r9,r9,r11,lsl#16 115 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 116 orr r9,r9,r12,lsl#24 117#else 118 ldr r9,[r1],#4 @ handles unaligned 119 add r5,r8,r5,ror#2 @ E+=K_00_19 120 eor r10,r3,r4 @ F_xx_xx 121 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 122#ifdef __ARMEL__ 123 rev r9,r9 @ byte swap 124#endif 125#endif 126 and r10,r7,r10,ror#2 127 add r5,r5,r9 @ E+=X[i] 128 eor r10,r10,r4,ror#2 @ F_00_19(B,C,D) 129 str r9,[r14,#-4]! 130 add r5,r5,r10 @ E+=F_00_19(B,C,D) 131#if __ARM_ARCH__<7 132 ldrb r10,[r1,#2] 133 ldrb r9,[r1,#3] 134 ldrb r11,[r1,#1] 135 add r4,r8,r4,ror#2 @ E+=K_00_19 136 ldrb r12,[r1],#4 137 orr r9,r9,r10,lsl#8 138 eor r10,r7,r3 @ F_xx_xx 139 orr r9,r9,r11,lsl#16 140 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 141 orr r9,r9,r12,lsl#24 142#else 143 ldr r9,[r1],#4 @ handles unaligned 144 add r4,r8,r4,ror#2 @ E+=K_00_19 145 eor r10,r7,r3 @ F_xx_xx 146 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 147#ifdef __ARMEL__ 148 rev r9,r9 @ byte swap 149#endif 150#endif 151 and r10,r6,r10,ror#2 152 add r4,r4,r9 @ E+=X[i] 153 eor r10,r10,r3,ror#2 @ F_00_19(B,C,D) 154 str r9,[r14,#-4]! 155 add r4,r4,r10 @ E+=F_00_19(B,C,D) 156#if __ARM_ARCH__<7 157 ldrb r10,[r1,#2] 158 ldrb r9,[r1,#3] 159 ldrb r11,[r1,#1] 160 add r3,r8,r3,ror#2 @ E+=K_00_19 161 ldrb r12,[r1],#4 162 orr r9,r9,r10,lsl#8 163 eor r10,r6,r7 @ F_xx_xx 164 orr r9,r9,r11,lsl#16 165 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 166 orr r9,r9,r12,lsl#24 167#else 168 ldr r9,[r1],#4 @ handles unaligned 169 add r3,r8,r3,ror#2 @ E+=K_00_19 170 eor r10,r6,r7 @ F_xx_xx 171 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 172#ifdef __ARMEL__ 173 rev r9,r9 @ byte swap 174#endif 175#endif 176 and r10,r5,r10,ror#2 177 add r3,r3,r9 @ E+=X[i] 178 eor r10,r10,r7,ror#2 @ F_00_19(B,C,D) 179 str r9,[r14,#-4]! 180 add r3,r3,r10 @ E+=F_00_19(B,C,D) 181#if defined(__thumb2__) 182 mov r12,sp 183 teq r14,r12 184#else 185 teq r14,sp 186#endif 187 bne L_00_15 @ [((11+4)*5+2)*3] 188 sub sp,sp,#25*4 189#if __ARM_ARCH__<7 190 ldrb r10,[r1,#2] 191 ldrb r9,[r1,#3] 192 ldrb r11,[r1,#1] 193 add r7,r8,r7,ror#2 @ E+=K_00_19 194 ldrb r12,[r1],#4 195 orr r9,r9,r10,lsl#8 196 eor r10,r5,r6 @ F_xx_xx 197 orr r9,r9,r11,lsl#16 198 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 199 orr r9,r9,r12,lsl#24 200#else 201 ldr r9,[r1],#4 @ handles unaligned 202 add r7,r8,r7,ror#2 @ E+=K_00_19 203 eor r10,r5,r6 @ F_xx_xx 204 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 205#ifdef __ARMEL__ 206 rev r9,r9 @ byte swap 207#endif 208#endif 209 and r10,r4,r10,ror#2 210 add r7,r7,r9 @ E+=X[i] 211 eor r10,r10,r6,ror#2 @ F_00_19(B,C,D) 212 str r9,[r14,#-4]! 213 add r7,r7,r10 @ E+=F_00_19(B,C,D) 214 ldr r9,[r14,#15*4] 215 ldr r10,[r14,#13*4] 216 ldr r11,[r14,#7*4] 217 add r6,r8,r6,ror#2 @ E+=K_xx_xx 218 ldr r12,[r14,#2*4] 219 eor r9,r9,r10 220 eor r11,r11,r12 @ 1 cycle stall 221 eor r10,r4,r5 @ F_xx_xx 222 mov r9,r9,ror#31 223 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 224 eor r9,r9,r11,ror#31 225 str r9,[r14,#-4]! 226 and r10,r3,r10,ror#2 @ F_xx_xx 227 @ F_xx_xx 228 add r6,r6,r9 @ E+=X[i] 229 eor r10,r10,r5,ror#2 @ F_00_19(B,C,D) 230 add r6,r6,r10 @ E+=F_00_19(B,C,D) 231 ldr r9,[r14,#15*4] 232 ldr r10,[r14,#13*4] 233 ldr r11,[r14,#7*4] 234 add r5,r8,r5,ror#2 @ E+=K_xx_xx 235 ldr r12,[r14,#2*4] 236 eor r9,r9,r10 237 eor r11,r11,r12 @ 1 cycle stall 238 eor r10,r3,r4 @ F_xx_xx 239 mov r9,r9,ror#31 240 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 241 eor r9,r9,r11,ror#31 242 str r9,[r14,#-4]! 243 and r10,r7,r10,ror#2 @ F_xx_xx 244 @ F_xx_xx 245 add r5,r5,r9 @ E+=X[i] 246 eor r10,r10,r4,ror#2 @ F_00_19(B,C,D) 247 add r5,r5,r10 @ E+=F_00_19(B,C,D) 248 ldr r9,[r14,#15*4] 249 ldr r10,[r14,#13*4] 250 ldr r11,[r14,#7*4] 251 add r4,r8,r4,ror#2 @ E+=K_xx_xx 252 ldr r12,[r14,#2*4] 253 eor r9,r9,r10 254 eor r11,r11,r12 @ 1 cycle stall 255 eor r10,r7,r3 @ F_xx_xx 256 mov r9,r9,ror#31 257 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 258 eor r9,r9,r11,ror#31 259 str r9,[r14,#-4]! 260 and r10,r6,r10,ror#2 @ F_xx_xx 261 @ F_xx_xx 262 add r4,r4,r9 @ E+=X[i] 263 eor r10,r10,r3,ror#2 @ F_00_19(B,C,D) 264 add r4,r4,r10 @ E+=F_00_19(B,C,D) 265 ldr r9,[r14,#15*4] 266 ldr r10,[r14,#13*4] 267 ldr r11,[r14,#7*4] 268 add r3,r8,r3,ror#2 @ E+=K_xx_xx 269 ldr r12,[r14,#2*4] 270 eor r9,r9,r10 271 eor r11,r11,r12 @ 1 cycle stall 272 eor r10,r6,r7 @ F_xx_xx 273 mov r9,r9,ror#31 274 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 275 eor r9,r9,r11,ror#31 276 str r9,[r14,#-4]! 277 and r10,r5,r10,ror#2 @ F_xx_xx 278 @ F_xx_xx 279 add r3,r3,r9 @ E+=X[i] 280 eor r10,r10,r7,ror#2 @ F_00_19(B,C,D) 281 add r3,r3,r10 @ E+=F_00_19(B,C,D) 282 283 ldr r8,LK_20_39 @ [+15+16*4] 284 cmn sp,#0 @ [+3], clear carry to denote 20_39 285L_20_39_or_60_79: 286 ldr r9,[r14,#15*4] 287 ldr r10,[r14,#13*4] 288 ldr r11,[r14,#7*4] 289 add r7,r8,r7,ror#2 @ E+=K_xx_xx 290 ldr r12,[r14,#2*4] 291 eor r9,r9,r10 292 eor r11,r11,r12 @ 1 cycle stall 293 eor r10,r5,r6 @ F_xx_xx 294 mov r9,r9,ror#31 295 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 296 eor r9,r9,r11,ror#31 297 str r9,[r14,#-4]! 298 eor r10,r4,r10,ror#2 @ F_xx_xx 299 @ F_xx_xx 300 add r7,r7,r9 @ E+=X[i] 301 add r7,r7,r10 @ E+=F_20_39(B,C,D) 302 ldr r9,[r14,#15*4] 303 ldr r10,[r14,#13*4] 304 ldr r11,[r14,#7*4] 305 add r6,r8,r6,ror#2 @ E+=K_xx_xx 306 ldr r12,[r14,#2*4] 307 eor r9,r9,r10 308 eor r11,r11,r12 @ 1 cycle stall 309 eor r10,r4,r5 @ F_xx_xx 310 mov r9,r9,ror#31 311 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 312 eor r9,r9,r11,ror#31 313 str r9,[r14,#-4]! 314 eor r10,r3,r10,ror#2 @ F_xx_xx 315 @ F_xx_xx 316 add r6,r6,r9 @ E+=X[i] 317 add r6,r6,r10 @ E+=F_20_39(B,C,D) 318 ldr r9,[r14,#15*4] 319 ldr r10,[r14,#13*4] 320 ldr r11,[r14,#7*4] 321 add r5,r8,r5,ror#2 @ E+=K_xx_xx 322 ldr r12,[r14,#2*4] 323 eor r9,r9,r10 324 eor r11,r11,r12 @ 1 cycle stall 325 eor r10,r3,r4 @ F_xx_xx 326 mov r9,r9,ror#31 327 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 328 eor r9,r9,r11,ror#31 329 str r9,[r14,#-4]! 330 eor r10,r7,r10,ror#2 @ F_xx_xx 331 @ F_xx_xx 332 add r5,r5,r9 @ E+=X[i] 333 add r5,r5,r10 @ E+=F_20_39(B,C,D) 334 ldr r9,[r14,#15*4] 335 ldr r10,[r14,#13*4] 336 ldr r11,[r14,#7*4] 337 add r4,r8,r4,ror#2 @ E+=K_xx_xx 338 ldr r12,[r14,#2*4] 339 eor r9,r9,r10 340 eor r11,r11,r12 @ 1 cycle stall 341 eor r10,r7,r3 @ F_xx_xx 342 mov r9,r9,ror#31 343 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 344 eor r9,r9,r11,ror#31 345 str r9,[r14,#-4]! 346 eor r10,r6,r10,ror#2 @ F_xx_xx 347 @ F_xx_xx 348 add r4,r4,r9 @ E+=X[i] 349 add r4,r4,r10 @ E+=F_20_39(B,C,D) 350 ldr r9,[r14,#15*4] 351 ldr r10,[r14,#13*4] 352 ldr r11,[r14,#7*4] 353 add r3,r8,r3,ror#2 @ E+=K_xx_xx 354 ldr r12,[r14,#2*4] 355 eor r9,r9,r10 356 eor r11,r11,r12 @ 1 cycle stall 357 eor r10,r6,r7 @ F_xx_xx 358 mov r9,r9,ror#31 359 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 360 eor r9,r9,r11,ror#31 361 str r9,[r14,#-4]! 362 eor r10,r5,r10,ror#2 @ F_xx_xx 363 @ F_xx_xx 364 add r3,r3,r9 @ E+=X[i] 365 add r3,r3,r10 @ E+=F_20_39(B,C,D) 366#if defined(__thumb2__) 367 mov r12,sp 368 teq r14,r12 369#else 370 teq r14,sp @ preserve carry 371#endif 372 bne L_20_39_or_60_79 @ [+((12+3)*5+2)*4] 373 bcs L_done @ [+((12+3)*5+2)*4], spare 300 bytes 374 375 ldr r8,LK_40_59 376 sub sp,sp,#20*4 @ [+2] 377L_40_59: 378 ldr r9,[r14,#15*4] 379 ldr r10,[r14,#13*4] 380 ldr r11,[r14,#7*4] 381 add r7,r8,r7,ror#2 @ E+=K_xx_xx 382 ldr r12,[r14,#2*4] 383 eor r9,r9,r10 384 eor r11,r11,r12 @ 1 cycle stall 385 eor r10,r5,r6 @ F_xx_xx 386 mov r9,r9,ror#31 387 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 388 eor r9,r9,r11,ror#31 389 str r9,[r14,#-4]! 390 and r10,r4,r10,ror#2 @ F_xx_xx 391 and r11,r5,r6 @ F_xx_xx 392 add r7,r7,r9 @ E+=X[i] 393 add r7,r7,r10 @ E+=F_40_59(B,C,D) 394 add r7,r7,r11,ror#2 395 ldr r9,[r14,#15*4] 396 ldr r10,[r14,#13*4] 397 ldr r11,[r14,#7*4] 398 add r6,r8,r6,ror#2 @ E+=K_xx_xx 399 ldr r12,[r14,#2*4] 400 eor r9,r9,r10 401 eor r11,r11,r12 @ 1 cycle stall 402 eor r10,r4,r5 @ F_xx_xx 403 mov r9,r9,ror#31 404 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 405 eor r9,r9,r11,ror#31 406 str r9,[r14,#-4]! 407 and r10,r3,r10,ror#2 @ F_xx_xx 408 and r11,r4,r5 @ F_xx_xx 409 add r6,r6,r9 @ E+=X[i] 410 add r6,r6,r10 @ E+=F_40_59(B,C,D) 411 add r6,r6,r11,ror#2 412 ldr r9,[r14,#15*4] 413 ldr r10,[r14,#13*4] 414 ldr r11,[r14,#7*4] 415 add r5,r8,r5,ror#2 @ E+=K_xx_xx 416 ldr r12,[r14,#2*4] 417 eor r9,r9,r10 418 eor r11,r11,r12 @ 1 cycle stall 419 eor r10,r3,r4 @ F_xx_xx 420 mov r9,r9,ror#31 421 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 422 eor r9,r9,r11,ror#31 423 str r9,[r14,#-4]! 424 and r10,r7,r10,ror#2 @ F_xx_xx 425 and r11,r3,r4 @ F_xx_xx 426 add r5,r5,r9 @ E+=X[i] 427 add r5,r5,r10 @ E+=F_40_59(B,C,D) 428 add r5,r5,r11,ror#2 429 ldr r9,[r14,#15*4] 430 ldr r10,[r14,#13*4] 431 ldr r11,[r14,#7*4] 432 add r4,r8,r4,ror#2 @ E+=K_xx_xx 433 ldr r12,[r14,#2*4] 434 eor r9,r9,r10 435 eor r11,r11,r12 @ 1 cycle stall 436 eor r10,r7,r3 @ F_xx_xx 437 mov r9,r9,ror#31 438 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 439 eor r9,r9,r11,ror#31 440 str r9,[r14,#-4]! 441 and r10,r6,r10,ror#2 @ F_xx_xx 442 and r11,r7,r3 @ F_xx_xx 443 add r4,r4,r9 @ E+=X[i] 444 add r4,r4,r10 @ E+=F_40_59(B,C,D) 445 add r4,r4,r11,ror#2 446 ldr r9,[r14,#15*4] 447 ldr r10,[r14,#13*4] 448 ldr r11,[r14,#7*4] 449 add r3,r8,r3,ror#2 @ E+=K_xx_xx 450 ldr r12,[r14,#2*4] 451 eor r9,r9,r10 452 eor r11,r11,r12 @ 1 cycle stall 453 eor r10,r6,r7 @ F_xx_xx 454 mov r9,r9,ror#31 455 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 456 eor r9,r9,r11,ror#31 457 str r9,[r14,#-4]! 458 and r10,r5,r10,ror#2 @ F_xx_xx 459 and r11,r6,r7 @ F_xx_xx 460 add r3,r3,r9 @ E+=X[i] 461 add r3,r3,r10 @ E+=F_40_59(B,C,D) 462 add r3,r3,r11,ror#2 463#if defined(__thumb2__) 464 mov r12,sp 465 teq r14,r12 466#else 467 teq r14,sp 468#endif 469 bne L_40_59 @ [+((12+5)*5+2)*4] 470 471 ldr r8,LK_60_79 472 sub sp,sp,#20*4 473 cmp sp,#0 @ set carry to denote 60_79 474 b L_20_39_or_60_79 @ [+4], spare 300 bytes 475L_done: 476 add sp,sp,#80*4 @ "deallocate" stack frame 477 ldmia r0,{r8,r9,r10,r11,r12} 478 add r3,r8,r3 479 add r4,r9,r4 480 add r5,r10,r5,ror#2 481 add r6,r11,r6,ror#2 482 add r7,r12,r7,ror#2 483 stmia r0,{r3,r4,r5,r6,r7} 484 teq r1,r2 485 bne Lloop @ [+18], total 1307 486 487#if __ARM_ARCH__>=5 488 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} 489#else 490 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} 491 tst lr,#1 492 moveq pc,lr @ be binary compatible with V4, yet 493.word 0xe12fff1e @ interoperable with Thumb ISA:-) 494#endif 495 496 497.align 5 498LK_00_19:.word 0x5a827999 499LK_20_39:.word 0x6ed9eba1 500LK_40_59:.word 0x8f1bbcdc 501LK_60_79:.word 0xca62c1d6 502#if __ARM_MAX_ARCH__>=7 503LOPENSSL_armcap: 504.word OPENSSL_armcap_P-Lsha1_block 505#endif 506.byte 83,72,65,49,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 507.align 2 508.align 5 509#if __ARM_MAX_ARCH__>=7 510 511 512 513#ifdef __thumb2__ 514.thumb_func sha1_block_data_order_neon 515#endif 516.align 4 517sha1_block_data_order_neon: 518LNEON: 519 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} 520 add r2,r1,r2,lsl#6 @ r2 to point at the end of r1 521 @ dmb @ errata #451034 on early Cortex A8 522 @ vstmdb sp!,{d8-d15} @ ABI specification says so 523 mov r14,sp 524 sub r12,sp,#64 525 adr r8,LK_00_19 526 bic r12,r12,#15 @ align for 128-bit stores 527 528 ldmia r0,{r3,r4,r5,r6,r7} @ load context 529 mov sp,r12 @ alloca 530 531 vld1.8 {q0,q1},[r1]! @ handles unaligned 532 veor q15,q15,q15 533 vld1.8 {q2,q3},[r1]! 534 vld1.32 {d28[],d29[]},[r8,:32]! @ load K_00_19 535 vrev32.8 q0,q0 @ yes, even on 536 vrev32.8 q1,q1 @ big-endian... 537 vrev32.8 q2,q2 538 vadd.i32 q8,q0,q14 539 vrev32.8 q3,q3 540 vadd.i32 q9,q1,q14 541 vst1.32 {q8},[r12,:128]! 542 vadd.i32 q10,q2,q14 543 vst1.32 {q9},[r12,:128]! 544 vst1.32 {q10},[r12,:128]! 545 ldr r9,[sp] @ big RAW stall 546 547Loop_neon: 548 vext.8 q8,q0,q1,#8 549 bic r10,r6,r4 550 add r7,r7,r9 551 and r11,r5,r4 552 vadd.i32 q13,q3,q14 553 ldr r9,[sp,#4] 554 add r7,r7,r3,ror#27 555 vext.8 q12,q3,q15,#4 556 eor r11,r11,r10 557 mov r4,r4,ror#2 558 add r7,r7,r11 559 veor q8,q8,q0 560 bic r10,r5,r3 561 add r6,r6,r9 562 veor q12,q12,q2 563 and r11,r4,r3 564 ldr r9,[sp,#8] 565 veor q12,q12,q8 566 add r6,r6,r7,ror#27 567 eor r11,r11,r10 568 vst1.32 {q13},[r12,:128]! 569 sub r12,r12,#64 570 mov r3,r3,ror#2 571 add r6,r6,r11 572 vext.8 q13,q15,q12,#4 573 bic r10,r4,r7 574 add r5,r5,r9 575 vadd.i32 q8,q12,q12 576 and r11,r3,r7 577 ldr r9,[sp,#12] 578 vsri.32 q8,q12,#31 579 add r5,r5,r6,ror#27 580 eor r11,r11,r10 581 mov r7,r7,ror#2 582 vshr.u32 q12,q13,#30 583 add r5,r5,r11 584 bic r10,r3,r6 585 vshl.u32 q13,q13,#2 586 add r4,r4,r9 587 and r11,r7,r6 588 veor q8,q8,q12 589 ldr r9,[sp,#16] 590 add r4,r4,r5,ror#27 591 veor q8,q8,q13 592 eor r11,r11,r10 593 mov r6,r6,ror#2 594 add r4,r4,r11 595 vext.8 q9,q1,q2,#8 596 bic r10,r7,r5 597 add r3,r3,r9 598 and r11,r6,r5 599 vadd.i32 q13,q8,q14 600 ldr r9,[sp,#20] 601 vld1.32 {d28[],d29[]},[r8,:32]! 602 add r3,r3,r4,ror#27 603 vext.8 q12,q8,q15,#4 604 eor r11,r11,r10 605 mov r5,r5,ror#2 606 add r3,r3,r11 607 veor q9,q9,q1 608 bic r10,r6,r4 609 add r7,r7,r9 610 veor q12,q12,q3 611 and r11,r5,r4 612 ldr r9,[sp,#24] 613 veor q12,q12,q9 614 add r7,r7,r3,ror#27 615 eor r11,r11,r10 616 vst1.32 {q13},[r12,:128]! 617 mov r4,r4,ror#2 618 add r7,r7,r11 619 vext.8 q13,q15,q12,#4 620 bic r10,r5,r3 621 add r6,r6,r9 622 vadd.i32 q9,q12,q12 623 and r11,r4,r3 624 ldr r9,[sp,#28] 625 vsri.32 q9,q12,#31 626 add r6,r6,r7,ror#27 627 eor r11,r11,r10 628 mov r3,r3,ror#2 629 vshr.u32 q12,q13,#30 630 add r6,r6,r11 631 bic r10,r4,r7 632 vshl.u32 q13,q13,#2 633 add r5,r5,r9 634 and r11,r3,r7 635 veor q9,q9,q12 636 ldr r9,[sp,#32] 637 add r5,r5,r6,ror#27 638 veor q9,q9,q13 639 eor r11,r11,r10 640 mov r7,r7,ror#2 641 add r5,r5,r11 642 vext.8 q10,q2,q3,#8 643 bic r10,r3,r6 644 add r4,r4,r9 645 and r11,r7,r6 646 vadd.i32 q13,q9,q14 647 ldr r9,[sp,#36] 648 add r4,r4,r5,ror#27 649 vext.8 q12,q9,q15,#4 650 eor r11,r11,r10 651 mov r6,r6,ror#2 652 add r4,r4,r11 653 veor q10,q10,q2 654 bic r10,r7,r5 655 add r3,r3,r9 656 veor q12,q12,q8 657 and r11,r6,r5 658 ldr r9,[sp,#40] 659 veor q12,q12,q10 660 add r3,r3,r4,ror#27 661 eor r11,r11,r10 662 vst1.32 {q13},[r12,:128]! 663 mov r5,r5,ror#2 664 add r3,r3,r11 665 vext.8 q13,q15,q12,#4 666 bic r10,r6,r4 667 add r7,r7,r9 668 vadd.i32 q10,q12,q12 669 and r11,r5,r4 670 ldr r9,[sp,#44] 671 vsri.32 q10,q12,#31 672 add r7,r7,r3,ror#27 673 eor r11,r11,r10 674 mov r4,r4,ror#2 675 vshr.u32 q12,q13,#30 676 add r7,r7,r11 677 bic r10,r5,r3 678 vshl.u32 q13,q13,#2 679 add r6,r6,r9 680 and r11,r4,r3 681 veor q10,q10,q12 682 ldr r9,[sp,#48] 683 add r6,r6,r7,ror#27 684 veor q10,q10,q13 685 eor r11,r11,r10 686 mov r3,r3,ror#2 687 add r6,r6,r11 688 vext.8 q11,q3,q8,#8 689 bic r10,r4,r7 690 add r5,r5,r9 691 and r11,r3,r7 692 vadd.i32 q13,q10,q14 693 ldr r9,[sp,#52] 694 add r5,r5,r6,ror#27 695 vext.8 q12,q10,q15,#4 696 eor r11,r11,r10 697 mov r7,r7,ror#2 698 add r5,r5,r11 699 veor q11,q11,q3 700 bic r10,r3,r6 701 add r4,r4,r9 702 veor q12,q12,q9 703 and r11,r7,r6 704 ldr r9,[sp,#56] 705 veor q12,q12,q11 706 add r4,r4,r5,ror#27 707 eor r11,r11,r10 708 vst1.32 {q13},[r12,:128]! 709 mov r6,r6,ror#2 710 add r4,r4,r11 711 vext.8 q13,q15,q12,#4 712 bic r10,r7,r5 713 add r3,r3,r9 714 vadd.i32 q11,q12,q12 715 and r11,r6,r5 716 ldr r9,[sp,#60] 717 vsri.32 q11,q12,#31 718 add r3,r3,r4,ror#27 719 eor r11,r11,r10 720 mov r5,r5,ror#2 721 vshr.u32 q12,q13,#30 722 add r3,r3,r11 723 bic r10,r6,r4 724 vshl.u32 q13,q13,#2 725 add r7,r7,r9 726 and r11,r5,r4 727 veor q11,q11,q12 728 ldr r9,[sp,#0] 729 add r7,r7,r3,ror#27 730 veor q11,q11,q13 731 eor r11,r11,r10 732 mov r4,r4,ror#2 733 add r7,r7,r11 734 vext.8 q12,q10,q11,#8 735 bic r10,r5,r3 736 add r6,r6,r9 737 and r11,r4,r3 738 veor q0,q0,q8 739 ldr r9,[sp,#4] 740 add r6,r6,r7,ror#27 741 veor q0,q0,q1 742 eor r11,r11,r10 743 mov r3,r3,ror#2 744 vadd.i32 q13,q11,q14 745 add r6,r6,r11 746 bic r10,r4,r7 747 veor q12,q12,q0 748 add r5,r5,r9 749 and r11,r3,r7 750 vshr.u32 q0,q12,#30 751 ldr r9,[sp,#8] 752 add r5,r5,r6,ror#27 753 vst1.32 {q13},[r12,:128]! 754 sub r12,r12,#64 755 eor r11,r11,r10 756 mov r7,r7,ror#2 757 vsli.32 q0,q12,#2 758 add r5,r5,r11 759 bic r10,r3,r6 760 add r4,r4,r9 761 and r11,r7,r6 762 ldr r9,[sp,#12] 763 add r4,r4,r5,ror#27 764 eor r11,r11,r10 765 mov r6,r6,ror#2 766 add r4,r4,r11 767 bic r10,r7,r5 768 add r3,r3,r9 769 and r11,r6,r5 770 ldr r9,[sp,#16] 771 add r3,r3,r4,ror#27 772 eor r11,r11,r10 773 mov r5,r5,ror#2 774 add r3,r3,r11 775 vext.8 q12,q11,q0,#8 776 eor r10,r4,r6 777 add r7,r7,r9 778 ldr r9,[sp,#20] 779 veor q1,q1,q9 780 eor r11,r10,r5 781 add r7,r7,r3,ror#27 782 veor q1,q1,q2 783 mov r4,r4,ror#2 784 add r7,r7,r11 785 vadd.i32 q13,q0,q14 786 eor r10,r3,r5 787 add r6,r6,r9 788 veor q12,q12,q1 789 ldr r9,[sp,#24] 790 eor r11,r10,r4 791 vshr.u32 q1,q12,#30 792 add r6,r6,r7,ror#27 793 mov r3,r3,ror#2 794 vst1.32 {q13},[r12,:128]! 795 add r6,r6,r11 796 eor r10,r7,r4 797 vsli.32 q1,q12,#2 798 add r5,r5,r9 799 ldr r9,[sp,#28] 800 eor r11,r10,r3 801 add r5,r5,r6,ror#27 802 mov r7,r7,ror#2 803 add r5,r5,r11 804 eor r10,r6,r3 805 add r4,r4,r9 806 ldr r9,[sp,#32] 807 eor r11,r10,r7 808 add r4,r4,r5,ror#27 809 mov r6,r6,ror#2 810 add r4,r4,r11 811 vext.8 q12,q0,q1,#8 812 eor r10,r5,r7 813 add r3,r3,r9 814 ldr r9,[sp,#36] 815 veor q2,q2,q10 816 eor r11,r10,r6 817 add r3,r3,r4,ror#27 818 veor q2,q2,q3 819 mov r5,r5,ror#2 820 add r3,r3,r11 821 vadd.i32 q13,q1,q14 822 eor r10,r4,r6 823 vld1.32 {d28[],d29[]},[r8,:32]! 824 add r7,r7,r9 825 veor q12,q12,q2 826 ldr r9,[sp,#40] 827 eor r11,r10,r5 828 vshr.u32 q2,q12,#30 829 add r7,r7,r3,ror#27 830 mov r4,r4,ror#2 831 vst1.32 {q13},[r12,:128]! 832 add r7,r7,r11 833 eor r10,r3,r5 834 vsli.32 q2,q12,#2 835 add r6,r6,r9 836 ldr r9,[sp,#44] 837 eor r11,r10,r4 838 add r6,r6,r7,ror#27 839 mov r3,r3,ror#2 840 add r6,r6,r11 841 eor r10,r7,r4 842 add r5,r5,r9 843 ldr r9,[sp,#48] 844 eor r11,r10,r3 845 add r5,r5,r6,ror#27 846 mov r7,r7,ror#2 847 add r5,r5,r11 848 vext.8 q12,q1,q2,#8 849 eor r10,r6,r3 850 add r4,r4,r9 851 ldr r9,[sp,#52] 852 veor q3,q3,q11 853 eor r11,r10,r7 854 add r4,r4,r5,ror#27 855 veor q3,q3,q8 856 mov r6,r6,ror#2 857 add r4,r4,r11 858 vadd.i32 q13,q2,q14 859 eor r10,r5,r7 860 add r3,r3,r9 861 veor q12,q12,q3 862 ldr r9,[sp,#56] 863 eor r11,r10,r6 864 vshr.u32 q3,q12,#30 865 add r3,r3,r4,ror#27 866 mov r5,r5,ror#2 867 vst1.32 {q13},[r12,:128]! 868 add r3,r3,r11 869 eor r10,r4,r6 870 vsli.32 q3,q12,#2 871 add r7,r7,r9 872 ldr r9,[sp,#60] 873 eor r11,r10,r5 874 add r7,r7,r3,ror#27 875 mov r4,r4,ror#2 876 add r7,r7,r11 877 eor r10,r3,r5 878 add r6,r6,r9 879 ldr r9,[sp,#0] 880 eor r11,r10,r4 881 add r6,r6,r7,ror#27 882 mov r3,r3,ror#2 883 add r6,r6,r11 884 vext.8 q12,q2,q3,#8 885 eor r10,r7,r4 886 add r5,r5,r9 887 ldr r9,[sp,#4] 888 veor q8,q8,q0 889 eor r11,r10,r3 890 add r5,r5,r6,ror#27 891 veor q8,q8,q9 892 mov r7,r7,ror#2 893 add r5,r5,r11 894 vadd.i32 q13,q3,q14 895 eor r10,r6,r3 896 add r4,r4,r9 897 veor q12,q12,q8 898 ldr r9,[sp,#8] 899 eor r11,r10,r7 900 vshr.u32 q8,q12,#30 901 add r4,r4,r5,ror#27 902 mov r6,r6,ror#2 903 vst1.32 {q13},[r12,:128]! 904 sub r12,r12,#64 905 add r4,r4,r11 906 eor r10,r5,r7 907 vsli.32 q8,q12,#2 908 add r3,r3,r9 909 ldr r9,[sp,#12] 910 eor r11,r10,r6 911 add r3,r3,r4,ror#27 912 mov r5,r5,ror#2 913 add r3,r3,r11 914 eor r10,r4,r6 915 add r7,r7,r9 916 ldr r9,[sp,#16] 917 eor r11,r10,r5 918 add r7,r7,r3,ror#27 919 mov r4,r4,ror#2 920 add r7,r7,r11 921 vext.8 q12,q3,q8,#8 922 eor r10,r3,r5 923 add r6,r6,r9 924 ldr r9,[sp,#20] 925 veor q9,q9,q1 926 eor r11,r10,r4 927 add r6,r6,r7,ror#27 928 veor q9,q9,q10 929 mov r3,r3,ror#2 930 add r6,r6,r11 931 vadd.i32 q13,q8,q14 932 eor r10,r7,r4 933 add r5,r5,r9 934 veor q12,q12,q9 935 ldr r9,[sp,#24] 936 eor r11,r10,r3 937 vshr.u32 q9,q12,#30 938 add r5,r5,r6,ror#27 939 mov r7,r7,ror#2 940 vst1.32 {q13},[r12,:128]! 941 add r5,r5,r11 942 eor r10,r6,r3 943 vsli.32 q9,q12,#2 944 add r4,r4,r9 945 ldr r9,[sp,#28] 946 eor r11,r10,r7 947 add r4,r4,r5,ror#27 948 mov r6,r6,ror#2 949 add r4,r4,r11 950 eor r10,r5,r7 951 add r3,r3,r9 952 ldr r9,[sp,#32] 953 eor r11,r10,r6 954 add r3,r3,r4,ror#27 955 mov r5,r5,ror#2 956 add r3,r3,r11 957 vext.8 q12,q8,q9,#8 958 add r7,r7,r9 959 and r10,r5,r6 960 ldr r9,[sp,#36] 961 veor q10,q10,q2 962 add r7,r7,r3,ror#27 963 eor r11,r5,r6 964 veor q10,q10,q11 965 add r7,r7,r10 966 and r11,r11,r4 967 vadd.i32 q13,q9,q14 968 mov r4,r4,ror#2 969 add r7,r7,r11 970 veor q12,q12,q10 971 add r6,r6,r9 972 and r10,r4,r5 973 vshr.u32 q10,q12,#30 974 ldr r9,[sp,#40] 975 add r6,r6,r7,ror#27 976 vst1.32 {q13},[r12,:128]! 977 eor r11,r4,r5 978 add r6,r6,r10 979 vsli.32 q10,q12,#2 980 and r11,r11,r3 981 mov r3,r3,ror#2 982 add r6,r6,r11 983 add r5,r5,r9 984 and r10,r3,r4 985 ldr r9,[sp,#44] 986 add r5,r5,r6,ror#27 987 eor r11,r3,r4 988 add r5,r5,r10 989 and r11,r11,r7 990 mov r7,r7,ror#2 991 add r5,r5,r11 992 add r4,r4,r9 993 and r10,r7,r3 994 ldr r9,[sp,#48] 995 add r4,r4,r5,ror#27 996 eor r11,r7,r3 997 add r4,r4,r10 998 and r11,r11,r6 999 mov r6,r6,ror#2 1000 add r4,r4,r11 1001 vext.8 q12,q9,q10,#8 1002 add r3,r3,r9 1003 and r10,r6,r7 1004 ldr r9,[sp,#52] 1005 veor q11,q11,q3 1006 add r3,r3,r4,ror#27 1007 eor r11,r6,r7 1008 veor q11,q11,q0 1009 add r3,r3,r10 1010 and r11,r11,r5 1011 vadd.i32 q13,q10,q14 1012 mov r5,r5,ror#2 1013 vld1.32 {d28[],d29[]},[r8,:32]! 1014 add r3,r3,r11 1015 veor q12,q12,q11 1016 add r7,r7,r9 1017 and r10,r5,r6 1018 vshr.u32 q11,q12,#30 1019 ldr r9,[sp,#56] 1020 add r7,r7,r3,ror#27 1021 vst1.32 {q13},[r12,:128]! 1022 eor r11,r5,r6 1023 add r7,r7,r10 1024 vsli.32 q11,q12,#2 1025 and r11,r11,r4 1026 mov r4,r4,ror#2 1027 add r7,r7,r11 1028 add r6,r6,r9 1029 and r10,r4,r5 1030 ldr r9,[sp,#60] 1031 add r6,r6,r7,ror#27 1032 eor r11,r4,r5 1033 add r6,r6,r10 1034 and r11,r11,r3 1035 mov r3,r3,ror#2 1036 add r6,r6,r11 1037 add r5,r5,r9 1038 and r10,r3,r4 1039 ldr r9,[sp,#0] 1040 add r5,r5,r6,ror#27 1041 eor r11,r3,r4 1042 add r5,r5,r10 1043 and r11,r11,r7 1044 mov r7,r7,ror#2 1045 add r5,r5,r11 1046 vext.8 q12,q10,q11,#8 1047 add r4,r4,r9 1048 and r10,r7,r3 1049 ldr r9,[sp,#4] 1050 veor q0,q0,q8 1051 add r4,r4,r5,ror#27 1052 eor r11,r7,r3 1053 veor q0,q0,q1 1054 add r4,r4,r10 1055 and r11,r11,r6 1056 vadd.i32 q13,q11,q14 1057 mov r6,r6,ror#2 1058 add r4,r4,r11 1059 veor q12,q12,q0 1060 add r3,r3,r9 1061 and r10,r6,r7 1062 vshr.u32 q0,q12,#30 1063 ldr r9,[sp,#8] 1064 add r3,r3,r4,ror#27 1065 vst1.32 {q13},[r12,:128]! 1066 sub r12,r12,#64 1067 eor r11,r6,r7 1068 add r3,r3,r10 1069 vsli.32 q0,q12,#2 1070 and r11,r11,r5 1071 mov r5,r5,ror#2 1072 add r3,r3,r11 1073 add r7,r7,r9 1074 and r10,r5,r6 1075 ldr r9,[sp,#12] 1076 add r7,r7,r3,ror#27 1077 eor r11,r5,r6 1078 add r7,r7,r10 1079 and r11,r11,r4 1080 mov r4,r4,ror#2 1081 add r7,r7,r11 1082 add r6,r6,r9 1083 and r10,r4,r5 1084 ldr r9,[sp,#16] 1085 add r6,r6,r7,ror#27 1086 eor r11,r4,r5 1087 add r6,r6,r10 1088 and r11,r11,r3 1089 mov r3,r3,ror#2 1090 add r6,r6,r11 1091 vext.8 q12,q11,q0,#8 1092 add r5,r5,r9 1093 and r10,r3,r4 1094 ldr r9,[sp,#20] 1095 veor q1,q1,q9 1096 add r5,r5,r6,ror#27 1097 eor r11,r3,r4 1098 veor q1,q1,q2 1099 add r5,r5,r10 1100 and r11,r11,r7 1101 vadd.i32 q13,q0,q14 1102 mov r7,r7,ror#2 1103 add r5,r5,r11 1104 veor q12,q12,q1 1105 add r4,r4,r9 1106 and r10,r7,r3 1107 vshr.u32 q1,q12,#30 1108 ldr r9,[sp,#24] 1109 add r4,r4,r5,ror#27 1110 vst1.32 {q13},[r12,:128]! 1111 eor r11,r7,r3 1112 add r4,r4,r10 1113 vsli.32 q1,q12,#2 1114 and r11,r11,r6 1115 mov r6,r6,ror#2 1116 add r4,r4,r11 1117 add r3,r3,r9 1118 and r10,r6,r7 1119 ldr r9,[sp,#28] 1120 add r3,r3,r4,ror#27 1121 eor r11,r6,r7 1122 add r3,r3,r10 1123 and r11,r11,r5 1124 mov r5,r5,ror#2 1125 add r3,r3,r11 1126 add r7,r7,r9 1127 and r10,r5,r6 1128 ldr r9,[sp,#32] 1129 add r7,r7,r3,ror#27 1130 eor r11,r5,r6 1131 add r7,r7,r10 1132 and r11,r11,r4 1133 mov r4,r4,ror#2 1134 add r7,r7,r11 1135 vext.8 q12,q0,q1,#8 1136 add r6,r6,r9 1137 and r10,r4,r5 1138 ldr r9,[sp,#36] 1139 veor q2,q2,q10 1140 add r6,r6,r7,ror#27 1141 eor r11,r4,r5 1142 veor q2,q2,q3 1143 add r6,r6,r10 1144 and r11,r11,r3 1145 vadd.i32 q13,q1,q14 1146 mov r3,r3,ror#2 1147 add r6,r6,r11 1148 veor q12,q12,q2 1149 add r5,r5,r9 1150 and r10,r3,r4 1151 vshr.u32 q2,q12,#30 1152 ldr r9,[sp,#40] 1153 add r5,r5,r6,ror#27 1154 vst1.32 {q13},[r12,:128]! 1155 eor r11,r3,r4 1156 add r5,r5,r10 1157 vsli.32 q2,q12,#2 1158 and r11,r11,r7 1159 mov r7,r7,ror#2 1160 add r5,r5,r11 1161 add r4,r4,r9 1162 and r10,r7,r3 1163 ldr r9,[sp,#44] 1164 add r4,r4,r5,ror#27 1165 eor r11,r7,r3 1166 add r4,r4,r10 1167 and r11,r11,r6 1168 mov r6,r6,ror#2 1169 add r4,r4,r11 1170 add r3,r3,r9 1171 and r10,r6,r7 1172 ldr r9,[sp,#48] 1173 add r3,r3,r4,ror#27 1174 eor r11,r6,r7 1175 add r3,r3,r10 1176 and r11,r11,r5 1177 mov r5,r5,ror#2 1178 add r3,r3,r11 1179 vext.8 q12,q1,q2,#8 1180 eor r10,r4,r6 1181 add r7,r7,r9 1182 ldr r9,[sp,#52] 1183 veor q3,q3,q11 1184 eor r11,r10,r5 1185 add r7,r7,r3,ror#27 1186 veor q3,q3,q8 1187 mov r4,r4,ror#2 1188 add r7,r7,r11 1189 vadd.i32 q13,q2,q14 1190 eor r10,r3,r5 1191 add r6,r6,r9 1192 veor q12,q12,q3 1193 ldr r9,[sp,#56] 1194 eor r11,r10,r4 1195 vshr.u32 q3,q12,#30 1196 add r6,r6,r7,ror#27 1197 mov r3,r3,ror#2 1198 vst1.32 {q13},[r12,:128]! 1199 add r6,r6,r11 1200 eor r10,r7,r4 1201 vsli.32 q3,q12,#2 1202 add r5,r5,r9 1203 ldr r9,[sp,#60] 1204 eor r11,r10,r3 1205 add r5,r5,r6,ror#27 1206 mov r7,r7,ror#2 1207 add r5,r5,r11 1208 eor r10,r6,r3 1209 add r4,r4,r9 1210 ldr r9,[sp,#0] 1211 eor r11,r10,r7 1212 add r4,r4,r5,ror#27 1213 mov r6,r6,ror#2 1214 add r4,r4,r11 1215 vadd.i32 q13,q3,q14 1216 eor r10,r5,r7 1217 add r3,r3,r9 1218 vst1.32 {q13},[r12,:128]! 1219 sub r12,r12,#64 1220 teq r1,r2 1221 sub r8,r8,#16 1222 it eq 1223 subeq r1,r1,#64 1224 vld1.8 {q0,q1},[r1]! 1225 ldr r9,[sp,#4] 1226 eor r11,r10,r6 1227 vld1.8 {q2,q3},[r1]! 1228 add r3,r3,r4,ror#27 1229 mov r5,r5,ror#2 1230 vld1.32 {d28[],d29[]},[r8,:32]! 1231 add r3,r3,r11 1232 eor r10,r4,r6 1233 vrev32.8 q0,q0 1234 add r7,r7,r9 1235 ldr r9,[sp,#8] 1236 eor r11,r10,r5 1237 add r7,r7,r3,ror#27 1238 mov r4,r4,ror#2 1239 add r7,r7,r11 1240 eor r10,r3,r5 1241 add r6,r6,r9 1242 ldr r9,[sp,#12] 1243 eor r11,r10,r4 1244 add r6,r6,r7,ror#27 1245 mov r3,r3,ror#2 1246 add r6,r6,r11 1247 eor r10,r7,r4 1248 add r5,r5,r9 1249 ldr r9,[sp,#16] 1250 eor r11,r10,r3 1251 add r5,r5,r6,ror#27 1252 mov r7,r7,ror#2 1253 add r5,r5,r11 1254 vrev32.8 q1,q1 1255 eor r10,r6,r3 1256 add r4,r4,r9 1257 vadd.i32 q8,q0,q14 1258 ldr r9,[sp,#20] 1259 eor r11,r10,r7 1260 vst1.32 {q8},[r12,:128]! 1261 add r4,r4,r5,ror#27 1262 mov r6,r6,ror#2 1263 add r4,r4,r11 1264 eor r10,r5,r7 1265 add r3,r3,r9 1266 ldr r9,[sp,#24] 1267 eor r11,r10,r6 1268 add r3,r3,r4,ror#27 1269 mov r5,r5,ror#2 1270 add r3,r3,r11 1271 eor r10,r4,r6 1272 add r7,r7,r9 1273 ldr r9,[sp,#28] 1274 eor r11,r10,r5 1275 add r7,r7,r3,ror#27 1276 mov r4,r4,ror#2 1277 add r7,r7,r11 1278 eor r10,r3,r5 1279 add r6,r6,r9 1280 ldr r9,[sp,#32] 1281 eor r11,r10,r4 1282 add r6,r6,r7,ror#27 1283 mov r3,r3,ror#2 1284 add r6,r6,r11 1285 vrev32.8 q2,q2 1286 eor r10,r7,r4 1287 add r5,r5,r9 1288 vadd.i32 q9,q1,q14 1289 ldr r9,[sp,#36] 1290 eor r11,r10,r3 1291 vst1.32 {q9},[r12,:128]! 1292 add r5,r5,r6,ror#27 1293 mov r7,r7,ror#2 1294 add r5,r5,r11 1295 eor r10,r6,r3 1296 add r4,r4,r9 1297 ldr r9,[sp,#40] 1298 eor r11,r10,r7 1299 add r4,r4,r5,ror#27 1300 mov r6,r6,ror#2 1301 add r4,r4,r11 1302 eor r10,r5,r7 1303 add r3,r3,r9 1304 ldr r9,[sp,#44] 1305 eor r11,r10,r6 1306 add r3,r3,r4,ror#27 1307 mov r5,r5,ror#2 1308 add r3,r3,r11 1309 eor r10,r4,r6 1310 add r7,r7,r9 1311 ldr r9,[sp,#48] 1312 eor r11,r10,r5 1313 add r7,r7,r3,ror#27 1314 mov r4,r4,ror#2 1315 add r7,r7,r11 1316 vrev32.8 q3,q3 1317 eor r10,r3,r5 1318 add r6,r6,r9 1319 vadd.i32 q10,q2,q14 1320 ldr r9,[sp,#52] 1321 eor r11,r10,r4 1322 vst1.32 {q10},[r12,:128]! 1323 add r6,r6,r7,ror#27 1324 mov r3,r3,ror#2 1325 add r6,r6,r11 1326 eor r10,r7,r4 1327 add r5,r5,r9 1328 ldr r9,[sp,#56] 1329 eor r11,r10,r3 1330 add r5,r5,r6,ror#27 1331 mov r7,r7,ror#2 1332 add r5,r5,r11 1333 eor r10,r6,r3 1334 add r4,r4,r9 1335 ldr r9,[sp,#60] 1336 eor r11,r10,r7 1337 add r4,r4,r5,ror#27 1338 mov r6,r6,ror#2 1339 add r4,r4,r11 1340 eor r10,r5,r7 1341 add r3,r3,r9 1342 eor r11,r10,r6 1343 add r3,r3,r4,ror#27 1344 mov r5,r5,ror#2 1345 add r3,r3,r11 1346 ldmia r0,{r9,r10,r11,r12} @ accumulate context 1347 add r3,r3,r9 1348 ldr r9,[r0,#16] 1349 add r4,r4,r10 1350 add r5,r5,r11 1351 add r6,r6,r12 1352 it eq 1353 moveq sp,r14 1354 add r7,r7,r9 1355 it ne 1356 ldrne r9,[sp] 1357 stmia r0,{r3,r4,r5,r6,r7} 1358 itt ne 1359 addne r12,sp,#3*16 1360 bne Loop_neon 1361 1362 @ vldmia sp!,{d8-d15} 1363 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} 1364 1365#endif 1366#if __ARM_MAX_ARCH__>=7 1367 1368# if defined(__thumb2__) 1369# define INST(a,b,c,d) .byte c,d|0xf,a,b 1370# else 1371# define INST(a,b,c,d) .byte a,b,c,d|0x10 1372# endif 1373 1374#ifdef __thumb2__ 1375.thumb_func sha1_block_data_order_armv8 1376#endif 1377.align 5 1378sha1_block_data_order_armv8: 1379LARMv8: 1380 vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so 1381 1382 veor q1,q1,q1 1383 adr r3,LK_00_19 1384 vld1.32 {q0},[r0]! 1385 vld1.32 {d2[0]},[r0] 1386 sub r0,r0,#16 1387 vld1.32 {d16[],d17[]},[r3,:32]! 1388 vld1.32 {d18[],d19[]},[r3,:32]! 1389 vld1.32 {d20[],d21[]},[r3,:32]! 1390 vld1.32 {d22[],d23[]},[r3,:32] 1391 1392Loop_v8: 1393 vld1.8 {q4,q5},[r1]! 1394 vld1.8 {q6,q7},[r1]! 1395 vrev32.8 q4,q4 1396 vrev32.8 q5,q5 1397 1398 vadd.i32 q12,q8,q4 1399 vrev32.8 q6,q6 1400 vmov q14,q0 @ offload 1401 subs r2,r2,#1 1402 1403 vadd.i32 q13,q8,q5 1404 vrev32.8 q7,q7 1405 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 0 1406 INST(0x68,0x0c,0x02,0xe2) @ sha1c q0,q1,q12 1407 vadd.i32 q12,q8,q6 1408 INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6 1409 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 1 1410 INST(0x6a,0x0c,0x06,0xe2) @ sha1c q0,q3,q13 1411 vadd.i32 q13,q8,q7 1412 INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7 1413 INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7 1414 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 2 1415 INST(0x68,0x0c,0x04,0xe2) @ sha1c q0,q2,q12 1416 vadd.i32 q12,q8,q4 1417 INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4 1418 INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4 1419 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 3 1420 INST(0x6a,0x0c,0x06,0xe2) @ sha1c q0,q3,q13 1421 vadd.i32 q13,q9,q5 1422 INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5 1423 INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5 1424 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 4 1425 INST(0x68,0x0c,0x04,0xe2) @ sha1c q0,q2,q12 1426 vadd.i32 q12,q9,q6 1427 INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6 1428 INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6 1429 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 5 1430 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1431 vadd.i32 q13,q9,q7 1432 INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7 1433 INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7 1434 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 6 1435 INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12 1436 vadd.i32 q12,q9,q4 1437 INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4 1438 INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4 1439 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 7 1440 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1441 vadd.i32 q13,q9,q5 1442 INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5 1443 INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5 1444 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 8 1445 INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12 1446 vadd.i32 q12,q10,q6 1447 INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6 1448 INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6 1449 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 9 1450 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1451 vadd.i32 q13,q10,q7 1452 INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7 1453 INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7 1454 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 10 1455 INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12 1456 vadd.i32 q12,q10,q4 1457 INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4 1458 INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4 1459 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 11 1460 INST(0x6a,0x0c,0x26,0xe2) @ sha1m q0,q3,q13 1461 vadd.i32 q13,q10,q5 1462 INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5 1463 INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5 1464 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 12 1465 INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12 1466 vadd.i32 q12,q10,q6 1467 INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6 1468 INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6 1469 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 13 1470 INST(0x6a,0x0c,0x26,0xe2) @ sha1m q0,q3,q13 1471 vadd.i32 q13,q11,q7 1472 INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7 1473 INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7 1474 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 14 1475 INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12 1476 vadd.i32 q12,q11,q4 1477 INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4 1478 INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4 1479 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 15 1480 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1481 vadd.i32 q13,q11,q5 1482 INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5 1483 INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5 1484 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 16 1485 INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12 1486 vadd.i32 q12,q11,q6 1487 INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6 1488 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 17 1489 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1490 vadd.i32 q13,q11,q7 1491 1492 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 18 1493 INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12 1494 1495 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 19 1496 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1497 1498 vadd.i32 q1,q1,q2 1499 vadd.i32 q0,q0,q14 1500 bne Loop_v8 1501 1502 vst1.32 {q0},[r0]! 1503 vst1.32 {d2[0]},[r0] 1504 1505 vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15} 1506 bx lr @ bx lr 1507 1508#endif 1509#if __ARM_MAX_ARCH__>=7 1510.comm _OPENSSL_armcap_P,4 1511.non_lazy_symbol_pointer 1512OPENSSL_armcap_P: 1513.indirect_symbol _OPENSSL_armcap_P 1514.long 0 1515.private_extern _OPENSSL_armcap_P 1516#endif 1517#endif // !OPENSSL_NO_ASM 1518