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