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