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 14K512: 15.type K512,#object 16 .long 0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd 17 .long 0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc 18 .long 0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019 19 .long 0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118 20 .long 0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe 21 .long 0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2 22 .long 0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1 23 .long 0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694 24 .long 0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3 25 .long 0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65 26 .long 0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483 27 .long 0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5 28 .long 0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210 29 .long 0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4 30 .long 0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725 31 .long 0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70 32 .long 0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926 33 .long 0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df 34 .long 0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8 35 .long 0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b 36 .long 0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001 37 .long 0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30 38 .long 0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910 39 .long 0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8 40 .long 0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53 41 .long 0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8 42 .long 0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb 43 .long 0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3 44 .long 0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60 45 .long 0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec 46 .long 0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9 47 .long 0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b 48 .long 0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207 49 .long 0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178 50 .long 0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6 51 .long 0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b 52 .long 0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493 53 .long 0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c 54 .long 0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a 55 .long 0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817 56.size K512,.-K512 57 58#ifdef __PIC__ 59SPARC_PIC_THUNK(%g1) 60#endif 61 62.globl sha512_block_data_order 63.align 32 64sha512_block_data_order: 65 SPARC_LOAD_ADDRESS_LEAF(OPENSSL_sparcv9cap_P,%g1,%g5) 66 ld [%g1+4],%g1 ! OPENSSL_sparcv9cap_P[1] 67 68 andcc %g1, CFR_SHA512, %g0 69 be .Lsoftware 70 nop 71 ldd [%o0 + 0x00], %f0 ! load context 72 ldd [%o0 + 0x08], %f2 73 ldd [%o0 + 0x10], %f4 74 ldd [%o0 + 0x18], %f6 75 ldd [%o0 + 0x20], %f8 76 ldd [%o0 + 0x28], %f10 77 andcc %o1, 0x7, %g0 78 ldd [%o0 + 0x30], %f12 79 bne,pn %icc, .Lhwunaligned 80 ldd [%o0 + 0x38], %f14 81 82.Lhwaligned_loop: 83 ldd [%o1 + 0x00], %f16 84 ldd [%o1 + 0x08], %f18 85 ldd [%o1 + 0x10], %f20 86 ldd [%o1 + 0x18], %f22 87 ldd [%o1 + 0x20], %f24 88 ldd [%o1 + 0x28], %f26 89 ldd [%o1 + 0x30], %f28 90 ldd [%o1 + 0x38], %f30 91 ldd [%o1 + 0x40], %f32 92 ldd [%o1 + 0x48], %f34 93 ldd [%o1 + 0x50], %f36 94 ldd [%o1 + 0x58], %f38 95 ldd [%o1 + 0x60], %f40 96 ldd [%o1 + 0x68], %f42 97 ldd [%o1 + 0x70], %f44 98 subcc %o2, 1, %o2 ! done yet? 99 ldd [%o1 + 0x78], %f46 100 add %o1, 0x80, %o1 101 prefetch [%o1 + 63], 20 102 prefetch [%o1 + 64+63], 20 103 104 .word 0x81b02860 ! SHA512 105 106 bne,pt SIZE_T_CC, .Lhwaligned_loop 107 nop 108 109.Lhwfinish: 110 std %f0, [%o0 + 0x00] ! store context 111 std %f2, [%o0 + 0x08] 112 std %f4, [%o0 + 0x10] 113 std %f6, [%o0 + 0x18] 114 std %f8, [%o0 + 0x20] 115 std %f10, [%o0 + 0x28] 116 std %f12, [%o0 + 0x30] 117 retl 118 std %f14, [%o0 + 0x38] 119 120.align 16 121.Lhwunaligned: 122 .word 0x93b24300 !alignaddr %o1,%g0,%o1 123 124 ldd [%o1 + 0x00], %f18 125.Lhwunaligned_loop: 126 ldd [%o1 + 0x08], %f20 127 ldd [%o1 + 0x10], %f22 128 ldd [%o1 + 0x18], %f24 129 ldd [%o1 + 0x20], %f26 130 ldd [%o1 + 0x28], %f28 131 ldd [%o1 + 0x30], %f30 132 ldd [%o1 + 0x38], %f32 133 ldd [%o1 + 0x40], %f34 134 ldd [%o1 + 0x48], %f36 135 ldd [%o1 + 0x50], %f38 136 ldd [%o1 + 0x58], %f40 137 ldd [%o1 + 0x60], %f42 138 ldd [%o1 + 0x68], %f44 139 ldd [%o1 + 0x70], %f46 140 ldd [%o1 + 0x78], %f48 141 subcc %o2, 1, %o2 ! done yet? 142 ldd [%o1 + 0x80], %f50 143 add %o1, 0x80, %o1 144 prefetch [%o1 + 63], 20 145 prefetch [%o1 + 64+63], 20 146 147 .word 0xa1b48914 !faligndata %f18,%f20,%f16 148 .word 0xa5b50916 !faligndata %f20,%f22,%f18 149 .word 0xa9b58918 !faligndata %f22,%f24,%f20 150 .word 0xadb6091a !faligndata %f24,%f26,%f22 151 .word 0xb1b6891c !faligndata %f26,%f28,%f24 152 .word 0xb5b7091e !faligndata %f28,%f30,%f26 153 .word 0xb9b78901 !faligndata %f30,%f32,%f28 154 .word 0xbdb04903 !faligndata %f32,%f34,%f30 155 .word 0x83b0c905 !faligndata %f34,%f36,%f32 156 .word 0x87b14907 !faligndata %f36,%f38,%f34 157 .word 0x8bb1c909 !faligndata %f38,%f40,%f36 158 .word 0x8fb2490b !faligndata %f40,%f42,%f38 159 .word 0x93b2c90d !faligndata %f42,%f44,%f40 160 .word 0x97b3490f !faligndata %f44,%f46,%f42 161 .word 0x9bb3c911 !faligndata %f46,%f48,%f44 162 .word 0x9fb44913 !faligndata %f48,%f50,%f46 163 164 .word 0x81b02860 ! SHA512 165 166 bne,pt SIZE_T_CC, .Lhwunaligned_loop 167 .word 0xa5b4cf93 !for %f50,%f50,%f18 ! %f18=%f50 168 169 ba .Lhwfinish 170 nop 171.align 16 172.Lsoftware: 173 save %sp,-STACK_FRAME-128,%sp 174 and %i1,3,%i4 175 sllx %i2,7,%i2 176 andn %i1,3,%i1 177 sll %i4,3,%i4 178 add %i1,%i2,%i2 179 mov 32,%i5 180 sub %i5,%i4,%i5 181.Lpic: call .+8 182 add %o7,K512-.Lpic,%i3 183 184 ldx [%i0+0],%o0 185 ldx [%i0+8],%o1 186 ldx [%i0+16],%o2 187 ldx [%i0+24],%o3 188 ldx [%i0+32],%o4 189 ldx [%i0+40],%o5 190 ldx [%i0+48],%g1 191 ldx [%i0+56],%o7 192 193.Lloop: 194 ld [%i1+0],%l0 195 ld [%i1+4],%l1 196 ld [%i1+8],%l2 197 ld [%i1+12],%l3 198 ld [%i1+16],%l4 199 ld [%i1+20],%l5 200 ld [%i1+24],%l6 201 cmp %i4,0 202 ld [%i1+28],%l7 203 sllx %l1,%i4,%g5 ! Xload(0) 204 add %i4,32,%g3 205 sllx %l0,%g3,%g4 206 ld [%i1+32],%l0 207 srlx %l2,%i5,%l1 208 or %g4,%g5,%g5 209 or %l1,%g5,%g5 210 ld [%i1+36],%l1 211 add %o7,%g5,%g2 212 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+0] 213 srlx %o4,14,%o7 !! 0 214 xor %o5,%g1,%g5 215 sllx %o4,23,%g4 216 and %o4,%g5,%g5 217 srlx %o4,18,%g3 218 xor %g4,%o7,%o7 219 sllx %o4,46,%g4 220 xor %g3,%o7,%o7 221 srlx %o4,41,%g3 222 xor %g4,%o7,%o7 223 sllx %o4,50,%g4 224 xor %g3,%o7,%o7 225 xor %g1,%g5,%g5 ! Ch(e,f,g) 226 xor %g4,%o7,%g3 ! Sigma1(e) 227 228 srlx %o0,28,%o7 229 add %g5,%g2,%g2 230 ldx [%i3+0],%g5 ! K[0] 231 sllx %o0,25,%g4 232 add %g3,%g2,%g2 233 srlx %o0,34,%g3 234 xor %g4,%o7,%o7 235 sllx %o0,30,%g4 236 xor %g3,%o7,%o7 237 srlx %o0,39,%g3 238 xor %g4,%o7,%o7 239 sllx %o0,36,%g4 240 xor %g3,%o7,%o7 241 xor %g4,%o7,%o7 ! Sigma0(a) 242 243 or %o0,%o1,%g3 244 and %o0,%o1,%g4 245 and %o2,%g3,%g3 246 or %g3,%g4,%g4 ! Maj(a,b,c) 247 add %g5,%g2,%g2 ! +=K[0] 248 add %g4,%o7,%o7 249 250 add %g2,%o3,%o3 251 add %g2,%o7,%o7 252 sllx %l3,%i4,%g5 ! Xload(1) 253 add %i4,32,%g3 254 sllx %l2,%g3,%g4 255 ld [%i1+40],%l2 256 srlx %l4,%i5,%l3 257 or %g4,%g5,%g5 258 or %l3,%g5,%g5 259 ld [%i1+44],%l3 260 add %g1,%g5,%g2 261 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+8] 262 srlx %o3,14,%g1 !! 1 263 xor %o4,%o5,%g5 264 sllx %o3,23,%g4 265 and %o3,%g5,%g5 266 srlx %o3,18,%g3 267 xor %g4,%g1,%g1 268 sllx %o3,46,%g4 269 xor %g3,%g1,%g1 270 srlx %o3,41,%g3 271 xor %g4,%g1,%g1 272 sllx %o3,50,%g4 273 xor %g3,%g1,%g1 274 xor %o5,%g5,%g5 ! Ch(e,f,g) 275 xor %g4,%g1,%g3 ! Sigma1(e) 276 277 srlx %o7,28,%g1 278 add %g5,%g2,%g2 279 ldx [%i3+8],%g5 ! K[1] 280 sllx %o7,25,%g4 281 add %g3,%g2,%g2 282 srlx %o7,34,%g3 283 xor %g4,%g1,%g1 284 sllx %o7,30,%g4 285 xor %g3,%g1,%g1 286 srlx %o7,39,%g3 287 xor %g4,%g1,%g1 288 sllx %o7,36,%g4 289 xor %g3,%g1,%g1 290 xor %g4,%g1,%g1 ! Sigma0(a) 291 292 or %o7,%o0,%g3 293 and %o7,%o0,%g4 294 and %o1,%g3,%g3 295 or %g3,%g4,%g4 ! Maj(a,b,c) 296 add %g5,%g2,%g2 ! +=K[1] 297 add %g4,%g1,%g1 298 299 add %g2,%o2,%o2 300 add %g2,%g1,%g1 301 sllx %l5,%i4,%g5 ! Xload(2) 302 add %i4,32,%g3 303 sllx %l4,%g3,%g4 304 ld [%i1+48],%l4 305 srlx %l6,%i5,%l5 306 or %g4,%g5,%g5 307 or %l5,%g5,%g5 308 ld [%i1+52],%l5 309 add %o5,%g5,%g2 310 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+16] 311 srlx %o2,14,%o5 !! 2 312 xor %o3,%o4,%g5 313 sllx %o2,23,%g4 314 and %o2,%g5,%g5 315 srlx %o2,18,%g3 316 xor %g4,%o5,%o5 317 sllx %o2,46,%g4 318 xor %g3,%o5,%o5 319 srlx %o2,41,%g3 320 xor %g4,%o5,%o5 321 sllx %o2,50,%g4 322 xor %g3,%o5,%o5 323 xor %o4,%g5,%g5 ! Ch(e,f,g) 324 xor %g4,%o5,%g3 ! Sigma1(e) 325 326 srlx %g1,28,%o5 327 add %g5,%g2,%g2 328 ldx [%i3+16],%g5 ! K[2] 329 sllx %g1,25,%g4 330 add %g3,%g2,%g2 331 srlx %g1,34,%g3 332 xor %g4,%o5,%o5 333 sllx %g1,30,%g4 334 xor %g3,%o5,%o5 335 srlx %g1,39,%g3 336 xor %g4,%o5,%o5 337 sllx %g1,36,%g4 338 xor %g3,%o5,%o5 339 xor %g4,%o5,%o5 ! Sigma0(a) 340 341 or %g1,%o7,%g3 342 and %g1,%o7,%g4 343 and %o0,%g3,%g3 344 or %g3,%g4,%g4 ! Maj(a,b,c) 345 add %g5,%g2,%g2 ! +=K[2] 346 add %g4,%o5,%o5 347 348 add %g2,%o1,%o1 349 add %g2,%o5,%o5 350 sllx %l7,%i4,%g5 ! Xload(3) 351 add %i4,32,%g3 352 sllx %l6,%g3,%g4 353 ld [%i1+56],%l6 354 srlx %l0,%i5,%l7 355 or %g4,%g5,%g5 356 or %l7,%g5,%g5 357 ld [%i1+60],%l7 358 add %o4,%g5,%g2 359 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+24] 360 srlx %o1,14,%o4 !! 3 361 xor %o2,%o3,%g5 362 sllx %o1,23,%g4 363 and %o1,%g5,%g5 364 srlx %o1,18,%g3 365 xor %g4,%o4,%o4 366 sllx %o1,46,%g4 367 xor %g3,%o4,%o4 368 srlx %o1,41,%g3 369 xor %g4,%o4,%o4 370 sllx %o1,50,%g4 371 xor %g3,%o4,%o4 372 xor %o3,%g5,%g5 ! Ch(e,f,g) 373 xor %g4,%o4,%g3 ! Sigma1(e) 374 375 srlx %o5,28,%o4 376 add %g5,%g2,%g2 377 ldx [%i3+24],%g5 ! K[3] 378 sllx %o5,25,%g4 379 add %g3,%g2,%g2 380 srlx %o5,34,%g3 381 xor %g4,%o4,%o4 382 sllx %o5,30,%g4 383 xor %g3,%o4,%o4 384 srlx %o5,39,%g3 385 xor %g4,%o4,%o4 386 sllx %o5,36,%g4 387 xor %g3,%o4,%o4 388 xor %g4,%o4,%o4 ! Sigma0(a) 389 390 or %o5,%g1,%g3 391 and %o5,%g1,%g4 392 and %o7,%g3,%g3 393 or %g3,%g4,%g4 ! Maj(a,b,c) 394 add %g5,%g2,%g2 ! +=K[3] 395 add %g4,%o4,%o4 396 397 add %g2,%o0,%o0 398 add %g2,%o4,%o4 399 sllx %l1,%i4,%g5 ! Xload(4) 400 add %i4,32,%g3 401 sllx %l0,%g3,%g4 402 ld [%i1+64],%l0 403 srlx %l2,%i5,%l1 404 or %g4,%g5,%g5 405 or %l1,%g5,%g5 406 ld [%i1+68],%l1 407 add %o3,%g5,%g2 408 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+32] 409 srlx %o0,14,%o3 !! 4 410 xor %o1,%o2,%g5 411 sllx %o0,23,%g4 412 and %o0,%g5,%g5 413 srlx %o0,18,%g3 414 xor %g4,%o3,%o3 415 sllx %o0,46,%g4 416 xor %g3,%o3,%o3 417 srlx %o0,41,%g3 418 xor %g4,%o3,%o3 419 sllx %o0,50,%g4 420 xor %g3,%o3,%o3 421 xor %o2,%g5,%g5 ! Ch(e,f,g) 422 xor %g4,%o3,%g3 ! Sigma1(e) 423 424 srlx %o4,28,%o3 425 add %g5,%g2,%g2 426 ldx [%i3+32],%g5 ! K[4] 427 sllx %o4,25,%g4 428 add %g3,%g2,%g2 429 srlx %o4,34,%g3 430 xor %g4,%o3,%o3 431 sllx %o4,30,%g4 432 xor %g3,%o3,%o3 433 srlx %o4,39,%g3 434 xor %g4,%o3,%o3 435 sllx %o4,36,%g4 436 xor %g3,%o3,%o3 437 xor %g4,%o3,%o3 ! Sigma0(a) 438 439 or %o4,%o5,%g3 440 and %o4,%o5,%g4 441 and %g1,%g3,%g3 442 or %g3,%g4,%g4 ! Maj(a,b,c) 443 add %g5,%g2,%g2 ! +=K[4] 444 add %g4,%o3,%o3 445 446 add %g2,%o7,%o7 447 add %g2,%o3,%o3 448 sllx %l3,%i4,%g5 ! Xload(5) 449 add %i4,32,%g3 450 sllx %l2,%g3,%g4 451 ld [%i1+72],%l2 452 srlx %l4,%i5,%l3 453 or %g4,%g5,%g5 454 or %l3,%g5,%g5 455 ld [%i1+76],%l3 456 add %o2,%g5,%g2 457 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+40] 458 srlx %o7,14,%o2 !! 5 459 xor %o0,%o1,%g5 460 sllx %o7,23,%g4 461 and %o7,%g5,%g5 462 srlx %o7,18,%g3 463 xor %g4,%o2,%o2 464 sllx %o7,46,%g4 465 xor %g3,%o2,%o2 466 srlx %o7,41,%g3 467 xor %g4,%o2,%o2 468 sllx %o7,50,%g4 469 xor %g3,%o2,%o2 470 xor %o1,%g5,%g5 ! Ch(e,f,g) 471 xor %g4,%o2,%g3 ! Sigma1(e) 472 473 srlx %o3,28,%o2 474 add %g5,%g2,%g2 475 ldx [%i3+40],%g5 ! K[5] 476 sllx %o3,25,%g4 477 add %g3,%g2,%g2 478 srlx %o3,34,%g3 479 xor %g4,%o2,%o2 480 sllx %o3,30,%g4 481 xor %g3,%o2,%o2 482 srlx %o3,39,%g3 483 xor %g4,%o2,%o2 484 sllx %o3,36,%g4 485 xor %g3,%o2,%o2 486 xor %g4,%o2,%o2 ! Sigma0(a) 487 488 or %o3,%o4,%g3 489 and %o3,%o4,%g4 490 and %o5,%g3,%g3 491 or %g3,%g4,%g4 ! Maj(a,b,c) 492 add %g5,%g2,%g2 ! +=K[5] 493 add %g4,%o2,%o2 494 495 add %g2,%g1,%g1 496 add %g2,%o2,%o2 497 sllx %l5,%i4,%g5 ! Xload(6) 498 add %i4,32,%g3 499 sllx %l4,%g3,%g4 500 ld [%i1+80],%l4 501 srlx %l6,%i5,%l5 502 or %g4,%g5,%g5 503 or %l5,%g5,%g5 504 ld [%i1+84],%l5 505 add %o1,%g5,%g2 506 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+48] 507 srlx %g1,14,%o1 !! 6 508 xor %o7,%o0,%g5 509 sllx %g1,23,%g4 510 and %g1,%g5,%g5 511 srlx %g1,18,%g3 512 xor %g4,%o1,%o1 513 sllx %g1,46,%g4 514 xor %g3,%o1,%o1 515 srlx %g1,41,%g3 516 xor %g4,%o1,%o1 517 sllx %g1,50,%g4 518 xor %g3,%o1,%o1 519 xor %o0,%g5,%g5 ! Ch(e,f,g) 520 xor %g4,%o1,%g3 ! Sigma1(e) 521 522 srlx %o2,28,%o1 523 add %g5,%g2,%g2 524 ldx [%i3+48],%g5 ! K[6] 525 sllx %o2,25,%g4 526 add %g3,%g2,%g2 527 srlx %o2,34,%g3 528 xor %g4,%o1,%o1 529 sllx %o2,30,%g4 530 xor %g3,%o1,%o1 531 srlx %o2,39,%g3 532 xor %g4,%o1,%o1 533 sllx %o2,36,%g4 534 xor %g3,%o1,%o1 535 xor %g4,%o1,%o1 ! Sigma0(a) 536 537 or %o2,%o3,%g3 538 and %o2,%o3,%g4 539 and %o4,%g3,%g3 540 or %g3,%g4,%g4 ! Maj(a,b,c) 541 add %g5,%g2,%g2 ! +=K[6] 542 add %g4,%o1,%o1 543 544 add %g2,%o5,%o5 545 add %g2,%o1,%o1 546 sllx %l7,%i4,%g5 ! Xload(7) 547 add %i4,32,%g3 548 sllx %l6,%g3,%g4 549 ld [%i1+88],%l6 550 srlx %l0,%i5,%l7 551 or %g4,%g5,%g5 552 or %l7,%g5,%g5 553 ld [%i1+92],%l7 554 add %o0,%g5,%g2 555 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+56] 556 srlx %o5,14,%o0 !! 7 557 xor %g1,%o7,%g5 558 sllx %o5,23,%g4 559 and %o5,%g5,%g5 560 srlx %o5,18,%g3 561 xor %g4,%o0,%o0 562 sllx %o5,46,%g4 563 xor %g3,%o0,%o0 564 srlx %o5,41,%g3 565 xor %g4,%o0,%o0 566 sllx %o5,50,%g4 567 xor %g3,%o0,%o0 568 xor %o7,%g5,%g5 ! Ch(e,f,g) 569 xor %g4,%o0,%g3 ! Sigma1(e) 570 571 srlx %o1,28,%o0 572 add %g5,%g2,%g2 573 ldx [%i3+56],%g5 ! K[7] 574 sllx %o1,25,%g4 575 add %g3,%g2,%g2 576 srlx %o1,34,%g3 577 xor %g4,%o0,%o0 578 sllx %o1,30,%g4 579 xor %g3,%o0,%o0 580 srlx %o1,39,%g3 581 xor %g4,%o0,%o0 582 sllx %o1,36,%g4 583 xor %g3,%o0,%o0 584 xor %g4,%o0,%o0 ! Sigma0(a) 585 586 or %o1,%o2,%g3 587 and %o1,%o2,%g4 588 and %o3,%g3,%g3 589 or %g3,%g4,%g4 ! Maj(a,b,c) 590 add %g5,%g2,%g2 ! +=K[7] 591 add %g4,%o0,%o0 592 593 add %g2,%o4,%o4 594 add %g2,%o0,%o0 595 sllx %l1,%i4,%g5 ! Xload(8) 596 add %i4,32,%g3 597 sllx %l0,%g3,%g4 598 ld [%i1+96],%l0 599 srlx %l2,%i5,%l1 600 or %g4,%g5,%g5 601 or %l1,%g5,%g5 602 ld [%i1+100],%l1 603 add %o7,%g5,%g2 604 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+64] 605 srlx %o4,14,%o7 !! 8 606 xor %o5,%g1,%g5 607 sllx %o4,23,%g4 608 and %o4,%g5,%g5 609 srlx %o4,18,%g3 610 xor %g4,%o7,%o7 611 sllx %o4,46,%g4 612 xor %g3,%o7,%o7 613 srlx %o4,41,%g3 614 xor %g4,%o7,%o7 615 sllx %o4,50,%g4 616 xor %g3,%o7,%o7 617 xor %g1,%g5,%g5 ! Ch(e,f,g) 618 xor %g4,%o7,%g3 ! Sigma1(e) 619 620 srlx %o0,28,%o7 621 add %g5,%g2,%g2 622 ldx [%i3+64],%g5 ! K[8] 623 sllx %o0,25,%g4 624 add %g3,%g2,%g2 625 srlx %o0,34,%g3 626 xor %g4,%o7,%o7 627 sllx %o0,30,%g4 628 xor %g3,%o7,%o7 629 srlx %o0,39,%g3 630 xor %g4,%o7,%o7 631 sllx %o0,36,%g4 632 xor %g3,%o7,%o7 633 xor %g4,%o7,%o7 ! Sigma0(a) 634 635 or %o0,%o1,%g3 636 and %o0,%o1,%g4 637 and %o2,%g3,%g3 638 or %g3,%g4,%g4 ! Maj(a,b,c) 639 add %g5,%g2,%g2 ! +=K[8] 640 add %g4,%o7,%o7 641 642 add %g2,%o3,%o3 643 add %g2,%o7,%o7 644 sllx %l3,%i4,%g5 ! Xload(9) 645 add %i4,32,%g3 646 sllx %l2,%g3,%g4 647 ld [%i1+104],%l2 648 srlx %l4,%i5,%l3 649 or %g4,%g5,%g5 650 or %l3,%g5,%g5 651 ld [%i1+108],%l3 652 add %g1,%g5,%g2 653 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+72] 654 srlx %o3,14,%g1 !! 9 655 xor %o4,%o5,%g5 656 sllx %o3,23,%g4 657 and %o3,%g5,%g5 658 srlx %o3,18,%g3 659 xor %g4,%g1,%g1 660 sllx %o3,46,%g4 661 xor %g3,%g1,%g1 662 srlx %o3,41,%g3 663 xor %g4,%g1,%g1 664 sllx %o3,50,%g4 665 xor %g3,%g1,%g1 666 xor %o5,%g5,%g5 ! Ch(e,f,g) 667 xor %g4,%g1,%g3 ! Sigma1(e) 668 669 srlx %o7,28,%g1 670 add %g5,%g2,%g2 671 ldx [%i3+72],%g5 ! K[9] 672 sllx %o7,25,%g4 673 add %g3,%g2,%g2 674 srlx %o7,34,%g3 675 xor %g4,%g1,%g1 676 sllx %o7,30,%g4 677 xor %g3,%g1,%g1 678 srlx %o7,39,%g3 679 xor %g4,%g1,%g1 680 sllx %o7,36,%g4 681 xor %g3,%g1,%g1 682 xor %g4,%g1,%g1 ! Sigma0(a) 683 684 or %o7,%o0,%g3 685 and %o7,%o0,%g4 686 and %o1,%g3,%g3 687 or %g3,%g4,%g4 ! Maj(a,b,c) 688 add %g5,%g2,%g2 ! +=K[9] 689 add %g4,%g1,%g1 690 691 add %g2,%o2,%o2 692 add %g2,%g1,%g1 693 sllx %l5,%i4,%g5 ! Xload(10) 694 add %i4,32,%g3 695 sllx %l4,%g3,%g4 696 ld [%i1+112],%l4 697 srlx %l6,%i5,%l5 698 or %g4,%g5,%g5 699 or %l5,%g5,%g5 700 ld [%i1+116],%l5 701 add %o5,%g5,%g2 702 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+80] 703 srlx %o2,14,%o5 !! 10 704 xor %o3,%o4,%g5 705 sllx %o2,23,%g4 706 and %o2,%g5,%g5 707 srlx %o2,18,%g3 708 xor %g4,%o5,%o5 709 sllx %o2,46,%g4 710 xor %g3,%o5,%o5 711 srlx %o2,41,%g3 712 xor %g4,%o5,%o5 713 sllx %o2,50,%g4 714 xor %g3,%o5,%o5 715 xor %o4,%g5,%g5 ! Ch(e,f,g) 716 xor %g4,%o5,%g3 ! Sigma1(e) 717 718 srlx %g1,28,%o5 719 add %g5,%g2,%g2 720 ldx [%i3+80],%g5 ! K[10] 721 sllx %g1,25,%g4 722 add %g3,%g2,%g2 723 srlx %g1,34,%g3 724 xor %g4,%o5,%o5 725 sllx %g1,30,%g4 726 xor %g3,%o5,%o5 727 srlx %g1,39,%g3 728 xor %g4,%o5,%o5 729 sllx %g1,36,%g4 730 xor %g3,%o5,%o5 731 xor %g4,%o5,%o5 ! Sigma0(a) 732 733 or %g1,%o7,%g3 734 and %g1,%o7,%g4 735 and %o0,%g3,%g3 736 or %g3,%g4,%g4 ! Maj(a,b,c) 737 add %g5,%g2,%g2 ! +=K[10] 738 add %g4,%o5,%o5 739 740 add %g2,%o1,%o1 741 add %g2,%o5,%o5 742 sllx %l7,%i4,%g5 ! Xload(11) 743 add %i4,32,%g3 744 sllx %l6,%g3,%g4 745 ld [%i1+120],%l6 746 srlx %l0,%i5,%l7 747 or %g4,%g5,%g5 748 or %l7,%g5,%g5 749 ld [%i1+124],%l7 750 add %o4,%g5,%g2 751 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+88] 752 srlx %o1,14,%o4 !! 11 753 xor %o2,%o3,%g5 754 sllx %o1,23,%g4 755 and %o1,%g5,%g5 756 srlx %o1,18,%g3 757 xor %g4,%o4,%o4 758 sllx %o1,46,%g4 759 xor %g3,%o4,%o4 760 srlx %o1,41,%g3 761 xor %g4,%o4,%o4 762 sllx %o1,50,%g4 763 xor %g3,%o4,%o4 764 xor %o3,%g5,%g5 ! Ch(e,f,g) 765 xor %g4,%o4,%g3 ! Sigma1(e) 766 767 srlx %o5,28,%o4 768 add %g5,%g2,%g2 769 ldx [%i3+88],%g5 ! K[11] 770 sllx %o5,25,%g4 771 add %g3,%g2,%g2 772 srlx %o5,34,%g3 773 xor %g4,%o4,%o4 774 sllx %o5,30,%g4 775 xor %g3,%o4,%o4 776 srlx %o5,39,%g3 777 xor %g4,%o4,%o4 778 sllx %o5,36,%g4 779 xor %g3,%o4,%o4 780 xor %g4,%o4,%o4 ! Sigma0(a) 781 782 or %o5,%g1,%g3 783 and %o5,%g1,%g4 784 and %o7,%g3,%g3 785 or %g3,%g4,%g4 ! Maj(a,b,c) 786 add %g5,%g2,%g2 ! +=K[11] 787 add %g4,%o4,%o4 788 789 add %g2,%o0,%o0 790 add %g2,%o4,%o4 791 sllx %l1,%i4,%g5 ! Xload(12) 792 add %i4,32,%g3 793 sllx %l0,%g3,%g4 794 795 srlx %l2,%i5,%l1 796 or %g4,%g5,%g5 797 or %l1,%g5,%g5 798 799 add %o3,%g5,%g2 800 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+96] 801 bnz,a,pn %icc,.+8 802 ld [%i1+128],%l0 803 srlx %o0,14,%o3 !! 12 804 xor %o1,%o2,%g5 805 sllx %o0,23,%g4 806 and %o0,%g5,%g5 807 srlx %o0,18,%g3 808 xor %g4,%o3,%o3 809 sllx %o0,46,%g4 810 xor %g3,%o3,%o3 811 srlx %o0,41,%g3 812 xor %g4,%o3,%o3 813 sllx %o0,50,%g4 814 xor %g3,%o3,%o3 815 xor %o2,%g5,%g5 ! Ch(e,f,g) 816 xor %g4,%o3,%g3 ! Sigma1(e) 817 818 srlx %o4,28,%o3 819 add %g5,%g2,%g2 820 ldx [%i3+96],%g5 ! K[12] 821 sllx %o4,25,%g4 822 add %g3,%g2,%g2 823 srlx %o4,34,%g3 824 xor %g4,%o3,%o3 825 sllx %o4,30,%g4 826 xor %g3,%o3,%o3 827 srlx %o4,39,%g3 828 xor %g4,%o3,%o3 829 sllx %o4,36,%g4 830 xor %g3,%o3,%o3 831 xor %g4,%o3,%o3 ! Sigma0(a) 832 833 or %o4,%o5,%g3 834 and %o4,%o5,%g4 835 and %g1,%g3,%g3 836 or %g3,%g4,%g4 ! Maj(a,b,c) 837 add %g5,%g2,%g2 ! +=K[12] 838 add %g4,%o3,%o3 839 840 add %g2,%o7,%o7 841 add %g2,%o3,%o3 842 sllx %l3,%i4,%g5 ! Xload(13) 843 add %i4,32,%g3 844 sllx %l2,%g3,%g4 845 846 srlx %l4,%i5,%l3 847 or %g4,%g5,%g5 848 or %l3,%g5,%g5 849 850 add %o2,%g5,%g2 851 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+104] 852 srlx %o7,14,%o2 !! 13 853 xor %o0,%o1,%g5 854 sllx %o7,23,%g4 855 and %o7,%g5,%g5 856 srlx %o7,18,%g3 857 xor %g4,%o2,%o2 858 sllx %o7,46,%g4 859 xor %g3,%o2,%o2 860 srlx %o7,41,%g3 861 xor %g4,%o2,%o2 862 sllx %o7,50,%g4 863 xor %g3,%o2,%o2 864 xor %o1,%g5,%g5 ! Ch(e,f,g) 865 xor %g4,%o2,%g3 ! Sigma1(e) 866 867 srlx %o3,28,%o2 868 add %g5,%g2,%g2 869 ldx [%i3+104],%g5 ! K[13] 870 sllx %o3,25,%g4 871 add %g3,%g2,%g2 872 srlx %o3,34,%g3 873 xor %g4,%o2,%o2 874 sllx %o3,30,%g4 875 xor %g3,%o2,%o2 876 srlx %o3,39,%g3 877 xor %g4,%o2,%o2 878 sllx %o3,36,%g4 879 xor %g3,%o2,%o2 880 xor %g4,%o2,%o2 ! Sigma0(a) 881 882 or %o3,%o4,%g3 883 and %o3,%o4,%g4 884 and %o5,%g3,%g3 885 or %g3,%g4,%g4 ! Maj(a,b,c) 886 add %g5,%g2,%g2 ! +=K[13] 887 add %g4,%o2,%o2 888 889 add %g2,%g1,%g1 890 add %g2,%o2,%o2 891 sllx %l5,%i4,%g5 ! Xload(14) 892 add %i4,32,%g3 893 sllx %l4,%g3,%g4 894 895 srlx %l6,%i5,%l5 896 or %g4,%g5,%g5 897 or %l5,%g5,%g5 898 899 add %o1,%g5,%g2 900 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+112] 901 srlx %g1,14,%o1 !! 14 902 xor %o7,%o0,%g5 903 sllx %g1,23,%g4 904 and %g1,%g5,%g5 905 srlx %g1,18,%g3 906 xor %g4,%o1,%o1 907 sllx %g1,46,%g4 908 xor %g3,%o1,%o1 909 srlx %g1,41,%g3 910 xor %g4,%o1,%o1 911 sllx %g1,50,%g4 912 xor %g3,%o1,%o1 913 xor %o0,%g5,%g5 ! Ch(e,f,g) 914 xor %g4,%o1,%g3 ! Sigma1(e) 915 916 srlx %o2,28,%o1 917 add %g5,%g2,%g2 918 ldx [%i3+112],%g5 ! K[14] 919 sllx %o2,25,%g4 920 add %g3,%g2,%g2 921 srlx %o2,34,%g3 922 xor %g4,%o1,%o1 923 sllx %o2,30,%g4 924 xor %g3,%o1,%o1 925 srlx %o2,39,%g3 926 xor %g4,%o1,%o1 927 sllx %o2,36,%g4 928 xor %g3,%o1,%o1 929 xor %g4,%o1,%o1 ! Sigma0(a) 930 931 or %o2,%o3,%g3 932 and %o2,%o3,%g4 933 and %o4,%g3,%g3 934 or %g3,%g4,%g4 ! Maj(a,b,c) 935 add %g5,%g2,%g2 ! +=K[14] 936 add %g4,%o1,%o1 937 938 add %g2,%o5,%o5 939 add %g2,%o1,%o1 940 ld [%sp+STACK_BIAS+STACK_FRAME+8],%l2 941 sllx %l7,%i4,%g5 ! Xload(15) 942 add %i4,32,%g3 943 ld [%sp+STACK_BIAS+STACK_FRAME+12],%l3 944 sllx %l6,%g3,%g4 945 ld [%sp+STACK_BIAS+STACK_FRAME+72],%l4 946 srlx %l0,%i5,%l7 947 or %g4,%g5,%g5 948 ld [%sp+STACK_BIAS+STACK_FRAME+76],%l5 949 or %l7,%g5,%g5 950 ld [%sp+STACK_BIAS+STACK_FRAME+112],%l6 951 add %o0,%g5,%g2 952 stx %g5,[%sp+STACK_BIAS+STACK_FRAME+120] 953 ld [%sp+STACK_BIAS+STACK_FRAME+116],%l7 954 ld [%sp+STACK_BIAS+STACK_FRAME+0],%l0 955 ld [%sp+STACK_BIAS+STACK_FRAME+4],%l1 956 srlx %o5,14,%o0 !! 15 957 xor %g1,%o7,%g5 958 sllx %o5,23,%g4 959 and %o5,%g5,%g5 960 srlx %o5,18,%g3 961 xor %g4,%o0,%o0 962 sllx %o5,46,%g4 963 xor %g3,%o0,%o0 964 srlx %o5,41,%g3 965 xor %g4,%o0,%o0 966 sllx %o5,50,%g4 967 xor %g3,%o0,%o0 968 xor %o7,%g5,%g5 ! Ch(e,f,g) 969 xor %g4,%o0,%g3 ! Sigma1(e) 970 971 srlx %o1,28,%o0 972 add %g5,%g2,%g2 973 ldx [%i3+120],%g5 ! K[15] 974 sllx %o1,25,%g4 975 add %g3,%g2,%g2 976 srlx %o1,34,%g3 977 xor %g4,%o0,%o0 978 sllx %o1,30,%g4 979 xor %g3,%o0,%o0 980 srlx %o1,39,%g3 981 xor %g4,%o0,%o0 982 sllx %o1,36,%g4 983 xor %g3,%o0,%o0 984 xor %g4,%o0,%o0 ! Sigma0(a) 985 986 or %o1,%o2,%g3 987 and %o1,%o2,%g4 988 and %o3,%g3,%g3 989 or %g3,%g4,%g4 ! Maj(a,b,c) 990 add %g5,%g2,%g2 ! +=K[15] 991 add %g4,%o0,%o0 992 993 add %g2,%o4,%o4 994 add %g2,%o0,%o0 995.L16_xx: 996 sllx %l2,32,%g3 !! Xupdate(16) 997 or %l3,%g3,%g3 998 999 srlx %g3,7,%g2 1000 ld [%sp+STACK_BIAS+STACK_FRAME+16],%l2 1001 sllx %g3,56,%g4 1002 ld [%sp+STACK_BIAS+STACK_FRAME+20],%l3 1003 srlx %g3,1,%g3 1004 xor %g4,%g2,%g2 1005 sllx %g4,7,%g4 1006 xor %g3,%g2,%g2 1007 srlx %g3,7,%g3 1008 xor %g4,%g2,%g2 1009 sllx %l6,32,%g5 1010 xor %g3,%g2,%g2 ! sigma0(X[16+1]) 1011 or %l7,%g5,%g5 1012 1013 srlx %g5,6,%g4 1014 ld [%sp+STACK_BIAS+STACK_FRAME+120],%l6 1015 sllx %g5,3,%g3 1016 ld [%sp+STACK_BIAS+STACK_FRAME+124],%l7 1017 srlx %g5,19,%g5 1018 xor %g3,%g4,%g4 1019 sllx %g3,42,%g3 1020 xor %g5,%g4,%g4 1021 srlx %g5,42,%g5 1022 xor %g3,%g4,%g4 1023 sllx %l4,32,%g3 1024 xor %g5,%g4,%g4 ! sigma1(X[16+14]) 1025 ld [%sp+STACK_BIAS+STACK_FRAME+80],%l4 1026 or %l5,%g3,%g3 1027 ld [%sp+STACK_BIAS+STACK_FRAME+84],%l5 1028 1029 sllx %l0,32,%g5 1030 add %g4,%g2,%g2 1031 ld [%sp+STACK_BIAS+STACK_FRAME+8],%l0 1032 or %l1,%g5,%g5 1033 add %g3,%g2,%g2 ! +=X[16+9] 1034 ld [%sp+STACK_BIAS+STACK_FRAME+12],%l1 1035 add %g5,%g2,%g2 ! +=X[16] 1036 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+0] 1037 add %o7,%g2,%g2 1038 srlx %o4,14,%o7 !! 16 1039 xor %o5,%g1,%g5 1040 sllx %o4,23,%g4 1041 and %o4,%g5,%g5 1042 srlx %o4,18,%g3 1043 xor %g4,%o7,%o7 1044 sllx %o4,46,%g4 1045 xor %g3,%o7,%o7 1046 srlx %o4,41,%g3 1047 xor %g4,%o7,%o7 1048 sllx %o4,50,%g4 1049 xor %g3,%o7,%o7 1050 xor %g1,%g5,%g5 ! Ch(e,f,g) 1051 xor %g4,%o7,%g3 ! Sigma1(e) 1052 1053 srlx %o0,28,%o7 1054 add %g5,%g2,%g2 1055 ldx [%i3+128],%g5 ! K[16] 1056 sllx %o0,25,%g4 1057 add %g3,%g2,%g2 1058 srlx %o0,34,%g3 1059 xor %g4,%o7,%o7 1060 sllx %o0,30,%g4 1061 xor %g3,%o7,%o7 1062 srlx %o0,39,%g3 1063 xor %g4,%o7,%o7 1064 sllx %o0,36,%g4 1065 xor %g3,%o7,%o7 1066 xor %g4,%o7,%o7 ! Sigma0(a) 1067 1068 or %o0,%o1,%g3 1069 and %o0,%o1,%g4 1070 and %o2,%g3,%g3 1071 or %g3,%g4,%g4 ! Maj(a,b,c) 1072 add %g5,%g2,%g2 ! +=K[16] 1073 add %g4,%o7,%o7 1074 1075 add %g2,%o3,%o3 1076 add %g2,%o7,%o7 1077 sllx %l2,32,%g3 !! Xupdate(17) 1078 or %l3,%g3,%g3 1079 1080 srlx %g3,7,%g2 1081 ld [%sp+STACK_BIAS+STACK_FRAME+24],%l2 1082 sllx %g3,56,%g4 1083 ld [%sp+STACK_BIAS+STACK_FRAME+28],%l3 1084 srlx %g3,1,%g3 1085 xor %g4,%g2,%g2 1086 sllx %g4,7,%g4 1087 xor %g3,%g2,%g2 1088 srlx %g3,7,%g3 1089 xor %g4,%g2,%g2 1090 sllx %l6,32,%g5 1091 xor %g3,%g2,%g2 ! sigma0(X[17+1]) 1092 or %l7,%g5,%g5 1093 1094 srlx %g5,6,%g4 1095 ld [%sp+STACK_BIAS+STACK_FRAME+0],%l6 1096 sllx %g5,3,%g3 1097 ld [%sp+STACK_BIAS+STACK_FRAME+4],%l7 1098 srlx %g5,19,%g5 1099 xor %g3,%g4,%g4 1100 sllx %g3,42,%g3 1101 xor %g5,%g4,%g4 1102 srlx %g5,42,%g5 1103 xor %g3,%g4,%g4 1104 sllx %l4,32,%g3 1105 xor %g5,%g4,%g4 ! sigma1(X[17+14]) 1106 ld [%sp+STACK_BIAS+STACK_FRAME+88],%l4 1107 or %l5,%g3,%g3 1108 ld [%sp+STACK_BIAS+STACK_FRAME+92],%l5 1109 1110 sllx %l0,32,%g5 1111 add %g4,%g2,%g2 1112 ld [%sp+STACK_BIAS+STACK_FRAME+16],%l0 1113 or %l1,%g5,%g5 1114 add %g3,%g2,%g2 ! +=X[17+9] 1115 ld [%sp+STACK_BIAS+STACK_FRAME+20],%l1 1116 add %g5,%g2,%g2 ! +=X[17] 1117 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+8] 1118 add %g1,%g2,%g2 1119 srlx %o3,14,%g1 !! 17 1120 xor %o4,%o5,%g5 1121 sllx %o3,23,%g4 1122 and %o3,%g5,%g5 1123 srlx %o3,18,%g3 1124 xor %g4,%g1,%g1 1125 sllx %o3,46,%g4 1126 xor %g3,%g1,%g1 1127 srlx %o3,41,%g3 1128 xor %g4,%g1,%g1 1129 sllx %o3,50,%g4 1130 xor %g3,%g1,%g1 1131 xor %o5,%g5,%g5 ! Ch(e,f,g) 1132 xor %g4,%g1,%g3 ! Sigma1(e) 1133 1134 srlx %o7,28,%g1 1135 add %g5,%g2,%g2 1136 ldx [%i3+136],%g5 ! K[17] 1137 sllx %o7,25,%g4 1138 add %g3,%g2,%g2 1139 srlx %o7,34,%g3 1140 xor %g4,%g1,%g1 1141 sllx %o7,30,%g4 1142 xor %g3,%g1,%g1 1143 srlx %o7,39,%g3 1144 xor %g4,%g1,%g1 1145 sllx %o7,36,%g4 1146 xor %g3,%g1,%g1 1147 xor %g4,%g1,%g1 ! Sigma0(a) 1148 1149 or %o7,%o0,%g3 1150 and %o7,%o0,%g4 1151 and %o1,%g3,%g3 1152 or %g3,%g4,%g4 ! Maj(a,b,c) 1153 add %g5,%g2,%g2 ! +=K[17] 1154 add %g4,%g1,%g1 1155 1156 add %g2,%o2,%o2 1157 add %g2,%g1,%g1 1158 sllx %l2,32,%g3 !! Xupdate(18) 1159 or %l3,%g3,%g3 1160 1161 srlx %g3,7,%g2 1162 ld [%sp+STACK_BIAS+STACK_FRAME+32],%l2 1163 sllx %g3,56,%g4 1164 ld [%sp+STACK_BIAS+STACK_FRAME+36],%l3 1165 srlx %g3,1,%g3 1166 xor %g4,%g2,%g2 1167 sllx %g4,7,%g4 1168 xor %g3,%g2,%g2 1169 srlx %g3,7,%g3 1170 xor %g4,%g2,%g2 1171 sllx %l6,32,%g5 1172 xor %g3,%g2,%g2 ! sigma0(X[18+1]) 1173 or %l7,%g5,%g5 1174 1175 srlx %g5,6,%g4 1176 ld [%sp+STACK_BIAS+STACK_FRAME+8],%l6 1177 sllx %g5,3,%g3 1178 ld [%sp+STACK_BIAS+STACK_FRAME+12],%l7 1179 srlx %g5,19,%g5 1180 xor %g3,%g4,%g4 1181 sllx %g3,42,%g3 1182 xor %g5,%g4,%g4 1183 srlx %g5,42,%g5 1184 xor %g3,%g4,%g4 1185 sllx %l4,32,%g3 1186 xor %g5,%g4,%g4 ! sigma1(X[18+14]) 1187 ld [%sp+STACK_BIAS+STACK_FRAME+96],%l4 1188 or %l5,%g3,%g3 1189 ld [%sp+STACK_BIAS+STACK_FRAME+100],%l5 1190 1191 sllx %l0,32,%g5 1192 add %g4,%g2,%g2 1193 ld [%sp+STACK_BIAS+STACK_FRAME+24],%l0 1194 or %l1,%g5,%g5 1195 add %g3,%g2,%g2 ! +=X[18+9] 1196 ld [%sp+STACK_BIAS+STACK_FRAME+28],%l1 1197 add %g5,%g2,%g2 ! +=X[18] 1198 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+16] 1199 add %o5,%g2,%g2 1200 srlx %o2,14,%o5 !! 18 1201 xor %o3,%o4,%g5 1202 sllx %o2,23,%g4 1203 and %o2,%g5,%g5 1204 srlx %o2,18,%g3 1205 xor %g4,%o5,%o5 1206 sllx %o2,46,%g4 1207 xor %g3,%o5,%o5 1208 srlx %o2,41,%g3 1209 xor %g4,%o5,%o5 1210 sllx %o2,50,%g4 1211 xor %g3,%o5,%o5 1212 xor %o4,%g5,%g5 ! Ch(e,f,g) 1213 xor %g4,%o5,%g3 ! Sigma1(e) 1214 1215 srlx %g1,28,%o5 1216 add %g5,%g2,%g2 1217 ldx [%i3+144],%g5 ! K[18] 1218 sllx %g1,25,%g4 1219 add %g3,%g2,%g2 1220 srlx %g1,34,%g3 1221 xor %g4,%o5,%o5 1222 sllx %g1,30,%g4 1223 xor %g3,%o5,%o5 1224 srlx %g1,39,%g3 1225 xor %g4,%o5,%o5 1226 sllx %g1,36,%g4 1227 xor %g3,%o5,%o5 1228 xor %g4,%o5,%o5 ! Sigma0(a) 1229 1230 or %g1,%o7,%g3 1231 and %g1,%o7,%g4 1232 and %o0,%g3,%g3 1233 or %g3,%g4,%g4 ! Maj(a,b,c) 1234 add %g5,%g2,%g2 ! +=K[18] 1235 add %g4,%o5,%o5 1236 1237 add %g2,%o1,%o1 1238 add %g2,%o5,%o5 1239 sllx %l2,32,%g3 !! Xupdate(19) 1240 or %l3,%g3,%g3 1241 1242 srlx %g3,7,%g2 1243 ld [%sp+STACK_BIAS+STACK_FRAME+40],%l2 1244 sllx %g3,56,%g4 1245 ld [%sp+STACK_BIAS+STACK_FRAME+44],%l3 1246 srlx %g3,1,%g3 1247 xor %g4,%g2,%g2 1248 sllx %g4,7,%g4 1249 xor %g3,%g2,%g2 1250 srlx %g3,7,%g3 1251 xor %g4,%g2,%g2 1252 sllx %l6,32,%g5 1253 xor %g3,%g2,%g2 ! sigma0(X[19+1]) 1254 or %l7,%g5,%g5 1255 1256 srlx %g5,6,%g4 1257 ld [%sp+STACK_BIAS+STACK_FRAME+16],%l6 1258 sllx %g5,3,%g3 1259 ld [%sp+STACK_BIAS+STACK_FRAME+20],%l7 1260 srlx %g5,19,%g5 1261 xor %g3,%g4,%g4 1262 sllx %g3,42,%g3 1263 xor %g5,%g4,%g4 1264 srlx %g5,42,%g5 1265 xor %g3,%g4,%g4 1266 sllx %l4,32,%g3 1267 xor %g5,%g4,%g4 ! sigma1(X[19+14]) 1268 ld [%sp+STACK_BIAS+STACK_FRAME+104],%l4 1269 or %l5,%g3,%g3 1270 ld [%sp+STACK_BIAS+STACK_FRAME+108],%l5 1271 1272 sllx %l0,32,%g5 1273 add %g4,%g2,%g2 1274 ld [%sp+STACK_BIAS+STACK_FRAME+32],%l0 1275 or %l1,%g5,%g5 1276 add %g3,%g2,%g2 ! +=X[19+9] 1277 ld [%sp+STACK_BIAS+STACK_FRAME+36],%l1 1278 add %g5,%g2,%g2 ! +=X[19] 1279 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+24] 1280 add %o4,%g2,%g2 1281 srlx %o1,14,%o4 !! 19 1282 xor %o2,%o3,%g5 1283 sllx %o1,23,%g4 1284 and %o1,%g5,%g5 1285 srlx %o1,18,%g3 1286 xor %g4,%o4,%o4 1287 sllx %o1,46,%g4 1288 xor %g3,%o4,%o4 1289 srlx %o1,41,%g3 1290 xor %g4,%o4,%o4 1291 sllx %o1,50,%g4 1292 xor %g3,%o4,%o4 1293 xor %o3,%g5,%g5 ! Ch(e,f,g) 1294 xor %g4,%o4,%g3 ! Sigma1(e) 1295 1296 srlx %o5,28,%o4 1297 add %g5,%g2,%g2 1298 ldx [%i3+152],%g5 ! K[19] 1299 sllx %o5,25,%g4 1300 add %g3,%g2,%g2 1301 srlx %o5,34,%g3 1302 xor %g4,%o4,%o4 1303 sllx %o5,30,%g4 1304 xor %g3,%o4,%o4 1305 srlx %o5,39,%g3 1306 xor %g4,%o4,%o4 1307 sllx %o5,36,%g4 1308 xor %g3,%o4,%o4 1309 xor %g4,%o4,%o4 ! Sigma0(a) 1310 1311 or %o5,%g1,%g3 1312 and %o5,%g1,%g4 1313 and %o7,%g3,%g3 1314 or %g3,%g4,%g4 ! Maj(a,b,c) 1315 add %g5,%g2,%g2 ! +=K[19] 1316 add %g4,%o4,%o4 1317 1318 add %g2,%o0,%o0 1319 add %g2,%o4,%o4 1320 sllx %l2,32,%g3 !! Xupdate(20) 1321 or %l3,%g3,%g3 1322 1323 srlx %g3,7,%g2 1324 ld [%sp+STACK_BIAS+STACK_FRAME+48],%l2 1325 sllx %g3,56,%g4 1326 ld [%sp+STACK_BIAS+STACK_FRAME+52],%l3 1327 srlx %g3,1,%g3 1328 xor %g4,%g2,%g2 1329 sllx %g4,7,%g4 1330 xor %g3,%g2,%g2 1331 srlx %g3,7,%g3 1332 xor %g4,%g2,%g2 1333 sllx %l6,32,%g5 1334 xor %g3,%g2,%g2 ! sigma0(X[20+1]) 1335 or %l7,%g5,%g5 1336 1337 srlx %g5,6,%g4 1338 ld [%sp+STACK_BIAS+STACK_FRAME+24],%l6 1339 sllx %g5,3,%g3 1340 ld [%sp+STACK_BIAS+STACK_FRAME+28],%l7 1341 srlx %g5,19,%g5 1342 xor %g3,%g4,%g4 1343 sllx %g3,42,%g3 1344 xor %g5,%g4,%g4 1345 srlx %g5,42,%g5 1346 xor %g3,%g4,%g4 1347 sllx %l4,32,%g3 1348 xor %g5,%g4,%g4 ! sigma1(X[20+14]) 1349 ld [%sp+STACK_BIAS+STACK_FRAME+112],%l4 1350 or %l5,%g3,%g3 1351 ld [%sp+STACK_BIAS+STACK_FRAME+116],%l5 1352 1353 sllx %l0,32,%g5 1354 add %g4,%g2,%g2 1355 ld [%sp+STACK_BIAS+STACK_FRAME+40],%l0 1356 or %l1,%g5,%g5 1357 add %g3,%g2,%g2 ! +=X[20+9] 1358 ld [%sp+STACK_BIAS+STACK_FRAME+44],%l1 1359 add %g5,%g2,%g2 ! +=X[20] 1360 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+32] 1361 add %o3,%g2,%g2 1362 srlx %o0,14,%o3 !! 20 1363 xor %o1,%o2,%g5 1364 sllx %o0,23,%g4 1365 and %o0,%g5,%g5 1366 srlx %o0,18,%g3 1367 xor %g4,%o3,%o3 1368 sllx %o0,46,%g4 1369 xor %g3,%o3,%o3 1370 srlx %o0,41,%g3 1371 xor %g4,%o3,%o3 1372 sllx %o0,50,%g4 1373 xor %g3,%o3,%o3 1374 xor %o2,%g5,%g5 ! Ch(e,f,g) 1375 xor %g4,%o3,%g3 ! Sigma1(e) 1376 1377 srlx %o4,28,%o3 1378 add %g5,%g2,%g2 1379 ldx [%i3+160],%g5 ! K[20] 1380 sllx %o4,25,%g4 1381 add %g3,%g2,%g2 1382 srlx %o4,34,%g3 1383 xor %g4,%o3,%o3 1384 sllx %o4,30,%g4 1385 xor %g3,%o3,%o3 1386 srlx %o4,39,%g3 1387 xor %g4,%o3,%o3 1388 sllx %o4,36,%g4 1389 xor %g3,%o3,%o3 1390 xor %g4,%o3,%o3 ! Sigma0(a) 1391 1392 or %o4,%o5,%g3 1393 and %o4,%o5,%g4 1394 and %g1,%g3,%g3 1395 or %g3,%g4,%g4 ! Maj(a,b,c) 1396 add %g5,%g2,%g2 ! +=K[20] 1397 add %g4,%o3,%o3 1398 1399 add %g2,%o7,%o7 1400 add %g2,%o3,%o3 1401 sllx %l2,32,%g3 !! Xupdate(21) 1402 or %l3,%g3,%g3 1403 1404 srlx %g3,7,%g2 1405 ld [%sp+STACK_BIAS+STACK_FRAME+56],%l2 1406 sllx %g3,56,%g4 1407 ld [%sp+STACK_BIAS+STACK_FRAME+60],%l3 1408 srlx %g3,1,%g3 1409 xor %g4,%g2,%g2 1410 sllx %g4,7,%g4 1411 xor %g3,%g2,%g2 1412 srlx %g3,7,%g3 1413 xor %g4,%g2,%g2 1414 sllx %l6,32,%g5 1415 xor %g3,%g2,%g2 ! sigma0(X[21+1]) 1416 or %l7,%g5,%g5 1417 1418 srlx %g5,6,%g4 1419 ld [%sp+STACK_BIAS+STACK_FRAME+32],%l6 1420 sllx %g5,3,%g3 1421 ld [%sp+STACK_BIAS+STACK_FRAME+36],%l7 1422 srlx %g5,19,%g5 1423 xor %g3,%g4,%g4 1424 sllx %g3,42,%g3 1425 xor %g5,%g4,%g4 1426 srlx %g5,42,%g5 1427 xor %g3,%g4,%g4 1428 sllx %l4,32,%g3 1429 xor %g5,%g4,%g4 ! sigma1(X[21+14]) 1430 ld [%sp+STACK_BIAS+STACK_FRAME+120],%l4 1431 or %l5,%g3,%g3 1432 ld [%sp+STACK_BIAS+STACK_FRAME+124],%l5 1433 1434 sllx %l0,32,%g5 1435 add %g4,%g2,%g2 1436 ld [%sp+STACK_BIAS+STACK_FRAME+48],%l0 1437 or %l1,%g5,%g5 1438 add %g3,%g2,%g2 ! +=X[21+9] 1439 ld [%sp+STACK_BIAS+STACK_FRAME+52],%l1 1440 add %g5,%g2,%g2 ! +=X[21] 1441 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+40] 1442 add %o2,%g2,%g2 1443 srlx %o7,14,%o2 !! 21 1444 xor %o0,%o1,%g5 1445 sllx %o7,23,%g4 1446 and %o7,%g5,%g5 1447 srlx %o7,18,%g3 1448 xor %g4,%o2,%o2 1449 sllx %o7,46,%g4 1450 xor %g3,%o2,%o2 1451 srlx %o7,41,%g3 1452 xor %g4,%o2,%o2 1453 sllx %o7,50,%g4 1454 xor %g3,%o2,%o2 1455 xor %o1,%g5,%g5 ! Ch(e,f,g) 1456 xor %g4,%o2,%g3 ! Sigma1(e) 1457 1458 srlx %o3,28,%o2 1459 add %g5,%g2,%g2 1460 ldx [%i3+168],%g5 ! K[21] 1461 sllx %o3,25,%g4 1462 add %g3,%g2,%g2 1463 srlx %o3,34,%g3 1464 xor %g4,%o2,%o2 1465 sllx %o3,30,%g4 1466 xor %g3,%o2,%o2 1467 srlx %o3,39,%g3 1468 xor %g4,%o2,%o2 1469 sllx %o3,36,%g4 1470 xor %g3,%o2,%o2 1471 xor %g4,%o2,%o2 ! Sigma0(a) 1472 1473 or %o3,%o4,%g3 1474 and %o3,%o4,%g4 1475 and %o5,%g3,%g3 1476 or %g3,%g4,%g4 ! Maj(a,b,c) 1477 add %g5,%g2,%g2 ! +=K[21] 1478 add %g4,%o2,%o2 1479 1480 add %g2,%g1,%g1 1481 add %g2,%o2,%o2 1482 sllx %l2,32,%g3 !! Xupdate(22) 1483 or %l3,%g3,%g3 1484 1485 srlx %g3,7,%g2 1486 ld [%sp+STACK_BIAS+STACK_FRAME+64],%l2 1487 sllx %g3,56,%g4 1488 ld [%sp+STACK_BIAS+STACK_FRAME+68],%l3 1489 srlx %g3,1,%g3 1490 xor %g4,%g2,%g2 1491 sllx %g4,7,%g4 1492 xor %g3,%g2,%g2 1493 srlx %g3,7,%g3 1494 xor %g4,%g2,%g2 1495 sllx %l6,32,%g5 1496 xor %g3,%g2,%g2 ! sigma0(X[22+1]) 1497 or %l7,%g5,%g5 1498 1499 srlx %g5,6,%g4 1500 ld [%sp+STACK_BIAS+STACK_FRAME+40],%l6 1501 sllx %g5,3,%g3 1502 ld [%sp+STACK_BIAS+STACK_FRAME+44],%l7 1503 srlx %g5,19,%g5 1504 xor %g3,%g4,%g4 1505 sllx %g3,42,%g3 1506 xor %g5,%g4,%g4 1507 srlx %g5,42,%g5 1508 xor %g3,%g4,%g4 1509 sllx %l4,32,%g3 1510 xor %g5,%g4,%g4 ! sigma1(X[22+14]) 1511 ld [%sp+STACK_BIAS+STACK_FRAME+0],%l4 1512 or %l5,%g3,%g3 1513 ld [%sp+STACK_BIAS+STACK_FRAME+4],%l5 1514 1515 sllx %l0,32,%g5 1516 add %g4,%g2,%g2 1517 ld [%sp+STACK_BIAS+STACK_FRAME+56],%l0 1518 or %l1,%g5,%g5 1519 add %g3,%g2,%g2 ! +=X[22+9] 1520 ld [%sp+STACK_BIAS+STACK_FRAME+60],%l1 1521 add %g5,%g2,%g2 ! +=X[22] 1522 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+48] 1523 add %o1,%g2,%g2 1524 srlx %g1,14,%o1 !! 22 1525 xor %o7,%o0,%g5 1526 sllx %g1,23,%g4 1527 and %g1,%g5,%g5 1528 srlx %g1,18,%g3 1529 xor %g4,%o1,%o1 1530 sllx %g1,46,%g4 1531 xor %g3,%o1,%o1 1532 srlx %g1,41,%g3 1533 xor %g4,%o1,%o1 1534 sllx %g1,50,%g4 1535 xor %g3,%o1,%o1 1536 xor %o0,%g5,%g5 ! Ch(e,f,g) 1537 xor %g4,%o1,%g3 ! Sigma1(e) 1538 1539 srlx %o2,28,%o1 1540 add %g5,%g2,%g2 1541 ldx [%i3+176],%g5 ! K[22] 1542 sllx %o2,25,%g4 1543 add %g3,%g2,%g2 1544 srlx %o2,34,%g3 1545 xor %g4,%o1,%o1 1546 sllx %o2,30,%g4 1547 xor %g3,%o1,%o1 1548 srlx %o2,39,%g3 1549 xor %g4,%o1,%o1 1550 sllx %o2,36,%g4 1551 xor %g3,%o1,%o1 1552 xor %g4,%o1,%o1 ! Sigma0(a) 1553 1554 or %o2,%o3,%g3 1555 and %o2,%o3,%g4 1556 and %o4,%g3,%g3 1557 or %g3,%g4,%g4 ! Maj(a,b,c) 1558 add %g5,%g2,%g2 ! +=K[22] 1559 add %g4,%o1,%o1 1560 1561 add %g2,%o5,%o5 1562 add %g2,%o1,%o1 1563 sllx %l2,32,%g3 !! Xupdate(23) 1564 or %l3,%g3,%g3 1565 1566 srlx %g3,7,%g2 1567 ld [%sp+STACK_BIAS+STACK_FRAME+72],%l2 1568 sllx %g3,56,%g4 1569 ld [%sp+STACK_BIAS+STACK_FRAME+76],%l3 1570 srlx %g3,1,%g3 1571 xor %g4,%g2,%g2 1572 sllx %g4,7,%g4 1573 xor %g3,%g2,%g2 1574 srlx %g3,7,%g3 1575 xor %g4,%g2,%g2 1576 sllx %l6,32,%g5 1577 xor %g3,%g2,%g2 ! sigma0(X[23+1]) 1578 or %l7,%g5,%g5 1579 1580 srlx %g5,6,%g4 1581 ld [%sp+STACK_BIAS+STACK_FRAME+48],%l6 1582 sllx %g5,3,%g3 1583 ld [%sp+STACK_BIAS+STACK_FRAME+52],%l7 1584 srlx %g5,19,%g5 1585 xor %g3,%g4,%g4 1586 sllx %g3,42,%g3 1587 xor %g5,%g4,%g4 1588 srlx %g5,42,%g5 1589 xor %g3,%g4,%g4 1590 sllx %l4,32,%g3 1591 xor %g5,%g4,%g4 ! sigma1(X[23+14]) 1592 ld [%sp+STACK_BIAS+STACK_FRAME+8],%l4 1593 or %l5,%g3,%g3 1594 ld [%sp+STACK_BIAS+STACK_FRAME+12],%l5 1595 1596 sllx %l0,32,%g5 1597 add %g4,%g2,%g2 1598 ld [%sp+STACK_BIAS+STACK_FRAME+64],%l0 1599 or %l1,%g5,%g5 1600 add %g3,%g2,%g2 ! +=X[23+9] 1601 ld [%sp+STACK_BIAS+STACK_FRAME+68],%l1 1602 add %g5,%g2,%g2 ! +=X[23] 1603 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+56] 1604 add %o0,%g2,%g2 1605 srlx %o5,14,%o0 !! 23 1606 xor %g1,%o7,%g5 1607 sllx %o5,23,%g4 1608 and %o5,%g5,%g5 1609 srlx %o5,18,%g3 1610 xor %g4,%o0,%o0 1611 sllx %o5,46,%g4 1612 xor %g3,%o0,%o0 1613 srlx %o5,41,%g3 1614 xor %g4,%o0,%o0 1615 sllx %o5,50,%g4 1616 xor %g3,%o0,%o0 1617 xor %o7,%g5,%g5 ! Ch(e,f,g) 1618 xor %g4,%o0,%g3 ! Sigma1(e) 1619 1620 srlx %o1,28,%o0 1621 add %g5,%g2,%g2 1622 ldx [%i3+184],%g5 ! K[23] 1623 sllx %o1,25,%g4 1624 add %g3,%g2,%g2 1625 srlx %o1,34,%g3 1626 xor %g4,%o0,%o0 1627 sllx %o1,30,%g4 1628 xor %g3,%o0,%o0 1629 srlx %o1,39,%g3 1630 xor %g4,%o0,%o0 1631 sllx %o1,36,%g4 1632 xor %g3,%o0,%o0 1633 xor %g4,%o0,%o0 ! Sigma0(a) 1634 1635 or %o1,%o2,%g3 1636 and %o1,%o2,%g4 1637 and %o3,%g3,%g3 1638 or %g3,%g4,%g4 ! Maj(a,b,c) 1639 add %g5,%g2,%g2 ! +=K[23] 1640 add %g4,%o0,%o0 1641 1642 add %g2,%o4,%o4 1643 add %g2,%o0,%o0 1644 sllx %l2,32,%g3 !! Xupdate(24) 1645 or %l3,%g3,%g3 1646 1647 srlx %g3,7,%g2 1648 ld [%sp+STACK_BIAS+STACK_FRAME+80],%l2 1649 sllx %g3,56,%g4 1650 ld [%sp+STACK_BIAS+STACK_FRAME+84],%l3 1651 srlx %g3,1,%g3 1652 xor %g4,%g2,%g2 1653 sllx %g4,7,%g4 1654 xor %g3,%g2,%g2 1655 srlx %g3,7,%g3 1656 xor %g4,%g2,%g2 1657 sllx %l6,32,%g5 1658 xor %g3,%g2,%g2 ! sigma0(X[24+1]) 1659 or %l7,%g5,%g5 1660 1661 srlx %g5,6,%g4 1662 ld [%sp+STACK_BIAS+STACK_FRAME+56],%l6 1663 sllx %g5,3,%g3 1664 ld [%sp+STACK_BIAS+STACK_FRAME+60],%l7 1665 srlx %g5,19,%g5 1666 xor %g3,%g4,%g4 1667 sllx %g3,42,%g3 1668 xor %g5,%g4,%g4 1669 srlx %g5,42,%g5 1670 xor %g3,%g4,%g4 1671 sllx %l4,32,%g3 1672 xor %g5,%g4,%g4 ! sigma1(X[24+14]) 1673 ld [%sp+STACK_BIAS+STACK_FRAME+16],%l4 1674 or %l5,%g3,%g3 1675 ld [%sp+STACK_BIAS+STACK_FRAME+20],%l5 1676 1677 sllx %l0,32,%g5 1678 add %g4,%g2,%g2 1679 ld [%sp+STACK_BIAS+STACK_FRAME+72],%l0 1680 or %l1,%g5,%g5 1681 add %g3,%g2,%g2 ! +=X[24+9] 1682 ld [%sp+STACK_BIAS+STACK_FRAME+76],%l1 1683 add %g5,%g2,%g2 ! +=X[24] 1684 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+64] 1685 add %o7,%g2,%g2 1686 srlx %o4,14,%o7 !! 24 1687 xor %o5,%g1,%g5 1688 sllx %o4,23,%g4 1689 and %o4,%g5,%g5 1690 srlx %o4,18,%g3 1691 xor %g4,%o7,%o7 1692 sllx %o4,46,%g4 1693 xor %g3,%o7,%o7 1694 srlx %o4,41,%g3 1695 xor %g4,%o7,%o7 1696 sllx %o4,50,%g4 1697 xor %g3,%o7,%o7 1698 xor %g1,%g5,%g5 ! Ch(e,f,g) 1699 xor %g4,%o7,%g3 ! Sigma1(e) 1700 1701 srlx %o0,28,%o7 1702 add %g5,%g2,%g2 1703 ldx [%i3+192],%g5 ! K[24] 1704 sllx %o0,25,%g4 1705 add %g3,%g2,%g2 1706 srlx %o0,34,%g3 1707 xor %g4,%o7,%o7 1708 sllx %o0,30,%g4 1709 xor %g3,%o7,%o7 1710 srlx %o0,39,%g3 1711 xor %g4,%o7,%o7 1712 sllx %o0,36,%g4 1713 xor %g3,%o7,%o7 1714 xor %g4,%o7,%o7 ! Sigma0(a) 1715 1716 or %o0,%o1,%g3 1717 and %o0,%o1,%g4 1718 and %o2,%g3,%g3 1719 or %g3,%g4,%g4 ! Maj(a,b,c) 1720 add %g5,%g2,%g2 ! +=K[24] 1721 add %g4,%o7,%o7 1722 1723 add %g2,%o3,%o3 1724 add %g2,%o7,%o7 1725 sllx %l2,32,%g3 !! Xupdate(25) 1726 or %l3,%g3,%g3 1727 1728 srlx %g3,7,%g2 1729 ld [%sp+STACK_BIAS+STACK_FRAME+88],%l2 1730 sllx %g3,56,%g4 1731 ld [%sp+STACK_BIAS+STACK_FRAME+92],%l3 1732 srlx %g3,1,%g3 1733 xor %g4,%g2,%g2 1734 sllx %g4,7,%g4 1735 xor %g3,%g2,%g2 1736 srlx %g3,7,%g3 1737 xor %g4,%g2,%g2 1738 sllx %l6,32,%g5 1739 xor %g3,%g2,%g2 ! sigma0(X[25+1]) 1740 or %l7,%g5,%g5 1741 1742 srlx %g5,6,%g4 1743 ld [%sp+STACK_BIAS+STACK_FRAME+64],%l6 1744 sllx %g5,3,%g3 1745 ld [%sp+STACK_BIAS+STACK_FRAME+68],%l7 1746 srlx %g5,19,%g5 1747 xor %g3,%g4,%g4 1748 sllx %g3,42,%g3 1749 xor %g5,%g4,%g4 1750 srlx %g5,42,%g5 1751 xor %g3,%g4,%g4 1752 sllx %l4,32,%g3 1753 xor %g5,%g4,%g4 ! sigma1(X[25+14]) 1754 ld [%sp+STACK_BIAS+STACK_FRAME+24],%l4 1755 or %l5,%g3,%g3 1756 ld [%sp+STACK_BIAS+STACK_FRAME+28],%l5 1757 1758 sllx %l0,32,%g5 1759 add %g4,%g2,%g2 1760 ld [%sp+STACK_BIAS+STACK_FRAME+80],%l0 1761 or %l1,%g5,%g5 1762 add %g3,%g2,%g2 ! +=X[25+9] 1763 ld [%sp+STACK_BIAS+STACK_FRAME+84],%l1 1764 add %g5,%g2,%g2 ! +=X[25] 1765 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+72] 1766 add %g1,%g2,%g2 1767 srlx %o3,14,%g1 !! 25 1768 xor %o4,%o5,%g5 1769 sllx %o3,23,%g4 1770 and %o3,%g5,%g5 1771 srlx %o3,18,%g3 1772 xor %g4,%g1,%g1 1773 sllx %o3,46,%g4 1774 xor %g3,%g1,%g1 1775 srlx %o3,41,%g3 1776 xor %g4,%g1,%g1 1777 sllx %o3,50,%g4 1778 xor %g3,%g1,%g1 1779 xor %o5,%g5,%g5 ! Ch(e,f,g) 1780 xor %g4,%g1,%g3 ! Sigma1(e) 1781 1782 srlx %o7,28,%g1 1783 add %g5,%g2,%g2 1784 ldx [%i3+200],%g5 ! K[25] 1785 sllx %o7,25,%g4 1786 add %g3,%g2,%g2 1787 srlx %o7,34,%g3 1788 xor %g4,%g1,%g1 1789 sllx %o7,30,%g4 1790 xor %g3,%g1,%g1 1791 srlx %o7,39,%g3 1792 xor %g4,%g1,%g1 1793 sllx %o7,36,%g4 1794 xor %g3,%g1,%g1 1795 xor %g4,%g1,%g1 ! Sigma0(a) 1796 1797 or %o7,%o0,%g3 1798 and %o7,%o0,%g4 1799 and %o1,%g3,%g3 1800 or %g3,%g4,%g4 ! Maj(a,b,c) 1801 add %g5,%g2,%g2 ! +=K[25] 1802 add %g4,%g1,%g1 1803 1804 add %g2,%o2,%o2 1805 add %g2,%g1,%g1 1806 sllx %l2,32,%g3 !! Xupdate(26) 1807 or %l3,%g3,%g3 1808 1809 srlx %g3,7,%g2 1810 ld [%sp+STACK_BIAS+STACK_FRAME+96],%l2 1811 sllx %g3,56,%g4 1812 ld [%sp+STACK_BIAS+STACK_FRAME+100],%l3 1813 srlx %g3,1,%g3 1814 xor %g4,%g2,%g2 1815 sllx %g4,7,%g4 1816 xor %g3,%g2,%g2 1817 srlx %g3,7,%g3 1818 xor %g4,%g2,%g2 1819 sllx %l6,32,%g5 1820 xor %g3,%g2,%g2 ! sigma0(X[26+1]) 1821 or %l7,%g5,%g5 1822 1823 srlx %g5,6,%g4 1824 ld [%sp+STACK_BIAS+STACK_FRAME+72],%l6 1825 sllx %g5,3,%g3 1826 ld [%sp+STACK_BIAS+STACK_FRAME+76],%l7 1827 srlx %g5,19,%g5 1828 xor %g3,%g4,%g4 1829 sllx %g3,42,%g3 1830 xor %g5,%g4,%g4 1831 srlx %g5,42,%g5 1832 xor %g3,%g4,%g4 1833 sllx %l4,32,%g3 1834 xor %g5,%g4,%g4 ! sigma1(X[26+14]) 1835 ld [%sp+STACK_BIAS+STACK_FRAME+32],%l4 1836 or %l5,%g3,%g3 1837 ld [%sp+STACK_BIAS+STACK_FRAME+36],%l5 1838 1839 sllx %l0,32,%g5 1840 add %g4,%g2,%g2 1841 ld [%sp+STACK_BIAS+STACK_FRAME+88],%l0 1842 or %l1,%g5,%g5 1843 add %g3,%g2,%g2 ! +=X[26+9] 1844 ld [%sp+STACK_BIAS+STACK_FRAME+92],%l1 1845 add %g5,%g2,%g2 ! +=X[26] 1846 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+80] 1847 add %o5,%g2,%g2 1848 srlx %o2,14,%o5 !! 26 1849 xor %o3,%o4,%g5 1850 sllx %o2,23,%g4 1851 and %o2,%g5,%g5 1852 srlx %o2,18,%g3 1853 xor %g4,%o5,%o5 1854 sllx %o2,46,%g4 1855 xor %g3,%o5,%o5 1856 srlx %o2,41,%g3 1857 xor %g4,%o5,%o5 1858 sllx %o2,50,%g4 1859 xor %g3,%o5,%o5 1860 xor %o4,%g5,%g5 ! Ch(e,f,g) 1861 xor %g4,%o5,%g3 ! Sigma1(e) 1862 1863 srlx %g1,28,%o5 1864 add %g5,%g2,%g2 1865 ldx [%i3+208],%g5 ! K[26] 1866 sllx %g1,25,%g4 1867 add %g3,%g2,%g2 1868 srlx %g1,34,%g3 1869 xor %g4,%o5,%o5 1870 sllx %g1,30,%g4 1871 xor %g3,%o5,%o5 1872 srlx %g1,39,%g3 1873 xor %g4,%o5,%o5 1874 sllx %g1,36,%g4 1875 xor %g3,%o5,%o5 1876 xor %g4,%o5,%o5 ! Sigma0(a) 1877 1878 or %g1,%o7,%g3 1879 and %g1,%o7,%g4 1880 and %o0,%g3,%g3 1881 or %g3,%g4,%g4 ! Maj(a,b,c) 1882 add %g5,%g2,%g2 ! +=K[26] 1883 add %g4,%o5,%o5 1884 1885 add %g2,%o1,%o1 1886 add %g2,%o5,%o5 1887 sllx %l2,32,%g3 !! Xupdate(27) 1888 or %l3,%g3,%g3 1889 1890 srlx %g3,7,%g2 1891 ld [%sp+STACK_BIAS+STACK_FRAME+104],%l2 1892 sllx %g3,56,%g4 1893 ld [%sp+STACK_BIAS+STACK_FRAME+108],%l3 1894 srlx %g3,1,%g3 1895 xor %g4,%g2,%g2 1896 sllx %g4,7,%g4 1897 xor %g3,%g2,%g2 1898 srlx %g3,7,%g3 1899 xor %g4,%g2,%g2 1900 sllx %l6,32,%g5 1901 xor %g3,%g2,%g2 ! sigma0(X[27+1]) 1902 or %l7,%g5,%g5 1903 1904 srlx %g5,6,%g4 1905 ld [%sp+STACK_BIAS+STACK_FRAME+80],%l6 1906 sllx %g5,3,%g3 1907 ld [%sp+STACK_BIAS+STACK_FRAME+84],%l7 1908 srlx %g5,19,%g5 1909 xor %g3,%g4,%g4 1910 sllx %g3,42,%g3 1911 xor %g5,%g4,%g4 1912 srlx %g5,42,%g5 1913 xor %g3,%g4,%g4 1914 sllx %l4,32,%g3 1915 xor %g5,%g4,%g4 ! sigma1(X[27+14]) 1916 ld [%sp+STACK_BIAS+STACK_FRAME+40],%l4 1917 or %l5,%g3,%g3 1918 ld [%sp+STACK_BIAS+STACK_FRAME+44],%l5 1919 1920 sllx %l0,32,%g5 1921 add %g4,%g2,%g2 1922 ld [%sp+STACK_BIAS+STACK_FRAME+96],%l0 1923 or %l1,%g5,%g5 1924 add %g3,%g2,%g2 ! +=X[27+9] 1925 ld [%sp+STACK_BIAS+STACK_FRAME+100],%l1 1926 add %g5,%g2,%g2 ! +=X[27] 1927 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+88] 1928 add %o4,%g2,%g2 1929 srlx %o1,14,%o4 !! 27 1930 xor %o2,%o3,%g5 1931 sllx %o1,23,%g4 1932 and %o1,%g5,%g5 1933 srlx %o1,18,%g3 1934 xor %g4,%o4,%o4 1935 sllx %o1,46,%g4 1936 xor %g3,%o4,%o4 1937 srlx %o1,41,%g3 1938 xor %g4,%o4,%o4 1939 sllx %o1,50,%g4 1940 xor %g3,%o4,%o4 1941 xor %o3,%g5,%g5 ! Ch(e,f,g) 1942 xor %g4,%o4,%g3 ! Sigma1(e) 1943 1944 srlx %o5,28,%o4 1945 add %g5,%g2,%g2 1946 ldx [%i3+216],%g5 ! K[27] 1947 sllx %o5,25,%g4 1948 add %g3,%g2,%g2 1949 srlx %o5,34,%g3 1950 xor %g4,%o4,%o4 1951 sllx %o5,30,%g4 1952 xor %g3,%o4,%o4 1953 srlx %o5,39,%g3 1954 xor %g4,%o4,%o4 1955 sllx %o5,36,%g4 1956 xor %g3,%o4,%o4 1957 xor %g4,%o4,%o4 ! Sigma0(a) 1958 1959 or %o5,%g1,%g3 1960 and %o5,%g1,%g4 1961 and %o7,%g3,%g3 1962 or %g3,%g4,%g4 ! Maj(a,b,c) 1963 add %g5,%g2,%g2 ! +=K[27] 1964 add %g4,%o4,%o4 1965 1966 add %g2,%o0,%o0 1967 add %g2,%o4,%o4 1968 sllx %l2,32,%g3 !! Xupdate(28) 1969 or %l3,%g3,%g3 1970 1971 srlx %g3,7,%g2 1972 ld [%sp+STACK_BIAS+STACK_FRAME+112],%l2 1973 sllx %g3,56,%g4 1974 ld [%sp+STACK_BIAS+STACK_FRAME+116],%l3 1975 srlx %g3,1,%g3 1976 xor %g4,%g2,%g2 1977 sllx %g4,7,%g4 1978 xor %g3,%g2,%g2 1979 srlx %g3,7,%g3 1980 xor %g4,%g2,%g2 1981 sllx %l6,32,%g5 1982 xor %g3,%g2,%g2 ! sigma0(X[28+1]) 1983 or %l7,%g5,%g5 1984 1985 srlx %g5,6,%g4 1986 ld [%sp+STACK_BIAS+STACK_FRAME+88],%l6 1987 sllx %g5,3,%g3 1988 ld [%sp+STACK_BIAS+STACK_FRAME+92],%l7 1989 srlx %g5,19,%g5 1990 xor %g3,%g4,%g4 1991 sllx %g3,42,%g3 1992 xor %g5,%g4,%g4 1993 srlx %g5,42,%g5 1994 xor %g3,%g4,%g4 1995 sllx %l4,32,%g3 1996 xor %g5,%g4,%g4 ! sigma1(X[28+14]) 1997 ld [%sp+STACK_BIAS+STACK_FRAME+48],%l4 1998 or %l5,%g3,%g3 1999 ld [%sp+STACK_BIAS+STACK_FRAME+52],%l5 2000 2001 sllx %l0,32,%g5 2002 add %g4,%g2,%g2 2003 ld [%sp+STACK_BIAS+STACK_FRAME+104],%l0 2004 or %l1,%g5,%g5 2005 add %g3,%g2,%g2 ! +=X[28+9] 2006 ld [%sp+STACK_BIAS+STACK_FRAME+108],%l1 2007 add %g5,%g2,%g2 ! +=X[28] 2008 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+96] 2009 add %o3,%g2,%g2 2010 srlx %o0,14,%o3 !! 28 2011 xor %o1,%o2,%g5 2012 sllx %o0,23,%g4 2013 and %o0,%g5,%g5 2014 srlx %o0,18,%g3 2015 xor %g4,%o3,%o3 2016 sllx %o0,46,%g4 2017 xor %g3,%o3,%o3 2018 srlx %o0,41,%g3 2019 xor %g4,%o3,%o3 2020 sllx %o0,50,%g4 2021 xor %g3,%o3,%o3 2022 xor %o2,%g5,%g5 ! Ch(e,f,g) 2023 xor %g4,%o3,%g3 ! Sigma1(e) 2024 2025 srlx %o4,28,%o3 2026 add %g5,%g2,%g2 2027 ldx [%i3+224],%g5 ! K[28] 2028 sllx %o4,25,%g4 2029 add %g3,%g2,%g2 2030 srlx %o4,34,%g3 2031 xor %g4,%o3,%o3 2032 sllx %o4,30,%g4 2033 xor %g3,%o3,%o3 2034 srlx %o4,39,%g3 2035 xor %g4,%o3,%o3 2036 sllx %o4,36,%g4 2037 xor %g3,%o3,%o3 2038 xor %g4,%o3,%o3 ! Sigma0(a) 2039 2040 or %o4,%o5,%g3 2041 and %o4,%o5,%g4 2042 and %g1,%g3,%g3 2043 or %g3,%g4,%g4 ! Maj(a,b,c) 2044 add %g5,%g2,%g2 ! +=K[28] 2045 add %g4,%o3,%o3 2046 2047 add %g2,%o7,%o7 2048 add %g2,%o3,%o3 2049 sllx %l2,32,%g3 !! Xupdate(29) 2050 or %l3,%g3,%g3 2051 2052 srlx %g3,7,%g2 2053 ld [%sp+STACK_BIAS+STACK_FRAME+120],%l2 2054 sllx %g3,56,%g4 2055 ld [%sp+STACK_BIAS+STACK_FRAME+124],%l3 2056 srlx %g3,1,%g3 2057 xor %g4,%g2,%g2 2058 sllx %g4,7,%g4 2059 xor %g3,%g2,%g2 2060 srlx %g3,7,%g3 2061 xor %g4,%g2,%g2 2062 sllx %l6,32,%g5 2063 xor %g3,%g2,%g2 ! sigma0(X[29+1]) 2064 or %l7,%g5,%g5 2065 2066 srlx %g5,6,%g4 2067 ld [%sp+STACK_BIAS+STACK_FRAME+96],%l6 2068 sllx %g5,3,%g3 2069 ld [%sp+STACK_BIAS+STACK_FRAME+100],%l7 2070 srlx %g5,19,%g5 2071 xor %g3,%g4,%g4 2072 sllx %g3,42,%g3 2073 xor %g5,%g4,%g4 2074 srlx %g5,42,%g5 2075 xor %g3,%g4,%g4 2076 sllx %l4,32,%g3 2077 xor %g5,%g4,%g4 ! sigma1(X[29+14]) 2078 ld [%sp+STACK_BIAS+STACK_FRAME+56],%l4 2079 or %l5,%g3,%g3 2080 ld [%sp+STACK_BIAS+STACK_FRAME+60],%l5 2081 2082 sllx %l0,32,%g5 2083 add %g4,%g2,%g2 2084 ld [%sp+STACK_BIAS+STACK_FRAME+112],%l0 2085 or %l1,%g5,%g5 2086 add %g3,%g2,%g2 ! +=X[29+9] 2087 ld [%sp+STACK_BIAS+STACK_FRAME+116],%l1 2088 add %g5,%g2,%g2 ! +=X[29] 2089 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+104] 2090 add %o2,%g2,%g2 2091 srlx %o7,14,%o2 !! 29 2092 xor %o0,%o1,%g5 2093 sllx %o7,23,%g4 2094 and %o7,%g5,%g5 2095 srlx %o7,18,%g3 2096 xor %g4,%o2,%o2 2097 sllx %o7,46,%g4 2098 xor %g3,%o2,%o2 2099 srlx %o7,41,%g3 2100 xor %g4,%o2,%o2 2101 sllx %o7,50,%g4 2102 xor %g3,%o2,%o2 2103 xor %o1,%g5,%g5 ! Ch(e,f,g) 2104 xor %g4,%o2,%g3 ! Sigma1(e) 2105 2106 srlx %o3,28,%o2 2107 add %g5,%g2,%g2 2108 ldx [%i3+232],%g5 ! K[29] 2109 sllx %o3,25,%g4 2110 add %g3,%g2,%g2 2111 srlx %o3,34,%g3 2112 xor %g4,%o2,%o2 2113 sllx %o3,30,%g4 2114 xor %g3,%o2,%o2 2115 srlx %o3,39,%g3 2116 xor %g4,%o2,%o2 2117 sllx %o3,36,%g4 2118 xor %g3,%o2,%o2 2119 xor %g4,%o2,%o2 ! Sigma0(a) 2120 2121 or %o3,%o4,%g3 2122 and %o3,%o4,%g4 2123 and %o5,%g3,%g3 2124 or %g3,%g4,%g4 ! Maj(a,b,c) 2125 add %g5,%g2,%g2 ! +=K[29] 2126 add %g4,%o2,%o2 2127 2128 add %g2,%g1,%g1 2129 add %g2,%o2,%o2 2130 sllx %l2,32,%g3 !! Xupdate(30) 2131 or %l3,%g3,%g3 2132 2133 srlx %g3,7,%g2 2134 ld [%sp+STACK_BIAS+STACK_FRAME+0],%l2 2135 sllx %g3,56,%g4 2136 ld [%sp+STACK_BIAS+STACK_FRAME+4],%l3 2137 srlx %g3,1,%g3 2138 xor %g4,%g2,%g2 2139 sllx %g4,7,%g4 2140 xor %g3,%g2,%g2 2141 srlx %g3,7,%g3 2142 xor %g4,%g2,%g2 2143 sllx %l6,32,%g5 2144 xor %g3,%g2,%g2 ! sigma0(X[30+1]) 2145 or %l7,%g5,%g5 2146 2147 srlx %g5,6,%g4 2148 ld [%sp+STACK_BIAS+STACK_FRAME+104],%l6 2149 sllx %g5,3,%g3 2150 ld [%sp+STACK_BIAS+STACK_FRAME+108],%l7 2151 srlx %g5,19,%g5 2152 xor %g3,%g4,%g4 2153 sllx %g3,42,%g3 2154 xor %g5,%g4,%g4 2155 srlx %g5,42,%g5 2156 xor %g3,%g4,%g4 2157 sllx %l4,32,%g3 2158 xor %g5,%g4,%g4 ! sigma1(X[30+14]) 2159 ld [%sp+STACK_BIAS+STACK_FRAME+64],%l4 2160 or %l5,%g3,%g3 2161 ld [%sp+STACK_BIAS+STACK_FRAME+68],%l5 2162 2163 sllx %l0,32,%g5 2164 add %g4,%g2,%g2 2165 ld [%sp+STACK_BIAS+STACK_FRAME+120],%l0 2166 or %l1,%g5,%g5 2167 add %g3,%g2,%g2 ! +=X[30+9] 2168 ld [%sp+STACK_BIAS+STACK_FRAME+124],%l1 2169 add %g5,%g2,%g2 ! +=X[30] 2170 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+112] 2171 add %o1,%g2,%g2 2172 srlx %g1,14,%o1 !! 30 2173 xor %o7,%o0,%g5 2174 sllx %g1,23,%g4 2175 and %g1,%g5,%g5 2176 srlx %g1,18,%g3 2177 xor %g4,%o1,%o1 2178 sllx %g1,46,%g4 2179 xor %g3,%o1,%o1 2180 srlx %g1,41,%g3 2181 xor %g4,%o1,%o1 2182 sllx %g1,50,%g4 2183 xor %g3,%o1,%o1 2184 xor %o0,%g5,%g5 ! Ch(e,f,g) 2185 xor %g4,%o1,%g3 ! Sigma1(e) 2186 2187 srlx %o2,28,%o1 2188 add %g5,%g2,%g2 2189 ldx [%i3+240],%g5 ! K[30] 2190 sllx %o2,25,%g4 2191 add %g3,%g2,%g2 2192 srlx %o2,34,%g3 2193 xor %g4,%o1,%o1 2194 sllx %o2,30,%g4 2195 xor %g3,%o1,%o1 2196 srlx %o2,39,%g3 2197 xor %g4,%o1,%o1 2198 sllx %o2,36,%g4 2199 xor %g3,%o1,%o1 2200 xor %g4,%o1,%o1 ! Sigma0(a) 2201 2202 or %o2,%o3,%g3 2203 and %o2,%o3,%g4 2204 and %o4,%g3,%g3 2205 or %g3,%g4,%g4 ! Maj(a,b,c) 2206 add %g5,%g2,%g2 ! +=K[30] 2207 add %g4,%o1,%o1 2208 2209 add %g2,%o5,%o5 2210 add %g2,%o1,%o1 2211 sllx %l2,32,%g3 !! Xupdate(31) 2212 or %l3,%g3,%g3 2213 2214 srlx %g3,7,%g2 2215 ld [%sp+STACK_BIAS+STACK_FRAME+8],%l2 2216 sllx %g3,56,%g4 2217 ld [%sp+STACK_BIAS+STACK_FRAME+12],%l3 2218 srlx %g3,1,%g3 2219 xor %g4,%g2,%g2 2220 sllx %g4,7,%g4 2221 xor %g3,%g2,%g2 2222 srlx %g3,7,%g3 2223 xor %g4,%g2,%g2 2224 sllx %l6,32,%g5 2225 xor %g3,%g2,%g2 ! sigma0(X[31+1]) 2226 or %l7,%g5,%g5 2227 2228 srlx %g5,6,%g4 2229 ld [%sp+STACK_BIAS+STACK_FRAME+112],%l6 2230 sllx %g5,3,%g3 2231 ld [%sp+STACK_BIAS+STACK_FRAME+116],%l7 2232 srlx %g5,19,%g5 2233 xor %g3,%g4,%g4 2234 sllx %g3,42,%g3 2235 xor %g5,%g4,%g4 2236 srlx %g5,42,%g5 2237 xor %g3,%g4,%g4 2238 sllx %l4,32,%g3 2239 xor %g5,%g4,%g4 ! sigma1(X[31+14]) 2240 ld [%sp+STACK_BIAS+STACK_FRAME+72],%l4 2241 or %l5,%g3,%g3 2242 ld [%sp+STACK_BIAS+STACK_FRAME+76],%l5 2243 2244 sllx %l0,32,%g5 2245 add %g4,%g2,%g2 2246 ld [%sp+STACK_BIAS+STACK_FRAME+0],%l0 2247 or %l1,%g5,%g5 2248 add %g3,%g2,%g2 ! +=X[31+9] 2249 ld [%sp+STACK_BIAS+STACK_FRAME+4],%l1 2250 add %g5,%g2,%g2 ! +=X[31] 2251 stx %g2,[%sp+STACK_BIAS+STACK_FRAME+120] 2252 add %o0,%g2,%g2 2253 srlx %o5,14,%o0 !! 31 2254 xor %g1,%o7,%g5 2255 sllx %o5,23,%g4 2256 and %o5,%g5,%g5 2257 srlx %o5,18,%g3 2258 xor %g4,%o0,%o0 2259 sllx %o5,46,%g4 2260 xor %g3,%o0,%o0 2261 srlx %o5,41,%g3 2262 xor %g4,%o0,%o0 2263 sllx %o5,50,%g4 2264 xor %g3,%o0,%o0 2265 xor %o7,%g5,%g5 ! Ch(e,f,g) 2266 xor %g4,%o0,%g3 ! Sigma1(e) 2267 2268 srlx %o1,28,%o0 2269 add %g5,%g2,%g2 2270 ldx [%i3+248],%g5 ! K[31] 2271 sllx %o1,25,%g4 2272 add %g3,%g2,%g2 2273 srlx %o1,34,%g3 2274 xor %g4,%o0,%o0 2275 sllx %o1,30,%g4 2276 xor %g3,%o0,%o0 2277 srlx %o1,39,%g3 2278 xor %g4,%o0,%o0 2279 sllx %o1,36,%g4 2280 xor %g3,%o0,%o0 2281 xor %g4,%o0,%o0 ! Sigma0(a) 2282 2283 or %o1,%o2,%g3 2284 and %o1,%o2,%g4 2285 and %o3,%g3,%g3 2286 or %g3,%g4,%g4 ! Maj(a,b,c) 2287 add %g5,%g2,%g2 ! +=K[31] 2288 add %g4,%o0,%o0 2289 2290 add %g2,%o4,%o4 2291 add %g2,%o0,%o0 2292 and %g5,0xfff,%g5 2293 cmp %g5,2071 2294 bne .L16_xx 2295 add %i3,128,%i3 ! Ktbl+=16 2296 2297 ld [%i0+0],%l0 2298 ld [%i0+4],%l1 2299 ld [%i0+8],%l2 2300 ld [%i0+12],%l3 2301 ld [%i0+16],%l4 2302 ld [%i0+20],%l5 2303 ld [%i0+24],%l6 2304 2305 sllx %l0,32,%g3 2306 ld [%i0+28],%l7 2307 sllx %l2,32,%g4 2308 or %l1,%g3,%g3 2309 or %l3,%g4,%g4 2310 add %g3,%o0,%o0 2311 add %g4,%o1,%o1 2312 stx %o0,[%i0+0] 2313 sllx %l4,32,%g5 2314 stx %o1,[%i0+8] 2315 sllx %l6,32,%g2 2316 or %l5,%g5,%g5 2317 or %l7,%g2,%g2 2318 add %g5,%o2,%o2 2319 stx %o2,[%i0+16] 2320 add %g2,%o3,%o3 2321 stx %o3,[%i0+24] 2322 2323 ld [%i0+32],%l0 2324 ld [%i0+36],%l1 2325 ld [%i0+40],%l2 2326 ld [%i0+44],%l3 2327 ld [%i0+48],%l4 2328 ld [%i0+52],%l5 2329 ld [%i0+56],%l6 2330 2331 sllx %l0,32,%g3 2332 ld [%i0+60],%l7 2333 sllx %l2,32,%g4 2334 or %l1,%g3,%g3 2335 or %l3,%g4,%g4 2336 add %g3,%o4,%o4 2337 add %g4,%o5,%o5 2338 stx %o4,[%i0+32] 2339 sllx %l4,32,%g5 2340 stx %o5,[%i0+40] 2341 sllx %l6,32,%g2 2342 or %l5,%g5,%g5 2343 or %l7,%g2,%g2 2344 add %g5,%g1,%g1 2345 stx %g1,[%i0+48] 2346 add %g2,%o7,%o7 2347 stx %o7,[%i0+56] 2348 add %i1,128,%i1 ! advance inp 2349 cmp %i1,%i2 2350 bne SIZE_T_CC,.Lloop 2351 sub %i3,512,%i3 ! rewind Ktbl 2352 2353 ret 2354 restore 2355.type sha512_block_data_order,#function 2356.size sha512_block_data_order,(.-sha512_block_data_order) 2357.asciz "SHA512 block transform for SPARCv9, CRYPTOGAMS by <appro@openssl.org>" 2358.align 4 2359