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