1 1.1 christos #include "sparc_arch.h" 2 1.1 christos 3 1.1 christos #ifdef __arch64__ 4 1.1 christos .register %g2,#scratch 5 1.1 christos .register %g3,#scratch 6 1.1 christos # define STPTR stx 7 1.1 christos # define SIZE_T 8 8 1.1 christos #else 9 1.1 christos # define STPTR st 10 1.1 christos # define SIZE_T 4 11 1.1 christos #endif 12 1.1 christos #define LOCALS (STACK_BIAS+STACK_FRAME) 13 1.1 christos 14 1.1 christos .section ".text",#alloc,#execinstr 15 1.1 christos 16 1.1 christos #ifdef __PIC__ 17 1.1 christos SPARC_PIC_THUNK(%g1) 18 1.1 christos #endif 19 1.1 christos 20 1.1 christos .globl poly1305_init 21 1.1 christos .align 32 22 1.1 christos poly1305_init: 23 1.1 christos save %sp,-STACK_FRAME-16,%sp 24 1.1 christos nop 25 1.1 christos 26 1.1 christos SPARC_LOAD_ADDRESS(OPENSSL_sparcv9cap_P,%g1) 27 1.1 christos ld [%g1],%g1 28 1.1 christos 29 1.1 christos and %g1,SPARCV9_FMADD|SPARCV9_VIS3,%g1 30 1.1 christos cmp %g1,SPARCV9_FMADD 31 1.1 christos be .Lpoly1305_init_fma 32 1.1 christos nop 33 1.1 christos 34 1.1 christos stx %g0,[%i0+0] 35 1.1 christos stx %g0,[%i0+8] ! zero hash value 36 1.1 christos brz,pn %i1,.Lno_key 37 1.1 christos stx %g0,[%i0+16] 38 1.1 christos 39 1.1 christos and %i1,7,%i5 ! alignment factor 40 1.1 christos andn %i1,7,%i1 41 1.1 christos sll %i5,3,%i5 ! *8 42 1.1 christos neg %i5,%i4 43 1.1 christos 44 1.1 christos sethi %hi(0x0ffffffc),%o4 45 1.1 christos set 8,%o1 46 1.1 christos or %o4,%lo(0x0ffffffc),%o4 47 1.1 christos set 16,%o2 48 1.1 christos sllx %o4,32,%o5 49 1.1 christos or %o4,%o5,%o5 ! 0x0ffffffc0ffffffc 50 1.1 christos or %o5,3,%o4 ! 0x0ffffffc0fffffff 51 1.1 christos 52 1.1 christos ldxa [%i1+%g0]0x88,%o0 ! load little-endian key 53 1.1 christos brz,pt %i5,.Lkey_aligned 54 1.1 christos ldxa [%i1+%o1]0x88,%o1 55 1.1 christos 56 1.1 christos ldxa [%i1+%o2]0x88,%o2 57 1.1 christos srlx %o0,%i5,%o0 58 1.1 christos sllx %o1,%i4,%o7 59 1.1 christos srlx %o1,%i5,%o1 60 1.1 christos or %o7,%o0,%o0 61 1.1 christos sllx %o2,%i4,%o2 62 1.1 christos or %o2,%o1,%o1 63 1.1 christos 64 1.1 christos .Lkey_aligned: 65 1.1 christos and %o4,%o0,%o0 66 1.1 christos and %o5,%o1,%o1 67 1.1 christos stx %o0,[%i0+32+0] ! store key 68 1.1 christos stx %o1,[%i0+32+8] 69 1.1 christos 70 1.1 christos andcc %g1,SPARCV9_VIS3,%g0 71 1.1 christos be .Lno_key 72 1.1 christos nop 73 1.1 christos 74 1.1 christos 1: call .+8 75 1.1 christos add %o7,poly1305_blocks_vis3-1b,%o7 76 1.1 christos 77 1.1 christos add %o7,poly1305_emit-poly1305_blocks_vis3,%o5 78 1.1 christos STPTR %o7,[%i2] 79 1.1 christos STPTR %o5,[%i2+SIZE_T] 80 1.1 christos 81 1.1 christos ret 82 1.1 christos restore %g0,1,%o0 ! return 1 83 1.1 christos 84 1.1 christos .Lno_key: 85 1.1 christos ret 86 1.1 christos restore %g0,%g0,%o0 ! return 0 87 1.1 christos .type poly1305_init,#function 88 1.1 christos .size poly1305_init,.-poly1305_init 89 1.1 christos 90 1.1 christos .globl poly1305_blocks 91 1.1 christos .align 32 92 1.1 christos poly1305_blocks: 93 1.1 christos save %sp,-STACK_FRAME,%sp 94 1.1 christos srln %i2,4,%i2 95 1.1 christos 96 1.1 christos brz,pn %i2,.Lno_data 97 1.1 christos nop 98 1.1 christos 99 1.1 christos ld [%i0+32+0],%l1 ! load key 100 1.1 christos ld [%i0+32+4],%l0 101 1.1 christos ld [%i0+32+8],%l3 102 1.1 christos ld [%i0+32+12],%l2 103 1.1 christos 104 1.1 christos ld [%i0+0],%o1 ! load hash value 105 1.1 christos ld [%i0+4],%o0 106 1.1 christos ld [%i0+8],%o3 107 1.1 christos ld [%i0+12],%o2 108 1.1 christos ld [%i0+16],%l7 109 1.1 christos 110 1.1 christos and %i1,7,%i5 ! alignment factor 111 1.1 christos andn %i1,7,%i1 112 1.1 christos set 8,%g2 113 1.1 christos sll %i5,3,%i5 ! *8 114 1.1 christos set 16,%g3 115 1.1 christos neg %i5,%i4 116 1.1 christos 117 1.1 christos srl %l1,2,%l4 118 1.1 christos srl %l2,2,%l5 119 1.1 christos add %l1,%l4,%l4 120 1.1 christos srl %l3,2,%l6 121 1.1 christos add %l2,%l5,%l5 122 1.1 christos add %l3,%l6,%l6 123 1.1 christos 124 1.1 christos .Loop: 125 1.1 christos ldxa [%i1+%g0]0x88,%g1 ! load little-endian input 126 1.1 christos brz,pt %i5,.Linp_aligned 127 1.1 christos ldxa [%i1+%g2]0x88,%g2 128 1.1 christos 129 1.1 christos ldxa [%i1+%g3]0x88,%g3 130 1.1 christos srlx %g1,%i5,%g1 131 1.1 christos sllx %g2,%i4,%o5 132 1.1 christos srlx %g2,%i5,%g2 133 1.1 christos or %o5,%g1,%g1 134 1.1 christos sllx %g3,%i4,%g3 135 1.1 christos or %g3,%g2,%g2 136 1.1 christos 137 1.1 christos .Linp_aligned: 138 1.1 christos srlx %g1,32,%o4 139 1.1 christos addcc %g1,%o0,%o0 ! accumulate input 140 1.1 christos srlx %g2,32,%o5 141 1.1 christos addccc %o4,%o1,%o1 142 1.1 christos addccc %g2,%o2,%o2 143 1.1 christos addccc %o5,%o3,%o3 144 1.1 christos addc %i3,%l7,%l7 145 1.1 christos 146 1.1 christos umul %l0,%o0,%g1 147 1.1 christos umul %l1,%o0,%g2 148 1.1 christos umul %l2,%o0,%g3 149 1.1 christos umul %l3,%o0,%g4 150 1.1 christos sub %i2,1,%i2 151 1.1 christos add %i1,16,%i1 152 1.1 christos 153 1.1 christos umul %l6,%o1,%o4 154 1.1 christos umul %l0,%o1,%o5 155 1.1 christos umul %l1,%o1,%o7 156 1.1 christos add %o4,%g1,%g1 157 1.1 christos add %o5,%g2,%g2 158 1.1 christos umul %l2,%o1,%o4 159 1.1 christos add %o7,%g3,%g3 160 1.1 christos add %o4,%g4,%g4 161 1.1 christos 162 1.1 christos umul %l5,%o2,%o5 163 1.1 christos umul %l6,%o2,%o7 164 1.1 christos umul %l0,%o2,%o4 165 1.1 christos add %o5,%g1,%g1 166 1.1 christos add %o7,%g2,%g2 167 1.1 christos umul %l1,%o2,%o5 168 1.1 christos add %o4,%g3,%g3 169 1.1 christos add %o5,%g4,%g4 170 1.1 christos 171 1.1 christos umul %l4,%o3,%o7 172 1.1 christos umul %l5,%o3,%o4 173 1.1 christos umul %l6,%o3,%o5 174 1.1 christos add %o7,%g1,%g1 175 1.1 christos add %o4,%g2,%g2 176 1.1 christos umul %l0,%o3,%o7 177 1.1 christos add %o5,%g3,%g3 178 1.1 christos add %o7,%g4,%g4 179 1.1 christos 180 1.1 christos umul %l4,%l7,%o4 181 1.1 christos umul %l5,%l7,%o5 182 1.1 christos umul %l6,%l7,%o7 183 1.1 christos umul %l0,%l7,%l7 184 1.1 christos add %o4,%g2,%g2 185 1.1 christos add %o5,%g3,%g3 186 1.1 christos srlx %g1,32,%o1 187 1.1 christos add %o7,%g4,%g4 188 1.1 christos srlx %g2,32,%o2 189 1.1 christos 190 1.1 christos addcc %g2,%o1,%o1 191 1.1 christos srlx %g3,32,%o3 192 1.1 christos set 8,%g2 193 1.1 christos addccc %g3,%o2,%o2 194 1.1 christos srlx %g4,32,%o4 195 1.1 christos set 16,%g3 196 1.1 christos addccc %g4,%o3,%o3 197 1.1 christos addc %o4,%l7,%l7 198 1.1 christos 199 1.1 christos srl %l7,2,%o4 ! final reduction step 200 1.1 christos andn %l7,3,%o5 201 1.1 christos and %l7,3,%l7 202 1.1 christos add %o5,%o4,%o4 203 1.1 christos 204 1.1 christos addcc %o4,%g1,%o0 205 1.1 christos addccc %g0,%o1,%o1 206 1.1 christos addccc %g0,%o2,%o2 207 1.1 christos addccc %g0,%o3,%o3 208 1.1 christos brnz,pt %i2,.Loop 209 1.1 christos addc %g0,%l7,%l7 210 1.1 christos 211 1.1 christos st %o1,[%i0+0] ! store hash value 212 1.1 christos st %o0,[%i0+4] 213 1.1 christos st %o3,[%i0+8] 214 1.1 christos st %o2,[%i0+12] 215 1.1 christos st %l7,[%i0+16] 216 1.1 christos 217 1.1 christos .Lno_data: 218 1.1 christos ret 219 1.1 christos restore 220 1.1 christos .type poly1305_blocks,#function 221 1.1 christos .size poly1305_blocks,.-poly1305_blocks 222 1.1 christos .align 32 223 1.1 christos poly1305_blocks_vis3: 224 1.1 christos save %sp,-STACK_FRAME,%sp 225 1.1 christos srln %i2,4,%i2 226 1.1 christos 227 1.1 christos brz,pn %i2,.Lno_data 228 1.1 christos nop 229 1.1 christos 230 1.1 christos ldx [%i0+32+0],%o3 ! load key 231 1.1 christos ldx [%i0+32+8],%o4 232 1.1 christos 233 1.1 christos ldx [%i0+0],%o0 ! load hash value 234 1.1 christos ldx [%i0+8],%o1 235 1.1 christos ld [%i0+16],%o2 236 1.1 christos 237 1.1 christos and %i1,7,%i5 ! alignment factor 238 1.1 christos andn %i1,7,%i1 239 1.1 christos set 8,%l1 240 1.1 christos sll %i5,3,%i5 ! *8 241 1.1 christos set 16,%l2 242 1.1 christos neg %i5,%i4 243 1.1 christos 244 1.1 christos srlx %o4,2,%o5 245 1.1 christos b .Loop_vis3 246 1.1 christos add %o4,%o5,%o5 247 1.1 christos 248 1.1 christos .Loop_vis3: 249 1.1 christos ldxa [%i1+%g0]0x88,%g1 ! load little-endian input 250 1.1 christos brz,pt %i5,.Linp_aligned_vis3 251 1.1 christos ldxa [%i1+%l1]0x88,%g2 252 1.1 christos 253 1.1 christos ldxa [%i1+%l2]0x88,%g3 254 1.1 christos srlx %g1,%i5,%g1 255 1.1 christos sllx %g2,%i4,%o7 256 1.1 christos srlx %g2,%i5,%g2 257 1.1 christos or %o7,%g1,%g1 258 1.1 christos sllx %g3,%i4,%g3 259 1.1 christos or %g3,%g2,%g2 260 1.1 christos 261 1.1 christos .Linp_aligned_vis3: 262 1.1 christos addcc %g1,%o0,%o0 ! accumulate input 263 1.1 christos sub %i2,1,%i2 264 1.1 christos .word 0x93b08269 !addxccc %g2,%o1,%o1 265 1.1 christos add %i1,16,%i1 266 1.1 christos 267 1.1 christos mulx %o3,%o0,%g1 ! r0*h0 268 1.1 christos .word 0x95b6c22a !addxc %i3,%o2,%o2 269 1.1 christos .word 0x85b2c2c8 !umulxhi %o3,%o0,%g2 270 1.1 christos mulx %o5,%o1,%g4 ! s1*h1 271 1.1 christos .word 0x9fb342c9 !umulxhi %o5,%o1,%o7 272 1.1 christos addcc %g4,%g1,%g1 273 1.1 christos mulx %o4,%o0,%g4 ! r1*h0 274 1.1 christos .word 0x85b3c222 !addxc %o7,%g2,%g2 275 1.1 christos .word 0x87b302c8 !umulxhi %o4,%o0,%g3 276 1.1 christos addcc %g4,%g2,%g2 277 1.1 christos mulx %o3,%o1,%g4 ! r0*h1 278 1.1 christos .word 0x87b00223 !addxc %g0,%g3,%g3 279 1.1 christos .word 0x9fb2c2c9 !umulxhi %o3,%o1,%o7 280 1.1 christos addcc %g4,%g2,%g2 281 1.1 christos mulx %o5,%o2,%g4 ! s1*h2 282 1.1 christos .word 0x87b3c223 !addxc %o7,%g3,%g3 283 1.1 christos mulx %o3,%o2,%o7 ! r0*h2 284 1.1 christos addcc %g4,%g2,%g2 285 1.1 christos .word 0x87b3c223 !addxc %o7,%g3,%g3 286 1.1 christos 287 1.1 christos srlx %g3,2,%g4 ! final reduction step 288 1.1 christos andn %g3,3,%o7 289 1.1 christos and %g3,3,%o2 290 1.1 christos add %o7,%g4,%g4 291 1.1 christos 292 1.1 christos addcc %g4,%g1,%o0 293 1.1 christos .word 0x93b00262 !addxccc %g0,%g2,%o1 294 1.1 christos brnz,pt %i2,.Loop_vis3 295 1.1 christos .word 0x95b0022a !addxc %g0,%o2,%o2 296 1.1 christos 297 1.1 christos stx %o0,[%i0+0] ! store hash value 298 1.1 christos stx %o1,[%i0+8] 299 1.1 christos st %o2,[%i0+16] 300 1.1 christos 301 1.1 christos ret 302 1.1 christos restore 303 1.1 christos .type poly1305_blocks_vis3,#function 304 1.1 christos .size poly1305_blocks_vis3,.-poly1305_blocks_vis3 305 1.1 christos .globl poly1305_emit 306 1.1 christos .align 32 307 1.1 christos poly1305_emit: 308 1.1 christos save %sp,-STACK_FRAME,%sp 309 1.1 christos 310 1.1 christos ld [%i0+0],%o1 ! load hash value 311 1.1 christos ld [%i0+4],%o0 312 1.1 christos ld [%i0+8],%o3 313 1.1 christos ld [%i0+12],%o2 314 1.1 christos ld [%i0+16],%l7 315 1.1 christos 316 1.1 christos addcc %o0,5,%l0 ! compare to modulus 317 1.1 christos addccc %o1,0,%l1 318 1.1 christos addccc %o2,0,%l2 319 1.1 christos addccc %o3,0,%l3 320 1.1 christos addc %l7,0,%l7 321 1.1 christos andcc %l7,4,%g0 ! did it carry/borrow? 322 1.1 christos 323 1.1 christos movnz %icc,%l0,%o0 324 1.1 christos ld [%i2+0],%l0 ! load nonce 325 1.1 christos movnz %icc,%l1,%o1 326 1.1 christos ld [%i2+4],%l1 327 1.1 christos movnz %icc,%l2,%o2 328 1.1 christos ld [%i2+8],%l2 329 1.1 christos movnz %icc,%l3,%o3 330 1.1 christos ld [%i2+12],%l3 331 1.1 christos 332 1.1 christos addcc %l0,%o0,%o0 ! accumulate nonce 333 1.1 christos addccc %l1,%o1,%o1 334 1.1 christos addccc %l2,%o2,%o2 335 1.1 christos addc %l3,%o3,%o3 336 1.1 christos 337 1.1 christos srl %o0,8,%l0 338 1.1 christos stb %o0,[%i1+0] ! store little-endian result 339 1.1 christos srl %o0,16,%l1 340 1.1 christos stb %l0,[%i1+1] 341 1.1 christos srl %o0,24,%l2 342 1.1 christos stb %l1,[%i1+2] 343 1.1 christos stb %l2,[%i1+3] 344 1.1 christos 345 1.1 christos srl %o1,8,%l0 346 1.1 christos stb %o1,[%i1+4] 347 1.1 christos srl %o1,16,%l1 348 1.1 christos stb %l0,[%i1+5] 349 1.1 christos srl %o1,24,%l2 350 1.1 christos stb %l1,[%i1+6] 351 1.1 christos stb %l2,[%i1+7] 352 1.1 christos 353 1.1 christos srl %o2,8,%l0 354 1.1 christos stb %o2,[%i1+8] 355 1.1 christos srl %o2,16,%l1 356 1.1 christos stb %l0,[%i1+9] 357 1.1 christos srl %o2,24,%l2 358 1.1 christos stb %l1,[%i1+10] 359 1.1 christos stb %l2,[%i1+11] 360 1.1 christos 361 1.1 christos srl %o3,8,%l0 362 1.1 christos stb %o3,[%i1+12] 363 1.1 christos srl %o3,16,%l1 364 1.1 christos stb %l0,[%i1+13] 365 1.1 christos srl %o3,24,%l2 366 1.1 christos stb %l1,[%i1+14] 367 1.1 christos stb %l2,[%i1+15] 368 1.1 christos 369 1.1 christos ret 370 1.1 christos restore 371 1.1 christos .type poly1305_emit,#function 372 1.1 christos .size poly1305_emit,.-poly1305_emit 373 1.1 christos .align 32 374 1.1 christos poly1305_init_fma: 375 1.1 christos save %sp,-STACK_FRAME-16,%sp 376 1.1 christos nop 377 1.1 christos 378 1.1 christos .Lpoly1305_init_fma: 379 1.1 christos 1: call .+8 380 1.1 christos add %o7,.Lconsts_fma-1b,%o7 381 1.1 christos 382 1.1 christos ldd [%o7+8*0],%f16 ! load constants 383 1.1 christos ldd [%o7+8*1],%f18 384 1.1 christos ldd [%o7+8*2],%f20 385 1.1 christos ldd [%o7+8*3],%f22 386 1.1 christos ldd [%o7+8*5],%f26 387 1.1 christos 388 1.1 christos std %f16,[%i0+8*0] ! initial hash value, biased 0 389 1.1 christos std %f18,[%i0+8*1] 390 1.1 christos std %f20,[%i0+8*2] 391 1.1 christos std %f22,[%i0+8*3] 392 1.1 christos 393 1.1 christos brz,pn %i1,.Lno_key_fma 394 1.1 christos nop 395 1.1 christos 396 1.1 christos stx %fsr,[%sp+LOCALS] ! save original %fsr 397 1.1 christos ldx [%o7+8*6],%fsr ! load new %fsr 398 1.1 christos 399 1.1 christos std %f16,[%i0+8*4] ! key "template" 400 1.1 christos std %f18,[%i0+8*5] 401 1.1 christos std %f20,[%i0+8*6] 402 1.1 christos std %f22,[%i0+8*7] 403 1.1 christos 404 1.1 christos and %i1,7,%l2 405 1.1 christos andn %i1,7,%i1 ! align pointer 406 1.1 christos mov 8,%l0 407 1.1 christos sll %l2,3,%l2 408 1.1 christos mov 16,%l1 409 1.1 christos neg %l2,%l3 410 1.1 christos 411 1.1 christos ldxa [%i1+%g0]0x88,%o0 ! load little-endian key 412 1.1 christos ldxa [%i1+%l0]0x88,%o2 413 1.1 christos 414 1.1 christos brz %l2,.Lkey_aligned_fma 415 1.1 christos sethi %hi(0xf0000000),%l0 ! 0xf0000000 416 1.1 christos 417 1.1 christos ldxa [%i1+%l1]0x88,%o4 418 1.1 christos 419 1.1 christos srlx %o0,%l2,%o0 ! align data 420 1.1 christos sllx %o2,%l3,%o1 421 1.1 christos srlx %o2,%l2,%o2 422 1.1 christos or %o1,%o0,%o0 423 1.1 christos sllx %o4,%l3,%o3 424 1.1 christos or %o3,%o2,%o2 425 1.1 christos 426 1.1 christos .Lkey_aligned_fma: 427 1.1 christos or %l0,3,%l1 ! 0xf0000003 428 1.1 christos srlx %o0,32,%o1 429 1.1 christos andn %o0,%l0,%o0 ! &=0x0fffffff 430 1.1 christos andn %o1,%l1,%o1 ! &=0x0ffffffc 431 1.1 christos srlx %o2,32,%o3 432 1.1 christos andn %o2,%l1,%o2 433 1.1 christos andn %o3,%l1,%o3 434 1.1 christos 435 1.1 christos st %o0,[%i0+36] ! fill "template" 436 1.1 christos st %o1,[%i0+44] 437 1.1 christos st %o2,[%i0+52] 438 1.1 christos st %o3,[%i0+60] 439 1.1 christos 440 1.1 christos ldd [%i0+8*4],%f0 ! load [biased] key 441 1.1 christos ldd [%i0+8*5],%f4 442 1.1 christos ldd [%i0+8*6],%f8 443 1.1 christos ldd [%i0+8*7],%f12 444 1.1 christos 445 1.1 christos fsubd %f0,%f16, %f0 ! r0 446 1.1 christos ldd [%o7+8*7],%f16 ! more constants 447 1.1 christos fsubd %f4,%f18,%f4 ! r1 448 1.1 christos ldd [%o7+8*8],%f18 449 1.1 christos fsubd %f8,%f20,%f8 ! r2 450 1.1 christos ldd [%o7+8*9],%f20 451 1.1 christos fsubd %f12,%f22,%f12 ! r3 452 1.1 christos ldd [%o7+8*10],%f22 453 1.1 christos 454 1.1 christos fmuld %f26,%f4,%f52 ! s1 455 1.1 christos fmuld %f26,%f8,%f40 ! s2 456 1.1 christos fmuld %f26,%f12,%f44 ! s3 457 1.1 christos 458 1.1 christos faddd %f0,%f16, %f2 459 1.1 christos faddd %f4,%f18,%f6 460 1.1 christos faddd %f8,%f20,%f10 461 1.1 christos faddd %f12,%f22,%f14 462 1.1 christos 463 1.1 christos fsubd %f2,%f16, %f2 464 1.1 christos ldd [%o7+8*11],%f16 ! more constants 465 1.1 christos fsubd %f6,%f18,%f6 466 1.1 christos ldd [%o7+8*12],%f18 467 1.1 christos fsubd %f10,%f20,%f10 468 1.1 christos ldd [%o7+8*13],%f20 469 1.1 christos fsubd %f14,%f22,%f14 470 1.1 christos 471 1.1 christos fsubd %f0,%f2,%f0 472 1.1 christos std %f2,[%i0+8*5] ! r0hi 473 1.1 christos fsubd %f4,%f6,%f4 474 1.1 christos std %f6,[%i0+8*7] ! r1hi 475 1.1 christos fsubd %f8,%f10,%f8 476 1.1 christos std %f10,[%i0+8*9] ! r2hi 477 1.1 christos fsubd %f12,%f14,%f12 478 1.1 christos std %f14,[%i0+8*11] ! r3hi 479 1.1 christos 480 1.1 christos faddd %f52,%f16, %f54 481 1.1 christos faddd %f40,%f18,%f42 482 1.1 christos faddd %f44,%f20,%f46 483 1.1 christos 484 1.1 christos fsubd %f54,%f16, %f54 485 1.1 christos fsubd %f42,%f18,%f42 486 1.1 christos fsubd %f46,%f20,%f46 487 1.1 christos 488 1.1 christos fsubd %f52,%f54,%f52 489 1.1 christos fsubd %f40,%f42,%f40 490 1.1 christos fsubd %f44,%f46,%f44 491 1.1 christos 492 1.1 christos ldx [%sp+LOCALS],%fsr ! restore %fsr 493 1.1 christos 494 1.1 christos std %f0,[%i0+8*4] ! r0lo 495 1.1 christos std %f4,[%i0+8*6] ! r1lo 496 1.1 christos std %f8,[%i0+8*8] ! r2lo 497 1.1 christos std %f12,[%i0+8*10] ! r3lo 498 1.1 christos 499 1.1 christos std %f54,[%i0+8*13] 500 1.1 christos std %f42,[%i0+8*15] 501 1.1 christos std %f46,[%i0+8*17] 502 1.1 christos 503 1.1 christos std %f52,[%i0+8*12] 504 1.1 christos std %f40,[%i0+8*14] 505 1.1 christos std %f44,[%i0+8*16] 506 1.1 christos 507 1.1 christos add %o7,poly1305_blocks_fma-.Lconsts_fma,%o0 508 1.1 christos add %o7,poly1305_emit_fma-.Lconsts_fma,%o1 509 1.1 christos STPTR %o0,[%i2] 510 1.1 christos STPTR %o1,[%i2+SIZE_T] 511 1.1 christos 512 1.1 christos ret 513 1.1 christos restore %g0,1,%o0 ! return 1 514 1.1 christos 515 1.1 christos .Lno_key_fma: 516 1.1 christos ret 517 1.1 christos restore %g0,%g0,%o0 ! return 0 518 1.1 christos .type poly1305_init_fma,#function 519 1.1 christos .size poly1305_init_fma,.-poly1305_init_fma 520 1.1 christos 521 1.1 christos .align 32 522 1.1 christos poly1305_blocks_fma: 523 1.1 christos save %sp,-STACK_FRAME-48,%sp 524 1.1 christos srln %i2,4,%i2 525 1.1 christos 526 1.1 christos brz,pn %i2,.Labort 527 1.1 christos sub %i2,1,%i2 528 1.1 christos 529 1.1 christos 1: call .+8 530 1.1 christos add %o7,.Lconsts_fma-1b,%o7 531 1.1 christos 532 1.1 christos ldd [%o7+8*0],%f16 ! load constants 533 1.1 christos ldd [%o7+8*1],%f18 534 1.1 christos ldd [%o7+8*2],%f20 535 1.1 christos ldd [%o7+8*3],%f22 536 1.1 christos ldd [%o7+8*4],%f24 537 1.1 christos ldd [%o7+8*5],%f26 538 1.1 christos 539 1.1 christos ldd [%i0+8*0],%f0 ! load [biased] hash value 540 1.1 christos ldd [%i0+8*1],%f4 541 1.1 christos ldd [%i0+8*2],%f8 542 1.1 christos ldd [%i0+8*3],%f12 543 1.1 christos 544 1.1 christos std %f16,[%sp+LOCALS+8*0] ! input "template" 545 1.1 christos sethi %hi((1023+52+96)<<20),%o3 546 1.1 christos std %f18,[%sp+LOCALS+8*1] 547 1.1 christos or %i3,%o3,%o3 548 1.1 christos std %f20,[%sp+LOCALS+8*2] 549 1.1 christos st %o3,[%sp+LOCALS+8*3] 550 1.1 christos 551 1.1 christos and %i1,7,%l2 552 1.1 christos andn %i1,7,%i1 ! align pointer 553 1.1 christos mov 8,%l0 554 1.1 christos sll %l2,3,%l2 555 1.1 christos mov 16,%l1 556 1.1 christos neg %l2,%l3 557 1.1 christos 558 1.1 christos ldxa [%i1+%g0]0x88,%o0 ! load little-endian input 559 1.1 christos brz %l2,.Linp_aligned_fma 560 1.1 christos ldxa [%i1+%l0]0x88,%o2 561 1.1 christos 562 1.1 christos ldxa [%i1+%l1]0x88,%o4 563 1.1 christos add %i1,8,%i1 564 1.1 christos 565 1.1 christos srlx %o0,%l2,%o0 ! align data 566 1.1 christos sllx %o2,%l3,%o1 567 1.1 christos srlx %o2,%l2,%o2 568 1.1 christos or %o1,%o0,%o0 569 1.1 christos sllx %o4,%l3,%o3 570 1.1 christos srlx %o4,%l2,%o4 ! pre-shift 571 1.1 christos or %o3,%o2,%o2 572 1.1 christos 573 1.1 christos .Linp_aligned_fma: 574 1.1 christos srlx %o0,32,%o1 575 1.1 christos movrz %i2,0,%l1 576 1.1 christos srlx %o2,32,%o3 577 1.1 christos add %l1,%i1,%i1 ! conditional advance 578 1.1 christos 579 1.1 christos st %o0,[%sp+LOCALS+8*0+4] ! fill "template" 580 1.1 christos st %o1,[%sp+LOCALS+8*1+4] 581 1.1 christos st %o2,[%sp+LOCALS+8*2+4] 582 1.1 christos st %o3,[%sp+LOCALS+8*3+4] 583 1.1 christos 584 1.1 christos ldd [%i0+8*4],%f28 ! load key 585 1.1 christos ldd [%i0+8*5],%f30 586 1.1 christos ldd [%i0+8*6],%f32 587 1.1 christos ldd [%i0+8*7],%f34 588 1.1 christos ldd [%i0+8*8],%f36 589 1.1 christos ldd [%i0+8*9],%f38 590 1.1 christos ldd [%i0+8*10],%f48 591 1.1 christos ldd [%i0+8*11],%f50 592 1.1 christos ldd [%i0+8*12],%f52 593 1.1 christos ldd [%i0+8*13],%f54 594 1.1 christos ldd [%i0+8*14],%f40 595 1.1 christos ldd [%i0+8*15],%f42 596 1.1 christos ldd [%i0+8*16],%f44 597 1.1 christos ldd [%i0+8*17],%f46 598 1.1 christos 599 1.1 christos stx %fsr,[%sp+LOCALS+8*4] ! save original %fsr 600 1.1 christos ldx [%o7+8*6],%fsr ! load new %fsr 601 1.1 christos 602 1.1 christos subcc %i2,1,%i2 603 1.1 christos movrz %i2,0,%l1 604 1.1 christos 605 1.1 christos ldd [%sp+LOCALS+8*0],%f56 ! load biased input 606 1.1 christos ldd [%sp+LOCALS+8*1],%f58 607 1.1 christos ldd [%sp+LOCALS+8*2],%f60 608 1.1 christos ldd [%sp+LOCALS+8*3],%f62 609 1.1 christos 610 1.1 christos fsubd %f0,%f16, %f0 ! de-bias hash value 611 1.1 christos fsubd %f4,%f18,%f4 612 1.1 christos ldxa [%i1+%g0]0x88,%o0 ! modulo-scheduled input load 613 1.1 christos fsubd %f8,%f20,%f8 614 1.1 christos fsubd %f12,%f22,%f12 615 1.1 christos ldxa [%i1+%l0]0x88,%o2 616 1.1 christos 617 1.1 christos fsubd %f56,%f16, %f56 ! de-bias input 618 1.1 christos fsubd %f58,%f18,%f58 619 1.1 christos fsubd %f60,%f20,%f60 620 1.1 christos fsubd %f62,%f22,%f62 621 1.1 christos 622 1.1 christos brz %l2,.Linp_aligned_fma2 623 1.1 christos add %l1,%i1,%i1 ! conditional advance 624 1.1 christos 625 1.1 christos sllx %o0,%l3,%o1 ! align data 626 1.1 christos srlx %o0,%l2,%o3 627 1.1 christos or %o1,%o4,%o0 628 1.1 christos sllx %o2,%l3,%o1 629 1.1 christos srlx %o2,%l2,%o4 ! pre-shift 630 1.1 christos or %o3,%o1,%o2 631 1.1 christos .Linp_aligned_fma2: 632 1.1 christos srlx %o0,32,%o1 633 1.1 christos srlx %o2,32,%o3 634 1.1 christos 635 1.1 christos faddd %f0,%f56,%f56 ! accumulate input 636 1.1 christos stw %o0,[%sp+LOCALS+8*0+4] 637 1.1 christos faddd %f4,%f58,%f58 638 1.1 christos stw %o1,[%sp+LOCALS+8*1+4] 639 1.1 christos faddd %f8,%f60,%f60 640 1.1 christos stw %o2,[%sp+LOCALS+8*2+4] 641 1.1 christos faddd %f12,%f62,%f62 642 1.1 christos stw %o3,[%sp+LOCALS+8*3+4] 643 1.1 christos 644 1.1 christos b .Lentry_fma 645 1.1 christos nop 646 1.1 christos 647 1.1 christos .align 16 648 1.1 christos .Loop_fma: 649 1.1 christos ldxa [%i1+%g0]0x88,%o0 ! modulo-scheduled input load 650 1.1 christos ldxa [%i1+%l0]0x88,%o2 651 1.1 christos movrz %i2,0,%l1 652 1.1 christos 653 1.1 christos faddd %f52,%f0,%f0 ! accumulate input 654 1.1 christos faddd %f54,%f2,%f2 655 1.1 christos faddd %f62,%f8,%f8 656 1.1 christos faddd %f60,%f10,%f10 657 1.1 christos 658 1.1 christos brz,pn %l2,.Linp_aligned_fma3 659 1.1 christos add %l1,%i1,%i1 ! conditional advance 660 1.1 christos 661 1.1 christos sllx %o0,%l3,%o1 ! align data 662 1.1 christos srlx %o0,%l2,%o3 663 1.1 christos or %o1,%o4,%o0 664 1.1 christos sllx %o2,%l3,%o1 665 1.1 christos srlx %o2,%l2,%o4 ! pre-shift 666 1.1 christos or %o3,%o1,%o2 667 1.1 christos 668 1.1 christos .Linp_aligned_fma3: 669 1.1 christos !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! base 2^48 -> base 2^32 670 1.1 christos faddd %f20,%f4,%f52 671 1.1 christos srlx %o0,32,%o1 672 1.1 christos faddd %f20,%f6,%f54 673 1.1 christos srlx %o2,32,%o3 674 1.1 christos faddd %f24,%f12,%f60 675 1.1 christos st %o0,[%sp+LOCALS+8*0+4] ! fill "template" 676 1.1 christos faddd %f24,%f14,%f62 677 1.1 christos st %o1,[%sp+LOCALS+8*1+4] 678 1.1 christos faddd %f18,%f0,%f48 679 1.1 christos st %o2,[%sp+LOCALS+8*2+4] 680 1.1 christos faddd %f18,%f2,%f50 681 1.1 christos st %o3,[%sp+LOCALS+8*3+4] 682 1.1 christos faddd %f22,%f8,%f56 683 1.1 christos faddd %f22,%f10,%f58 684 1.1 christos 685 1.1 christos fsubd %f52,%f20,%f52 686 1.1 christos fsubd %f54,%f20,%f54 687 1.1 christos fsubd %f60,%f24,%f60 688 1.1 christos fsubd %f62,%f24,%f62 689 1.1 christos fsubd %f48,%f18,%f48 690 1.1 christos fsubd %f50,%f18,%f50 691 1.1 christos fsubd %f56,%f22,%f56 692 1.1 christos fsubd %f58,%f22,%f58 693 1.1 christos 694 1.1 christos fsubd %f4,%f52,%f4 695 1.1 christos fsubd %f6,%f54,%f6 696 1.1 christos fsubd %f12,%f60,%f12 697 1.1 christos fsubd %f14,%f62,%f14 698 1.1 christos fsubd %f8,%f56,%f8 699 1.1 christos fsubd %f10,%f58,%f10 700 1.1 christos fsubd %f0,%f48,%f0 701 1.1 christos fsubd %f2,%f50,%f2 702 1.1 christos 703 1.1 christos faddd %f4,%f48,%f4 704 1.1 christos faddd %f6,%f50,%f6 705 1.1 christos faddd %f12,%f56,%f12 706 1.1 christos faddd %f14,%f58,%f14 707 1.1 christos faddd %f8,%f52,%f8 708 1.1 christos faddd %f10,%f54,%f10 709 1.1 christos .word 0x81be805d !fmaddd %f26,%f60,%f0,%f0 710 1.1 christos .word 0x85be845f !fmaddd %f26,%f62,%f2,%f2 711 1.1 christos 712 1.1 christos faddd %f4,%f6,%f58 713 1.1 christos ldd [%i0+8*12],%f52 ! reload constants 714 1.1 christos faddd %f12,%f14,%f62 715 1.1 christos ldd [%i0+8*13],%f54 716 1.1 christos faddd %f8,%f10,%f60 717 1.1 christos ldd [%i0+8*10],%f48 718 1.1 christos faddd %f0,%f2,%f56 719 1.1 christos ldd [%i0+8*11],%f50 720 1.1 christos 721 1.1 christos .Lentry_fma: 722 1.1 christos fmuld %f58,%f44,%f0 723 1.1 christos fmuld %f58,%f46,%f2 724 1.1 christos fmuld %f58,%f32,%f8 725 1.1 christos fmuld %f58,%f34,%f10 726 1.1 christos fmuld %f58,%f28,%f4 727 1.1 christos fmuld %f58,%f30,%f6 728 1.1 christos fmuld %f58,%f36,%f12 729 1.1 christos fmuld %f58,%f38,%f14 730 1.1 christos 731 1.1 christos .word 0x81bfc055 !fmaddd %f62,%f52,%f0,%f0 732 1.1 christos .word 0x85bfc457 !fmaddd %f62,%f54,%f2,%f2 733 1.1 christos .word 0x91bfd04d !fmaddd %f62,%f44,%f8,%f8 734 1.1 christos .word 0x95bfd44f !fmaddd %f62,%f46,%f10,%f10 735 1.1 christos .word 0x89bfc849 !fmaddd %f62,%f40,%f4,%f4 736 1.1 christos .word 0x8dbfcc4b !fmaddd %f62,%f42,%f6,%f6 737 1.1 christos .word 0x99bfd85c !fmaddd %f62,%f28,%f12,%f12 738 1.1 christos .word 0x9dbfdc5e !fmaddd %f62,%f30,%f14,%f14 739 1.1 christos 740 1.1 christos .word 0x81bf4049 !fmaddd %f60,%f40,%f0,%f0 741 1.1 christos .word 0x85bf444b !fmaddd %f60,%f42,%f2,%f2 742 1.1 christos .word 0x91bf505c !fmaddd %f60,%f28,%f8,%f8 743 1.1 christos .word 0x95bf545e !fmaddd %f60,%f30,%f10,%f10 744 1.1 christos .word 0x89bf484d !fmaddd %f60,%f44,%f4,%f4 745 1.1 christos ldd [%sp+LOCALS+8*0],%f52 ! load [biased] input 746 1.1 christos .word 0x8dbf4c4f !fmaddd %f60,%f46,%f6,%f6 747 1.1 christos ldd [%sp+LOCALS+8*1],%f54 748 1.1 christos .word 0x99bf5841 !fmaddd %f60,%f32,%f12,%f12 749 1.1 christos ldd [%sp+LOCALS+8*2],%f62 750 1.1 christos .word 0x9dbf5c43 !fmaddd %f60,%f34,%f14,%f14 751 1.1 christos ldd [%sp+LOCALS+8*3],%f60 752 1.1 christos 753 1.1 christos .word 0x81be405c !fmaddd %f56,%f28,%f0,%f0 754 1.1 christos fsubd %f52,%f16, %f52 ! de-bias input 755 1.1 christos .word 0x85be445e !fmaddd %f56,%f30,%f2,%f2 756 1.1 christos fsubd %f54,%f18,%f54 757 1.1 christos .word 0x91be5045 !fmaddd %f56,%f36,%f8,%f8 758 1.1 christos fsubd %f62,%f20,%f62 759 1.1 christos .word 0x95be5447 !fmaddd %f56,%f38,%f10,%f10 760 1.1 christos fsubd %f60,%f22,%f60 761 1.1 christos .word 0x89be4841 !fmaddd %f56,%f32,%f4,%f4 762 1.1 christos .word 0x8dbe4c43 !fmaddd %f56,%f34,%f6,%f6 763 1.1 christos .word 0x99be5851 !fmaddd %f56,%f48,%f12,%f12 764 1.1 christos .word 0x9dbe5c53 !fmaddd %f56,%f50,%f14,%f14 765 1.1 christos 766 1.1 christos bcc SIZE_T_CC,.Loop_fma 767 1.1 christos subcc %i2,1,%i2 768 1.1 christos 769 1.1 christos !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! base 2^48 -> base 2^32 770 1.1 christos faddd %f0,%f18,%f48 771 1.1 christos faddd %f2,%f18,%f50 772 1.1 christos faddd %f8,%f22,%f56 773 1.1 christos faddd %f10,%f22,%f58 774 1.1 christos faddd %f4,%f20,%f52 775 1.1 christos faddd %f6,%f20,%f54 776 1.1 christos faddd %f12,%f24,%f60 777 1.1 christos faddd %f14,%f24,%f62 778 1.1 christos 779 1.1 christos fsubd %f48,%f18,%f48 780 1.1 christos fsubd %f50,%f18,%f50 781 1.1 christos fsubd %f56,%f22,%f56 782 1.1 christos fsubd %f58,%f22,%f58 783 1.1 christos fsubd %f52,%f20,%f52 784 1.1 christos fsubd %f54,%f20,%f54 785 1.1 christos fsubd %f60,%f24,%f60 786 1.1 christos fsubd %f62,%f24,%f62 787 1.1 christos 788 1.1 christos fsubd %f4,%f52,%f4 789 1.1 christos fsubd %f6,%f54,%f6 790 1.1 christos fsubd %f12,%f60,%f12 791 1.1 christos fsubd %f14,%f62,%f14 792 1.1 christos fsubd %f8,%f56,%f8 793 1.1 christos fsubd %f10,%f58,%f10 794 1.1 christos fsubd %f0,%f48,%f0 795 1.1 christos fsubd %f2,%f50,%f2 796 1.1 christos 797 1.1 christos faddd %f4,%f48,%f4 798 1.1 christos faddd %f6,%f50,%f6 799 1.1 christos faddd %f12,%f56,%f12 800 1.1 christos faddd %f14,%f58,%f14 801 1.1 christos faddd %f8,%f52,%f8 802 1.1 christos faddd %f10,%f54,%f10 803 1.1 christos .word 0x81be805d !fmaddd %f26,%f60,%f0,%f0 804 1.1 christos .word 0x85be845f !fmaddd %f26,%f62,%f2,%f2 805 1.1 christos 806 1.1 christos faddd %f4,%f6,%f58 807 1.1 christos faddd %f12,%f14,%f62 808 1.1 christos faddd %f8,%f10,%f60 809 1.1 christos faddd %f0,%f2,%f56 810 1.1 christos 811 1.1 christos faddd %f58,%f18,%f58 ! bias 812 1.1 christos faddd %f62,%f22,%f62 813 1.1 christos faddd %f60,%f20,%f60 814 1.1 christos faddd %f56,%f16, %f56 815 1.1 christos 816 1.1 christos ldx [%sp+LOCALS+8*4],%fsr ! restore saved %fsr 817 1.1 christos 818 1.1 christos std %f58,[%i0+8*1] ! store [biased] hash value 819 1.1 christos std %f62,[%i0+8*3] 820 1.1 christos std %f60,[%i0+8*2] 821 1.1 christos std %f56,[%i0+8*0] 822 1.1 christos 823 1.1 christos .Labort: 824 1.1 christos ret 825 1.1 christos restore 826 1.1 christos .type poly1305_blocks_fma,#function 827 1.1 christos .size poly1305_blocks_fma,.-poly1305_blocks_fma 828 1.1 christos .align 32 829 1.1 christos poly1305_emit_fma: 830 1.1 christos save %sp,-STACK_FRAME,%sp 831 1.1 christos 832 1.1 christos ld [%i0+8*0+0],%l5 ! load hash 833 1.1 christos ld [%i0+8*0+4],%l0 834 1.1 christos ld [%i0+8*1+0],%o0 835 1.1 christos ld [%i0+8*1+4],%l1 836 1.1 christos ld [%i0+8*2+0],%o1 837 1.1 christos ld [%i0+8*2+4],%l2 838 1.1 christos ld [%i0+8*3+0],%o2 839 1.1 christos ld [%i0+8*3+4],%l3 840 1.1 christos 841 1.1 christos sethi %hi(0xfff00000),%o3 842 1.1 christos andn %l5,%o3,%l5 ! mask exponent 843 1.1 christos andn %o0,%o3,%o0 844 1.1 christos andn %o1,%o3,%o1 845 1.1 christos andn %o2,%o3,%o2 ! can be partially reduced... 846 1.1 christos mov 3,%o3 847 1.1 christos 848 1.1 christos srl %o2,2,%i3 ! ... so reduce 849 1.1 christos and %o2,%o3,%l4 850 1.1 christos andn %o2,%o3,%o2 851 1.1 christos add %i3,%o2,%o2 852 1.1 christos 853 1.1 christos addcc %o2,%l0,%l0 854 1.1 christos addccc %l5,%l1,%l1 855 1.1 christos addccc %o0,%l2,%l2 856 1.1 christos addccc %o1,%l3,%l3 857 1.1 christos addc %g0,%l4,%l4 858 1.1 christos 859 1.1 christos addcc %l0,5,%l5 ! compare to modulus 860 1.1 christos addccc %l1,0,%o0 861 1.1 christos addccc %l2,0,%o1 862 1.1 christos addccc %l3,0,%o2 863 1.1 christos addc %l4,0,%o3 864 1.1 christos 865 1.1 christos srl %o3,2,%o3 ! did it carry/borrow? 866 1.1 christos neg %o3,%o3 867 1.1 christos sra %o3,31,%o3 ! mask 868 1.1 christos 869 1.1 christos andn %l0,%o3,%l0 870 1.1 christos and %l5,%o3,%l5 871 1.1 christos andn %l1,%o3,%l1 872 1.1 christos and %o0,%o3,%o0 873 1.1 christos or %l5,%l0,%l0 874 1.1 christos ld [%i2+0],%l5 ! load nonce 875 1.1 christos andn %l2,%o3,%l2 876 1.1 christos and %o1,%o3,%o1 877 1.1 christos or %o0,%l1,%l1 878 1.1 christos ld [%i2+4],%o0 879 1.1 christos andn %l3,%o3,%l3 880 1.1 christos and %o2,%o3,%o2 881 1.1 christos or %o1,%l2,%l2 882 1.1 christos ld [%i2+8],%o1 883 1.1 christos or %o2,%l3,%l3 884 1.1 christos ld [%i2+12],%o2 885 1.1 christos 886 1.1 christos addcc %l5,%l0,%l0 ! accumulate nonce 887 1.1 christos addccc %o0,%l1,%l1 888 1.1 christos addccc %o1,%l2,%l2 889 1.1 christos addc %o2,%l3,%l3 890 1.1 christos 891 1.1 christos stb %l0,[%i1+0] ! write little-endian result 892 1.1 christos srl %l0,8,%l0 893 1.1 christos stb %l1,[%i1+4] 894 1.1 christos srl %l1,8,%l1 895 1.1 christos stb %l2,[%i1+8] 896 1.1 christos srl %l2,8,%l2 897 1.1 christos stb %l3,[%i1+12] 898 1.1 christos srl %l3,8,%l3 899 1.1 christos 900 1.1 christos stb %l0,[%i1+1] 901 1.1 christos srl %l0,8,%l0 902 1.1 christos stb %l1,[%i1+5] 903 1.1 christos srl %l1,8,%l1 904 1.1 christos stb %l2,[%i1+9] 905 1.1 christos srl %l2,8,%l2 906 1.1 christos stb %l3,[%i1+13] 907 1.1 christos srl %l3,8,%l3 908 1.1 christos 909 1.1 christos stb %l0,[%i1+2] 910 1.1 christos srl %l0,8,%l0 911 1.1 christos stb %l1,[%i1+6] 912 1.1 christos srl %l1,8,%l1 913 1.1 christos stb %l2,[%i1+10] 914 1.1 christos srl %l2,8,%l2 915 1.1 christos stb %l3,[%i1+14] 916 1.1 christos srl %l3,8,%l3 917 1.1 christos 918 1.1 christos stb %l0,[%i1+3] 919 1.1 christos stb %l1,[%i1+7] 920 1.1 christos stb %l2,[%i1+11] 921 1.1 christos stb %l3,[%i1+15] 922 1.1 christos 923 1.1 christos ret 924 1.1 christos restore 925 1.1 christos .type poly1305_emit_fma,#function 926 1.1 christos .size poly1305_emit_fma,.-poly1305_emit_fma 927 1.1 christos .align 64 928 1.1 christos .Lconsts_fma: 929 1.1 christos .word 0x43300000,0x00000000 ! 2^(52+0) 930 1.1 christos .word 0x45300000,0x00000000 ! 2^(52+32) 931 1.1 christos .word 0x47300000,0x00000000 ! 2^(52+64) 932 1.1 christos .word 0x49300000,0x00000000 ! 2^(52+96) 933 1.1 christos .word 0x4b500000,0x00000000 ! 2^(52+130) 934 1.1 christos 935 1.1 christos .word 0x37f40000,0x00000000 ! 5/2^130 936 1.1 christos .word 0,1<<30 ! fsr: truncate, no exceptions 937 1.1 christos 938 1.1 christos .word 0x44300000,0x00000000 ! 2^(52+16+0) 939 1.1 christos .word 0x46300000,0x00000000 ! 2^(52+16+32) 940 1.1 christos .word 0x48300000,0x00000000 ! 2^(52+16+64) 941 1.1 christos .word 0x4a300000,0x00000000 ! 2^(52+16+96) 942 1.1 christos .word 0x3e300000,0x00000000 ! 2^(52+16+0-96) 943 1.1 christos .word 0x40300000,0x00000000 ! 2^(52+16+32-96) 944 1.1 christos .word 0x42300000,0x00000000 ! 2^(52+16+64-96) 945 1.1 christos .asciz "Poly1305 for SPARCv9/VIS3/FMA, CRYPTOGAMS by <appro (at) openssl.org>" 946 1.1 christos .align 4 947