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#define __has_feature(x) 0 6#endif 7#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) 8#define OPENSSL_NO_ASM 9#endif 10 11#if !defined(OPENSSL_NO_ASM) 12#if defined(__arm__) 13#if defined(BORINGSSL_PREFIX) 14#include <boringssl_prefix_symbols_asm.h> 15#endif 16#include <openssl/arm_arch.h> 17 18.text 19#if defined(__thumb2__) 20.syntax unified 21.thumb 22#else 23.code 32 24#endif 25 26.globl sha1_block_data_order 27.hidden sha1_block_data_order 28.type sha1_block_data_order,%function 29 30.align 5 31sha1_block_data_order: 32#if __ARM_MAX_ARCH__>=7 33.Lsha1_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} 48.Lloop: 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] 55.L_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 285.L_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] 377.L_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 475.L_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.size sha1_block_data_order,.-sha1_block_data_order 496 497.align 5 498.LK_00_19:.word 0x5a827999 499.LK_20_39:.word 0x6ed9eba1 500.LK_40_59:.word 0x8f1bbcdc 501.LK_60_79:.word 0xca62c1d6 502#if __ARM_MAX_ARCH__>=7 503.LOPENSSL_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.arch armv7-a 511.fpu neon 512 513.type sha1_block_data_order_neon,%function 514.align 4 515sha1_block_data_order_neon: 516.LNEON: 517 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} 518 add r2,r1,r2,lsl#6 @ r2 to point at the end of r1 519 @ dmb @ errata #451034 on early Cortex A8 520 @ vstmdb sp!,{d8-d15} @ ABI specification says so 521 mov r14,sp 522 sub r12,sp,#64 523 adr r8,.LK_00_19 524 bic r12,r12,#15 @ align for 128-bit stores 525 526 ldmia r0,{r3,r4,r5,r6,r7} @ load context 527 mov sp,r12 @ alloca 528 529 vld1.8 {q0,q1},[r1]! @ handles unaligned 530 veor q15,q15,q15 531 vld1.8 {q2,q3},[r1]! 532 vld1.32 {d28[],d29[]},[r8,:32]! @ load K_00_19 533 vrev32.8 q0,q0 @ yes, even on 534 vrev32.8 q1,q1 @ big-endian... 535 vrev32.8 q2,q2 536 vadd.i32 q8,q0,q14 537 vrev32.8 q3,q3 538 vadd.i32 q9,q1,q14 539 vst1.32 {q8},[r12,:128]! 540 vadd.i32 q10,q2,q14 541 vst1.32 {q9},[r12,:128]! 542 vst1.32 {q10},[r12,:128]! 543 ldr r9,[sp] @ big RAW stall 544 545.Loop_neon: 546 vext.8 q8,q0,q1,#8 547 bic r10,r6,r4 548 add r7,r7,r9 549 and r11,r5,r4 550 vadd.i32 q13,q3,q14 551 ldr r9,[sp,#4] 552 add r7,r7,r3,ror#27 553 vext.8 q12,q3,q15,#4 554 eor r11,r11,r10 555 mov r4,r4,ror#2 556 add r7,r7,r11 557 veor q8,q8,q0 558 bic r10,r5,r3 559 add r6,r6,r9 560 veor q12,q12,q2 561 and r11,r4,r3 562 ldr r9,[sp,#8] 563 veor q12,q12,q8 564 add r6,r6,r7,ror#27 565 eor r11,r11,r10 566 vst1.32 {q13},[r12,:128]! 567 sub r12,r12,#64 568 mov r3,r3,ror#2 569 add r6,r6,r11 570 vext.8 q13,q15,q12,#4 571 bic r10,r4,r7 572 add r5,r5,r9 573 vadd.i32 q8,q12,q12 574 and r11,r3,r7 575 ldr r9,[sp,#12] 576 vsri.32 q8,q12,#31 577 add r5,r5,r6,ror#27 578 eor r11,r11,r10 579 mov r7,r7,ror#2 580 vshr.u32 q12,q13,#30 581 add r5,r5,r11 582 bic r10,r3,r6 583 vshl.u32 q13,q13,#2 584 add r4,r4,r9 585 and r11,r7,r6 586 veor q8,q8,q12 587 ldr r9,[sp,#16] 588 add r4,r4,r5,ror#27 589 veor q8,q8,q13 590 eor r11,r11,r10 591 mov r6,r6,ror#2 592 add r4,r4,r11 593 vext.8 q9,q1,q2,#8 594 bic r10,r7,r5 595 add r3,r3,r9 596 and r11,r6,r5 597 vadd.i32 q13,q8,q14 598 ldr r9,[sp,#20] 599 vld1.32 {d28[],d29[]},[r8,:32]! 600 add r3,r3,r4,ror#27 601 vext.8 q12,q8,q15,#4 602 eor r11,r11,r10 603 mov r5,r5,ror#2 604 add r3,r3,r11 605 veor q9,q9,q1 606 bic r10,r6,r4 607 add r7,r7,r9 608 veor q12,q12,q3 609 and r11,r5,r4 610 ldr r9,[sp,#24] 611 veor q12,q12,q9 612 add r7,r7,r3,ror#27 613 eor r11,r11,r10 614 vst1.32 {q13},[r12,:128]! 615 mov r4,r4,ror#2 616 add r7,r7,r11 617 vext.8 q13,q15,q12,#4 618 bic r10,r5,r3 619 add r6,r6,r9 620 vadd.i32 q9,q12,q12 621 and r11,r4,r3 622 ldr r9,[sp,#28] 623 vsri.32 q9,q12,#31 624 add r6,r6,r7,ror#27 625 eor r11,r11,r10 626 mov r3,r3,ror#2 627 vshr.u32 q12,q13,#30 628 add r6,r6,r11 629 bic r10,r4,r7 630 vshl.u32 q13,q13,#2 631 add r5,r5,r9 632 and r11,r3,r7 633 veor q9,q9,q12 634 ldr r9,[sp,#32] 635 add r5,r5,r6,ror#27 636 veor q9,q9,q13 637 eor r11,r11,r10 638 mov r7,r7,ror#2 639 add r5,r5,r11 640 vext.8 q10,q2,q3,#8 641 bic r10,r3,r6 642 add r4,r4,r9 643 and r11,r7,r6 644 vadd.i32 q13,q9,q14 645 ldr r9,[sp,#36] 646 add r4,r4,r5,ror#27 647 vext.8 q12,q9,q15,#4 648 eor r11,r11,r10 649 mov r6,r6,ror#2 650 add r4,r4,r11 651 veor q10,q10,q2 652 bic r10,r7,r5 653 add r3,r3,r9 654 veor q12,q12,q8 655 and r11,r6,r5 656 ldr r9,[sp,#40] 657 veor q12,q12,q10 658 add r3,r3,r4,ror#27 659 eor r11,r11,r10 660 vst1.32 {q13},[r12,:128]! 661 mov r5,r5,ror#2 662 add r3,r3,r11 663 vext.8 q13,q15,q12,#4 664 bic r10,r6,r4 665 add r7,r7,r9 666 vadd.i32 q10,q12,q12 667 and r11,r5,r4 668 ldr r9,[sp,#44] 669 vsri.32 q10,q12,#31 670 add r7,r7,r3,ror#27 671 eor r11,r11,r10 672 mov r4,r4,ror#2 673 vshr.u32 q12,q13,#30 674 add r7,r7,r11 675 bic r10,r5,r3 676 vshl.u32 q13,q13,#2 677 add r6,r6,r9 678 and r11,r4,r3 679 veor q10,q10,q12 680 ldr r9,[sp,#48] 681 add r6,r6,r7,ror#27 682 veor q10,q10,q13 683 eor r11,r11,r10 684 mov r3,r3,ror#2 685 add r6,r6,r11 686 vext.8 q11,q3,q8,#8 687 bic r10,r4,r7 688 add r5,r5,r9 689 and r11,r3,r7 690 vadd.i32 q13,q10,q14 691 ldr r9,[sp,#52] 692 add r5,r5,r6,ror#27 693 vext.8 q12,q10,q15,#4 694 eor r11,r11,r10 695 mov r7,r7,ror#2 696 add r5,r5,r11 697 veor q11,q11,q3 698 bic r10,r3,r6 699 add r4,r4,r9 700 veor q12,q12,q9 701 and r11,r7,r6 702 ldr r9,[sp,#56] 703 veor q12,q12,q11 704 add r4,r4,r5,ror#27 705 eor r11,r11,r10 706 vst1.32 {q13},[r12,:128]! 707 mov r6,r6,ror#2 708 add r4,r4,r11 709 vext.8 q13,q15,q12,#4 710 bic r10,r7,r5 711 add r3,r3,r9 712 vadd.i32 q11,q12,q12 713 and r11,r6,r5 714 ldr r9,[sp,#60] 715 vsri.32 q11,q12,#31 716 add r3,r3,r4,ror#27 717 eor r11,r11,r10 718 mov r5,r5,ror#2 719 vshr.u32 q12,q13,#30 720 add r3,r3,r11 721 bic r10,r6,r4 722 vshl.u32 q13,q13,#2 723 add r7,r7,r9 724 and r11,r5,r4 725 veor q11,q11,q12 726 ldr r9,[sp,#0] 727 add r7,r7,r3,ror#27 728 veor q11,q11,q13 729 eor r11,r11,r10 730 mov r4,r4,ror#2 731 add r7,r7,r11 732 vext.8 q12,q10,q11,#8 733 bic r10,r5,r3 734 add r6,r6,r9 735 and r11,r4,r3 736 veor q0,q0,q8 737 ldr r9,[sp,#4] 738 add r6,r6,r7,ror#27 739 veor q0,q0,q1 740 eor r11,r11,r10 741 mov r3,r3,ror#2 742 vadd.i32 q13,q11,q14 743 add r6,r6,r11 744 bic r10,r4,r7 745 veor q12,q12,q0 746 add r5,r5,r9 747 and r11,r3,r7 748 vshr.u32 q0,q12,#30 749 ldr r9,[sp,#8] 750 add r5,r5,r6,ror#27 751 vst1.32 {q13},[r12,:128]! 752 sub r12,r12,#64 753 eor r11,r11,r10 754 mov r7,r7,ror#2 755 vsli.32 q0,q12,#2 756 add r5,r5,r11 757 bic r10,r3,r6 758 add r4,r4,r9 759 and r11,r7,r6 760 ldr r9,[sp,#12] 761 add r4,r4,r5,ror#27 762 eor r11,r11,r10 763 mov r6,r6,ror#2 764 add r4,r4,r11 765 bic r10,r7,r5 766 add r3,r3,r9 767 and r11,r6,r5 768 ldr r9,[sp,#16] 769 add r3,r3,r4,ror#27 770 eor r11,r11,r10 771 mov r5,r5,ror#2 772 add r3,r3,r11 773 vext.8 q12,q11,q0,#8 774 eor r10,r4,r6 775 add r7,r7,r9 776 ldr r9,[sp,#20] 777 veor q1,q1,q9 778 eor r11,r10,r5 779 add r7,r7,r3,ror#27 780 veor q1,q1,q2 781 mov r4,r4,ror#2 782 add r7,r7,r11 783 vadd.i32 q13,q0,q14 784 eor r10,r3,r5 785 add r6,r6,r9 786 veor q12,q12,q1 787 ldr r9,[sp,#24] 788 eor r11,r10,r4 789 vshr.u32 q1,q12,#30 790 add r6,r6,r7,ror#27 791 mov r3,r3,ror#2 792 vst1.32 {q13},[r12,:128]! 793 add r6,r6,r11 794 eor r10,r7,r4 795 vsli.32 q1,q12,#2 796 add r5,r5,r9 797 ldr r9,[sp,#28] 798 eor r11,r10,r3 799 add r5,r5,r6,ror#27 800 mov r7,r7,ror#2 801 add r5,r5,r11 802 eor r10,r6,r3 803 add r4,r4,r9 804 ldr r9,[sp,#32] 805 eor r11,r10,r7 806 add r4,r4,r5,ror#27 807 mov r6,r6,ror#2 808 add r4,r4,r11 809 vext.8 q12,q0,q1,#8 810 eor r10,r5,r7 811 add r3,r3,r9 812 ldr r9,[sp,#36] 813 veor q2,q2,q10 814 eor r11,r10,r6 815 add r3,r3,r4,ror#27 816 veor q2,q2,q3 817 mov r5,r5,ror#2 818 add r3,r3,r11 819 vadd.i32 q13,q1,q14 820 eor r10,r4,r6 821 vld1.32 {d28[],d29[]},[r8,:32]! 822 add r7,r7,r9 823 veor q12,q12,q2 824 ldr r9,[sp,#40] 825 eor r11,r10,r5 826 vshr.u32 q2,q12,#30 827 add r7,r7,r3,ror#27 828 mov r4,r4,ror#2 829 vst1.32 {q13},[r12,:128]! 830 add r7,r7,r11 831 eor r10,r3,r5 832 vsli.32 q2,q12,#2 833 add r6,r6,r9 834 ldr r9,[sp,#44] 835 eor r11,r10,r4 836 add r6,r6,r7,ror#27 837 mov r3,r3,ror#2 838 add r6,r6,r11 839 eor r10,r7,r4 840 add r5,r5,r9 841 ldr r9,[sp,#48] 842 eor r11,r10,r3 843 add r5,r5,r6,ror#27 844 mov r7,r7,ror#2 845 add r5,r5,r11 846 vext.8 q12,q1,q2,#8 847 eor r10,r6,r3 848 add r4,r4,r9 849 ldr r9,[sp,#52] 850 veor q3,q3,q11 851 eor r11,r10,r7 852 add r4,r4,r5,ror#27 853 veor q3,q3,q8 854 mov r6,r6,ror#2 855 add r4,r4,r11 856 vadd.i32 q13,q2,q14 857 eor r10,r5,r7 858 add r3,r3,r9 859 veor q12,q12,q3 860 ldr r9,[sp,#56] 861 eor r11,r10,r6 862 vshr.u32 q3,q12,#30 863 add r3,r3,r4,ror#27 864 mov r5,r5,ror#2 865 vst1.32 {q13},[r12,:128]! 866 add r3,r3,r11 867 eor r10,r4,r6 868 vsli.32 q3,q12,#2 869 add r7,r7,r9 870 ldr r9,[sp,#60] 871 eor r11,r10,r5 872 add r7,r7,r3,ror#27 873 mov r4,r4,ror#2 874 add r7,r7,r11 875 eor r10,r3,r5 876 add r6,r6,r9 877 ldr r9,[sp,#0] 878 eor r11,r10,r4 879 add r6,r6,r7,ror#27 880 mov r3,r3,ror#2 881 add r6,r6,r11 882 vext.8 q12,q2,q3,#8 883 eor r10,r7,r4 884 add r5,r5,r9 885 ldr r9,[sp,#4] 886 veor q8,q8,q0 887 eor r11,r10,r3 888 add r5,r5,r6,ror#27 889 veor q8,q8,q9 890 mov r7,r7,ror#2 891 add r5,r5,r11 892 vadd.i32 q13,q3,q14 893 eor r10,r6,r3 894 add r4,r4,r9 895 veor q12,q12,q8 896 ldr r9,[sp,#8] 897 eor r11,r10,r7 898 vshr.u32 q8,q12,#30 899 add r4,r4,r5,ror#27 900 mov r6,r6,ror#2 901 vst1.32 {q13},[r12,:128]! 902 sub r12,r12,#64 903 add r4,r4,r11 904 eor r10,r5,r7 905 vsli.32 q8,q12,#2 906 add r3,r3,r9 907 ldr r9,[sp,#12] 908 eor r11,r10,r6 909 add r3,r3,r4,ror#27 910 mov r5,r5,ror#2 911 add r3,r3,r11 912 eor r10,r4,r6 913 add r7,r7,r9 914 ldr r9,[sp,#16] 915 eor r11,r10,r5 916 add r7,r7,r3,ror#27 917 mov r4,r4,ror#2 918 add r7,r7,r11 919 vext.8 q12,q3,q8,#8 920 eor r10,r3,r5 921 add r6,r6,r9 922 ldr r9,[sp,#20] 923 veor q9,q9,q1 924 eor r11,r10,r4 925 add r6,r6,r7,ror#27 926 veor q9,q9,q10 927 mov r3,r3,ror#2 928 add r6,r6,r11 929 vadd.i32 q13,q8,q14 930 eor r10,r7,r4 931 add r5,r5,r9 932 veor q12,q12,q9 933 ldr r9,[sp,#24] 934 eor r11,r10,r3 935 vshr.u32 q9,q12,#30 936 add r5,r5,r6,ror#27 937 mov r7,r7,ror#2 938 vst1.32 {q13},[r12,:128]! 939 add r5,r5,r11 940 eor r10,r6,r3 941 vsli.32 q9,q12,#2 942 add r4,r4,r9 943 ldr r9,[sp,#28] 944 eor r11,r10,r7 945 add r4,r4,r5,ror#27 946 mov r6,r6,ror#2 947 add r4,r4,r11 948 eor r10,r5,r7 949 add r3,r3,r9 950 ldr r9,[sp,#32] 951 eor r11,r10,r6 952 add r3,r3,r4,ror#27 953 mov r5,r5,ror#2 954 add r3,r3,r11 955 vext.8 q12,q8,q9,#8 956 add r7,r7,r9 957 and r10,r5,r6 958 ldr r9,[sp,#36] 959 veor q10,q10,q2 960 add r7,r7,r3,ror#27 961 eor r11,r5,r6 962 veor q10,q10,q11 963 add r7,r7,r10 964 and r11,r11,r4 965 vadd.i32 q13,q9,q14 966 mov r4,r4,ror#2 967 add r7,r7,r11 968 veor q12,q12,q10 969 add r6,r6,r9 970 and r10,r4,r5 971 vshr.u32 q10,q12,#30 972 ldr r9,[sp,#40] 973 add r6,r6,r7,ror#27 974 vst1.32 {q13},[r12,:128]! 975 eor r11,r4,r5 976 add r6,r6,r10 977 vsli.32 q10,q12,#2 978 and r11,r11,r3 979 mov r3,r3,ror#2 980 add r6,r6,r11 981 add r5,r5,r9 982 and r10,r3,r4 983 ldr r9,[sp,#44] 984 add r5,r5,r6,ror#27 985 eor r11,r3,r4 986 add r5,r5,r10 987 and r11,r11,r7 988 mov r7,r7,ror#2 989 add r5,r5,r11 990 add r4,r4,r9 991 and r10,r7,r3 992 ldr r9,[sp,#48] 993 add r4,r4,r5,ror#27 994 eor r11,r7,r3 995 add r4,r4,r10 996 and r11,r11,r6 997 mov r6,r6,ror#2 998 add r4,r4,r11 999 vext.8 q12,q9,q10,#8 1000 add r3,r3,r9 1001 and r10,r6,r7 1002 ldr r9,[sp,#52] 1003 veor q11,q11,q3 1004 add r3,r3,r4,ror#27 1005 eor r11,r6,r7 1006 veor q11,q11,q0 1007 add r3,r3,r10 1008 and r11,r11,r5 1009 vadd.i32 q13,q10,q14 1010 mov r5,r5,ror#2 1011 vld1.32 {d28[],d29[]},[r8,:32]! 1012 add r3,r3,r11 1013 veor q12,q12,q11 1014 add r7,r7,r9 1015 and r10,r5,r6 1016 vshr.u32 q11,q12,#30 1017 ldr r9,[sp,#56] 1018 add r7,r7,r3,ror#27 1019 vst1.32 {q13},[r12,:128]! 1020 eor r11,r5,r6 1021 add r7,r7,r10 1022 vsli.32 q11,q12,#2 1023 and r11,r11,r4 1024 mov r4,r4,ror#2 1025 add r7,r7,r11 1026 add r6,r6,r9 1027 and r10,r4,r5 1028 ldr r9,[sp,#60] 1029 add r6,r6,r7,ror#27 1030 eor r11,r4,r5 1031 add r6,r6,r10 1032 and r11,r11,r3 1033 mov r3,r3,ror#2 1034 add r6,r6,r11 1035 add r5,r5,r9 1036 and r10,r3,r4 1037 ldr r9,[sp,#0] 1038 add r5,r5,r6,ror#27 1039 eor r11,r3,r4 1040 add r5,r5,r10 1041 and r11,r11,r7 1042 mov r7,r7,ror#2 1043 add r5,r5,r11 1044 vext.8 q12,q10,q11,#8 1045 add r4,r4,r9 1046 and r10,r7,r3 1047 ldr r9,[sp,#4] 1048 veor q0,q0,q8 1049 add r4,r4,r5,ror#27 1050 eor r11,r7,r3 1051 veor q0,q0,q1 1052 add r4,r4,r10 1053 and r11,r11,r6 1054 vadd.i32 q13,q11,q14 1055 mov r6,r6,ror#2 1056 add r4,r4,r11 1057 veor q12,q12,q0 1058 add r3,r3,r9 1059 and r10,r6,r7 1060 vshr.u32 q0,q12,#30 1061 ldr r9,[sp,#8] 1062 add r3,r3,r4,ror#27 1063 vst1.32 {q13},[r12,:128]! 1064 sub r12,r12,#64 1065 eor r11,r6,r7 1066 add r3,r3,r10 1067 vsli.32 q0,q12,#2 1068 and r11,r11,r5 1069 mov r5,r5,ror#2 1070 add r3,r3,r11 1071 add r7,r7,r9 1072 and r10,r5,r6 1073 ldr r9,[sp,#12] 1074 add r7,r7,r3,ror#27 1075 eor r11,r5,r6 1076 add r7,r7,r10 1077 and r11,r11,r4 1078 mov r4,r4,ror#2 1079 add r7,r7,r11 1080 add r6,r6,r9 1081 and r10,r4,r5 1082 ldr r9,[sp,#16] 1083 add r6,r6,r7,ror#27 1084 eor r11,r4,r5 1085 add r6,r6,r10 1086 and r11,r11,r3 1087 mov r3,r3,ror#2 1088 add r6,r6,r11 1089 vext.8 q12,q11,q0,#8 1090 add r5,r5,r9 1091 and r10,r3,r4 1092 ldr r9,[sp,#20] 1093 veor q1,q1,q9 1094 add r5,r5,r6,ror#27 1095 eor r11,r3,r4 1096 veor q1,q1,q2 1097 add r5,r5,r10 1098 and r11,r11,r7 1099 vadd.i32 q13,q0,q14 1100 mov r7,r7,ror#2 1101 add r5,r5,r11 1102 veor q12,q12,q1 1103 add r4,r4,r9 1104 and r10,r7,r3 1105 vshr.u32 q1,q12,#30 1106 ldr r9,[sp,#24] 1107 add r4,r4,r5,ror#27 1108 vst1.32 {q13},[r12,:128]! 1109 eor r11,r7,r3 1110 add r4,r4,r10 1111 vsli.32 q1,q12,#2 1112 and r11,r11,r6 1113 mov r6,r6,ror#2 1114 add r4,r4,r11 1115 add r3,r3,r9 1116 and r10,r6,r7 1117 ldr r9,[sp,#28] 1118 add r3,r3,r4,ror#27 1119 eor r11,r6,r7 1120 add r3,r3,r10 1121 and r11,r11,r5 1122 mov r5,r5,ror#2 1123 add r3,r3,r11 1124 add r7,r7,r9 1125 and r10,r5,r6 1126 ldr r9,[sp,#32] 1127 add r7,r7,r3,ror#27 1128 eor r11,r5,r6 1129 add r7,r7,r10 1130 and r11,r11,r4 1131 mov r4,r4,ror#2 1132 add r7,r7,r11 1133 vext.8 q12,q0,q1,#8 1134 add r6,r6,r9 1135 and r10,r4,r5 1136 ldr r9,[sp,#36] 1137 veor q2,q2,q10 1138 add r6,r6,r7,ror#27 1139 eor r11,r4,r5 1140 veor q2,q2,q3 1141 add r6,r6,r10 1142 and r11,r11,r3 1143 vadd.i32 q13,q1,q14 1144 mov r3,r3,ror#2 1145 add r6,r6,r11 1146 veor q12,q12,q2 1147 add r5,r5,r9 1148 and r10,r3,r4 1149 vshr.u32 q2,q12,#30 1150 ldr r9,[sp,#40] 1151 add r5,r5,r6,ror#27 1152 vst1.32 {q13},[r12,:128]! 1153 eor r11,r3,r4 1154 add r5,r5,r10 1155 vsli.32 q2,q12,#2 1156 and r11,r11,r7 1157 mov r7,r7,ror#2 1158 add r5,r5,r11 1159 add r4,r4,r9 1160 and r10,r7,r3 1161 ldr r9,[sp,#44] 1162 add r4,r4,r5,ror#27 1163 eor r11,r7,r3 1164 add r4,r4,r10 1165 and r11,r11,r6 1166 mov r6,r6,ror#2 1167 add r4,r4,r11 1168 add r3,r3,r9 1169 and r10,r6,r7 1170 ldr r9,[sp,#48] 1171 add r3,r3,r4,ror#27 1172 eor r11,r6,r7 1173 add r3,r3,r10 1174 and r11,r11,r5 1175 mov r5,r5,ror#2 1176 add r3,r3,r11 1177 vext.8 q12,q1,q2,#8 1178 eor r10,r4,r6 1179 add r7,r7,r9 1180 ldr r9,[sp,#52] 1181 veor q3,q3,q11 1182 eor r11,r10,r5 1183 add r7,r7,r3,ror#27 1184 veor q3,q3,q8 1185 mov r4,r4,ror#2 1186 add r7,r7,r11 1187 vadd.i32 q13,q2,q14 1188 eor r10,r3,r5 1189 add r6,r6,r9 1190 veor q12,q12,q3 1191 ldr r9,[sp,#56] 1192 eor r11,r10,r4 1193 vshr.u32 q3,q12,#30 1194 add r6,r6,r7,ror#27 1195 mov r3,r3,ror#2 1196 vst1.32 {q13},[r12,:128]! 1197 add r6,r6,r11 1198 eor r10,r7,r4 1199 vsli.32 q3,q12,#2 1200 add r5,r5,r9 1201 ldr r9,[sp,#60] 1202 eor r11,r10,r3 1203 add r5,r5,r6,ror#27 1204 mov r7,r7,ror#2 1205 add r5,r5,r11 1206 eor r10,r6,r3 1207 add r4,r4,r9 1208 ldr r9,[sp,#0] 1209 eor r11,r10,r7 1210 add r4,r4,r5,ror#27 1211 mov r6,r6,ror#2 1212 add r4,r4,r11 1213 vadd.i32 q13,q3,q14 1214 eor r10,r5,r7 1215 add r3,r3,r9 1216 vst1.32 {q13},[r12,:128]! 1217 sub r12,r12,#64 1218 teq r1,r2 1219 sub r8,r8,#16 1220 it eq 1221 subeq r1,r1,#64 1222 vld1.8 {q0,q1},[r1]! 1223 ldr r9,[sp,#4] 1224 eor r11,r10,r6 1225 vld1.8 {q2,q3},[r1]! 1226 add r3,r3,r4,ror#27 1227 mov r5,r5,ror#2 1228 vld1.32 {d28[],d29[]},[r8,:32]! 1229 add r3,r3,r11 1230 eor r10,r4,r6 1231 vrev32.8 q0,q0 1232 add r7,r7,r9 1233 ldr r9,[sp,#8] 1234 eor r11,r10,r5 1235 add r7,r7,r3,ror#27 1236 mov r4,r4,ror#2 1237 add r7,r7,r11 1238 eor r10,r3,r5 1239 add r6,r6,r9 1240 ldr r9,[sp,#12] 1241 eor r11,r10,r4 1242 add r6,r6,r7,ror#27 1243 mov r3,r3,ror#2 1244 add r6,r6,r11 1245 eor r10,r7,r4 1246 add r5,r5,r9 1247 ldr r9,[sp,#16] 1248 eor r11,r10,r3 1249 add r5,r5,r6,ror#27 1250 mov r7,r7,ror#2 1251 add r5,r5,r11 1252 vrev32.8 q1,q1 1253 eor r10,r6,r3 1254 add r4,r4,r9 1255 vadd.i32 q8,q0,q14 1256 ldr r9,[sp,#20] 1257 eor r11,r10,r7 1258 vst1.32 {q8},[r12,:128]! 1259 add r4,r4,r5,ror#27 1260 mov r6,r6,ror#2 1261 add r4,r4,r11 1262 eor r10,r5,r7 1263 add r3,r3,r9 1264 ldr r9,[sp,#24] 1265 eor r11,r10,r6 1266 add r3,r3,r4,ror#27 1267 mov r5,r5,ror#2 1268 add r3,r3,r11 1269 eor r10,r4,r6 1270 add r7,r7,r9 1271 ldr r9,[sp,#28] 1272 eor r11,r10,r5 1273 add r7,r7,r3,ror#27 1274 mov r4,r4,ror#2 1275 add r7,r7,r11 1276 eor r10,r3,r5 1277 add r6,r6,r9 1278 ldr r9,[sp,#32] 1279 eor r11,r10,r4 1280 add r6,r6,r7,ror#27 1281 mov r3,r3,ror#2 1282 add r6,r6,r11 1283 vrev32.8 q2,q2 1284 eor r10,r7,r4 1285 add r5,r5,r9 1286 vadd.i32 q9,q1,q14 1287 ldr r9,[sp,#36] 1288 eor r11,r10,r3 1289 vst1.32 {q9},[r12,:128]! 1290 add r5,r5,r6,ror#27 1291 mov r7,r7,ror#2 1292 add r5,r5,r11 1293 eor r10,r6,r3 1294 add r4,r4,r9 1295 ldr r9,[sp,#40] 1296 eor r11,r10,r7 1297 add r4,r4,r5,ror#27 1298 mov r6,r6,ror#2 1299 add r4,r4,r11 1300 eor r10,r5,r7 1301 add r3,r3,r9 1302 ldr r9,[sp,#44] 1303 eor r11,r10,r6 1304 add r3,r3,r4,ror#27 1305 mov r5,r5,ror#2 1306 add r3,r3,r11 1307 eor r10,r4,r6 1308 add r7,r7,r9 1309 ldr r9,[sp,#48] 1310 eor r11,r10,r5 1311 add r7,r7,r3,ror#27 1312 mov r4,r4,ror#2 1313 add r7,r7,r11 1314 vrev32.8 q3,q3 1315 eor r10,r3,r5 1316 add r6,r6,r9 1317 vadd.i32 q10,q2,q14 1318 ldr r9,[sp,#52] 1319 eor r11,r10,r4 1320 vst1.32 {q10},[r12,:128]! 1321 add r6,r6,r7,ror#27 1322 mov r3,r3,ror#2 1323 add r6,r6,r11 1324 eor r10,r7,r4 1325 add r5,r5,r9 1326 ldr r9,[sp,#56] 1327 eor r11,r10,r3 1328 add r5,r5,r6,ror#27 1329 mov r7,r7,ror#2 1330 add r5,r5,r11 1331 eor r10,r6,r3 1332 add r4,r4,r9 1333 ldr r9,[sp,#60] 1334 eor r11,r10,r7 1335 add r4,r4,r5,ror#27 1336 mov r6,r6,ror#2 1337 add r4,r4,r11 1338 eor r10,r5,r7 1339 add r3,r3,r9 1340 eor r11,r10,r6 1341 add r3,r3,r4,ror#27 1342 mov r5,r5,ror#2 1343 add r3,r3,r11 1344 ldmia r0,{r9,r10,r11,r12} @ accumulate context 1345 add r3,r3,r9 1346 ldr r9,[r0,#16] 1347 add r4,r4,r10 1348 add r5,r5,r11 1349 add r6,r6,r12 1350 it eq 1351 moveq sp,r14 1352 add r7,r7,r9 1353 it ne 1354 ldrne r9,[sp] 1355 stmia r0,{r3,r4,r5,r6,r7} 1356 itt ne 1357 addne r12,sp,#3*16 1358 bne .Loop_neon 1359 1360 @ vldmia sp!,{d8-d15} 1361 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} 1362.size sha1_block_data_order_neon,.-sha1_block_data_order_neon 1363#endif 1364#if __ARM_MAX_ARCH__>=7 1365 1366# if defined(__thumb2__) 1367# define INST(a,b,c,d) .byte c,d|0xf,a,b 1368# else 1369# define INST(a,b,c,d) .byte a,b,c,d|0x10 1370# endif 1371 1372.type sha1_block_data_order_armv8,%function 1373.align 5 1374sha1_block_data_order_armv8: 1375.LARMv8: 1376 vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so 1377 1378 veor q1,q1,q1 1379 adr r3,.LK_00_19 1380 vld1.32 {q0},[r0]! 1381 vld1.32 {d2[0]},[r0] 1382 sub r0,r0,#16 1383 vld1.32 {d16[],d17[]},[r3,:32]! 1384 vld1.32 {d18[],d19[]},[r3,:32]! 1385 vld1.32 {d20[],d21[]},[r3,:32]! 1386 vld1.32 {d22[],d23[]},[r3,:32] 1387 1388.Loop_v8: 1389 vld1.8 {q4,q5},[r1]! 1390 vld1.8 {q6,q7},[r1]! 1391 vrev32.8 q4,q4 1392 vrev32.8 q5,q5 1393 1394 vadd.i32 q12,q8,q4 1395 vrev32.8 q6,q6 1396 vmov q14,q0 @ offload 1397 subs r2,r2,#1 1398 1399 vadd.i32 q13,q8,q5 1400 vrev32.8 q7,q7 1401 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 0 1402 INST(0x68,0x0c,0x02,0xe2) @ sha1c q0,q1,q12 1403 vadd.i32 q12,q8,q6 1404 INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6 1405 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 1 1406 INST(0x6a,0x0c,0x06,0xe2) @ sha1c q0,q3,q13 1407 vadd.i32 q13,q8,q7 1408 INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7 1409 INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7 1410 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 2 1411 INST(0x68,0x0c,0x04,0xe2) @ sha1c q0,q2,q12 1412 vadd.i32 q12,q8,q4 1413 INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4 1414 INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4 1415 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 3 1416 INST(0x6a,0x0c,0x06,0xe2) @ sha1c q0,q3,q13 1417 vadd.i32 q13,q9,q5 1418 INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5 1419 INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5 1420 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 4 1421 INST(0x68,0x0c,0x04,0xe2) @ sha1c q0,q2,q12 1422 vadd.i32 q12,q9,q6 1423 INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6 1424 INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6 1425 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 5 1426 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1427 vadd.i32 q13,q9,q7 1428 INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7 1429 INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7 1430 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 6 1431 INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12 1432 vadd.i32 q12,q9,q4 1433 INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4 1434 INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4 1435 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 7 1436 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1437 vadd.i32 q13,q9,q5 1438 INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5 1439 INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5 1440 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 8 1441 INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12 1442 vadd.i32 q12,q10,q6 1443 INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6 1444 INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6 1445 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 9 1446 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1447 vadd.i32 q13,q10,q7 1448 INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7 1449 INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7 1450 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 10 1451 INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12 1452 vadd.i32 q12,q10,q4 1453 INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4 1454 INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4 1455 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 11 1456 INST(0x6a,0x0c,0x26,0xe2) @ sha1m q0,q3,q13 1457 vadd.i32 q13,q10,q5 1458 INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5 1459 INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5 1460 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 12 1461 INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12 1462 vadd.i32 q12,q10,q6 1463 INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6 1464 INST(0x4c,0x8c,0x3a,0xe2) @ sha1su0 q4,q5,q6 1465 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 13 1466 INST(0x6a,0x0c,0x26,0xe2) @ sha1m q0,q3,q13 1467 vadd.i32 q13,q11,q7 1468 INST(0x8e,0x83,0xba,0xf3) @ sha1su1 q4,q7 1469 INST(0x4e,0xac,0x3c,0xe2) @ sha1su0 q5,q6,q7 1470 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 14 1471 INST(0x68,0x0c,0x24,0xe2) @ sha1m q0,q2,q12 1472 vadd.i32 q12,q11,q4 1473 INST(0x88,0xa3,0xba,0xf3) @ sha1su1 q5,q4 1474 INST(0x48,0xcc,0x3e,0xe2) @ sha1su0 q6,q7,q4 1475 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 15 1476 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1477 vadd.i32 q13,q11,q5 1478 INST(0x8a,0xc3,0xba,0xf3) @ sha1su1 q6,q5 1479 INST(0x4a,0xec,0x38,0xe2) @ sha1su0 q7,q4,q5 1480 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 16 1481 INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12 1482 vadd.i32 q12,q11,q6 1483 INST(0x8c,0xe3,0xba,0xf3) @ sha1su1 q7,q6 1484 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 17 1485 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1486 vadd.i32 q13,q11,q7 1487 1488 INST(0xc0,0x62,0xb9,0xf3) @ sha1h q3,q0 @ 18 1489 INST(0x68,0x0c,0x14,0xe2) @ sha1p q0,q2,q12 1490 1491 INST(0xc0,0x42,0xb9,0xf3) @ sha1h q2,q0 @ 19 1492 INST(0x6a,0x0c,0x16,0xe2) @ sha1p q0,q3,q13 1493 1494 vadd.i32 q1,q1,q2 1495 vadd.i32 q0,q0,q14 1496 bne .Loop_v8 1497 1498 vst1.32 {q0},[r0]! 1499 vst1.32 {d2[0]},[r0] 1500 1501 vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15} 1502 bx lr @ bx lr 1503.size sha1_block_data_order_armv8,.-sha1_block_data_order_armv8 1504#endif 1505#if __ARM_MAX_ARCH__>=7 1506.comm OPENSSL_armcap_P,4,4 1507.hidden OPENSSL_armcap_P 1508#endif 1509#endif 1510#endif // !OPENSSL_NO_ASM 1511.section .note.GNU-stack,"",%progbits 1512