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