ghashp8-ppc.S revision 1.3
1.machine "any" 2 3.text 4 5.globl gcm_init_p8 6.type gcm_init_p8,@function 7.section ".opd","aw" 8.align 3 9gcm_init_p8: 10.quad .gcm_init_p8,.TOC.@tocbase,0 11.previous 12.align 5 13.gcm_init_p8: 14 li 0,-4096 15 li 8,0x10 16 mfspr 12,256 17 li 9,0x20 18 mtspr 256,0 19 li 10,0x30 20.long 0x7D202699 21 22 vspltisb 8,-16 23 vspltisb 5,1 24 vaddubm 8,8,8 25 vxor 4,4,4 26 vor 8,8,5 27 vsldoi 8,8,4,15 28 vsldoi 6,4,5,1 29 vaddubm 8,8,8 30 vspltisb 7,7 31 vor 8,8,6 32 vspltb 6,9,0 33 vsl 9,9,5 34 vsrab 6,6,7 35 vand 6,6,8 36 vxor 3,9,6 37 38 vsldoi 9,3,3,8 39 vsldoi 8,4,8,8 40 vsldoi 11,4,9,8 41 vsldoi 10,9,4,8 42 43.long 0x7D001F99 44.long 0x7D681F99 45 li 8,0x40 46.long 0x7D291F99 47 li 9,0x50 48.long 0x7D4A1F99 49 li 10,0x60 50 51.long 0x10035CC8 52.long 0x10234CC8 53.long 0x104354C8 54 55.long 0x10E044C8 56 57 vsldoi 5,1,4,8 58 vsldoi 6,4,1,8 59 vxor 0,0,5 60 vxor 2,2,6 61 62 vsldoi 0,0,0,8 63 vxor 0,0,7 64 65 vsldoi 6,0,0,8 66.long 0x100044C8 67 vxor 6,6,2 68 vxor 16,0,6 69 70 vsldoi 17,16,16,8 71 vsldoi 19,4,17,8 72 vsldoi 18,17,4,8 73 74.long 0x7E681F99 75 li 8,0x70 76.long 0x7E291F99 77 li 9,0x80 78.long 0x7E4A1F99 79 li 10,0x90 80.long 0x10039CC8 81.long 0x11B09CC8 82.long 0x10238CC8 83.long 0x11D08CC8 84.long 0x104394C8 85.long 0x11F094C8 86 87.long 0x10E044C8 88.long 0x114D44C8 89 90 vsldoi 5,1,4,8 91 vsldoi 6,4,1,8 92 vsldoi 11,14,4,8 93 vsldoi 9,4,14,8 94 vxor 0,0,5 95 vxor 2,2,6 96 vxor 13,13,11 97 vxor 15,15,9 98 99 vsldoi 0,0,0,8 100 vsldoi 13,13,13,8 101 vxor 0,0,7 102 vxor 13,13,10 103 104 vsldoi 6,0,0,8 105 vsldoi 9,13,13,8 106.long 0x100044C8 107.long 0x11AD44C8 108 vxor 6,6,2 109 vxor 9,9,15 110 vxor 0,0,6 111 vxor 13,13,9 112 113 vsldoi 9,0,0,8 114 vsldoi 17,13,13,8 115 vsldoi 11,4,9,8 116 vsldoi 10,9,4,8 117 vsldoi 19,4,17,8 118 vsldoi 18,17,4,8 119 120.long 0x7D681F99 121 li 8,0xa0 122.long 0x7D291F99 123 li 9,0xb0 124.long 0x7D4A1F99 125 li 10,0xc0 126.long 0x7E681F99 127.long 0x7E291F99 128.long 0x7E4A1F99 129 130 mtspr 256,12 131 blr 132.long 0 133.byte 0,12,0x14,0,0,0,2,0 134.long 0 135 136.globl gcm_gmult_p8 137.type gcm_gmult_p8,@function 138.section ".opd","aw" 139.align 3 140gcm_gmult_p8: 141.quad .gcm_gmult_p8,.TOC.@tocbase,0 142.previous 143.align 5 144.gcm_gmult_p8: 145 lis 0,0xfff8 146 li 8,0x10 147 mfspr 12,256 148 li 9,0x20 149 mtspr 256,0 150 li 10,0x30 151.long 0x7C601E99 152 153.long 0x7D682699 154 155.long 0x7D292699 156 157.long 0x7D4A2699 158 159.long 0x7D002699 160 161 vxor 4,4,4 162 163.long 0x10035CC8 164.long 0x10234CC8 165.long 0x104354C8 166 167.long 0x10E044C8 168 169 vsldoi 5,1,4,8 170 vsldoi 6,4,1,8 171 vxor 0,0,5 172 vxor 2,2,6 173 174 vsldoi 0,0,0,8 175 vxor 0,0,7 176 177 vsldoi 6,0,0,8 178.long 0x100044C8 179 vxor 6,6,2 180 vxor 0,0,6 181 182 183.long 0x7C001F99 184 185 mtspr 256,12 186 blr 187.long 0 188.byte 0,12,0x14,0,0,0,2,0 189.long 0 190 191 192.globl gcm_ghash_p8 193.type gcm_ghash_p8,@function 194.section ".opd","aw" 195.align 3 196gcm_ghash_p8: 197.quad .gcm_ghash_p8,.TOC.@tocbase,0 198.previous 199.align 5 200.gcm_ghash_p8: 201 li 0,-4096 202 li 8,0x10 203 mfspr 12,256 204 li 9,0x20 205 mtspr 256,0 206 li 10,0x30 207.long 0x7C001E99 208 209.long 0x7D682699 210 li 8,0x40 211 212.long 0x7D292699 213 li 9,0x50 214 215.long 0x7D4A2699 216 li 10,0x60 217 218.long 0x7D002699 219 220 vxor 4,4,4 221 222 cmpldi 6,64 223 bge .Lgcm_ghash_p8_4x 224 225.long 0x7C602E99 226 addi 5,5,16 227 subic. 6,6,16 228 229 vxor 3,3,0 230 beq .Lshort 231 232.long 0x7E682699 233 li 8,16 234.long 0x7E292699 235 add 9,5,6 236.long 0x7E4A2699 237 b .Loop_2x 238 239.align 5 240.Loop_2x: 241.long 0x7E002E99 242 243 244 subic 6,6,32 245.long 0x10039CC8 246.long 0x11B05CC8 247 subfe 0,0,0 248.long 0x10238CC8 249.long 0x11D04CC8 250 and 0,0,6 251.long 0x104394C8 252.long 0x11F054C8 253 add 5,5,0 254 255 vxor 0,0,13 256 vxor 1,1,14 257 258.long 0x10E044C8 259 260 vsldoi 5,1,4,8 261 vsldoi 6,4,1,8 262 vxor 2,2,15 263 vxor 0,0,5 264 vxor 2,2,6 265 266 vsldoi 0,0,0,8 267 vxor 0,0,7 268.long 0x7C682E99 269 addi 5,5,32 270 271 vsldoi 6,0,0,8 272.long 0x100044C8 273 274 vxor 6,6,2 275 vxor 3,3,6 276 vxor 3,3,0 277 cmpld 9,5 278 bgt .Loop_2x 279 280 cmplwi 6,0 281 bne .Leven 282 283.Lshort: 284.long 0x10035CC8 285.long 0x10234CC8 286.long 0x104354C8 287 288.long 0x10E044C8 289 290 vsldoi 5,1,4,8 291 vsldoi 6,4,1,8 292 vxor 0,0,5 293 vxor 2,2,6 294 295 vsldoi 0,0,0,8 296 vxor 0,0,7 297 298 vsldoi 6,0,0,8 299.long 0x100044C8 300 vxor 6,6,2 301 302.Leven: 303 vxor 0,0,6 304 305.long 0x7C001F99 306 307 mtspr 256,12 308 blr 309.long 0 310.byte 0,12,0x14,0,0,0,4,0 311.long 0 312.align 5 313.gcm_ghash_p8_4x: 314.Lgcm_ghash_p8_4x: 315 stdu 1,-256(1) 316 li 10,63 317 li 11,79 318 stvx 20,10,1 319 addi 10,10,32 320 stvx 21,11,1 321 addi 11,11,32 322 stvx 22,10,1 323 addi 10,10,32 324 stvx 23,11,1 325 addi 11,11,32 326 stvx 24,10,1 327 addi 10,10,32 328 stvx 25,11,1 329 addi 11,11,32 330 stvx 26,10,1 331 addi 10,10,32 332 stvx 27,11,1 333 addi 11,11,32 334 stvx 28,10,1 335 addi 10,10,32 336 stvx 29,11,1 337 addi 11,11,32 338 stvx 30,10,1 339 li 10,0x60 340 stvx 31,11,1 341 li 0,-1 342 stw 12,252(1) 343 mtspr 256,0 344 345 lvsl 5,0,8 346 347 li 8,0x70 348.long 0x7E292699 349 li 9,0x80 350 vspltisb 6,8 351 352 li 10,0x90 353.long 0x7EE82699 354 li 8,0xa0 355.long 0x7F092699 356 li 9,0xb0 357.long 0x7F2A2699 358 li 10,0xc0 359.long 0x7FA82699 360 li 8,0x10 361.long 0x7FC92699 362 li 9,0x20 363.long 0x7FEA2699 364 li 10,0x30 365 366 vsldoi 7,4,6,8 367 vaddubm 18,5,7 368 vaddubm 19,6,18 369 370 srdi 6,6,4 371 372.long 0x7C602E99 373.long 0x7E082E99 374 subic. 6,6,8 375.long 0x7EC92E99 376.long 0x7F8A2E99 377 addi 5,5,0x40 378 379 380 381 382 383 vxor 2,3,0 384 385.long 0x11B0BCC8 386.long 0x11D0C4C8 387.long 0x11F0CCC8 388 389 vperm 11,17,9,18 390 vperm 5,22,28,19 391 vperm 10,17,9,19 392 vperm 6,22,28,18 393.long 0x12B68CC8 394.long 0x12855CC8 395.long 0x137C4CC8 396.long 0x134654C8 397 398 vxor 21,21,14 399 vxor 20,20,13 400 vxor 27,27,21 401 vxor 26,26,15 402 403 blt .Ltail_4x 404 405.Loop_4x: 406.long 0x7C602E99 407.long 0x7E082E99 408 subic. 6,6,4 409.long 0x7EC92E99 410.long 0x7F8A2E99 411 addi 5,5,0x40 412 413 414 415 416 417.long 0x1002ECC8 418.long 0x1022F4C8 419.long 0x1042FCC8 420.long 0x11B0BCC8 421.long 0x11D0C4C8 422.long 0x11F0CCC8 423 424 vxor 0,0,20 425 vxor 1,1,27 426 vxor 2,2,26 427 vperm 5,22,28,19 428 vperm 6,22,28,18 429 430.long 0x10E044C8 431.long 0x12855CC8 432.long 0x134654C8 433 434 vsldoi 5,1,4,8 435 vsldoi 6,4,1,8 436 vxor 0,0,5 437 vxor 2,2,6 438 439 vsldoi 0,0,0,8 440 vxor 0,0,7 441 442 vsldoi 6,0,0,8 443.long 0x12B68CC8 444.long 0x137C4CC8 445.long 0x100044C8 446 447 vxor 20,20,13 448 vxor 26,26,15 449 vxor 2,2,3 450 vxor 21,21,14 451 vxor 2,2,6 452 vxor 27,27,21 453 vxor 2,2,0 454 bge .Loop_4x 455 456.Ltail_4x: 457.long 0x1002ECC8 458.long 0x1022F4C8 459.long 0x1042FCC8 460 461 vxor 0,0,20 462 vxor 1,1,27 463 464.long 0x10E044C8 465 466 vsldoi 5,1,4,8 467 vsldoi 6,4,1,8 468 vxor 2,2,26 469 vxor 0,0,5 470 vxor 2,2,6 471 472 vsldoi 0,0,0,8 473 vxor 0,0,7 474 475 vsldoi 6,0,0,8 476.long 0x100044C8 477 vxor 6,6,2 478 vxor 0,0,6 479 480 addic. 6,6,4 481 beq .Ldone_4x 482 483.long 0x7C602E99 484 cmpldi 6,2 485 li 6,-4 486 blt .Lone 487.long 0x7E082E99 488 beq .Ltwo 489 490.Lthree: 491.long 0x7EC92E99 492 493 494 495 496 vxor 2,3,0 497 vor 29,23,23 498 vor 30,24,24 499 vor 31,25,25 500 501 vperm 5,16,22,19 502 vperm 6,16,22,18 503.long 0x12B08CC8 504.long 0x13764CC8 505.long 0x12855CC8 506.long 0x134654C8 507 508 vxor 27,27,21 509 b .Ltail_4x 510 511.align 4 512.Ltwo: 513 514 515 516 vxor 2,3,0 517 vperm 5,4,16,19 518 vperm 6,4,16,18 519 520 vsldoi 29,4,17,8 521 vor 30,17,17 522 vsldoi 31,17,4,8 523 524.long 0x12855CC8 525.long 0x13704CC8 526.long 0x134654C8 527 528 b .Ltail_4x 529 530.align 4 531.Lone: 532 533 534 vsldoi 29,4,9,8 535 vor 30,9,9 536 vsldoi 31,9,4,8 537 538 vxor 2,3,0 539 vxor 20,20,20 540 vxor 27,27,27 541 vxor 26,26,26 542 543 b .Ltail_4x 544 545.Ldone_4x: 546 547.long 0x7C001F99 548 549 li 10,63 550 li 11,79 551 mtspr 256,12 552 lvx 20,10,1 553 addi 10,10,32 554 lvx 21,11,1 555 addi 11,11,32 556 lvx 22,10,1 557 addi 10,10,32 558 lvx 23,11,1 559 addi 11,11,32 560 lvx 24,10,1 561 addi 10,10,32 562 lvx 25,11,1 563 addi 11,11,32 564 lvx 26,10,1 565 addi 10,10,32 566 lvx 27,11,1 567 addi 11,11,32 568 lvx 28,10,1 569 addi 10,10,32 570 lvx 29,11,1 571 addi 11,11,32 572 lvx 30,10,1 573 lvx 31,11,1 574 addi 1,1,256 575 blr 576.long 0 577.byte 0,12,0x04,0,0x80,0,4,0 578.long 0 579 580 581.byte 71,72,65,83,72,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,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 582.align 2 583.align 2 584