1// This file is generated from a similarly-named Perl script in the BoringSSL 2// source tree. Do not edit by hand. 3 4#if defined(__has_feature) 5#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) 6#define OPENSSL_NO_ASM 7#endif 8#endif 9 10#if !defined(OPENSSL_NO_ASM) 11#if defined(__aarch64__) 12#if defined(BORINGSSL_PREFIX) 13#include <boringssl_prefix_symbols_asm.h> 14#endif 15#include <openssl/arm_arch.h> 16 17.text 18 19 20.globl sha1_block_data_order 21.hidden sha1_block_data_order 22.type sha1_block_data_order,%function 23.align 6 24sha1_block_data_order: 25 adrp x16,OPENSSL_armcap_P 26 add x16,x16,:lo12:OPENSSL_armcap_P 27 ldr w16,[x16] 28 tst w16,#ARMV8_SHA1 29 b.ne .Lv8_entry 30 31 stp x29,x30,[sp,#-96]! 32 add x29,sp,#0 33 stp x19,x20,[sp,#16] 34 stp x21,x22,[sp,#32] 35 stp x23,x24,[sp,#48] 36 stp x25,x26,[sp,#64] 37 stp x27,x28,[sp,#80] 38 39 ldp w20,w21,[x0] 40 ldp w22,w23,[x0,#8] 41 ldr w24,[x0,#16] 42 43.Loop: 44 ldr x3,[x1],#64 45 movz w28,#0x7999 46 sub x2,x2,#1 47 movk w28,#0x5a82,lsl#16 48#ifdef __ARMEB__ 49 ror x3,x3,#32 50#else 51 rev32 x3,x3 52#endif 53 add w24,w24,w28 // warm it up 54 add w24,w24,w3 55 lsr x4,x3,#32 56 ldr x5,[x1,#-56] 57 bic w25,w23,w21 58 and w26,w22,w21 59 ror w27,w20,#27 60 add w23,w23,w28 // future e+=K 61 orr w25,w25,w26 62 add w24,w24,w27 // e+=rot(a,5) 63 ror w21,w21,#2 64 add w23,w23,w4 // future e+=X[i] 65 add w24,w24,w25 // e+=F(b,c,d) 66#ifdef __ARMEB__ 67 ror x5,x5,#32 68#else 69 rev32 x5,x5 70#endif 71 bic w25,w22,w20 72 and w26,w21,w20 73 ror w27,w24,#27 74 add w22,w22,w28 // future e+=K 75 orr w25,w25,w26 76 add w23,w23,w27 // e+=rot(a,5) 77 ror w20,w20,#2 78 add w22,w22,w5 // future e+=X[i] 79 add w23,w23,w25 // e+=F(b,c,d) 80 lsr x6,x5,#32 81 ldr x7,[x1,#-48] 82 bic w25,w21,w24 83 and w26,w20,w24 84 ror w27,w23,#27 85 add w21,w21,w28 // future e+=K 86 orr w25,w25,w26 87 add w22,w22,w27 // e+=rot(a,5) 88 ror w24,w24,#2 89 add w21,w21,w6 // future e+=X[i] 90 add w22,w22,w25 // e+=F(b,c,d) 91#ifdef __ARMEB__ 92 ror x7,x7,#32 93#else 94 rev32 x7,x7 95#endif 96 bic w25,w20,w23 97 and w26,w24,w23 98 ror w27,w22,#27 99 add w20,w20,w28 // future e+=K 100 orr w25,w25,w26 101 add w21,w21,w27 // e+=rot(a,5) 102 ror w23,w23,#2 103 add w20,w20,w7 // future e+=X[i] 104 add w21,w21,w25 // e+=F(b,c,d) 105 lsr x8,x7,#32 106 ldr x9,[x1,#-40] 107 bic w25,w24,w22 108 and w26,w23,w22 109 ror w27,w21,#27 110 add w24,w24,w28 // future e+=K 111 orr w25,w25,w26 112 add w20,w20,w27 // e+=rot(a,5) 113 ror w22,w22,#2 114 add w24,w24,w8 // future e+=X[i] 115 add w20,w20,w25 // e+=F(b,c,d) 116#ifdef __ARMEB__ 117 ror x9,x9,#32 118#else 119 rev32 x9,x9 120#endif 121 bic w25,w23,w21 122 and w26,w22,w21 123 ror w27,w20,#27 124 add w23,w23,w28 // future e+=K 125 orr w25,w25,w26 126 add w24,w24,w27 // e+=rot(a,5) 127 ror w21,w21,#2 128 add w23,w23,w9 // future e+=X[i] 129 add w24,w24,w25 // e+=F(b,c,d) 130 lsr x10,x9,#32 131 ldr x11,[x1,#-32] 132 bic w25,w22,w20 133 and w26,w21,w20 134 ror w27,w24,#27 135 add w22,w22,w28 // future e+=K 136 orr w25,w25,w26 137 add w23,w23,w27 // e+=rot(a,5) 138 ror w20,w20,#2 139 add w22,w22,w10 // future e+=X[i] 140 add w23,w23,w25 // e+=F(b,c,d) 141#ifdef __ARMEB__ 142 ror x11,x11,#32 143#else 144 rev32 x11,x11 145#endif 146 bic w25,w21,w24 147 and w26,w20,w24 148 ror w27,w23,#27 149 add w21,w21,w28 // future e+=K 150 orr w25,w25,w26 151 add w22,w22,w27 // e+=rot(a,5) 152 ror w24,w24,#2 153 add w21,w21,w11 // future e+=X[i] 154 add w22,w22,w25 // e+=F(b,c,d) 155 lsr x12,x11,#32 156 ldr x13,[x1,#-24] 157 bic w25,w20,w23 158 and w26,w24,w23 159 ror w27,w22,#27 160 add w20,w20,w28 // future e+=K 161 orr w25,w25,w26 162 add w21,w21,w27 // e+=rot(a,5) 163 ror w23,w23,#2 164 add w20,w20,w12 // future e+=X[i] 165 add w21,w21,w25 // e+=F(b,c,d) 166#ifdef __ARMEB__ 167 ror x13,x13,#32 168#else 169 rev32 x13,x13 170#endif 171 bic w25,w24,w22 172 and w26,w23,w22 173 ror w27,w21,#27 174 add w24,w24,w28 // future e+=K 175 orr w25,w25,w26 176 add w20,w20,w27 // e+=rot(a,5) 177 ror w22,w22,#2 178 add w24,w24,w13 // future e+=X[i] 179 add w20,w20,w25 // e+=F(b,c,d) 180 lsr x14,x13,#32 181 ldr x15,[x1,#-16] 182 bic w25,w23,w21 183 and w26,w22,w21 184 ror w27,w20,#27 185 add w23,w23,w28 // future e+=K 186 orr w25,w25,w26 187 add w24,w24,w27 // e+=rot(a,5) 188 ror w21,w21,#2 189 add w23,w23,w14 // future e+=X[i] 190 add w24,w24,w25 // e+=F(b,c,d) 191#ifdef __ARMEB__ 192 ror x15,x15,#32 193#else 194 rev32 x15,x15 195#endif 196 bic w25,w22,w20 197 and w26,w21,w20 198 ror w27,w24,#27 199 add w22,w22,w28 // future e+=K 200 orr w25,w25,w26 201 add w23,w23,w27 // e+=rot(a,5) 202 ror w20,w20,#2 203 add w22,w22,w15 // future e+=X[i] 204 add w23,w23,w25 // e+=F(b,c,d) 205 lsr x16,x15,#32 206 ldr x17,[x1,#-8] 207 bic w25,w21,w24 208 and w26,w20,w24 209 ror w27,w23,#27 210 add w21,w21,w28 // future e+=K 211 orr w25,w25,w26 212 add w22,w22,w27 // e+=rot(a,5) 213 ror w24,w24,#2 214 add w21,w21,w16 // future e+=X[i] 215 add w22,w22,w25 // e+=F(b,c,d) 216#ifdef __ARMEB__ 217 ror x17,x17,#32 218#else 219 rev32 x17,x17 220#endif 221 bic w25,w20,w23 222 and w26,w24,w23 223 ror w27,w22,#27 224 add w20,w20,w28 // future e+=K 225 orr w25,w25,w26 226 add w21,w21,w27 // e+=rot(a,5) 227 ror w23,w23,#2 228 add w20,w20,w17 // future e+=X[i] 229 add w21,w21,w25 // e+=F(b,c,d) 230 lsr x19,x17,#32 231 eor w3,w3,w5 232 bic w25,w24,w22 233 and w26,w23,w22 234 ror w27,w21,#27 235 eor w3,w3,w11 236 add w24,w24,w28 // future e+=K 237 orr w25,w25,w26 238 add w20,w20,w27 // e+=rot(a,5) 239 eor w3,w3,w16 240 ror w22,w22,#2 241 add w24,w24,w19 // future e+=X[i] 242 add w20,w20,w25 // e+=F(b,c,d) 243 ror w3,w3,#31 244 eor w4,w4,w6 245 bic w25,w23,w21 246 and w26,w22,w21 247 ror w27,w20,#27 248 eor w4,w4,w12 249 add w23,w23,w28 // future e+=K 250 orr w25,w25,w26 251 add w24,w24,w27 // e+=rot(a,5) 252 eor w4,w4,w17 253 ror w21,w21,#2 254 add w23,w23,w3 // future e+=X[i] 255 add w24,w24,w25 // e+=F(b,c,d) 256 ror w4,w4,#31 257 eor w5,w5,w7 258 bic w25,w22,w20 259 and w26,w21,w20 260 ror w27,w24,#27 261 eor w5,w5,w13 262 add w22,w22,w28 // future e+=K 263 orr w25,w25,w26 264 add w23,w23,w27 // e+=rot(a,5) 265 eor w5,w5,w19 266 ror w20,w20,#2 267 add w22,w22,w4 // future e+=X[i] 268 add w23,w23,w25 // e+=F(b,c,d) 269 ror w5,w5,#31 270 eor w6,w6,w8 271 bic w25,w21,w24 272 and w26,w20,w24 273 ror w27,w23,#27 274 eor w6,w6,w14 275 add w21,w21,w28 // future e+=K 276 orr w25,w25,w26 277 add w22,w22,w27 // e+=rot(a,5) 278 eor w6,w6,w3 279 ror w24,w24,#2 280 add w21,w21,w5 // future e+=X[i] 281 add w22,w22,w25 // e+=F(b,c,d) 282 ror w6,w6,#31 283 eor w7,w7,w9 284 bic w25,w20,w23 285 and w26,w24,w23 286 ror w27,w22,#27 287 eor w7,w7,w15 288 add w20,w20,w28 // future e+=K 289 orr w25,w25,w26 290 add w21,w21,w27 // e+=rot(a,5) 291 eor w7,w7,w4 292 ror w23,w23,#2 293 add w20,w20,w6 // future e+=X[i] 294 add w21,w21,w25 // e+=F(b,c,d) 295 ror w7,w7,#31 296 movz w28,#0xeba1 297 movk w28,#0x6ed9,lsl#16 298 eor w8,w8,w10 299 bic w25,w24,w22 300 and w26,w23,w22 301 ror w27,w21,#27 302 eor w8,w8,w16 303 add w24,w24,w28 // future e+=K 304 orr w25,w25,w26 305 add w20,w20,w27 // e+=rot(a,5) 306 eor w8,w8,w5 307 ror w22,w22,#2 308 add w24,w24,w7 // future e+=X[i] 309 add w20,w20,w25 // e+=F(b,c,d) 310 ror w8,w8,#31 311 eor w9,w9,w11 312 eor w25,w23,w21 313 ror w27,w20,#27 314 add w23,w23,w28 // future e+=K 315 eor w9,w9,w17 316 eor w25,w25,w22 317 add w24,w24,w27 // e+=rot(a,5) 318 ror w21,w21,#2 319 eor w9,w9,w6 320 add w23,w23,w8 // future e+=X[i] 321 add w24,w24,w25 // e+=F(b,c,d) 322 ror w9,w9,#31 323 eor w10,w10,w12 324 eor w25,w22,w20 325 ror w27,w24,#27 326 add w22,w22,w28 // future e+=K 327 eor w10,w10,w19 328 eor w25,w25,w21 329 add w23,w23,w27 // e+=rot(a,5) 330 ror w20,w20,#2 331 eor w10,w10,w7 332 add w22,w22,w9 // future e+=X[i] 333 add w23,w23,w25 // e+=F(b,c,d) 334 ror w10,w10,#31 335 eor w11,w11,w13 336 eor w25,w21,w24 337 ror w27,w23,#27 338 add w21,w21,w28 // future e+=K 339 eor w11,w11,w3 340 eor w25,w25,w20 341 add w22,w22,w27 // e+=rot(a,5) 342 ror w24,w24,#2 343 eor w11,w11,w8 344 add w21,w21,w10 // future e+=X[i] 345 add w22,w22,w25 // e+=F(b,c,d) 346 ror w11,w11,#31 347 eor w12,w12,w14 348 eor w25,w20,w23 349 ror w27,w22,#27 350 add w20,w20,w28 // future e+=K 351 eor w12,w12,w4 352 eor w25,w25,w24 353 add w21,w21,w27 // e+=rot(a,5) 354 ror w23,w23,#2 355 eor w12,w12,w9 356 add w20,w20,w11 // future e+=X[i] 357 add w21,w21,w25 // e+=F(b,c,d) 358 ror w12,w12,#31 359 eor w13,w13,w15 360 eor w25,w24,w22 361 ror w27,w21,#27 362 add w24,w24,w28 // future e+=K 363 eor w13,w13,w5 364 eor w25,w25,w23 365 add w20,w20,w27 // e+=rot(a,5) 366 ror w22,w22,#2 367 eor w13,w13,w10 368 add w24,w24,w12 // future e+=X[i] 369 add w20,w20,w25 // e+=F(b,c,d) 370 ror w13,w13,#31 371 eor w14,w14,w16 372 eor w25,w23,w21 373 ror w27,w20,#27 374 add w23,w23,w28 // future e+=K 375 eor w14,w14,w6 376 eor w25,w25,w22 377 add w24,w24,w27 // e+=rot(a,5) 378 ror w21,w21,#2 379 eor w14,w14,w11 380 add w23,w23,w13 // future e+=X[i] 381 add w24,w24,w25 // e+=F(b,c,d) 382 ror w14,w14,#31 383 eor w15,w15,w17 384 eor w25,w22,w20 385 ror w27,w24,#27 386 add w22,w22,w28 // future e+=K 387 eor w15,w15,w7 388 eor w25,w25,w21 389 add w23,w23,w27 // e+=rot(a,5) 390 ror w20,w20,#2 391 eor w15,w15,w12 392 add w22,w22,w14 // future e+=X[i] 393 add w23,w23,w25 // e+=F(b,c,d) 394 ror w15,w15,#31 395 eor w16,w16,w19 396 eor w25,w21,w24 397 ror w27,w23,#27 398 add w21,w21,w28 // future e+=K 399 eor w16,w16,w8 400 eor w25,w25,w20 401 add w22,w22,w27 // e+=rot(a,5) 402 ror w24,w24,#2 403 eor w16,w16,w13 404 add w21,w21,w15 // future e+=X[i] 405 add w22,w22,w25 // e+=F(b,c,d) 406 ror w16,w16,#31 407 eor w17,w17,w3 408 eor w25,w20,w23 409 ror w27,w22,#27 410 add w20,w20,w28 // future e+=K 411 eor w17,w17,w9 412 eor w25,w25,w24 413 add w21,w21,w27 // e+=rot(a,5) 414 ror w23,w23,#2 415 eor w17,w17,w14 416 add w20,w20,w16 // future e+=X[i] 417 add w21,w21,w25 // e+=F(b,c,d) 418 ror w17,w17,#31 419 eor w19,w19,w4 420 eor w25,w24,w22 421 ror w27,w21,#27 422 add w24,w24,w28 // future e+=K 423 eor w19,w19,w10 424 eor w25,w25,w23 425 add w20,w20,w27 // e+=rot(a,5) 426 ror w22,w22,#2 427 eor w19,w19,w15 428 add w24,w24,w17 // future e+=X[i] 429 add w20,w20,w25 // e+=F(b,c,d) 430 ror w19,w19,#31 431 eor w3,w3,w5 432 eor w25,w23,w21 433 ror w27,w20,#27 434 add w23,w23,w28 // future e+=K 435 eor w3,w3,w11 436 eor w25,w25,w22 437 add w24,w24,w27 // e+=rot(a,5) 438 ror w21,w21,#2 439 eor w3,w3,w16 440 add w23,w23,w19 // future e+=X[i] 441 add w24,w24,w25 // e+=F(b,c,d) 442 ror w3,w3,#31 443 eor w4,w4,w6 444 eor w25,w22,w20 445 ror w27,w24,#27 446 add w22,w22,w28 // future e+=K 447 eor w4,w4,w12 448 eor w25,w25,w21 449 add w23,w23,w27 // e+=rot(a,5) 450 ror w20,w20,#2 451 eor w4,w4,w17 452 add w22,w22,w3 // future e+=X[i] 453 add w23,w23,w25 // e+=F(b,c,d) 454 ror w4,w4,#31 455 eor w5,w5,w7 456 eor w25,w21,w24 457 ror w27,w23,#27 458 add w21,w21,w28 // future e+=K 459 eor w5,w5,w13 460 eor w25,w25,w20 461 add w22,w22,w27 // e+=rot(a,5) 462 ror w24,w24,#2 463 eor w5,w5,w19 464 add w21,w21,w4 // future e+=X[i] 465 add w22,w22,w25 // e+=F(b,c,d) 466 ror w5,w5,#31 467 eor w6,w6,w8 468 eor w25,w20,w23 469 ror w27,w22,#27 470 add w20,w20,w28 // future e+=K 471 eor w6,w6,w14 472 eor w25,w25,w24 473 add w21,w21,w27 // e+=rot(a,5) 474 ror w23,w23,#2 475 eor w6,w6,w3 476 add w20,w20,w5 // future e+=X[i] 477 add w21,w21,w25 // e+=F(b,c,d) 478 ror w6,w6,#31 479 eor w7,w7,w9 480 eor w25,w24,w22 481 ror w27,w21,#27 482 add w24,w24,w28 // future e+=K 483 eor w7,w7,w15 484 eor w25,w25,w23 485 add w20,w20,w27 // e+=rot(a,5) 486 ror w22,w22,#2 487 eor w7,w7,w4 488 add w24,w24,w6 // future e+=X[i] 489 add w20,w20,w25 // e+=F(b,c,d) 490 ror w7,w7,#31 491 eor w8,w8,w10 492 eor w25,w23,w21 493 ror w27,w20,#27 494 add w23,w23,w28 // future e+=K 495 eor w8,w8,w16 496 eor w25,w25,w22 497 add w24,w24,w27 // e+=rot(a,5) 498 ror w21,w21,#2 499 eor w8,w8,w5 500 add w23,w23,w7 // future e+=X[i] 501 add w24,w24,w25 // e+=F(b,c,d) 502 ror w8,w8,#31 503 eor w9,w9,w11 504 eor w25,w22,w20 505 ror w27,w24,#27 506 add w22,w22,w28 // future e+=K 507 eor w9,w9,w17 508 eor w25,w25,w21 509 add w23,w23,w27 // e+=rot(a,5) 510 ror w20,w20,#2 511 eor w9,w9,w6 512 add w22,w22,w8 // future e+=X[i] 513 add w23,w23,w25 // e+=F(b,c,d) 514 ror w9,w9,#31 515 eor w10,w10,w12 516 eor w25,w21,w24 517 ror w27,w23,#27 518 add w21,w21,w28 // future e+=K 519 eor w10,w10,w19 520 eor w25,w25,w20 521 add w22,w22,w27 // e+=rot(a,5) 522 ror w24,w24,#2 523 eor w10,w10,w7 524 add w21,w21,w9 // future e+=X[i] 525 add w22,w22,w25 // e+=F(b,c,d) 526 ror w10,w10,#31 527 eor w11,w11,w13 528 eor w25,w20,w23 529 ror w27,w22,#27 530 add w20,w20,w28 // future e+=K 531 eor w11,w11,w3 532 eor w25,w25,w24 533 add w21,w21,w27 // e+=rot(a,5) 534 ror w23,w23,#2 535 eor w11,w11,w8 536 add w20,w20,w10 // future e+=X[i] 537 add w21,w21,w25 // e+=F(b,c,d) 538 ror w11,w11,#31 539 movz w28,#0xbcdc 540 movk w28,#0x8f1b,lsl#16 541 eor w12,w12,w14 542 eor w25,w24,w22 543 ror w27,w21,#27 544 add w24,w24,w28 // future e+=K 545 eor w12,w12,w4 546 eor w25,w25,w23 547 add w20,w20,w27 // e+=rot(a,5) 548 ror w22,w22,#2 549 eor w12,w12,w9 550 add w24,w24,w11 // future e+=X[i] 551 add w20,w20,w25 // e+=F(b,c,d) 552 ror w12,w12,#31 553 orr w25,w21,w22 554 and w26,w21,w22 555 eor w13,w13,w15 556 ror w27,w20,#27 557 and w25,w25,w23 558 add w23,w23,w28 // future e+=K 559 eor w13,w13,w5 560 add w24,w24,w27 // e+=rot(a,5) 561 orr w25,w25,w26 562 ror w21,w21,#2 563 eor w13,w13,w10 564 add w23,w23,w12 // future e+=X[i] 565 add w24,w24,w25 // e+=F(b,c,d) 566 ror w13,w13,#31 567 orr w25,w20,w21 568 and w26,w20,w21 569 eor w14,w14,w16 570 ror w27,w24,#27 571 and w25,w25,w22 572 add w22,w22,w28 // future e+=K 573 eor w14,w14,w6 574 add w23,w23,w27 // e+=rot(a,5) 575 orr w25,w25,w26 576 ror w20,w20,#2 577 eor w14,w14,w11 578 add w22,w22,w13 // future e+=X[i] 579 add w23,w23,w25 // e+=F(b,c,d) 580 ror w14,w14,#31 581 orr w25,w24,w20 582 and w26,w24,w20 583 eor w15,w15,w17 584 ror w27,w23,#27 585 and w25,w25,w21 586 add w21,w21,w28 // future e+=K 587 eor w15,w15,w7 588 add w22,w22,w27 // e+=rot(a,5) 589 orr w25,w25,w26 590 ror w24,w24,#2 591 eor w15,w15,w12 592 add w21,w21,w14 // future e+=X[i] 593 add w22,w22,w25 // e+=F(b,c,d) 594 ror w15,w15,#31 595 orr w25,w23,w24 596 and w26,w23,w24 597 eor w16,w16,w19 598 ror w27,w22,#27 599 and w25,w25,w20 600 add w20,w20,w28 // future e+=K 601 eor w16,w16,w8 602 add w21,w21,w27 // e+=rot(a,5) 603 orr w25,w25,w26 604 ror w23,w23,#2 605 eor w16,w16,w13 606 add w20,w20,w15 // future e+=X[i] 607 add w21,w21,w25 // e+=F(b,c,d) 608 ror w16,w16,#31 609 orr w25,w22,w23 610 and w26,w22,w23 611 eor w17,w17,w3 612 ror w27,w21,#27 613 and w25,w25,w24 614 add w24,w24,w28 // future e+=K 615 eor w17,w17,w9 616 add w20,w20,w27 // e+=rot(a,5) 617 orr w25,w25,w26 618 ror w22,w22,#2 619 eor w17,w17,w14 620 add w24,w24,w16 // future e+=X[i] 621 add w20,w20,w25 // e+=F(b,c,d) 622 ror w17,w17,#31 623 orr w25,w21,w22 624 and w26,w21,w22 625 eor w19,w19,w4 626 ror w27,w20,#27 627 and w25,w25,w23 628 add w23,w23,w28 // future e+=K 629 eor w19,w19,w10 630 add w24,w24,w27 // e+=rot(a,5) 631 orr w25,w25,w26 632 ror w21,w21,#2 633 eor w19,w19,w15 634 add w23,w23,w17 // future e+=X[i] 635 add w24,w24,w25 // e+=F(b,c,d) 636 ror w19,w19,#31 637 orr w25,w20,w21 638 and w26,w20,w21 639 eor w3,w3,w5 640 ror w27,w24,#27 641 and w25,w25,w22 642 add w22,w22,w28 // future e+=K 643 eor w3,w3,w11 644 add w23,w23,w27 // e+=rot(a,5) 645 orr w25,w25,w26 646 ror w20,w20,#2 647 eor w3,w3,w16 648 add w22,w22,w19 // future e+=X[i] 649 add w23,w23,w25 // e+=F(b,c,d) 650 ror w3,w3,#31 651 orr w25,w24,w20 652 and w26,w24,w20 653 eor w4,w4,w6 654 ror w27,w23,#27 655 and w25,w25,w21 656 add w21,w21,w28 // future e+=K 657 eor w4,w4,w12 658 add w22,w22,w27 // e+=rot(a,5) 659 orr w25,w25,w26 660 ror w24,w24,#2 661 eor w4,w4,w17 662 add w21,w21,w3 // future e+=X[i] 663 add w22,w22,w25 // e+=F(b,c,d) 664 ror w4,w4,#31 665 orr w25,w23,w24 666 and w26,w23,w24 667 eor w5,w5,w7 668 ror w27,w22,#27 669 and w25,w25,w20 670 add w20,w20,w28 // future e+=K 671 eor w5,w5,w13 672 add w21,w21,w27 // e+=rot(a,5) 673 orr w25,w25,w26 674 ror w23,w23,#2 675 eor w5,w5,w19 676 add w20,w20,w4 // future e+=X[i] 677 add w21,w21,w25 // e+=F(b,c,d) 678 ror w5,w5,#31 679 orr w25,w22,w23 680 and w26,w22,w23 681 eor w6,w6,w8 682 ror w27,w21,#27 683 and w25,w25,w24 684 add w24,w24,w28 // future e+=K 685 eor w6,w6,w14 686 add w20,w20,w27 // e+=rot(a,5) 687 orr w25,w25,w26 688 ror w22,w22,#2 689 eor w6,w6,w3 690 add w24,w24,w5 // future e+=X[i] 691 add w20,w20,w25 // e+=F(b,c,d) 692 ror w6,w6,#31 693 orr w25,w21,w22 694 and w26,w21,w22 695 eor w7,w7,w9 696 ror w27,w20,#27 697 and w25,w25,w23 698 add w23,w23,w28 // future e+=K 699 eor w7,w7,w15 700 add w24,w24,w27 // e+=rot(a,5) 701 orr w25,w25,w26 702 ror w21,w21,#2 703 eor w7,w7,w4 704 add w23,w23,w6 // future e+=X[i] 705 add w24,w24,w25 // e+=F(b,c,d) 706 ror w7,w7,#31 707 orr w25,w20,w21 708 and w26,w20,w21 709 eor w8,w8,w10 710 ror w27,w24,#27 711 and w25,w25,w22 712 add w22,w22,w28 // future e+=K 713 eor w8,w8,w16 714 add w23,w23,w27 // e+=rot(a,5) 715 orr w25,w25,w26 716 ror w20,w20,#2 717 eor w8,w8,w5 718 add w22,w22,w7 // future e+=X[i] 719 add w23,w23,w25 // e+=F(b,c,d) 720 ror w8,w8,#31 721 orr w25,w24,w20 722 and w26,w24,w20 723 eor w9,w9,w11 724 ror w27,w23,#27 725 and w25,w25,w21 726 add w21,w21,w28 // future e+=K 727 eor w9,w9,w17 728 add w22,w22,w27 // e+=rot(a,5) 729 orr w25,w25,w26 730 ror w24,w24,#2 731 eor w9,w9,w6 732 add w21,w21,w8 // future e+=X[i] 733 add w22,w22,w25 // e+=F(b,c,d) 734 ror w9,w9,#31 735 orr w25,w23,w24 736 and w26,w23,w24 737 eor w10,w10,w12 738 ror w27,w22,#27 739 and w25,w25,w20 740 add w20,w20,w28 // future e+=K 741 eor w10,w10,w19 742 add w21,w21,w27 // e+=rot(a,5) 743 orr w25,w25,w26 744 ror w23,w23,#2 745 eor w10,w10,w7 746 add w20,w20,w9 // future e+=X[i] 747 add w21,w21,w25 // e+=F(b,c,d) 748 ror w10,w10,#31 749 orr w25,w22,w23 750 and w26,w22,w23 751 eor w11,w11,w13 752 ror w27,w21,#27 753 and w25,w25,w24 754 add w24,w24,w28 // future e+=K 755 eor w11,w11,w3 756 add w20,w20,w27 // e+=rot(a,5) 757 orr w25,w25,w26 758 ror w22,w22,#2 759 eor w11,w11,w8 760 add w24,w24,w10 // future e+=X[i] 761 add w20,w20,w25 // e+=F(b,c,d) 762 ror w11,w11,#31 763 orr w25,w21,w22 764 and w26,w21,w22 765 eor w12,w12,w14 766 ror w27,w20,#27 767 and w25,w25,w23 768 add w23,w23,w28 // future e+=K 769 eor w12,w12,w4 770 add w24,w24,w27 // e+=rot(a,5) 771 orr w25,w25,w26 772 ror w21,w21,#2 773 eor w12,w12,w9 774 add w23,w23,w11 // future e+=X[i] 775 add w24,w24,w25 // e+=F(b,c,d) 776 ror w12,w12,#31 777 orr w25,w20,w21 778 and w26,w20,w21 779 eor w13,w13,w15 780 ror w27,w24,#27 781 and w25,w25,w22 782 add w22,w22,w28 // future e+=K 783 eor w13,w13,w5 784 add w23,w23,w27 // e+=rot(a,5) 785 orr w25,w25,w26 786 ror w20,w20,#2 787 eor w13,w13,w10 788 add w22,w22,w12 // future e+=X[i] 789 add w23,w23,w25 // e+=F(b,c,d) 790 ror w13,w13,#31 791 orr w25,w24,w20 792 and w26,w24,w20 793 eor w14,w14,w16 794 ror w27,w23,#27 795 and w25,w25,w21 796 add w21,w21,w28 // future e+=K 797 eor w14,w14,w6 798 add w22,w22,w27 // e+=rot(a,5) 799 orr w25,w25,w26 800 ror w24,w24,#2 801 eor w14,w14,w11 802 add w21,w21,w13 // future e+=X[i] 803 add w22,w22,w25 // e+=F(b,c,d) 804 ror w14,w14,#31 805 orr w25,w23,w24 806 and w26,w23,w24 807 eor w15,w15,w17 808 ror w27,w22,#27 809 and w25,w25,w20 810 add w20,w20,w28 // future e+=K 811 eor w15,w15,w7 812 add w21,w21,w27 // e+=rot(a,5) 813 orr w25,w25,w26 814 ror w23,w23,#2 815 eor w15,w15,w12 816 add w20,w20,w14 // future e+=X[i] 817 add w21,w21,w25 // e+=F(b,c,d) 818 ror w15,w15,#31 819 movz w28,#0xc1d6 820 movk w28,#0xca62,lsl#16 821 orr w25,w22,w23 822 and w26,w22,w23 823 eor w16,w16,w19 824 ror w27,w21,#27 825 and w25,w25,w24 826 add w24,w24,w28 // future e+=K 827 eor w16,w16,w8 828 add w20,w20,w27 // e+=rot(a,5) 829 orr w25,w25,w26 830 ror w22,w22,#2 831 eor w16,w16,w13 832 add w24,w24,w15 // future e+=X[i] 833 add w20,w20,w25 // e+=F(b,c,d) 834 ror w16,w16,#31 835 eor w17,w17,w3 836 eor w25,w23,w21 837 ror w27,w20,#27 838 add w23,w23,w28 // future e+=K 839 eor w17,w17,w9 840 eor w25,w25,w22 841 add w24,w24,w27 // e+=rot(a,5) 842 ror w21,w21,#2 843 eor w17,w17,w14 844 add w23,w23,w16 // future e+=X[i] 845 add w24,w24,w25 // e+=F(b,c,d) 846 ror w17,w17,#31 847 eor w19,w19,w4 848 eor w25,w22,w20 849 ror w27,w24,#27 850 add w22,w22,w28 // future e+=K 851 eor w19,w19,w10 852 eor w25,w25,w21 853 add w23,w23,w27 // e+=rot(a,5) 854 ror w20,w20,#2 855 eor w19,w19,w15 856 add w22,w22,w17 // future e+=X[i] 857 add w23,w23,w25 // e+=F(b,c,d) 858 ror w19,w19,#31 859 eor w3,w3,w5 860 eor w25,w21,w24 861 ror w27,w23,#27 862 add w21,w21,w28 // future e+=K 863 eor w3,w3,w11 864 eor w25,w25,w20 865 add w22,w22,w27 // e+=rot(a,5) 866 ror w24,w24,#2 867 eor w3,w3,w16 868 add w21,w21,w19 // future e+=X[i] 869 add w22,w22,w25 // e+=F(b,c,d) 870 ror w3,w3,#31 871 eor w4,w4,w6 872 eor w25,w20,w23 873 ror w27,w22,#27 874 add w20,w20,w28 // future e+=K 875 eor w4,w4,w12 876 eor w25,w25,w24 877 add w21,w21,w27 // e+=rot(a,5) 878 ror w23,w23,#2 879 eor w4,w4,w17 880 add w20,w20,w3 // future e+=X[i] 881 add w21,w21,w25 // e+=F(b,c,d) 882 ror w4,w4,#31 883 eor w5,w5,w7 884 eor w25,w24,w22 885 ror w27,w21,#27 886 add w24,w24,w28 // future e+=K 887 eor w5,w5,w13 888 eor w25,w25,w23 889 add w20,w20,w27 // e+=rot(a,5) 890 ror w22,w22,#2 891 eor w5,w5,w19 892 add w24,w24,w4 // future e+=X[i] 893 add w20,w20,w25 // e+=F(b,c,d) 894 ror w5,w5,#31 895 eor w6,w6,w8 896 eor w25,w23,w21 897 ror w27,w20,#27 898 add w23,w23,w28 // future e+=K 899 eor w6,w6,w14 900 eor w25,w25,w22 901 add w24,w24,w27 // e+=rot(a,5) 902 ror w21,w21,#2 903 eor w6,w6,w3 904 add w23,w23,w5 // future e+=X[i] 905 add w24,w24,w25 // e+=F(b,c,d) 906 ror w6,w6,#31 907 eor w7,w7,w9 908 eor w25,w22,w20 909 ror w27,w24,#27 910 add w22,w22,w28 // future e+=K 911 eor w7,w7,w15 912 eor w25,w25,w21 913 add w23,w23,w27 // e+=rot(a,5) 914 ror w20,w20,#2 915 eor w7,w7,w4 916 add w22,w22,w6 // future e+=X[i] 917 add w23,w23,w25 // e+=F(b,c,d) 918 ror w7,w7,#31 919 eor w8,w8,w10 920 eor w25,w21,w24 921 ror w27,w23,#27 922 add w21,w21,w28 // future e+=K 923 eor w8,w8,w16 924 eor w25,w25,w20 925 add w22,w22,w27 // e+=rot(a,5) 926 ror w24,w24,#2 927 eor w8,w8,w5 928 add w21,w21,w7 // future e+=X[i] 929 add w22,w22,w25 // e+=F(b,c,d) 930 ror w8,w8,#31 931 eor w9,w9,w11 932 eor w25,w20,w23 933 ror w27,w22,#27 934 add w20,w20,w28 // future e+=K 935 eor w9,w9,w17 936 eor w25,w25,w24 937 add w21,w21,w27 // e+=rot(a,5) 938 ror w23,w23,#2 939 eor w9,w9,w6 940 add w20,w20,w8 // future e+=X[i] 941 add w21,w21,w25 // e+=F(b,c,d) 942 ror w9,w9,#31 943 eor w10,w10,w12 944 eor w25,w24,w22 945 ror w27,w21,#27 946 add w24,w24,w28 // future e+=K 947 eor w10,w10,w19 948 eor w25,w25,w23 949 add w20,w20,w27 // e+=rot(a,5) 950 ror w22,w22,#2 951 eor w10,w10,w7 952 add w24,w24,w9 // future e+=X[i] 953 add w20,w20,w25 // e+=F(b,c,d) 954 ror w10,w10,#31 955 eor w11,w11,w13 956 eor w25,w23,w21 957 ror w27,w20,#27 958 add w23,w23,w28 // future e+=K 959 eor w11,w11,w3 960 eor w25,w25,w22 961 add w24,w24,w27 // e+=rot(a,5) 962 ror w21,w21,#2 963 eor w11,w11,w8 964 add w23,w23,w10 // future e+=X[i] 965 add w24,w24,w25 // e+=F(b,c,d) 966 ror w11,w11,#31 967 eor w12,w12,w14 968 eor w25,w22,w20 969 ror w27,w24,#27 970 add w22,w22,w28 // future e+=K 971 eor w12,w12,w4 972 eor w25,w25,w21 973 add w23,w23,w27 // e+=rot(a,5) 974 ror w20,w20,#2 975 eor w12,w12,w9 976 add w22,w22,w11 // future e+=X[i] 977 add w23,w23,w25 // e+=F(b,c,d) 978 ror w12,w12,#31 979 eor w13,w13,w15 980 eor w25,w21,w24 981 ror w27,w23,#27 982 add w21,w21,w28 // future e+=K 983 eor w13,w13,w5 984 eor w25,w25,w20 985 add w22,w22,w27 // e+=rot(a,5) 986 ror w24,w24,#2 987 eor w13,w13,w10 988 add w21,w21,w12 // future e+=X[i] 989 add w22,w22,w25 // e+=F(b,c,d) 990 ror w13,w13,#31 991 eor w14,w14,w16 992 eor w25,w20,w23 993 ror w27,w22,#27 994 add w20,w20,w28 // future e+=K 995 eor w14,w14,w6 996 eor w25,w25,w24 997 add w21,w21,w27 // e+=rot(a,5) 998 ror w23,w23,#2 999 eor w14,w14,w11 1000 add w20,w20,w13 // future e+=X[i] 1001 add w21,w21,w25 // e+=F(b,c,d) 1002 ror w14,w14,#31 1003 eor w15,w15,w17 1004 eor w25,w24,w22 1005 ror w27,w21,#27 1006 add w24,w24,w28 // future e+=K 1007 eor w15,w15,w7 1008 eor w25,w25,w23 1009 add w20,w20,w27 // e+=rot(a,5) 1010 ror w22,w22,#2 1011 eor w15,w15,w12 1012 add w24,w24,w14 // future e+=X[i] 1013 add w20,w20,w25 // e+=F(b,c,d) 1014 ror w15,w15,#31 1015 eor w16,w16,w19 1016 eor w25,w23,w21 1017 ror w27,w20,#27 1018 add w23,w23,w28 // future e+=K 1019 eor w16,w16,w8 1020 eor w25,w25,w22 1021 add w24,w24,w27 // e+=rot(a,5) 1022 ror w21,w21,#2 1023 eor w16,w16,w13 1024 add w23,w23,w15 // future e+=X[i] 1025 add w24,w24,w25 // e+=F(b,c,d) 1026 ror w16,w16,#31 1027 eor w17,w17,w3 1028 eor w25,w22,w20 1029 ror w27,w24,#27 1030 add w22,w22,w28 // future e+=K 1031 eor w17,w17,w9 1032 eor w25,w25,w21 1033 add w23,w23,w27 // e+=rot(a,5) 1034 ror w20,w20,#2 1035 eor w17,w17,w14 1036 add w22,w22,w16 // future e+=X[i] 1037 add w23,w23,w25 // e+=F(b,c,d) 1038 ror w17,w17,#31 1039 eor w19,w19,w4 1040 eor w25,w21,w24 1041 ror w27,w23,#27 1042 add w21,w21,w28 // future e+=K 1043 eor w19,w19,w10 1044 eor w25,w25,w20 1045 add w22,w22,w27 // e+=rot(a,5) 1046 ror w24,w24,#2 1047 eor w19,w19,w15 1048 add w21,w21,w17 // future e+=X[i] 1049 add w22,w22,w25 // e+=F(b,c,d) 1050 ror w19,w19,#31 1051 ldp w4,w5,[x0] 1052 eor w25,w20,w23 1053 ror w27,w22,#27 1054 add w20,w20,w28 // future e+=K 1055 eor w25,w25,w24 1056 add w21,w21,w27 // e+=rot(a,5) 1057 ror w23,w23,#2 1058 add w20,w20,w19 // future e+=X[i] 1059 add w21,w21,w25 // e+=F(b,c,d) 1060 ldp w6,w7,[x0,#8] 1061 eor w25,w24,w22 1062 ror w27,w21,#27 1063 eor w25,w25,w23 1064 add w20,w20,w27 // e+=rot(a,5) 1065 ror w22,w22,#2 1066 ldr w8,[x0,#16] 1067 add w20,w20,w25 // e+=F(b,c,d) 1068 add w21,w21,w5 1069 add w22,w22,w6 1070 add w20,w20,w4 1071 add w23,w23,w7 1072 add w24,w24,w8 1073 stp w20,w21,[x0] 1074 stp w22,w23,[x0,#8] 1075 str w24,[x0,#16] 1076 cbnz x2,.Loop 1077 1078 ldp x19,x20,[sp,#16] 1079 ldp x21,x22,[sp,#32] 1080 ldp x23,x24,[sp,#48] 1081 ldp x25,x26,[sp,#64] 1082 ldp x27,x28,[sp,#80] 1083 ldr x29,[sp],#96 1084 ret 1085.size sha1_block_data_order,.-sha1_block_data_order 1086.type sha1_block_armv8,%function 1087.align 6 1088sha1_block_armv8: 1089.Lv8_entry: 1090 stp x29,x30,[sp,#-16]! 1091 add x29,sp,#0 1092 1093 adrp x4,.Lconst 1094 add x4,x4,:lo12:.Lconst 1095 eor v1.16b,v1.16b,v1.16b 1096 ld1 {v0.4s},[x0],#16 1097 ld1 {v1.s}[0],[x0] 1098 sub x0,x0,#16 1099 ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x4] 1100 1101.Loop_hw: 1102 ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 1103 sub x2,x2,#1 1104 rev32 v4.16b,v4.16b 1105 rev32 v5.16b,v5.16b 1106 1107 add v20.4s,v16.4s,v4.4s 1108 rev32 v6.16b,v6.16b 1109 orr v22.16b,v0.16b,v0.16b // offload 1110 1111 add v21.4s,v16.4s,v5.4s 1112 rev32 v7.16b,v7.16b 1113.inst 0x5e280803 //sha1h v3.16b,v0.16b 1114.inst 0x5e140020 //sha1c v0.16b,v1.16b,v20.4s // 0 1115 add v20.4s,v16.4s,v6.4s 1116.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b 1117.inst 0x5e280802 //sha1h v2.16b,v0.16b // 1 1118.inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s 1119 add v21.4s,v16.4s,v7.4s 1120.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b 1121.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b 1122.inst 0x5e280803 //sha1h v3.16b,v0.16b // 2 1123.inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s 1124 add v20.4s,v16.4s,v4.4s 1125.inst 0x5e281885 //sha1su1 v5.16b,v4.16b 1126.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b 1127.inst 0x5e280802 //sha1h v2.16b,v0.16b // 3 1128.inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s 1129 add v21.4s,v17.4s,v5.4s 1130.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b 1131.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b 1132.inst 0x5e280803 //sha1h v3.16b,v0.16b // 4 1133.inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s 1134 add v20.4s,v17.4s,v6.4s 1135.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b 1136.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b 1137.inst 0x5e280802 //sha1h v2.16b,v0.16b // 5 1138.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 1139 add v21.4s,v17.4s,v7.4s 1140.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b 1141.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b 1142.inst 0x5e280803 //sha1h v3.16b,v0.16b // 6 1143.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s 1144 add v20.4s,v17.4s,v4.4s 1145.inst 0x5e281885 //sha1su1 v5.16b,v4.16b 1146.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b 1147.inst 0x5e280802 //sha1h v2.16b,v0.16b // 7 1148.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 1149 add v21.4s,v17.4s,v5.4s 1150.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b 1151.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b 1152.inst 0x5e280803 //sha1h v3.16b,v0.16b // 8 1153.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s 1154 add v20.4s,v18.4s,v6.4s 1155.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b 1156.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b 1157.inst 0x5e280802 //sha1h v2.16b,v0.16b // 9 1158.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 1159 add v21.4s,v18.4s,v7.4s 1160.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b 1161.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b 1162.inst 0x5e280803 //sha1h v3.16b,v0.16b // 10 1163.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s 1164 add v20.4s,v18.4s,v4.4s 1165.inst 0x5e281885 //sha1su1 v5.16b,v4.16b 1166.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b 1167.inst 0x5e280802 //sha1h v2.16b,v0.16b // 11 1168.inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s 1169 add v21.4s,v18.4s,v5.4s 1170.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b 1171.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b 1172.inst 0x5e280803 //sha1h v3.16b,v0.16b // 12 1173.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s 1174 add v20.4s,v18.4s,v6.4s 1175.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b 1176.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b 1177.inst 0x5e280802 //sha1h v2.16b,v0.16b // 13 1178.inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s 1179 add v21.4s,v19.4s,v7.4s 1180.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b 1181.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b 1182.inst 0x5e280803 //sha1h v3.16b,v0.16b // 14 1183.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s 1184 add v20.4s,v19.4s,v4.4s 1185.inst 0x5e281885 //sha1su1 v5.16b,v4.16b 1186.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b 1187.inst 0x5e280802 //sha1h v2.16b,v0.16b // 15 1188.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 1189 add v21.4s,v19.4s,v5.4s 1190.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b 1191.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b 1192.inst 0x5e280803 //sha1h v3.16b,v0.16b // 16 1193.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s 1194 add v20.4s,v19.4s,v6.4s 1195.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b 1196.inst 0x5e280802 //sha1h v2.16b,v0.16b // 17 1197.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 1198 add v21.4s,v19.4s,v7.4s 1199 1200.inst 0x5e280803 //sha1h v3.16b,v0.16b // 18 1201.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s 1202 1203.inst 0x5e280802 //sha1h v2.16b,v0.16b // 19 1204.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 1205 1206 add v1.4s,v1.4s,v2.4s 1207 add v0.4s,v0.4s,v22.4s 1208 1209 cbnz x2,.Loop_hw 1210 1211 st1 {v0.4s},[x0],#16 1212 st1 {v1.s}[0],[x0] 1213 1214 ldr x29,[sp],#16 1215 ret 1216.size sha1_block_armv8,.-sha1_block_armv8 1217.section .rodata 1218.align 6 1219.Lconst: 1220.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_19 1221.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_39 1222.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_59 1223.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_79 1224.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 1225.align 2 1226.align 2 1227.comm OPENSSL_armcap_P,4,4 1228.hidden OPENSSL_armcap_P 1229#endif 1230#endif // !OPENSSL_NO_ASM 1231