1 #ifndef __ASSEMBLER__ 2 # define __ASSEMBLER__ 1 3 #endif 4 #include "crypto/sparc_arch.h" 5 6 #ifdef __arch64__ 7 .register %g2,#scratch 8 .register %g3,#scratch 9 #endif 10 11 .section ".text",#alloc,#execinstr 12 13 .align 64 14 K256: 15 .type K256,#object 16 .long 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5 17 .long 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5 18 .long 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3 19 .long 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174 20 .long 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc 21 .long 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da 22 .long 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7 23 .long 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967 24 .long 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13 25 .long 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85 26 .long 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3 27 .long 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070 28 .long 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5 29 .long 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3 30 .long 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208 31 .long 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 32 .size K256,.-K256 33 34 #ifdef __PIC__ 35 SPARC_PIC_THUNK(%g1) 36 #endif 37 38 .globl sha256_block_data_order 39 .align 32 40 sha256_block_data_order: 41 SPARC_LOAD_ADDRESS_LEAF(OPENSSL_sparcv9cap_P,%g1,%g5) 42 ld [%g1+4],%g1 ! OPENSSL_sparcv9cap_P[1] 43 44 andcc %g1, CFR_SHA256, %g0 45 be .Lsoftware 46 nop 47 ld [%o0 + 0x00], %f0 48 ld [%o0 + 0x04], %f1 49 ld [%o0 + 0x08], %f2 50 ld [%o0 + 0x0c], %f3 51 ld [%o0 + 0x10], %f4 52 ld [%o0 + 0x14], %f5 53 andcc %o1, 0x7, %g0 54 ld [%o0 + 0x18], %f6 55 bne,pn %icc, .Lhwunaligned 56 ld [%o0 + 0x1c], %f7 57 58 .Lhwloop: 59 ldd [%o1 + 0x00], %f8 60 ldd [%o1 + 0x08], %f10 61 ldd [%o1 + 0x10], %f12 62 ldd [%o1 + 0x18], %f14 63 ldd [%o1 + 0x20], %f16 64 ldd [%o1 + 0x28], %f18 65 ldd [%o1 + 0x30], %f20 66 subcc %o2, 1, %o2 ! done yet? 67 ldd [%o1 + 0x38], %f22 68 add %o1, 0x40, %o1 69 prefetch [%o1 + 63], 20 70 71 .word 0x81b02840 ! SHA256 72 73 bne,pt SIZE_T_CC, .Lhwloop 74 nop 75 76 .Lhwfinish: 77 st %f0, [%o0 + 0x00] ! store context 78 st %f1, [%o0 + 0x04] 79 st %f2, [%o0 + 0x08] 80 st %f3, [%o0 + 0x0c] 81 st %f4, [%o0 + 0x10] 82 st %f5, [%o0 + 0x14] 83 st %f6, [%o0 + 0x18] 84 retl 85 st %f7, [%o0 + 0x1c] 86 87 .align 8 88 .Lhwunaligned: 89 .word 0x93b24300 !alignaddr %o1,%g0,%o1 90 91 ldd [%o1 + 0x00], %f10 92 .Lhwunaligned_loop: 93 ldd [%o1 + 0x08], %f12 94 ldd [%o1 + 0x10], %f14 95 ldd [%o1 + 0x18], %f16 96 ldd [%o1 + 0x20], %f18 97 ldd [%o1 + 0x28], %f20 98 ldd [%o1 + 0x30], %f22 99 ldd [%o1 + 0x38], %f24 100 subcc %o2, 1, %o2 ! done yet? 101 ldd [%o1 + 0x40], %f26 102 add %o1, 0x40, %o1 103 prefetch [%o1 + 63], 20 104 105 .word 0x91b2890c !faligndata %f10,%f12,%f8 106 .word 0x95b3090e !faligndata %f12,%f14,%f10 107 .word 0x99b38910 !faligndata %f14,%f16,%f12 108 .word 0x9db40912 !faligndata %f16,%f18,%f14 109 .word 0xa1b48914 !faligndata %f18,%f20,%f16 110 .word 0xa5b50916 !faligndata %f20,%f22,%f18 111 .word 0xa9b58918 !faligndata %f22,%f24,%f20 112 .word 0xadb6091a !faligndata %f24,%f26,%f22 113 114 .word 0x81b02840 ! SHA256 115 116 bne,pt SIZE_T_CC, .Lhwunaligned_loop 117 .word 0x95b68f9a !for %f26,%f26,%f10 ! %f10=%f26 118 119 ba .Lhwfinish 120 nop 121 .align 16 122 .Lsoftware: 123 save %sp,-STACK_FRAME-0,%sp 124 and %i1,7,%i4 125 sllx %i2,6,%i2 126 andn %i1,7,%i1 127 sll %i4,3,%i4 128 add %i1,%i2,%i2 129 .Lpic: call .+8 130 add %o7,K256-.Lpic,%i3 131 132 ld [%i0+0],%l0 133 ld [%i0+4],%l1 134 ld [%i0+8],%l2 135 ld [%i0+12],%l3 136 ld [%i0+16],%l4 137 ld [%i0+20],%l5 138 ld [%i0+24],%l6 139 ld [%i0+28],%l7 140 141 .Lloop: 142 ldx [%i1+0],%o0 143 ldx [%i1+16],%o2 144 ldx [%i1+32],%o4 145 ldx [%i1+48],%g1 146 ldx [%i1+8],%o1 147 ldx [%i1+24],%o3 148 subcc %g0,%i4,%i5 ! should be 64-%i4, but -%i4 works too 149 ldx [%i1+40],%o5 150 bz,pt %icc,.Laligned 151 ldx [%i1+56],%o7 152 153 sllx %o0,%i4,%o0 154 ldx [%i1+64],%g2 155 srlx %o1,%i5,%g4 156 sllx %o1,%i4,%o1 157 or %g4,%o0,%o0 158 srlx %o2,%i5,%g4 159 sllx %o2,%i4,%o2 160 or %g4,%o1,%o1 161 srlx %o3,%i5,%g4 162 sllx %o3,%i4,%o3 163 or %g4,%o2,%o2 164 srlx %o4,%i5,%g4 165 sllx %o4,%i4,%o4 166 or %g4,%o3,%o3 167 srlx %o5,%i5,%g4 168 sllx %o5,%i4,%o5 169 or %g4,%o4,%o4 170 srlx %g1,%i5,%g4 171 sllx %g1,%i4,%g1 172 or %g4,%o5,%o5 173 srlx %o7,%i5,%g4 174 sllx %o7,%i4,%o7 175 or %g4,%g1,%g1 176 srlx %g2,%i5,%g2 177 or %g2,%o7,%o7 178 .Laligned: 179 srlx %o0,32,%g2 180 add %l7,%g2,%g2 181 srl %l4,6,%l7 !! 0 182 xor %l5,%l6,%g5 183 sll %l4,7,%g4 184 and %l4,%g5,%g5 185 srl %l4,11,%g3 186 xor %g4,%l7,%l7 187 sll %l4,21,%g4 188 xor %g3,%l7,%l7 189 srl %l4,25,%g3 190 xor %g4,%l7,%l7 191 sll %l4,26,%g4 192 xor %g3,%l7,%l7 193 xor %l6,%g5,%g5 ! Ch(e,f,g) 194 xor %g4,%l7,%g3 ! Sigma1(e) 195 196 srl %l0,2,%l7 197 add %g5,%g2,%g2 198 ld [%i3+0],%g5 ! K[0] 199 sll %l0,10,%g4 200 add %g3,%g2,%g2 201 srl %l0,13,%g3 202 xor %g4,%l7,%l7 203 sll %l0,19,%g4 204 xor %g3,%l7,%l7 205 srl %l0,22,%g3 206 xor %g4,%l7,%l7 207 sll %l0,30,%g4 208 xor %g3,%l7,%l7 209 xor %g4,%l7,%l7 ! Sigma0(a) 210 211 or %l0,%l1,%g3 212 and %l0,%l1,%g4 213 and %l2,%g3,%g3 214 or %g3,%g4,%g4 ! Maj(a,b,c) 215 add %g5,%g2,%g2 ! +=K[0] 216 add %g4,%l7,%l7 217 218 add %g2,%l3,%l3 219 add %g2,%l7,%l7 220 add %o0,%l6,%g2 221 srl %l3,6,%l6 !! 1 222 xor %l4,%l5,%g5 223 sll %l3,7,%g4 224 and %l3,%g5,%g5 225 srl %l3,11,%g3 226 xor %g4,%l6,%l6 227 sll %l3,21,%g4 228 xor %g3,%l6,%l6 229 srl %l3,25,%g3 230 xor %g4,%l6,%l6 231 sll %l3,26,%g4 232 xor %g3,%l6,%l6 233 xor %l5,%g5,%g5 ! Ch(e,f,g) 234 xor %g4,%l6,%g3 ! Sigma1(e) 235 236 srl %l7,2,%l6 237 add %g5,%g2,%g2 238 ld [%i3+4],%g5 ! K[1] 239 sll %l7,10,%g4 240 add %g3,%g2,%g2 241 srl %l7,13,%g3 242 xor %g4,%l6,%l6 243 sll %l7,19,%g4 244 xor %g3,%l6,%l6 245 srl %l7,22,%g3 246 xor %g4,%l6,%l6 247 sll %l7,30,%g4 248 xor %g3,%l6,%l6 249 xor %g4,%l6,%l6 ! Sigma0(a) 250 251 or %l7,%l0,%g3 252 and %l7,%l0,%g4 253 and %l1,%g3,%g3 254 or %g3,%g4,%g4 ! Maj(a,b,c) 255 add %g5,%g2,%g2 ! +=K[1] 256 add %g4,%l6,%l6 257 258 add %g2,%l2,%l2 259 add %g2,%l6,%l6 260 srlx %o1,32,%g2 261 add %l5,%g2,%g2 262 srl %l2,6,%l5 !! 2 263 xor %l3,%l4,%g5 264 sll %l2,7,%g4 265 and %l2,%g5,%g5 266 srl %l2,11,%g3 267 xor %g4,%l5,%l5 268 sll %l2,21,%g4 269 xor %g3,%l5,%l5 270 srl %l2,25,%g3 271 xor %g4,%l5,%l5 272 sll %l2,26,%g4 273 xor %g3,%l5,%l5 274 xor %l4,%g5,%g5 ! Ch(e,f,g) 275 xor %g4,%l5,%g3 ! Sigma1(e) 276 277 srl %l6,2,%l5 278 add %g5,%g2,%g2 279 ld [%i3+8],%g5 ! K[2] 280 sll %l6,10,%g4 281 add %g3,%g2,%g2 282 srl %l6,13,%g3 283 xor %g4,%l5,%l5 284 sll %l6,19,%g4 285 xor %g3,%l5,%l5 286 srl %l6,22,%g3 287 xor %g4,%l5,%l5 288 sll %l6,30,%g4 289 xor %g3,%l5,%l5 290 xor %g4,%l5,%l5 ! Sigma0(a) 291 292 or %l6,%l7,%g3 293 and %l6,%l7,%g4 294 and %l0,%g3,%g3 295 or %g3,%g4,%g4 ! Maj(a,b,c) 296 add %g5,%g2,%g2 ! +=K[2] 297 add %g4,%l5,%l5 298 299 add %g2,%l1,%l1 300 add %g2,%l5,%l5 301 add %o1,%l4,%g2 302 srl %l1,6,%l4 !! 3 303 xor %l2,%l3,%g5 304 sll %l1,7,%g4 305 and %l1,%g5,%g5 306 srl %l1,11,%g3 307 xor %g4,%l4,%l4 308 sll %l1,21,%g4 309 xor %g3,%l4,%l4 310 srl %l1,25,%g3 311 xor %g4,%l4,%l4 312 sll %l1,26,%g4 313 xor %g3,%l4,%l4 314 xor %l3,%g5,%g5 ! Ch(e,f,g) 315 xor %g4,%l4,%g3 ! Sigma1(e) 316 317 srl %l5,2,%l4 318 add %g5,%g2,%g2 319 ld [%i3+12],%g5 ! K[3] 320 sll %l5,10,%g4 321 add %g3,%g2,%g2 322 srl %l5,13,%g3 323 xor %g4,%l4,%l4 324 sll %l5,19,%g4 325 xor %g3,%l4,%l4 326 srl %l5,22,%g3 327 xor %g4,%l4,%l4 328 sll %l5,30,%g4 329 xor %g3,%l4,%l4 330 xor %g4,%l4,%l4 ! Sigma0(a) 331 332 or %l5,%l6,%g3 333 and %l5,%l6,%g4 334 and %l7,%g3,%g3 335 or %g3,%g4,%g4 ! Maj(a,b,c) 336 add %g5,%g2,%g2 ! +=K[3] 337 add %g4,%l4,%l4 338 339 add %g2,%l0,%l0 340 add %g2,%l4,%l4 341 srlx %o2,32,%g2 342 add %l3,%g2,%g2 343 srl %l0,6,%l3 !! 4 344 xor %l1,%l2,%g5 345 sll %l0,7,%g4 346 and %l0,%g5,%g5 347 srl %l0,11,%g3 348 xor %g4,%l3,%l3 349 sll %l0,21,%g4 350 xor %g3,%l3,%l3 351 srl %l0,25,%g3 352 xor %g4,%l3,%l3 353 sll %l0,26,%g4 354 xor %g3,%l3,%l3 355 xor %l2,%g5,%g5 ! Ch(e,f,g) 356 xor %g4,%l3,%g3 ! Sigma1(e) 357 358 srl %l4,2,%l3 359 add %g5,%g2,%g2 360 ld [%i3+16],%g5 ! K[4] 361 sll %l4,10,%g4 362 add %g3,%g2,%g2 363 srl %l4,13,%g3 364 xor %g4,%l3,%l3 365 sll %l4,19,%g4 366 xor %g3,%l3,%l3 367 srl %l4,22,%g3 368 xor %g4,%l3,%l3 369 sll %l4,30,%g4 370 xor %g3,%l3,%l3 371 xor %g4,%l3,%l3 ! Sigma0(a) 372 373 or %l4,%l5,%g3 374 and %l4,%l5,%g4 375 and %l6,%g3,%g3 376 or %g3,%g4,%g4 ! Maj(a,b,c) 377 add %g5,%g2,%g2 ! +=K[4] 378 add %g4,%l3,%l3 379 380 add %g2,%l7,%l7 381 add %g2,%l3,%l3 382 add %o2,%l2,%g2 383 srl %l7,6,%l2 !! 5 384 xor %l0,%l1,%g5 385 sll %l7,7,%g4 386 and %l7,%g5,%g5 387 srl %l7,11,%g3 388 xor %g4,%l2,%l2 389 sll %l7,21,%g4 390 xor %g3,%l2,%l2 391 srl %l7,25,%g3 392 xor %g4,%l2,%l2 393 sll %l7,26,%g4 394 xor %g3,%l2,%l2 395 xor %l1,%g5,%g5 ! Ch(e,f,g) 396 xor %g4,%l2,%g3 ! Sigma1(e) 397 398 srl %l3,2,%l2 399 add %g5,%g2,%g2 400 ld [%i3+20],%g5 ! K[5] 401 sll %l3,10,%g4 402 add %g3,%g2,%g2 403 srl %l3,13,%g3 404 xor %g4,%l2,%l2 405 sll %l3,19,%g4 406 xor %g3,%l2,%l2 407 srl %l3,22,%g3 408 xor %g4,%l2,%l2 409 sll %l3,30,%g4 410 xor %g3,%l2,%l2 411 xor %g4,%l2,%l2 ! Sigma0(a) 412 413 or %l3,%l4,%g3 414 and %l3,%l4,%g4 415 and %l5,%g3,%g3 416 or %g3,%g4,%g4 ! Maj(a,b,c) 417 add %g5,%g2,%g2 ! +=K[5] 418 add %g4,%l2,%l2 419 420 add %g2,%l6,%l6 421 add %g2,%l2,%l2 422 srlx %o3,32,%g2 423 add %l1,%g2,%g2 424 srl %l6,6,%l1 !! 6 425 xor %l7,%l0,%g5 426 sll %l6,7,%g4 427 and %l6,%g5,%g5 428 srl %l6,11,%g3 429 xor %g4,%l1,%l1 430 sll %l6,21,%g4 431 xor %g3,%l1,%l1 432 srl %l6,25,%g3 433 xor %g4,%l1,%l1 434 sll %l6,26,%g4 435 xor %g3,%l1,%l1 436 xor %l0,%g5,%g5 ! Ch(e,f,g) 437 xor %g4,%l1,%g3 ! Sigma1(e) 438 439 srl %l2,2,%l1 440 add %g5,%g2,%g2 441 ld [%i3+24],%g5 ! K[6] 442 sll %l2,10,%g4 443 add %g3,%g2,%g2 444 srl %l2,13,%g3 445 xor %g4,%l1,%l1 446 sll %l2,19,%g4 447 xor %g3,%l1,%l1 448 srl %l2,22,%g3 449 xor %g4,%l1,%l1 450 sll %l2,30,%g4 451 xor %g3,%l1,%l1 452 xor %g4,%l1,%l1 ! Sigma0(a) 453 454 or %l2,%l3,%g3 455 and %l2,%l3,%g4 456 and %l4,%g3,%g3 457 or %g3,%g4,%g4 ! Maj(a,b,c) 458 add %g5,%g2,%g2 ! +=K[6] 459 add %g4,%l1,%l1 460 461 add %g2,%l5,%l5 462 add %g2,%l1,%l1 463 add %o3,%l0,%g2 464 srl %l5,6,%l0 !! 7 465 xor %l6,%l7,%g5 466 sll %l5,7,%g4 467 and %l5,%g5,%g5 468 srl %l5,11,%g3 469 xor %g4,%l0,%l0 470 sll %l5,21,%g4 471 xor %g3,%l0,%l0 472 srl %l5,25,%g3 473 xor %g4,%l0,%l0 474 sll %l5,26,%g4 475 xor %g3,%l0,%l0 476 xor %l7,%g5,%g5 ! Ch(e,f,g) 477 xor %g4,%l0,%g3 ! Sigma1(e) 478 479 srl %l1,2,%l0 480 add %g5,%g2,%g2 481 ld [%i3+28],%g5 ! K[7] 482 sll %l1,10,%g4 483 add %g3,%g2,%g2 484 srl %l1,13,%g3 485 xor %g4,%l0,%l0 486 sll %l1,19,%g4 487 xor %g3,%l0,%l0 488 srl %l1,22,%g3 489 xor %g4,%l0,%l0 490 sll %l1,30,%g4 491 xor %g3,%l0,%l0 492 xor %g4,%l0,%l0 ! Sigma0(a) 493 494 or %l1,%l2,%g3 495 and %l1,%l2,%g4 496 and %l3,%g3,%g3 497 or %g3,%g4,%g4 ! Maj(a,b,c) 498 add %g5,%g2,%g2 ! +=K[7] 499 add %g4,%l0,%l0 500 501 add %g2,%l4,%l4 502 add %g2,%l0,%l0 503 srlx %o4,32,%g2 504 add %l7,%g2,%g2 505 srl %l4,6,%l7 !! 8 506 xor %l5,%l6,%g5 507 sll %l4,7,%g4 508 and %l4,%g5,%g5 509 srl %l4,11,%g3 510 xor %g4,%l7,%l7 511 sll %l4,21,%g4 512 xor %g3,%l7,%l7 513 srl %l4,25,%g3 514 xor %g4,%l7,%l7 515 sll %l4,26,%g4 516 xor %g3,%l7,%l7 517 xor %l6,%g5,%g5 ! Ch(e,f,g) 518 xor %g4,%l7,%g3 ! Sigma1(e) 519 520 srl %l0,2,%l7 521 add %g5,%g2,%g2 522 ld [%i3+32],%g5 ! K[8] 523 sll %l0,10,%g4 524 add %g3,%g2,%g2 525 srl %l0,13,%g3 526 xor %g4,%l7,%l7 527 sll %l0,19,%g4 528 xor %g3,%l7,%l7 529 srl %l0,22,%g3 530 xor %g4,%l7,%l7 531 sll %l0,30,%g4 532 xor %g3,%l7,%l7 533 xor %g4,%l7,%l7 ! Sigma0(a) 534 535 or %l0,%l1,%g3 536 and %l0,%l1,%g4 537 and %l2,%g3,%g3 538 or %g3,%g4,%g4 ! Maj(a,b,c) 539 add %g5,%g2,%g2 ! +=K[8] 540 add %g4,%l7,%l7 541 542 add %g2,%l3,%l3 543 add %g2,%l7,%l7 544 add %o4,%l6,%g2 545 srl %l3,6,%l6 !! 9 546 xor %l4,%l5,%g5 547 sll %l3,7,%g4 548 and %l3,%g5,%g5 549 srl %l3,11,%g3 550 xor %g4,%l6,%l6 551 sll %l3,21,%g4 552 xor %g3,%l6,%l6 553 srl %l3,25,%g3 554 xor %g4,%l6,%l6 555 sll %l3,26,%g4 556 xor %g3,%l6,%l6 557 xor %l5,%g5,%g5 ! Ch(e,f,g) 558 xor %g4,%l6,%g3 ! Sigma1(e) 559 560 srl %l7,2,%l6 561 add %g5,%g2,%g2 562 ld [%i3+36],%g5 ! K[9] 563 sll %l7,10,%g4 564 add %g3,%g2,%g2 565 srl %l7,13,%g3 566 xor %g4,%l6,%l6 567 sll %l7,19,%g4 568 xor %g3,%l6,%l6 569 srl %l7,22,%g3 570 xor %g4,%l6,%l6 571 sll %l7,30,%g4 572 xor %g3,%l6,%l6 573 xor %g4,%l6,%l6 ! Sigma0(a) 574 575 or %l7,%l0,%g3 576 and %l7,%l0,%g4 577 and %l1,%g3,%g3 578 or %g3,%g4,%g4 ! Maj(a,b,c) 579 add %g5,%g2,%g2 ! +=K[9] 580 add %g4,%l6,%l6 581 582 add %g2,%l2,%l2 583 add %g2,%l6,%l6 584 srlx %o5,32,%g2 585 add %l5,%g2,%g2 586 srl %l2,6,%l5 !! 10 587 xor %l3,%l4,%g5 588 sll %l2,7,%g4 589 and %l2,%g5,%g5 590 srl %l2,11,%g3 591 xor %g4,%l5,%l5 592 sll %l2,21,%g4 593 xor %g3,%l5,%l5 594 srl %l2,25,%g3 595 xor %g4,%l5,%l5 596 sll %l2,26,%g4 597 xor %g3,%l5,%l5 598 xor %l4,%g5,%g5 ! Ch(e,f,g) 599 xor %g4,%l5,%g3 ! Sigma1(e) 600 601 srl %l6,2,%l5 602 add %g5,%g2,%g2 603 ld [%i3+40],%g5 ! K[10] 604 sll %l6,10,%g4 605 add %g3,%g2,%g2 606 srl %l6,13,%g3 607 xor %g4,%l5,%l5 608 sll %l6,19,%g4 609 xor %g3,%l5,%l5 610 srl %l6,22,%g3 611 xor %g4,%l5,%l5 612 sll %l6,30,%g4 613 xor %g3,%l5,%l5 614 xor %g4,%l5,%l5 ! Sigma0(a) 615 616 or %l6,%l7,%g3 617 and %l6,%l7,%g4 618 and %l0,%g3,%g3 619 or %g3,%g4,%g4 ! Maj(a,b,c) 620 add %g5,%g2,%g2 ! +=K[10] 621 add %g4,%l5,%l5 622 623 add %g2,%l1,%l1 624 add %g2,%l5,%l5 625 add %o5,%l4,%g2 626 srl %l1,6,%l4 !! 11 627 xor %l2,%l3,%g5 628 sll %l1,7,%g4 629 and %l1,%g5,%g5 630 srl %l1,11,%g3 631 xor %g4,%l4,%l4 632 sll %l1,21,%g4 633 xor %g3,%l4,%l4 634 srl %l1,25,%g3 635 xor %g4,%l4,%l4 636 sll %l1,26,%g4 637 xor %g3,%l4,%l4 638 xor %l3,%g5,%g5 ! Ch(e,f,g) 639 xor %g4,%l4,%g3 ! Sigma1(e) 640 641 srl %l5,2,%l4 642 add %g5,%g2,%g2 643 ld [%i3+44],%g5 ! K[11] 644 sll %l5,10,%g4 645 add %g3,%g2,%g2 646 srl %l5,13,%g3 647 xor %g4,%l4,%l4 648 sll %l5,19,%g4 649 xor %g3,%l4,%l4 650 srl %l5,22,%g3 651 xor %g4,%l4,%l4 652 sll %l5,30,%g4 653 xor %g3,%l4,%l4 654 xor %g4,%l4,%l4 ! Sigma0(a) 655 656 or %l5,%l6,%g3 657 and %l5,%l6,%g4 658 and %l7,%g3,%g3 659 or %g3,%g4,%g4 ! Maj(a,b,c) 660 add %g5,%g2,%g2 ! +=K[11] 661 add %g4,%l4,%l4 662 663 add %g2,%l0,%l0 664 add %g2,%l4,%l4 665 srlx %g1,32,%g2 666 add %l3,%g2,%g2 667 srl %l0,6,%l3 !! 12 668 xor %l1,%l2,%g5 669 sll %l0,7,%g4 670 and %l0,%g5,%g5 671 srl %l0,11,%g3 672 xor %g4,%l3,%l3 673 sll %l0,21,%g4 674 xor %g3,%l3,%l3 675 srl %l0,25,%g3 676 xor %g4,%l3,%l3 677 sll %l0,26,%g4 678 xor %g3,%l3,%l3 679 xor %l2,%g5,%g5 ! Ch(e,f,g) 680 xor %g4,%l3,%g3 ! Sigma1(e) 681 682 srl %l4,2,%l3 683 add %g5,%g2,%g2 684 ld [%i3+48],%g5 ! K[12] 685 sll %l4,10,%g4 686 add %g3,%g2,%g2 687 srl %l4,13,%g3 688 xor %g4,%l3,%l3 689 sll %l4,19,%g4 690 xor %g3,%l3,%l3 691 srl %l4,22,%g3 692 xor %g4,%l3,%l3 693 sll %l4,30,%g4 694 xor %g3,%l3,%l3 695 xor %g4,%l3,%l3 ! Sigma0(a) 696 697 or %l4,%l5,%g3 698 and %l4,%l5,%g4 699 and %l6,%g3,%g3 700 or %g3,%g4,%g4 ! Maj(a,b,c) 701 add %g5,%g2,%g2 ! +=K[12] 702 add %g4,%l3,%l3 703 704 add %g2,%l7,%l7 705 add %g2,%l3,%l3 706 add %g1,%l2,%g2 707 srl %l7,6,%l2 !! 13 708 xor %l0,%l1,%g5 709 sll %l7,7,%g4 710 and %l7,%g5,%g5 711 srl %l7,11,%g3 712 xor %g4,%l2,%l2 713 sll %l7,21,%g4 714 xor %g3,%l2,%l2 715 srl %l7,25,%g3 716 xor %g4,%l2,%l2 717 sll %l7,26,%g4 718 xor %g3,%l2,%l2 719 xor %l1,%g5,%g5 ! Ch(e,f,g) 720 xor %g4,%l2,%g3 ! Sigma1(e) 721 722 srl %l3,2,%l2 723 add %g5,%g2,%g2 724 ld [%i3+52],%g5 ! K[13] 725 sll %l3,10,%g4 726 add %g3,%g2,%g2 727 srl %l3,13,%g3 728 xor %g4,%l2,%l2 729 sll %l3,19,%g4 730 xor %g3,%l2,%l2 731 srl %l3,22,%g3 732 xor %g4,%l2,%l2 733 sll %l3,30,%g4 734 xor %g3,%l2,%l2 735 xor %g4,%l2,%l2 ! Sigma0(a) 736 737 or %l3,%l4,%g3 738 and %l3,%l4,%g4 739 and %l5,%g3,%g3 740 or %g3,%g4,%g4 ! Maj(a,b,c) 741 add %g5,%g2,%g2 ! +=K[13] 742 add %g4,%l2,%l2 743 744 add %g2,%l6,%l6 745 add %g2,%l2,%l2 746 srlx %o7,32,%g2 747 add %l1,%g2,%g2 748 srl %l6,6,%l1 !! 14 749 xor %l7,%l0,%g5 750 sll %l6,7,%g4 751 and %l6,%g5,%g5 752 srl %l6,11,%g3 753 xor %g4,%l1,%l1 754 sll %l6,21,%g4 755 xor %g3,%l1,%l1 756 srl %l6,25,%g3 757 xor %g4,%l1,%l1 758 sll %l6,26,%g4 759 xor %g3,%l1,%l1 760 xor %l0,%g5,%g5 ! Ch(e,f,g) 761 xor %g4,%l1,%g3 ! Sigma1(e) 762 763 srl %l2,2,%l1 764 add %g5,%g2,%g2 765 ld [%i3+56],%g5 ! K[14] 766 sll %l2,10,%g4 767 add %g3,%g2,%g2 768 srl %l2,13,%g3 769 xor %g4,%l1,%l1 770 sll %l2,19,%g4 771 xor %g3,%l1,%l1 772 srl %l2,22,%g3 773 xor %g4,%l1,%l1 774 sll %l2,30,%g4 775 xor %g3,%l1,%l1 776 xor %g4,%l1,%l1 ! Sigma0(a) 777 778 or %l2,%l3,%g3 779 and %l2,%l3,%g4 780 and %l4,%g3,%g3 781 or %g3,%g4,%g4 ! Maj(a,b,c) 782 add %g5,%g2,%g2 ! +=K[14] 783 add %g4,%l1,%l1 784 785 add %g2,%l5,%l5 786 add %g2,%l1,%l1 787 add %o7,%l0,%g2 788 srl %l5,6,%l0 !! 15 789 xor %l6,%l7,%g5 790 sll %l5,7,%g4 791 and %l5,%g5,%g5 792 srl %l5,11,%g3 793 xor %g4,%l0,%l0 794 sll %l5,21,%g4 795 xor %g3,%l0,%l0 796 srl %l5,25,%g3 797 xor %g4,%l0,%l0 798 sll %l5,26,%g4 799 xor %g3,%l0,%l0 800 xor %l7,%g5,%g5 ! Ch(e,f,g) 801 xor %g4,%l0,%g3 ! Sigma1(e) 802 803 srl %l1,2,%l0 804 add %g5,%g2,%g2 805 ld [%i3+60],%g5 ! K[15] 806 sll %l1,10,%g4 807 add %g3,%g2,%g2 808 srl %l1,13,%g3 809 xor %g4,%l0,%l0 810 sll %l1,19,%g4 811 xor %g3,%l0,%l0 812 srl %l1,22,%g3 813 xor %g4,%l0,%l0 814 sll %l1,30,%g4 815 xor %g3,%l0,%l0 816 xor %g4,%l0,%l0 ! Sigma0(a) 817 818 or %l1,%l2,%g3 819 and %l1,%l2,%g4 820 and %l3,%g3,%g3 821 or %g3,%g4,%g4 ! Maj(a,b,c) 822 add %g5,%g2,%g2 ! +=K[15] 823 add %g4,%l0,%l0 824 825 add %g2,%l4,%l4 826 add %g2,%l0,%l0 827 .L16_xx: 828 srl %o0,3,%g2 !! Xupdate(16) 829 sll %o0,14,%g4 830 srl %o0,7,%g3 831 xor %g4,%g2,%g2 832 sll %g4,11,%g4 833 xor %g3,%g2,%g2 834 srl %o0,18,%g3 835 xor %g4,%g2,%g2 836 srlx %o7,32,%i5 837 srl %i5,10,%g5 838 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 839 sll %i5,13,%g4 840 srl %i5,17,%g3 841 xor %g4,%g5,%g5 842 sll %g4,2,%g4 843 xor %g3,%g5,%g5 844 srl %i5,19,%g3 845 xor %g4,%g5,%g5 846 srlx %o0,32,%g4 ! X[i] 847 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 848 add %o4,%g2,%g2 ! +=X[i+9] 849 add %g5,%g4,%g4 850 srl %o0,0,%o0 851 add %g4,%g2,%g2 852 853 sllx %g2,32,%g3 854 or %g3,%o0,%o0 855 add %l7,%g2,%g2 856 srl %l4,6,%l7 !! 16 857 xor %l5,%l6,%g5 858 sll %l4,7,%g4 859 and %l4,%g5,%g5 860 srl %l4,11,%g3 861 xor %g4,%l7,%l7 862 sll %l4,21,%g4 863 xor %g3,%l7,%l7 864 srl %l4,25,%g3 865 xor %g4,%l7,%l7 866 sll %l4,26,%g4 867 xor %g3,%l7,%l7 868 xor %l6,%g5,%g5 ! Ch(e,f,g) 869 xor %g4,%l7,%g3 ! Sigma1(e) 870 871 srl %l0,2,%l7 872 add %g5,%g2,%g2 873 ld [%i3+64],%g5 ! K[16] 874 sll %l0,10,%g4 875 add %g3,%g2,%g2 876 srl %l0,13,%g3 877 xor %g4,%l7,%l7 878 sll %l0,19,%g4 879 xor %g3,%l7,%l7 880 srl %l0,22,%g3 881 xor %g4,%l7,%l7 882 sll %l0,30,%g4 883 xor %g3,%l7,%l7 884 xor %g4,%l7,%l7 ! Sigma0(a) 885 886 or %l0,%l1,%g3 887 and %l0,%l1,%g4 888 and %l2,%g3,%g3 889 or %g3,%g4,%g4 ! Maj(a,b,c) 890 add %g5,%g2,%g2 ! +=K[16] 891 add %g4,%l7,%l7 892 893 add %g2,%l3,%l3 894 add %g2,%l7,%l7 895 srlx %o1,32,%i5 896 srl %i5,3,%g2 !! Xupdate(17) 897 sll %i5,14,%g4 898 srl %i5,7,%g3 899 xor %g4,%g2,%g2 900 sll %g4,11,%g4 901 xor %g3,%g2,%g2 902 srl %i5,18,%g3 903 xor %g4,%g2,%g2 904 srl %o7,10,%g5 905 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 906 sll %o7,13,%g4 907 srl %o7,17,%g3 908 xor %g4,%g5,%g5 909 sll %g4,2,%g4 910 xor %g3,%g5,%g5 911 srl %o7,19,%g3 912 xor %g4,%g5,%g5 913 srlx %o5,32,%g4 ! X[i+9] 914 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 915 srl %o0,0,%g3 916 add %g5,%g4,%g4 917 add %o0,%g2,%g2 ! +=X[i] 918 xor %g3,%o0,%o0 919 add %g4,%g2,%g2 920 921 srl %g2,0,%g2 922 or %g2,%o0,%o0 923 add %l6,%g2,%g2 924 srl %l3,6,%l6 !! 17 925 xor %l4,%l5,%g5 926 sll %l3,7,%g4 927 and %l3,%g5,%g5 928 srl %l3,11,%g3 929 xor %g4,%l6,%l6 930 sll %l3,21,%g4 931 xor %g3,%l6,%l6 932 srl %l3,25,%g3 933 xor %g4,%l6,%l6 934 sll %l3,26,%g4 935 xor %g3,%l6,%l6 936 xor %l5,%g5,%g5 ! Ch(e,f,g) 937 xor %g4,%l6,%g3 ! Sigma1(e) 938 939 srl %l7,2,%l6 940 add %g5,%g2,%g2 941 ld [%i3+68],%g5 ! K[17] 942 sll %l7,10,%g4 943 add %g3,%g2,%g2 944 srl %l7,13,%g3 945 xor %g4,%l6,%l6 946 sll %l7,19,%g4 947 xor %g3,%l6,%l6 948 srl %l7,22,%g3 949 xor %g4,%l6,%l6 950 sll %l7,30,%g4 951 xor %g3,%l6,%l6 952 xor %g4,%l6,%l6 ! Sigma0(a) 953 954 or %l7,%l0,%g3 955 and %l7,%l0,%g4 956 and %l1,%g3,%g3 957 or %g3,%g4,%g4 ! Maj(a,b,c) 958 add %g5,%g2,%g2 ! +=K[17] 959 add %g4,%l6,%l6 960 961 add %g2,%l2,%l2 962 add %g2,%l6,%l6 963 srl %o1,3,%g2 !! Xupdate(18) 964 sll %o1,14,%g4 965 srl %o1,7,%g3 966 xor %g4,%g2,%g2 967 sll %g4,11,%g4 968 xor %g3,%g2,%g2 969 srl %o1,18,%g3 970 xor %g4,%g2,%g2 971 srlx %o0,32,%i5 972 srl %i5,10,%g5 973 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 974 sll %i5,13,%g4 975 srl %i5,17,%g3 976 xor %g4,%g5,%g5 977 sll %g4,2,%g4 978 xor %g3,%g5,%g5 979 srl %i5,19,%g3 980 xor %g4,%g5,%g5 981 srlx %o1,32,%g4 ! X[i] 982 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 983 add %o5,%g2,%g2 ! +=X[i+9] 984 add %g5,%g4,%g4 985 srl %o1,0,%o1 986 add %g4,%g2,%g2 987 988 sllx %g2,32,%g3 989 or %g3,%o1,%o1 990 add %l5,%g2,%g2 991 srl %l2,6,%l5 !! 18 992 xor %l3,%l4,%g5 993 sll %l2,7,%g4 994 and %l2,%g5,%g5 995 srl %l2,11,%g3 996 xor %g4,%l5,%l5 997 sll %l2,21,%g4 998 xor %g3,%l5,%l5 999 srl %l2,25,%g3 1000 xor %g4,%l5,%l5 1001 sll %l2,26,%g4 1002 xor %g3,%l5,%l5 1003 xor %l4,%g5,%g5 ! Ch(e,f,g) 1004 xor %g4,%l5,%g3 ! Sigma1(e) 1005 1006 srl %l6,2,%l5 1007 add %g5,%g2,%g2 1008 ld [%i3+72],%g5 ! K[18] 1009 sll %l6,10,%g4 1010 add %g3,%g2,%g2 1011 srl %l6,13,%g3 1012 xor %g4,%l5,%l5 1013 sll %l6,19,%g4 1014 xor %g3,%l5,%l5 1015 srl %l6,22,%g3 1016 xor %g4,%l5,%l5 1017 sll %l6,30,%g4 1018 xor %g3,%l5,%l5 1019 xor %g4,%l5,%l5 ! Sigma0(a) 1020 1021 or %l6,%l7,%g3 1022 and %l6,%l7,%g4 1023 and %l0,%g3,%g3 1024 or %g3,%g4,%g4 ! Maj(a,b,c) 1025 add %g5,%g2,%g2 ! +=K[18] 1026 add %g4,%l5,%l5 1027 1028 add %g2,%l1,%l1 1029 add %g2,%l5,%l5 1030 srlx %o2,32,%i5 1031 srl %i5,3,%g2 !! Xupdate(19) 1032 sll %i5,14,%g4 1033 srl %i5,7,%g3 1034 xor %g4,%g2,%g2 1035 sll %g4,11,%g4 1036 xor %g3,%g2,%g2 1037 srl %i5,18,%g3 1038 xor %g4,%g2,%g2 1039 srl %o0,10,%g5 1040 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1041 sll %o0,13,%g4 1042 srl %o0,17,%g3 1043 xor %g4,%g5,%g5 1044 sll %g4,2,%g4 1045 xor %g3,%g5,%g5 1046 srl %o0,19,%g3 1047 xor %g4,%g5,%g5 1048 srlx %g1,32,%g4 ! X[i+9] 1049 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1050 srl %o1,0,%g3 1051 add %g5,%g4,%g4 1052 add %o1,%g2,%g2 ! +=X[i] 1053 xor %g3,%o1,%o1 1054 add %g4,%g2,%g2 1055 1056 srl %g2,0,%g2 1057 or %g2,%o1,%o1 1058 add %l4,%g2,%g2 1059 srl %l1,6,%l4 !! 19 1060 xor %l2,%l3,%g5 1061 sll %l1,7,%g4 1062 and %l1,%g5,%g5 1063 srl %l1,11,%g3 1064 xor %g4,%l4,%l4 1065 sll %l1,21,%g4 1066 xor %g3,%l4,%l4 1067 srl %l1,25,%g3 1068 xor %g4,%l4,%l4 1069 sll %l1,26,%g4 1070 xor %g3,%l4,%l4 1071 xor %l3,%g5,%g5 ! Ch(e,f,g) 1072 xor %g4,%l4,%g3 ! Sigma1(e) 1073 1074 srl %l5,2,%l4 1075 add %g5,%g2,%g2 1076 ld [%i3+76],%g5 ! K[19] 1077 sll %l5,10,%g4 1078 add %g3,%g2,%g2 1079 srl %l5,13,%g3 1080 xor %g4,%l4,%l4 1081 sll %l5,19,%g4 1082 xor %g3,%l4,%l4 1083 srl %l5,22,%g3 1084 xor %g4,%l4,%l4 1085 sll %l5,30,%g4 1086 xor %g3,%l4,%l4 1087 xor %g4,%l4,%l4 ! Sigma0(a) 1088 1089 or %l5,%l6,%g3 1090 and %l5,%l6,%g4 1091 and %l7,%g3,%g3 1092 or %g3,%g4,%g4 ! Maj(a,b,c) 1093 add %g5,%g2,%g2 ! +=K[19] 1094 add %g4,%l4,%l4 1095 1096 add %g2,%l0,%l0 1097 add %g2,%l4,%l4 1098 srl %o2,3,%g2 !! Xupdate(20) 1099 sll %o2,14,%g4 1100 srl %o2,7,%g3 1101 xor %g4,%g2,%g2 1102 sll %g4,11,%g4 1103 xor %g3,%g2,%g2 1104 srl %o2,18,%g3 1105 xor %g4,%g2,%g2 1106 srlx %o1,32,%i5 1107 srl %i5,10,%g5 1108 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1109 sll %i5,13,%g4 1110 srl %i5,17,%g3 1111 xor %g4,%g5,%g5 1112 sll %g4,2,%g4 1113 xor %g3,%g5,%g5 1114 srl %i5,19,%g3 1115 xor %g4,%g5,%g5 1116 srlx %o2,32,%g4 ! X[i] 1117 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1118 add %g1,%g2,%g2 ! +=X[i+9] 1119 add %g5,%g4,%g4 1120 srl %o2,0,%o2 1121 add %g4,%g2,%g2 1122 1123 sllx %g2,32,%g3 1124 or %g3,%o2,%o2 1125 add %l3,%g2,%g2 1126 srl %l0,6,%l3 !! 20 1127 xor %l1,%l2,%g5 1128 sll %l0,7,%g4 1129 and %l0,%g5,%g5 1130 srl %l0,11,%g3 1131 xor %g4,%l3,%l3 1132 sll %l0,21,%g4 1133 xor %g3,%l3,%l3 1134 srl %l0,25,%g3 1135 xor %g4,%l3,%l3 1136 sll %l0,26,%g4 1137 xor %g3,%l3,%l3 1138 xor %l2,%g5,%g5 ! Ch(e,f,g) 1139 xor %g4,%l3,%g3 ! Sigma1(e) 1140 1141 srl %l4,2,%l3 1142 add %g5,%g2,%g2 1143 ld [%i3+80],%g5 ! K[20] 1144 sll %l4,10,%g4 1145 add %g3,%g2,%g2 1146 srl %l4,13,%g3 1147 xor %g4,%l3,%l3 1148 sll %l4,19,%g4 1149 xor %g3,%l3,%l3 1150 srl %l4,22,%g3 1151 xor %g4,%l3,%l3 1152 sll %l4,30,%g4 1153 xor %g3,%l3,%l3 1154 xor %g4,%l3,%l3 ! Sigma0(a) 1155 1156 or %l4,%l5,%g3 1157 and %l4,%l5,%g4 1158 and %l6,%g3,%g3 1159 or %g3,%g4,%g4 ! Maj(a,b,c) 1160 add %g5,%g2,%g2 ! +=K[20] 1161 add %g4,%l3,%l3 1162 1163 add %g2,%l7,%l7 1164 add %g2,%l3,%l3 1165 srlx %o3,32,%i5 1166 srl %i5,3,%g2 !! Xupdate(21) 1167 sll %i5,14,%g4 1168 srl %i5,7,%g3 1169 xor %g4,%g2,%g2 1170 sll %g4,11,%g4 1171 xor %g3,%g2,%g2 1172 srl %i5,18,%g3 1173 xor %g4,%g2,%g2 1174 srl %o1,10,%g5 1175 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1176 sll %o1,13,%g4 1177 srl %o1,17,%g3 1178 xor %g4,%g5,%g5 1179 sll %g4,2,%g4 1180 xor %g3,%g5,%g5 1181 srl %o1,19,%g3 1182 xor %g4,%g5,%g5 1183 srlx %o7,32,%g4 ! X[i+9] 1184 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1185 srl %o2,0,%g3 1186 add %g5,%g4,%g4 1187 add %o2,%g2,%g2 ! +=X[i] 1188 xor %g3,%o2,%o2 1189 add %g4,%g2,%g2 1190 1191 srl %g2,0,%g2 1192 or %g2,%o2,%o2 1193 add %l2,%g2,%g2 1194 srl %l7,6,%l2 !! 21 1195 xor %l0,%l1,%g5 1196 sll %l7,7,%g4 1197 and %l7,%g5,%g5 1198 srl %l7,11,%g3 1199 xor %g4,%l2,%l2 1200 sll %l7,21,%g4 1201 xor %g3,%l2,%l2 1202 srl %l7,25,%g3 1203 xor %g4,%l2,%l2 1204 sll %l7,26,%g4 1205 xor %g3,%l2,%l2 1206 xor %l1,%g5,%g5 ! Ch(e,f,g) 1207 xor %g4,%l2,%g3 ! Sigma1(e) 1208 1209 srl %l3,2,%l2 1210 add %g5,%g2,%g2 1211 ld [%i3+84],%g5 ! K[21] 1212 sll %l3,10,%g4 1213 add %g3,%g2,%g2 1214 srl %l3,13,%g3 1215 xor %g4,%l2,%l2 1216 sll %l3,19,%g4 1217 xor %g3,%l2,%l2 1218 srl %l3,22,%g3 1219 xor %g4,%l2,%l2 1220 sll %l3,30,%g4 1221 xor %g3,%l2,%l2 1222 xor %g4,%l2,%l2 ! Sigma0(a) 1223 1224 or %l3,%l4,%g3 1225 and %l3,%l4,%g4 1226 and %l5,%g3,%g3 1227 or %g3,%g4,%g4 ! Maj(a,b,c) 1228 add %g5,%g2,%g2 ! +=K[21] 1229 add %g4,%l2,%l2 1230 1231 add %g2,%l6,%l6 1232 add %g2,%l2,%l2 1233 srl %o3,3,%g2 !! Xupdate(22) 1234 sll %o3,14,%g4 1235 srl %o3,7,%g3 1236 xor %g4,%g2,%g2 1237 sll %g4,11,%g4 1238 xor %g3,%g2,%g2 1239 srl %o3,18,%g3 1240 xor %g4,%g2,%g2 1241 srlx %o2,32,%i5 1242 srl %i5,10,%g5 1243 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1244 sll %i5,13,%g4 1245 srl %i5,17,%g3 1246 xor %g4,%g5,%g5 1247 sll %g4,2,%g4 1248 xor %g3,%g5,%g5 1249 srl %i5,19,%g3 1250 xor %g4,%g5,%g5 1251 srlx %o3,32,%g4 ! X[i] 1252 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1253 add %o7,%g2,%g2 ! +=X[i+9] 1254 add %g5,%g4,%g4 1255 srl %o3,0,%o3 1256 add %g4,%g2,%g2 1257 1258 sllx %g2,32,%g3 1259 or %g3,%o3,%o3 1260 add %l1,%g2,%g2 1261 srl %l6,6,%l1 !! 22 1262 xor %l7,%l0,%g5 1263 sll %l6,7,%g4 1264 and %l6,%g5,%g5 1265 srl %l6,11,%g3 1266 xor %g4,%l1,%l1 1267 sll %l6,21,%g4 1268 xor %g3,%l1,%l1 1269 srl %l6,25,%g3 1270 xor %g4,%l1,%l1 1271 sll %l6,26,%g4 1272 xor %g3,%l1,%l1 1273 xor %l0,%g5,%g5 ! Ch(e,f,g) 1274 xor %g4,%l1,%g3 ! Sigma1(e) 1275 1276 srl %l2,2,%l1 1277 add %g5,%g2,%g2 1278 ld [%i3+88],%g5 ! K[22] 1279 sll %l2,10,%g4 1280 add %g3,%g2,%g2 1281 srl %l2,13,%g3 1282 xor %g4,%l1,%l1 1283 sll %l2,19,%g4 1284 xor %g3,%l1,%l1 1285 srl %l2,22,%g3 1286 xor %g4,%l1,%l1 1287 sll %l2,30,%g4 1288 xor %g3,%l1,%l1 1289 xor %g4,%l1,%l1 ! Sigma0(a) 1290 1291 or %l2,%l3,%g3 1292 and %l2,%l3,%g4 1293 and %l4,%g3,%g3 1294 or %g3,%g4,%g4 ! Maj(a,b,c) 1295 add %g5,%g2,%g2 ! +=K[22] 1296 add %g4,%l1,%l1 1297 1298 add %g2,%l5,%l5 1299 add %g2,%l1,%l1 1300 srlx %o4,32,%i5 1301 srl %i5,3,%g2 !! Xupdate(23) 1302 sll %i5,14,%g4 1303 srl %i5,7,%g3 1304 xor %g4,%g2,%g2 1305 sll %g4,11,%g4 1306 xor %g3,%g2,%g2 1307 srl %i5,18,%g3 1308 xor %g4,%g2,%g2 1309 srl %o2,10,%g5 1310 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1311 sll %o2,13,%g4 1312 srl %o2,17,%g3 1313 xor %g4,%g5,%g5 1314 sll %g4,2,%g4 1315 xor %g3,%g5,%g5 1316 srl %o2,19,%g3 1317 xor %g4,%g5,%g5 1318 srlx %o0,32,%g4 ! X[i+9] 1319 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1320 srl %o3,0,%g3 1321 add %g5,%g4,%g4 1322 add %o3,%g2,%g2 ! +=X[i] 1323 xor %g3,%o3,%o3 1324 add %g4,%g2,%g2 1325 1326 srl %g2,0,%g2 1327 or %g2,%o3,%o3 1328 add %l0,%g2,%g2 1329 srl %l5,6,%l0 !! 23 1330 xor %l6,%l7,%g5 1331 sll %l5,7,%g4 1332 and %l5,%g5,%g5 1333 srl %l5,11,%g3 1334 xor %g4,%l0,%l0 1335 sll %l5,21,%g4 1336 xor %g3,%l0,%l0 1337 srl %l5,25,%g3 1338 xor %g4,%l0,%l0 1339 sll %l5,26,%g4 1340 xor %g3,%l0,%l0 1341 xor %l7,%g5,%g5 ! Ch(e,f,g) 1342 xor %g4,%l0,%g3 ! Sigma1(e) 1343 1344 srl %l1,2,%l0 1345 add %g5,%g2,%g2 1346 ld [%i3+92],%g5 ! K[23] 1347 sll %l1,10,%g4 1348 add %g3,%g2,%g2 1349 srl %l1,13,%g3 1350 xor %g4,%l0,%l0 1351 sll %l1,19,%g4 1352 xor %g3,%l0,%l0 1353 srl %l1,22,%g3 1354 xor %g4,%l0,%l0 1355 sll %l1,30,%g4 1356 xor %g3,%l0,%l0 1357 xor %g4,%l0,%l0 ! Sigma0(a) 1358 1359 or %l1,%l2,%g3 1360 and %l1,%l2,%g4 1361 and %l3,%g3,%g3 1362 or %g3,%g4,%g4 ! Maj(a,b,c) 1363 add %g5,%g2,%g2 ! +=K[23] 1364 add %g4,%l0,%l0 1365 1366 add %g2,%l4,%l4 1367 add %g2,%l0,%l0 1368 srl %o4,3,%g2 !! Xupdate(24) 1369 sll %o4,14,%g4 1370 srl %o4,7,%g3 1371 xor %g4,%g2,%g2 1372 sll %g4,11,%g4 1373 xor %g3,%g2,%g2 1374 srl %o4,18,%g3 1375 xor %g4,%g2,%g2 1376 srlx %o3,32,%i5 1377 srl %i5,10,%g5 1378 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1379 sll %i5,13,%g4 1380 srl %i5,17,%g3 1381 xor %g4,%g5,%g5 1382 sll %g4,2,%g4 1383 xor %g3,%g5,%g5 1384 srl %i5,19,%g3 1385 xor %g4,%g5,%g5 1386 srlx %o4,32,%g4 ! X[i] 1387 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1388 add %o0,%g2,%g2 ! +=X[i+9] 1389 add %g5,%g4,%g4 1390 srl %o4,0,%o4 1391 add %g4,%g2,%g2 1392 1393 sllx %g2,32,%g3 1394 or %g3,%o4,%o4 1395 add %l7,%g2,%g2 1396 srl %l4,6,%l7 !! 24 1397 xor %l5,%l6,%g5 1398 sll %l4,7,%g4 1399 and %l4,%g5,%g5 1400 srl %l4,11,%g3 1401 xor %g4,%l7,%l7 1402 sll %l4,21,%g4 1403 xor %g3,%l7,%l7 1404 srl %l4,25,%g3 1405 xor %g4,%l7,%l7 1406 sll %l4,26,%g4 1407 xor %g3,%l7,%l7 1408 xor %l6,%g5,%g5 ! Ch(e,f,g) 1409 xor %g4,%l7,%g3 ! Sigma1(e) 1410 1411 srl %l0,2,%l7 1412 add %g5,%g2,%g2 1413 ld [%i3+96],%g5 ! K[24] 1414 sll %l0,10,%g4 1415 add %g3,%g2,%g2 1416 srl %l0,13,%g3 1417 xor %g4,%l7,%l7 1418 sll %l0,19,%g4 1419 xor %g3,%l7,%l7 1420 srl %l0,22,%g3 1421 xor %g4,%l7,%l7 1422 sll %l0,30,%g4 1423 xor %g3,%l7,%l7 1424 xor %g4,%l7,%l7 ! Sigma0(a) 1425 1426 or %l0,%l1,%g3 1427 and %l0,%l1,%g4 1428 and %l2,%g3,%g3 1429 or %g3,%g4,%g4 ! Maj(a,b,c) 1430 add %g5,%g2,%g2 ! +=K[24] 1431 add %g4,%l7,%l7 1432 1433 add %g2,%l3,%l3 1434 add %g2,%l7,%l7 1435 srlx %o5,32,%i5 1436 srl %i5,3,%g2 !! Xupdate(25) 1437 sll %i5,14,%g4 1438 srl %i5,7,%g3 1439 xor %g4,%g2,%g2 1440 sll %g4,11,%g4 1441 xor %g3,%g2,%g2 1442 srl %i5,18,%g3 1443 xor %g4,%g2,%g2 1444 srl %o3,10,%g5 1445 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1446 sll %o3,13,%g4 1447 srl %o3,17,%g3 1448 xor %g4,%g5,%g5 1449 sll %g4,2,%g4 1450 xor %g3,%g5,%g5 1451 srl %o3,19,%g3 1452 xor %g4,%g5,%g5 1453 srlx %o1,32,%g4 ! X[i+9] 1454 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1455 srl %o4,0,%g3 1456 add %g5,%g4,%g4 1457 add %o4,%g2,%g2 ! +=X[i] 1458 xor %g3,%o4,%o4 1459 add %g4,%g2,%g2 1460 1461 srl %g2,0,%g2 1462 or %g2,%o4,%o4 1463 add %l6,%g2,%g2 1464 srl %l3,6,%l6 !! 25 1465 xor %l4,%l5,%g5 1466 sll %l3,7,%g4 1467 and %l3,%g5,%g5 1468 srl %l3,11,%g3 1469 xor %g4,%l6,%l6 1470 sll %l3,21,%g4 1471 xor %g3,%l6,%l6 1472 srl %l3,25,%g3 1473 xor %g4,%l6,%l6 1474 sll %l3,26,%g4 1475 xor %g3,%l6,%l6 1476 xor %l5,%g5,%g5 ! Ch(e,f,g) 1477 xor %g4,%l6,%g3 ! Sigma1(e) 1478 1479 srl %l7,2,%l6 1480 add %g5,%g2,%g2 1481 ld [%i3+100],%g5 ! K[25] 1482 sll %l7,10,%g4 1483 add %g3,%g2,%g2 1484 srl %l7,13,%g3 1485 xor %g4,%l6,%l6 1486 sll %l7,19,%g4 1487 xor %g3,%l6,%l6 1488 srl %l7,22,%g3 1489 xor %g4,%l6,%l6 1490 sll %l7,30,%g4 1491 xor %g3,%l6,%l6 1492 xor %g4,%l6,%l6 ! Sigma0(a) 1493 1494 or %l7,%l0,%g3 1495 and %l7,%l0,%g4 1496 and %l1,%g3,%g3 1497 or %g3,%g4,%g4 ! Maj(a,b,c) 1498 add %g5,%g2,%g2 ! +=K[25] 1499 add %g4,%l6,%l6 1500 1501 add %g2,%l2,%l2 1502 add %g2,%l6,%l6 1503 srl %o5,3,%g2 !! Xupdate(26) 1504 sll %o5,14,%g4 1505 srl %o5,7,%g3 1506 xor %g4,%g2,%g2 1507 sll %g4,11,%g4 1508 xor %g3,%g2,%g2 1509 srl %o5,18,%g3 1510 xor %g4,%g2,%g2 1511 srlx %o4,32,%i5 1512 srl %i5,10,%g5 1513 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1514 sll %i5,13,%g4 1515 srl %i5,17,%g3 1516 xor %g4,%g5,%g5 1517 sll %g4,2,%g4 1518 xor %g3,%g5,%g5 1519 srl %i5,19,%g3 1520 xor %g4,%g5,%g5 1521 srlx %o5,32,%g4 ! X[i] 1522 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1523 add %o1,%g2,%g2 ! +=X[i+9] 1524 add %g5,%g4,%g4 1525 srl %o5,0,%o5 1526 add %g4,%g2,%g2 1527 1528 sllx %g2,32,%g3 1529 or %g3,%o5,%o5 1530 add %l5,%g2,%g2 1531 srl %l2,6,%l5 !! 26 1532 xor %l3,%l4,%g5 1533 sll %l2,7,%g4 1534 and %l2,%g5,%g5 1535 srl %l2,11,%g3 1536 xor %g4,%l5,%l5 1537 sll %l2,21,%g4 1538 xor %g3,%l5,%l5 1539 srl %l2,25,%g3 1540 xor %g4,%l5,%l5 1541 sll %l2,26,%g4 1542 xor %g3,%l5,%l5 1543 xor %l4,%g5,%g5 ! Ch(e,f,g) 1544 xor %g4,%l5,%g3 ! Sigma1(e) 1545 1546 srl %l6,2,%l5 1547 add %g5,%g2,%g2 1548 ld [%i3+104],%g5 ! K[26] 1549 sll %l6,10,%g4 1550 add %g3,%g2,%g2 1551 srl %l6,13,%g3 1552 xor %g4,%l5,%l5 1553 sll %l6,19,%g4 1554 xor %g3,%l5,%l5 1555 srl %l6,22,%g3 1556 xor %g4,%l5,%l5 1557 sll %l6,30,%g4 1558 xor %g3,%l5,%l5 1559 xor %g4,%l5,%l5 ! Sigma0(a) 1560 1561 or %l6,%l7,%g3 1562 and %l6,%l7,%g4 1563 and %l0,%g3,%g3 1564 or %g3,%g4,%g4 ! Maj(a,b,c) 1565 add %g5,%g2,%g2 ! +=K[26] 1566 add %g4,%l5,%l5 1567 1568 add %g2,%l1,%l1 1569 add %g2,%l5,%l5 1570 srlx %g1,32,%i5 1571 srl %i5,3,%g2 !! Xupdate(27) 1572 sll %i5,14,%g4 1573 srl %i5,7,%g3 1574 xor %g4,%g2,%g2 1575 sll %g4,11,%g4 1576 xor %g3,%g2,%g2 1577 srl %i5,18,%g3 1578 xor %g4,%g2,%g2 1579 srl %o4,10,%g5 1580 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1581 sll %o4,13,%g4 1582 srl %o4,17,%g3 1583 xor %g4,%g5,%g5 1584 sll %g4,2,%g4 1585 xor %g3,%g5,%g5 1586 srl %o4,19,%g3 1587 xor %g4,%g5,%g5 1588 srlx %o2,32,%g4 ! X[i+9] 1589 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1590 srl %o5,0,%g3 1591 add %g5,%g4,%g4 1592 add %o5,%g2,%g2 ! +=X[i] 1593 xor %g3,%o5,%o5 1594 add %g4,%g2,%g2 1595 1596 srl %g2,0,%g2 1597 or %g2,%o5,%o5 1598 add %l4,%g2,%g2 1599 srl %l1,6,%l4 !! 27 1600 xor %l2,%l3,%g5 1601 sll %l1,7,%g4 1602 and %l1,%g5,%g5 1603 srl %l1,11,%g3 1604 xor %g4,%l4,%l4 1605 sll %l1,21,%g4 1606 xor %g3,%l4,%l4 1607 srl %l1,25,%g3 1608 xor %g4,%l4,%l4 1609 sll %l1,26,%g4 1610 xor %g3,%l4,%l4 1611 xor %l3,%g5,%g5 ! Ch(e,f,g) 1612 xor %g4,%l4,%g3 ! Sigma1(e) 1613 1614 srl %l5,2,%l4 1615 add %g5,%g2,%g2 1616 ld [%i3+108],%g5 ! K[27] 1617 sll %l5,10,%g4 1618 add %g3,%g2,%g2 1619 srl %l5,13,%g3 1620 xor %g4,%l4,%l4 1621 sll %l5,19,%g4 1622 xor %g3,%l4,%l4 1623 srl %l5,22,%g3 1624 xor %g4,%l4,%l4 1625 sll %l5,30,%g4 1626 xor %g3,%l4,%l4 1627 xor %g4,%l4,%l4 ! Sigma0(a) 1628 1629 or %l5,%l6,%g3 1630 and %l5,%l6,%g4 1631 and %l7,%g3,%g3 1632 or %g3,%g4,%g4 ! Maj(a,b,c) 1633 add %g5,%g2,%g2 ! +=K[27] 1634 add %g4,%l4,%l4 1635 1636 add %g2,%l0,%l0 1637 add %g2,%l4,%l4 1638 srl %g1,3,%g2 !! Xupdate(28) 1639 sll %g1,14,%g4 1640 srl %g1,7,%g3 1641 xor %g4,%g2,%g2 1642 sll %g4,11,%g4 1643 xor %g3,%g2,%g2 1644 srl %g1,18,%g3 1645 xor %g4,%g2,%g2 1646 srlx %o5,32,%i5 1647 srl %i5,10,%g5 1648 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1649 sll %i5,13,%g4 1650 srl %i5,17,%g3 1651 xor %g4,%g5,%g5 1652 sll %g4,2,%g4 1653 xor %g3,%g5,%g5 1654 srl %i5,19,%g3 1655 xor %g4,%g5,%g5 1656 srlx %g1,32,%g4 ! X[i] 1657 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1658 add %o2,%g2,%g2 ! +=X[i+9] 1659 add %g5,%g4,%g4 1660 srl %g1,0,%g1 1661 add %g4,%g2,%g2 1662 1663 sllx %g2,32,%g3 1664 or %g3,%g1,%g1 1665 add %l3,%g2,%g2 1666 srl %l0,6,%l3 !! 28 1667 xor %l1,%l2,%g5 1668 sll %l0,7,%g4 1669 and %l0,%g5,%g5 1670 srl %l0,11,%g3 1671 xor %g4,%l3,%l3 1672 sll %l0,21,%g4 1673 xor %g3,%l3,%l3 1674 srl %l0,25,%g3 1675 xor %g4,%l3,%l3 1676 sll %l0,26,%g4 1677 xor %g3,%l3,%l3 1678 xor %l2,%g5,%g5 ! Ch(e,f,g) 1679 xor %g4,%l3,%g3 ! Sigma1(e) 1680 1681 srl %l4,2,%l3 1682 add %g5,%g2,%g2 1683 ld [%i3+112],%g5 ! K[28] 1684 sll %l4,10,%g4 1685 add %g3,%g2,%g2 1686 srl %l4,13,%g3 1687 xor %g4,%l3,%l3 1688 sll %l4,19,%g4 1689 xor %g3,%l3,%l3 1690 srl %l4,22,%g3 1691 xor %g4,%l3,%l3 1692 sll %l4,30,%g4 1693 xor %g3,%l3,%l3 1694 xor %g4,%l3,%l3 ! Sigma0(a) 1695 1696 or %l4,%l5,%g3 1697 and %l4,%l5,%g4 1698 and %l6,%g3,%g3 1699 or %g3,%g4,%g4 ! Maj(a,b,c) 1700 add %g5,%g2,%g2 ! +=K[28] 1701 add %g4,%l3,%l3 1702 1703 add %g2,%l7,%l7 1704 add %g2,%l3,%l3 1705 srlx %o7,32,%i5 1706 srl %i5,3,%g2 !! Xupdate(29) 1707 sll %i5,14,%g4 1708 srl %i5,7,%g3 1709 xor %g4,%g2,%g2 1710 sll %g4,11,%g4 1711 xor %g3,%g2,%g2 1712 srl %i5,18,%g3 1713 xor %g4,%g2,%g2 1714 srl %o5,10,%g5 1715 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1716 sll %o5,13,%g4 1717 srl %o5,17,%g3 1718 xor %g4,%g5,%g5 1719 sll %g4,2,%g4 1720 xor %g3,%g5,%g5 1721 srl %o5,19,%g3 1722 xor %g4,%g5,%g5 1723 srlx %o3,32,%g4 ! X[i+9] 1724 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1725 srl %g1,0,%g3 1726 add %g5,%g4,%g4 1727 add %g1,%g2,%g2 ! +=X[i] 1728 xor %g3,%g1,%g1 1729 add %g4,%g2,%g2 1730 1731 srl %g2,0,%g2 1732 or %g2,%g1,%g1 1733 add %l2,%g2,%g2 1734 srl %l7,6,%l2 !! 29 1735 xor %l0,%l1,%g5 1736 sll %l7,7,%g4 1737 and %l7,%g5,%g5 1738 srl %l7,11,%g3 1739 xor %g4,%l2,%l2 1740 sll %l7,21,%g4 1741 xor %g3,%l2,%l2 1742 srl %l7,25,%g3 1743 xor %g4,%l2,%l2 1744 sll %l7,26,%g4 1745 xor %g3,%l2,%l2 1746 xor %l1,%g5,%g5 ! Ch(e,f,g) 1747 xor %g4,%l2,%g3 ! Sigma1(e) 1748 1749 srl %l3,2,%l2 1750 add %g5,%g2,%g2 1751 ld [%i3+116],%g5 ! K[29] 1752 sll %l3,10,%g4 1753 add %g3,%g2,%g2 1754 srl %l3,13,%g3 1755 xor %g4,%l2,%l2 1756 sll %l3,19,%g4 1757 xor %g3,%l2,%l2 1758 srl %l3,22,%g3 1759 xor %g4,%l2,%l2 1760 sll %l3,30,%g4 1761 xor %g3,%l2,%l2 1762 xor %g4,%l2,%l2 ! Sigma0(a) 1763 1764 or %l3,%l4,%g3 1765 and %l3,%l4,%g4 1766 and %l5,%g3,%g3 1767 or %g3,%g4,%g4 ! Maj(a,b,c) 1768 add %g5,%g2,%g2 ! +=K[29] 1769 add %g4,%l2,%l2 1770 1771 add %g2,%l6,%l6 1772 add %g2,%l2,%l2 1773 srl %o7,3,%g2 !! Xupdate(30) 1774 sll %o7,14,%g4 1775 srl %o7,7,%g3 1776 xor %g4,%g2,%g2 1777 sll %g4,11,%g4 1778 xor %g3,%g2,%g2 1779 srl %o7,18,%g3 1780 xor %g4,%g2,%g2 1781 srlx %g1,32,%i5 1782 srl %i5,10,%g5 1783 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1784 sll %i5,13,%g4 1785 srl %i5,17,%g3 1786 xor %g4,%g5,%g5 1787 sll %g4,2,%g4 1788 xor %g3,%g5,%g5 1789 srl %i5,19,%g3 1790 xor %g4,%g5,%g5 1791 srlx %o7,32,%g4 ! X[i] 1792 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1793 add %o3,%g2,%g2 ! +=X[i+9] 1794 add %g5,%g4,%g4 1795 srl %o7,0,%o7 1796 add %g4,%g2,%g2 1797 1798 sllx %g2,32,%g3 1799 or %g3,%o7,%o7 1800 add %l1,%g2,%g2 1801 srl %l6,6,%l1 !! 30 1802 xor %l7,%l0,%g5 1803 sll %l6,7,%g4 1804 and %l6,%g5,%g5 1805 srl %l6,11,%g3 1806 xor %g4,%l1,%l1 1807 sll %l6,21,%g4 1808 xor %g3,%l1,%l1 1809 srl %l6,25,%g3 1810 xor %g4,%l1,%l1 1811 sll %l6,26,%g4 1812 xor %g3,%l1,%l1 1813 xor %l0,%g5,%g5 ! Ch(e,f,g) 1814 xor %g4,%l1,%g3 ! Sigma1(e) 1815 1816 srl %l2,2,%l1 1817 add %g5,%g2,%g2 1818 ld [%i3+120],%g5 ! K[30] 1819 sll %l2,10,%g4 1820 add %g3,%g2,%g2 1821 srl %l2,13,%g3 1822 xor %g4,%l1,%l1 1823 sll %l2,19,%g4 1824 xor %g3,%l1,%l1 1825 srl %l2,22,%g3 1826 xor %g4,%l1,%l1 1827 sll %l2,30,%g4 1828 xor %g3,%l1,%l1 1829 xor %g4,%l1,%l1 ! Sigma0(a) 1830 1831 or %l2,%l3,%g3 1832 and %l2,%l3,%g4 1833 and %l4,%g3,%g3 1834 or %g3,%g4,%g4 ! Maj(a,b,c) 1835 add %g5,%g2,%g2 ! +=K[30] 1836 add %g4,%l1,%l1 1837 1838 add %g2,%l5,%l5 1839 add %g2,%l1,%l1 1840 srlx %o0,32,%i5 1841 srl %i5,3,%g2 !! Xupdate(31) 1842 sll %i5,14,%g4 1843 srl %i5,7,%g3 1844 xor %g4,%g2,%g2 1845 sll %g4,11,%g4 1846 xor %g3,%g2,%g2 1847 srl %i5,18,%g3 1848 xor %g4,%g2,%g2 1849 srl %g1,10,%g5 1850 xor %g3,%g2,%g2 ! T1=sigma0(X[i+1]) 1851 sll %g1,13,%g4 1852 srl %g1,17,%g3 1853 xor %g4,%g5,%g5 1854 sll %g4,2,%g4 1855 xor %g3,%g5,%g5 1856 srl %g1,19,%g3 1857 xor %g4,%g5,%g5 1858 srlx %o4,32,%g4 ! X[i+9] 1859 xor %g3,%g5,%g5 ! sigma1(X[i+14]) 1860 srl %o7,0,%g3 1861 add %g5,%g4,%g4 1862 add %o7,%g2,%g2 ! +=X[i] 1863 xor %g3,%o7,%o7 1864 add %g4,%g2,%g2 1865 1866 srl %g2,0,%g2 1867 or %g2,%o7,%o7 1868 add %l0,%g2,%g2 1869 srl %l5,6,%l0 !! 31 1870 xor %l6,%l7,%g5 1871 sll %l5,7,%g4 1872 and %l5,%g5,%g5 1873 srl %l5,11,%g3 1874 xor %g4,%l0,%l0 1875 sll %l5,21,%g4 1876 xor %g3,%l0,%l0 1877 srl %l5,25,%g3 1878 xor %g4,%l0,%l0 1879 sll %l5,26,%g4 1880 xor %g3,%l0,%l0 1881 xor %l7,%g5,%g5 ! Ch(e,f,g) 1882 xor %g4,%l0,%g3 ! Sigma1(e) 1883 1884 srl %l1,2,%l0 1885 add %g5,%g2,%g2 1886 ld [%i3+124],%g5 ! K[31] 1887 sll %l1,10,%g4 1888 add %g3,%g2,%g2 1889 srl %l1,13,%g3 1890 xor %g4,%l0,%l0 1891 sll %l1,19,%g4 1892 xor %g3,%l0,%l0 1893 srl %l1,22,%g3 1894 xor %g4,%l0,%l0 1895 sll %l1,30,%g4 1896 xor %g3,%l0,%l0 1897 xor %g4,%l0,%l0 ! Sigma0(a) 1898 1899 or %l1,%l2,%g3 1900 and %l1,%l2,%g4 1901 and %l3,%g3,%g3 1902 or %g3,%g4,%g4 ! Maj(a,b,c) 1903 add %g5,%g2,%g2 ! +=K[31] 1904 add %g4,%l0,%l0 1905 1906 add %g2,%l4,%l4 1907 add %g2,%l0,%l0 1908 and %g5,0xfff,%g5 1909 cmp %g5,2290 1910 bne .L16_xx 1911 add %i3,64,%i3 ! Ktbl+=16 1912 1913 ld [%i0+0],%o0 1914 ld [%i0+4],%o1 1915 ld [%i0+8],%o2 1916 ld [%i0+12],%o3 1917 ld [%i0+16],%o4 1918 ld [%i0+20],%o5 1919 ld [%i0+24],%g1 1920 ld [%i0+28],%o7 1921 1922 add %l0,%o0,%l0 1923 st %l0,[%i0+0] 1924 add %l1,%o1,%l1 1925 st %l1,[%i0+4] 1926 add %l2,%o2,%l2 1927 st %l2,[%i0+8] 1928 add %l3,%o3,%l3 1929 st %l3,[%i0+12] 1930 add %l4,%o4,%l4 1931 st %l4,[%i0+16] 1932 add %l5,%o5,%l5 1933 st %l5,[%i0+20] 1934 add %l6,%g1,%l6 1935 st %l6,[%i0+24] 1936 add %l7,%o7,%l7 1937 st %l7,[%i0+28] 1938 add %i1,64,%i1 ! advance inp 1939 cmp %i1,%i2 1940 bne SIZE_T_CC,.Lloop 1941 sub %i3,192,%i3 ! rewind Ktbl 1942 1943 ret 1944 restore 1945 .type sha256_block_data_order,#function 1946 .size sha256_block_data_order,(.-sha256_block_data_order) 1947 .asciz "SHA256 block transform for SPARCv9, CRYPTOGAMS by <appro (at) openssl.org>" 1948 .align 4 1949