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