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