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