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