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