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