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