xref: /freebsd/sys/crypto/openssl/powerpc/aesp8-ppc.S (revision 77864b545b0aaa91bc78b1156c477825007a6233)
13a608692SPiotr Kubaj/* Do not modify. This file is auto-generated from aesp8-ppc.pl. */
23a608692SPiotr Kubaj.machine	"any"
33a608692SPiotr Kubaj
43a608692SPiotr Kubaj.text
53a608692SPiotr Kubaj
63a608692SPiotr Kubaj.align	7
73a608692SPiotr Kubajrcon:
83a608692SPiotr Kubaj.byte	0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00
93a608692SPiotr Kubaj.byte	0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00
103a608692SPiotr Kubaj.byte	0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c
113a608692SPiotr Kubaj.byte	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
12*77864b54SEnji Cooper.long	0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe
133a608692SPiotr Kubaj.Lconsts:
143a608692SPiotr Kubaj	mflr	0
153a608692SPiotr Kubaj	bcl	20,31,$+4
163a608692SPiotr Kubaj	mflr	6
17*77864b54SEnji Cooper	addi	6,6,-0x58
183a608692SPiotr Kubaj	mtlr	0
193a608692SPiotr Kubaj	blr
203a608692SPiotr Kubaj.long	0
213a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,0,0
223a608692SPiotr Kubaj.byte	65,69,83,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
233a608692SPiotr Kubaj.align	2
243a608692SPiotr Kubaj
253a608692SPiotr Kubaj.globl	aes_p8_set_encrypt_key
263a608692SPiotr Kubaj.type	aes_p8_set_encrypt_key,@function
273a608692SPiotr Kubaj.align	5
283a608692SPiotr Kubajaes_p8_set_encrypt_key:
293a608692SPiotr Kubaj.Lset_encrypt_key:
303a608692SPiotr Kubaj	mflr	11
313a608692SPiotr Kubaj	stw	11,4(1)
323a608692SPiotr Kubaj
333a608692SPiotr Kubaj	li	6,-1
343a608692SPiotr Kubaj	cmplwi	3,0
353a608692SPiotr Kubaj	beq-	.Lenc_key_abort
363a608692SPiotr Kubaj	cmplwi	5,0
373a608692SPiotr Kubaj	beq-	.Lenc_key_abort
383a608692SPiotr Kubaj	li	6,-2
393a608692SPiotr Kubaj	cmpwi	4,128
403a608692SPiotr Kubaj	blt-	.Lenc_key_abort
413a608692SPiotr Kubaj	cmpwi	4,256
423a608692SPiotr Kubaj	bgt-	.Lenc_key_abort
433a608692SPiotr Kubaj	andi.	0,4,0x3f
443a608692SPiotr Kubaj	bne-	.Lenc_key_abort
453a608692SPiotr Kubaj
463a608692SPiotr Kubaj	lis	0,0xfff0
473a608692SPiotr Kubaj	mfspr	12,256
483a608692SPiotr Kubaj	mtspr	256,0
493a608692SPiotr Kubaj
503a608692SPiotr Kubaj	bl	.Lconsts
513a608692SPiotr Kubaj	mtlr	11
523a608692SPiotr Kubaj
533a608692SPiotr Kubaj	neg	9,3
543a608692SPiotr Kubaj	lvx	1,0,3
553a608692SPiotr Kubaj	addi	3,3,15
563a608692SPiotr Kubaj	lvsr	3,0,9
573a608692SPiotr Kubaj	li	8,0x20
583a608692SPiotr Kubaj	cmpwi	4,192
593a608692SPiotr Kubaj	lvx	2,0,3
603a608692SPiotr Kubaj
613a608692SPiotr Kubaj	lvx	4,0,6
623a608692SPiotr Kubaj
633a608692SPiotr Kubaj	lvx	5,8,6
643a608692SPiotr Kubaj	addi	6,6,0x10
653a608692SPiotr Kubaj	vperm	1,1,2,3
663a608692SPiotr Kubaj	li	7,8
673a608692SPiotr Kubaj	vxor	0,0,0
683a608692SPiotr Kubaj	mtctr	7
693a608692SPiotr Kubaj
703a608692SPiotr Kubaj	lvsr	8,0,5
713a608692SPiotr Kubaj	vspltisb	9,-1
723a608692SPiotr Kubaj	lvx	10,0,5
733a608692SPiotr Kubaj	vperm	9,0,9,8
743a608692SPiotr Kubaj
753a608692SPiotr Kubaj	blt	.Loop128
763a608692SPiotr Kubaj	addi	3,3,8
773a608692SPiotr Kubaj	beq	.L192
783a608692SPiotr Kubaj	addi	3,3,8
793a608692SPiotr Kubaj	b	.L256
803a608692SPiotr Kubaj
813a608692SPiotr Kubaj.align	4
823a608692SPiotr Kubaj.Loop128:
833a608692SPiotr Kubaj	vperm	3,1,1,5
843a608692SPiotr Kubaj	vsldoi	6,0,1,12
853a608692SPiotr Kubaj	vperm	11,1,1,8
863a608692SPiotr Kubaj	vsel	7,10,11,9
873a608692SPiotr Kubaj	vor	10,11,11
883a608692SPiotr Kubaj	.long	0x10632509
893a608692SPiotr Kubaj	stvx	7,0,5
903a608692SPiotr Kubaj	addi	5,5,16
913a608692SPiotr Kubaj
923a608692SPiotr Kubaj	vxor	1,1,6
933a608692SPiotr Kubaj	vsldoi	6,0,6,12
943a608692SPiotr Kubaj	vxor	1,1,6
953a608692SPiotr Kubaj	vsldoi	6,0,6,12
963a608692SPiotr Kubaj	vxor	1,1,6
973a608692SPiotr Kubaj	vadduwm	4,4,4
983a608692SPiotr Kubaj	vxor	1,1,3
993a608692SPiotr Kubaj	bdnz	.Loop128
1003a608692SPiotr Kubaj
1013a608692SPiotr Kubaj	lvx	4,0,6
1023a608692SPiotr Kubaj
1033a608692SPiotr Kubaj	vperm	3,1,1,5
1043a608692SPiotr Kubaj	vsldoi	6,0,1,12
1053a608692SPiotr Kubaj	vperm	11,1,1,8
1063a608692SPiotr Kubaj	vsel	7,10,11,9
1073a608692SPiotr Kubaj	vor	10,11,11
1083a608692SPiotr Kubaj	.long	0x10632509
1093a608692SPiotr Kubaj	stvx	7,0,5
1103a608692SPiotr Kubaj	addi	5,5,16
1113a608692SPiotr Kubaj
1123a608692SPiotr Kubaj	vxor	1,1,6
1133a608692SPiotr Kubaj	vsldoi	6,0,6,12
1143a608692SPiotr Kubaj	vxor	1,1,6
1153a608692SPiotr Kubaj	vsldoi	6,0,6,12
1163a608692SPiotr Kubaj	vxor	1,1,6
1173a608692SPiotr Kubaj	vadduwm	4,4,4
1183a608692SPiotr Kubaj	vxor	1,1,3
1193a608692SPiotr Kubaj
1203a608692SPiotr Kubaj	vperm	3,1,1,5
1213a608692SPiotr Kubaj	vsldoi	6,0,1,12
1223a608692SPiotr Kubaj	vperm	11,1,1,8
1233a608692SPiotr Kubaj	vsel	7,10,11,9
1243a608692SPiotr Kubaj	vor	10,11,11
1253a608692SPiotr Kubaj	.long	0x10632509
1263a608692SPiotr Kubaj	stvx	7,0,5
1273a608692SPiotr Kubaj	addi	5,5,16
1283a608692SPiotr Kubaj
1293a608692SPiotr Kubaj	vxor	1,1,6
1303a608692SPiotr Kubaj	vsldoi	6,0,6,12
1313a608692SPiotr Kubaj	vxor	1,1,6
1323a608692SPiotr Kubaj	vsldoi	6,0,6,12
1333a608692SPiotr Kubaj	vxor	1,1,6
1343a608692SPiotr Kubaj	vxor	1,1,3
1353a608692SPiotr Kubaj	vperm	11,1,1,8
1363a608692SPiotr Kubaj	vsel	7,10,11,9
1373a608692SPiotr Kubaj	vor	10,11,11
1383a608692SPiotr Kubaj	stvx	7,0,5
1393a608692SPiotr Kubaj
1403a608692SPiotr Kubaj	addi	3,5,15
1413a608692SPiotr Kubaj	addi	5,5,0x50
1423a608692SPiotr Kubaj
1433a608692SPiotr Kubaj	li	8,10
1443a608692SPiotr Kubaj	b	.Ldone
1453a608692SPiotr Kubaj
1463a608692SPiotr Kubaj.align	4
1473a608692SPiotr Kubaj.L192:
1483a608692SPiotr Kubaj	lvx	6,0,3
1493a608692SPiotr Kubaj	li	7,4
1503a608692SPiotr Kubaj	vperm	11,1,1,8
1513a608692SPiotr Kubaj	vsel	7,10,11,9
1523a608692SPiotr Kubaj	vor	10,11,11
1533a608692SPiotr Kubaj	stvx	7,0,5
1543a608692SPiotr Kubaj	addi	5,5,16
1553a608692SPiotr Kubaj	vperm	2,2,6,3
1563a608692SPiotr Kubaj	vspltisb	3,8
1573a608692SPiotr Kubaj	mtctr	7
1583a608692SPiotr Kubaj	vsububm	5,5,3
1593a608692SPiotr Kubaj
1603a608692SPiotr Kubaj.Loop192:
1613a608692SPiotr Kubaj	vperm	3,2,2,5
1623a608692SPiotr Kubaj	vsldoi	6,0,1,12
1633a608692SPiotr Kubaj	.long	0x10632509
1643a608692SPiotr Kubaj
1653a608692SPiotr Kubaj	vxor	1,1,6
1663a608692SPiotr Kubaj	vsldoi	6,0,6,12
1673a608692SPiotr Kubaj	vxor	1,1,6
1683a608692SPiotr Kubaj	vsldoi	6,0,6,12
1693a608692SPiotr Kubaj	vxor	1,1,6
1703a608692SPiotr Kubaj
1713a608692SPiotr Kubaj	vsldoi	7,0,2,8
1723a608692SPiotr Kubaj	vspltw	6,1,3
1733a608692SPiotr Kubaj	vxor	6,6,2
1743a608692SPiotr Kubaj	vsldoi	2,0,2,12
1753a608692SPiotr Kubaj	vadduwm	4,4,4
1763a608692SPiotr Kubaj	vxor	2,2,6
1773a608692SPiotr Kubaj	vxor	1,1,3
1783a608692SPiotr Kubaj	vxor	2,2,3
1793a608692SPiotr Kubaj	vsldoi	7,7,1,8
1803a608692SPiotr Kubaj
1813a608692SPiotr Kubaj	vperm	3,2,2,5
1823a608692SPiotr Kubaj	vsldoi	6,0,1,12
1833a608692SPiotr Kubaj	vperm	11,7,7,8
1843a608692SPiotr Kubaj	vsel	7,10,11,9
1853a608692SPiotr Kubaj	vor	10,11,11
1863a608692SPiotr Kubaj	.long	0x10632509
1873a608692SPiotr Kubaj	stvx	7,0,5
1883a608692SPiotr Kubaj	addi	5,5,16
1893a608692SPiotr Kubaj
1903a608692SPiotr Kubaj	vsldoi	7,1,2,8
1913a608692SPiotr Kubaj	vxor	1,1,6
1923a608692SPiotr Kubaj	vsldoi	6,0,6,12
1933a608692SPiotr Kubaj	vperm	11,7,7,8
1943a608692SPiotr Kubaj	vsel	7,10,11,9
1953a608692SPiotr Kubaj	vor	10,11,11
1963a608692SPiotr Kubaj	vxor	1,1,6
1973a608692SPiotr Kubaj	vsldoi	6,0,6,12
1983a608692SPiotr Kubaj	vxor	1,1,6
1993a608692SPiotr Kubaj	stvx	7,0,5
2003a608692SPiotr Kubaj	addi	5,5,16
2013a608692SPiotr Kubaj
2023a608692SPiotr Kubaj	vspltw	6,1,3
2033a608692SPiotr Kubaj	vxor	6,6,2
2043a608692SPiotr Kubaj	vsldoi	2,0,2,12
2053a608692SPiotr Kubaj	vadduwm	4,4,4
2063a608692SPiotr Kubaj	vxor	2,2,6
2073a608692SPiotr Kubaj	vxor	1,1,3
2083a608692SPiotr Kubaj	vxor	2,2,3
2093a608692SPiotr Kubaj	vperm	11,1,1,8
2103a608692SPiotr Kubaj	vsel	7,10,11,9
2113a608692SPiotr Kubaj	vor	10,11,11
2123a608692SPiotr Kubaj	stvx	7,0,5
2133a608692SPiotr Kubaj	addi	3,5,15
2143a608692SPiotr Kubaj	addi	5,5,16
2153a608692SPiotr Kubaj	bdnz	.Loop192
2163a608692SPiotr Kubaj
2173a608692SPiotr Kubaj	li	8,12
2183a608692SPiotr Kubaj	addi	5,5,0x20
2193a608692SPiotr Kubaj	b	.Ldone
2203a608692SPiotr Kubaj
2213a608692SPiotr Kubaj.align	4
2223a608692SPiotr Kubaj.L256:
2233a608692SPiotr Kubaj	lvx	6,0,3
2243a608692SPiotr Kubaj	li	7,7
2253a608692SPiotr Kubaj	li	8,14
2263a608692SPiotr Kubaj	vperm	11,1,1,8
2273a608692SPiotr Kubaj	vsel	7,10,11,9
2283a608692SPiotr Kubaj	vor	10,11,11
2293a608692SPiotr Kubaj	stvx	7,0,5
2303a608692SPiotr Kubaj	addi	5,5,16
2313a608692SPiotr Kubaj	vperm	2,2,6,3
2323a608692SPiotr Kubaj	mtctr	7
2333a608692SPiotr Kubaj
2343a608692SPiotr Kubaj.Loop256:
2353a608692SPiotr Kubaj	vperm	3,2,2,5
2363a608692SPiotr Kubaj	vsldoi	6,0,1,12
2373a608692SPiotr Kubaj	vperm	11,2,2,8
2383a608692SPiotr Kubaj	vsel	7,10,11,9
2393a608692SPiotr Kubaj	vor	10,11,11
2403a608692SPiotr Kubaj	.long	0x10632509
2413a608692SPiotr Kubaj	stvx	7,0,5
2423a608692SPiotr Kubaj	addi	5,5,16
2433a608692SPiotr Kubaj
2443a608692SPiotr Kubaj	vxor	1,1,6
2453a608692SPiotr Kubaj	vsldoi	6,0,6,12
2463a608692SPiotr Kubaj	vxor	1,1,6
2473a608692SPiotr Kubaj	vsldoi	6,0,6,12
2483a608692SPiotr Kubaj	vxor	1,1,6
2493a608692SPiotr Kubaj	vadduwm	4,4,4
2503a608692SPiotr Kubaj	vxor	1,1,3
2513a608692SPiotr Kubaj	vperm	11,1,1,8
2523a608692SPiotr Kubaj	vsel	7,10,11,9
2533a608692SPiotr Kubaj	vor	10,11,11
2543a608692SPiotr Kubaj	stvx	7,0,5
2553a608692SPiotr Kubaj	addi	3,5,15
2563a608692SPiotr Kubaj	addi	5,5,16
2573a608692SPiotr Kubaj	bdz	.Ldone
2583a608692SPiotr Kubaj
2593a608692SPiotr Kubaj	vspltw	3,1,3
2603a608692SPiotr Kubaj	vsldoi	6,0,2,12
2613a608692SPiotr Kubaj	.long	0x106305C8
2623a608692SPiotr Kubaj
2633a608692SPiotr Kubaj	vxor	2,2,6
2643a608692SPiotr Kubaj	vsldoi	6,0,6,12
2653a608692SPiotr Kubaj	vxor	2,2,6
2663a608692SPiotr Kubaj	vsldoi	6,0,6,12
2673a608692SPiotr Kubaj	vxor	2,2,6
2683a608692SPiotr Kubaj
2693a608692SPiotr Kubaj	vxor	2,2,3
2703a608692SPiotr Kubaj	b	.Loop256
2713a608692SPiotr Kubaj
2723a608692SPiotr Kubaj.align	4
2733a608692SPiotr Kubaj.Ldone:
2743a608692SPiotr Kubaj	lvx	2,0,3
2753a608692SPiotr Kubaj	vsel	2,10,2,9
2763a608692SPiotr Kubaj	stvx	2,0,3
2773a608692SPiotr Kubaj	li	6,0
2783a608692SPiotr Kubaj	mtspr	256,12
2793a608692SPiotr Kubaj	stw	8,0(5)
2803a608692SPiotr Kubaj
2813a608692SPiotr Kubaj.Lenc_key_abort:
2823a608692SPiotr Kubaj	mr	3,6
2833a608692SPiotr Kubaj	blr
2843a608692SPiotr Kubaj.long	0
2853a608692SPiotr Kubaj.byte	0,12,0x14,1,0,0,3,0
2863a608692SPiotr Kubaj.long	0
2873a608692SPiotr Kubaj.size	aes_p8_set_encrypt_key,.-aes_p8_set_encrypt_key
2883a608692SPiotr Kubaj
2893a608692SPiotr Kubaj.globl	aes_p8_set_decrypt_key
2903a608692SPiotr Kubaj.type	aes_p8_set_decrypt_key,@function
2913a608692SPiotr Kubaj.align	5
2923a608692SPiotr Kubajaes_p8_set_decrypt_key:
2933a608692SPiotr Kubaj	stwu	1,-32(1)
2943a608692SPiotr Kubaj	mflr	10
2953a608692SPiotr Kubaj	stw	10,32+4(1)
2963a608692SPiotr Kubaj	bl	.Lset_encrypt_key
2973a608692SPiotr Kubaj	mtlr	10
2983a608692SPiotr Kubaj
2993a608692SPiotr Kubaj	cmpwi	3,0
3003a608692SPiotr Kubaj	bne-	.Ldec_key_abort
3013a608692SPiotr Kubaj
3023a608692SPiotr Kubaj	slwi	7,8,4
3033a608692SPiotr Kubaj	subi	3,5,240
3043a608692SPiotr Kubaj	srwi	8,8,1
3053a608692SPiotr Kubaj	add	5,3,7
3063a608692SPiotr Kubaj	mtctr	8
3073a608692SPiotr Kubaj
3083a608692SPiotr Kubaj.Ldeckey:
3093a608692SPiotr Kubaj	lwz	0, 0(3)
3103a608692SPiotr Kubaj	lwz	6, 4(3)
3113a608692SPiotr Kubaj	lwz	7, 8(3)
3123a608692SPiotr Kubaj	lwz	8, 12(3)
3133a608692SPiotr Kubaj	addi	3,3,16
3143a608692SPiotr Kubaj	lwz	9, 0(5)
3153a608692SPiotr Kubaj	lwz	10,4(5)
3163a608692SPiotr Kubaj	lwz	11,8(5)
3173a608692SPiotr Kubaj	lwz	12,12(5)
3183a608692SPiotr Kubaj	stw	0, 0(5)
3193a608692SPiotr Kubaj	stw	6, 4(5)
3203a608692SPiotr Kubaj	stw	7, 8(5)
3213a608692SPiotr Kubaj	stw	8, 12(5)
3223a608692SPiotr Kubaj	subi	5,5,16
3233a608692SPiotr Kubaj	stw	9, -16(3)
3243a608692SPiotr Kubaj	stw	10,-12(3)
3253a608692SPiotr Kubaj	stw	11,-8(3)
3263a608692SPiotr Kubaj	stw	12,-4(3)
3273a608692SPiotr Kubaj	bdnz	.Ldeckey
3283a608692SPiotr Kubaj
3293a608692SPiotr Kubaj	xor	3,3,3
3303a608692SPiotr Kubaj.Ldec_key_abort:
3313a608692SPiotr Kubaj	addi	1,1,32
3323a608692SPiotr Kubaj	blr
3333a608692SPiotr Kubaj.long	0
3343a608692SPiotr Kubaj.byte	0,12,4,1,0x80,0,3,0
3353a608692SPiotr Kubaj.long	0
3363a608692SPiotr Kubaj.size	aes_p8_set_decrypt_key,.-aes_p8_set_decrypt_key
3373a608692SPiotr Kubaj.globl	aes_p8_encrypt
3383a608692SPiotr Kubaj.type	aes_p8_encrypt,@function
3393a608692SPiotr Kubaj.align	5
3403a608692SPiotr Kubajaes_p8_encrypt:
3413a608692SPiotr Kubaj	lwz	6,240(5)
3423a608692SPiotr Kubaj	lis	0,0xfc00
3433a608692SPiotr Kubaj	mfspr	12,256
3443a608692SPiotr Kubaj	li	7,15
3453a608692SPiotr Kubaj	mtspr	256,0
3463a608692SPiotr Kubaj
3473a608692SPiotr Kubaj	lvx	0,0,3
3483a608692SPiotr Kubaj	neg	11,4
3493a608692SPiotr Kubaj	lvx	1,7,3
3503a608692SPiotr Kubaj	lvsl	2,0,3
3513a608692SPiotr Kubaj
3523a608692SPiotr Kubaj	lvsl	3,0,11
3533a608692SPiotr Kubaj
3543a608692SPiotr Kubaj	li	7,16
3553a608692SPiotr Kubaj	vperm	0,0,1,2
3563a608692SPiotr Kubaj	lvx	1,0,5
3573a608692SPiotr Kubaj	lvsl	5,0,5
3583a608692SPiotr Kubaj	srwi	6,6,1
3593a608692SPiotr Kubaj	lvx	2,7,5
3603a608692SPiotr Kubaj	addi	7,7,16
3613a608692SPiotr Kubaj	subi	6,6,1
3623a608692SPiotr Kubaj	vperm	1,1,2,5
3633a608692SPiotr Kubaj
3643a608692SPiotr Kubaj	vxor	0,0,1
3653a608692SPiotr Kubaj	lvx	1,7,5
3663a608692SPiotr Kubaj	addi	7,7,16
3673a608692SPiotr Kubaj	mtctr	6
3683a608692SPiotr Kubaj
3693a608692SPiotr Kubaj.Loop_enc:
3703a608692SPiotr Kubaj	vperm	2,2,1,5
3713a608692SPiotr Kubaj	.long	0x10001508
3723a608692SPiotr Kubaj	lvx	2,7,5
3733a608692SPiotr Kubaj	addi	7,7,16
3743a608692SPiotr Kubaj	vperm	1,1,2,5
3753a608692SPiotr Kubaj	.long	0x10000D08
3763a608692SPiotr Kubaj	lvx	1,7,5
3773a608692SPiotr Kubaj	addi	7,7,16
3783a608692SPiotr Kubaj	bdnz	.Loop_enc
3793a608692SPiotr Kubaj
3803a608692SPiotr Kubaj	vperm	2,2,1,5
3813a608692SPiotr Kubaj	.long	0x10001508
3823a608692SPiotr Kubaj	lvx	2,7,5
3833a608692SPiotr Kubaj	vperm	1,1,2,5
3843a608692SPiotr Kubaj	.long	0x10000D09
3853a608692SPiotr Kubaj
3863a608692SPiotr Kubaj	vspltisb	2,-1
3873a608692SPiotr Kubaj	vxor	1,1,1
3883a608692SPiotr Kubaj	li	7,15
3893a608692SPiotr Kubaj	vperm	2,1,2,3
3903a608692SPiotr Kubaj
3913a608692SPiotr Kubaj	lvx	1,0,4
3923a608692SPiotr Kubaj	vperm	0,0,0,3
3933a608692SPiotr Kubaj	vsel	1,1,0,2
3943a608692SPiotr Kubaj	lvx	4,7,4
3953a608692SPiotr Kubaj	stvx	1,0,4
3963a608692SPiotr Kubaj	vsel	0,0,4,2
3973a608692SPiotr Kubaj	stvx	0,7,4
3983a608692SPiotr Kubaj
3993a608692SPiotr Kubaj	mtspr	256,12
4003a608692SPiotr Kubaj	blr
4013a608692SPiotr Kubaj.long	0
4023a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,3,0
4033a608692SPiotr Kubaj.long	0
4043a608692SPiotr Kubaj.size	aes_p8_encrypt,.-aes_p8_encrypt
4053a608692SPiotr Kubaj.globl	aes_p8_decrypt
4063a608692SPiotr Kubaj.type	aes_p8_decrypt,@function
4073a608692SPiotr Kubaj.align	5
4083a608692SPiotr Kubajaes_p8_decrypt:
4093a608692SPiotr Kubaj	lwz	6,240(5)
4103a608692SPiotr Kubaj	lis	0,0xfc00
4113a608692SPiotr Kubaj	mfspr	12,256
4123a608692SPiotr Kubaj	li	7,15
4133a608692SPiotr Kubaj	mtspr	256,0
4143a608692SPiotr Kubaj
4153a608692SPiotr Kubaj	lvx	0,0,3
4163a608692SPiotr Kubaj	neg	11,4
4173a608692SPiotr Kubaj	lvx	1,7,3
4183a608692SPiotr Kubaj	lvsl	2,0,3
4193a608692SPiotr Kubaj
4203a608692SPiotr Kubaj	lvsl	3,0,11
4213a608692SPiotr Kubaj
4223a608692SPiotr Kubaj	li	7,16
4233a608692SPiotr Kubaj	vperm	0,0,1,2
4243a608692SPiotr Kubaj	lvx	1,0,5
4253a608692SPiotr Kubaj	lvsl	5,0,5
4263a608692SPiotr Kubaj	srwi	6,6,1
4273a608692SPiotr Kubaj	lvx	2,7,5
4283a608692SPiotr Kubaj	addi	7,7,16
4293a608692SPiotr Kubaj	subi	6,6,1
4303a608692SPiotr Kubaj	vperm	1,1,2,5
4313a608692SPiotr Kubaj
4323a608692SPiotr Kubaj	vxor	0,0,1
4333a608692SPiotr Kubaj	lvx	1,7,5
4343a608692SPiotr Kubaj	addi	7,7,16
4353a608692SPiotr Kubaj	mtctr	6
4363a608692SPiotr Kubaj
4373a608692SPiotr Kubaj.Loop_dec:
4383a608692SPiotr Kubaj	vperm	2,2,1,5
4393a608692SPiotr Kubaj	.long	0x10001548
4403a608692SPiotr Kubaj	lvx	2,7,5
4413a608692SPiotr Kubaj	addi	7,7,16
4423a608692SPiotr Kubaj	vperm	1,1,2,5
4433a608692SPiotr Kubaj	.long	0x10000D48
4443a608692SPiotr Kubaj	lvx	1,7,5
4453a608692SPiotr Kubaj	addi	7,7,16
4463a608692SPiotr Kubaj	bdnz	.Loop_dec
4473a608692SPiotr Kubaj
4483a608692SPiotr Kubaj	vperm	2,2,1,5
4493a608692SPiotr Kubaj	.long	0x10001548
4503a608692SPiotr Kubaj	lvx	2,7,5
4513a608692SPiotr Kubaj	vperm	1,1,2,5
4523a608692SPiotr Kubaj	.long	0x10000D49
4533a608692SPiotr Kubaj
4543a608692SPiotr Kubaj	vspltisb	2,-1
4553a608692SPiotr Kubaj	vxor	1,1,1
4563a608692SPiotr Kubaj	li	7,15
4573a608692SPiotr Kubaj	vperm	2,1,2,3
4583a608692SPiotr Kubaj
4593a608692SPiotr Kubaj	lvx	1,0,4
4603a608692SPiotr Kubaj	vperm	0,0,0,3
4613a608692SPiotr Kubaj	vsel	1,1,0,2
4623a608692SPiotr Kubaj	lvx	4,7,4
4633a608692SPiotr Kubaj	stvx	1,0,4
4643a608692SPiotr Kubaj	vsel	0,0,4,2
4653a608692SPiotr Kubaj	stvx	0,7,4
4663a608692SPiotr Kubaj
4673a608692SPiotr Kubaj	mtspr	256,12
4683a608692SPiotr Kubaj	blr
4693a608692SPiotr Kubaj.long	0
4703a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,3,0
4713a608692SPiotr Kubaj.long	0
4723a608692SPiotr Kubaj.size	aes_p8_decrypt,.-aes_p8_decrypt
4733a608692SPiotr Kubaj.globl	aes_p8_cbc_encrypt
4743a608692SPiotr Kubaj.type	aes_p8_cbc_encrypt,@function
4753a608692SPiotr Kubaj.align	5
4763a608692SPiotr Kubajaes_p8_cbc_encrypt:
4773a608692SPiotr Kubaj	cmplwi	5,16
4783a608692SPiotr Kubaj	.long	0x4dc00020
4793a608692SPiotr Kubaj
4803a608692SPiotr Kubaj	cmpwi	8,0
4813a608692SPiotr Kubaj	lis	0,0xffe0
4823a608692SPiotr Kubaj	mfspr	12,256
4833a608692SPiotr Kubaj	mtspr	256,0
4843a608692SPiotr Kubaj
4853a608692SPiotr Kubaj	li	10,15
4863a608692SPiotr Kubaj	vxor	0,0,0
4873a608692SPiotr Kubaj
4883a608692SPiotr Kubaj
4893a608692SPiotr Kubaj	lvx	4,0,7
4903a608692SPiotr Kubaj	lvsl	6,0,7
4913a608692SPiotr Kubaj	lvx	5,10,7
4923a608692SPiotr Kubaj
4933a608692SPiotr Kubaj	vperm	4,4,5,6
4943a608692SPiotr Kubaj
4953a608692SPiotr Kubaj	neg	11,3
4963a608692SPiotr Kubaj	lvsl	10,0,6
4973a608692SPiotr Kubaj	lwz	9,240(6)
4983a608692SPiotr Kubaj
4993a608692SPiotr Kubaj	lvsr	6,0,11
5003a608692SPiotr Kubaj	lvx	5,0,3
5013a608692SPiotr Kubaj	addi	3,3,15
5023a608692SPiotr Kubaj
5033a608692SPiotr Kubaj
5043a608692SPiotr Kubaj	lvsr	8,0,4
5053a608692SPiotr Kubaj	vspltisb	9,-1
5063a608692SPiotr Kubaj	lvx	7,0,4
5073a608692SPiotr Kubaj	vperm	9,0,9,8
5083a608692SPiotr Kubaj
5093a608692SPiotr Kubaj
5103a608692SPiotr Kubaj	srwi	9,9,1
5113a608692SPiotr Kubaj	li	10,16
5123a608692SPiotr Kubaj	subi	9,9,1
5133a608692SPiotr Kubaj	beq	.Lcbc_dec
5143a608692SPiotr Kubaj
5153a608692SPiotr Kubaj.Lcbc_enc:
5163a608692SPiotr Kubaj	vor	2,5,5
5173a608692SPiotr Kubaj	lvx	5,0,3
5183a608692SPiotr Kubaj	addi	3,3,16
5193a608692SPiotr Kubaj	mtctr	9
5203a608692SPiotr Kubaj	subi	5,5,16
5213a608692SPiotr Kubaj
5223a608692SPiotr Kubaj	lvx	0,0,6
5233a608692SPiotr Kubaj	vperm	2,2,5,6
5243a608692SPiotr Kubaj	lvx	1,10,6
5253a608692SPiotr Kubaj	addi	10,10,16
5263a608692SPiotr Kubaj	vperm	0,0,1,10
5273a608692SPiotr Kubaj	vxor	2,2,0
5283a608692SPiotr Kubaj	lvx	0,10,6
5293a608692SPiotr Kubaj	addi	10,10,16
5303a608692SPiotr Kubaj	vxor	2,2,4
5313a608692SPiotr Kubaj
5323a608692SPiotr Kubaj.Loop_cbc_enc:
5333a608692SPiotr Kubaj	vperm	1,1,0,10
5343a608692SPiotr Kubaj	.long	0x10420D08
5353a608692SPiotr Kubaj	lvx	1,10,6
5363a608692SPiotr Kubaj	addi	10,10,16
5373a608692SPiotr Kubaj	vperm	0,0,1,10
5383a608692SPiotr Kubaj	.long	0x10420508
5393a608692SPiotr Kubaj	lvx	0,10,6
5403a608692SPiotr Kubaj	addi	10,10,16
5413a608692SPiotr Kubaj	bdnz	.Loop_cbc_enc
5423a608692SPiotr Kubaj
5433a608692SPiotr Kubaj	vperm	1,1,0,10
5443a608692SPiotr Kubaj	.long	0x10420D08
5453a608692SPiotr Kubaj	lvx	1,10,6
5463a608692SPiotr Kubaj	li	10,16
5473a608692SPiotr Kubaj	vperm	0,0,1,10
5483a608692SPiotr Kubaj	.long	0x10820509
5493a608692SPiotr Kubaj	cmplwi	5,16
5503a608692SPiotr Kubaj
5513a608692SPiotr Kubaj	vperm	3,4,4,8
5523a608692SPiotr Kubaj	vsel	2,7,3,9
5533a608692SPiotr Kubaj	vor	7,3,3
5543a608692SPiotr Kubaj	stvx	2,0,4
5553a608692SPiotr Kubaj	addi	4,4,16
5563a608692SPiotr Kubaj	bge	.Lcbc_enc
5573a608692SPiotr Kubaj
5583a608692SPiotr Kubaj	b	.Lcbc_done
5593a608692SPiotr Kubaj
5603a608692SPiotr Kubaj.align	4
5613a608692SPiotr Kubaj.Lcbc_dec:
5623a608692SPiotr Kubaj	cmplwi	5,128
5633a608692SPiotr Kubaj	bge	_aesp8_cbc_decrypt8x
5643a608692SPiotr Kubaj	vor	3,5,5
5653a608692SPiotr Kubaj	lvx	5,0,3
5663a608692SPiotr Kubaj	addi	3,3,16
5673a608692SPiotr Kubaj	mtctr	9
5683a608692SPiotr Kubaj	subi	5,5,16
5693a608692SPiotr Kubaj
5703a608692SPiotr Kubaj	lvx	0,0,6
5713a608692SPiotr Kubaj	vperm	3,3,5,6
5723a608692SPiotr Kubaj	lvx	1,10,6
5733a608692SPiotr Kubaj	addi	10,10,16
5743a608692SPiotr Kubaj	vperm	0,0,1,10
5753a608692SPiotr Kubaj	vxor	2,3,0
5763a608692SPiotr Kubaj	lvx	0,10,6
5773a608692SPiotr Kubaj	addi	10,10,16
5783a608692SPiotr Kubaj
5793a608692SPiotr Kubaj.Loop_cbc_dec:
5803a608692SPiotr Kubaj	vperm	1,1,0,10
5813a608692SPiotr Kubaj	.long	0x10420D48
5823a608692SPiotr Kubaj	lvx	1,10,6
5833a608692SPiotr Kubaj	addi	10,10,16
5843a608692SPiotr Kubaj	vperm	0,0,1,10
5853a608692SPiotr Kubaj	.long	0x10420548
5863a608692SPiotr Kubaj	lvx	0,10,6
5873a608692SPiotr Kubaj	addi	10,10,16
5883a608692SPiotr Kubaj	bdnz	.Loop_cbc_dec
5893a608692SPiotr Kubaj
5903a608692SPiotr Kubaj	vperm	1,1,0,10
5913a608692SPiotr Kubaj	.long	0x10420D48
5923a608692SPiotr Kubaj	lvx	1,10,6
5933a608692SPiotr Kubaj	li	10,16
5943a608692SPiotr Kubaj	vperm	0,0,1,10
5953a608692SPiotr Kubaj	.long	0x10420549
5963a608692SPiotr Kubaj	cmplwi	5,16
5973a608692SPiotr Kubaj
5983a608692SPiotr Kubaj	vxor	2,2,4
5993a608692SPiotr Kubaj	vor	4,3,3
6003a608692SPiotr Kubaj	vperm	3,2,2,8
6013a608692SPiotr Kubaj	vsel	2,7,3,9
6023a608692SPiotr Kubaj	vor	7,3,3
6033a608692SPiotr Kubaj	stvx	2,0,4
6043a608692SPiotr Kubaj	addi	4,4,16
6053a608692SPiotr Kubaj	bge	.Lcbc_dec
6063a608692SPiotr Kubaj
6073a608692SPiotr Kubaj.Lcbc_done:
6083a608692SPiotr Kubaj	addi	4,4,-1
6093a608692SPiotr Kubaj	lvx	2,0,4
6103a608692SPiotr Kubaj	vsel	2,7,2,9
6113a608692SPiotr Kubaj	stvx	2,0,4
6123a608692SPiotr Kubaj
6133a608692SPiotr Kubaj	neg	8,7
6143a608692SPiotr Kubaj	li	10,15
6153a608692SPiotr Kubaj	vxor	0,0,0
6163a608692SPiotr Kubaj	vspltisb	9,-1
6173a608692SPiotr Kubaj
6183a608692SPiotr Kubaj	lvsl	8,0,8
6193a608692SPiotr Kubaj	vperm	9,0,9,8
6203a608692SPiotr Kubaj
6213a608692SPiotr Kubaj	lvx	7,0,7
6223a608692SPiotr Kubaj	vperm	4,4,4,8
6233a608692SPiotr Kubaj	vsel	2,7,4,9
6243a608692SPiotr Kubaj	lvx	5,10,7
6253a608692SPiotr Kubaj	stvx	2,0,7
6263a608692SPiotr Kubaj	vsel	2,4,5,9
6273a608692SPiotr Kubaj	stvx	2,10,7
6283a608692SPiotr Kubaj
6293a608692SPiotr Kubaj	mtspr	256,12
6303a608692SPiotr Kubaj	blr
6313a608692SPiotr Kubaj.long	0
6323a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,6,0
6333a608692SPiotr Kubaj.long	0
6343a608692SPiotr Kubaj.align	5
6353a608692SPiotr Kubaj_aesp8_cbc_decrypt8x:
6363a608692SPiotr Kubaj	stwu	1,-392(1)
6373a608692SPiotr Kubaj	li	10,175
6383a608692SPiotr Kubaj	li	11,191
6393a608692SPiotr Kubaj	stvx	20,10,1
6403a608692SPiotr Kubaj	addi	10,10,32
6413a608692SPiotr Kubaj	stvx	21,11,1
6423a608692SPiotr Kubaj	addi	11,11,32
6433a608692SPiotr Kubaj	stvx	22,10,1
6443a608692SPiotr Kubaj	addi	10,10,32
6453a608692SPiotr Kubaj	stvx	23,11,1
6463a608692SPiotr Kubaj	addi	11,11,32
6473a608692SPiotr Kubaj	stvx	24,10,1
6483a608692SPiotr Kubaj	addi	10,10,32
6493a608692SPiotr Kubaj	stvx	25,11,1
6503a608692SPiotr Kubaj	addi	11,11,32
6513a608692SPiotr Kubaj	stvx	26,10,1
6523a608692SPiotr Kubaj	addi	10,10,32
6533a608692SPiotr Kubaj	stvx	27,11,1
6543a608692SPiotr Kubaj	addi	11,11,32
6553a608692SPiotr Kubaj	stvx	28,10,1
6563a608692SPiotr Kubaj	addi	10,10,32
6573a608692SPiotr Kubaj	stvx	29,11,1
6583a608692SPiotr Kubaj	addi	11,11,32
6593a608692SPiotr Kubaj	stvx	30,10,1
6603a608692SPiotr Kubaj	stvx	31,11,1
6613a608692SPiotr Kubaj	li	0,-1
6623a608692SPiotr Kubaj	stw	12,364(1)
6633a608692SPiotr Kubaj	li	8,0x10
6643a608692SPiotr Kubaj	stw	26,368(1)
6653a608692SPiotr Kubaj	li	26,0x20
6663a608692SPiotr Kubaj	stw	27,372(1)
6673a608692SPiotr Kubaj	li	27,0x30
6683a608692SPiotr Kubaj	stw	28,376(1)
6693a608692SPiotr Kubaj	li	28,0x40
6703a608692SPiotr Kubaj	stw	29,380(1)
6713a608692SPiotr Kubaj	li	29,0x50
6723a608692SPiotr Kubaj	stw	30,384(1)
6733a608692SPiotr Kubaj	li	30,0x60
6743a608692SPiotr Kubaj	stw	31,388(1)
6753a608692SPiotr Kubaj	li	31,0x70
6763a608692SPiotr Kubaj	mtspr	256,0
6773a608692SPiotr Kubaj
6783a608692SPiotr Kubaj	subi	9,9,3
6793a608692SPiotr Kubaj	subi	5,5,128
6803a608692SPiotr Kubaj
6813a608692SPiotr Kubaj	lvx	23,0,6
6823a608692SPiotr Kubaj	lvx	30,8,6
6833a608692SPiotr Kubaj	addi	6,6,0x20
6843a608692SPiotr Kubaj	lvx	31,0,6
6853a608692SPiotr Kubaj	vperm	23,23,30,10
6863a608692SPiotr Kubaj	addi	11,1,32+15
6873a608692SPiotr Kubaj	mtctr	9
6883a608692SPiotr Kubaj
6893a608692SPiotr Kubaj.Load_cbc_dec_key:
6903a608692SPiotr Kubaj	vperm	24,30,31,10
6913a608692SPiotr Kubaj	lvx	30,8,6
6923a608692SPiotr Kubaj	addi	6,6,0x20
6933a608692SPiotr Kubaj	stvx	24,0,11
6943a608692SPiotr Kubaj	vperm	25,31,30,10
6953a608692SPiotr Kubaj	lvx	31,0,6
6963a608692SPiotr Kubaj	stvx	25,8,11
6973a608692SPiotr Kubaj	addi	11,11,0x20
6983a608692SPiotr Kubaj	bdnz	.Load_cbc_dec_key
6993a608692SPiotr Kubaj
7003a608692SPiotr Kubaj	lvx	26,8,6
7013a608692SPiotr Kubaj	vperm	24,30,31,10
7023a608692SPiotr Kubaj	lvx	27,26,6
7033a608692SPiotr Kubaj	stvx	24,0,11
7043a608692SPiotr Kubaj	vperm	25,31,26,10
7053a608692SPiotr Kubaj	lvx	28,27,6
7063a608692SPiotr Kubaj	stvx	25,8,11
7073a608692SPiotr Kubaj	addi	11,1,32+15
7083a608692SPiotr Kubaj	vperm	26,26,27,10
7093a608692SPiotr Kubaj	lvx	29,28,6
7103a608692SPiotr Kubaj	vperm	27,27,28,10
7113a608692SPiotr Kubaj	lvx	30,29,6
7123a608692SPiotr Kubaj	vperm	28,28,29,10
7133a608692SPiotr Kubaj	lvx	31,30,6
7143a608692SPiotr Kubaj	vperm	29,29,30,10
7153a608692SPiotr Kubaj	lvx	14,31,6
7163a608692SPiotr Kubaj	vperm	30,30,31,10
7173a608692SPiotr Kubaj	lvx	24,0,11
7183a608692SPiotr Kubaj	vperm	31,31,14,10
7193a608692SPiotr Kubaj	lvx	25,8,11
7203a608692SPiotr Kubaj
7213a608692SPiotr Kubaj
7223a608692SPiotr Kubaj
7233a608692SPiotr Kubaj	subi	3,3,15
7243a608692SPiotr Kubaj
7253a608692SPiotr Kubaj
7263a608692SPiotr Kubaj	.long	0x7C001E99
7273a608692SPiotr Kubaj
7283a608692SPiotr Kubaj
7293a608692SPiotr Kubaj	.long	0x7C281E99
7303a608692SPiotr Kubaj
7313a608692SPiotr Kubaj	.long	0x7C5A1E99
7323a608692SPiotr Kubaj
7333a608692SPiotr Kubaj	.long	0x7C7B1E99
7343a608692SPiotr Kubaj
7353a608692SPiotr Kubaj	.long	0x7D5C1E99
7363a608692SPiotr Kubaj
7373a608692SPiotr Kubaj	vxor	14,0,23
7383a608692SPiotr Kubaj	.long	0x7D7D1E99
7393a608692SPiotr Kubaj
7403a608692SPiotr Kubaj	vxor	15,1,23
7413a608692SPiotr Kubaj	.long	0x7D9E1E99
7423a608692SPiotr Kubaj
7433a608692SPiotr Kubaj	vxor	16,2,23
7443a608692SPiotr Kubaj	.long	0x7DBF1E99
7453a608692SPiotr Kubaj	addi	3,3,0x80
7463a608692SPiotr Kubaj
7473a608692SPiotr Kubaj	vxor	17,3,23
7483a608692SPiotr Kubaj
7493a608692SPiotr Kubaj	vxor	18,10,23
7503a608692SPiotr Kubaj
7513a608692SPiotr Kubaj	vxor	19,11,23
7523a608692SPiotr Kubaj	vxor	20,12,23
7533a608692SPiotr Kubaj	vxor	21,13,23
7543a608692SPiotr Kubaj
7553a608692SPiotr Kubaj	mtctr	9
7563a608692SPiotr Kubaj	b	.Loop_cbc_dec8x
7573a608692SPiotr Kubaj.align	5
7583a608692SPiotr Kubaj.Loop_cbc_dec8x:
7593a608692SPiotr Kubaj	.long	0x11CEC548
7603a608692SPiotr Kubaj	.long	0x11EFC548
7613a608692SPiotr Kubaj	.long	0x1210C548
7623a608692SPiotr Kubaj	.long	0x1231C548
7633a608692SPiotr Kubaj	.long	0x1252C548
7643a608692SPiotr Kubaj	.long	0x1273C548
7653a608692SPiotr Kubaj	.long	0x1294C548
7663a608692SPiotr Kubaj	.long	0x12B5C548
7673a608692SPiotr Kubaj	lvx	24,26,11
7683a608692SPiotr Kubaj	addi	11,11,0x20
7693a608692SPiotr Kubaj
7703a608692SPiotr Kubaj	.long	0x11CECD48
7713a608692SPiotr Kubaj	.long	0x11EFCD48
7723a608692SPiotr Kubaj	.long	0x1210CD48
7733a608692SPiotr Kubaj	.long	0x1231CD48
7743a608692SPiotr Kubaj	.long	0x1252CD48
7753a608692SPiotr Kubaj	.long	0x1273CD48
7763a608692SPiotr Kubaj	.long	0x1294CD48
7773a608692SPiotr Kubaj	.long	0x12B5CD48
7783a608692SPiotr Kubaj	lvx	25,8,11
7793a608692SPiotr Kubaj	bdnz	.Loop_cbc_dec8x
7803a608692SPiotr Kubaj
7813a608692SPiotr Kubaj	subic	5,5,128
7823a608692SPiotr Kubaj	.long	0x11CEC548
7833a608692SPiotr Kubaj	.long	0x11EFC548
7843a608692SPiotr Kubaj	.long	0x1210C548
7853a608692SPiotr Kubaj	.long	0x1231C548
7863a608692SPiotr Kubaj	.long	0x1252C548
7873a608692SPiotr Kubaj	.long	0x1273C548
7883a608692SPiotr Kubaj	.long	0x1294C548
7893a608692SPiotr Kubaj	.long	0x12B5C548
7903a608692SPiotr Kubaj
7913a608692SPiotr Kubaj	subfe.	0,0,0
7923a608692SPiotr Kubaj	.long	0x11CECD48
7933a608692SPiotr Kubaj	.long	0x11EFCD48
7943a608692SPiotr Kubaj	.long	0x1210CD48
7953a608692SPiotr Kubaj	.long	0x1231CD48
7963a608692SPiotr Kubaj	.long	0x1252CD48
7973a608692SPiotr Kubaj	.long	0x1273CD48
7983a608692SPiotr Kubaj	.long	0x1294CD48
7993a608692SPiotr Kubaj	.long	0x12B5CD48
8003a608692SPiotr Kubaj
8013a608692SPiotr Kubaj	and	0,0,5
8023a608692SPiotr Kubaj	.long	0x11CED548
8033a608692SPiotr Kubaj	.long	0x11EFD548
8043a608692SPiotr Kubaj	.long	0x1210D548
8053a608692SPiotr Kubaj	.long	0x1231D548
8063a608692SPiotr Kubaj	.long	0x1252D548
8073a608692SPiotr Kubaj	.long	0x1273D548
8083a608692SPiotr Kubaj	.long	0x1294D548
8093a608692SPiotr Kubaj	.long	0x12B5D548
8103a608692SPiotr Kubaj
8113a608692SPiotr Kubaj	add	3,3,0
8123a608692SPiotr Kubaj
8133a608692SPiotr Kubaj
8143a608692SPiotr Kubaj
8153a608692SPiotr Kubaj	.long	0x11CEDD48
8163a608692SPiotr Kubaj	.long	0x11EFDD48
8173a608692SPiotr Kubaj	.long	0x1210DD48
8183a608692SPiotr Kubaj	.long	0x1231DD48
8193a608692SPiotr Kubaj	.long	0x1252DD48
8203a608692SPiotr Kubaj	.long	0x1273DD48
8213a608692SPiotr Kubaj	.long	0x1294DD48
8223a608692SPiotr Kubaj	.long	0x12B5DD48
8233a608692SPiotr Kubaj
8243a608692SPiotr Kubaj	addi	11,1,32+15
8253a608692SPiotr Kubaj	.long	0x11CEE548
8263a608692SPiotr Kubaj	.long	0x11EFE548
8273a608692SPiotr Kubaj	.long	0x1210E548
8283a608692SPiotr Kubaj	.long	0x1231E548
8293a608692SPiotr Kubaj	.long	0x1252E548
8303a608692SPiotr Kubaj	.long	0x1273E548
8313a608692SPiotr Kubaj	.long	0x1294E548
8323a608692SPiotr Kubaj	.long	0x12B5E548
8333a608692SPiotr Kubaj	lvx	24,0,11
8343a608692SPiotr Kubaj
8353a608692SPiotr Kubaj	.long	0x11CEED48
8363a608692SPiotr Kubaj	.long	0x11EFED48
8373a608692SPiotr Kubaj	.long	0x1210ED48
8383a608692SPiotr Kubaj	.long	0x1231ED48
8393a608692SPiotr Kubaj	.long	0x1252ED48
8403a608692SPiotr Kubaj	.long	0x1273ED48
8413a608692SPiotr Kubaj	.long	0x1294ED48
8423a608692SPiotr Kubaj	.long	0x12B5ED48
8433a608692SPiotr Kubaj	lvx	25,8,11
8443a608692SPiotr Kubaj
8453a608692SPiotr Kubaj	.long	0x11CEF548
8463a608692SPiotr Kubaj	vxor	4,4,31
8473a608692SPiotr Kubaj	.long	0x11EFF548
8483a608692SPiotr Kubaj	vxor	0,0,31
8493a608692SPiotr Kubaj	.long	0x1210F548
8503a608692SPiotr Kubaj	vxor	1,1,31
8513a608692SPiotr Kubaj	.long	0x1231F548
8523a608692SPiotr Kubaj	vxor	2,2,31
8533a608692SPiotr Kubaj	.long	0x1252F548
8543a608692SPiotr Kubaj	vxor	3,3,31
8553a608692SPiotr Kubaj	.long	0x1273F548
8563a608692SPiotr Kubaj	vxor	10,10,31
8573a608692SPiotr Kubaj	.long	0x1294F548
8583a608692SPiotr Kubaj	vxor	11,11,31
8593a608692SPiotr Kubaj	.long	0x12B5F548
8603a608692SPiotr Kubaj	vxor	12,12,31
8613a608692SPiotr Kubaj
8623a608692SPiotr Kubaj	.long	0x11CE2549
8633a608692SPiotr Kubaj	.long	0x11EF0549
8643a608692SPiotr Kubaj	.long	0x7C001E99
8653a608692SPiotr Kubaj	.long	0x12100D49
8663a608692SPiotr Kubaj	.long	0x7C281E99
8673a608692SPiotr Kubaj	.long	0x12311549
8683a608692SPiotr Kubaj
8693a608692SPiotr Kubaj	.long	0x7C5A1E99
8703a608692SPiotr Kubaj	.long	0x12521D49
8713a608692SPiotr Kubaj
8723a608692SPiotr Kubaj	.long	0x7C7B1E99
8733a608692SPiotr Kubaj	.long	0x12735549
8743a608692SPiotr Kubaj
8753a608692SPiotr Kubaj	.long	0x7D5C1E99
8763a608692SPiotr Kubaj	.long	0x12945D49
8773a608692SPiotr Kubaj
8783a608692SPiotr Kubaj	.long	0x7D7D1E99
8793a608692SPiotr Kubaj	.long	0x12B56549
8803a608692SPiotr Kubaj
8813a608692SPiotr Kubaj	.long	0x7D9E1E99
8823a608692SPiotr Kubaj	vor	4,13,13
8833a608692SPiotr Kubaj
8843a608692SPiotr Kubaj	.long	0x7DBF1E99
8853a608692SPiotr Kubaj	addi	3,3,0x80
8863a608692SPiotr Kubaj
8873a608692SPiotr Kubaj
8883a608692SPiotr Kubaj
8893a608692SPiotr Kubaj	.long	0x7DC02799
8903a608692SPiotr Kubaj
8913a608692SPiotr Kubaj	vxor	14,0,23
8923a608692SPiotr Kubaj
8933a608692SPiotr Kubaj	.long	0x7DE82799
8943a608692SPiotr Kubaj
8953a608692SPiotr Kubaj	vxor	15,1,23
8963a608692SPiotr Kubaj
8973a608692SPiotr Kubaj	.long	0x7E1A2799
8983a608692SPiotr Kubaj	vxor	16,2,23
8993a608692SPiotr Kubaj
9003a608692SPiotr Kubaj	.long	0x7E3B2799
9013a608692SPiotr Kubaj	vxor	17,3,23
9023a608692SPiotr Kubaj
9033a608692SPiotr Kubaj	.long	0x7E5C2799
9043a608692SPiotr Kubaj	vxor	18,10,23
9053a608692SPiotr Kubaj
9063a608692SPiotr Kubaj	.long	0x7E7D2799
9073a608692SPiotr Kubaj	vxor	19,11,23
9083a608692SPiotr Kubaj
9093a608692SPiotr Kubaj	.long	0x7E9E2799
9103a608692SPiotr Kubaj	vxor	20,12,23
9113a608692SPiotr Kubaj	.long	0x7EBF2799
9123a608692SPiotr Kubaj	addi	4,4,0x80
9133a608692SPiotr Kubaj	vxor	21,13,23
9143a608692SPiotr Kubaj
9153a608692SPiotr Kubaj	mtctr	9
9163a608692SPiotr Kubaj	beq	.Loop_cbc_dec8x
9173a608692SPiotr Kubaj
9183a608692SPiotr Kubaj	addic.	5,5,128
9193a608692SPiotr Kubaj	beq	.Lcbc_dec8x_done
9203a608692SPiotr Kubaj	nop
9213a608692SPiotr Kubaj	nop
9223a608692SPiotr Kubaj
9233a608692SPiotr Kubaj.Loop_cbc_dec8x_tail:
9243a608692SPiotr Kubaj	.long	0x11EFC548
9253a608692SPiotr Kubaj	.long	0x1210C548
9263a608692SPiotr Kubaj	.long	0x1231C548
9273a608692SPiotr Kubaj	.long	0x1252C548
9283a608692SPiotr Kubaj	.long	0x1273C548
9293a608692SPiotr Kubaj	.long	0x1294C548
9303a608692SPiotr Kubaj	.long	0x12B5C548
9313a608692SPiotr Kubaj	lvx	24,26,11
9323a608692SPiotr Kubaj	addi	11,11,0x20
9333a608692SPiotr Kubaj
9343a608692SPiotr Kubaj	.long	0x11EFCD48
9353a608692SPiotr Kubaj	.long	0x1210CD48
9363a608692SPiotr Kubaj	.long	0x1231CD48
9373a608692SPiotr Kubaj	.long	0x1252CD48
9383a608692SPiotr Kubaj	.long	0x1273CD48
9393a608692SPiotr Kubaj	.long	0x1294CD48
9403a608692SPiotr Kubaj	.long	0x12B5CD48
9413a608692SPiotr Kubaj	lvx	25,8,11
9423a608692SPiotr Kubaj	bdnz	.Loop_cbc_dec8x_tail
9433a608692SPiotr Kubaj
9443a608692SPiotr Kubaj	.long	0x11EFC548
9453a608692SPiotr Kubaj	.long	0x1210C548
9463a608692SPiotr Kubaj	.long	0x1231C548
9473a608692SPiotr Kubaj	.long	0x1252C548
9483a608692SPiotr Kubaj	.long	0x1273C548
9493a608692SPiotr Kubaj	.long	0x1294C548
9503a608692SPiotr Kubaj	.long	0x12B5C548
9513a608692SPiotr Kubaj
9523a608692SPiotr Kubaj	.long	0x11EFCD48
9533a608692SPiotr Kubaj	.long	0x1210CD48
9543a608692SPiotr Kubaj	.long	0x1231CD48
9553a608692SPiotr Kubaj	.long	0x1252CD48
9563a608692SPiotr Kubaj	.long	0x1273CD48
9573a608692SPiotr Kubaj	.long	0x1294CD48
9583a608692SPiotr Kubaj	.long	0x12B5CD48
9593a608692SPiotr Kubaj
9603a608692SPiotr Kubaj	.long	0x11EFD548
9613a608692SPiotr Kubaj	.long	0x1210D548
9623a608692SPiotr Kubaj	.long	0x1231D548
9633a608692SPiotr Kubaj	.long	0x1252D548
9643a608692SPiotr Kubaj	.long	0x1273D548
9653a608692SPiotr Kubaj	.long	0x1294D548
9663a608692SPiotr Kubaj	.long	0x12B5D548
9673a608692SPiotr Kubaj
9683a608692SPiotr Kubaj	.long	0x11EFDD48
9693a608692SPiotr Kubaj	.long	0x1210DD48
9703a608692SPiotr Kubaj	.long	0x1231DD48
9713a608692SPiotr Kubaj	.long	0x1252DD48
9723a608692SPiotr Kubaj	.long	0x1273DD48
9733a608692SPiotr Kubaj	.long	0x1294DD48
9743a608692SPiotr Kubaj	.long	0x12B5DD48
9753a608692SPiotr Kubaj
9763a608692SPiotr Kubaj	.long	0x11EFE548
9773a608692SPiotr Kubaj	.long	0x1210E548
9783a608692SPiotr Kubaj	.long	0x1231E548
9793a608692SPiotr Kubaj	.long	0x1252E548
9803a608692SPiotr Kubaj	.long	0x1273E548
9813a608692SPiotr Kubaj	.long	0x1294E548
9823a608692SPiotr Kubaj	.long	0x12B5E548
9833a608692SPiotr Kubaj
9843a608692SPiotr Kubaj	.long	0x11EFED48
9853a608692SPiotr Kubaj	.long	0x1210ED48
9863a608692SPiotr Kubaj	.long	0x1231ED48
9873a608692SPiotr Kubaj	.long	0x1252ED48
9883a608692SPiotr Kubaj	.long	0x1273ED48
9893a608692SPiotr Kubaj	.long	0x1294ED48
9903a608692SPiotr Kubaj	.long	0x12B5ED48
9913a608692SPiotr Kubaj
9923a608692SPiotr Kubaj	.long	0x11EFF548
9933a608692SPiotr Kubaj	vxor	4,4,31
9943a608692SPiotr Kubaj	.long	0x1210F548
9953a608692SPiotr Kubaj	vxor	1,1,31
9963a608692SPiotr Kubaj	.long	0x1231F548
9973a608692SPiotr Kubaj	vxor	2,2,31
9983a608692SPiotr Kubaj	.long	0x1252F548
9993a608692SPiotr Kubaj	vxor	3,3,31
10003a608692SPiotr Kubaj	.long	0x1273F548
10013a608692SPiotr Kubaj	vxor	10,10,31
10023a608692SPiotr Kubaj	.long	0x1294F548
10033a608692SPiotr Kubaj	vxor	11,11,31
10043a608692SPiotr Kubaj	.long	0x12B5F548
10053a608692SPiotr Kubaj	vxor	12,12,31
10063a608692SPiotr Kubaj
10073a608692SPiotr Kubaj	cmplwi	5,32
10083a608692SPiotr Kubaj	blt	.Lcbc_dec8x_one
10093a608692SPiotr Kubaj	nop
10103a608692SPiotr Kubaj	beq	.Lcbc_dec8x_two
10113a608692SPiotr Kubaj	cmplwi	5,64
10123a608692SPiotr Kubaj	blt	.Lcbc_dec8x_three
10133a608692SPiotr Kubaj	nop
10143a608692SPiotr Kubaj	beq	.Lcbc_dec8x_four
10153a608692SPiotr Kubaj	cmplwi	5,96
10163a608692SPiotr Kubaj	blt	.Lcbc_dec8x_five
10173a608692SPiotr Kubaj	nop
10183a608692SPiotr Kubaj	beq	.Lcbc_dec8x_six
10193a608692SPiotr Kubaj
10203a608692SPiotr Kubaj.Lcbc_dec8x_seven:
10213a608692SPiotr Kubaj	.long	0x11EF2549
10223a608692SPiotr Kubaj	.long	0x12100D49
10233a608692SPiotr Kubaj	.long	0x12311549
10243a608692SPiotr Kubaj	.long	0x12521D49
10253a608692SPiotr Kubaj	.long	0x12735549
10263a608692SPiotr Kubaj	.long	0x12945D49
10273a608692SPiotr Kubaj	.long	0x12B56549
10283a608692SPiotr Kubaj	vor	4,13,13
10293a608692SPiotr Kubaj
10303a608692SPiotr Kubaj
10313a608692SPiotr Kubaj
10323a608692SPiotr Kubaj	.long	0x7DE02799
10333a608692SPiotr Kubaj
10343a608692SPiotr Kubaj	.long	0x7E082799
10353a608692SPiotr Kubaj
10363a608692SPiotr Kubaj	.long	0x7E3A2799
10373a608692SPiotr Kubaj
10383a608692SPiotr Kubaj	.long	0x7E5B2799
10393a608692SPiotr Kubaj
10403a608692SPiotr Kubaj	.long	0x7E7C2799
10413a608692SPiotr Kubaj
10423a608692SPiotr Kubaj	.long	0x7E9D2799
10433a608692SPiotr Kubaj	.long	0x7EBE2799
10443a608692SPiotr Kubaj	addi	4,4,0x70
10453a608692SPiotr Kubaj	b	.Lcbc_dec8x_done
10463a608692SPiotr Kubaj
10473a608692SPiotr Kubaj.align	5
10483a608692SPiotr Kubaj.Lcbc_dec8x_six:
10493a608692SPiotr Kubaj	.long	0x12102549
10503a608692SPiotr Kubaj	.long	0x12311549
10513a608692SPiotr Kubaj	.long	0x12521D49
10523a608692SPiotr Kubaj	.long	0x12735549
10533a608692SPiotr Kubaj	.long	0x12945D49
10543a608692SPiotr Kubaj	.long	0x12B56549
10553a608692SPiotr Kubaj	vor	4,13,13
10563a608692SPiotr Kubaj
10573a608692SPiotr Kubaj
10583a608692SPiotr Kubaj
10593a608692SPiotr Kubaj	.long	0x7E002799
10603a608692SPiotr Kubaj
10613a608692SPiotr Kubaj	.long	0x7E282799
10623a608692SPiotr Kubaj
10633a608692SPiotr Kubaj	.long	0x7E5A2799
10643a608692SPiotr Kubaj
10653a608692SPiotr Kubaj	.long	0x7E7B2799
10663a608692SPiotr Kubaj
10673a608692SPiotr Kubaj	.long	0x7E9C2799
10683a608692SPiotr Kubaj	.long	0x7EBD2799
10693a608692SPiotr Kubaj	addi	4,4,0x60
10703a608692SPiotr Kubaj	b	.Lcbc_dec8x_done
10713a608692SPiotr Kubaj
10723a608692SPiotr Kubaj.align	5
10733a608692SPiotr Kubaj.Lcbc_dec8x_five:
10743a608692SPiotr Kubaj	.long	0x12312549
10753a608692SPiotr Kubaj	.long	0x12521D49
10763a608692SPiotr Kubaj	.long	0x12735549
10773a608692SPiotr Kubaj	.long	0x12945D49
10783a608692SPiotr Kubaj	.long	0x12B56549
10793a608692SPiotr Kubaj	vor	4,13,13
10803a608692SPiotr Kubaj
10813a608692SPiotr Kubaj
10823a608692SPiotr Kubaj
10833a608692SPiotr Kubaj	.long	0x7E202799
10843a608692SPiotr Kubaj
10853a608692SPiotr Kubaj	.long	0x7E482799
10863a608692SPiotr Kubaj
10873a608692SPiotr Kubaj	.long	0x7E7A2799
10883a608692SPiotr Kubaj
10893a608692SPiotr Kubaj	.long	0x7E9B2799
10903a608692SPiotr Kubaj	.long	0x7EBC2799
10913a608692SPiotr Kubaj	addi	4,4,0x50
10923a608692SPiotr Kubaj	b	.Lcbc_dec8x_done
10933a608692SPiotr Kubaj
10943a608692SPiotr Kubaj.align	5
10953a608692SPiotr Kubaj.Lcbc_dec8x_four:
10963a608692SPiotr Kubaj	.long	0x12522549
10973a608692SPiotr Kubaj	.long	0x12735549
10983a608692SPiotr Kubaj	.long	0x12945D49
10993a608692SPiotr Kubaj	.long	0x12B56549
11003a608692SPiotr Kubaj	vor	4,13,13
11013a608692SPiotr Kubaj
11023a608692SPiotr Kubaj
11033a608692SPiotr Kubaj
11043a608692SPiotr Kubaj	.long	0x7E402799
11053a608692SPiotr Kubaj
11063a608692SPiotr Kubaj	.long	0x7E682799
11073a608692SPiotr Kubaj
11083a608692SPiotr Kubaj	.long	0x7E9A2799
11093a608692SPiotr Kubaj	.long	0x7EBB2799
11103a608692SPiotr Kubaj	addi	4,4,0x40
11113a608692SPiotr Kubaj	b	.Lcbc_dec8x_done
11123a608692SPiotr Kubaj
11133a608692SPiotr Kubaj.align	5
11143a608692SPiotr Kubaj.Lcbc_dec8x_three:
11153a608692SPiotr Kubaj	.long	0x12732549
11163a608692SPiotr Kubaj	.long	0x12945D49
11173a608692SPiotr Kubaj	.long	0x12B56549
11183a608692SPiotr Kubaj	vor	4,13,13
11193a608692SPiotr Kubaj
11203a608692SPiotr Kubaj
11213a608692SPiotr Kubaj
11223a608692SPiotr Kubaj	.long	0x7E602799
11233a608692SPiotr Kubaj
11243a608692SPiotr Kubaj	.long	0x7E882799
11253a608692SPiotr Kubaj	.long	0x7EBA2799
11263a608692SPiotr Kubaj	addi	4,4,0x30
11273a608692SPiotr Kubaj	b	.Lcbc_dec8x_done
11283a608692SPiotr Kubaj
11293a608692SPiotr Kubaj.align	5
11303a608692SPiotr Kubaj.Lcbc_dec8x_two:
11313a608692SPiotr Kubaj	.long	0x12942549
11323a608692SPiotr Kubaj	.long	0x12B56549
11333a608692SPiotr Kubaj	vor	4,13,13
11343a608692SPiotr Kubaj
11353a608692SPiotr Kubaj
11363a608692SPiotr Kubaj
11373a608692SPiotr Kubaj	.long	0x7E802799
11383a608692SPiotr Kubaj	.long	0x7EA82799
11393a608692SPiotr Kubaj	addi	4,4,0x20
11403a608692SPiotr Kubaj	b	.Lcbc_dec8x_done
11413a608692SPiotr Kubaj
11423a608692SPiotr Kubaj.align	5
11433a608692SPiotr Kubaj.Lcbc_dec8x_one:
11443a608692SPiotr Kubaj	.long	0x12B52549
11453a608692SPiotr Kubaj	vor	4,13,13
11463a608692SPiotr Kubaj
11473a608692SPiotr Kubaj
11483a608692SPiotr Kubaj	.long	0x7EA02799
11493a608692SPiotr Kubaj	addi	4,4,0x10
11503a608692SPiotr Kubaj
11513a608692SPiotr Kubaj.Lcbc_dec8x_done:
11523a608692SPiotr Kubaj
11533a608692SPiotr Kubaj	.long	0x7C803F99
11543a608692SPiotr Kubaj
11553a608692SPiotr Kubaj	li	10,47
11563a608692SPiotr Kubaj	li	11,63
11573a608692SPiotr Kubaj	stvx	6,10,1
11583a608692SPiotr Kubaj	addi	10,10,32
11593a608692SPiotr Kubaj	stvx	6,11,1
11603a608692SPiotr Kubaj	addi	11,11,32
11613a608692SPiotr Kubaj	stvx	6,10,1
11623a608692SPiotr Kubaj	addi	10,10,32
11633a608692SPiotr Kubaj	stvx	6,11,1
11643a608692SPiotr Kubaj	addi	11,11,32
11653a608692SPiotr Kubaj	stvx	6,10,1
11663a608692SPiotr Kubaj	addi	10,10,32
11673a608692SPiotr Kubaj	stvx	6,11,1
11683a608692SPiotr Kubaj	addi	11,11,32
11693a608692SPiotr Kubaj	stvx	6,10,1
11703a608692SPiotr Kubaj	addi	10,10,32
11713a608692SPiotr Kubaj	stvx	6,11,1
11723a608692SPiotr Kubaj	addi	11,11,32
11733a608692SPiotr Kubaj
11743a608692SPiotr Kubaj	mtspr	256,12
11753a608692SPiotr Kubaj	lvx	20,10,1
11763a608692SPiotr Kubaj	addi	10,10,32
11773a608692SPiotr Kubaj	lvx	21,11,1
11783a608692SPiotr Kubaj	addi	11,11,32
11793a608692SPiotr Kubaj	lvx	22,10,1
11803a608692SPiotr Kubaj	addi	10,10,32
11813a608692SPiotr Kubaj	lvx	23,11,1
11823a608692SPiotr Kubaj	addi	11,11,32
11833a608692SPiotr Kubaj	lvx	24,10,1
11843a608692SPiotr Kubaj	addi	10,10,32
11853a608692SPiotr Kubaj	lvx	25,11,1
11863a608692SPiotr Kubaj	addi	11,11,32
11873a608692SPiotr Kubaj	lvx	26,10,1
11883a608692SPiotr Kubaj	addi	10,10,32
11893a608692SPiotr Kubaj	lvx	27,11,1
11903a608692SPiotr Kubaj	addi	11,11,32
11913a608692SPiotr Kubaj	lvx	28,10,1
11923a608692SPiotr Kubaj	addi	10,10,32
11933a608692SPiotr Kubaj	lvx	29,11,1
11943a608692SPiotr Kubaj	addi	11,11,32
11953a608692SPiotr Kubaj	lvx	30,10,1
11963a608692SPiotr Kubaj	lvx	31,11,1
11973a608692SPiotr Kubaj	lwz	26,368(1)
11983a608692SPiotr Kubaj	lwz	27,372(1)
11993a608692SPiotr Kubaj	lwz	28,376(1)
12003a608692SPiotr Kubaj	lwz	29,380(1)
12013a608692SPiotr Kubaj	lwz	30,384(1)
12023a608692SPiotr Kubaj	lwz	31,388(1)
12033a608692SPiotr Kubaj	addi	1,1,392
12043a608692SPiotr Kubaj	blr
12053a608692SPiotr Kubaj.long	0
12063a608692SPiotr Kubaj.byte	0,12,0x04,0,0x80,6,6,0
12073a608692SPiotr Kubaj.long	0
12083a608692SPiotr Kubaj.size	aes_p8_cbc_encrypt,.-aes_p8_cbc_encrypt
12093a608692SPiotr Kubaj.globl	aes_p8_ctr32_encrypt_blocks
12103a608692SPiotr Kubaj.type	aes_p8_ctr32_encrypt_blocks,@function
12113a608692SPiotr Kubaj.align	5
12123a608692SPiotr Kubajaes_p8_ctr32_encrypt_blocks:
12133a608692SPiotr Kubaj	cmplwi	5,1
12143a608692SPiotr Kubaj	.long	0x4dc00020
12153a608692SPiotr Kubaj
12163a608692SPiotr Kubaj	lis	0,0xfff0
12173a608692SPiotr Kubaj	mfspr	12,256
12183a608692SPiotr Kubaj	mtspr	256,0
12193a608692SPiotr Kubaj
12203a608692SPiotr Kubaj	li	10,15
12213a608692SPiotr Kubaj	vxor	0,0,0
12223a608692SPiotr Kubaj
12233a608692SPiotr Kubaj
12243a608692SPiotr Kubaj	lvx	4,0,7
12253a608692SPiotr Kubaj	lvsl	6,0,7
12263a608692SPiotr Kubaj	lvx	5,10,7
12273a608692SPiotr Kubaj	vspltisb	11,1
12283a608692SPiotr Kubaj
12293a608692SPiotr Kubaj	vperm	4,4,5,6
12303a608692SPiotr Kubaj	vsldoi	11,0,11,1
12313a608692SPiotr Kubaj
12323a608692SPiotr Kubaj	neg	11,3
12333a608692SPiotr Kubaj	lvsl	10,0,6
12343a608692SPiotr Kubaj	lwz	9,240(6)
12353a608692SPiotr Kubaj
12363a608692SPiotr Kubaj	lvsr	6,0,11
12373a608692SPiotr Kubaj	lvx	5,0,3
12383a608692SPiotr Kubaj	addi	3,3,15
12393a608692SPiotr Kubaj
12403a608692SPiotr Kubaj
12413a608692SPiotr Kubaj	srwi	9,9,1
12423a608692SPiotr Kubaj	li	10,16
12433a608692SPiotr Kubaj	subi	9,9,1
12443a608692SPiotr Kubaj
12453a608692SPiotr Kubaj	cmplwi	5,8
12463a608692SPiotr Kubaj	bge	_aesp8_ctr32_encrypt8x
12473a608692SPiotr Kubaj
12483a608692SPiotr Kubaj	lvsr	8,0,4
12493a608692SPiotr Kubaj	vspltisb	9,-1
12503a608692SPiotr Kubaj	lvx	7,0,4
12513a608692SPiotr Kubaj	vperm	9,0,9,8
12523a608692SPiotr Kubaj
12533a608692SPiotr Kubaj
12543a608692SPiotr Kubaj	lvx	0,0,6
12553a608692SPiotr Kubaj	mtctr	9
12563a608692SPiotr Kubaj	lvx	1,10,6
12573a608692SPiotr Kubaj	addi	10,10,16
12583a608692SPiotr Kubaj	vperm	0,0,1,10
12593a608692SPiotr Kubaj	vxor	2,4,0
12603a608692SPiotr Kubaj	lvx	0,10,6
12613a608692SPiotr Kubaj	addi	10,10,16
12623a608692SPiotr Kubaj	b	.Loop_ctr32_enc
12633a608692SPiotr Kubaj
12643a608692SPiotr Kubaj.align	5
12653a608692SPiotr Kubaj.Loop_ctr32_enc:
12663a608692SPiotr Kubaj	vperm	1,1,0,10
12673a608692SPiotr Kubaj	.long	0x10420D08
12683a608692SPiotr Kubaj	lvx	1,10,6
12693a608692SPiotr Kubaj	addi	10,10,16
12703a608692SPiotr Kubaj	vperm	0,0,1,10
12713a608692SPiotr Kubaj	.long	0x10420508
12723a608692SPiotr Kubaj	lvx	0,10,6
12733a608692SPiotr Kubaj	addi	10,10,16
12743a608692SPiotr Kubaj	bdnz	.Loop_ctr32_enc
12753a608692SPiotr Kubaj
12763a608692SPiotr Kubaj	vadduwm	4,4,11
12773a608692SPiotr Kubaj	vor	3,5,5
12783a608692SPiotr Kubaj	lvx	5,0,3
12793a608692SPiotr Kubaj	addi	3,3,16
12803a608692SPiotr Kubaj	subic.	5,5,1
12813a608692SPiotr Kubaj
12823a608692SPiotr Kubaj	vperm	1,1,0,10
12833a608692SPiotr Kubaj	.long	0x10420D08
12843a608692SPiotr Kubaj	lvx	1,10,6
12853a608692SPiotr Kubaj	vperm	3,3,5,6
12863a608692SPiotr Kubaj	li	10,16
12873a608692SPiotr Kubaj	vperm	1,0,1,10
12883a608692SPiotr Kubaj	lvx	0,0,6
12893a608692SPiotr Kubaj	vxor	3,3,1
12903a608692SPiotr Kubaj	.long	0x10421D09
12913a608692SPiotr Kubaj
12923a608692SPiotr Kubaj	lvx	1,10,6
12933a608692SPiotr Kubaj	addi	10,10,16
12943a608692SPiotr Kubaj	vperm	2,2,2,8
12953a608692SPiotr Kubaj	vsel	3,7,2,9
12963a608692SPiotr Kubaj	mtctr	9
12973a608692SPiotr Kubaj	vperm	0,0,1,10
12983a608692SPiotr Kubaj	vor	7,2,2
12993a608692SPiotr Kubaj	vxor	2,4,0
13003a608692SPiotr Kubaj	lvx	0,10,6
13013a608692SPiotr Kubaj	addi	10,10,16
13023a608692SPiotr Kubaj	stvx	3,0,4
13033a608692SPiotr Kubaj	addi	4,4,16
13043a608692SPiotr Kubaj	bne	.Loop_ctr32_enc
13053a608692SPiotr Kubaj
13063a608692SPiotr Kubaj	addi	4,4,-1
13073a608692SPiotr Kubaj	lvx	2,0,4
13083a608692SPiotr Kubaj	vsel	2,7,2,9
13093a608692SPiotr Kubaj	stvx	2,0,4
13103a608692SPiotr Kubaj
13113a608692SPiotr Kubaj	mtspr	256,12
13123a608692SPiotr Kubaj	blr
13133a608692SPiotr Kubaj.long	0
13143a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,6,0
13153a608692SPiotr Kubaj.long	0
13163a608692SPiotr Kubaj.align	5
13173a608692SPiotr Kubaj_aesp8_ctr32_encrypt8x:
13183a608692SPiotr Kubaj	stwu	1,-392(1)
13193a608692SPiotr Kubaj	li	10,175
13203a608692SPiotr Kubaj	li	11,191
13213a608692SPiotr Kubaj	stvx	20,10,1
13223a608692SPiotr Kubaj	addi	10,10,32
13233a608692SPiotr Kubaj	stvx	21,11,1
13243a608692SPiotr Kubaj	addi	11,11,32
13253a608692SPiotr Kubaj	stvx	22,10,1
13263a608692SPiotr Kubaj	addi	10,10,32
13273a608692SPiotr Kubaj	stvx	23,11,1
13283a608692SPiotr Kubaj	addi	11,11,32
13293a608692SPiotr Kubaj	stvx	24,10,1
13303a608692SPiotr Kubaj	addi	10,10,32
13313a608692SPiotr Kubaj	stvx	25,11,1
13323a608692SPiotr Kubaj	addi	11,11,32
13333a608692SPiotr Kubaj	stvx	26,10,1
13343a608692SPiotr Kubaj	addi	10,10,32
13353a608692SPiotr Kubaj	stvx	27,11,1
13363a608692SPiotr Kubaj	addi	11,11,32
13373a608692SPiotr Kubaj	stvx	28,10,1
13383a608692SPiotr Kubaj	addi	10,10,32
13393a608692SPiotr Kubaj	stvx	29,11,1
13403a608692SPiotr Kubaj	addi	11,11,32
13413a608692SPiotr Kubaj	stvx	30,10,1
13423a608692SPiotr Kubaj	stvx	31,11,1
13433a608692SPiotr Kubaj	li	0,-1
13443a608692SPiotr Kubaj	stw	12,364(1)
13453a608692SPiotr Kubaj	li	8,0x10
13463a608692SPiotr Kubaj	stw	26,368(1)
13473a608692SPiotr Kubaj	li	26,0x20
13483a608692SPiotr Kubaj	stw	27,372(1)
13493a608692SPiotr Kubaj	li	27,0x30
13503a608692SPiotr Kubaj	stw	28,376(1)
13513a608692SPiotr Kubaj	li	28,0x40
13523a608692SPiotr Kubaj	stw	29,380(1)
13533a608692SPiotr Kubaj	li	29,0x50
13543a608692SPiotr Kubaj	stw	30,384(1)
13553a608692SPiotr Kubaj	li	30,0x60
13563a608692SPiotr Kubaj	stw	31,388(1)
13573a608692SPiotr Kubaj	li	31,0x70
13583a608692SPiotr Kubaj	mtspr	256,0
13593a608692SPiotr Kubaj
13603a608692SPiotr Kubaj	subi	9,9,3
13613a608692SPiotr Kubaj
13623a608692SPiotr Kubaj	lvx	23,0,6
13633a608692SPiotr Kubaj	lvx	30,8,6
13643a608692SPiotr Kubaj	addi	6,6,0x20
13653a608692SPiotr Kubaj	lvx	31,0,6
13663a608692SPiotr Kubaj	vperm	23,23,30,10
13673a608692SPiotr Kubaj	addi	11,1,32+15
13683a608692SPiotr Kubaj	mtctr	9
13693a608692SPiotr Kubaj
13703a608692SPiotr Kubaj.Load_ctr32_enc_key:
13713a608692SPiotr Kubaj	vperm	24,30,31,10
13723a608692SPiotr Kubaj	lvx	30,8,6
13733a608692SPiotr Kubaj	addi	6,6,0x20
13743a608692SPiotr Kubaj	stvx	24,0,11
13753a608692SPiotr Kubaj	vperm	25,31,30,10
13763a608692SPiotr Kubaj	lvx	31,0,6
13773a608692SPiotr Kubaj	stvx	25,8,11
13783a608692SPiotr Kubaj	addi	11,11,0x20
13793a608692SPiotr Kubaj	bdnz	.Load_ctr32_enc_key
13803a608692SPiotr Kubaj
13813a608692SPiotr Kubaj	lvx	26,8,6
13823a608692SPiotr Kubaj	vperm	24,30,31,10
13833a608692SPiotr Kubaj	lvx	27,26,6
13843a608692SPiotr Kubaj	stvx	24,0,11
13853a608692SPiotr Kubaj	vperm	25,31,26,10
13863a608692SPiotr Kubaj	lvx	28,27,6
13873a608692SPiotr Kubaj	stvx	25,8,11
13883a608692SPiotr Kubaj	addi	11,1,32+15
13893a608692SPiotr Kubaj	vperm	26,26,27,10
13903a608692SPiotr Kubaj	lvx	29,28,6
13913a608692SPiotr Kubaj	vperm	27,27,28,10
13923a608692SPiotr Kubaj	lvx	30,29,6
13933a608692SPiotr Kubaj	vperm	28,28,29,10
13943a608692SPiotr Kubaj	lvx	31,30,6
13953a608692SPiotr Kubaj	vperm	29,29,30,10
13963a608692SPiotr Kubaj	lvx	15,31,6
13973a608692SPiotr Kubaj	vperm	30,30,31,10
13983a608692SPiotr Kubaj	lvx	24,0,11
13993a608692SPiotr Kubaj	vperm	31,31,15,10
14003a608692SPiotr Kubaj	lvx	25,8,11
14013a608692SPiotr Kubaj
14023a608692SPiotr Kubaj	vadduwm	7,11,11
14033a608692SPiotr Kubaj	subi	3,3,15
14043a608692SPiotr Kubaj	slwi	5,5,4
14053a608692SPiotr Kubaj
14063a608692SPiotr Kubaj	vadduwm	16,4,11
14073a608692SPiotr Kubaj	vadduwm	17,4,7
14083a608692SPiotr Kubaj	vxor	15,4,23
14093a608692SPiotr Kubaj
14103a608692SPiotr Kubaj	vadduwm	18,16,7
14113a608692SPiotr Kubaj	vxor	16,16,23
14123a608692SPiotr Kubaj
14133a608692SPiotr Kubaj	vadduwm	19,17,7
14143a608692SPiotr Kubaj	vxor	17,17,23
14153a608692SPiotr Kubaj
14163a608692SPiotr Kubaj	vadduwm	20,18,7
14173a608692SPiotr Kubaj	vxor	18,18,23
14183a608692SPiotr Kubaj
14193a608692SPiotr Kubaj	vadduwm	21,19,7
14203a608692SPiotr Kubaj	vxor	19,19,23
14213a608692SPiotr Kubaj	vadduwm	22,20,7
14223a608692SPiotr Kubaj	vxor	20,20,23
14233a608692SPiotr Kubaj	vadduwm	4,21,7
14243a608692SPiotr Kubaj	vxor	21,21,23
14253a608692SPiotr Kubaj	vxor	22,22,23
14263a608692SPiotr Kubaj
14273a608692SPiotr Kubaj	mtctr	9
14283a608692SPiotr Kubaj	b	.Loop_ctr32_enc8x
14293a608692SPiotr Kubaj.align	5
14303a608692SPiotr Kubaj.Loop_ctr32_enc8x:
14313a608692SPiotr Kubaj	.long	0x11EFC508
14323a608692SPiotr Kubaj	.long	0x1210C508
14333a608692SPiotr Kubaj	.long	0x1231C508
14343a608692SPiotr Kubaj	.long	0x1252C508
14353a608692SPiotr Kubaj	.long	0x1273C508
14363a608692SPiotr Kubaj	.long	0x1294C508
14373a608692SPiotr Kubaj	.long	0x12B5C508
14383a608692SPiotr Kubaj	.long	0x12D6C508
14393a608692SPiotr Kubaj.Loop_ctr32_enc8x_middle:
14403a608692SPiotr Kubaj	lvx	24,26,11
14413a608692SPiotr Kubaj	addi	11,11,0x20
14423a608692SPiotr Kubaj
14433a608692SPiotr Kubaj	.long	0x11EFCD08
14443a608692SPiotr Kubaj	.long	0x1210CD08
14453a608692SPiotr Kubaj	.long	0x1231CD08
14463a608692SPiotr Kubaj	.long	0x1252CD08
14473a608692SPiotr Kubaj	.long	0x1273CD08
14483a608692SPiotr Kubaj	.long	0x1294CD08
14493a608692SPiotr Kubaj	.long	0x12B5CD08
14503a608692SPiotr Kubaj	.long	0x12D6CD08
14513a608692SPiotr Kubaj	lvx	25,8,11
14523a608692SPiotr Kubaj	bdnz	.Loop_ctr32_enc8x
14533a608692SPiotr Kubaj
14543a608692SPiotr Kubaj	subic	11,5,256
14553a608692SPiotr Kubaj	.long	0x11EFC508
14563a608692SPiotr Kubaj	.long	0x1210C508
14573a608692SPiotr Kubaj	.long	0x1231C508
14583a608692SPiotr Kubaj	.long	0x1252C508
14593a608692SPiotr Kubaj	.long	0x1273C508
14603a608692SPiotr Kubaj	.long	0x1294C508
14613a608692SPiotr Kubaj	.long	0x12B5C508
14623a608692SPiotr Kubaj	.long	0x12D6C508
14633a608692SPiotr Kubaj
14643a608692SPiotr Kubaj	subfe	0,0,0
14653a608692SPiotr Kubaj	.long	0x11EFCD08
14663a608692SPiotr Kubaj	.long	0x1210CD08
14673a608692SPiotr Kubaj	.long	0x1231CD08
14683a608692SPiotr Kubaj	.long	0x1252CD08
14693a608692SPiotr Kubaj	.long	0x1273CD08
14703a608692SPiotr Kubaj	.long	0x1294CD08
14713a608692SPiotr Kubaj	.long	0x12B5CD08
14723a608692SPiotr Kubaj	.long	0x12D6CD08
14733a608692SPiotr Kubaj
14743a608692SPiotr Kubaj	and	0,0,11
14753a608692SPiotr Kubaj	addi	11,1,32+15
14763a608692SPiotr Kubaj	.long	0x11EFD508
14773a608692SPiotr Kubaj	.long	0x1210D508
14783a608692SPiotr Kubaj	.long	0x1231D508
14793a608692SPiotr Kubaj	.long	0x1252D508
14803a608692SPiotr Kubaj	.long	0x1273D508
14813a608692SPiotr Kubaj	.long	0x1294D508
14823a608692SPiotr Kubaj	.long	0x12B5D508
14833a608692SPiotr Kubaj	.long	0x12D6D508
14843a608692SPiotr Kubaj	lvx	24,0,11
14853a608692SPiotr Kubaj
14863a608692SPiotr Kubaj	subic	5,5,129
14873a608692SPiotr Kubaj	.long	0x11EFDD08
14883a608692SPiotr Kubaj	addi	5,5,1
14893a608692SPiotr Kubaj	.long	0x1210DD08
14903a608692SPiotr Kubaj	.long	0x1231DD08
14913a608692SPiotr Kubaj	.long	0x1252DD08
14923a608692SPiotr Kubaj	.long	0x1273DD08
14933a608692SPiotr Kubaj	.long	0x1294DD08
14943a608692SPiotr Kubaj	.long	0x12B5DD08
14953a608692SPiotr Kubaj	.long	0x12D6DD08
14963a608692SPiotr Kubaj	lvx	25,8,11
14973a608692SPiotr Kubaj
14983a608692SPiotr Kubaj	.long	0x11EFE508
14993a608692SPiotr Kubaj	.long	0x7C001E99
15003a608692SPiotr Kubaj	.long	0x1210E508
15013a608692SPiotr Kubaj	.long	0x7C281E99
15023a608692SPiotr Kubaj	.long	0x1231E508
15033a608692SPiotr Kubaj	.long	0x7C5A1E99
15043a608692SPiotr Kubaj	.long	0x1252E508
15053a608692SPiotr Kubaj	.long	0x7C7B1E99
15063a608692SPiotr Kubaj	.long	0x1273E508
15073a608692SPiotr Kubaj	.long	0x7D5C1E99
15083a608692SPiotr Kubaj	.long	0x1294E508
15093a608692SPiotr Kubaj	.long	0x7D9D1E99
15103a608692SPiotr Kubaj	.long	0x12B5E508
15113a608692SPiotr Kubaj	.long	0x7DBE1E99
15123a608692SPiotr Kubaj	.long	0x12D6E508
15133a608692SPiotr Kubaj	.long	0x7DDF1E99
15143a608692SPiotr Kubaj	addi	3,3,0x80
15153a608692SPiotr Kubaj
15163a608692SPiotr Kubaj	.long	0x11EFED08
15173a608692SPiotr Kubaj
15183a608692SPiotr Kubaj	.long	0x1210ED08
15193a608692SPiotr Kubaj
15203a608692SPiotr Kubaj	.long	0x1231ED08
15213a608692SPiotr Kubaj
15223a608692SPiotr Kubaj	.long	0x1252ED08
15233a608692SPiotr Kubaj
15243a608692SPiotr Kubaj	.long	0x1273ED08
15253a608692SPiotr Kubaj
15263a608692SPiotr Kubaj	.long	0x1294ED08
15273a608692SPiotr Kubaj
15283a608692SPiotr Kubaj	.long	0x12B5ED08
15293a608692SPiotr Kubaj
15303a608692SPiotr Kubaj	.long	0x12D6ED08
15313a608692SPiotr Kubaj
15323a608692SPiotr Kubaj
15333a608692SPiotr Kubaj	add	3,3,0
15343a608692SPiotr Kubaj
15353a608692SPiotr Kubaj
15363a608692SPiotr Kubaj
15373a608692SPiotr Kubaj	subfe.	0,0,0
15383a608692SPiotr Kubaj	.long	0x11EFF508
15393a608692SPiotr Kubaj	vxor	0,0,31
15403a608692SPiotr Kubaj	.long	0x1210F508
15413a608692SPiotr Kubaj	vxor	1,1,31
15423a608692SPiotr Kubaj	.long	0x1231F508
15433a608692SPiotr Kubaj	vxor	2,2,31
15443a608692SPiotr Kubaj	.long	0x1252F508
15453a608692SPiotr Kubaj	vxor	3,3,31
15463a608692SPiotr Kubaj	.long	0x1273F508
15473a608692SPiotr Kubaj	vxor	10,10,31
15483a608692SPiotr Kubaj	.long	0x1294F508
15493a608692SPiotr Kubaj	vxor	12,12,31
15503a608692SPiotr Kubaj	.long	0x12B5F508
15513a608692SPiotr Kubaj	vxor	13,13,31
15523a608692SPiotr Kubaj	.long	0x12D6F508
15533a608692SPiotr Kubaj	vxor	14,14,31
15543a608692SPiotr Kubaj
15553a608692SPiotr Kubaj	bne	.Lctr32_enc8x_break
15563a608692SPiotr Kubaj
15573a608692SPiotr Kubaj	.long	0x100F0509
15583a608692SPiotr Kubaj	.long	0x10300D09
15593a608692SPiotr Kubaj	vadduwm	16,4,11
15603a608692SPiotr Kubaj	.long	0x10511509
15613a608692SPiotr Kubaj	vadduwm	17,4,7
15623a608692SPiotr Kubaj	vxor	15,4,23
15633a608692SPiotr Kubaj	.long	0x10721D09
15643a608692SPiotr Kubaj	vadduwm	18,16,7
15653a608692SPiotr Kubaj	vxor	16,16,23
15663a608692SPiotr Kubaj	.long	0x11535509
15673a608692SPiotr Kubaj	vadduwm	19,17,7
15683a608692SPiotr Kubaj	vxor	17,17,23
15693a608692SPiotr Kubaj	.long	0x11946509
15703a608692SPiotr Kubaj	vadduwm	20,18,7
15713a608692SPiotr Kubaj	vxor	18,18,23
15723a608692SPiotr Kubaj	.long	0x11B56D09
15733a608692SPiotr Kubaj	vadduwm	21,19,7
15743a608692SPiotr Kubaj	vxor	19,19,23
15753a608692SPiotr Kubaj	.long	0x11D67509
15763a608692SPiotr Kubaj	vadduwm	22,20,7
15773a608692SPiotr Kubaj	vxor	20,20,23
15783a608692SPiotr Kubaj
15793a608692SPiotr Kubaj	vadduwm	4,21,7
15803a608692SPiotr Kubaj	vxor	21,21,23
15813a608692SPiotr Kubaj
15823a608692SPiotr Kubaj	vxor	22,22,23
15833a608692SPiotr Kubaj	mtctr	9
15843a608692SPiotr Kubaj
15853a608692SPiotr Kubaj	.long	0x11EFC508
15863a608692SPiotr Kubaj	.long	0x7C002799
15873a608692SPiotr Kubaj
15883a608692SPiotr Kubaj	.long	0x1210C508
15893a608692SPiotr Kubaj	.long	0x7C282799
15903a608692SPiotr Kubaj
15913a608692SPiotr Kubaj	.long	0x1231C508
15923a608692SPiotr Kubaj	.long	0x7C5A2799
15933a608692SPiotr Kubaj
15943a608692SPiotr Kubaj	.long	0x1252C508
15953a608692SPiotr Kubaj	.long	0x7C7B2799
15963a608692SPiotr Kubaj
15973a608692SPiotr Kubaj	.long	0x1273C508
15983a608692SPiotr Kubaj	.long	0x7D5C2799
15993a608692SPiotr Kubaj
16003a608692SPiotr Kubaj	.long	0x1294C508
16013a608692SPiotr Kubaj	.long	0x7D9D2799
16023a608692SPiotr Kubaj
16033a608692SPiotr Kubaj	.long	0x12B5C508
16043a608692SPiotr Kubaj	.long	0x7DBE2799
16053a608692SPiotr Kubaj	.long	0x12D6C508
16063a608692SPiotr Kubaj	.long	0x7DDF2799
16073a608692SPiotr Kubaj	addi	4,4,0x80
16083a608692SPiotr Kubaj
16093a608692SPiotr Kubaj	b	.Loop_ctr32_enc8x_middle
16103a608692SPiotr Kubaj
16113a608692SPiotr Kubaj.align	5
16123a608692SPiotr Kubaj.Lctr32_enc8x_break:
16133a608692SPiotr Kubaj	cmpwi	5,-0x60
16143a608692SPiotr Kubaj	blt	.Lctr32_enc8x_one
16153a608692SPiotr Kubaj	nop
16163a608692SPiotr Kubaj	beq	.Lctr32_enc8x_two
16173a608692SPiotr Kubaj	cmpwi	5,-0x40
16183a608692SPiotr Kubaj	blt	.Lctr32_enc8x_three
16193a608692SPiotr Kubaj	nop
16203a608692SPiotr Kubaj	beq	.Lctr32_enc8x_four
16213a608692SPiotr Kubaj	cmpwi	5,-0x20
16223a608692SPiotr Kubaj	blt	.Lctr32_enc8x_five
16233a608692SPiotr Kubaj	nop
16243a608692SPiotr Kubaj	beq	.Lctr32_enc8x_six
16253a608692SPiotr Kubaj	cmpwi	5,0x00
16263a608692SPiotr Kubaj	blt	.Lctr32_enc8x_seven
16273a608692SPiotr Kubaj
16283a608692SPiotr Kubaj.Lctr32_enc8x_eight:
16293a608692SPiotr Kubaj	.long	0x11EF0509
16303a608692SPiotr Kubaj	.long	0x12100D09
16313a608692SPiotr Kubaj	.long	0x12311509
16323a608692SPiotr Kubaj	.long	0x12521D09
16333a608692SPiotr Kubaj	.long	0x12735509
16343a608692SPiotr Kubaj	.long	0x12946509
16353a608692SPiotr Kubaj	.long	0x12B56D09
16363a608692SPiotr Kubaj	.long	0x12D67509
16373a608692SPiotr Kubaj
16383a608692SPiotr Kubaj
16393a608692SPiotr Kubaj
16403a608692SPiotr Kubaj	.long	0x7DE02799
16413a608692SPiotr Kubaj
16423a608692SPiotr Kubaj	.long	0x7E082799
16433a608692SPiotr Kubaj
16443a608692SPiotr Kubaj	.long	0x7E3A2799
16453a608692SPiotr Kubaj
16463a608692SPiotr Kubaj	.long	0x7E5B2799
16473a608692SPiotr Kubaj
16483a608692SPiotr Kubaj	.long	0x7E7C2799
16493a608692SPiotr Kubaj
16503a608692SPiotr Kubaj	.long	0x7E9D2799
16513a608692SPiotr Kubaj
16523a608692SPiotr Kubaj	.long	0x7EBE2799
16533a608692SPiotr Kubaj	.long	0x7EDF2799
16543a608692SPiotr Kubaj	addi	4,4,0x80
16553a608692SPiotr Kubaj	b	.Lctr32_enc8x_done
16563a608692SPiotr Kubaj
16573a608692SPiotr Kubaj.align	5
16583a608692SPiotr Kubaj.Lctr32_enc8x_seven:
16593a608692SPiotr Kubaj	.long	0x11EF0D09
16603a608692SPiotr Kubaj	.long	0x12101509
16613a608692SPiotr Kubaj	.long	0x12311D09
16623a608692SPiotr Kubaj	.long	0x12525509
16633a608692SPiotr Kubaj	.long	0x12736509
16643a608692SPiotr Kubaj	.long	0x12946D09
16653a608692SPiotr Kubaj	.long	0x12B57509
16663a608692SPiotr Kubaj
16673a608692SPiotr Kubaj
16683a608692SPiotr Kubaj
16693a608692SPiotr Kubaj	.long	0x7DE02799
16703a608692SPiotr Kubaj
16713a608692SPiotr Kubaj	.long	0x7E082799
16723a608692SPiotr Kubaj
16733a608692SPiotr Kubaj	.long	0x7E3A2799
16743a608692SPiotr Kubaj
16753a608692SPiotr Kubaj	.long	0x7E5B2799
16763a608692SPiotr Kubaj
16773a608692SPiotr Kubaj	.long	0x7E7C2799
16783a608692SPiotr Kubaj
16793a608692SPiotr Kubaj	.long	0x7E9D2799
16803a608692SPiotr Kubaj	.long	0x7EBE2799
16813a608692SPiotr Kubaj	addi	4,4,0x70
16823a608692SPiotr Kubaj	b	.Lctr32_enc8x_done
16833a608692SPiotr Kubaj
16843a608692SPiotr Kubaj.align	5
16853a608692SPiotr Kubaj.Lctr32_enc8x_six:
16863a608692SPiotr Kubaj	.long	0x11EF1509
16873a608692SPiotr Kubaj	.long	0x12101D09
16883a608692SPiotr Kubaj	.long	0x12315509
16893a608692SPiotr Kubaj	.long	0x12526509
16903a608692SPiotr Kubaj	.long	0x12736D09
16913a608692SPiotr Kubaj	.long	0x12947509
16923a608692SPiotr Kubaj
16933a608692SPiotr Kubaj
16943a608692SPiotr Kubaj
16953a608692SPiotr Kubaj	.long	0x7DE02799
16963a608692SPiotr Kubaj
16973a608692SPiotr Kubaj	.long	0x7E082799
16983a608692SPiotr Kubaj
16993a608692SPiotr Kubaj	.long	0x7E3A2799
17003a608692SPiotr Kubaj
17013a608692SPiotr Kubaj	.long	0x7E5B2799
17023a608692SPiotr Kubaj
17033a608692SPiotr Kubaj	.long	0x7E7C2799
17043a608692SPiotr Kubaj	.long	0x7E9D2799
17053a608692SPiotr Kubaj	addi	4,4,0x60
17063a608692SPiotr Kubaj	b	.Lctr32_enc8x_done
17073a608692SPiotr Kubaj
17083a608692SPiotr Kubaj.align	5
17093a608692SPiotr Kubaj.Lctr32_enc8x_five:
17103a608692SPiotr Kubaj	.long	0x11EF1D09
17113a608692SPiotr Kubaj	.long	0x12105509
17123a608692SPiotr Kubaj	.long	0x12316509
17133a608692SPiotr Kubaj	.long	0x12526D09
17143a608692SPiotr Kubaj	.long	0x12737509
17153a608692SPiotr Kubaj
17163a608692SPiotr Kubaj
17173a608692SPiotr Kubaj
17183a608692SPiotr Kubaj	.long	0x7DE02799
17193a608692SPiotr Kubaj
17203a608692SPiotr Kubaj	.long	0x7E082799
17213a608692SPiotr Kubaj
17223a608692SPiotr Kubaj	.long	0x7E3A2799
17233a608692SPiotr Kubaj
17243a608692SPiotr Kubaj	.long	0x7E5B2799
17253a608692SPiotr Kubaj	.long	0x7E7C2799
17263a608692SPiotr Kubaj	addi	4,4,0x50
17273a608692SPiotr Kubaj	b	.Lctr32_enc8x_done
17283a608692SPiotr Kubaj
17293a608692SPiotr Kubaj.align	5
17303a608692SPiotr Kubaj.Lctr32_enc8x_four:
17313a608692SPiotr Kubaj	.long	0x11EF5509
17323a608692SPiotr Kubaj	.long	0x12106509
17333a608692SPiotr Kubaj	.long	0x12316D09
17343a608692SPiotr Kubaj	.long	0x12527509
17353a608692SPiotr Kubaj
17363a608692SPiotr Kubaj
17373a608692SPiotr Kubaj
17383a608692SPiotr Kubaj	.long	0x7DE02799
17393a608692SPiotr Kubaj
17403a608692SPiotr Kubaj	.long	0x7E082799
17413a608692SPiotr Kubaj
17423a608692SPiotr Kubaj	.long	0x7E3A2799
17433a608692SPiotr Kubaj	.long	0x7E5B2799
17443a608692SPiotr Kubaj	addi	4,4,0x40
17453a608692SPiotr Kubaj	b	.Lctr32_enc8x_done
17463a608692SPiotr Kubaj
17473a608692SPiotr Kubaj.align	5
17483a608692SPiotr Kubaj.Lctr32_enc8x_three:
17493a608692SPiotr Kubaj	.long	0x11EF6509
17503a608692SPiotr Kubaj	.long	0x12106D09
17513a608692SPiotr Kubaj	.long	0x12317509
17523a608692SPiotr Kubaj
17533a608692SPiotr Kubaj
17543a608692SPiotr Kubaj
17553a608692SPiotr Kubaj	.long	0x7DE02799
17563a608692SPiotr Kubaj
17573a608692SPiotr Kubaj	.long	0x7E082799
17583a608692SPiotr Kubaj	.long	0x7E3A2799
17593a608692SPiotr Kubaj	addi	4,4,0x30
17603a608692SPiotr Kubaj	b	.Lctr32_enc8x_done
17613a608692SPiotr Kubaj
17623a608692SPiotr Kubaj.align	5
17633a608692SPiotr Kubaj.Lctr32_enc8x_two:
17643a608692SPiotr Kubaj	.long	0x11EF6D09
17653a608692SPiotr Kubaj	.long	0x12107509
17663a608692SPiotr Kubaj
17673a608692SPiotr Kubaj
17683a608692SPiotr Kubaj
17693a608692SPiotr Kubaj	.long	0x7DE02799
17703a608692SPiotr Kubaj	.long	0x7E082799
17713a608692SPiotr Kubaj	addi	4,4,0x20
17723a608692SPiotr Kubaj	b	.Lctr32_enc8x_done
17733a608692SPiotr Kubaj
17743a608692SPiotr Kubaj.align	5
17753a608692SPiotr Kubaj.Lctr32_enc8x_one:
17763a608692SPiotr Kubaj	.long	0x11EF7509
17773a608692SPiotr Kubaj
17783a608692SPiotr Kubaj
17793a608692SPiotr Kubaj	.long	0x7DE02799
17803a608692SPiotr Kubaj	addi	4,4,0x10
17813a608692SPiotr Kubaj
17823a608692SPiotr Kubaj.Lctr32_enc8x_done:
17833a608692SPiotr Kubaj	li	10,47
17843a608692SPiotr Kubaj	li	11,63
17853a608692SPiotr Kubaj	stvx	6,10,1
17863a608692SPiotr Kubaj	addi	10,10,32
17873a608692SPiotr Kubaj	stvx	6,11,1
17883a608692SPiotr Kubaj	addi	11,11,32
17893a608692SPiotr Kubaj	stvx	6,10,1
17903a608692SPiotr Kubaj	addi	10,10,32
17913a608692SPiotr Kubaj	stvx	6,11,1
17923a608692SPiotr Kubaj	addi	11,11,32
17933a608692SPiotr Kubaj	stvx	6,10,1
17943a608692SPiotr Kubaj	addi	10,10,32
17953a608692SPiotr Kubaj	stvx	6,11,1
17963a608692SPiotr Kubaj	addi	11,11,32
17973a608692SPiotr Kubaj	stvx	6,10,1
17983a608692SPiotr Kubaj	addi	10,10,32
17993a608692SPiotr Kubaj	stvx	6,11,1
18003a608692SPiotr Kubaj	addi	11,11,32
18013a608692SPiotr Kubaj
18023a608692SPiotr Kubaj	mtspr	256,12
18033a608692SPiotr Kubaj	lvx	20,10,1
18043a608692SPiotr Kubaj	addi	10,10,32
18053a608692SPiotr Kubaj	lvx	21,11,1
18063a608692SPiotr Kubaj	addi	11,11,32
18073a608692SPiotr Kubaj	lvx	22,10,1
18083a608692SPiotr Kubaj	addi	10,10,32
18093a608692SPiotr Kubaj	lvx	23,11,1
18103a608692SPiotr Kubaj	addi	11,11,32
18113a608692SPiotr Kubaj	lvx	24,10,1
18123a608692SPiotr Kubaj	addi	10,10,32
18133a608692SPiotr Kubaj	lvx	25,11,1
18143a608692SPiotr Kubaj	addi	11,11,32
18153a608692SPiotr Kubaj	lvx	26,10,1
18163a608692SPiotr Kubaj	addi	10,10,32
18173a608692SPiotr Kubaj	lvx	27,11,1
18183a608692SPiotr Kubaj	addi	11,11,32
18193a608692SPiotr Kubaj	lvx	28,10,1
18203a608692SPiotr Kubaj	addi	10,10,32
18213a608692SPiotr Kubaj	lvx	29,11,1
18223a608692SPiotr Kubaj	addi	11,11,32
18233a608692SPiotr Kubaj	lvx	30,10,1
18243a608692SPiotr Kubaj	lvx	31,11,1
18253a608692SPiotr Kubaj	lwz	26,368(1)
18263a608692SPiotr Kubaj	lwz	27,372(1)
18273a608692SPiotr Kubaj	lwz	28,376(1)
18283a608692SPiotr Kubaj	lwz	29,380(1)
18293a608692SPiotr Kubaj	lwz	30,384(1)
18303a608692SPiotr Kubaj	lwz	31,388(1)
18313a608692SPiotr Kubaj	addi	1,1,392
18323a608692SPiotr Kubaj	blr
18333a608692SPiotr Kubaj.long	0
18343a608692SPiotr Kubaj.byte	0,12,0x04,0,0x80,6,6,0
18353a608692SPiotr Kubaj.long	0
18363a608692SPiotr Kubaj.size	aes_p8_ctr32_encrypt_blocks,.-aes_p8_ctr32_encrypt_blocks
18373a608692SPiotr Kubaj.globl	aes_p8_xts_encrypt
18383a608692SPiotr Kubaj.type	aes_p8_xts_encrypt,@function
18393a608692SPiotr Kubaj.align	5
18403a608692SPiotr Kubajaes_p8_xts_encrypt:
18413a608692SPiotr Kubaj	mr	10,3
18423a608692SPiotr Kubaj	li	3,-1
18433a608692SPiotr Kubaj	cmplwi	5,16
18443a608692SPiotr Kubaj	.long	0x4dc00020
18453a608692SPiotr Kubaj
18463a608692SPiotr Kubaj	lis	0,0xfff0
18473a608692SPiotr Kubaj	mfspr	12,256
18483a608692SPiotr Kubaj	li	11,0
18493a608692SPiotr Kubaj	mtspr	256,0
18503a608692SPiotr Kubaj
18513a608692SPiotr Kubaj	vspltisb	9,0x07
18523a608692SPiotr Kubaj
18533a608692SPiotr Kubaj
18543a608692SPiotr Kubaj
18553a608692SPiotr Kubaj
18563a608692SPiotr Kubaj	li	3,15
18573a608692SPiotr Kubaj	lvx	8,0,8
18583a608692SPiotr Kubaj	lvsl	5,0,8
18593a608692SPiotr Kubaj	lvx	4,3,8
18603a608692SPiotr Kubaj
18613a608692SPiotr Kubaj	vperm	8,8,4,5
18623a608692SPiotr Kubaj
18633a608692SPiotr Kubaj	neg	11,10
18643a608692SPiotr Kubaj	lvsr	5,0,11
18653a608692SPiotr Kubaj	lvx	2,0,10
18663a608692SPiotr Kubaj	addi	10,10,15
18673a608692SPiotr Kubaj
18683a608692SPiotr Kubaj
18693a608692SPiotr Kubaj	cmplwi	7,0
18703a608692SPiotr Kubaj	beq	.Lxts_enc_no_key2
18713a608692SPiotr Kubaj
18723a608692SPiotr Kubaj	lvsl	7,0,7
18733a608692SPiotr Kubaj	lwz	9,240(7)
18743a608692SPiotr Kubaj	srwi	9,9,1
18753a608692SPiotr Kubaj	subi	9,9,1
18763a608692SPiotr Kubaj	li	3,16
18773a608692SPiotr Kubaj
18783a608692SPiotr Kubaj	lvx	0,0,7
18793a608692SPiotr Kubaj	lvx	1,3,7
18803a608692SPiotr Kubaj	addi	3,3,16
18813a608692SPiotr Kubaj	vperm	0,0,1,7
18823a608692SPiotr Kubaj	vxor	8,8,0
18833a608692SPiotr Kubaj	lvx	0,3,7
18843a608692SPiotr Kubaj	addi	3,3,16
18853a608692SPiotr Kubaj	mtctr	9
18863a608692SPiotr Kubaj
18873a608692SPiotr Kubaj.Ltweak_xts_enc:
18883a608692SPiotr Kubaj	vperm	1,1,0,7
18893a608692SPiotr Kubaj	.long	0x11080D08
18903a608692SPiotr Kubaj	lvx	1,3,7
18913a608692SPiotr Kubaj	addi	3,3,16
18923a608692SPiotr Kubaj	vperm	0,0,1,7
18933a608692SPiotr Kubaj	.long	0x11080508
18943a608692SPiotr Kubaj	lvx	0,3,7
18953a608692SPiotr Kubaj	addi	3,3,16
18963a608692SPiotr Kubaj	bdnz	.Ltweak_xts_enc
18973a608692SPiotr Kubaj
18983a608692SPiotr Kubaj	vperm	1,1,0,7
18993a608692SPiotr Kubaj	.long	0x11080D08
19003a608692SPiotr Kubaj	lvx	1,3,7
19013a608692SPiotr Kubaj	vperm	0,0,1,7
19023a608692SPiotr Kubaj	.long	0x11080509
19033a608692SPiotr Kubaj
19043a608692SPiotr Kubaj	li	8,0
19053a608692SPiotr Kubaj	b	.Lxts_enc
19063a608692SPiotr Kubaj
19073a608692SPiotr Kubaj.Lxts_enc_no_key2:
19083a608692SPiotr Kubaj	li	3,-16
19093a608692SPiotr Kubaj	and	5,5,3
19103a608692SPiotr Kubaj
19113a608692SPiotr Kubaj
19123a608692SPiotr Kubaj.Lxts_enc:
19133a608692SPiotr Kubaj	lvx	4,0,10
19143a608692SPiotr Kubaj	addi	10,10,16
19153a608692SPiotr Kubaj
19163a608692SPiotr Kubaj	lvsl	7,0,6
19173a608692SPiotr Kubaj	lwz	9,240(6)
19183a608692SPiotr Kubaj	srwi	9,9,1
19193a608692SPiotr Kubaj	subi	9,9,1
19203a608692SPiotr Kubaj	li	3,16
19213a608692SPiotr Kubaj
19223a608692SPiotr Kubaj	vslb	10,9,9
19233a608692SPiotr Kubaj	vor	10,10,9
19243a608692SPiotr Kubaj	vspltisb	11,1
19253a608692SPiotr Kubaj	vsldoi	10,10,11,15
19263a608692SPiotr Kubaj
19273a608692SPiotr Kubaj	cmplwi	5,96
19283a608692SPiotr Kubaj	bge	_aesp8_xts_encrypt6x
19293a608692SPiotr Kubaj
19303a608692SPiotr Kubaj	andi.	7,5,15
19313a608692SPiotr Kubaj	subic	0,5,32
19323a608692SPiotr Kubaj	subi	7,7,16
19333a608692SPiotr Kubaj	subfe	0,0,0
19343a608692SPiotr Kubaj	and	0,0,7
19353a608692SPiotr Kubaj	add	10,10,0
19363a608692SPiotr Kubaj
19373a608692SPiotr Kubaj	lvx	0,0,6
19383a608692SPiotr Kubaj	lvx	1,3,6
19393a608692SPiotr Kubaj	addi	3,3,16
19403a608692SPiotr Kubaj	vperm	2,2,4,5
19413a608692SPiotr Kubaj	vperm	0,0,1,7
19423a608692SPiotr Kubaj	vxor	2,2,8
19433a608692SPiotr Kubaj	vxor	2,2,0
19443a608692SPiotr Kubaj	lvx	0,3,6
19453a608692SPiotr Kubaj	addi	3,3,16
19463a608692SPiotr Kubaj	mtctr	9
19473a608692SPiotr Kubaj	b	.Loop_xts_enc
19483a608692SPiotr Kubaj
19493a608692SPiotr Kubaj.align	5
19503a608692SPiotr Kubaj.Loop_xts_enc:
19513a608692SPiotr Kubaj	vperm	1,1,0,7
19523a608692SPiotr Kubaj	.long	0x10420D08
19533a608692SPiotr Kubaj	lvx	1,3,6
19543a608692SPiotr Kubaj	addi	3,3,16
19553a608692SPiotr Kubaj	vperm	0,0,1,7
19563a608692SPiotr Kubaj	.long	0x10420508
19573a608692SPiotr Kubaj	lvx	0,3,6
19583a608692SPiotr Kubaj	addi	3,3,16
19593a608692SPiotr Kubaj	bdnz	.Loop_xts_enc
19603a608692SPiotr Kubaj
19613a608692SPiotr Kubaj	vperm	1,1,0,7
19623a608692SPiotr Kubaj	.long	0x10420D08
19633a608692SPiotr Kubaj	lvx	1,3,6
19643a608692SPiotr Kubaj	li	3,16
19653a608692SPiotr Kubaj	vperm	0,0,1,7
19663a608692SPiotr Kubaj	vxor	0,0,8
19673a608692SPiotr Kubaj	.long	0x10620509
19683a608692SPiotr Kubaj
19693a608692SPiotr Kubaj
19703a608692SPiotr Kubaj	nop
19713a608692SPiotr Kubaj
19723a608692SPiotr Kubaj	.long	0x7C602799
19733a608692SPiotr Kubaj	addi	4,4,16
19743a608692SPiotr Kubaj
19753a608692SPiotr Kubaj	subic.	5,5,16
19763a608692SPiotr Kubaj	beq	.Lxts_enc_done
19773a608692SPiotr Kubaj
19783a608692SPiotr Kubaj	vor	2,4,4
19793a608692SPiotr Kubaj	lvx	4,0,10
19803a608692SPiotr Kubaj	addi	10,10,16
19813a608692SPiotr Kubaj	lvx	0,0,6
19823a608692SPiotr Kubaj	lvx	1,3,6
19833a608692SPiotr Kubaj	addi	3,3,16
19843a608692SPiotr Kubaj
19853a608692SPiotr Kubaj	subic	0,5,32
19863a608692SPiotr Kubaj	subfe	0,0,0
19873a608692SPiotr Kubaj	and	0,0,7
19883a608692SPiotr Kubaj	add	10,10,0
19893a608692SPiotr Kubaj
19903a608692SPiotr Kubaj	vsrab	11,8,9
19913a608692SPiotr Kubaj	vaddubm	8,8,8
19923a608692SPiotr Kubaj	vsldoi	11,11,11,15
19933a608692SPiotr Kubaj	vand	11,11,10
19943a608692SPiotr Kubaj	vxor	8,8,11
19953a608692SPiotr Kubaj
19963a608692SPiotr Kubaj	vperm	2,2,4,5
19973a608692SPiotr Kubaj	vperm	0,0,1,7
19983a608692SPiotr Kubaj	vxor	2,2,8
19993a608692SPiotr Kubaj	vxor	3,3,0
20003a608692SPiotr Kubaj	vxor	2,2,0
20013a608692SPiotr Kubaj	lvx	0,3,6
20023a608692SPiotr Kubaj	addi	3,3,16
20033a608692SPiotr Kubaj
20043a608692SPiotr Kubaj	mtctr	9
20053a608692SPiotr Kubaj	cmplwi	5,16
20063a608692SPiotr Kubaj	bge	.Loop_xts_enc
20073a608692SPiotr Kubaj
20083a608692SPiotr Kubaj	vxor	3,3,8
20093a608692SPiotr Kubaj	lvsr	5,0,5
20103a608692SPiotr Kubaj	vxor	4,4,4
20113a608692SPiotr Kubaj	vspltisb	11,-1
20123a608692SPiotr Kubaj	vperm	4,4,11,5
20133a608692SPiotr Kubaj	vsel	2,2,3,4
20143a608692SPiotr Kubaj
20153a608692SPiotr Kubaj	subi	11,4,17
20163a608692SPiotr Kubaj	subi	4,4,16
20173a608692SPiotr Kubaj	mtctr	5
20183a608692SPiotr Kubaj	li	5,16
20193a608692SPiotr Kubaj.Loop_xts_enc_steal:
20203a608692SPiotr Kubaj	lbzu	0,1(11)
20213a608692SPiotr Kubaj	stb	0,16(11)
20223a608692SPiotr Kubaj	bdnz	.Loop_xts_enc_steal
20233a608692SPiotr Kubaj
20243a608692SPiotr Kubaj	mtctr	9
20253a608692SPiotr Kubaj	b	.Loop_xts_enc
20263a608692SPiotr Kubaj
20273a608692SPiotr Kubaj.Lxts_enc_done:
20283a608692SPiotr Kubaj	cmplwi	8,0
20293a608692SPiotr Kubaj	beq	.Lxts_enc_ret
20303a608692SPiotr Kubaj
20313a608692SPiotr Kubaj	vsrab	11,8,9
20323a608692SPiotr Kubaj	vaddubm	8,8,8
20333a608692SPiotr Kubaj	vsldoi	11,11,11,15
20343a608692SPiotr Kubaj	vand	11,11,10
20353a608692SPiotr Kubaj	vxor	8,8,11
20363a608692SPiotr Kubaj
20373a608692SPiotr Kubaj
20383a608692SPiotr Kubaj	.long	0x7D004799
20393a608692SPiotr Kubaj
20403a608692SPiotr Kubaj.Lxts_enc_ret:
20413a608692SPiotr Kubaj	mtspr	256,12
20423a608692SPiotr Kubaj	li	3,0
20433a608692SPiotr Kubaj	blr
20443a608692SPiotr Kubaj.long	0
20453a608692SPiotr Kubaj.byte	0,12,0x04,0,0x80,6,6,0
20463a608692SPiotr Kubaj.long	0
20473a608692SPiotr Kubaj.size	aes_p8_xts_encrypt,.-aes_p8_xts_encrypt
20483a608692SPiotr Kubaj
20493a608692SPiotr Kubaj.globl	aes_p8_xts_decrypt
20503a608692SPiotr Kubaj.type	aes_p8_xts_decrypt,@function
20513a608692SPiotr Kubaj.align	5
20523a608692SPiotr Kubajaes_p8_xts_decrypt:
20533a608692SPiotr Kubaj	mr	10,3
20543a608692SPiotr Kubaj	li	3,-1
20553a608692SPiotr Kubaj	cmplwi	5,16
20563a608692SPiotr Kubaj	.long	0x4dc00020
20573a608692SPiotr Kubaj
20583a608692SPiotr Kubaj	lis	0,0xfff8
20593a608692SPiotr Kubaj	mfspr	12,256
20603a608692SPiotr Kubaj	li	11,0
20613a608692SPiotr Kubaj	mtspr	256,0
20623a608692SPiotr Kubaj
20633a608692SPiotr Kubaj	andi.	0,5,15
20643a608692SPiotr Kubaj	neg	0,0
20653a608692SPiotr Kubaj	andi.	0,0,16
20663a608692SPiotr Kubaj	sub	5,5,0
20673a608692SPiotr Kubaj
20683a608692SPiotr Kubaj	vspltisb	9,0x07
20693a608692SPiotr Kubaj
20703a608692SPiotr Kubaj
20713a608692SPiotr Kubaj
20723a608692SPiotr Kubaj
20733a608692SPiotr Kubaj	li	3,15
20743a608692SPiotr Kubaj	lvx	8,0,8
20753a608692SPiotr Kubaj	lvsl	5,0,8
20763a608692SPiotr Kubaj	lvx	4,3,8
20773a608692SPiotr Kubaj
20783a608692SPiotr Kubaj	vperm	8,8,4,5
20793a608692SPiotr Kubaj
20803a608692SPiotr Kubaj	neg	11,10
20813a608692SPiotr Kubaj	lvsr	5,0,11
20823a608692SPiotr Kubaj	lvx	2,0,10
20833a608692SPiotr Kubaj	addi	10,10,15
20843a608692SPiotr Kubaj
20853a608692SPiotr Kubaj
20863a608692SPiotr Kubaj	cmplwi	7,0
20873a608692SPiotr Kubaj	beq	.Lxts_dec_no_key2
20883a608692SPiotr Kubaj
20893a608692SPiotr Kubaj	lvsl	7,0,7
20903a608692SPiotr Kubaj	lwz	9,240(7)
20913a608692SPiotr Kubaj	srwi	9,9,1
20923a608692SPiotr Kubaj	subi	9,9,1
20933a608692SPiotr Kubaj	li	3,16
20943a608692SPiotr Kubaj
20953a608692SPiotr Kubaj	lvx	0,0,7
20963a608692SPiotr Kubaj	lvx	1,3,7
20973a608692SPiotr Kubaj	addi	3,3,16
20983a608692SPiotr Kubaj	vperm	0,0,1,7
20993a608692SPiotr Kubaj	vxor	8,8,0
21003a608692SPiotr Kubaj	lvx	0,3,7
21013a608692SPiotr Kubaj	addi	3,3,16
21023a608692SPiotr Kubaj	mtctr	9
21033a608692SPiotr Kubaj
21043a608692SPiotr Kubaj.Ltweak_xts_dec:
21053a608692SPiotr Kubaj	vperm	1,1,0,7
21063a608692SPiotr Kubaj	.long	0x11080D08
21073a608692SPiotr Kubaj	lvx	1,3,7
21083a608692SPiotr Kubaj	addi	3,3,16
21093a608692SPiotr Kubaj	vperm	0,0,1,7
21103a608692SPiotr Kubaj	.long	0x11080508
21113a608692SPiotr Kubaj	lvx	0,3,7
21123a608692SPiotr Kubaj	addi	3,3,16
21133a608692SPiotr Kubaj	bdnz	.Ltweak_xts_dec
21143a608692SPiotr Kubaj
21153a608692SPiotr Kubaj	vperm	1,1,0,7
21163a608692SPiotr Kubaj	.long	0x11080D08
21173a608692SPiotr Kubaj	lvx	1,3,7
21183a608692SPiotr Kubaj	vperm	0,0,1,7
21193a608692SPiotr Kubaj	.long	0x11080509
21203a608692SPiotr Kubaj
21213a608692SPiotr Kubaj	li	8,0
21223a608692SPiotr Kubaj	b	.Lxts_dec
21233a608692SPiotr Kubaj
21243a608692SPiotr Kubaj.Lxts_dec_no_key2:
21253a608692SPiotr Kubaj	neg	3,5
21263a608692SPiotr Kubaj	andi.	3,3,15
21273a608692SPiotr Kubaj	add	5,5,3
21283a608692SPiotr Kubaj
21293a608692SPiotr Kubaj
21303a608692SPiotr Kubaj.Lxts_dec:
21313a608692SPiotr Kubaj	lvx	4,0,10
21323a608692SPiotr Kubaj	addi	10,10,16
21333a608692SPiotr Kubaj
21343a608692SPiotr Kubaj	lvsl	7,0,6
21353a608692SPiotr Kubaj	lwz	9,240(6)
21363a608692SPiotr Kubaj	srwi	9,9,1
21373a608692SPiotr Kubaj	subi	9,9,1
21383a608692SPiotr Kubaj	li	3,16
21393a608692SPiotr Kubaj
21403a608692SPiotr Kubaj	vslb	10,9,9
21413a608692SPiotr Kubaj	vor	10,10,9
21423a608692SPiotr Kubaj	vspltisb	11,1
21433a608692SPiotr Kubaj	vsldoi	10,10,11,15
21443a608692SPiotr Kubaj
21453a608692SPiotr Kubaj	cmplwi	5,96
21463a608692SPiotr Kubaj	bge	_aesp8_xts_decrypt6x
21473a608692SPiotr Kubaj
21483a608692SPiotr Kubaj	lvx	0,0,6
21493a608692SPiotr Kubaj	lvx	1,3,6
21503a608692SPiotr Kubaj	addi	3,3,16
21513a608692SPiotr Kubaj	vperm	2,2,4,5
21523a608692SPiotr Kubaj	vperm	0,0,1,7
21533a608692SPiotr Kubaj	vxor	2,2,8
21543a608692SPiotr Kubaj	vxor	2,2,0
21553a608692SPiotr Kubaj	lvx	0,3,6
21563a608692SPiotr Kubaj	addi	3,3,16
21573a608692SPiotr Kubaj	mtctr	9
21583a608692SPiotr Kubaj
21593a608692SPiotr Kubaj	cmplwi	5,16
21603a608692SPiotr Kubaj	blt	.Ltail_xts_dec
21613a608692SPiotr Kubaj	b	.Loop_xts_dec
21623a608692SPiotr Kubaj
21633a608692SPiotr Kubaj.align	5
21643a608692SPiotr Kubaj.Loop_xts_dec:
21653a608692SPiotr Kubaj	vperm	1,1,0,7
21663a608692SPiotr Kubaj	.long	0x10420D48
21673a608692SPiotr Kubaj	lvx	1,3,6
21683a608692SPiotr Kubaj	addi	3,3,16
21693a608692SPiotr Kubaj	vperm	0,0,1,7
21703a608692SPiotr Kubaj	.long	0x10420548
21713a608692SPiotr Kubaj	lvx	0,3,6
21723a608692SPiotr Kubaj	addi	3,3,16
21733a608692SPiotr Kubaj	bdnz	.Loop_xts_dec
21743a608692SPiotr Kubaj
21753a608692SPiotr Kubaj	vperm	1,1,0,7
21763a608692SPiotr Kubaj	.long	0x10420D48
21773a608692SPiotr Kubaj	lvx	1,3,6
21783a608692SPiotr Kubaj	li	3,16
21793a608692SPiotr Kubaj	vperm	0,0,1,7
21803a608692SPiotr Kubaj	vxor	0,0,8
21813a608692SPiotr Kubaj	.long	0x10620549
21823a608692SPiotr Kubaj
21833a608692SPiotr Kubaj
21843a608692SPiotr Kubaj	nop
21853a608692SPiotr Kubaj
21863a608692SPiotr Kubaj	.long	0x7C602799
21873a608692SPiotr Kubaj	addi	4,4,16
21883a608692SPiotr Kubaj
21893a608692SPiotr Kubaj	subic.	5,5,16
21903a608692SPiotr Kubaj	beq	.Lxts_dec_done
21913a608692SPiotr Kubaj
21923a608692SPiotr Kubaj	vor	2,4,4
21933a608692SPiotr Kubaj	lvx	4,0,10
21943a608692SPiotr Kubaj	addi	10,10,16
21953a608692SPiotr Kubaj	lvx	0,0,6
21963a608692SPiotr Kubaj	lvx	1,3,6
21973a608692SPiotr Kubaj	addi	3,3,16
21983a608692SPiotr Kubaj
21993a608692SPiotr Kubaj	vsrab	11,8,9
22003a608692SPiotr Kubaj	vaddubm	8,8,8
22013a608692SPiotr Kubaj	vsldoi	11,11,11,15
22023a608692SPiotr Kubaj	vand	11,11,10
22033a608692SPiotr Kubaj	vxor	8,8,11
22043a608692SPiotr Kubaj
22053a608692SPiotr Kubaj	vperm	2,2,4,5
22063a608692SPiotr Kubaj	vperm	0,0,1,7
22073a608692SPiotr Kubaj	vxor	2,2,8
22083a608692SPiotr Kubaj	vxor	2,2,0
22093a608692SPiotr Kubaj	lvx	0,3,6
22103a608692SPiotr Kubaj	addi	3,3,16
22113a608692SPiotr Kubaj
22123a608692SPiotr Kubaj	mtctr	9
22133a608692SPiotr Kubaj	cmplwi	5,16
22143a608692SPiotr Kubaj	bge	.Loop_xts_dec
22153a608692SPiotr Kubaj
22163a608692SPiotr Kubaj.Ltail_xts_dec:
22173a608692SPiotr Kubaj	vsrab	11,8,9
22183a608692SPiotr Kubaj	vaddubm	12,8,8
22193a608692SPiotr Kubaj	vsldoi	11,11,11,15
22203a608692SPiotr Kubaj	vand	11,11,10
22213a608692SPiotr Kubaj	vxor	12,12,11
22223a608692SPiotr Kubaj
22233a608692SPiotr Kubaj	subi	10,10,16
22243a608692SPiotr Kubaj	add	10,10,5
22253a608692SPiotr Kubaj
22263a608692SPiotr Kubaj	vxor	2,2,8
22273a608692SPiotr Kubaj	vxor	2,2,12
22283a608692SPiotr Kubaj
22293a608692SPiotr Kubaj.Loop_xts_dec_short:
22303a608692SPiotr Kubaj	vperm	1,1,0,7
22313a608692SPiotr Kubaj	.long	0x10420D48
22323a608692SPiotr Kubaj	lvx	1,3,6
22333a608692SPiotr Kubaj	addi	3,3,16
22343a608692SPiotr Kubaj	vperm	0,0,1,7
22353a608692SPiotr Kubaj	.long	0x10420548
22363a608692SPiotr Kubaj	lvx	0,3,6
22373a608692SPiotr Kubaj	addi	3,3,16
22383a608692SPiotr Kubaj	bdnz	.Loop_xts_dec_short
22393a608692SPiotr Kubaj
22403a608692SPiotr Kubaj	vperm	1,1,0,7
22413a608692SPiotr Kubaj	.long	0x10420D48
22423a608692SPiotr Kubaj	lvx	1,3,6
22433a608692SPiotr Kubaj	li	3,16
22443a608692SPiotr Kubaj	vperm	0,0,1,7
22453a608692SPiotr Kubaj	vxor	0,0,12
22463a608692SPiotr Kubaj	.long	0x10620549
22473a608692SPiotr Kubaj
22483a608692SPiotr Kubaj
22493a608692SPiotr Kubaj	nop
22503a608692SPiotr Kubaj
22513a608692SPiotr Kubaj	.long	0x7C602799
22523a608692SPiotr Kubaj
22533a608692SPiotr Kubaj	vor	2,4,4
22543a608692SPiotr Kubaj	lvx	4,0,10
22553a608692SPiotr Kubaj
22563a608692SPiotr Kubaj	lvx	0,0,6
22573a608692SPiotr Kubaj	lvx	1,3,6
22583a608692SPiotr Kubaj	addi	3,3,16
22593a608692SPiotr Kubaj	vperm	2,2,4,5
22603a608692SPiotr Kubaj	vperm	0,0,1,7
22613a608692SPiotr Kubaj
22623a608692SPiotr Kubaj	lvsr	5,0,5
22633a608692SPiotr Kubaj	vxor	4,4,4
22643a608692SPiotr Kubaj	vspltisb	11,-1
22653a608692SPiotr Kubaj	vperm	4,4,11,5
22663a608692SPiotr Kubaj	vsel	2,2,3,4
22673a608692SPiotr Kubaj
22683a608692SPiotr Kubaj	vxor	0,0,8
22693a608692SPiotr Kubaj	vxor	2,2,0
22703a608692SPiotr Kubaj	lvx	0,3,6
22713a608692SPiotr Kubaj	addi	3,3,16
22723a608692SPiotr Kubaj
22733a608692SPiotr Kubaj	subi	11,4,1
22743a608692SPiotr Kubaj	mtctr	5
22753a608692SPiotr Kubaj	li	5,16
22763a608692SPiotr Kubaj.Loop_xts_dec_steal:
22773a608692SPiotr Kubaj	lbzu	0,1(11)
22783a608692SPiotr Kubaj	stb	0,16(11)
22793a608692SPiotr Kubaj	bdnz	.Loop_xts_dec_steal
22803a608692SPiotr Kubaj
22813a608692SPiotr Kubaj	mtctr	9
22823a608692SPiotr Kubaj	b	.Loop_xts_dec
22833a608692SPiotr Kubaj
22843a608692SPiotr Kubaj.Lxts_dec_done:
22853a608692SPiotr Kubaj	cmplwi	8,0
22863a608692SPiotr Kubaj	beq	.Lxts_dec_ret
22873a608692SPiotr Kubaj
22883a608692SPiotr Kubaj	vsrab	11,8,9
22893a608692SPiotr Kubaj	vaddubm	8,8,8
22903a608692SPiotr Kubaj	vsldoi	11,11,11,15
22913a608692SPiotr Kubaj	vand	11,11,10
22923a608692SPiotr Kubaj	vxor	8,8,11
22933a608692SPiotr Kubaj
22943a608692SPiotr Kubaj
22953a608692SPiotr Kubaj	.long	0x7D004799
22963a608692SPiotr Kubaj
22973a608692SPiotr Kubaj.Lxts_dec_ret:
22983a608692SPiotr Kubaj	mtspr	256,12
22993a608692SPiotr Kubaj	li	3,0
23003a608692SPiotr Kubaj	blr
23013a608692SPiotr Kubaj.long	0
23023a608692SPiotr Kubaj.byte	0,12,0x04,0,0x80,6,6,0
23033a608692SPiotr Kubaj.long	0
23043a608692SPiotr Kubaj.size	aes_p8_xts_decrypt,.-aes_p8_xts_decrypt
23053a608692SPiotr Kubaj.align	5
23063a608692SPiotr Kubaj_aesp8_xts_encrypt6x:
23073a608692SPiotr Kubaj	stwu	1,-392(1)
23083a608692SPiotr Kubaj	mflr	11
23093a608692SPiotr Kubaj	li	7,175
23103a608692SPiotr Kubaj	li	3,191
23113a608692SPiotr Kubaj	stw	11,396(1)
23123a608692SPiotr Kubaj	stvx	20,7,1
23133a608692SPiotr Kubaj	addi	7,7,32
23143a608692SPiotr Kubaj	stvx	21,3,1
23153a608692SPiotr Kubaj	addi	3,3,32
23163a608692SPiotr Kubaj	stvx	22,7,1
23173a608692SPiotr Kubaj	addi	7,7,32
23183a608692SPiotr Kubaj	stvx	23,3,1
23193a608692SPiotr Kubaj	addi	3,3,32
23203a608692SPiotr Kubaj	stvx	24,7,1
23213a608692SPiotr Kubaj	addi	7,7,32
23223a608692SPiotr Kubaj	stvx	25,3,1
23233a608692SPiotr Kubaj	addi	3,3,32
23243a608692SPiotr Kubaj	stvx	26,7,1
23253a608692SPiotr Kubaj	addi	7,7,32
23263a608692SPiotr Kubaj	stvx	27,3,1
23273a608692SPiotr Kubaj	addi	3,3,32
23283a608692SPiotr Kubaj	stvx	28,7,1
23293a608692SPiotr Kubaj	addi	7,7,32
23303a608692SPiotr Kubaj	stvx	29,3,1
23313a608692SPiotr Kubaj	addi	3,3,32
23323a608692SPiotr Kubaj	stvx	30,7,1
23333a608692SPiotr Kubaj	stvx	31,3,1
23343a608692SPiotr Kubaj	li	0,-1
23353a608692SPiotr Kubaj	stw	12,364(1)
23363a608692SPiotr Kubaj	li	3,0x10
23373a608692SPiotr Kubaj	stw	26,368(1)
23383a608692SPiotr Kubaj	li	26,0x20
23393a608692SPiotr Kubaj	stw	27,372(1)
23403a608692SPiotr Kubaj	li	27,0x30
23413a608692SPiotr Kubaj	stw	28,376(1)
23423a608692SPiotr Kubaj	li	28,0x40
23433a608692SPiotr Kubaj	stw	29,380(1)
23443a608692SPiotr Kubaj	li	29,0x50
23453a608692SPiotr Kubaj	stw	30,384(1)
23463a608692SPiotr Kubaj	li	30,0x60
23473a608692SPiotr Kubaj	stw	31,388(1)
23483a608692SPiotr Kubaj	li	31,0x70
23493a608692SPiotr Kubaj	mtspr	256,0
23503a608692SPiotr Kubaj
2351*77864b54SEnji Cooper
2352*77864b54SEnji Cooper	xxlor	2, 32+10, 32+10
2353*77864b54SEnji Cooper	vsldoi	10,11,10,1
2354*77864b54SEnji Cooper	xxlor	1, 32+10, 32+10
2355*77864b54SEnji Cooper
2356*77864b54SEnji Cooper
2357*77864b54SEnji Cooper	mr	31, 6
2358*77864b54SEnji Cooper	bl	.Lconsts
2359*77864b54SEnji Cooper	lxvw4x	0, 28, 6
2360*77864b54SEnji Cooper	mr	6, 31
2361*77864b54SEnji Cooper	li	31,0x70
2362*77864b54SEnji Cooper
23633a608692SPiotr Kubaj	subi	9,9,3
23643a608692SPiotr Kubaj
23653a608692SPiotr Kubaj	lvx	23,0,6
23663a608692SPiotr Kubaj	lvx	30,3,6
23673a608692SPiotr Kubaj	addi	6,6,0x20
23683a608692SPiotr Kubaj	lvx	31,0,6
23693a608692SPiotr Kubaj	vperm	23,23,30,7
23703a608692SPiotr Kubaj	addi	7,1,32+15
23713a608692SPiotr Kubaj	mtctr	9
23723a608692SPiotr Kubaj
23733a608692SPiotr Kubaj.Load_xts_enc_key:
23743a608692SPiotr Kubaj	vperm	24,30,31,7
23753a608692SPiotr Kubaj	lvx	30,3,6
23763a608692SPiotr Kubaj	addi	6,6,0x20
23773a608692SPiotr Kubaj	stvx	24,0,7
23783a608692SPiotr Kubaj	vperm	25,31,30,7
23793a608692SPiotr Kubaj	lvx	31,0,6
23803a608692SPiotr Kubaj	stvx	25,3,7
23813a608692SPiotr Kubaj	addi	7,7,0x20
23823a608692SPiotr Kubaj	bdnz	.Load_xts_enc_key
23833a608692SPiotr Kubaj
23843a608692SPiotr Kubaj	lvx	26,3,6
23853a608692SPiotr Kubaj	vperm	24,30,31,7
23863a608692SPiotr Kubaj	lvx	27,26,6
23873a608692SPiotr Kubaj	stvx	24,0,7
23883a608692SPiotr Kubaj	vperm	25,31,26,7
23893a608692SPiotr Kubaj	lvx	28,27,6
23903a608692SPiotr Kubaj	stvx	25,3,7
23913a608692SPiotr Kubaj	addi	7,1,32+15
23923a608692SPiotr Kubaj	vperm	26,26,27,7
23933a608692SPiotr Kubaj	lvx	29,28,6
23943a608692SPiotr Kubaj	vperm	27,27,28,7
23953a608692SPiotr Kubaj	lvx	30,29,6
23963a608692SPiotr Kubaj	vperm	28,28,29,7
23973a608692SPiotr Kubaj	lvx	31,30,6
23983a608692SPiotr Kubaj	vperm	29,29,30,7
23993a608692SPiotr Kubaj	lvx	22,31,6
24003a608692SPiotr Kubaj	vperm	30,30,31,7
24013a608692SPiotr Kubaj	lvx	24,0,7
24023a608692SPiotr Kubaj	vperm	31,31,22,7
24033a608692SPiotr Kubaj	lvx	25,3,7
24043a608692SPiotr Kubaj
2405*77864b54SEnji Cooper
2406*77864b54SEnji Cooper
2407*77864b54SEnji Cooper
2408*77864b54SEnji Cooper
2409*77864b54SEnji Cooper
2410*77864b54SEnji Cooper
2411*77864b54SEnji Cooper
2412*77864b54SEnji Cooper
24133a608692SPiotr Kubaj	vperm	0,2,4,5
24143a608692SPiotr Kubaj	subi	10,10,31
24153a608692SPiotr Kubaj	vxor	17,8,23
24163a608692SPiotr Kubaj	vsrab	11,8,9
24173a608692SPiotr Kubaj	vaddubm	8,8,8
24183a608692SPiotr Kubaj	vand	11,11,10
24193a608692SPiotr Kubaj	vxor	7,0,17
2420*77864b54SEnji Cooper	xxlor	32+1, 0, 0
2421*77864b54SEnji Cooper	vpermxor	8, 8, 11, 1
24223a608692SPiotr Kubaj
24233a608692SPiotr Kubaj	.long	0x7C235699
24243a608692SPiotr Kubaj	vxor	18,8,23
24253a608692SPiotr Kubaj	vsrab	11,8,9
24263a608692SPiotr Kubaj	vaddubm	8,8,8
24273a608692SPiotr Kubaj
24283a608692SPiotr Kubaj	vand	11,11,10
24293a608692SPiotr Kubaj	vxor	12,1,18
2430*77864b54SEnji Cooper	xxlor	32+2, 0, 0
2431*77864b54SEnji Cooper	vpermxor	8, 8, 11, 2
24323a608692SPiotr Kubaj
24333a608692SPiotr Kubaj	.long	0x7C5A5699
24343a608692SPiotr Kubaj	andi.	31,5,15
24353a608692SPiotr Kubaj	vxor	19,8,23
24363a608692SPiotr Kubaj	vsrab	11,8,9
24373a608692SPiotr Kubaj	vaddubm	8,8,8
24383a608692SPiotr Kubaj
24393a608692SPiotr Kubaj	vand	11,11,10
24403a608692SPiotr Kubaj	vxor	13,2,19
2441*77864b54SEnji Cooper	xxlor	32+3, 0, 0
2442*77864b54SEnji Cooper	vpermxor	8, 8, 11, 3
24433a608692SPiotr Kubaj
24443a608692SPiotr Kubaj	.long	0x7C7B5699
24453a608692SPiotr Kubaj	sub	5,5,31
24463a608692SPiotr Kubaj	vxor	20,8,23
24473a608692SPiotr Kubaj	vsrab	11,8,9
24483a608692SPiotr Kubaj	vaddubm	8,8,8
24493a608692SPiotr Kubaj
24503a608692SPiotr Kubaj	vand	11,11,10
24513a608692SPiotr Kubaj	vxor	14,3,20
2452*77864b54SEnji Cooper	xxlor	32+4, 0, 0
2453*77864b54SEnji Cooper	vpermxor	8, 8, 11, 4
24543a608692SPiotr Kubaj
24553a608692SPiotr Kubaj	.long	0x7C9C5699
24563a608692SPiotr Kubaj	subi	5,5,0x60
24573a608692SPiotr Kubaj	vxor	21,8,23
24583a608692SPiotr Kubaj	vsrab	11,8,9
24593a608692SPiotr Kubaj	vaddubm	8,8,8
24603a608692SPiotr Kubaj
24613a608692SPiotr Kubaj	vand	11,11,10
24623a608692SPiotr Kubaj	vxor	15,4,21
2463*77864b54SEnji Cooper	xxlor	32+5, 0, 0
2464*77864b54SEnji Cooper	vpermxor	8, 8, 11, 5
24653a608692SPiotr Kubaj
24663a608692SPiotr Kubaj	.long	0x7CBD5699
24673a608692SPiotr Kubaj	addi	10,10,0x60
24683a608692SPiotr Kubaj	vxor	22,8,23
24693a608692SPiotr Kubaj	vsrab	11,8,9
24703a608692SPiotr Kubaj	vaddubm	8,8,8
24713a608692SPiotr Kubaj
24723a608692SPiotr Kubaj	vand	11,11,10
24733a608692SPiotr Kubaj	vxor	16,5,22
2474*77864b54SEnji Cooper	xxlor	32+0, 0, 0
2475*77864b54SEnji Cooper	vpermxor	8, 8, 11, 0
24763a608692SPiotr Kubaj
24773a608692SPiotr Kubaj	vxor	31,31,23
24783a608692SPiotr Kubaj	mtctr	9
24793a608692SPiotr Kubaj	b	.Loop_xts_enc6x
24803a608692SPiotr Kubaj
24813a608692SPiotr Kubaj.align	5
24823a608692SPiotr Kubaj.Loop_xts_enc6x:
24833a608692SPiotr Kubaj	.long	0x10E7C508
24843a608692SPiotr Kubaj	.long	0x118CC508
24853a608692SPiotr Kubaj	.long	0x11ADC508
24863a608692SPiotr Kubaj	.long	0x11CEC508
24873a608692SPiotr Kubaj	.long	0x11EFC508
24883a608692SPiotr Kubaj	.long	0x1210C508
24893a608692SPiotr Kubaj	lvx	24,26,7
24903a608692SPiotr Kubaj	addi	7,7,0x20
24913a608692SPiotr Kubaj
24923a608692SPiotr Kubaj	.long	0x10E7CD08
24933a608692SPiotr Kubaj	.long	0x118CCD08
24943a608692SPiotr Kubaj	.long	0x11ADCD08
24953a608692SPiotr Kubaj	.long	0x11CECD08
24963a608692SPiotr Kubaj	.long	0x11EFCD08
24973a608692SPiotr Kubaj	.long	0x1210CD08
24983a608692SPiotr Kubaj	lvx	25,3,7
24993a608692SPiotr Kubaj	bdnz	.Loop_xts_enc6x
25003a608692SPiotr Kubaj
2501*77864b54SEnji Cooper	xxlor	32+10, 1, 1
2502*77864b54SEnji Cooper
25033a608692SPiotr Kubaj	subic	5,5,96
25043a608692SPiotr Kubaj	vxor	0,17,31
25053a608692SPiotr Kubaj	.long	0x10E7C508
25063a608692SPiotr Kubaj	.long	0x118CC508
25073a608692SPiotr Kubaj	vsrab	11,8,9
25083a608692SPiotr Kubaj	vxor	17,8,23
25093a608692SPiotr Kubaj	vaddubm	8,8,8
25103a608692SPiotr Kubaj	.long	0x11ADC508
25113a608692SPiotr Kubaj	.long	0x11CEC508
25123a608692SPiotr Kubaj	.long	0x11EFC508
25133a608692SPiotr Kubaj	.long	0x1210C508
25143a608692SPiotr Kubaj
25153a608692SPiotr Kubaj	subfe.	0,0,0
25163a608692SPiotr Kubaj	vand	11,11,10
25173a608692SPiotr Kubaj	.long	0x10E7CD08
25183a608692SPiotr Kubaj	.long	0x118CCD08
2519*77864b54SEnji Cooper	xxlor	32+1, 0, 0
2520*77864b54SEnji Cooper	vpermxor	8, 8, 11, 1
25213a608692SPiotr Kubaj	.long	0x11ADCD08
25223a608692SPiotr Kubaj	.long	0x11CECD08
25233a608692SPiotr Kubaj	vxor	1,18,31
25243a608692SPiotr Kubaj	vsrab	11,8,9
25253a608692SPiotr Kubaj	vxor	18,8,23
25263a608692SPiotr Kubaj	.long	0x11EFCD08
25273a608692SPiotr Kubaj	.long	0x1210CD08
25283a608692SPiotr Kubaj
25293a608692SPiotr Kubaj	and	0,0,5
25303a608692SPiotr Kubaj	vaddubm	8,8,8
25313a608692SPiotr Kubaj	.long	0x10E7D508
25323a608692SPiotr Kubaj	.long	0x118CD508
25333a608692SPiotr Kubaj	vand	11,11,10
25343a608692SPiotr Kubaj	.long	0x11ADD508
25353a608692SPiotr Kubaj	.long	0x11CED508
2536*77864b54SEnji Cooper	xxlor	32+2, 0, 0
2537*77864b54SEnji Cooper	vpermxor	8, 8, 11, 2
25383a608692SPiotr Kubaj	.long	0x11EFD508
25393a608692SPiotr Kubaj	.long	0x1210D508
25403a608692SPiotr Kubaj
25413a608692SPiotr Kubaj	add	10,10,0
25423a608692SPiotr Kubaj
25433a608692SPiotr Kubaj
25443a608692SPiotr Kubaj
25453a608692SPiotr Kubaj	vxor	2,19,31
25463a608692SPiotr Kubaj	vsrab	11,8,9
25473a608692SPiotr Kubaj	vxor	19,8,23
25483a608692SPiotr Kubaj	vaddubm	8,8,8
25493a608692SPiotr Kubaj	.long	0x10E7DD08
25503a608692SPiotr Kubaj	.long	0x118CDD08
25513a608692SPiotr Kubaj	.long	0x11ADDD08
25523a608692SPiotr Kubaj	.long	0x11CEDD08
25533a608692SPiotr Kubaj	vand	11,11,10
25543a608692SPiotr Kubaj	.long	0x11EFDD08
25553a608692SPiotr Kubaj	.long	0x1210DD08
25563a608692SPiotr Kubaj
25573a608692SPiotr Kubaj	addi	7,1,32+15
2558*77864b54SEnji Cooper	xxlor	32+3, 0, 0
2559*77864b54SEnji Cooper	vpermxor	8, 8, 11, 3
25603a608692SPiotr Kubaj	.long	0x10E7E508
25613a608692SPiotr Kubaj	.long	0x118CE508
25623a608692SPiotr Kubaj	vxor	3,20,31
25633a608692SPiotr Kubaj	vsrab	11,8,9
25643a608692SPiotr Kubaj	vxor	20,8,23
25653a608692SPiotr Kubaj	.long	0x11ADE508
25663a608692SPiotr Kubaj	.long	0x11CEE508
25673a608692SPiotr Kubaj	vaddubm	8,8,8
25683a608692SPiotr Kubaj	.long	0x11EFE508
25693a608692SPiotr Kubaj	.long	0x1210E508
25703a608692SPiotr Kubaj	lvx	24,0,7
25713a608692SPiotr Kubaj	vand	11,11,10
25723a608692SPiotr Kubaj
25733a608692SPiotr Kubaj	.long	0x10E7ED08
25743a608692SPiotr Kubaj	.long	0x118CED08
2575*77864b54SEnji Cooper	xxlor	32+4, 0, 0
2576*77864b54SEnji Cooper	vpermxor	8, 8, 11, 4
25773a608692SPiotr Kubaj	.long	0x11ADED08
25783a608692SPiotr Kubaj	.long	0x11CEED08
25793a608692SPiotr Kubaj	vxor	4,21,31
25803a608692SPiotr Kubaj	vsrab	11,8,9
25813a608692SPiotr Kubaj	vxor	21,8,23
25823a608692SPiotr Kubaj	.long	0x11EFED08
25833a608692SPiotr Kubaj	.long	0x1210ED08
25843a608692SPiotr Kubaj	lvx	25,3,7
25853a608692SPiotr Kubaj	vaddubm	8,8,8
25863a608692SPiotr Kubaj
25873a608692SPiotr Kubaj	.long	0x10E7F508
25883a608692SPiotr Kubaj	.long	0x118CF508
25893a608692SPiotr Kubaj	vand	11,11,10
25903a608692SPiotr Kubaj	.long	0x11ADF508
25913a608692SPiotr Kubaj	.long	0x11CEF508
2592*77864b54SEnji Cooper	xxlor	32+5, 0, 0
2593*77864b54SEnji Cooper	vpermxor	8, 8, 11, 5
25943a608692SPiotr Kubaj	.long	0x11EFF508
25953a608692SPiotr Kubaj	.long	0x1210F508
25963a608692SPiotr Kubaj	vxor	5,22,31
25973a608692SPiotr Kubaj	vsrab	11,8,9
25983a608692SPiotr Kubaj	vxor	22,8,23
25993a608692SPiotr Kubaj
26003a608692SPiotr Kubaj	.long	0x10E70509
26013a608692SPiotr Kubaj	.long	0x7C005699
26023a608692SPiotr Kubaj	vaddubm	8,8,8
26033a608692SPiotr Kubaj	.long	0x118C0D09
26043a608692SPiotr Kubaj	.long	0x7C235699
26053a608692SPiotr Kubaj	.long	0x11AD1509
26063a608692SPiotr Kubaj
26073a608692SPiotr Kubaj	.long	0x7C5A5699
26083a608692SPiotr Kubaj	vand	11,11,10
26093a608692SPiotr Kubaj	.long	0x11CE1D09
26103a608692SPiotr Kubaj
26113a608692SPiotr Kubaj	.long	0x7C7B5699
26123a608692SPiotr Kubaj	.long	0x11EF2509
26133a608692SPiotr Kubaj
26143a608692SPiotr Kubaj	.long	0x7C9C5699
2615*77864b54SEnji Cooper	xxlor	10, 32+0, 32+0
2616*77864b54SEnji Cooper	xxlor	32+0, 0, 0
2617*77864b54SEnji Cooper	vpermxor	8, 8, 11, 0
2618*77864b54SEnji Cooper	xxlor	32+0, 10, 10
26193a608692SPiotr Kubaj	.long	0x11702D09
26203a608692SPiotr Kubaj
26213a608692SPiotr Kubaj
26223a608692SPiotr Kubaj	.long	0x7CBD5699
26233a608692SPiotr Kubaj	addi	10,10,0x60
26243a608692SPiotr Kubaj
26253a608692SPiotr Kubaj
26263a608692SPiotr Kubaj
26273a608692SPiotr Kubaj
26283a608692SPiotr Kubaj
26293a608692SPiotr Kubaj	.long	0x7CE02799
26303a608692SPiotr Kubaj	vxor	7,0,17
26313a608692SPiotr Kubaj
26323a608692SPiotr Kubaj	.long	0x7D832799
26333a608692SPiotr Kubaj	vxor	12,1,18
26343a608692SPiotr Kubaj
26353a608692SPiotr Kubaj	.long	0x7DBA2799
26363a608692SPiotr Kubaj	vxor	13,2,19
26373a608692SPiotr Kubaj
26383a608692SPiotr Kubaj	.long	0x7DDB2799
26393a608692SPiotr Kubaj	vxor	14,3,20
26403a608692SPiotr Kubaj
26413a608692SPiotr Kubaj	.long	0x7DFC2799
26423a608692SPiotr Kubaj	vxor	15,4,21
26433a608692SPiotr Kubaj
26443a608692SPiotr Kubaj	.long	0x7D7D2799
26453a608692SPiotr Kubaj	vxor	16,5,22
26463a608692SPiotr Kubaj	addi	4,4,0x60
26473a608692SPiotr Kubaj
26483a608692SPiotr Kubaj	mtctr	9
26493a608692SPiotr Kubaj	beq	.Loop_xts_enc6x
26503a608692SPiotr Kubaj
2651*77864b54SEnji Cooper	xxlor	32+10, 2, 2
2652*77864b54SEnji Cooper
26533a608692SPiotr Kubaj	addic.	5,5,0x60
26543a608692SPiotr Kubaj	beq	.Lxts_enc6x_zero
26553a608692SPiotr Kubaj	cmpwi	5,0x20
26563a608692SPiotr Kubaj	blt	.Lxts_enc6x_one
26573a608692SPiotr Kubaj	nop
26583a608692SPiotr Kubaj	beq	.Lxts_enc6x_two
26593a608692SPiotr Kubaj	cmpwi	5,0x40
26603a608692SPiotr Kubaj	blt	.Lxts_enc6x_three
26613a608692SPiotr Kubaj	nop
26623a608692SPiotr Kubaj	beq	.Lxts_enc6x_four
26633a608692SPiotr Kubaj
26643a608692SPiotr Kubaj.Lxts_enc6x_five:
26653a608692SPiotr Kubaj	vxor	7,1,17
26663a608692SPiotr Kubaj	vxor	12,2,18
26673a608692SPiotr Kubaj	vxor	13,3,19
26683a608692SPiotr Kubaj	vxor	14,4,20
26693a608692SPiotr Kubaj	vxor	15,5,21
26703a608692SPiotr Kubaj
26713a608692SPiotr Kubaj	bl	_aesp8_xts_enc5x
26723a608692SPiotr Kubaj
26733a608692SPiotr Kubaj
26743a608692SPiotr Kubaj	vor	17,22,22
26753a608692SPiotr Kubaj
26763a608692SPiotr Kubaj	.long	0x7CE02799
26773a608692SPiotr Kubaj
26783a608692SPiotr Kubaj	.long	0x7D832799
26793a608692SPiotr Kubaj
26803a608692SPiotr Kubaj	.long	0x7DBA2799
26813a608692SPiotr Kubaj	vxor	11,15,22
26823a608692SPiotr Kubaj
26833a608692SPiotr Kubaj	.long	0x7DDB2799
26843a608692SPiotr Kubaj	.long	0x7DFC2799
26853a608692SPiotr Kubaj	addi	4,4,0x50
26863a608692SPiotr Kubaj	bne	.Lxts_enc6x_steal
26873a608692SPiotr Kubaj	b	.Lxts_enc6x_done
26883a608692SPiotr Kubaj
26893a608692SPiotr Kubaj.align	4
26903a608692SPiotr Kubaj.Lxts_enc6x_four:
26913a608692SPiotr Kubaj	vxor	7,2,17
26923a608692SPiotr Kubaj	vxor	12,3,18
26933a608692SPiotr Kubaj	vxor	13,4,19
26943a608692SPiotr Kubaj	vxor	14,5,20
26953a608692SPiotr Kubaj	vxor	15,15,15
26963a608692SPiotr Kubaj
26973a608692SPiotr Kubaj	bl	_aesp8_xts_enc5x
26983a608692SPiotr Kubaj
26993a608692SPiotr Kubaj
27003a608692SPiotr Kubaj	vor	17,21,21
27013a608692SPiotr Kubaj
27023a608692SPiotr Kubaj	.long	0x7CE02799
27033a608692SPiotr Kubaj
27043a608692SPiotr Kubaj	.long	0x7D832799
27053a608692SPiotr Kubaj	vxor	11,14,21
27063a608692SPiotr Kubaj
27073a608692SPiotr Kubaj	.long	0x7DBA2799
27083a608692SPiotr Kubaj	.long	0x7DDB2799
27093a608692SPiotr Kubaj	addi	4,4,0x40
27103a608692SPiotr Kubaj	bne	.Lxts_enc6x_steal
27113a608692SPiotr Kubaj	b	.Lxts_enc6x_done
27123a608692SPiotr Kubaj
27133a608692SPiotr Kubaj.align	4
27143a608692SPiotr Kubaj.Lxts_enc6x_three:
27153a608692SPiotr Kubaj	vxor	7,3,17
27163a608692SPiotr Kubaj	vxor	12,4,18
27173a608692SPiotr Kubaj	vxor	13,5,19
27183a608692SPiotr Kubaj	vxor	14,14,14
27193a608692SPiotr Kubaj	vxor	15,15,15
27203a608692SPiotr Kubaj
27213a608692SPiotr Kubaj	bl	_aesp8_xts_enc5x
27223a608692SPiotr Kubaj
27233a608692SPiotr Kubaj
27243a608692SPiotr Kubaj	vor	17,20,20
27253a608692SPiotr Kubaj
27263a608692SPiotr Kubaj	.long	0x7CE02799
27273a608692SPiotr Kubaj	vxor	11,13,20
27283a608692SPiotr Kubaj
27293a608692SPiotr Kubaj	.long	0x7D832799
27303a608692SPiotr Kubaj	.long	0x7DBA2799
27313a608692SPiotr Kubaj	addi	4,4,0x30
27323a608692SPiotr Kubaj	bne	.Lxts_enc6x_steal
27333a608692SPiotr Kubaj	b	.Lxts_enc6x_done
27343a608692SPiotr Kubaj
27353a608692SPiotr Kubaj.align	4
27363a608692SPiotr Kubaj.Lxts_enc6x_two:
27373a608692SPiotr Kubaj	vxor	7,4,17
27383a608692SPiotr Kubaj	vxor	12,5,18
27393a608692SPiotr Kubaj	vxor	13,13,13
27403a608692SPiotr Kubaj	vxor	14,14,14
27413a608692SPiotr Kubaj	vxor	15,15,15
27423a608692SPiotr Kubaj
27433a608692SPiotr Kubaj	bl	_aesp8_xts_enc5x
27443a608692SPiotr Kubaj
27453a608692SPiotr Kubaj
27463a608692SPiotr Kubaj	vor	17,19,19
27473a608692SPiotr Kubaj	vxor	11,12,19
27483a608692SPiotr Kubaj
27493a608692SPiotr Kubaj	.long	0x7CE02799
27503a608692SPiotr Kubaj	.long	0x7D832799
27513a608692SPiotr Kubaj	addi	4,4,0x20
27523a608692SPiotr Kubaj	bne	.Lxts_enc6x_steal
27533a608692SPiotr Kubaj	b	.Lxts_enc6x_done
27543a608692SPiotr Kubaj
27553a608692SPiotr Kubaj.align	4
27563a608692SPiotr Kubaj.Lxts_enc6x_one:
27573a608692SPiotr Kubaj	vxor	7,5,17
27583a608692SPiotr Kubaj	nop
27593a608692SPiotr Kubaj.Loop_xts_enc1x:
27603a608692SPiotr Kubaj	.long	0x10E7C508
27613a608692SPiotr Kubaj	lvx	24,26,7
27623a608692SPiotr Kubaj	addi	7,7,0x20
27633a608692SPiotr Kubaj
27643a608692SPiotr Kubaj	.long	0x10E7CD08
27653a608692SPiotr Kubaj	lvx	25,3,7
27663a608692SPiotr Kubaj	bdnz	.Loop_xts_enc1x
27673a608692SPiotr Kubaj
27683a608692SPiotr Kubaj	add	10,10,31
27693a608692SPiotr Kubaj	cmpwi	31,0
27703a608692SPiotr Kubaj	.long	0x10E7C508
27713a608692SPiotr Kubaj
27723a608692SPiotr Kubaj	subi	10,10,16
27733a608692SPiotr Kubaj	.long	0x10E7CD08
27743a608692SPiotr Kubaj
27753a608692SPiotr Kubaj	lvsr	5,0,31
27763a608692SPiotr Kubaj	.long	0x10E7D508
27773a608692SPiotr Kubaj
27783a608692SPiotr Kubaj	.long	0x7C005699
27793a608692SPiotr Kubaj	.long	0x10E7DD08
27803a608692SPiotr Kubaj
27813a608692SPiotr Kubaj	addi	7,1,32+15
27823a608692SPiotr Kubaj	.long	0x10E7E508
27833a608692SPiotr Kubaj	lvx	24,0,7
27843a608692SPiotr Kubaj
27853a608692SPiotr Kubaj	.long	0x10E7ED08
27863a608692SPiotr Kubaj	lvx	25,3,7
27873a608692SPiotr Kubaj	vxor	17,17,31
27883a608692SPiotr Kubaj
27893a608692SPiotr Kubaj
27903a608692SPiotr Kubaj	.long	0x10E7F508
27913a608692SPiotr Kubaj
27923a608692SPiotr Kubaj	vperm	0,0,0,5
27933a608692SPiotr Kubaj	.long	0x10E78D09
27943a608692SPiotr Kubaj
27953a608692SPiotr Kubaj	vor	17,18,18
27963a608692SPiotr Kubaj	vxor	11,7,18
27973a608692SPiotr Kubaj
27983a608692SPiotr Kubaj	.long	0x7CE02799
27993a608692SPiotr Kubaj	addi	4,4,0x10
28003a608692SPiotr Kubaj	bne	.Lxts_enc6x_steal
28013a608692SPiotr Kubaj	b	.Lxts_enc6x_done
28023a608692SPiotr Kubaj
28033a608692SPiotr Kubaj.align	4
28043a608692SPiotr Kubaj.Lxts_enc6x_zero:
28053a608692SPiotr Kubaj	cmpwi	31,0
28063a608692SPiotr Kubaj	beq	.Lxts_enc6x_done
28073a608692SPiotr Kubaj
28083a608692SPiotr Kubaj	add	10,10,31
28093a608692SPiotr Kubaj	subi	10,10,16
28103a608692SPiotr Kubaj	.long	0x7C005699
28113a608692SPiotr Kubaj	lvsr	5,0,31
28123a608692SPiotr Kubaj
28133a608692SPiotr Kubaj	vperm	0,0,0,5
28143a608692SPiotr Kubaj	vxor	11,11,17
28153a608692SPiotr Kubaj.Lxts_enc6x_steal:
28163a608692SPiotr Kubaj	vxor	0,0,17
28173a608692SPiotr Kubaj	vxor	7,7,7
28183a608692SPiotr Kubaj	vspltisb	12,-1
28193a608692SPiotr Kubaj	vperm	7,7,12,5
28203a608692SPiotr Kubaj	vsel	7,0,11,7
28213a608692SPiotr Kubaj
28223a608692SPiotr Kubaj	subi	30,4,17
28233a608692SPiotr Kubaj	subi	4,4,16
28243a608692SPiotr Kubaj	mtctr	31
28253a608692SPiotr Kubaj.Loop_xts_enc6x_steal:
28263a608692SPiotr Kubaj	lbzu	0,1(30)
28273a608692SPiotr Kubaj	stb	0,16(30)
28283a608692SPiotr Kubaj	bdnz	.Loop_xts_enc6x_steal
28293a608692SPiotr Kubaj
28303a608692SPiotr Kubaj	li	31,0
28313a608692SPiotr Kubaj	mtctr	9
28323a608692SPiotr Kubaj	b	.Loop_xts_enc1x
28333a608692SPiotr Kubaj
28343a608692SPiotr Kubaj.align	4
28353a608692SPiotr Kubaj.Lxts_enc6x_done:
28363a608692SPiotr Kubaj	cmplwi	8,0
28373a608692SPiotr Kubaj	beq	.Lxts_enc6x_ret
28383a608692SPiotr Kubaj
28393a608692SPiotr Kubaj	vxor	8,17,23
28403a608692SPiotr Kubaj
28413a608692SPiotr Kubaj	.long	0x7D004799
28423a608692SPiotr Kubaj
28433a608692SPiotr Kubaj.Lxts_enc6x_ret:
28443a608692SPiotr Kubaj	mtlr	11
28453a608692SPiotr Kubaj	li	10,47
28463a608692SPiotr Kubaj	li	11,63
28473a608692SPiotr Kubaj	stvx	9,10,1
28483a608692SPiotr Kubaj	addi	10,10,32
28493a608692SPiotr Kubaj	stvx	9,11,1
28503a608692SPiotr Kubaj	addi	11,11,32
28513a608692SPiotr Kubaj	stvx	9,10,1
28523a608692SPiotr Kubaj	addi	10,10,32
28533a608692SPiotr Kubaj	stvx	9,11,1
28543a608692SPiotr Kubaj	addi	11,11,32
28553a608692SPiotr Kubaj	stvx	9,10,1
28563a608692SPiotr Kubaj	addi	10,10,32
28573a608692SPiotr Kubaj	stvx	9,11,1
28583a608692SPiotr Kubaj	addi	11,11,32
28593a608692SPiotr Kubaj	stvx	9,10,1
28603a608692SPiotr Kubaj	addi	10,10,32
28613a608692SPiotr Kubaj	stvx	9,11,1
28623a608692SPiotr Kubaj	addi	11,11,32
28633a608692SPiotr Kubaj
28643a608692SPiotr Kubaj	mtspr	256,12
28653a608692SPiotr Kubaj	lvx	20,10,1
28663a608692SPiotr Kubaj	addi	10,10,32
28673a608692SPiotr Kubaj	lvx	21,11,1
28683a608692SPiotr Kubaj	addi	11,11,32
28693a608692SPiotr Kubaj	lvx	22,10,1
28703a608692SPiotr Kubaj	addi	10,10,32
28713a608692SPiotr Kubaj	lvx	23,11,1
28723a608692SPiotr Kubaj	addi	11,11,32
28733a608692SPiotr Kubaj	lvx	24,10,1
28743a608692SPiotr Kubaj	addi	10,10,32
28753a608692SPiotr Kubaj	lvx	25,11,1
28763a608692SPiotr Kubaj	addi	11,11,32
28773a608692SPiotr Kubaj	lvx	26,10,1
28783a608692SPiotr Kubaj	addi	10,10,32
28793a608692SPiotr Kubaj	lvx	27,11,1
28803a608692SPiotr Kubaj	addi	11,11,32
28813a608692SPiotr Kubaj	lvx	28,10,1
28823a608692SPiotr Kubaj	addi	10,10,32
28833a608692SPiotr Kubaj	lvx	29,11,1
28843a608692SPiotr Kubaj	addi	11,11,32
28853a608692SPiotr Kubaj	lvx	30,10,1
28863a608692SPiotr Kubaj	lvx	31,11,1
28873a608692SPiotr Kubaj	lwz	26,368(1)
28883a608692SPiotr Kubaj	lwz	27,372(1)
28893a608692SPiotr Kubaj	lwz	28,376(1)
28903a608692SPiotr Kubaj	lwz	29,380(1)
28913a608692SPiotr Kubaj	lwz	30,384(1)
28923a608692SPiotr Kubaj	lwz	31,388(1)
28933a608692SPiotr Kubaj	addi	1,1,392
28943a608692SPiotr Kubaj	blr
28953a608692SPiotr Kubaj.long	0
28963a608692SPiotr Kubaj.byte	0,12,0x04,1,0x80,6,6,0
28973a608692SPiotr Kubaj.long	0
28983a608692SPiotr Kubaj
28993a608692SPiotr Kubaj.align	5
29003a608692SPiotr Kubaj_aesp8_xts_enc5x:
29013a608692SPiotr Kubaj	.long	0x10E7C508
29023a608692SPiotr Kubaj	.long	0x118CC508
29033a608692SPiotr Kubaj	.long	0x11ADC508
29043a608692SPiotr Kubaj	.long	0x11CEC508
29053a608692SPiotr Kubaj	.long	0x11EFC508
29063a608692SPiotr Kubaj	lvx	24,26,7
29073a608692SPiotr Kubaj	addi	7,7,0x20
29083a608692SPiotr Kubaj
29093a608692SPiotr Kubaj	.long	0x10E7CD08
29103a608692SPiotr Kubaj	.long	0x118CCD08
29113a608692SPiotr Kubaj	.long	0x11ADCD08
29123a608692SPiotr Kubaj	.long	0x11CECD08
29133a608692SPiotr Kubaj	.long	0x11EFCD08
29143a608692SPiotr Kubaj	lvx	25,3,7
29153a608692SPiotr Kubaj	bdnz	_aesp8_xts_enc5x
29163a608692SPiotr Kubaj
29173a608692SPiotr Kubaj	add	10,10,31
29183a608692SPiotr Kubaj	cmpwi	31,0
29193a608692SPiotr Kubaj	.long	0x10E7C508
29203a608692SPiotr Kubaj	.long	0x118CC508
29213a608692SPiotr Kubaj	.long	0x11ADC508
29223a608692SPiotr Kubaj	.long	0x11CEC508
29233a608692SPiotr Kubaj	.long	0x11EFC508
29243a608692SPiotr Kubaj
29253a608692SPiotr Kubaj	subi	10,10,16
29263a608692SPiotr Kubaj	.long	0x10E7CD08
29273a608692SPiotr Kubaj	.long	0x118CCD08
29283a608692SPiotr Kubaj	.long	0x11ADCD08
29293a608692SPiotr Kubaj	.long	0x11CECD08
29303a608692SPiotr Kubaj	.long	0x11EFCD08
29313a608692SPiotr Kubaj	vxor	17,17,31
29323a608692SPiotr Kubaj
29333a608692SPiotr Kubaj	.long	0x10E7D508
29343a608692SPiotr Kubaj	lvsr	5,0,31
29353a608692SPiotr Kubaj	.long	0x118CD508
29363a608692SPiotr Kubaj	.long	0x11ADD508
29373a608692SPiotr Kubaj	.long	0x11CED508
29383a608692SPiotr Kubaj	.long	0x11EFD508
29393a608692SPiotr Kubaj	vxor	1,18,31
29403a608692SPiotr Kubaj
29413a608692SPiotr Kubaj	.long	0x10E7DD08
29423a608692SPiotr Kubaj	.long	0x7C005699
29433a608692SPiotr Kubaj	.long	0x118CDD08
29443a608692SPiotr Kubaj	.long	0x11ADDD08
29453a608692SPiotr Kubaj	.long	0x11CEDD08
29463a608692SPiotr Kubaj	.long	0x11EFDD08
29473a608692SPiotr Kubaj	vxor	2,19,31
29483a608692SPiotr Kubaj
29493a608692SPiotr Kubaj	addi	7,1,32+15
29503a608692SPiotr Kubaj	.long	0x10E7E508
29513a608692SPiotr Kubaj	.long	0x118CE508
29523a608692SPiotr Kubaj	.long	0x11ADE508
29533a608692SPiotr Kubaj	.long	0x11CEE508
29543a608692SPiotr Kubaj	.long	0x11EFE508
29553a608692SPiotr Kubaj	lvx	24,0,7
29563a608692SPiotr Kubaj	vxor	3,20,31
29573a608692SPiotr Kubaj
29583a608692SPiotr Kubaj	.long	0x10E7ED08
29593a608692SPiotr Kubaj
29603a608692SPiotr Kubaj	.long	0x118CED08
29613a608692SPiotr Kubaj	.long	0x11ADED08
29623a608692SPiotr Kubaj	.long	0x11CEED08
29633a608692SPiotr Kubaj	.long	0x11EFED08
29643a608692SPiotr Kubaj	lvx	25,3,7
29653a608692SPiotr Kubaj	vxor	4,21,31
29663a608692SPiotr Kubaj
29673a608692SPiotr Kubaj	.long	0x10E7F508
29683a608692SPiotr Kubaj	vperm	0,0,0,5
29693a608692SPiotr Kubaj	.long	0x118CF508
29703a608692SPiotr Kubaj	.long	0x11ADF508
29713a608692SPiotr Kubaj	.long	0x11CEF508
29723a608692SPiotr Kubaj	.long	0x11EFF508
29733a608692SPiotr Kubaj
29743a608692SPiotr Kubaj	.long	0x10E78D09
29753a608692SPiotr Kubaj	.long	0x118C0D09
29763a608692SPiotr Kubaj	.long	0x11AD1509
29773a608692SPiotr Kubaj	.long	0x11CE1D09
29783a608692SPiotr Kubaj	.long	0x11EF2509
29793a608692SPiotr Kubaj	blr
29803a608692SPiotr Kubaj.long	0
29813a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,0,0
29823a608692SPiotr Kubaj
29833a608692SPiotr Kubaj.align	5
29843a608692SPiotr Kubaj_aesp8_xts_decrypt6x:
29853a608692SPiotr Kubaj	stwu	1,-392(1)
29863a608692SPiotr Kubaj	mflr	11
29873a608692SPiotr Kubaj	li	7,175
29883a608692SPiotr Kubaj	li	3,191
29893a608692SPiotr Kubaj	stw	11,396(1)
29903a608692SPiotr Kubaj	stvx	20,7,1
29913a608692SPiotr Kubaj	addi	7,7,32
29923a608692SPiotr Kubaj	stvx	21,3,1
29933a608692SPiotr Kubaj	addi	3,3,32
29943a608692SPiotr Kubaj	stvx	22,7,1
29953a608692SPiotr Kubaj	addi	7,7,32
29963a608692SPiotr Kubaj	stvx	23,3,1
29973a608692SPiotr Kubaj	addi	3,3,32
29983a608692SPiotr Kubaj	stvx	24,7,1
29993a608692SPiotr Kubaj	addi	7,7,32
30003a608692SPiotr Kubaj	stvx	25,3,1
30013a608692SPiotr Kubaj	addi	3,3,32
30023a608692SPiotr Kubaj	stvx	26,7,1
30033a608692SPiotr Kubaj	addi	7,7,32
30043a608692SPiotr Kubaj	stvx	27,3,1
30053a608692SPiotr Kubaj	addi	3,3,32
30063a608692SPiotr Kubaj	stvx	28,7,1
30073a608692SPiotr Kubaj	addi	7,7,32
30083a608692SPiotr Kubaj	stvx	29,3,1
30093a608692SPiotr Kubaj	addi	3,3,32
30103a608692SPiotr Kubaj	stvx	30,7,1
30113a608692SPiotr Kubaj	stvx	31,3,1
30123a608692SPiotr Kubaj	li	0,-1
30133a608692SPiotr Kubaj	stw	12,364(1)
30143a608692SPiotr Kubaj	li	3,0x10
30153a608692SPiotr Kubaj	stw	26,368(1)
30163a608692SPiotr Kubaj	li	26,0x20
30173a608692SPiotr Kubaj	stw	27,372(1)
30183a608692SPiotr Kubaj	li	27,0x30
30193a608692SPiotr Kubaj	stw	28,376(1)
30203a608692SPiotr Kubaj	li	28,0x40
30213a608692SPiotr Kubaj	stw	29,380(1)
30223a608692SPiotr Kubaj	li	29,0x50
30233a608692SPiotr Kubaj	stw	30,384(1)
30243a608692SPiotr Kubaj	li	30,0x60
30253a608692SPiotr Kubaj	stw	31,388(1)
30263a608692SPiotr Kubaj	li	31,0x70
30273a608692SPiotr Kubaj	mtspr	256,0
30283a608692SPiotr Kubaj
3029*77864b54SEnji Cooper
3030*77864b54SEnji Cooper	xxlor	2, 32+10, 32+10
3031*77864b54SEnji Cooper	vsldoi	10,11,10,1
3032*77864b54SEnji Cooper	xxlor	1, 32+10, 32+10
3033*77864b54SEnji Cooper
3034*77864b54SEnji Cooper
3035*77864b54SEnji Cooper	mr	31, 6
3036*77864b54SEnji Cooper	bl	.Lconsts
3037*77864b54SEnji Cooper	lxvw4x	0, 28, 6
3038*77864b54SEnji Cooper	mr	6, 31
3039*77864b54SEnji Cooper	li	31,0x70
3040*77864b54SEnji Cooper
30413a608692SPiotr Kubaj	subi	9,9,3
30423a608692SPiotr Kubaj
30433a608692SPiotr Kubaj	lvx	23,0,6
30443a608692SPiotr Kubaj	lvx	30,3,6
30453a608692SPiotr Kubaj	addi	6,6,0x20
30463a608692SPiotr Kubaj	lvx	31,0,6
30473a608692SPiotr Kubaj	vperm	23,23,30,7
30483a608692SPiotr Kubaj	addi	7,1,32+15
30493a608692SPiotr Kubaj	mtctr	9
30503a608692SPiotr Kubaj
30513a608692SPiotr Kubaj.Load_xts_dec_key:
30523a608692SPiotr Kubaj	vperm	24,30,31,7
30533a608692SPiotr Kubaj	lvx	30,3,6
30543a608692SPiotr Kubaj	addi	6,6,0x20
30553a608692SPiotr Kubaj	stvx	24,0,7
30563a608692SPiotr Kubaj	vperm	25,31,30,7
30573a608692SPiotr Kubaj	lvx	31,0,6
30583a608692SPiotr Kubaj	stvx	25,3,7
30593a608692SPiotr Kubaj	addi	7,7,0x20
30603a608692SPiotr Kubaj	bdnz	.Load_xts_dec_key
30613a608692SPiotr Kubaj
30623a608692SPiotr Kubaj	lvx	26,3,6
30633a608692SPiotr Kubaj	vperm	24,30,31,7
30643a608692SPiotr Kubaj	lvx	27,26,6
30653a608692SPiotr Kubaj	stvx	24,0,7
30663a608692SPiotr Kubaj	vperm	25,31,26,7
30673a608692SPiotr Kubaj	lvx	28,27,6
30683a608692SPiotr Kubaj	stvx	25,3,7
30693a608692SPiotr Kubaj	addi	7,1,32+15
30703a608692SPiotr Kubaj	vperm	26,26,27,7
30713a608692SPiotr Kubaj	lvx	29,28,6
30723a608692SPiotr Kubaj	vperm	27,27,28,7
30733a608692SPiotr Kubaj	lvx	30,29,6
30743a608692SPiotr Kubaj	vperm	28,28,29,7
30753a608692SPiotr Kubaj	lvx	31,30,6
30763a608692SPiotr Kubaj	vperm	29,29,30,7
30773a608692SPiotr Kubaj	lvx	22,31,6
30783a608692SPiotr Kubaj	vperm	30,30,31,7
30793a608692SPiotr Kubaj	lvx	24,0,7
30803a608692SPiotr Kubaj	vperm	31,31,22,7
30813a608692SPiotr Kubaj	lvx	25,3,7
30823a608692SPiotr Kubaj
30833a608692SPiotr Kubaj	vperm	0,2,4,5
30843a608692SPiotr Kubaj	subi	10,10,31
30853a608692SPiotr Kubaj	vxor	17,8,23
30863a608692SPiotr Kubaj	vsrab	11,8,9
30873a608692SPiotr Kubaj	vaddubm	8,8,8
30883a608692SPiotr Kubaj	vand	11,11,10
30893a608692SPiotr Kubaj	vxor	7,0,17
3090*77864b54SEnji Cooper	xxlor	32+1, 0, 0
3091*77864b54SEnji Cooper	vpermxor	8, 8, 11, 1
30923a608692SPiotr Kubaj
30933a608692SPiotr Kubaj	.long	0x7C235699
30943a608692SPiotr Kubaj	vxor	18,8,23
30953a608692SPiotr Kubaj	vsrab	11,8,9
30963a608692SPiotr Kubaj	vaddubm	8,8,8
30973a608692SPiotr Kubaj
30983a608692SPiotr Kubaj	vand	11,11,10
30993a608692SPiotr Kubaj	vxor	12,1,18
3100*77864b54SEnji Cooper	xxlor	32+2, 0, 0
3101*77864b54SEnji Cooper	vpermxor	8, 8, 11, 2
31023a608692SPiotr Kubaj
31033a608692SPiotr Kubaj	.long	0x7C5A5699
31043a608692SPiotr Kubaj	andi.	31,5,15
31053a608692SPiotr Kubaj	vxor	19,8,23
31063a608692SPiotr Kubaj	vsrab	11,8,9
31073a608692SPiotr Kubaj	vaddubm	8,8,8
31083a608692SPiotr Kubaj
31093a608692SPiotr Kubaj	vand	11,11,10
31103a608692SPiotr Kubaj	vxor	13,2,19
3111*77864b54SEnji Cooper	xxlor	32+3, 0, 0
3112*77864b54SEnji Cooper	vpermxor	8, 8, 11, 3
31133a608692SPiotr Kubaj
31143a608692SPiotr Kubaj	.long	0x7C7B5699
31153a608692SPiotr Kubaj	sub	5,5,31
31163a608692SPiotr Kubaj	vxor	20,8,23
31173a608692SPiotr Kubaj	vsrab	11,8,9
31183a608692SPiotr Kubaj	vaddubm	8,8,8
31193a608692SPiotr Kubaj
31203a608692SPiotr Kubaj	vand	11,11,10
31213a608692SPiotr Kubaj	vxor	14,3,20
3122*77864b54SEnji Cooper	xxlor	32+4, 0, 0
3123*77864b54SEnji Cooper	vpermxor	8, 8, 11, 4
31243a608692SPiotr Kubaj
31253a608692SPiotr Kubaj	.long	0x7C9C5699
31263a608692SPiotr Kubaj	subi	5,5,0x60
31273a608692SPiotr Kubaj	vxor	21,8,23
31283a608692SPiotr Kubaj	vsrab	11,8,9
31293a608692SPiotr Kubaj	vaddubm	8,8,8
31303a608692SPiotr Kubaj
31313a608692SPiotr Kubaj	vand	11,11,10
31323a608692SPiotr Kubaj	vxor	15,4,21
3133*77864b54SEnji Cooper	xxlor	32+5, 0, 0
3134*77864b54SEnji Cooper	vpermxor	8, 8, 11, 5
31353a608692SPiotr Kubaj
31363a608692SPiotr Kubaj	.long	0x7CBD5699
31373a608692SPiotr Kubaj	addi	10,10,0x60
31383a608692SPiotr Kubaj	vxor	22,8,23
31393a608692SPiotr Kubaj	vsrab	11,8,9
31403a608692SPiotr Kubaj	vaddubm	8,8,8
31413a608692SPiotr Kubaj
31423a608692SPiotr Kubaj	vand	11,11,10
31433a608692SPiotr Kubaj	vxor	16,5,22
3144*77864b54SEnji Cooper	xxlor	32+0, 0, 0
3145*77864b54SEnji Cooper	vpermxor	8, 8, 11, 0
31463a608692SPiotr Kubaj
31473a608692SPiotr Kubaj	vxor	31,31,23
31483a608692SPiotr Kubaj	mtctr	9
31493a608692SPiotr Kubaj	b	.Loop_xts_dec6x
31503a608692SPiotr Kubaj
31513a608692SPiotr Kubaj.align	5
31523a608692SPiotr Kubaj.Loop_xts_dec6x:
31533a608692SPiotr Kubaj	.long	0x10E7C548
31543a608692SPiotr Kubaj	.long	0x118CC548
31553a608692SPiotr Kubaj	.long	0x11ADC548
31563a608692SPiotr Kubaj	.long	0x11CEC548
31573a608692SPiotr Kubaj	.long	0x11EFC548
31583a608692SPiotr Kubaj	.long	0x1210C548
31593a608692SPiotr Kubaj	lvx	24,26,7
31603a608692SPiotr Kubaj	addi	7,7,0x20
31613a608692SPiotr Kubaj
31623a608692SPiotr Kubaj	.long	0x10E7CD48
31633a608692SPiotr Kubaj	.long	0x118CCD48
31643a608692SPiotr Kubaj	.long	0x11ADCD48
31653a608692SPiotr Kubaj	.long	0x11CECD48
31663a608692SPiotr Kubaj	.long	0x11EFCD48
31673a608692SPiotr Kubaj	.long	0x1210CD48
31683a608692SPiotr Kubaj	lvx	25,3,7
31693a608692SPiotr Kubaj	bdnz	.Loop_xts_dec6x
31703a608692SPiotr Kubaj
3171*77864b54SEnji Cooper	xxlor	32+10, 1, 1
3172*77864b54SEnji Cooper
31733a608692SPiotr Kubaj	subic	5,5,96
31743a608692SPiotr Kubaj	vxor	0,17,31
31753a608692SPiotr Kubaj	.long	0x10E7C548
31763a608692SPiotr Kubaj	.long	0x118CC548
31773a608692SPiotr Kubaj	vsrab	11,8,9
31783a608692SPiotr Kubaj	vxor	17,8,23
31793a608692SPiotr Kubaj	vaddubm	8,8,8
31803a608692SPiotr Kubaj	.long	0x11ADC548
31813a608692SPiotr Kubaj	.long	0x11CEC548
31823a608692SPiotr Kubaj	.long	0x11EFC548
31833a608692SPiotr Kubaj	.long	0x1210C548
31843a608692SPiotr Kubaj
31853a608692SPiotr Kubaj	subfe.	0,0,0
31863a608692SPiotr Kubaj	vand	11,11,10
31873a608692SPiotr Kubaj	.long	0x10E7CD48
31883a608692SPiotr Kubaj	.long	0x118CCD48
3189*77864b54SEnji Cooper	xxlor	32+1, 0, 0
3190*77864b54SEnji Cooper	vpermxor	8, 8, 11, 1
31913a608692SPiotr Kubaj	.long	0x11ADCD48
31923a608692SPiotr Kubaj	.long	0x11CECD48
31933a608692SPiotr Kubaj	vxor	1,18,31
31943a608692SPiotr Kubaj	vsrab	11,8,9
31953a608692SPiotr Kubaj	vxor	18,8,23
31963a608692SPiotr Kubaj	.long	0x11EFCD48
31973a608692SPiotr Kubaj	.long	0x1210CD48
31983a608692SPiotr Kubaj
31993a608692SPiotr Kubaj	and	0,0,5
32003a608692SPiotr Kubaj	vaddubm	8,8,8
32013a608692SPiotr Kubaj	.long	0x10E7D548
32023a608692SPiotr Kubaj	.long	0x118CD548
32033a608692SPiotr Kubaj	vand	11,11,10
32043a608692SPiotr Kubaj	.long	0x11ADD548
32053a608692SPiotr Kubaj	.long	0x11CED548
3206*77864b54SEnji Cooper	xxlor	32+2, 0, 0
3207*77864b54SEnji Cooper	vpermxor	8, 8, 11, 2
32083a608692SPiotr Kubaj	.long	0x11EFD548
32093a608692SPiotr Kubaj	.long	0x1210D548
32103a608692SPiotr Kubaj
32113a608692SPiotr Kubaj	add	10,10,0
32123a608692SPiotr Kubaj
32133a608692SPiotr Kubaj
32143a608692SPiotr Kubaj
32153a608692SPiotr Kubaj	vxor	2,19,31
32163a608692SPiotr Kubaj	vsrab	11,8,9
32173a608692SPiotr Kubaj	vxor	19,8,23
32183a608692SPiotr Kubaj	vaddubm	8,8,8
32193a608692SPiotr Kubaj	.long	0x10E7DD48
32203a608692SPiotr Kubaj	.long	0x118CDD48
32213a608692SPiotr Kubaj	.long	0x11ADDD48
32223a608692SPiotr Kubaj	.long	0x11CEDD48
32233a608692SPiotr Kubaj	vand	11,11,10
32243a608692SPiotr Kubaj	.long	0x11EFDD48
32253a608692SPiotr Kubaj	.long	0x1210DD48
32263a608692SPiotr Kubaj
32273a608692SPiotr Kubaj	addi	7,1,32+15
3228*77864b54SEnji Cooper	xxlor	32+3, 0, 0
3229*77864b54SEnji Cooper	vpermxor	8, 8, 11, 3
32303a608692SPiotr Kubaj	.long	0x10E7E548
32313a608692SPiotr Kubaj	.long	0x118CE548
32323a608692SPiotr Kubaj	vxor	3,20,31
32333a608692SPiotr Kubaj	vsrab	11,8,9
32343a608692SPiotr Kubaj	vxor	20,8,23
32353a608692SPiotr Kubaj	.long	0x11ADE548
32363a608692SPiotr Kubaj	.long	0x11CEE548
32373a608692SPiotr Kubaj	vaddubm	8,8,8
32383a608692SPiotr Kubaj	.long	0x11EFE548
32393a608692SPiotr Kubaj	.long	0x1210E548
32403a608692SPiotr Kubaj	lvx	24,0,7
32413a608692SPiotr Kubaj	vand	11,11,10
32423a608692SPiotr Kubaj
32433a608692SPiotr Kubaj	.long	0x10E7ED48
32443a608692SPiotr Kubaj	.long	0x118CED48
3245*77864b54SEnji Cooper	xxlor	32+4, 0, 0
3246*77864b54SEnji Cooper	vpermxor	8, 8, 11, 4
32473a608692SPiotr Kubaj	.long	0x11ADED48
32483a608692SPiotr Kubaj	.long	0x11CEED48
32493a608692SPiotr Kubaj	vxor	4,21,31
32503a608692SPiotr Kubaj	vsrab	11,8,9
32513a608692SPiotr Kubaj	vxor	21,8,23
32523a608692SPiotr Kubaj	.long	0x11EFED48
32533a608692SPiotr Kubaj	.long	0x1210ED48
32543a608692SPiotr Kubaj	lvx	25,3,7
32553a608692SPiotr Kubaj	vaddubm	8,8,8
32563a608692SPiotr Kubaj
32573a608692SPiotr Kubaj	.long	0x10E7F548
32583a608692SPiotr Kubaj	.long	0x118CF548
32593a608692SPiotr Kubaj	vand	11,11,10
32603a608692SPiotr Kubaj	.long	0x11ADF548
32613a608692SPiotr Kubaj	.long	0x11CEF548
3262*77864b54SEnji Cooper	xxlor	32+5, 0, 0
3263*77864b54SEnji Cooper	vpermxor	8, 8, 11, 5
32643a608692SPiotr Kubaj	.long	0x11EFF548
32653a608692SPiotr Kubaj	.long	0x1210F548
32663a608692SPiotr Kubaj	vxor	5,22,31
32673a608692SPiotr Kubaj	vsrab	11,8,9
32683a608692SPiotr Kubaj	vxor	22,8,23
32693a608692SPiotr Kubaj
32703a608692SPiotr Kubaj	.long	0x10E70549
32713a608692SPiotr Kubaj	.long	0x7C005699
32723a608692SPiotr Kubaj	vaddubm	8,8,8
32733a608692SPiotr Kubaj	.long	0x118C0D49
32743a608692SPiotr Kubaj	.long	0x7C235699
32753a608692SPiotr Kubaj	.long	0x11AD1549
32763a608692SPiotr Kubaj
32773a608692SPiotr Kubaj	.long	0x7C5A5699
32783a608692SPiotr Kubaj	vand	11,11,10
32793a608692SPiotr Kubaj	.long	0x11CE1D49
32803a608692SPiotr Kubaj
32813a608692SPiotr Kubaj	.long	0x7C7B5699
32823a608692SPiotr Kubaj	.long	0x11EF2549
32833a608692SPiotr Kubaj
32843a608692SPiotr Kubaj	.long	0x7C9C5699
3285*77864b54SEnji Cooper	xxlor	10, 32+0, 32+0
3286*77864b54SEnji Cooper	xxlor	32+0, 0, 0
3287*77864b54SEnji Cooper	vpermxor	8, 8, 11, 0
3288*77864b54SEnji Cooper	xxlor	32+0, 10, 10
32893a608692SPiotr Kubaj	.long	0x12102D49
32903a608692SPiotr Kubaj
32913a608692SPiotr Kubaj	.long	0x7CBD5699
32923a608692SPiotr Kubaj	addi	10,10,0x60
32933a608692SPiotr Kubaj
32943a608692SPiotr Kubaj
32953a608692SPiotr Kubaj
32963a608692SPiotr Kubaj
32973a608692SPiotr Kubaj
32983a608692SPiotr Kubaj	.long	0x7CE02799
32993a608692SPiotr Kubaj	vxor	7,0,17
33003a608692SPiotr Kubaj
33013a608692SPiotr Kubaj	.long	0x7D832799
33023a608692SPiotr Kubaj	vxor	12,1,18
33033a608692SPiotr Kubaj
33043a608692SPiotr Kubaj	.long	0x7DBA2799
33053a608692SPiotr Kubaj	vxor	13,2,19
33063a608692SPiotr Kubaj
33073a608692SPiotr Kubaj	.long	0x7DDB2799
33083a608692SPiotr Kubaj	vxor	14,3,20
33093a608692SPiotr Kubaj
33103a608692SPiotr Kubaj	.long	0x7DFC2799
33113a608692SPiotr Kubaj	vxor	15,4,21
33123a608692SPiotr Kubaj	.long	0x7E1D2799
33133a608692SPiotr Kubaj	vxor	16,5,22
33143a608692SPiotr Kubaj	addi	4,4,0x60
33153a608692SPiotr Kubaj
33163a608692SPiotr Kubaj	mtctr	9
33173a608692SPiotr Kubaj	beq	.Loop_xts_dec6x
33183a608692SPiotr Kubaj
3319*77864b54SEnji Cooper	xxlor	32+10, 2, 2
3320*77864b54SEnji Cooper
33213a608692SPiotr Kubaj	addic.	5,5,0x60
33223a608692SPiotr Kubaj	beq	.Lxts_dec6x_zero
33233a608692SPiotr Kubaj	cmpwi	5,0x20
33243a608692SPiotr Kubaj	blt	.Lxts_dec6x_one
33253a608692SPiotr Kubaj	nop
33263a608692SPiotr Kubaj	beq	.Lxts_dec6x_two
33273a608692SPiotr Kubaj	cmpwi	5,0x40
33283a608692SPiotr Kubaj	blt	.Lxts_dec6x_three
33293a608692SPiotr Kubaj	nop
33303a608692SPiotr Kubaj	beq	.Lxts_dec6x_four
33313a608692SPiotr Kubaj
33323a608692SPiotr Kubaj.Lxts_dec6x_five:
33333a608692SPiotr Kubaj	vxor	7,1,17
33343a608692SPiotr Kubaj	vxor	12,2,18
33353a608692SPiotr Kubaj	vxor	13,3,19
33363a608692SPiotr Kubaj	vxor	14,4,20
33373a608692SPiotr Kubaj	vxor	15,5,21
33383a608692SPiotr Kubaj
33393a608692SPiotr Kubaj	bl	_aesp8_xts_dec5x
33403a608692SPiotr Kubaj
33413a608692SPiotr Kubaj
33423a608692SPiotr Kubaj	vor	17,22,22
33433a608692SPiotr Kubaj	vxor	18,8,23
33443a608692SPiotr Kubaj
33453a608692SPiotr Kubaj	.long	0x7CE02799
33463a608692SPiotr Kubaj	vxor	7,0,18
33473a608692SPiotr Kubaj
33483a608692SPiotr Kubaj	.long	0x7D832799
33493a608692SPiotr Kubaj
33503a608692SPiotr Kubaj	.long	0x7DBA2799
33513a608692SPiotr Kubaj
33523a608692SPiotr Kubaj	.long	0x7DDB2799
33533a608692SPiotr Kubaj	.long	0x7DFC2799
33543a608692SPiotr Kubaj	addi	4,4,0x50
33553a608692SPiotr Kubaj	bne	.Lxts_dec6x_steal
33563a608692SPiotr Kubaj	b	.Lxts_dec6x_done
33573a608692SPiotr Kubaj
33583a608692SPiotr Kubaj.align	4
33593a608692SPiotr Kubaj.Lxts_dec6x_four:
33603a608692SPiotr Kubaj	vxor	7,2,17
33613a608692SPiotr Kubaj	vxor	12,3,18
33623a608692SPiotr Kubaj	vxor	13,4,19
33633a608692SPiotr Kubaj	vxor	14,5,20
33643a608692SPiotr Kubaj	vxor	15,15,15
33653a608692SPiotr Kubaj
33663a608692SPiotr Kubaj	bl	_aesp8_xts_dec5x
33673a608692SPiotr Kubaj
33683a608692SPiotr Kubaj
33693a608692SPiotr Kubaj	vor	17,21,21
33703a608692SPiotr Kubaj	vor	18,22,22
33713a608692SPiotr Kubaj
33723a608692SPiotr Kubaj	.long	0x7CE02799
33733a608692SPiotr Kubaj	vxor	7,0,22
33743a608692SPiotr Kubaj
33753a608692SPiotr Kubaj	.long	0x7D832799
33763a608692SPiotr Kubaj
33773a608692SPiotr Kubaj	.long	0x7DBA2799
33783a608692SPiotr Kubaj	.long	0x7DDB2799
33793a608692SPiotr Kubaj	addi	4,4,0x40
33803a608692SPiotr Kubaj	bne	.Lxts_dec6x_steal
33813a608692SPiotr Kubaj	b	.Lxts_dec6x_done
33823a608692SPiotr Kubaj
33833a608692SPiotr Kubaj.align	4
33843a608692SPiotr Kubaj.Lxts_dec6x_three:
33853a608692SPiotr Kubaj	vxor	7,3,17
33863a608692SPiotr Kubaj	vxor	12,4,18
33873a608692SPiotr Kubaj	vxor	13,5,19
33883a608692SPiotr Kubaj	vxor	14,14,14
33893a608692SPiotr Kubaj	vxor	15,15,15
33903a608692SPiotr Kubaj
33913a608692SPiotr Kubaj	bl	_aesp8_xts_dec5x
33923a608692SPiotr Kubaj
33933a608692SPiotr Kubaj
33943a608692SPiotr Kubaj	vor	17,20,20
33953a608692SPiotr Kubaj	vor	18,21,21
33963a608692SPiotr Kubaj
33973a608692SPiotr Kubaj	.long	0x7CE02799
33983a608692SPiotr Kubaj	vxor	7,0,21
33993a608692SPiotr Kubaj
34003a608692SPiotr Kubaj	.long	0x7D832799
34013a608692SPiotr Kubaj	.long	0x7DBA2799
34023a608692SPiotr Kubaj	addi	4,4,0x30
34033a608692SPiotr Kubaj	bne	.Lxts_dec6x_steal
34043a608692SPiotr Kubaj	b	.Lxts_dec6x_done
34053a608692SPiotr Kubaj
34063a608692SPiotr Kubaj.align	4
34073a608692SPiotr Kubaj.Lxts_dec6x_two:
34083a608692SPiotr Kubaj	vxor	7,4,17
34093a608692SPiotr Kubaj	vxor	12,5,18
34103a608692SPiotr Kubaj	vxor	13,13,13
34113a608692SPiotr Kubaj	vxor	14,14,14
34123a608692SPiotr Kubaj	vxor	15,15,15
34133a608692SPiotr Kubaj
34143a608692SPiotr Kubaj	bl	_aesp8_xts_dec5x
34153a608692SPiotr Kubaj
34163a608692SPiotr Kubaj
34173a608692SPiotr Kubaj	vor	17,19,19
34183a608692SPiotr Kubaj	vor	18,20,20
34193a608692SPiotr Kubaj
34203a608692SPiotr Kubaj	.long	0x7CE02799
34213a608692SPiotr Kubaj	vxor	7,0,20
34223a608692SPiotr Kubaj	.long	0x7D832799
34233a608692SPiotr Kubaj	addi	4,4,0x20
34243a608692SPiotr Kubaj	bne	.Lxts_dec6x_steal
34253a608692SPiotr Kubaj	b	.Lxts_dec6x_done
34263a608692SPiotr Kubaj
34273a608692SPiotr Kubaj.align	4
34283a608692SPiotr Kubaj.Lxts_dec6x_one:
34293a608692SPiotr Kubaj	vxor	7,5,17
34303a608692SPiotr Kubaj	nop
34313a608692SPiotr Kubaj.Loop_xts_dec1x:
34323a608692SPiotr Kubaj	.long	0x10E7C548
34333a608692SPiotr Kubaj	lvx	24,26,7
34343a608692SPiotr Kubaj	addi	7,7,0x20
34353a608692SPiotr Kubaj
34363a608692SPiotr Kubaj	.long	0x10E7CD48
34373a608692SPiotr Kubaj	lvx	25,3,7
34383a608692SPiotr Kubaj	bdnz	.Loop_xts_dec1x
34393a608692SPiotr Kubaj
34403a608692SPiotr Kubaj	subi	0,31,1
34413a608692SPiotr Kubaj	.long	0x10E7C548
34423a608692SPiotr Kubaj
34433a608692SPiotr Kubaj	andi.	0,0,16
34443a608692SPiotr Kubaj	cmpwi	31,0
34453a608692SPiotr Kubaj	.long	0x10E7CD48
34463a608692SPiotr Kubaj
34473a608692SPiotr Kubaj	sub	10,10,0
34483a608692SPiotr Kubaj	.long	0x10E7D548
34493a608692SPiotr Kubaj
34503a608692SPiotr Kubaj	.long	0x7C005699
34513a608692SPiotr Kubaj	.long	0x10E7DD48
34523a608692SPiotr Kubaj
34533a608692SPiotr Kubaj	addi	7,1,32+15
34543a608692SPiotr Kubaj	.long	0x10E7E548
34553a608692SPiotr Kubaj	lvx	24,0,7
34563a608692SPiotr Kubaj
34573a608692SPiotr Kubaj	.long	0x10E7ED48
34583a608692SPiotr Kubaj	lvx	25,3,7
34593a608692SPiotr Kubaj	vxor	17,17,31
34603a608692SPiotr Kubaj
34613a608692SPiotr Kubaj
34623a608692SPiotr Kubaj	.long	0x10E7F548
34633a608692SPiotr Kubaj
34643a608692SPiotr Kubaj	mtctr	9
34653a608692SPiotr Kubaj	.long	0x10E78D49
34663a608692SPiotr Kubaj
34673a608692SPiotr Kubaj	vor	17,18,18
34683a608692SPiotr Kubaj	vor	18,19,19
34693a608692SPiotr Kubaj
34703a608692SPiotr Kubaj	.long	0x7CE02799
34713a608692SPiotr Kubaj	addi	4,4,0x10
34723a608692SPiotr Kubaj	vxor	7,0,19
34733a608692SPiotr Kubaj	bne	.Lxts_dec6x_steal
34743a608692SPiotr Kubaj	b	.Lxts_dec6x_done
34753a608692SPiotr Kubaj
34763a608692SPiotr Kubaj.align	4
34773a608692SPiotr Kubaj.Lxts_dec6x_zero:
34783a608692SPiotr Kubaj	cmpwi	31,0
34793a608692SPiotr Kubaj	beq	.Lxts_dec6x_done
34803a608692SPiotr Kubaj
34813a608692SPiotr Kubaj	.long	0x7C005699
34823a608692SPiotr Kubaj
34833a608692SPiotr Kubaj	vxor	7,0,18
34843a608692SPiotr Kubaj.Lxts_dec6x_steal:
34853a608692SPiotr Kubaj	.long	0x10E7C548
34863a608692SPiotr Kubaj	lvx	24,26,7
34873a608692SPiotr Kubaj	addi	7,7,0x20
34883a608692SPiotr Kubaj
34893a608692SPiotr Kubaj	.long	0x10E7CD48
34903a608692SPiotr Kubaj	lvx	25,3,7
34913a608692SPiotr Kubaj	bdnz	.Lxts_dec6x_steal
34923a608692SPiotr Kubaj
34933a608692SPiotr Kubaj	add	10,10,31
34943a608692SPiotr Kubaj	.long	0x10E7C548
34953a608692SPiotr Kubaj
34963a608692SPiotr Kubaj	cmpwi	31,0
34973a608692SPiotr Kubaj	.long	0x10E7CD48
34983a608692SPiotr Kubaj
34993a608692SPiotr Kubaj	.long	0x7C005699
35003a608692SPiotr Kubaj	.long	0x10E7D548
35013a608692SPiotr Kubaj
35023a608692SPiotr Kubaj	lvsr	5,0,31
35033a608692SPiotr Kubaj	.long	0x10E7DD48
35043a608692SPiotr Kubaj
35053a608692SPiotr Kubaj	addi	7,1,32+15
35063a608692SPiotr Kubaj	.long	0x10E7E548
35073a608692SPiotr Kubaj	lvx	24,0,7
35083a608692SPiotr Kubaj
35093a608692SPiotr Kubaj	.long	0x10E7ED48
35103a608692SPiotr Kubaj	lvx	25,3,7
35113a608692SPiotr Kubaj	vxor	18,18,31
35123a608692SPiotr Kubaj
35133a608692SPiotr Kubaj
35143a608692SPiotr Kubaj	.long	0x10E7F548
35153a608692SPiotr Kubaj
35163a608692SPiotr Kubaj	vperm	0,0,0,5
35173a608692SPiotr Kubaj	.long	0x11679549
35183a608692SPiotr Kubaj
35193a608692SPiotr Kubaj
35203a608692SPiotr Kubaj
35213a608692SPiotr Kubaj	.long	0x7D602799
35223a608692SPiotr Kubaj
35233a608692SPiotr Kubaj	vxor	7,7,7
35243a608692SPiotr Kubaj	vspltisb	12,-1
35253a608692SPiotr Kubaj	vperm	7,7,12,5
35263a608692SPiotr Kubaj	vsel	7,0,11,7
35273a608692SPiotr Kubaj	vxor	7,7,17
35283a608692SPiotr Kubaj
35293a608692SPiotr Kubaj	subi	30,4,1
35303a608692SPiotr Kubaj	mtctr	31
35313a608692SPiotr Kubaj.Loop_xts_dec6x_steal:
35323a608692SPiotr Kubaj	lbzu	0,1(30)
35333a608692SPiotr Kubaj	stb	0,16(30)
35343a608692SPiotr Kubaj	bdnz	.Loop_xts_dec6x_steal
35353a608692SPiotr Kubaj
35363a608692SPiotr Kubaj	li	31,0
35373a608692SPiotr Kubaj	mtctr	9
35383a608692SPiotr Kubaj	b	.Loop_xts_dec1x
35393a608692SPiotr Kubaj
35403a608692SPiotr Kubaj.align	4
35413a608692SPiotr Kubaj.Lxts_dec6x_done:
35423a608692SPiotr Kubaj	cmplwi	8,0
35433a608692SPiotr Kubaj	beq	.Lxts_dec6x_ret
35443a608692SPiotr Kubaj
35453a608692SPiotr Kubaj	vxor	8,17,23
35463a608692SPiotr Kubaj
35473a608692SPiotr Kubaj	.long	0x7D004799
35483a608692SPiotr Kubaj
35493a608692SPiotr Kubaj.Lxts_dec6x_ret:
35503a608692SPiotr Kubaj	mtlr	11
35513a608692SPiotr Kubaj	li	10,47
35523a608692SPiotr Kubaj	li	11,63
35533a608692SPiotr Kubaj	stvx	9,10,1
35543a608692SPiotr Kubaj	addi	10,10,32
35553a608692SPiotr Kubaj	stvx	9,11,1
35563a608692SPiotr Kubaj	addi	11,11,32
35573a608692SPiotr Kubaj	stvx	9,10,1
35583a608692SPiotr Kubaj	addi	10,10,32
35593a608692SPiotr Kubaj	stvx	9,11,1
35603a608692SPiotr Kubaj	addi	11,11,32
35613a608692SPiotr Kubaj	stvx	9,10,1
35623a608692SPiotr Kubaj	addi	10,10,32
35633a608692SPiotr Kubaj	stvx	9,11,1
35643a608692SPiotr Kubaj	addi	11,11,32
35653a608692SPiotr Kubaj	stvx	9,10,1
35663a608692SPiotr Kubaj	addi	10,10,32
35673a608692SPiotr Kubaj	stvx	9,11,1
35683a608692SPiotr Kubaj	addi	11,11,32
35693a608692SPiotr Kubaj
35703a608692SPiotr Kubaj	mtspr	256,12
35713a608692SPiotr Kubaj	lvx	20,10,1
35723a608692SPiotr Kubaj	addi	10,10,32
35733a608692SPiotr Kubaj	lvx	21,11,1
35743a608692SPiotr Kubaj	addi	11,11,32
35753a608692SPiotr Kubaj	lvx	22,10,1
35763a608692SPiotr Kubaj	addi	10,10,32
35773a608692SPiotr Kubaj	lvx	23,11,1
35783a608692SPiotr Kubaj	addi	11,11,32
35793a608692SPiotr Kubaj	lvx	24,10,1
35803a608692SPiotr Kubaj	addi	10,10,32
35813a608692SPiotr Kubaj	lvx	25,11,1
35823a608692SPiotr Kubaj	addi	11,11,32
35833a608692SPiotr Kubaj	lvx	26,10,1
35843a608692SPiotr Kubaj	addi	10,10,32
35853a608692SPiotr Kubaj	lvx	27,11,1
35863a608692SPiotr Kubaj	addi	11,11,32
35873a608692SPiotr Kubaj	lvx	28,10,1
35883a608692SPiotr Kubaj	addi	10,10,32
35893a608692SPiotr Kubaj	lvx	29,11,1
35903a608692SPiotr Kubaj	addi	11,11,32
35913a608692SPiotr Kubaj	lvx	30,10,1
35923a608692SPiotr Kubaj	lvx	31,11,1
35933a608692SPiotr Kubaj	lwz	26,368(1)
35943a608692SPiotr Kubaj	lwz	27,372(1)
35953a608692SPiotr Kubaj	lwz	28,376(1)
35963a608692SPiotr Kubaj	lwz	29,380(1)
35973a608692SPiotr Kubaj	lwz	30,384(1)
35983a608692SPiotr Kubaj	lwz	31,388(1)
35993a608692SPiotr Kubaj	addi	1,1,392
36003a608692SPiotr Kubaj	blr
36013a608692SPiotr Kubaj.long	0
36023a608692SPiotr Kubaj.byte	0,12,0x04,1,0x80,6,6,0
36033a608692SPiotr Kubaj.long	0
36043a608692SPiotr Kubaj
36053a608692SPiotr Kubaj.align	5
36063a608692SPiotr Kubaj_aesp8_xts_dec5x:
36073a608692SPiotr Kubaj	.long	0x10E7C548
36083a608692SPiotr Kubaj	.long	0x118CC548
36093a608692SPiotr Kubaj	.long	0x11ADC548
36103a608692SPiotr Kubaj	.long	0x11CEC548
36113a608692SPiotr Kubaj	.long	0x11EFC548
36123a608692SPiotr Kubaj	lvx	24,26,7
36133a608692SPiotr Kubaj	addi	7,7,0x20
36143a608692SPiotr Kubaj
36153a608692SPiotr Kubaj	.long	0x10E7CD48
36163a608692SPiotr Kubaj	.long	0x118CCD48
36173a608692SPiotr Kubaj	.long	0x11ADCD48
36183a608692SPiotr Kubaj	.long	0x11CECD48
36193a608692SPiotr Kubaj	.long	0x11EFCD48
36203a608692SPiotr Kubaj	lvx	25,3,7
36213a608692SPiotr Kubaj	bdnz	_aesp8_xts_dec5x
36223a608692SPiotr Kubaj
36233a608692SPiotr Kubaj	subi	0,31,1
36243a608692SPiotr Kubaj	.long	0x10E7C548
36253a608692SPiotr Kubaj	.long	0x118CC548
36263a608692SPiotr Kubaj	.long	0x11ADC548
36273a608692SPiotr Kubaj	.long	0x11CEC548
36283a608692SPiotr Kubaj	.long	0x11EFC548
36293a608692SPiotr Kubaj
36303a608692SPiotr Kubaj	andi.	0,0,16
36313a608692SPiotr Kubaj	cmpwi	31,0
36323a608692SPiotr Kubaj	.long	0x10E7CD48
36333a608692SPiotr Kubaj	.long	0x118CCD48
36343a608692SPiotr Kubaj	.long	0x11ADCD48
36353a608692SPiotr Kubaj	.long	0x11CECD48
36363a608692SPiotr Kubaj	.long	0x11EFCD48
36373a608692SPiotr Kubaj	vxor	17,17,31
36383a608692SPiotr Kubaj
36393a608692SPiotr Kubaj	sub	10,10,0
36403a608692SPiotr Kubaj	.long	0x10E7D548
36413a608692SPiotr Kubaj	.long	0x118CD548
36423a608692SPiotr Kubaj	.long	0x11ADD548
36433a608692SPiotr Kubaj	.long	0x11CED548
36443a608692SPiotr Kubaj	.long	0x11EFD548
36453a608692SPiotr Kubaj	vxor	1,18,31
36463a608692SPiotr Kubaj
36473a608692SPiotr Kubaj	.long	0x10E7DD48
36483a608692SPiotr Kubaj	.long	0x7C005699
36493a608692SPiotr Kubaj	.long	0x118CDD48
36503a608692SPiotr Kubaj	.long	0x11ADDD48
36513a608692SPiotr Kubaj	.long	0x11CEDD48
36523a608692SPiotr Kubaj	.long	0x11EFDD48
36533a608692SPiotr Kubaj	vxor	2,19,31
36543a608692SPiotr Kubaj
36553a608692SPiotr Kubaj	addi	7,1,32+15
36563a608692SPiotr Kubaj	.long	0x10E7E548
36573a608692SPiotr Kubaj	.long	0x118CE548
36583a608692SPiotr Kubaj	.long	0x11ADE548
36593a608692SPiotr Kubaj	.long	0x11CEE548
36603a608692SPiotr Kubaj	.long	0x11EFE548
36613a608692SPiotr Kubaj	lvx	24,0,7
36623a608692SPiotr Kubaj	vxor	3,20,31
36633a608692SPiotr Kubaj
36643a608692SPiotr Kubaj	.long	0x10E7ED48
36653a608692SPiotr Kubaj
36663a608692SPiotr Kubaj	.long	0x118CED48
36673a608692SPiotr Kubaj	.long	0x11ADED48
36683a608692SPiotr Kubaj	.long	0x11CEED48
36693a608692SPiotr Kubaj	.long	0x11EFED48
36703a608692SPiotr Kubaj	lvx	25,3,7
36713a608692SPiotr Kubaj	vxor	4,21,31
36723a608692SPiotr Kubaj
36733a608692SPiotr Kubaj	.long	0x10E7F548
36743a608692SPiotr Kubaj	.long	0x118CF548
36753a608692SPiotr Kubaj	.long	0x11ADF548
36763a608692SPiotr Kubaj	.long	0x11CEF548
36773a608692SPiotr Kubaj	.long	0x11EFF548
36783a608692SPiotr Kubaj
36793a608692SPiotr Kubaj	.long	0x10E78D49
36803a608692SPiotr Kubaj	.long	0x118C0D49
36813a608692SPiotr Kubaj	.long	0x11AD1549
36823a608692SPiotr Kubaj	.long	0x11CE1D49
36833a608692SPiotr Kubaj	.long	0x11EF2549
36843a608692SPiotr Kubaj	mtctr	9
36853a608692SPiotr Kubaj	blr
36863a608692SPiotr Kubaj.long	0
36873a608692SPiotr Kubaj.byte	0,12,0x14,0,0,0,0,0
3688