1*4724848cSchristos.machine "any" 2*4724848cSchristos.text 3*4724848cSchristos 4*4724848cSchristos.globl ChaCha20_ctr32_int 5*4724848cSchristos.type ChaCha20_ctr32_int,@function 6*4724848cSchristos.align 5 7*4724848cSchristosChaCha20_ctr32_int: 8*4724848cSchristos__ChaCha20_ctr32_int: 9*4724848cSchristos cmplwi 5,0 10*4724848cSchristos beqlr 11*4724848cSchristos 12*4724848cSchristos stwu 1,-160(1) 13*4724848cSchristos mflr 0 14*4724848cSchristos 15*4724848cSchristos stw 14,88(1) 16*4724848cSchristos stw 15,92(1) 17*4724848cSchristos stw 16,96(1) 18*4724848cSchristos stw 17,100(1) 19*4724848cSchristos stw 18,104(1) 20*4724848cSchristos stw 19,108(1) 21*4724848cSchristos stw 20,112(1) 22*4724848cSchristos stw 21,116(1) 23*4724848cSchristos stw 22,120(1) 24*4724848cSchristos stw 23,124(1) 25*4724848cSchristos stw 24,128(1) 26*4724848cSchristos stw 25,132(1) 27*4724848cSchristos stw 26,136(1) 28*4724848cSchristos stw 27,140(1) 29*4724848cSchristos stw 28,144(1) 30*4724848cSchristos stw 29,148(1) 31*4724848cSchristos stw 30,152(1) 32*4724848cSchristos stw 31,156(1) 33*4724848cSchristos stw 0,164(1) 34*4724848cSchristos 35*4724848cSchristos lwz 11,0(7) 36*4724848cSchristos lwz 12,4(7) 37*4724848cSchristos lwz 14,8(7) 38*4724848cSchristos lwz 15,12(7) 39*4724848cSchristos 40*4724848cSchristos bl __ChaCha20_1x 41*4724848cSchristos 42*4724848cSchristos lwz 0,164(1) 43*4724848cSchristos lwz 14,88(1) 44*4724848cSchristos lwz 15,92(1) 45*4724848cSchristos lwz 16,96(1) 46*4724848cSchristos lwz 17,100(1) 47*4724848cSchristos lwz 18,104(1) 48*4724848cSchristos lwz 19,108(1) 49*4724848cSchristos lwz 20,112(1) 50*4724848cSchristos lwz 21,116(1) 51*4724848cSchristos lwz 22,120(1) 52*4724848cSchristos lwz 23,124(1) 53*4724848cSchristos lwz 24,128(1) 54*4724848cSchristos lwz 25,132(1) 55*4724848cSchristos lwz 26,136(1) 56*4724848cSchristos lwz 27,140(1) 57*4724848cSchristos lwz 28,144(1) 58*4724848cSchristos lwz 29,148(1) 59*4724848cSchristos lwz 30,152(1) 60*4724848cSchristos lwz 31,156(1) 61*4724848cSchristos mtlr 0 62*4724848cSchristos addi 1,1,160 63*4724848cSchristos blr 64*4724848cSchristos.long 0 65*4724848cSchristos.byte 0,12,4,1,0x80,18,5,0 66*4724848cSchristos.long 0 67*4724848cSchristos 68*4724848cSchristos 69*4724848cSchristos.align 5 70*4724848cSchristos__ChaCha20_1x: 71*4724848cSchristos.Loop_outer: 72*4724848cSchristos lis 16,0x6170 73*4724848cSchristos lis 17,0x3320 74*4724848cSchristos lis 18,0x7962 75*4724848cSchristos lis 19,0x6b20 76*4724848cSchristos ori 16,16,0x7865 77*4724848cSchristos ori 17,17,0x646e 78*4724848cSchristos ori 18,18,0x2d32 79*4724848cSchristos ori 19,19,0x6574 80*4724848cSchristos 81*4724848cSchristos li 0,10 82*4724848cSchristos lwz 20,0(6) 83*4724848cSchristos lwz 21,4(6) 84*4724848cSchristos lwz 22,8(6) 85*4724848cSchristos lwz 23,12(6) 86*4724848cSchristos lwz 24,16(6) 87*4724848cSchristos mr 28,11 88*4724848cSchristos lwz 25,20(6) 89*4724848cSchristos mr 29,12 90*4724848cSchristos lwz 26,24(6) 91*4724848cSchristos mr 30,14 92*4724848cSchristos lwz 27,28(6) 93*4724848cSchristos mr 31,15 94*4724848cSchristos 95*4724848cSchristos mr 7,20 96*4724848cSchristos mr 8,21 97*4724848cSchristos mr 9,22 98*4724848cSchristos mr 10,23 99*4724848cSchristos 100*4724848cSchristos mtctr 0 101*4724848cSchristos.Loop: 102*4724848cSchristos add 16,16,20 103*4724848cSchristos add 17,17,21 104*4724848cSchristos add 18,18,22 105*4724848cSchristos add 19,19,23 106*4724848cSchristos xor 28,28,16 107*4724848cSchristos xor 29,29,17 108*4724848cSchristos xor 30,30,18 109*4724848cSchristos xor 31,31,19 110*4724848cSchristos rotlwi 28,28,16 111*4724848cSchristos rotlwi 29,29,16 112*4724848cSchristos rotlwi 30,30,16 113*4724848cSchristos rotlwi 31,31,16 114*4724848cSchristos add 24,24,28 115*4724848cSchristos add 25,25,29 116*4724848cSchristos add 26,26,30 117*4724848cSchristos add 27,27,31 118*4724848cSchristos xor 20,20,24 119*4724848cSchristos xor 21,21,25 120*4724848cSchristos xor 22,22,26 121*4724848cSchristos xor 23,23,27 122*4724848cSchristos rotlwi 20,20,12 123*4724848cSchristos rotlwi 21,21,12 124*4724848cSchristos rotlwi 22,22,12 125*4724848cSchristos rotlwi 23,23,12 126*4724848cSchristos add 16,16,20 127*4724848cSchristos add 17,17,21 128*4724848cSchristos add 18,18,22 129*4724848cSchristos add 19,19,23 130*4724848cSchristos xor 28,28,16 131*4724848cSchristos xor 29,29,17 132*4724848cSchristos xor 30,30,18 133*4724848cSchristos xor 31,31,19 134*4724848cSchristos rotlwi 28,28,8 135*4724848cSchristos rotlwi 29,29,8 136*4724848cSchristos rotlwi 30,30,8 137*4724848cSchristos rotlwi 31,31,8 138*4724848cSchristos add 24,24,28 139*4724848cSchristos add 25,25,29 140*4724848cSchristos add 26,26,30 141*4724848cSchristos add 27,27,31 142*4724848cSchristos xor 20,20,24 143*4724848cSchristos xor 21,21,25 144*4724848cSchristos xor 22,22,26 145*4724848cSchristos xor 23,23,27 146*4724848cSchristos rotlwi 20,20,7 147*4724848cSchristos rotlwi 21,21,7 148*4724848cSchristos rotlwi 22,22,7 149*4724848cSchristos rotlwi 23,23,7 150*4724848cSchristos add 16,16,21 151*4724848cSchristos add 17,17,22 152*4724848cSchristos add 18,18,23 153*4724848cSchristos add 19,19,20 154*4724848cSchristos xor 31,31,16 155*4724848cSchristos xor 28,28,17 156*4724848cSchristos xor 29,29,18 157*4724848cSchristos xor 30,30,19 158*4724848cSchristos rotlwi 31,31,16 159*4724848cSchristos rotlwi 28,28,16 160*4724848cSchristos rotlwi 29,29,16 161*4724848cSchristos rotlwi 30,30,16 162*4724848cSchristos add 26,26,31 163*4724848cSchristos add 27,27,28 164*4724848cSchristos add 24,24,29 165*4724848cSchristos add 25,25,30 166*4724848cSchristos xor 21,21,26 167*4724848cSchristos xor 22,22,27 168*4724848cSchristos xor 23,23,24 169*4724848cSchristos xor 20,20,25 170*4724848cSchristos rotlwi 21,21,12 171*4724848cSchristos rotlwi 22,22,12 172*4724848cSchristos rotlwi 23,23,12 173*4724848cSchristos rotlwi 20,20,12 174*4724848cSchristos add 16,16,21 175*4724848cSchristos add 17,17,22 176*4724848cSchristos add 18,18,23 177*4724848cSchristos add 19,19,20 178*4724848cSchristos xor 31,31,16 179*4724848cSchristos xor 28,28,17 180*4724848cSchristos xor 29,29,18 181*4724848cSchristos xor 30,30,19 182*4724848cSchristos rotlwi 31,31,8 183*4724848cSchristos rotlwi 28,28,8 184*4724848cSchristos rotlwi 29,29,8 185*4724848cSchristos rotlwi 30,30,8 186*4724848cSchristos add 26,26,31 187*4724848cSchristos add 27,27,28 188*4724848cSchristos add 24,24,29 189*4724848cSchristos add 25,25,30 190*4724848cSchristos xor 21,21,26 191*4724848cSchristos xor 22,22,27 192*4724848cSchristos xor 23,23,24 193*4724848cSchristos xor 20,20,25 194*4724848cSchristos rotlwi 21,21,7 195*4724848cSchristos rotlwi 22,22,7 196*4724848cSchristos rotlwi 23,23,7 197*4724848cSchristos rotlwi 20,20,7 198*4724848cSchristos bc 16,0,.Loop 199*4724848cSchristos 200*4724848cSchristos subic 5,5,64 201*4724848cSchristos addi 16,16,0x7865 202*4724848cSchristos addi 17,17,0x646e 203*4724848cSchristos addi 18,18,0x2d32 204*4724848cSchristos addi 19,19,0x6574 205*4724848cSchristos addis 16,16,0x6170 206*4724848cSchristos addis 17,17,0x3320 207*4724848cSchristos addis 18,18,0x7962 208*4724848cSchristos addis 19,19,0x6b20 209*4724848cSchristos 210*4724848cSchristos subfe. 0,0,0 211*4724848cSchristos add 20,20,7 212*4724848cSchristos lwz 7,16(6) 213*4724848cSchristos add 21,21,8 214*4724848cSchristos lwz 8,20(6) 215*4724848cSchristos add 22,22,9 216*4724848cSchristos lwz 9,24(6) 217*4724848cSchristos add 23,23,10 218*4724848cSchristos lwz 10,28(6) 219*4724848cSchristos add 24,24,7 220*4724848cSchristos add 25,25,8 221*4724848cSchristos add 26,26,9 222*4724848cSchristos add 27,27,10 223*4724848cSchristos 224*4724848cSchristos add 28,28,11 225*4724848cSchristos add 29,29,12 226*4724848cSchristos add 30,30,14 227*4724848cSchristos add 31,31,15 228*4724848cSchristos addi 11,11,1 229*4724848cSchristos mr 7,16 230*4724848cSchristos rotlwi 16,16,8 231*4724848cSchristos rlwimi 16,7,24,0,7 232*4724848cSchristos rlwimi 16,7,24,16,23 233*4724848cSchristos mr 8,17 234*4724848cSchristos rotlwi 17,17,8 235*4724848cSchristos rlwimi 17,8,24,0,7 236*4724848cSchristos rlwimi 17,8,24,16,23 237*4724848cSchristos mr 9,18 238*4724848cSchristos rotlwi 18,18,8 239*4724848cSchristos rlwimi 18,9,24,0,7 240*4724848cSchristos rlwimi 18,9,24,16,23 241*4724848cSchristos mr 10,19 242*4724848cSchristos rotlwi 19,19,8 243*4724848cSchristos rlwimi 19,10,24,0,7 244*4724848cSchristos rlwimi 19,10,24,16,23 245*4724848cSchristos mr 7,20 246*4724848cSchristos rotlwi 20,20,8 247*4724848cSchristos rlwimi 20,7,24,0,7 248*4724848cSchristos rlwimi 20,7,24,16,23 249*4724848cSchristos mr 8,21 250*4724848cSchristos rotlwi 21,21,8 251*4724848cSchristos rlwimi 21,8,24,0,7 252*4724848cSchristos rlwimi 21,8,24,16,23 253*4724848cSchristos mr 9,22 254*4724848cSchristos rotlwi 22,22,8 255*4724848cSchristos rlwimi 22,9,24,0,7 256*4724848cSchristos rlwimi 22,9,24,16,23 257*4724848cSchristos mr 10,23 258*4724848cSchristos rotlwi 23,23,8 259*4724848cSchristos rlwimi 23,10,24,0,7 260*4724848cSchristos rlwimi 23,10,24,16,23 261*4724848cSchristos mr 7,24 262*4724848cSchristos rotlwi 24,24,8 263*4724848cSchristos rlwimi 24,7,24,0,7 264*4724848cSchristos rlwimi 24,7,24,16,23 265*4724848cSchristos mr 8,25 266*4724848cSchristos rotlwi 25,25,8 267*4724848cSchristos rlwimi 25,8,24,0,7 268*4724848cSchristos rlwimi 25,8,24,16,23 269*4724848cSchristos mr 9,26 270*4724848cSchristos rotlwi 26,26,8 271*4724848cSchristos rlwimi 26,9,24,0,7 272*4724848cSchristos rlwimi 26,9,24,16,23 273*4724848cSchristos mr 10,27 274*4724848cSchristos rotlwi 27,27,8 275*4724848cSchristos rlwimi 27,10,24,0,7 276*4724848cSchristos rlwimi 27,10,24,16,23 277*4724848cSchristos mr 7,28 278*4724848cSchristos rotlwi 28,28,8 279*4724848cSchristos rlwimi 28,7,24,0,7 280*4724848cSchristos rlwimi 28,7,24,16,23 281*4724848cSchristos mr 8,29 282*4724848cSchristos rotlwi 29,29,8 283*4724848cSchristos rlwimi 29,8,24,0,7 284*4724848cSchristos rlwimi 29,8,24,16,23 285*4724848cSchristos mr 9,30 286*4724848cSchristos rotlwi 30,30,8 287*4724848cSchristos rlwimi 30,9,24,0,7 288*4724848cSchristos rlwimi 30,9,24,16,23 289*4724848cSchristos mr 10,31 290*4724848cSchristos rotlwi 31,31,8 291*4724848cSchristos rlwimi 31,10,24,0,7 292*4724848cSchristos rlwimi 31,10,24,16,23 293*4724848cSchristos bne .Ltail 294*4724848cSchristos 295*4724848cSchristos lwz 7,0(4) 296*4724848cSchristos lwz 8,4(4) 297*4724848cSchristos cmplwi 5,0 298*4724848cSchristos lwz 9,8(4) 299*4724848cSchristos lwz 10,12(4) 300*4724848cSchristos xor 16,16,7 301*4724848cSchristos lwz 7,16(4) 302*4724848cSchristos xor 17,17,8 303*4724848cSchristos lwz 8,20(4) 304*4724848cSchristos xor 18,18,9 305*4724848cSchristos lwz 9,24(4) 306*4724848cSchristos xor 19,19,10 307*4724848cSchristos lwz 10,28(4) 308*4724848cSchristos xor 20,20,7 309*4724848cSchristos lwz 7,32(4) 310*4724848cSchristos xor 21,21,8 311*4724848cSchristos lwz 8,36(4) 312*4724848cSchristos xor 22,22,9 313*4724848cSchristos lwz 9,40(4) 314*4724848cSchristos xor 23,23,10 315*4724848cSchristos lwz 10,44(4) 316*4724848cSchristos xor 24,24,7 317*4724848cSchristos lwz 7,48(4) 318*4724848cSchristos xor 25,25,8 319*4724848cSchristos lwz 8,52(4) 320*4724848cSchristos xor 26,26,9 321*4724848cSchristos lwz 9,56(4) 322*4724848cSchristos xor 27,27,10 323*4724848cSchristos lwz 10,60(4) 324*4724848cSchristos xor 28,28,7 325*4724848cSchristos stw 16,0(3) 326*4724848cSchristos xor 29,29,8 327*4724848cSchristos stw 17,4(3) 328*4724848cSchristos xor 30,30,9 329*4724848cSchristos stw 18,8(3) 330*4724848cSchristos xor 31,31,10 331*4724848cSchristos stw 19,12(3) 332*4724848cSchristos stw 20,16(3) 333*4724848cSchristos stw 21,20(3) 334*4724848cSchristos stw 22,24(3) 335*4724848cSchristos stw 23,28(3) 336*4724848cSchristos stw 24,32(3) 337*4724848cSchristos stw 25,36(3) 338*4724848cSchristos stw 26,40(3) 339*4724848cSchristos stw 27,44(3) 340*4724848cSchristos stw 28,48(3) 341*4724848cSchristos stw 29,52(3) 342*4724848cSchristos stw 30,56(3) 343*4724848cSchristos addi 4,4,64 344*4724848cSchristos stw 31,60(3) 345*4724848cSchristos addi 3,3,64 346*4724848cSchristos 347*4724848cSchristos bne .Loop_outer 348*4724848cSchristos 349*4724848cSchristos blr 350*4724848cSchristos 351*4724848cSchristos.align 4 352*4724848cSchristos.Ltail: 353*4724848cSchristos addi 5,5,64 354*4724848cSchristos subi 4,4,1 355*4724848cSchristos subi 3,3,1 356*4724848cSchristos addi 7,1,24-1 357*4724848cSchristos mtctr 5 358*4724848cSchristos 359*4724848cSchristos stw 16,24(1) 360*4724848cSchristos stw 17,28(1) 361*4724848cSchristos stw 18,32(1) 362*4724848cSchristos stw 19,36(1) 363*4724848cSchristos stw 20,40(1) 364*4724848cSchristos stw 21,44(1) 365*4724848cSchristos stw 22,48(1) 366*4724848cSchristos stw 23,52(1) 367*4724848cSchristos stw 24,56(1) 368*4724848cSchristos stw 25,60(1) 369*4724848cSchristos stw 26,64(1) 370*4724848cSchristos stw 27,68(1) 371*4724848cSchristos stw 28,72(1) 372*4724848cSchristos stw 29,76(1) 373*4724848cSchristos stw 30,80(1) 374*4724848cSchristos stw 31,84(1) 375*4724848cSchristos 376*4724848cSchristos.Loop_tail: 377*4724848cSchristos lbzu 11,1(4) 378*4724848cSchristos lbzu 16,1(7) 379*4724848cSchristos xor 12,11,16 380*4724848cSchristos stbu 12,1(3) 381*4724848cSchristos bc 16,0,.Loop_tail 382*4724848cSchristos 383*4724848cSchristos stw 1,24(1) 384*4724848cSchristos stw 1,28(1) 385*4724848cSchristos stw 1,32(1) 386*4724848cSchristos stw 1,36(1) 387*4724848cSchristos stw 1,40(1) 388*4724848cSchristos stw 1,44(1) 389*4724848cSchristos stw 1,48(1) 390*4724848cSchristos stw 1,52(1) 391*4724848cSchristos stw 1,56(1) 392*4724848cSchristos stw 1,60(1) 393*4724848cSchristos stw 1,64(1) 394*4724848cSchristos stw 1,68(1) 395*4724848cSchristos stw 1,72(1) 396*4724848cSchristos stw 1,76(1) 397*4724848cSchristos stw 1,80(1) 398*4724848cSchristos stw 1,84(1) 399*4724848cSchristos 400*4724848cSchristos blr 401*4724848cSchristos.long 0 402*4724848cSchristos.byte 0,12,0x14,0,0,0,0,0 403*4724848cSchristos 404*4724848cSchristos.globl ChaCha20_ctr32_vmx 405*4724848cSchristos.type ChaCha20_ctr32_vmx,@function 406*4724848cSchristos.align 5 407*4724848cSchristosChaCha20_ctr32_vmx: 408*4724848cSchristos cmplwi 5,256 409*4724848cSchristos blt __ChaCha20_ctr32_int 410*4724848cSchristos 411*4724848cSchristos stwu 1,-320(1) 412*4724848cSchristos mflr 0 413*4724848cSchristos li 10,103 414*4724848cSchristos li 11,119 415*4724848cSchristos mfspr 12,256 416*4724848cSchristos stvx 23,10,1 417*4724848cSchristos addi 10,10,32 418*4724848cSchristos stvx 24,11,1 419*4724848cSchristos addi 11,11,32 420*4724848cSchristos stvx 25,10,1 421*4724848cSchristos addi 10,10,32 422*4724848cSchristos stvx 26,11,1 423*4724848cSchristos addi 11,11,32 424*4724848cSchristos stvx 27,10,1 425*4724848cSchristos addi 10,10,32 426*4724848cSchristos stvx 28,11,1 427*4724848cSchristos addi 11,11,32 428*4724848cSchristos stvx 29,10,1 429*4724848cSchristos addi 10,10,32 430*4724848cSchristos stvx 30,11,1 431*4724848cSchristos stvx 31,10,1 432*4724848cSchristos stw 12,244(1) 433*4724848cSchristos stw 14,248(1) 434*4724848cSchristos stw 15,252(1) 435*4724848cSchristos stw 16,256(1) 436*4724848cSchristos stw 17,260(1) 437*4724848cSchristos stw 18,264(1) 438*4724848cSchristos stw 19,268(1) 439*4724848cSchristos stw 20,272(1) 440*4724848cSchristos stw 21,276(1) 441*4724848cSchristos stw 22,280(1) 442*4724848cSchristos stw 23,284(1) 443*4724848cSchristos stw 24,288(1) 444*4724848cSchristos stw 25,292(1) 445*4724848cSchristos stw 26,296(1) 446*4724848cSchristos stw 27,300(1) 447*4724848cSchristos stw 28,304(1) 448*4724848cSchristos stw 29,308(1) 449*4724848cSchristos stw 30,312(1) 450*4724848cSchristos stw 31,316(1) 451*4724848cSchristos li 12,-4096+511 452*4724848cSchristos stw 0, 324(1) 453*4724848cSchristos mtspr 256,12 454*4724848cSchristos 455*4724848cSchristos bl .Lconsts 456*4724848cSchristos li 16,16 457*4724848cSchristos li 17,32 458*4724848cSchristos li 18,48 459*4724848cSchristos li 19,64 460*4724848cSchristos li 20,31 461*4724848cSchristos li 21,15 462*4724848cSchristos 463*4724848cSchristos lvx 13,0,6 464*4724848cSchristos lvsl 29,0,6 465*4724848cSchristos lvx 14,16,6 466*4724848cSchristos lvx 27,20,6 467*4724848cSchristos 468*4724848cSchristos lvx 15,0,7 469*4724848cSchristos lvsl 30,0,7 470*4724848cSchristos lvx 28,21,7 471*4724848cSchristos 472*4724848cSchristos lvx 12,0,12 473*4724848cSchristos lvx 17,16,12 474*4724848cSchristos lvx 18,17,12 475*4724848cSchristos lvx 19,18,12 476*4724848cSchristos lvx 23,19,12 477*4724848cSchristos 478*4724848cSchristos vperm 13,13,14,29 479*4724848cSchristos vperm 14,14,27,29 480*4724848cSchristos vperm 15,15,28,30 481*4724848cSchristos 482*4724848cSchristos lwz 11,0(7) 483*4724848cSchristos lwz 12,4(7) 484*4724848cSchristos vadduwm 15,15,17 485*4724848cSchristos lwz 14,8(7) 486*4724848cSchristos vadduwm 16,15,17 487*4724848cSchristos lwz 15,12(7) 488*4724848cSchristos vadduwm 17,16,17 489*4724848cSchristos 490*4724848cSchristos vxor 29,29,29 491*4724848cSchristos vspltisw 26,-1 492*4724848cSchristos lvsl 24,0,4 493*4724848cSchristos lvsr 25,0,3 494*4724848cSchristos vperm 26,29,26,25 495*4724848cSchristos 496*4724848cSchristos lvsl 29,0,16 497*4724848cSchristos vspltisb 30,3 498*4724848cSchristos vxor 29,29,30 499*4724848cSchristos vxor 25,25,30 500*4724848cSchristos vperm 24,24,24,29 501*4724848cSchristos 502*4724848cSchristos li 0,10 503*4724848cSchristos b .Loop_outer_vmx 504*4724848cSchristos 505*4724848cSchristos.align 4 506*4724848cSchristos.Loop_outer_vmx: 507*4724848cSchristos lis 16,0x6170 508*4724848cSchristos lis 17,0x3320 509*4724848cSchristos vor 0,12,12 510*4724848cSchristos lis 18,0x7962 511*4724848cSchristos lis 19,0x6b20 512*4724848cSchristos vor 4,12,12 513*4724848cSchristos ori 16,16,0x7865 514*4724848cSchristos ori 17,17,0x646e 515*4724848cSchristos vor 8,12,12 516*4724848cSchristos ori 18,18,0x2d32 517*4724848cSchristos ori 19,19,0x6574 518*4724848cSchristos vor 1,13,13 519*4724848cSchristos 520*4724848cSchristos lwz 20,0(6) 521*4724848cSchristos vor 5,13,13 522*4724848cSchristos lwz 21,4(6) 523*4724848cSchristos vor 9,13,13 524*4724848cSchristos lwz 22,8(6) 525*4724848cSchristos vor 2,14,14 526*4724848cSchristos lwz 23,12(6) 527*4724848cSchristos vor 6,14,14 528*4724848cSchristos lwz 24,16(6) 529*4724848cSchristos vor 10,14,14 530*4724848cSchristos mr 28,11 531*4724848cSchristos lwz 25,20(6) 532*4724848cSchristos vor 3,15,15 533*4724848cSchristos mr 29,12 534*4724848cSchristos lwz 26,24(6) 535*4724848cSchristos vor 7,16,16 536*4724848cSchristos mr 30,14 537*4724848cSchristos lwz 27,28(6) 538*4724848cSchristos vor 11,17,17 539*4724848cSchristos mr 31,15 540*4724848cSchristos 541*4724848cSchristos mr 7,20 542*4724848cSchristos mr 8,21 543*4724848cSchristos mr 9,22 544*4724848cSchristos mr 10,23 545*4724848cSchristos 546*4724848cSchristos vspltisw 27,12 547*4724848cSchristos vspltisw 28,7 548*4724848cSchristos 549*4724848cSchristos mtctr 0 550*4724848cSchristos nop 551*4724848cSchristos.Loop_vmx: 552*4724848cSchristos vadduwm 0,0,1 553*4724848cSchristos vadduwm 4,4,5 554*4724848cSchristos vadduwm 8,8,9 555*4724848cSchristos add 16,16,20 556*4724848cSchristos add 17,17,21 557*4724848cSchristos add 18,18,22 558*4724848cSchristos vxor 3,3,0 559*4724848cSchristos vxor 7,7,4 560*4724848cSchristos vxor 11,11,8 561*4724848cSchristos add 19,19,23 562*4724848cSchristos xor 28,28,16 563*4724848cSchristos xor 29,29,17 564*4724848cSchristos vperm 3,3,3,19 565*4724848cSchristos vperm 7,7,7,19 566*4724848cSchristos vperm 11,11,11,19 567*4724848cSchristos xor 30,30,18 568*4724848cSchristos xor 31,31,19 569*4724848cSchristos rotlwi 28,28,16 570*4724848cSchristos vadduwm 2,2,3 571*4724848cSchristos vadduwm 6,6,7 572*4724848cSchristos vadduwm 10,10,11 573*4724848cSchristos rotlwi 29,29,16 574*4724848cSchristos rotlwi 30,30,16 575*4724848cSchristos rotlwi 31,31,16 576*4724848cSchristos vxor 1,1,2 577*4724848cSchristos vxor 5,5,6 578*4724848cSchristos vxor 9,9,10 579*4724848cSchristos add 24,24,28 580*4724848cSchristos add 25,25,29 581*4724848cSchristos add 26,26,30 582*4724848cSchristos vrlw 1,1,27 583*4724848cSchristos vrlw 5,5,27 584*4724848cSchristos vrlw 9,9,27 585*4724848cSchristos add 27,27,31 586*4724848cSchristos xor 20,20,24 587*4724848cSchristos xor 21,21,25 588*4724848cSchristos vadduwm 0,0,1 589*4724848cSchristos vadduwm 4,4,5 590*4724848cSchristos vadduwm 8,8,9 591*4724848cSchristos xor 22,22,26 592*4724848cSchristos xor 23,23,27 593*4724848cSchristos rotlwi 20,20,12 594*4724848cSchristos vxor 3,3,0 595*4724848cSchristos vxor 7,7,4 596*4724848cSchristos vxor 11,11,8 597*4724848cSchristos rotlwi 21,21,12 598*4724848cSchristos rotlwi 22,22,12 599*4724848cSchristos rotlwi 23,23,12 600*4724848cSchristos vperm 3,3,3,23 601*4724848cSchristos vperm 7,7,7,23 602*4724848cSchristos vperm 11,11,11,23 603*4724848cSchristos add 16,16,20 604*4724848cSchristos add 17,17,21 605*4724848cSchristos add 18,18,22 606*4724848cSchristos vadduwm 2,2,3 607*4724848cSchristos vadduwm 6,6,7 608*4724848cSchristos vadduwm 10,10,11 609*4724848cSchristos add 19,19,23 610*4724848cSchristos xor 28,28,16 611*4724848cSchristos xor 29,29,17 612*4724848cSchristos vxor 1,1,2 613*4724848cSchristos vxor 5,5,6 614*4724848cSchristos vxor 9,9,10 615*4724848cSchristos xor 30,30,18 616*4724848cSchristos xor 31,31,19 617*4724848cSchristos rotlwi 28,28,8 618*4724848cSchristos vrlw 1,1,28 619*4724848cSchristos vrlw 5,5,28 620*4724848cSchristos vrlw 9,9,28 621*4724848cSchristos rotlwi 29,29,8 622*4724848cSchristos rotlwi 30,30,8 623*4724848cSchristos rotlwi 31,31,8 624*4724848cSchristos vsldoi 2,2,2, 16-8 625*4724848cSchristos vsldoi 6,6,6, 16-8 626*4724848cSchristos vsldoi 10,10,10, 16-8 627*4724848cSchristos add 24,24,28 628*4724848cSchristos add 25,25,29 629*4724848cSchristos add 26,26,30 630*4724848cSchristos vsldoi 1,1,1, 16-12 631*4724848cSchristos vsldoi 5,5,5, 16-12 632*4724848cSchristos vsldoi 9,9,9, 16-12 633*4724848cSchristos add 27,27,31 634*4724848cSchristos xor 20,20,24 635*4724848cSchristos xor 21,21,25 636*4724848cSchristos vsldoi 3,3,3, 16-4 637*4724848cSchristos vsldoi 7,7,7, 16-4 638*4724848cSchristos vsldoi 11,11,11, 16-4 639*4724848cSchristos xor 22,22,26 640*4724848cSchristos xor 23,23,27 641*4724848cSchristos rotlwi 20,20,7 642*4724848cSchristos rotlwi 21,21,7 643*4724848cSchristos rotlwi 22,22,7 644*4724848cSchristos rotlwi 23,23,7 645*4724848cSchristos vadduwm 0,0,1 646*4724848cSchristos vadduwm 4,4,5 647*4724848cSchristos vadduwm 8,8,9 648*4724848cSchristos add 16,16,21 649*4724848cSchristos add 17,17,22 650*4724848cSchristos add 18,18,23 651*4724848cSchristos vxor 3,3,0 652*4724848cSchristos vxor 7,7,4 653*4724848cSchristos vxor 11,11,8 654*4724848cSchristos add 19,19,20 655*4724848cSchristos xor 31,31,16 656*4724848cSchristos xor 28,28,17 657*4724848cSchristos vperm 3,3,3,19 658*4724848cSchristos vperm 7,7,7,19 659*4724848cSchristos vperm 11,11,11,19 660*4724848cSchristos xor 29,29,18 661*4724848cSchristos xor 30,30,19 662*4724848cSchristos rotlwi 31,31,16 663*4724848cSchristos vadduwm 2,2,3 664*4724848cSchristos vadduwm 6,6,7 665*4724848cSchristos vadduwm 10,10,11 666*4724848cSchristos rotlwi 28,28,16 667*4724848cSchristos rotlwi 29,29,16 668*4724848cSchristos rotlwi 30,30,16 669*4724848cSchristos vxor 1,1,2 670*4724848cSchristos vxor 5,5,6 671*4724848cSchristos vxor 9,9,10 672*4724848cSchristos add 26,26,31 673*4724848cSchristos add 27,27,28 674*4724848cSchristos add 24,24,29 675*4724848cSchristos vrlw 1,1,27 676*4724848cSchristos vrlw 5,5,27 677*4724848cSchristos vrlw 9,9,27 678*4724848cSchristos add 25,25,30 679*4724848cSchristos xor 21,21,26 680*4724848cSchristos xor 22,22,27 681*4724848cSchristos vadduwm 0,0,1 682*4724848cSchristos vadduwm 4,4,5 683*4724848cSchristos vadduwm 8,8,9 684*4724848cSchristos xor 23,23,24 685*4724848cSchristos xor 20,20,25 686*4724848cSchristos rotlwi 21,21,12 687*4724848cSchristos vxor 3,3,0 688*4724848cSchristos vxor 7,7,4 689*4724848cSchristos vxor 11,11,8 690*4724848cSchristos rotlwi 22,22,12 691*4724848cSchristos rotlwi 23,23,12 692*4724848cSchristos rotlwi 20,20,12 693*4724848cSchristos vperm 3,3,3,23 694*4724848cSchristos vperm 7,7,7,23 695*4724848cSchristos vperm 11,11,11,23 696*4724848cSchristos add 16,16,21 697*4724848cSchristos add 17,17,22 698*4724848cSchristos add 18,18,23 699*4724848cSchristos vadduwm 2,2,3 700*4724848cSchristos vadduwm 6,6,7 701*4724848cSchristos vadduwm 10,10,11 702*4724848cSchristos add 19,19,20 703*4724848cSchristos xor 31,31,16 704*4724848cSchristos xor 28,28,17 705*4724848cSchristos vxor 1,1,2 706*4724848cSchristos vxor 5,5,6 707*4724848cSchristos vxor 9,9,10 708*4724848cSchristos xor 29,29,18 709*4724848cSchristos xor 30,30,19 710*4724848cSchristos rotlwi 31,31,8 711*4724848cSchristos vrlw 1,1,28 712*4724848cSchristos vrlw 5,5,28 713*4724848cSchristos vrlw 9,9,28 714*4724848cSchristos rotlwi 28,28,8 715*4724848cSchristos rotlwi 29,29,8 716*4724848cSchristos rotlwi 30,30,8 717*4724848cSchristos vsldoi 2,2,2, 16-8 718*4724848cSchristos vsldoi 6,6,6, 16-8 719*4724848cSchristos vsldoi 10,10,10, 16-8 720*4724848cSchristos add 26,26,31 721*4724848cSchristos add 27,27,28 722*4724848cSchristos add 24,24,29 723*4724848cSchristos vsldoi 1,1,1, 16-4 724*4724848cSchristos vsldoi 5,5,5, 16-4 725*4724848cSchristos vsldoi 9,9,9, 16-4 726*4724848cSchristos add 25,25,30 727*4724848cSchristos xor 21,21,26 728*4724848cSchristos xor 22,22,27 729*4724848cSchristos vsldoi 3,3,3, 16-12 730*4724848cSchristos vsldoi 7,7,7, 16-12 731*4724848cSchristos vsldoi 11,11,11, 16-12 732*4724848cSchristos xor 23,23,24 733*4724848cSchristos xor 20,20,25 734*4724848cSchristos rotlwi 21,21,7 735*4724848cSchristos rotlwi 22,22,7 736*4724848cSchristos rotlwi 23,23,7 737*4724848cSchristos rotlwi 20,20,7 738*4724848cSchristos bc 16,0,.Loop_vmx 739*4724848cSchristos 740*4724848cSchristos subi 5,5,256 741*4724848cSchristos addi 16,16,0x7865 742*4724848cSchristos addi 17,17,0x646e 743*4724848cSchristos addi 18,18,0x2d32 744*4724848cSchristos addi 19,19,0x6574 745*4724848cSchristos addis 16,16,0x6170 746*4724848cSchristos addis 17,17,0x3320 747*4724848cSchristos addis 18,18,0x7962 748*4724848cSchristos addis 19,19,0x6b20 749*4724848cSchristos add 20,20,7 750*4724848cSchristos lwz 7,16(6) 751*4724848cSchristos add 21,21,8 752*4724848cSchristos lwz 8,20(6) 753*4724848cSchristos add 22,22,9 754*4724848cSchristos lwz 9,24(6) 755*4724848cSchristos add 23,23,10 756*4724848cSchristos lwz 10,28(6) 757*4724848cSchristos add 24,24,7 758*4724848cSchristos add 25,25,8 759*4724848cSchristos add 26,26,9 760*4724848cSchristos add 27,27,10 761*4724848cSchristos add 28,28,11 762*4724848cSchristos add 29,29,12 763*4724848cSchristos add 30,30,14 764*4724848cSchristos add 31,31,15 765*4724848cSchristos 766*4724848cSchristos vadduwm 0,0,12 767*4724848cSchristos vadduwm 4,4,12 768*4724848cSchristos vadduwm 8,8,12 769*4724848cSchristos vadduwm 1,1,13 770*4724848cSchristos vadduwm 5,5,13 771*4724848cSchristos vadduwm 9,9,13 772*4724848cSchristos vadduwm 2,2,14 773*4724848cSchristos vadduwm 6,6,14 774*4724848cSchristos vadduwm 10,10,14 775*4724848cSchristos vadduwm 3,3,15 776*4724848cSchristos vadduwm 7,7,16 777*4724848cSchristos vadduwm 11,11,17 778*4724848cSchristos 779*4724848cSchristos addi 11,11,4 780*4724848cSchristos vadduwm 15,15,18 781*4724848cSchristos vadduwm 16,16,18 782*4724848cSchristos vadduwm 17,17,18 783*4724848cSchristos 784*4724848cSchristos mr 7,16 785*4724848cSchristos rotlwi 16,16,8 786*4724848cSchristos rlwimi 16,7,24,0,7 787*4724848cSchristos rlwimi 16,7,24,16,23 788*4724848cSchristos mr 8,17 789*4724848cSchristos rotlwi 17,17,8 790*4724848cSchristos rlwimi 17,8,24,0,7 791*4724848cSchristos rlwimi 17,8,24,16,23 792*4724848cSchristos mr 9,18 793*4724848cSchristos rotlwi 18,18,8 794*4724848cSchristos rlwimi 18,9,24,0,7 795*4724848cSchristos rlwimi 18,9,24,16,23 796*4724848cSchristos mr 10,19 797*4724848cSchristos rotlwi 19,19,8 798*4724848cSchristos rlwimi 19,10,24,0,7 799*4724848cSchristos rlwimi 19,10,24,16,23 800*4724848cSchristos mr 7,20 801*4724848cSchristos rotlwi 20,20,8 802*4724848cSchristos rlwimi 20,7,24,0,7 803*4724848cSchristos rlwimi 20,7,24,16,23 804*4724848cSchristos mr 8,21 805*4724848cSchristos rotlwi 21,21,8 806*4724848cSchristos rlwimi 21,8,24,0,7 807*4724848cSchristos rlwimi 21,8,24,16,23 808*4724848cSchristos mr 9,22 809*4724848cSchristos rotlwi 22,22,8 810*4724848cSchristos rlwimi 22,9,24,0,7 811*4724848cSchristos rlwimi 22,9,24,16,23 812*4724848cSchristos mr 10,23 813*4724848cSchristos rotlwi 23,23,8 814*4724848cSchristos rlwimi 23,10,24,0,7 815*4724848cSchristos rlwimi 23,10,24,16,23 816*4724848cSchristos mr 7,24 817*4724848cSchristos rotlwi 24,24,8 818*4724848cSchristos rlwimi 24,7,24,0,7 819*4724848cSchristos rlwimi 24,7,24,16,23 820*4724848cSchristos mr 8,25 821*4724848cSchristos rotlwi 25,25,8 822*4724848cSchristos rlwimi 25,8,24,0,7 823*4724848cSchristos rlwimi 25,8,24,16,23 824*4724848cSchristos mr 9,26 825*4724848cSchristos rotlwi 26,26,8 826*4724848cSchristos rlwimi 26,9,24,0,7 827*4724848cSchristos rlwimi 26,9,24,16,23 828*4724848cSchristos mr 10,27 829*4724848cSchristos rotlwi 27,27,8 830*4724848cSchristos rlwimi 27,10,24,0,7 831*4724848cSchristos rlwimi 27,10,24,16,23 832*4724848cSchristos mr 7,28 833*4724848cSchristos rotlwi 28,28,8 834*4724848cSchristos rlwimi 28,7,24,0,7 835*4724848cSchristos rlwimi 28,7,24,16,23 836*4724848cSchristos mr 8,29 837*4724848cSchristos rotlwi 29,29,8 838*4724848cSchristos rlwimi 29,8,24,0,7 839*4724848cSchristos rlwimi 29,8,24,16,23 840*4724848cSchristos mr 9,30 841*4724848cSchristos rotlwi 30,30,8 842*4724848cSchristos rlwimi 30,9,24,0,7 843*4724848cSchristos rlwimi 30,9,24,16,23 844*4724848cSchristos mr 10,31 845*4724848cSchristos rotlwi 31,31,8 846*4724848cSchristos rlwimi 31,10,24,0,7 847*4724848cSchristos rlwimi 31,10,24,16,23 848*4724848cSchristos lwz 7,0(4) 849*4724848cSchristos lwz 8,4(4) 850*4724848cSchristos lwz 9,8(4) 851*4724848cSchristos lwz 10,12(4) 852*4724848cSchristos xor 16,16,7 853*4724848cSchristos lwz 7,16(4) 854*4724848cSchristos xor 17,17,8 855*4724848cSchristos lwz 8,20(4) 856*4724848cSchristos xor 18,18,9 857*4724848cSchristos lwz 9,24(4) 858*4724848cSchristos xor 19,19,10 859*4724848cSchristos lwz 10,28(4) 860*4724848cSchristos xor 20,20,7 861*4724848cSchristos lwz 7,32(4) 862*4724848cSchristos xor 21,21,8 863*4724848cSchristos lwz 8,36(4) 864*4724848cSchristos xor 22,22,9 865*4724848cSchristos lwz 9,40(4) 866*4724848cSchristos xor 23,23,10 867*4724848cSchristos lwz 10,44(4) 868*4724848cSchristos xor 24,24,7 869*4724848cSchristos lwz 7,48(4) 870*4724848cSchristos xor 25,25,8 871*4724848cSchristos lwz 8,52(4) 872*4724848cSchristos xor 26,26,9 873*4724848cSchristos lwz 9,56(4) 874*4724848cSchristos xor 27,27,10 875*4724848cSchristos lwz 10,60(4) 876*4724848cSchristos xor 28,28,7 877*4724848cSchristos stw 16,0(3) 878*4724848cSchristos xor 29,29,8 879*4724848cSchristos stw 17,4(3) 880*4724848cSchristos xor 30,30,9 881*4724848cSchristos stw 18,8(3) 882*4724848cSchristos xor 31,31,10 883*4724848cSchristos stw 19,12(3) 884*4724848cSchristos addi 4,4,64 885*4724848cSchristos stw 20,16(3) 886*4724848cSchristos li 7,16 887*4724848cSchristos stw 21,20(3) 888*4724848cSchristos li 8,32 889*4724848cSchristos stw 22,24(3) 890*4724848cSchristos li 9,48 891*4724848cSchristos stw 23,28(3) 892*4724848cSchristos li 10,64 893*4724848cSchristos stw 24,32(3) 894*4724848cSchristos stw 25,36(3) 895*4724848cSchristos stw 26,40(3) 896*4724848cSchristos stw 27,44(3) 897*4724848cSchristos stw 28,48(3) 898*4724848cSchristos stw 29,52(3) 899*4724848cSchristos stw 30,56(3) 900*4724848cSchristos stw 31,60(3) 901*4724848cSchristos addi 3,3,64 902*4724848cSchristos 903*4724848cSchristos lvx 27,0,4 904*4724848cSchristos lvx 28,7,4 905*4724848cSchristos lvx 29,8,4 906*4724848cSchristos lvx 30,9,4 907*4724848cSchristos lvx 31,10,4 908*4724848cSchristos addi 4,4,64 909*4724848cSchristos 910*4724848cSchristos vperm 27,27,28,24 911*4724848cSchristos vperm 28,28,29,24 912*4724848cSchristos vperm 29,29,30,24 913*4724848cSchristos vperm 30,30,31,24 914*4724848cSchristos vxor 0,0,27 915*4724848cSchristos vxor 1,1,28 916*4724848cSchristos lvx 28,7,4 917*4724848cSchristos vxor 2,2,29 918*4724848cSchristos lvx 29,8,4 919*4724848cSchristos vxor 3,3,30 920*4724848cSchristos lvx 30,9,4 921*4724848cSchristos lvx 27,10,4 922*4724848cSchristos addi 4,4,64 923*4724848cSchristos li 10,63 924*4724848cSchristos vperm 0,0,0,25 925*4724848cSchristos vperm 1,1,1,25 926*4724848cSchristos vperm 2,2,2,25 927*4724848cSchristos vperm 3,3,3,25 928*4724848cSchristos 929*4724848cSchristos vperm 31,31,28,24 930*4724848cSchristos vperm 28,28,29,24 931*4724848cSchristos vperm 29,29,30,24 932*4724848cSchristos vperm 30,30,27,24 933*4724848cSchristos vxor 4,4,31 934*4724848cSchristos vxor 5,5,28 935*4724848cSchristos lvx 28,7,4 936*4724848cSchristos vxor 6,6,29 937*4724848cSchristos lvx 29,8,4 938*4724848cSchristos vxor 7,7,30 939*4724848cSchristos lvx 30,9,4 940*4724848cSchristos lvx 31,10,4 941*4724848cSchristos addi 4,4,64 942*4724848cSchristos vperm 4,4,4,25 943*4724848cSchristos vperm 5,5,5,25 944*4724848cSchristos vperm 6,6,6,25 945*4724848cSchristos vperm 7,7,7,25 946*4724848cSchristos 947*4724848cSchristos vperm 27,27,28,24 948*4724848cSchristos vperm 28,28,29,24 949*4724848cSchristos vperm 29,29,30,24 950*4724848cSchristos vperm 30,30,31,24 951*4724848cSchristos vxor 8,8,27 952*4724848cSchristos vxor 9,9,28 953*4724848cSchristos vxor 10,10,29 954*4724848cSchristos vxor 11,11,30 955*4724848cSchristos vperm 8,8,8,25 956*4724848cSchristos vperm 9,9,9,25 957*4724848cSchristos vperm 10,10,10,25 958*4724848cSchristos vperm 11,11,11,25 959*4724848cSchristos 960*4724848cSchristos andi. 17,3,15 961*4724848cSchristos mr 16,3 962*4724848cSchristos 963*4724848cSchristos vsel 27,0,1,26 964*4724848cSchristos vsel 28,1,2,26 965*4724848cSchristos vsel 29,2,3,26 966*4724848cSchristos vsel 30,3,4,26 967*4724848cSchristos vsel 1,4,5,26 968*4724848cSchristos vsel 2,5,6,26 969*4724848cSchristos vsel 3,6,7,26 970*4724848cSchristos vsel 4,7,8,26 971*4724848cSchristos vsel 5,8,9,26 972*4724848cSchristos vsel 6,9,10,26 973*4724848cSchristos vsel 7,10,11,26 974*4724848cSchristos 975*4724848cSchristos 976*4724848cSchristos stvx 27,7,3 977*4724848cSchristos stvx 28,8,3 978*4724848cSchristos stvx 29,9,3 979*4724848cSchristos addi 3,3,64 980*4724848cSchristos stvx 30,0,3 981*4724848cSchristos stvx 1,7,3 982*4724848cSchristos stvx 2,8,3 983*4724848cSchristos stvx 3,9,3 984*4724848cSchristos addi 3,3,64 985*4724848cSchristos stvx 4,0,3 986*4724848cSchristos stvx 5,7,3 987*4724848cSchristos stvx 6,8,3 988*4724848cSchristos stvx 7,9,3 989*4724848cSchristos addi 3,3,64 990*4724848cSchristos 991*4724848cSchristos beq .Laligned_vmx 992*4724848cSchristos 993*4724848cSchristos sub 18,3,17 994*4724848cSchristos li 19,0 995*4724848cSchristos.Lunaligned_tail_vmx: 996*4724848cSchristos stvebx 11,19,18 997*4724848cSchristos addi 19,19,1 998*4724848cSchristos cmpw 19,17 999*4724848cSchristos bne .Lunaligned_tail_vmx 1000*4724848cSchristos 1001*4724848cSchristos sub 18,16,17 1002*4724848cSchristos.Lunaligned_head_vmx: 1003*4724848cSchristos stvebx 0,17,18 1004*4724848cSchristos cmpwi 17,15 1005*4724848cSchristos addi 17,17,1 1006*4724848cSchristos bne .Lunaligned_head_vmx 1007*4724848cSchristos 1008*4724848cSchristos cmplwi 5,255 1009*4724848cSchristos bgt .Loop_outer_vmx 1010*4724848cSchristos 1011*4724848cSchristos b .Ldone_vmx 1012*4724848cSchristos 1013*4724848cSchristos.align 4 1014*4724848cSchristos.Laligned_vmx: 1015*4724848cSchristos stvx 0,0,16 1016*4724848cSchristos 1017*4724848cSchristos cmplwi 5,255 1018*4724848cSchristos bgt .Loop_outer_vmx 1019*4724848cSchristos nop 1020*4724848cSchristos 1021*4724848cSchristos.Ldone_vmx: 1022*4724848cSchristos cmplwi 5,0 1023*4724848cSchristos bnel __ChaCha20_1x 1024*4724848cSchristos 1025*4724848cSchristos lwz 12,244(1) 1026*4724848cSchristos li 10,103 1027*4724848cSchristos li 11,119 1028*4724848cSchristos mtspr 256,12 1029*4724848cSchristos lvx 23,10,1 1030*4724848cSchristos addi 10,10,32 1031*4724848cSchristos lvx 24,11,1 1032*4724848cSchristos addi 11,11,32 1033*4724848cSchristos lvx 25,10,1 1034*4724848cSchristos addi 10,10,32 1035*4724848cSchristos lvx 26,11,1 1036*4724848cSchristos addi 11,11,32 1037*4724848cSchristos lvx 27,10,1 1038*4724848cSchristos addi 10,10,32 1039*4724848cSchristos lvx 28,11,1 1040*4724848cSchristos addi 11,11,32 1041*4724848cSchristos lvx 29,10,1 1042*4724848cSchristos addi 10,10,32 1043*4724848cSchristos lvx 30,11,1 1044*4724848cSchristos lvx 31,10,1 1045*4724848cSchristos lwz 0, 324(1) 1046*4724848cSchristos lwz 14,248(1) 1047*4724848cSchristos lwz 15,252(1) 1048*4724848cSchristos lwz 16,256(1) 1049*4724848cSchristos lwz 17,260(1) 1050*4724848cSchristos lwz 18,264(1) 1051*4724848cSchristos lwz 19,268(1) 1052*4724848cSchristos lwz 20,272(1) 1053*4724848cSchristos lwz 21,276(1) 1054*4724848cSchristos lwz 22,280(1) 1055*4724848cSchristos lwz 23,284(1) 1056*4724848cSchristos lwz 24,288(1) 1057*4724848cSchristos lwz 25,292(1) 1058*4724848cSchristos lwz 26,296(1) 1059*4724848cSchristos lwz 27,300(1) 1060*4724848cSchristos lwz 28,304(1) 1061*4724848cSchristos lwz 29,308(1) 1062*4724848cSchristos lwz 30,312(1) 1063*4724848cSchristos lwz 31,316(1) 1064*4724848cSchristos mtlr 0 1065*4724848cSchristos addi 1,1,320 1066*4724848cSchristos blr 1067*4724848cSchristos.long 0 1068*4724848cSchristos.byte 0,12,0x04,1,0x80,18,5,0 1069*4724848cSchristos.long 0 1070*4724848cSchristos 1071*4724848cSchristos 1072*4724848cSchristos.globl ChaCha20_ctr32_vsx 1073*4724848cSchristos.type ChaCha20_ctr32_vsx,@function 1074*4724848cSchristos.align 5 1075*4724848cSchristosChaCha20_ctr32_vsx: 1076*4724848cSchristos stwu 1,-200(1) 1077*4724848cSchristos mflr 0 1078*4724848cSchristos li 10,103 1079*4724848cSchristos li 11,119 1080*4724848cSchristos mfspr 12,256 1081*4724848cSchristos stvx 26,10,1 1082*4724848cSchristos addi 10,10,32 1083*4724848cSchristos stvx 27,11,1 1084*4724848cSchristos addi 11,11,32 1085*4724848cSchristos stvx 28,10,1 1086*4724848cSchristos addi 10,10,32 1087*4724848cSchristos stvx 29,11,1 1088*4724848cSchristos addi 11,11,32 1089*4724848cSchristos stvx 30,10,1 1090*4724848cSchristos stvx 31,11,1 1091*4724848cSchristos stw 12,196(1) 1092*4724848cSchristos li 12,-4096+63 1093*4724848cSchristos stw 0, 204(1) 1094*4724848cSchristos mtspr 256,12 1095*4724848cSchristos 1096*4724848cSchristos bl .Lconsts 1097*4724848cSchristos.long 0x7E006619 1098*4724848cSchristos addi 12,12,0x50 1099*4724848cSchristos li 8,16 1100*4724848cSchristos li 9,32 1101*4724848cSchristos li 10,48 1102*4724848cSchristos li 11,64 1103*4724848cSchristos 1104*4724848cSchristos.long 0x7E203619 1105*4724848cSchristos.long 0x7E483619 1106*4724848cSchristos.long 0x7E603E19 1107*4724848cSchristos 1108*4724848cSchristos vxor 27,27,27 1109*4724848cSchristos.long 0x7F8B6619 1110*4724848cSchristos vspltw 26,19,0 1111*4724848cSchristos vsldoi 19,19,27,4 1112*4724848cSchristos vsldoi 19,27,19,12 1113*4724848cSchristos vadduwm 26,26,28 1114*4724848cSchristos 1115*4724848cSchristos lvsl 31,0,8 1116*4724848cSchristos vspltisb 27,3 1117*4724848cSchristos vxor 31,31,27 1118*4724848cSchristos 1119*4724848cSchristos li 0,10 1120*4724848cSchristos mtctr 0 1121*4724848cSchristos b .Loop_outer_vsx 1122*4724848cSchristos 1123*4724848cSchristos.align 5 1124*4724848cSchristos.Loop_outer_vsx: 1125*4724848cSchristos lvx 0,0,12 1126*4724848cSchristos lvx 1,8,12 1127*4724848cSchristos lvx 2,9,12 1128*4724848cSchristos lvx 3,10,12 1129*4724848cSchristos 1130*4724848cSchristos vspltw 4,17,0 1131*4724848cSchristos vspltw 5,17,1 1132*4724848cSchristos vspltw 6,17,2 1133*4724848cSchristos vspltw 7,17,3 1134*4724848cSchristos 1135*4724848cSchristos vspltw 8,18,0 1136*4724848cSchristos vspltw 9,18,1 1137*4724848cSchristos vspltw 10,18,2 1138*4724848cSchristos vspltw 11,18,3 1139*4724848cSchristos 1140*4724848cSchristos vor 12,26,26 1141*4724848cSchristos vspltw 13,19,1 1142*4724848cSchristos vspltw 14,19,2 1143*4724848cSchristos vspltw 15,19,3 1144*4724848cSchristos 1145*4724848cSchristos vspltisw 27,-16 1146*4724848cSchristos vspltisw 28,12 1147*4724848cSchristos vspltisw 29,8 1148*4724848cSchristos vspltisw 30,7 1149*4724848cSchristos 1150*4724848cSchristos.Loop_vsx: 1151*4724848cSchristos vadduwm 0,0,4 1152*4724848cSchristos vadduwm 1,1,5 1153*4724848cSchristos vadduwm 2,2,6 1154*4724848cSchristos vadduwm 3,3,7 1155*4724848cSchristos vxor 12,12,0 1156*4724848cSchristos vxor 13,13,1 1157*4724848cSchristos vxor 14,14,2 1158*4724848cSchristos vxor 15,15,3 1159*4724848cSchristos vrlw 12,12,27 1160*4724848cSchristos vrlw 13,13,27 1161*4724848cSchristos vrlw 14,14,27 1162*4724848cSchristos vrlw 15,15,27 1163*4724848cSchristos vadduwm 8,8,12 1164*4724848cSchristos vadduwm 9,9,13 1165*4724848cSchristos vadduwm 10,10,14 1166*4724848cSchristos vadduwm 11,11,15 1167*4724848cSchristos vxor 4,4,8 1168*4724848cSchristos vxor 5,5,9 1169*4724848cSchristos vxor 6,6,10 1170*4724848cSchristos vxor 7,7,11 1171*4724848cSchristos vrlw 4,4,28 1172*4724848cSchristos vrlw 5,5,28 1173*4724848cSchristos vrlw 6,6,28 1174*4724848cSchristos vrlw 7,7,28 1175*4724848cSchristos vadduwm 0,0,4 1176*4724848cSchristos vadduwm 1,1,5 1177*4724848cSchristos vadduwm 2,2,6 1178*4724848cSchristos vadduwm 3,3,7 1179*4724848cSchristos vxor 12,12,0 1180*4724848cSchristos vxor 13,13,1 1181*4724848cSchristos vxor 14,14,2 1182*4724848cSchristos vxor 15,15,3 1183*4724848cSchristos vrlw 12,12,29 1184*4724848cSchristos vrlw 13,13,29 1185*4724848cSchristos vrlw 14,14,29 1186*4724848cSchristos vrlw 15,15,29 1187*4724848cSchristos vadduwm 8,8,12 1188*4724848cSchristos vadduwm 9,9,13 1189*4724848cSchristos vadduwm 10,10,14 1190*4724848cSchristos vadduwm 11,11,15 1191*4724848cSchristos vxor 4,4,8 1192*4724848cSchristos vxor 5,5,9 1193*4724848cSchristos vxor 6,6,10 1194*4724848cSchristos vxor 7,7,11 1195*4724848cSchristos vrlw 4,4,30 1196*4724848cSchristos vrlw 5,5,30 1197*4724848cSchristos vrlw 6,6,30 1198*4724848cSchristos vrlw 7,7,30 1199*4724848cSchristos vadduwm 0,0,5 1200*4724848cSchristos vadduwm 1,1,6 1201*4724848cSchristos vadduwm 2,2,7 1202*4724848cSchristos vadduwm 3,3,4 1203*4724848cSchristos vxor 15,15,0 1204*4724848cSchristos vxor 12,12,1 1205*4724848cSchristos vxor 13,13,2 1206*4724848cSchristos vxor 14,14,3 1207*4724848cSchristos vrlw 15,15,27 1208*4724848cSchristos vrlw 12,12,27 1209*4724848cSchristos vrlw 13,13,27 1210*4724848cSchristos vrlw 14,14,27 1211*4724848cSchristos vadduwm 10,10,15 1212*4724848cSchristos vadduwm 11,11,12 1213*4724848cSchristos vadduwm 8,8,13 1214*4724848cSchristos vadduwm 9,9,14 1215*4724848cSchristos vxor 5,5,10 1216*4724848cSchristos vxor 6,6,11 1217*4724848cSchristos vxor 7,7,8 1218*4724848cSchristos vxor 4,4,9 1219*4724848cSchristos vrlw 5,5,28 1220*4724848cSchristos vrlw 6,6,28 1221*4724848cSchristos vrlw 7,7,28 1222*4724848cSchristos vrlw 4,4,28 1223*4724848cSchristos vadduwm 0,0,5 1224*4724848cSchristos vadduwm 1,1,6 1225*4724848cSchristos vadduwm 2,2,7 1226*4724848cSchristos vadduwm 3,3,4 1227*4724848cSchristos vxor 15,15,0 1228*4724848cSchristos vxor 12,12,1 1229*4724848cSchristos vxor 13,13,2 1230*4724848cSchristos vxor 14,14,3 1231*4724848cSchristos vrlw 15,15,29 1232*4724848cSchristos vrlw 12,12,29 1233*4724848cSchristos vrlw 13,13,29 1234*4724848cSchristos vrlw 14,14,29 1235*4724848cSchristos vadduwm 10,10,15 1236*4724848cSchristos vadduwm 11,11,12 1237*4724848cSchristos vadduwm 8,8,13 1238*4724848cSchristos vadduwm 9,9,14 1239*4724848cSchristos vxor 5,5,10 1240*4724848cSchristos vxor 6,6,11 1241*4724848cSchristos vxor 7,7,8 1242*4724848cSchristos vxor 4,4,9 1243*4724848cSchristos vrlw 5,5,30 1244*4724848cSchristos vrlw 6,6,30 1245*4724848cSchristos vrlw 7,7,30 1246*4724848cSchristos vrlw 4,4,30 1247*4724848cSchristos bc 16,0,.Loop_vsx 1248*4724848cSchristos 1249*4724848cSchristos vadduwm 12,12,26 1250*4724848cSchristos 1251*4724848cSchristos.long 0x13600F8C 1252*4724848cSchristos.long 0x13821F8C 1253*4724848cSchristos.long 0x10000E8C 1254*4724848cSchristos.long 0x10421E8C 1255*4724848cSchristos.long 0x13A42F8C 1256*4724848cSchristos.long 0x13C63F8C 1257*4724848cSchristos.long 0xF0201057 1258*4724848cSchristos.long 0xF0601357 1259*4724848cSchristos.long 0xF01BE057 1260*4724848cSchristos.long 0xF05BE357 1261*4724848cSchristos 1262*4724848cSchristos.long 0x10842E8C 1263*4724848cSchristos.long 0x10C63E8C 1264*4724848cSchristos.long 0x13684F8C 1265*4724848cSchristos.long 0x138A5F8C 1266*4724848cSchristos.long 0xF0A43057 1267*4724848cSchristos.long 0xF0E43357 1268*4724848cSchristos.long 0xF09DF057 1269*4724848cSchristos.long 0xF0DDF357 1270*4724848cSchristos 1271*4724848cSchristos.long 0x11084E8C 1272*4724848cSchristos.long 0x114A5E8C 1273*4724848cSchristos.long 0x13AC6F8C 1274*4724848cSchristos.long 0x13CE7F8C 1275*4724848cSchristos.long 0xF1285057 1276*4724848cSchristos.long 0xF1685357 1277*4724848cSchristos.long 0xF11BE057 1278*4724848cSchristos.long 0xF15BE357 1279*4724848cSchristos 1280*4724848cSchristos.long 0x118C6E8C 1281*4724848cSchristos.long 0x11CE7E8C 1282*4724848cSchristos vspltisw 27,4 1283*4724848cSchristos vadduwm 26,26,27 1284*4724848cSchristos.long 0xF1AC7057 1285*4724848cSchristos.long 0xF1EC7357 1286*4724848cSchristos.long 0xF19DF057 1287*4724848cSchristos.long 0xF1DDF357 1288*4724848cSchristos 1289*4724848cSchristos vadduwm 0,0,16 1290*4724848cSchristos vadduwm 4,4,17 1291*4724848cSchristos vadduwm 8,8,18 1292*4724848cSchristos vadduwm 12,12,19 1293*4724848cSchristos 1294*4724848cSchristos vperm 0,0,0,31 1295*4724848cSchristos vperm 4,4,4,31 1296*4724848cSchristos vperm 8,8,8,31 1297*4724848cSchristos vperm 12,12,12,31 1298*4724848cSchristos 1299*4724848cSchristos cmplwi 5,0x40 1300*4724848cSchristos blt .Ltail_vsx 1301*4724848cSchristos 1302*4724848cSchristos.long 0x7F602619 1303*4724848cSchristos.long 0x7F882619 1304*4724848cSchristos.long 0x7FA92619 1305*4724848cSchristos.long 0x7FCA2619 1306*4724848cSchristos 1307*4724848cSchristos vxor 27,27,0 1308*4724848cSchristos vxor 28,28,4 1309*4724848cSchristos vxor 29,29,8 1310*4724848cSchristos vxor 30,30,12 1311*4724848cSchristos 1312*4724848cSchristos.long 0x7F601F19 1313*4724848cSchristos.long 0x7F881F19 1314*4724848cSchristos addi 4,4,0x40 1315*4724848cSchristos.long 0x7FA91F19 1316*4724848cSchristos subi 5,5,0x40 1317*4724848cSchristos.long 0x7FCA1F19 1318*4724848cSchristos addi 3,3,0x40 1319*4724848cSchristos beq .Ldone_vsx 1320*4724848cSchristos 1321*4724848cSchristos vadduwm 0,1,16 1322*4724848cSchristos vadduwm 4,5,17 1323*4724848cSchristos vadduwm 8,9,18 1324*4724848cSchristos vadduwm 12,13,19 1325*4724848cSchristos 1326*4724848cSchristos vperm 0,0,0,31 1327*4724848cSchristos vperm 4,4,4,31 1328*4724848cSchristos vperm 8,8,8,31 1329*4724848cSchristos vperm 12,12,12,31 1330*4724848cSchristos 1331*4724848cSchristos cmplwi 5,0x40 1332*4724848cSchristos blt .Ltail_vsx 1333*4724848cSchristos 1334*4724848cSchristos.long 0x7F602619 1335*4724848cSchristos.long 0x7F882619 1336*4724848cSchristos.long 0x7FA92619 1337*4724848cSchristos.long 0x7FCA2619 1338*4724848cSchristos 1339*4724848cSchristos vxor 27,27,0 1340*4724848cSchristos vxor 28,28,4 1341*4724848cSchristos vxor 29,29,8 1342*4724848cSchristos vxor 30,30,12 1343*4724848cSchristos 1344*4724848cSchristos.long 0x7F601F19 1345*4724848cSchristos.long 0x7F881F19 1346*4724848cSchristos addi 4,4,0x40 1347*4724848cSchristos.long 0x7FA91F19 1348*4724848cSchristos subi 5,5,0x40 1349*4724848cSchristos.long 0x7FCA1F19 1350*4724848cSchristos addi 3,3,0x40 1351*4724848cSchristos beq .Ldone_vsx 1352*4724848cSchristos 1353*4724848cSchristos vadduwm 0,2,16 1354*4724848cSchristos vadduwm 4,6,17 1355*4724848cSchristos vadduwm 8,10,18 1356*4724848cSchristos vadduwm 12,14,19 1357*4724848cSchristos 1358*4724848cSchristos vperm 0,0,0,31 1359*4724848cSchristos vperm 4,4,4,31 1360*4724848cSchristos vperm 8,8,8,31 1361*4724848cSchristos vperm 12,12,12,31 1362*4724848cSchristos 1363*4724848cSchristos cmplwi 5,0x40 1364*4724848cSchristos blt .Ltail_vsx 1365*4724848cSchristos 1366*4724848cSchristos.long 0x7F602619 1367*4724848cSchristos.long 0x7F882619 1368*4724848cSchristos.long 0x7FA92619 1369*4724848cSchristos.long 0x7FCA2619 1370*4724848cSchristos 1371*4724848cSchristos vxor 27,27,0 1372*4724848cSchristos vxor 28,28,4 1373*4724848cSchristos vxor 29,29,8 1374*4724848cSchristos vxor 30,30,12 1375*4724848cSchristos 1376*4724848cSchristos.long 0x7F601F19 1377*4724848cSchristos.long 0x7F881F19 1378*4724848cSchristos addi 4,4,0x40 1379*4724848cSchristos.long 0x7FA91F19 1380*4724848cSchristos subi 5,5,0x40 1381*4724848cSchristos.long 0x7FCA1F19 1382*4724848cSchristos addi 3,3,0x40 1383*4724848cSchristos beq .Ldone_vsx 1384*4724848cSchristos 1385*4724848cSchristos vadduwm 0,3,16 1386*4724848cSchristos vadduwm 4,7,17 1387*4724848cSchristos vadduwm 8,11,18 1388*4724848cSchristos vadduwm 12,15,19 1389*4724848cSchristos 1390*4724848cSchristos vperm 0,0,0,31 1391*4724848cSchristos vperm 4,4,4,31 1392*4724848cSchristos vperm 8,8,8,31 1393*4724848cSchristos vperm 12,12,12,31 1394*4724848cSchristos 1395*4724848cSchristos cmplwi 5,0x40 1396*4724848cSchristos blt .Ltail_vsx 1397*4724848cSchristos 1398*4724848cSchristos.long 0x7F602619 1399*4724848cSchristos.long 0x7F882619 1400*4724848cSchristos.long 0x7FA92619 1401*4724848cSchristos.long 0x7FCA2619 1402*4724848cSchristos 1403*4724848cSchristos vxor 27,27,0 1404*4724848cSchristos vxor 28,28,4 1405*4724848cSchristos vxor 29,29,8 1406*4724848cSchristos vxor 30,30,12 1407*4724848cSchristos 1408*4724848cSchristos.long 0x7F601F19 1409*4724848cSchristos.long 0x7F881F19 1410*4724848cSchristos addi 4,4,0x40 1411*4724848cSchristos.long 0x7FA91F19 1412*4724848cSchristos subi 5,5,0x40 1413*4724848cSchristos.long 0x7FCA1F19 1414*4724848cSchristos addi 3,3,0x40 1415*4724848cSchristos mtctr 0 1416*4724848cSchristos bne .Loop_outer_vsx 1417*4724848cSchristos 1418*4724848cSchristos.Ldone_vsx: 1419*4724848cSchristos lwz 12,196(1) 1420*4724848cSchristos li 10,103 1421*4724848cSchristos li 11,119 1422*4724848cSchristos lwz 0, 204(1) 1423*4724848cSchristos mtspr 256,12 1424*4724848cSchristos lvx 26,10,1 1425*4724848cSchristos addi 10,10,32 1426*4724848cSchristos lvx 27,11,1 1427*4724848cSchristos addi 11,11,32 1428*4724848cSchristos lvx 28,10,1 1429*4724848cSchristos addi 10,10,32 1430*4724848cSchristos lvx 29,11,1 1431*4724848cSchristos addi 11,11,32 1432*4724848cSchristos lvx 30,10,1 1433*4724848cSchristos lvx 31,11,1 1434*4724848cSchristos mtlr 0 1435*4724848cSchristos addi 1,1,200 1436*4724848cSchristos blr 1437*4724848cSchristos 1438*4724848cSchristos.align 4 1439*4724848cSchristos.Ltail_vsx: 1440*4724848cSchristos addi 11,1,24 1441*4724848cSchristos mtctr 5 1442*4724848cSchristos.long 0x7C005F19 1443*4724848cSchristos.long 0x7C885F19 1444*4724848cSchristos.long 0x7D095F19 1445*4724848cSchristos.long 0x7D8A5F19 1446*4724848cSchristos subi 12,11,1 1447*4724848cSchristos subi 4,4,1 1448*4724848cSchristos subi 3,3,1 1449*4724848cSchristos 1450*4724848cSchristos.Loop_tail_vsx: 1451*4724848cSchristos lbzu 6,1(12) 1452*4724848cSchristos lbzu 7,1(4) 1453*4724848cSchristos xor 6,6,7 1454*4724848cSchristos stbu 6,1(3) 1455*4724848cSchristos bc 16,0,.Loop_tail_vsx 1456*4724848cSchristos 1457*4724848cSchristos.long 0x7E005F19 1458*4724848cSchristos.long 0x7E085F19 1459*4724848cSchristos.long 0x7E095F19 1460*4724848cSchristos.long 0x7E0A5F19 1461*4724848cSchristos 1462*4724848cSchristos b .Ldone_vsx 1463*4724848cSchristos.long 0 1464*4724848cSchristos.byte 0,12,0x04,1,0x80,0,5,0 1465*4724848cSchristos.long 0 1466*4724848cSchristos 1467*4724848cSchristos.align 5 1468*4724848cSchristos.Lconsts: 1469*4724848cSchristos mflr 0 1470*4724848cSchristos bcl 20,31,$+4 1471*4724848cSchristos mflr 12 1472*4724848cSchristos addi 12,12,56 1473*4724848cSchristos mtlr 0 1474*4724848cSchristos blr 1475*4724848cSchristos.long 0 1476*4724848cSchristos.byte 0,12,0x14,0,0,0,0,0 1477*4724848cSchristos.space 28 1478*4724848cSchristos.Lsigma: 1479*4724848cSchristos.long 0x61707865,0x3320646e,0x79622d32,0x6b206574 1480*4724848cSchristos.long 1,0,0,0 1481*4724848cSchristos.long 4,0,0,0 1482*4724848cSchristos.long 0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d 1483*4724848cSchristos.long 0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c 1484*4724848cSchristos.long 0x61707865,0x61707865,0x61707865,0x61707865 1485*4724848cSchristos.long 0x3320646e,0x3320646e,0x3320646e,0x3320646e 1486*4724848cSchristos.long 0x79622d32,0x79622d32,0x79622d32,0x79622d32 1487*4724848cSchristos.long 0x6b206574,0x6b206574,0x6b206574,0x6b206574 1488*4724848cSchristos.long 0,1,2,3 1489*4724848cSchristos.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,80,111,119,101,114,80,67,47,65,108,116,105,86,101,99,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 1490*4724848cSchristos.align 2 1491*4724848cSchristos.align 2 1492