Home | History | Annotate | Line # | Download | only in powerpc
      1 
      2 .globl	ChaCha20_ctr32_vsx_p10
      3 .type	ChaCha20_ctr32_vsx_p10,@function
      4 .align	5
      5 ChaCha20_ctr32_vsx_p10:
      6 	cmplwi	5,255
      7 	ble	.Not_greater_than_8x
      8 	b	ChaCha20_ctr32_vsx_8x
      9 .Not_greater_than_8x:
     10 	stwu	1,-200(1)
     11 	mflr	0
     12 	li	10,103
     13 	li	11,119
     14 	mfspr	12,256
     15 	stvx	26,10,1
     16 	addi	10,10,32
     17 	stvx	27,11,1
     18 	addi	11,11,32
     19 	stvx	28,10,1
     20 	addi	10,10,32
     21 	stvx	29,11,1
     22 	addi	11,11,32
     23 	stvx	30,10,1
     24 	stvx	31,11,1
     25 	stw	12,196(1)
     26 	li	12,-4096+63
     27 	stw	0, 204(1)
     28 	mtspr	256,12
     29 
     30 	bl	.Lconsts
     31 .long	0x7E006619
     32 	addi	12,12,0x70
     33 	li	8,16
     34 	li	9,32
     35 	li	10,48
     36 	li	11,64
     37 
     38 .long	0x7E203619
     39 .long	0x7E483619
     40 .long	0x7E603E19
     41 
     42 	vxor	27,27,27
     43 .long	0x7F8B6619
     44 	vspltw	26,19,0
     45 	vsldoi	19,19,27,4
     46 	vsldoi	19,27,19,12
     47 	vadduwm	26,26,28
     48 
     49 	lvsl	31,0,8
     50 	vspltisb	27,3
     51 	vxor	31,31,27
     52 
     53 	li	0,10
     54 	mtctr	0
     55 	b	.Loop_outer_vsx
     56 
     57 .align	5
     58 .Loop_outer_vsx:
     59 	lvx	0,0,12
     60 	lvx	1,8,12
     61 	lvx	2,9,12
     62 	lvx	3,10,12
     63 
     64 	vspltw	4,17,0
     65 	vspltw	5,17,1
     66 	vspltw	6,17,2
     67 	vspltw	7,17,3
     68 
     69 	vspltw	8,18,0
     70 	vspltw	9,18,1
     71 	vspltw	10,18,2
     72 	vspltw	11,18,3
     73 
     74 	vor	12,26,26
     75 	vspltw	13,19,1
     76 	vspltw	14,19,2
     77 	vspltw	15,19,3
     78 
     79 	vspltisw	27,-16
     80 	vspltisw	28,12
     81 	vspltisw	29,8
     82 	vspltisw	30,7
     83 
     84 .Loop_vsx_4x:
     85 	vadduwm	0,0,4
     86 	vadduwm	1,1,5
     87 	vadduwm	2,2,6
     88 	vadduwm	3,3,7
     89 	vxor	12,12,0
     90 	vxor	13,13,1
     91 	vxor	14,14,2
     92 	vxor	15,15,3
     93 	vrlw	12,12,27
     94 	vrlw	13,13,27
     95 	vrlw	14,14,27
     96 	vrlw	15,15,27
     97 	vadduwm	8,8,12
     98 	vadduwm	9,9,13
     99 	vadduwm	10,10,14
    100 	vadduwm	11,11,15
    101 	vxor	4,4,8
    102 	vxor	5,5,9
    103 	vxor	6,6,10
    104 	vxor	7,7,11
    105 	vrlw	4,4,28
    106 	vrlw	5,5,28
    107 	vrlw	6,6,28
    108 	vrlw	7,7,28
    109 	vadduwm	0,0,4
    110 	vadduwm	1,1,5
    111 	vadduwm	2,2,6
    112 	vadduwm	3,3,7
    113 	vxor	12,12,0
    114 	vxor	13,13,1
    115 	vxor	14,14,2
    116 	vxor	15,15,3
    117 	vrlw	12,12,29
    118 	vrlw	13,13,29
    119 	vrlw	14,14,29
    120 	vrlw	15,15,29
    121 	vadduwm	8,8,12
    122 	vadduwm	9,9,13
    123 	vadduwm	10,10,14
    124 	vadduwm	11,11,15
    125 	vxor	4,4,8
    126 	vxor	5,5,9
    127 	vxor	6,6,10
    128 	vxor	7,7,11
    129 	vrlw	4,4,30
    130 	vrlw	5,5,30
    131 	vrlw	6,6,30
    132 	vrlw	7,7,30
    133 	vadduwm	0,0,5
    134 	vadduwm	1,1,6
    135 	vadduwm	2,2,7
    136 	vadduwm	3,3,4
    137 	vxor	15,15,0
    138 	vxor	12,12,1
    139 	vxor	13,13,2
    140 	vxor	14,14,3
    141 	vrlw	15,15,27
    142 	vrlw	12,12,27
    143 	vrlw	13,13,27
    144 	vrlw	14,14,27
    145 	vadduwm	10,10,15
    146 	vadduwm	11,11,12
    147 	vadduwm	8,8,13
    148 	vadduwm	9,9,14
    149 	vxor	5,5,10
    150 	vxor	6,6,11
    151 	vxor	7,7,8
    152 	vxor	4,4,9
    153 	vrlw	5,5,28
    154 	vrlw	6,6,28
    155 	vrlw	7,7,28
    156 	vrlw	4,4,28
    157 	vadduwm	0,0,5
    158 	vadduwm	1,1,6
    159 	vadduwm	2,2,7
    160 	vadduwm	3,3,4
    161 	vxor	15,15,0
    162 	vxor	12,12,1
    163 	vxor	13,13,2
    164 	vxor	14,14,3
    165 	vrlw	15,15,29
    166 	vrlw	12,12,29
    167 	vrlw	13,13,29
    168 	vrlw	14,14,29
    169 	vadduwm	10,10,15
    170 	vadduwm	11,11,12
    171 	vadduwm	8,8,13
    172 	vadduwm	9,9,14
    173 	vxor	5,5,10
    174 	vxor	6,6,11
    175 	vxor	7,7,8
    176 	vxor	4,4,9
    177 	vrlw	5,5,30
    178 	vrlw	6,6,30
    179 	vrlw	7,7,30
    180 	vrlw	4,4,30
    181 
    182 	bc	16,0,.Loop_vsx_4x
    183 
    184 	vadduwm	12,12,26
    185 
    186 .long	0x13600F8C
    187 .long	0x13821F8C
    188 .long	0x10000E8C
    189 .long	0x10421E8C
    190 .long	0x13A42F8C
    191 .long	0x13C63F8C
    192 .long	0xF0201057
    193 .long	0xF0601357
    194 .long	0xF01BE057
    195 .long	0xF05BE357
    196 
    197 .long	0x10842E8C
    198 .long	0x10C63E8C
    199 .long	0x13684F8C
    200 .long	0x138A5F8C
    201 .long	0xF0A43057
    202 .long	0xF0E43357
    203 .long	0xF09DF057
    204 .long	0xF0DDF357
    205 
    206 .long	0x11084E8C
    207 .long	0x114A5E8C
    208 .long	0x13AC6F8C
    209 .long	0x13CE7F8C
    210 .long	0xF1285057
    211 .long	0xF1685357
    212 .long	0xF11BE057
    213 .long	0xF15BE357
    214 
    215 .long	0x118C6E8C
    216 .long	0x11CE7E8C
    217 	vspltisw	27,4
    218 	vadduwm	26,26,27
    219 .long	0xF1AC7057
    220 .long	0xF1EC7357
    221 .long	0xF19DF057
    222 .long	0xF1DDF357
    223 
    224 	vadduwm	0,0,16
    225 	vadduwm	4,4,17
    226 	vadduwm	8,8,18
    227 	vadduwm	12,12,19
    228 
    229 	vperm	0,0,0,31
    230 	vperm	4,4,4,31
    231 	vperm	8,8,8,31
    232 	vperm	12,12,12,31
    233 
    234 	cmplwi	5,0x40
    235 	blt	.Ltail_vsx
    236 
    237 .long	0x7F602619
    238 .long	0x7F882619
    239 .long	0x7FA92619
    240 .long	0x7FCA2619
    241 
    242 	vxor	27,27,0
    243 	vxor	28,28,4
    244 	vxor	29,29,8
    245 	vxor	30,30,12
    246 
    247 .long	0x7F601F19
    248 .long	0x7F881F19
    249 	addi	4,4,0x40
    250 .long	0x7FA91F19
    251 	subi	5,5,0x40
    252 .long	0x7FCA1F19
    253 	addi	3,3,0x40
    254 	beq	.Ldone_vsx
    255 
    256 	vadduwm	0,1,16
    257 	vadduwm	4,5,17
    258 	vadduwm	8,9,18
    259 	vadduwm	12,13,19
    260 
    261 	vperm	0,0,0,31
    262 	vperm	4,4,4,31
    263 	vperm	8,8,8,31
    264 	vperm	12,12,12,31
    265 
    266 	cmplwi	5,0x40
    267 	blt	.Ltail_vsx
    268 
    269 .long	0x7F602619
    270 .long	0x7F882619
    271 .long	0x7FA92619
    272 .long	0x7FCA2619
    273 
    274 	vxor	27,27,0
    275 	vxor	28,28,4
    276 	vxor	29,29,8
    277 	vxor	30,30,12
    278 
    279 .long	0x7F601F19
    280 .long	0x7F881F19
    281 	addi	4,4,0x40
    282 .long	0x7FA91F19
    283 	subi	5,5,0x40
    284 .long	0x7FCA1F19
    285 	addi	3,3,0x40
    286 	beq	.Ldone_vsx
    287 
    288 	vadduwm	0,2,16
    289 	vadduwm	4,6,17
    290 	vadduwm	8,10,18
    291 	vadduwm	12,14,19
    292 
    293 	vperm	0,0,0,31
    294 	vperm	4,4,4,31
    295 	vperm	8,8,8,31
    296 	vperm	12,12,12,31
    297 
    298 	cmplwi	5,0x40
    299 	blt	.Ltail_vsx
    300 
    301 .long	0x7F602619
    302 .long	0x7F882619
    303 .long	0x7FA92619
    304 .long	0x7FCA2619
    305 
    306 	vxor	27,27,0
    307 	vxor	28,28,4
    308 	vxor	29,29,8
    309 	vxor	30,30,12
    310 
    311 .long	0x7F601F19
    312 .long	0x7F881F19
    313 	addi	4,4,0x40
    314 .long	0x7FA91F19
    315 	subi	5,5,0x40
    316 .long	0x7FCA1F19
    317 	addi	3,3,0x40
    318 	beq	.Ldone_vsx
    319 
    320 	vadduwm	0,3,16
    321 	vadduwm	4,7,17
    322 	vadduwm	8,11,18
    323 	vadduwm	12,15,19
    324 
    325 	vperm	0,0,0,31
    326 	vperm	4,4,4,31
    327 	vperm	8,8,8,31
    328 	vperm	12,12,12,31
    329 
    330 	cmplwi	5,0x40
    331 	blt	.Ltail_vsx
    332 
    333 .long	0x7F602619
    334 .long	0x7F882619
    335 .long	0x7FA92619
    336 .long	0x7FCA2619
    337 
    338 	vxor	27,27,0
    339 	vxor	28,28,4
    340 	vxor	29,29,8
    341 	vxor	30,30,12
    342 
    343 .long	0x7F601F19
    344 .long	0x7F881F19
    345 	addi	4,4,0x40
    346 .long	0x7FA91F19
    347 	subi	5,5,0x40
    348 .long	0x7FCA1F19
    349 	addi	3,3,0x40
    350 	mtctr	0
    351 	bne	.Loop_outer_vsx
    352 
    353 .Ldone_vsx:
    354 	lwz	12,196(1)
    355 	li	10,103
    356 	li	11,119
    357 	lwz	0, 204(1)
    358 	mtspr	256,12
    359 	lvx	26,10,1
    360 	addi	10,10,32
    361 	lvx	27,11,1
    362 	addi	11,11,32
    363 	lvx	28,10,1
    364 	addi	10,10,32
    365 	lvx	29,11,1
    366 	addi	11,11,32
    367 	lvx	30,10,1
    368 	lvx	31,11,1
    369 	mtlr	0
    370 	addi	1,1,200
    371 	blr
    372 
    373 .align	4
    374 .Ltail_vsx:
    375 	addi	11,1,24
    376 	mtctr	5
    377 .long	0x7C005F19
    378 .long	0x7C885F19
    379 .long	0x7D095F19
    380 .long	0x7D8A5F19
    381 	subi	12,11,1
    382 	subi	4,4,1
    383 	subi	3,3,1
    384 
    385 .Loop_tail_vsx:
    386 	lbzu	6,1(12)
    387 	lbzu	7,1(4)
    388 	xor	6,6,7
    389 	stbu	6,1(3)
    390 	bc	16,0,.Loop_tail_vsx
    391 
    392 .long	0x7E005F19
    393 .long	0x7E085F19
    394 .long	0x7E095F19
    395 .long	0x7E0A5F19
    396 
    397 	b	.Ldone_vsx
    398 .long	0
    399 .byte	0,12,0x04,1,0x80,0,5,0
    400 .long	0
    401 
    402 
    403 .globl	ChaCha20_ctr32_vsx_8x
    404 .type	ChaCha20_ctr32_vsx_8x,@function
    405 .align	5
    406 ChaCha20_ctr32_vsx_8x:
    407 	stwu	1,-232(1)
    408 	mflr	0
    409 	li	10,103
    410 	li	11,119
    411 	mfspr	12,256
    412 	stvx	24,10,1
    413 	addi	10,10,32
    414 	stvx	25,11,1
    415 	addi	11,11,32
    416 	stvx	26,10,1
    417 	addi	10,10,32
    418 	stvx	27,11,1
    419 	addi	11,11,32
    420 	stvx	28,10,1
    421 	addi	10,10,32
    422 	stvx	29,11,1
    423 	addi	11,11,32
    424 	stvx	30,10,1
    425 	stvx	31,11,1
    426 	stw	12,228(1)
    427 	li	12,-4096+63
    428 	stw	0, 236(1)
    429 	mtspr	256,12
    430 
    431 	bl	.Lconsts
    432 
    433 .long	0x7F606619
    434 	addi	12,12,0x70
    435 	li	8,16
    436 	li	9,32
    437 	li	10,48
    438 	li	11,64
    439 
    440 	vspltisw	16,-16
    441 	vspltisw	20,12
    442 	vspltisw	24,8
    443 	vspltisw	28,7
    444 
    445 	lvx	0,0,12
    446 	lvx	1,8,12
    447 	lvx	2,9,12
    448 	lvx	3,10,12
    449 
    450 .long	0xF1308496
    451 .long	0xF154A496
    452 .long	0xF178C496
    453 .long	0xF19CE496
    454 .long	0xF2C00496
    455 .long	0xF2E10C96
    456 .long	0xF3021496
    457 .long	0xF3231C96
    458 
    459 .long	0x7F003619
    460 .long	0x7F283619
    461 .long	0x7F403E19
    462 	vspltisw	30,4
    463 
    464 
    465 	vxor	29,29,29
    466 .long	0x7F8B6619
    467 	vspltw	2,26,0
    468 	vsldoi	26,26,29,4
    469 	vsldoi	26,29,26,12
    470 	vadduwm	28,2,28
    471 	vadduwm	30,28,30
    472 	vspltw	0,25,2
    473 
    474 	lvsl	31,0,8
    475 	vspltisb	23,3
    476 	vxor	31,31,23
    477 .long	0xF35FFC96
    478 
    479 .long	0xF01BDC96
    480 .long	0xF038C496
    481 .long	0xF059CC96
    482 .long	0xF07AD496
    483 .long	0xF09CE496
    484 .long	0xF0BEF496
    485 .long	0xF1000496
    486 
    487 	li	0,10
    488 	mtctr	0
    489 	b	.Loop_outer_vsx_8x
    490 
    491 .align	5
    492 .Loop_outer_vsx_8x:
    493 .long	0xF016B491
    494 .long	0xF037BC91
    495 .long	0xF058C491
    496 .long	0xF079CC91
    497 .long	0xF216B491
    498 .long	0xF237BC91
    499 .long	0xF258C491
    500 .long	0xF279CC91
    501 
    502 	vspltw	4,24,0
    503 	vspltw	5,24,1
    504 	vspltw	6,24,2
    505 	vspltw	7,24,3
    506 	vspltw	20,24,0
    507 	vspltw	21,24,1
    508 	vspltw	22,24,2
    509 	vspltw	23,24,3
    510 
    511 	vspltw	8,25,0
    512 	vspltw	9,25,1
    513 	vspltw	10,25,2
    514 	vspltw	11,25,3
    515 	vspltw	24,25,0
    516 	vspltw	27,25,3
    517 	vspltw	25,25,1
    518 
    519 .long	0xF1842491
    520 	vspltw	13,26,1
    521 	vspltw	14,26,2
    522 	vspltw	15,26,3
    523 .long	0xF3852C91
    524 	vspltw	29,26,1
    525 	vspltw	30,26,2
    526 	vspltw	31,26,3
    527 .long	0xF3484491
    528 
    529 .Loop_vsx_8x:
    530 .long	0xF1FBDC96
    531 .long	0xF3694C91
    532 	vadduwm	0,0,4
    533 	vadduwm	1,1,5
    534 	vadduwm	2,2,6
    535 	vadduwm	3,3,7
    536 	vadduwm	16,16,20
    537 	vadduwm	17,17,21
    538 	vadduwm	18,18,22
    539 	vadduwm	19,19,23
    540 	vxor	12,12,0
    541 	vxor	13,13,1
    542 	vxor	14,14,2
    543 	vxor	15,15,3
    544 	vxor	28,28,16
    545 	vxor	29,29,17
    546 	vxor	30,30,18
    547 	vxor	31,31,19
    548 	vrlw	12,12,27
    549 	vrlw	13,13,27
    550 	vrlw	14,14,27
    551 	vrlw	15,15,27
    552 	vrlw	28,28,27
    553 	vrlw	29,29,27
    554 	vrlw	30,30,27
    555 	vrlw	31,31,27
    556 .long	0xF1B39C96
    557 .long	0xF36F7C91
    558 .long	0xF26A5491
    559 	vadduwm	8,8,12
    560 	vadduwm	9,9,13
    561 	vadduwm	10,10,14
    562 	vadduwm	11,11,15
    563 	vadduwm	24,24,28
    564 	vadduwm	25,25,29
    565 	vadduwm	26,26,30
    566 	vadduwm	27,27,31
    567 	vxor	4,4,8
    568 	vxor	5,5,9
    569 	vxor	6,6,10
    570 	vxor	7,7,11
    571 	vxor	20,20,24
    572 	vxor	21,21,25
    573 	vxor	22,22,26
    574 	vxor	23,23,27
    575 	vrlw	4,4,19
    576 	vrlw	5,5,19
    577 	vrlw	6,6,19
    578 	vrlw	7,7,19
    579 	vrlw	20,20,19
    580 	vrlw	21,21,19
    581 	vrlw	22,22,19
    582 	vrlw	23,23,19
    583 .long	0xF26D6C91
    584 .long	0xF1FBDC96
    585 .long	0xF36B5C91
    586 	vadduwm	0,0,4
    587 	vadduwm	1,1,5
    588 	vadduwm	2,2,6
    589 	vadduwm	3,3,7
    590 	vadduwm	16,16,20
    591 	vadduwm	17,17,21
    592 	vadduwm	18,18,22
    593 	vadduwm	19,19,23
    594 	vxor	12,12,0
    595 	vxor	13,13,1
    596 	vxor	14,14,2
    597 	vxor	15,15,3
    598 	vxor	28,28,16
    599 	vxor	29,29,17
    600 	vxor	30,30,18
    601 	vxor	31,31,19
    602 	vrlw	12,12,27
    603 	vrlw	13,13,27
    604 	vrlw	14,14,27
    605 	vrlw	15,15,27
    606 	vrlw	28,28,27
    607 	vrlw	29,29,27
    608 	vrlw	30,30,27
    609 	vrlw	31,31,27
    610 .long	0xF36F7C91
    611 .long	0xF1B39C96
    612 .long	0xF26C6491
    613 	vadduwm	8,8,12
    614 	vadduwm	9,9,13
    615 	vadduwm	10,10,14
    616 	vadduwm	11,11,15
    617 	vadduwm	24,24,28
    618 	vadduwm	25,25,29
    619 	vadduwm	26,26,30
    620 	vadduwm	27,27,31
    621 	vxor	4,4,8
    622 	vxor	5,5,9
    623 	vxor	6,6,10
    624 	vxor	7,7,11
    625 	vxor	20,20,24
    626 	vxor	21,21,25
    627 	vxor	22,22,26
    628 	vxor	23,23,27
    629 	vrlw	4,4,19
    630 	vrlw	5,5,19
    631 	vrlw	6,6,19
    632 	vrlw	7,7,19
    633 	vrlw	20,20,19
    634 	vrlw	21,21,19
    635 	vrlw	22,22,19
    636 	vrlw	23,23,19
    637 .long	0xF26D6C91
    638 .long	0xF1F9CC96
    639 .long	0xF3294C91
    640 	vadduwm	0,0,5
    641 	vadduwm	1,1,6
    642 	vadduwm	2,2,7
    643 	vadduwm	3,3,4
    644 	vadduwm	16,16,21
    645 	vadduwm	17,17,22
    646 	vadduwm	18,18,23
    647 	vadduwm	19,19,20
    648 	vxor	15,15,0
    649 	vxor	12,12,1
    650 	vxor	13,13,2
    651 	vxor	14,14,3
    652 	vxor	31,31,16
    653 	vxor	28,28,17
    654 	vxor	29,29,18
    655 	vxor	30,30,19
    656 	vrlw	15,15,25
    657 	vrlw	12,12,25
    658 	vrlw	13,13,25
    659 	vrlw	14,14,25
    660 	vrlw	31,31,25
    661 	vrlw	28,28,25
    662 	vrlw	29,29,25
    663 	vrlw	30,30,25
    664 .long	0xF1B39C96
    665 .long	0xF32F7C91
    666 .long	0xF26A5491
    667 	vadduwm	10,10,15
    668 	vadduwm	11,11,12
    669 	vadduwm	8,8,13
    670 	vadduwm	9,9,14
    671 	vadduwm	26,26,31
    672 	vadduwm	27,27,28
    673 	vadduwm	24,24,29
    674 	vadduwm	25,25,30
    675 	vxor	5,5,10
    676 	vxor	6,6,11
    677 	vxor	7,7,8
    678 	vxor	4,4,9
    679 	vxor	21,21,26
    680 	vxor	22,22,27
    681 	vxor	23,23,24
    682 	vxor	20,20,25
    683 	vrlw	5,5,19
    684 	vrlw	6,6,19
    685 	vrlw	7,7,19
    686 	vrlw	4,4,19
    687 	vrlw	21,21,19
    688 	vrlw	22,22,19
    689 	vrlw	23,23,19
    690 	vrlw	20,20,19
    691 .long	0xF26D6C91
    692 .long	0xF1F9CC96
    693 .long	0xF32B5C91
    694 	vadduwm	0,0,5
    695 	vadduwm	1,1,6
    696 	vadduwm	2,2,7
    697 	vadduwm	3,3,4
    698 	vadduwm	16,16,21
    699 	vadduwm	17,17,22
    700 	vadduwm	18,18,23
    701 	vadduwm	19,19,20
    702 	vxor	15,15,0
    703 	vxor	12,12,1
    704 	vxor	13,13,2
    705 	vxor	14,14,3
    706 	vxor	31,31,16
    707 	vxor	28,28,17
    708 	vxor	29,29,18
    709 	vxor	30,30,19
    710 	vrlw	15,15,25
    711 	vrlw	12,12,25
    712 	vrlw	13,13,25
    713 	vrlw	14,14,25
    714 	vrlw	31,31,25
    715 	vrlw	28,28,25
    716 	vrlw	29,29,25
    717 	vrlw	30,30,25
    718 .long	0xF32F7C91
    719 .long	0xF1B39C96
    720 .long	0xF26C6491
    721 	vadduwm	10,10,15
    722 	vadduwm	11,11,12
    723 	vadduwm	8,8,13
    724 	vadduwm	9,9,14
    725 	vadduwm	26,26,31
    726 	vadduwm	27,27,28
    727 	vadduwm	24,24,29
    728 	vadduwm	25,25,30
    729 	vxor	5,5,10
    730 	vxor	6,6,11
    731 	vxor	7,7,8
    732 	vxor	4,4,9
    733 	vxor	21,21,26
    734 	vxor	22,22,27
    735 	vxor	23,23,24
    736 	vxor	20,20,25
    737 	vrlw	5,5,19
    738 	vrlw	6,6,19
    739 	vrlw	7,7,19
    740 	vrlw	4,4,19
    741 	vrlw	21,21,19
    742 	vrlw	22,22,19
    743 	vrlw	23,23,19
    744 	vrlw	20,20,19
    745 .long	0xF26D6C91
    746 
    747 	bc	16,0,.Loop_vsx_8x
    748 .long	0xF1BCE496
    749 .long	0xF1DDEC96
    750 .long	0xF1FEF496
    751 .long	0xF21FFC96
    752 
    753 .long	0xF258C496
    754 .long	0xF279CC96
    755 .long	0xF29AD496
    756 .long	0xF2BBDC96
    757 
    758 .long	0xF0D6B496
    759 .long	0xF0F7BC96
    760 .long	0xF3FAD491
    761 
    762 .long	0xF3600491
    763 .long	0xF3010C91
    764 .long	0xF3221491
    765 .long	0xF3431C91
    766 .long	0xF2C42491
    767 
    768 
    769 .long	0x12E00F8C
    770 .long	0x13821F8C
    771 .long	0x10000E8C
    772 .long	0x10421E8C
    773 
    774 .long	0x13A42F8C
    775 .long	0x13C63F8C
    776 .long	0x10842E8C
    777 .long	0x10C63E8C
    778 
    779 	vadduwm	12,12,22
    780 
    781 .long	0xF0201057
    782 .long	0xF0601357
    783 .long	0xF017E057
    784 .long	0xF057E357
    785 .long	0xF0A43057
    786 .long	0xF0E43357
    787 .long	0xF09DF057
    788 .long	0xF0DDF357
    789 
    790 .long	0x12E84F8C
    791 .long	0x138A5F8C
    792 .long	0x11084E8C
    793 .long	0x114A5E8C
    794 .long	0x13AC6F8C
    795 .long	0x13CE7F8C
    796 .long	0x118C6E8C
    797 .long	0x11CE7E8C
    798 
    799 .long	0xF1285057
    800 .long	0xF1685357
    801 .long	0xF117E057
    802 .long	0xF157E357
    803 .long	0xF1AC7057
    804 .long	0xF1EC7357
    805 .long	0xF19DF057
    806 .long	0xF1DDF357
    807 
    808 	vspltisw	23,8
    809 	vadduwm	22,22,23
    810 .long	0xF096B496
    811 
    812 	vadduwm	0,0,27
    813 	vadduwm	4,4,24
    814 	vadduwm	8,8,25
    815 	vadduwm	12,12,26
    816 
    817 	vperm	0,0,0,31
    818 	vperm	4,4,4,31
    819 	vperm	8,8,8,31
    820 	vperm	12,12,12,31
    821 
    822 	cmplwi	5,0x40
    823 	blt	.Ltail_vsx_8x
    824 
    825 .long	0x7EE02619
    826 .long	0x7F882619
    827 .long	0x7FA92619
    828 .long	0x7FCA2619
    829 
    830 	vxor	23,23,0
    831 	vxor	28,28,4
    832 	vxor	29,29,8
    833 	vxor	30,30,12
    834 
    835 .long	0x7EE01F19
    836 .long	0x7F881F19
    837 	addi	4,4,0x40
    838 .long	0x7FA91F19
    839 	subi	5,5,0x40
    840 .long	0x7FCA1F19
    841 	addi	3,3,0x40
    842 	beq	.Ldone_vsx_8x
    843 
    844 	vadduwm	0,1,27
    845 	vadduwm	4,5,24
    846 	vadduwm	8,9,25
    847 	vadduwm	12,13,26
    848 
    849 	vperm	0,0,0,31
    850 	vperm	4,4,4,31
    851 	vperm	8,8,8,31
    852 	vperm	12,12,12,31
    853 
    854 	cmplwi	5,0x40
    855 	blt	.Ltail_vsx_8x
    856 
    857 .long	0x7EE02619
    858 .long	0x7F882619
    859 .long	0x7FA92619
    860 .long	0x7FCA2619
    861 
    862 	vxor	23,23,0
    863 	vxor	28,28,4
    864 	vxor	29,29,8
    865 	vxor	30,30,12
    866 
    867 .long	0x7EE01F19
    868 .long	0x7F881F19
    869 	addi	4,4,0x40
    870 .long	0x7FA91F19
    871 	subi	5,5,0x40
    872 .long	0x7FCA1F19
    873 	addi	3,3,0x40
    874 	beq	.Ldone_vsx_8x
    875 
    876 	vadduwm	0,2,27
    877 	vadduwm	4,6,24
    878 	vadduwm	8,10,25
    879 	vadduwm	12,14,26
    880 
    881 	vperm	0,0,0,31
    882 	vperm	4,4,4,31
    883 	vperm	8,8,8,31
    884 	vperm	12,12,12,31
    885 
    886 	cmplwi	5,0x40
    887 	blt	.Ltail_vsx_8x
    888 
    889 .long	0x7EE02619
    890 .long	0x7F882619
    891 .long	0x7FA92619
    892 .long	0x7FCA2619
    893 
    894 	vxor	23,23,0
    895 	vxor	28,28,4
    896 	vxor	29,29,8
    897 	vxor	30,30,12
    898 
    899 .long	0x7EE01F19
    900 .long	0x7F881F19
    901 	addi	4,4,0x40
    902 .long	0x7FA91F19
    903 	subi	5,5,0x40
    904 .long	0x7FCA1F19
    905 	addi	3,3,0x40
    906 	beq	.Ldone_vsx_8x
    907 
    908 	vadduwm	0,3,27
    909 	vadduwm	4,7,24
    910 	vadduwm	8,11,25
    911 	vadduwm	12,15,26
    912 
    913 	vperm	0,0,0,31
    914 	vperm	4,4,4,31
    915 	vperm	8,8,8,31
    916 	vperm	12,12,12,31
    917 
    918 	cmplwi	5,0x40
    919 	blt	.Ltail_vsx_8x
    920 
    921 .long	0x7EE02619
    922 .long	0x7F882619
    923 .long	0x7FA92619
    924 .long	0x7FCA2619
    925 
    926 	vxor	23,23,0
    927 	vxor	28,28,4
    928 	vxor	29,29,8
    929 	vxor	30,30,12
    930 
    931 .long	0x7EE01F19
    932 .long	0x7F881F19
    933 	addi	4,4,0x40
    934 .long	0x7FA91F19
    935 	subi	5,5,0x40
    936 .long	0x7FCA1F19
    937 	addi	3,3,0x40
    938 	beq	.Ldone_vsx_8x
    939 
    940 
    941 
    942 
    943 .long	0xF0A52C91
    944 
    945 .long	0xF1129491
    946 .long	0xF1339C91
    947 .long	0xF154A491
    948 .long	0xF175AC91
    949 
    950 .long	0xF18D6C91
    951 .long	0xF1AE7491
    952 .long	0xF1CF7C91
    953 .long	0xF1F08491
    954 	vadduwm	12,12,5
    955 
    956 .long	0xF2C63491
    957 .long	0xF2E73C91
    958 
    959 
    960 .long	0x10908F8C
    961 .long	0x13929F8C
    962 .long	0x12108E8C
    963 .long	0x12529E8C
    964 .long	0x13B4AF8C
    965 .long	0x13D6BF8C
    966 .long	0x1294AE8C
    967 .long	0x12D6BE8C
    968 
    969 .long	0xF2309057
    970 .long	0xF2709357
    971 .long	0xF204E057
    972 .long	0xF244E357
    973 .long	0xF2B4B057
    974 .long	0xF2F4B357
    975 .long	0xF29DF057
    976 .long	0xF2DDF357
    977 
    978 .long	0x10884F8C
    979 .long	0x138A5F8C
    980 .long	0x11084E8C
    981 .long	0x114A5E8C
    982 .long	0x13AC6F8C
    983 .long	0x13CE7F8C
    984 .long	0x118C6E8C
    985 .long	0x11CE7E8C
    986 
    987 .long	0xF1285057
    988 .long	0xF1685357
    989 .long	0xF104E057
    990 .long	0xF144E357
    991 .long	0xF1AC7057
    992 .long	0xF1EC7357
    993 .long	0xF19DF057
    994 .long	0xF1DDF357
    995 
    996 	vspltisw	4,8
    997 	vadduwm	5,5,4
    998 .long	0xF0A52C96
    999 
   1000 	vadduwm	0,16,27
   1001 	vadduwm	1,20,24
   1002 	vadduwm	2,8,25
   1003 	vadduwm	3,12,26
   1004 
   1005 	vperm	0,0,0,31
   1006 	vperm	1,1,1,31
   1007 	vperm	2,2,2,31
   1008 	vperm	3,3,3,31
   1009 
   1010 	cmplwi	5,0x40
   1011 	blt	.Ltail_vsx_8x_1
   1012 
   1013 .long	0x7C802619
   1014 .long	0x7F882619
   1015 .long	0x7FA92619
   1016 .long	0x7FCA2619
   1017 
   1018 	vxor	4,4,0
   1019 	vxor	28,28,1
   1020 	vxor	29,29,2
   1021 	vxor	30,30,3
   1022 
   1023 .long	0x7C801F19
   1024 .long	0x7F881F19
   1025 	addi	4,4,0x40
   1026 .long	0x7FA91F19
   1027 	subi	5,5,0x40
   1028 .long	0x7FCA1F19
   1029 	addi	3,3,0x40
   1030 	beq	.Ldone_vsx_8x
   1031 
   1032 	vadduwm	0,17,27
   1033 	vadduwm	1,21,24
   1034 	vadduwm	2,9,25
   1035 	vadduwm	3,13,26
   1036 
   1037 	vperm	0,0,0,31
   1038 	vperm	1,1,1,31
   1039 	vperm	2,2,2,31
   1040 	vperm	3,3,3,31
   1041 
   1042 	cmplwi	5,0x40
   1043 	blt	.Ltail_vsx_8x_1
   1044 
   1045 .long	0x7C802619
   1046 .long	0x7F882619
   1047 .long	0x7FA92619
   1048 .long	0x7FCA2619
   1049 
   1050 	vxor	4,4,0
   1051 	vxor	28,28,1
   1052 	vxor	29,29,2
   1053 	vxor	30,30,3
   1054 
   1055 .long	0x7C801F19
   1056 .long	0x7F881F19
   1057 	addi	4,4,0x40
   1058 .long	0x7FA91F19
   1059 	subi	5,5,0x40
   1060 .long	0x7FCA1F19
   1061 	addi	3,3,0x40
   1062 	beq	.Ldone_vsx_8x
   1063 
   1064 	vadduwm	0,18,27
   1065 	vadduwm	1,22,24
   1066 	vadduwm	2,10,25
   1067 	vadduwm	3,14,26
   1068 
   1069 	vperm	0,0,0,31
   1070 	vperm	1,1,1,31
   1071 	vperm	2,2,2,31
   1072 	vperm	3,3,3,31
   1073 
   1074 	cmplwi	5,0x40
   1075 	blt	.Ltail_vsx_8x_1
   1076 
   1077 .long	0x7C802619
   1078 .long	0x7F882619
   1079 .long	0x7FA92619
   1080 .long	0x7FCA2619
   1081 
   1082 	vxor	4,4,0
   1083 	vxor	28,28,1
   1084 	vxor	29,29,2
   1085 	vxor	30,30,3
   1086 
   1087 .long	0x7C801F19
   1088 .long	0x7F881F19
   1089 	addi	4,4,0x40
   1090 .long	0x7FA91F19
   1091 	subi	5,5,0x40
   1092 .long	0x7FCA1F19
   1093 	addi	3,3,0x40
   1094 	beq	.Ldone_vsx_8x
   1095 
   1096 	vadduwm	0,19,27
   1097 	vadduwm	1,23,24
   1098 	vadduwm	2,11,25
   1099 	vadduwm	3,15,26
   1100 
   1101 	vperm	0,0,0,31
   1102 	vperm	1,1,1,31
   1103 	vperm	2,2,2,31
   1104 	vperm	3,3,3,31
   1105 
   1106 	cmplwi	5,0x40
   1107 	blt	.Ltail_vsx_8x_1
   1108 
   1109 .long	0x7C802619
   1110 .long	0x7F882619
   1111 .long	0x7FA92619
   1112 .long	0x7FCA2619
   1113 
   1114 	vxor	4,4,0
   1115 	vxor	28,28,1
   1116 	vxor	29,29,2
   1117 	vxor	30,30,3
   1118 
   1119 .long	0x7C801F19
   1120 .long	0x7F881F19
   1121 	addi	4,4,0x40
   1122 .long	0x7FA91F19
   1123 	subi	5,5,0x40
   1124 .long	0x7FCA1F19
   1125 	addi	3,3,0x40
   1126 	beq	.Ldone_vsx_8x
   1127 
   1128 	mtctr	0
   1129 	bne	.Loop_outer_vsx_8x
   1130 
   1131 .Ldone_vsx_8x:
   1132 	lwz	12,228(1)
   1133 	li	10,103
   1134 	li	11,119
   1135 	lwz	0, 236(1)
   1136 	mtspr	256,12
   1137 	lvx	24,10,1
   1138 	addi	10,10,32
   1139 	lvx	25,11,1
   1140 	addi	11,11,32
   1141 	lvx	26,10,1
   1142 	addi	10,10,32
   1143 	lvx	27,11,1
   1144 	addi	11,11,32
   1145 	lvx	28,10,1
   1146 	addi	10,10,32
   1147 	lvx	29,11,1
   1148 	addi	11,11,32
   1149 	lvx	30,10,1
   1150 	lvx	31,11,1
   1151 	mtlr	0
   1152 	addi	1,1,232
   1153 	blr
   1154 
   1155 .align	4
   1156 .Ltail_vsx_8x:
   1157 	addi	11,1,24
   1158 	mtctr	5
   1159 .long	0x7C005F19
   1160 .long	0x7C885F19
   1161 .long	0x7D095F19
   1162 .long	0x7D8A5F19
   1163 	subi	12,11,1
   1164 	subi	4,4,1
   1165 	subi	3,3,1
   1166 	bl	.Loop_tail_vsx_8x
   1167 .Ltail_vsx_8x_1:
   1168 	addi	11,1,24
   1169 	mtctr	5
   1170 .long	0x7C005F19
   1171 .long	0x7C285F19
   1172 .long	0x7C495F19
   1173 .long	0x7C6A5F19
   1174 	subi	12,11,1
   1175 	subi	4,4,1
   1176 	subi	3,3,1
   1177 	bl	.Loop_tail_vsx_8x
   1178 
   1179 .Loop_tail_vsx_8x:
   1180 	lbzu	6,1(12)
   1181 	lbzu	7,1(4)
   1182 	xor	6,6,7
   1183 	stbu	6,1(3)
   1184 	bc	16,0,.Loop_tail_vsx_8x
   1185 
   1186 .long	0x7F605F19
   1187 .long	0x7F685F19
   1188 .long	0x7F695F19
   1189 .long	0x7F6A5F19
   1190 
   1191 	b	.Ldone_vsx_8x
   1192 .long	0
   1193 .byte	0,12,0x04,1,0x80,0,5,0
   1194 .long	0
   1195 
   1196 .align	5
   1197 .Lconsts:
   1198 	mflr	0
   1199 	bcl	20,31,$+4
   1200 	mflr	12
   1201 	addi	12,12,56
   1202 	mtlr	0
   1203 	blr
   1204 .long	0
   1205 .byte	0,12,0x14,0,0,0,0,0
   1206 .space	28
   1207 .Lsigma:
   1208 .long	0x61707865,0x3320646e,0x79622d32,0x6b206574
   1209 .long	1,0,0,0
   1210 .long	2,0,0,0
   1211 .long	3,0,0,0
   1212 .long	4,0,0,0
   1213 .long	0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d
   1214 .long	0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c
   1215 .long	0x61707865,0x61707865,0x61707865,0x61707865
   1216 .long	0x3320646e,0x3320646e,0x3320646e,0x3320646e
   1217 .long	0x79622d32,0x79622d32,0x79622d32,0x79622d32
   1218 .long	0x6b206574,0x6b206574,0x6b206574,0x6b206574
   1219 .long	0,1,2,3
   1220 .long	0x03020100,0x07060504,0x0b0a0908,0x0f0e0d0c
   1221 .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
   1222 .align	2
   1223 .align	2
   1224