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