1.machine "any" 2.text 3 4.globl poly1305_init_fpu 5.type poly1305_init_fpu,@function 6.align 6 7poly1305_init_fpu: 8 stwu 1,-24(1) 9 mflr 6 10 stw 6,28(1) 11 12 bl .LPICmeup 13 14 xor 0,0,0 15 mtlr 6 16 17 lfd 8,8*0(5) 18 lfd 9,8*1(5) 19 lfd 10,8*2(5) 20 lfd 11,8*3(5) 21 lfd 12,8*4(5) 22 lfd 13,8*5(5) 23 24 stfd 8,8*0(3) 25 stfd 9,8*1(3) 26 stfd 10,8*2(3) 27 stfd 11,8*3(3) 28 29 .long 0x7c040040 30 beq- .Lno_key 31 32 lfd 6,8*13(5) 33 mffs 7 34 35 stfd 8,8*4(3) 36 stfd 9,8*5(3) 37 stfd 10,8*6(3) 38 stfd 11,8*7(3) 39 40 li 8,4 41 li 9,8 42 li 10,12 43 lwbrx 7,0,4 44 lwbrx 8,8,4 45 lwbrx 9,9,4 46 lwbrx 10,10,4 47 48 lis 11,0xf000 49 ori 12,11,3 50 andc 7,7,11 51 andc 8,8,12 52 andc 9,9,12 53 andc 10,10,12 54 55 stw 7,36(3) 56 stw 8,44(3) 57 stw 9,52(3) 58 stw 10,60(3) 59 60 mtfsf 255,6 61 stfd 8,8*18(3) 62 stfd 9,8*19(3) 63 stfd 10,8*20(3) 64 stfd 11,8*21(3) 65 stfd 12,8*22(3) 66 stfd 13,8*23(3) 67 68 lfd 0,8*4(3) 69 lfd 2,8*5(3) 70 lfd 4,8*6(3) 71 lfd 6,8*7(3) 72 73 fsub 0,0,8 74 fsub 2,2,9 75 fsub 4,4,10 76 fsub 6,6,11 77 78 lfd 8,8*6(5) 79 lfd 9,8*7(5) 80 lfd 10,8*8(5) 81 lfd 11,8*9(5) 82 83 fmul 3,2,13 84 fmul 5,4,13 85 stfd 7,8*15(3) 86 fmul 7,6,13 87 88 fadd 1,0,8 89 stfd 3,8*12(3) 90 fadd 3,2,9 91 stfd 5,8*13(3) 92 fadd 5,4,10 93 stfd 7,8*14(3) 94 fadd 7,6,11 95 96 fsub 1,1,8 97 fsub 3,3,9 98 fsub 5,5,10 99 fsub 7,7,11 100 101 lfd 8,8*10(5) 102 lfd 9,8*11(5) 103 lfd 10,8*12(5) 104 105 fsub 0,0,1 106 fsub 2,2,3 107 fsub 4,4,5 108 fsub 6,6,7 109 110 stfd 1,8*5(3) 111 stfd 3,8*7(3) 112 stfd 5,8*9(3) 113 stfd 7,8*11(3) 114 115 stfd 0,8*4(3) 116 stfd 2,8*6(3) 117 stfd 4,8*8(3) 118 stfd 6,8*10(3) 119 120 lfd 2,8*12(3) 121 lfd 4,8*13(3) 122 lfd 6,8*14(3) 123 lfd 0,8*15(3) 124 125 fadd 3,2,8 126 fadd 5,4,9 127 fadd 7,6,10 128 129 fsub 3,3,8 130 fsub 5,5,9 131 fsub 7,7,10 132 133 fsub 2,2,3 134 fsub 4,4,5 135 fsub 6,6,7 136 137 stfd 3,8*13(3) 138 stfd 5,8*15(3) 139 stfd 7,8*17(3) 140 141 stfd 2,8*12(3) 142 stfd 4,8*14(3) 143 stfd 6,8*16(3) 144 145 mtfsf 255,0 146.Lno_key: 147 xor 3,3,3 148 addi 1,1,24 149 blr 150.long 0 151.byte 0,12,4,1,0x80,0,2,0 152 153 154.globl poly1305_blocks_fpu 155.type poly1305_blocks_fpu,@function 156.align 4 157poly1305_blocks_fpu: 158 srwi. 5,5,4 159 beq- .Labort 160 161 stwu 1,-216(1) 162 mflr 0 163 stfd 14,72(1) 164 stfd 15,80(1) 165 stfd 16,88(1) 166 stfd 17,96(1) 167 stfd 18,104(1) 168 stfd 19,112(1) 169 stfd 20,120(1) 170 stfd 21,128(1) 171 stfd 22,136(1) 172 stfd 23,144(1) 173 stfd 24,152(1) 174 stfd 25,160(1) 175 stfd 26,168(1) 176 stfd 27,176(1) 177 stfd 28,184(1) 178 stfd 29,192(1) 179 stfd 30,200(1) 180 stfd 31,208(1) 181 stw 0,220(1) 182 183 xor 0,0,0 184 li 10,1 185 mtctr 5 186 neg 5,5 187 stw 0,56(1) 188 stw 10,60(1) 189 190 lfd 8,8*18(3) 191 lfd 9,8*19(3) 192 lfd 10,8*20(3) 193 lfd 11,8*21(3) 194 lfd 12,8*22(3) 195 lfd 13,8*23(3) 196 197 lfd 0,8*0(3) 198 lfd 2,8*1(3) 199 lfd 4,8*2(3) 200 lfd 6,8*3(3) 201 202 stfd 8,24(1) 203 oris 10,6,18736 204 stfd 9,32(1) 205 stfd 10,40(1) 206 stw 10,48(1) 207 208 li 11,4 209 li 12,8 210 li 6,12 211 lwbrx 7,0,4 212 lwbrx 8,11,4 213 lwbrx 9,12,4 214 lwbrx 10,6,4 215 addi 4,4,16 216 217 stw 7,28(1) 218 stw 8,36(1) 219 stw 9,44(1) 220 stw 10,52(1) 221 222 mffs 28 223 lfd 29,56(1) 224 lfd 14,8*4(3) 225 lfd 15,8*5(3) 226 lfd 16,8*6(3) 227 lfd 17,8*7(3) 228 lfd 18,8*8(3) 229 lfd 19,8*9(3) 230 lfd 24,8*10(3) 231 lfd 25,8*11(3) 232 lfd 26,8*12(3) 233 lfd 27,8*13(3) 234 lfd 20,8*14(3) 235 lfd 21,8*15(3) 236 lfd 22,8*16(3) 237 lfd 23,8*17(3) 238 239 stfd 28,56(1) 240 mtfsf 255,29 241 242 addic 5,5,1 243 addze 0,0 244 slwi. 0,0,4 245 sub 4,4,0 246 247 lfd 28,24(1) 248 lfd 29,32(1) 249 lfd 30,40(1) 250 lfd 31,48(1) 251 252 fsub 0,0,8 253 lwbrx 7,0,4 254 fsub 2,2,9 255 lwbrx 8,11,4 256 fsub 4,4,10 257 lwbrx 9,12,4 258 fsub 6,6,11 259 lwbrx 10,6,4 260 261 fsub 28,28,8 262 addi 4,4,16 263 fsub 29,29,9 264 fsub 30,30,10 265 fsub 31,31,11 266 267 fadd 28,28,0 268 stw 7,28(1) 269 fadd 29,29,2 270 stw 8,36(1) 271 fadd 30,30,4 272 stw 9,44(1) 273 fadd 31,31,6 274 stw 10,52(1) 275 276 b .Lentry 277 278.align 4 279.Loop: 280 fsub 30,30,8 281 addic 5,5,1 282 fsub 31,31,9 283 addze 0,0 284 fsub 26,26,10 285 slwi. 0,0,4 286 fsub 27,27,11 287 sub 4,4,0 288 289 fadd 0,0,30 290 fadd 1,1,31 291 fadd 4,4,26 292 fadd 5,5,27 293 294 295 fadd 26,2,10 296 lwbrx 7,0,4 297 fadd 27,3,10 298 lwbrx 8,11,4 299 fadd 30,6,12 300 lwbrx 9,12,4 301 fadd 31,7,12 302 lwbrx 10,6,4 303 fadd 24,0,9 304 addi 4,4,16 305 fadd 25,1,9 306 fadd 28,4,11 307 fadd 29,5,11 308 309 fsub 26,26,10 310 stw 7,28(1) 311 fsub 27,27,10 312 stw 8,36(1) 313 fsub 30,30,12 314 stw 9,44(1) 315 fsub 31,31,12 316 stw 10,52(1) 317 fsub 24,24,9 318 fsub 25,25,9 319 fsub 28,28,11 320 fsub 29,29,11 321 322 fsub 2,2,26 323 fsub 3,3,27 324 fsub 6,6,30 325 fsub 7,7,31 326 fsub 4,4,28 327 fsub 5,5,29 328 fsub 0,0,24 329 fsub 1,1,25 330 331 fadd 2,2,24 332 fadd 3,3,25 333 fadd 6,6,28 334 fadd 7,7,29 335 fadd 4,4,26 336 fadd 5,5,27 337 fmadd 0,30,13,0 338 fmadd 1,31,13,1 339 340 fadd 29,2,3 341 lfd 26,8*12(3) 342 fadd 31,6,7 343 lfd 27,8*13(3) 344 fadd 30,4,5 345 lfd 24,8*10(3) 346 fadd 28,0,1 347 lfd 25,8*11(3) 348.Lentry: 349 fmul 0,22,29 350 fmul 1,23,29 351 fmul 4,16,29 352 fmul 5,17,29 353 fmul 2,14,29 354 fmul 3,15,29 355 fmul 6,18,29 356 fmul 7,19,29 357 358 fmadd 0,26,31,0 359 fmadd 1,27,31,1 360 fmadd 4,22,31,4 361 fmadd 5,23,31,5 362 fmadd 2,20,31,2 363 fmadd 3,21,31,3 364 fmadd 6,14,31,6 365 fmadd 7,15,31,7 366 367 fmadd 0,20,30,0 368 fmadd 1,21,30,1 369 fmadd 4,14,30,4 370 fmadd 5,15,30,5 371 fmadd 2,22,30,2 372 fmadd 3,23,30,3 373 fmadd 6,16,30,6 374 fmadd 7,17,30,7 375 376 fmadd 0,14,28,0 377 lfd 30,24(1) 378 fmadd 1,15,28,1 379 lfd 31,32(1) 380 fmadd 4,18,28,4 381 lfd 26,40(1) 382 fmadd 5,19,28,5 383 lfd 27,48(1) 384 fmadd 2,16,28,2 385 fmadd 3,17,28,3 386 fmadd 6,24,28,6 387 fmadd 7,25,28,7 388 389 bc 16,0,.Loop 390 391 392 fadd 24,0,9 393 fadd 25,1,9 394 fadd 28,4,11 395 fadd 29,5,11 396 fadd 26,2,10 397 fadd 27,3,10 398 fadd 30,6,12 399 fadd 31,7,12 400 401 fsub 24,24,9 402 fsub 25,25,9 403 fsub 28,28,11 404 fsub 29,29,11 405 fsub 26,26,10 406 fsub 27,27,10 407 fsub 30,30,12 408 fsub 31,31,12 409 410 fsub 2,2,26 411 fsub 3,3,27 412 fsub 6,6,30 413 fsub 7,7,31 414 fsub 4,4,28 415 fsub 5,5,29 416 fsub 0,0,24 417 fsub 1,1,25 418 419 fadd 2,2,24 420 fadd 3,3,25 421 fadd 6,6,28 422 fadd 7,7,29 423 fadd 4,4,26 424 fadd 5,5,27 425 fmadd 0,30,13,0 426 fmadd 1,31,13,1 427 428 fadd 29,2,3 429 fadd 31,6,7 430 fadd 30,4,5 431 fadd 28,0,1 432 433 lfd 0,56(1) 434 fadd 29,29,9 435 fadd 31,31,11 436 fadd 30,30,10 437 fadd 28,28,8 438 439 stfd 29,8*1(3) 440 stfd 31,8*3(3) 441 stfd 30,8*2(3) 442 stfd 28,8*0(3) 443 444 mtfsf 255,0 445 lfd 14,72(1) 446 lfd 15,80(1) 447 lfd 16,88(1) 448 lfd 17,96(1) 449 lfd 18,104(1) 450 lfd 19,112(1) 451 lfd 20,120(1) 452 lfd 21,128(1) 453 lfd 22,136(1) 454 lfd 23,144(1) 455 lfd 24,152(1) 456 lfd 25,160(1) 457 lfd 26,168(1) 458 lfd 27,176(1) 459 lfd 28,184(1) 460 lfd 29,192(1) 461 lfd 30,200(1) 462 lfd 31,208(1) 463 addi 1,1,216 464.Labort: 465 blr 466.long 0 467.byte 0,12,4,1,0x80,0,4,0 468 469.globl poly1305_emit_fpu 470.type poly1305_emit_fpu,@function 471.align 4 472poly1305_emit_fpu: 473 stwu 1,-40(1) 474 mflr 0 475 stw 28,24(1) 476 stw 29,28(1) 477 stw 30,32(1) 478 stw 31,36(1) 479 stw 0,44(1) 480 481 lwz 28,0(3) 482 lwz 7,4(3) 483 lwz 29,8(3) 484 lwz 8,12(3) 485 lwz 30,16(3) 486 lwz 9,20(3) 487 lwz 31,24(3) 488 lwz 10,28(3) 489 490 lis 0,0xfff0 491 andc 28,28,0 492 andc 29,29,0 493 andc 30,30,0 494 andc 31,31,0 495 li 0,3 496 497 srwi 6,31,2 498 and 11,31,0 499 andc 31,31,0 500 add 31,31,6 501 addc 7,7,31 502 adde 8,8,28 503 adde 9,9,29 504 adde 10,10,30 505 addze 11,11 506 507 addic 28,7,5 508 addze 29,8 509 addze 30,9 510 addze 31,10 511 addze 0,11 512 513 srwi 0,0,2 514 neg 0,0 515 srawi 0,0,31 516 517 andc 7,7,0 518 and 28,28,0 519 andc 8,8,0 520 and 29,29,0 521 or 7,7,28 522 lwz 28,0(5) 523 andc 9,9,0 524 and 30,30,0 525 or 8,8,29 526 lwz 29,4(5) 527 andc 10,10,0 528 and 31,31,0 529 or 9,9,30 530 lwz 30,8(5) 531 or 10,10,31 532 lwz 31,12(5) 533 534 addc 7,7,28 535 adde 8,8,29 536 adde 9,9,30 537 adde 10,10,31 538 li 29,4 539 stwbrx 7,0,4 540 li 30,8 541 stwbrx 8,29,4 542 li 31,12 543 stwbrx 9,30,4 544 stwbrx 10,31,4 545 lwz 28,24(1) 546 lwz 29,28(1) 547 lwz 30,32(1) 548 lwz 31,36(1) 549 addi 1,1,40 550 blr 551.long 0 552.byte 0,12,4,1,0x80,4,3,0 553 554.align 6 555.LPICmeup: 556 mflr 0 557 bcl 20,31,$+4 558 mflr 5 559 addi 5,5,56 560 mtlr 0 561 blr 562.long 0 563.byte 0,12,0x14,0,0,0,0,0 564.space 28 565 566.long 0x43300000,0x00000000 567.long 0x45300000,0x00000000 568.long 0x47300000,0x00000000 569.long 0x49300000,0x00000000 570.long 0x4b500000,0x00000000 571 572.long 0x37f40000,0x00000000 573 574.long 0x44300000,0x00000000 575.long 0x46300000,0x00000000 576.long 0x48300000,0x00000000 577.long 0x4a300000,0x00000000 578.long 0x3e300000,0x00000000 579.long 0x40300000,0x00000000 580.long 0x42300000,0x00000000 581 582.long 0x00000000,0x00000001 583.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,32,70,80,85,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 584.align 2 585.align 4 586