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