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