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