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