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