xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/poly1305-ppc.S (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
1.machine	"any"
2.text
3.globl	poly1305_init_int
4.type	poly1305_init_int,@function
5.section	".opd","aw"
6.align	3
7poly1305_init_int:
8.quad	.poly1305_init_int,.TOC.@tocbase,0
9.previous
10
11.align	4
12.poly1305_init_int:
13	xor	0,0,0
14	std	0,0(3)
15	std	0,8(3)
16	std	0,16(3)
17
18	cmpld	4,0
19	beq-	.Lno_key
20	li	7,4
21	lwbrx	10,0,4
22	li	11,8
23	lwbrx	7,7,4
24	li	8,12
25	lwbrx	11,11,4
26	lwbrx	8,8,4
27	insrdi	10,7,32,0
28	insrdi	11,8,32,0
29	lis	8,0xfff
30	ori	8,8,0xfffc
31	insrdi	8,8,32,0
32	ori	7,8,3
33
34	and	10,10,7
35	and	11,11,8
36
37	std	10,32(3)
38	std	11,40(3)
39
40.Lno_key:
41	xor	3,3,3
42	blr
43.long	0
44.byte	0,12,0x14,0,0,0,2,0
45
46
47.globl	poly1305_blocks
48.type	poly1305_blocks,@function
49.section	".opd","aw"
50.align	3
51poly1305_blocks:
52.quad	.poly1305_blocks,.TOC.@tocbase,0
53.previous
54
55.align	4
56.poly1305_blocks:
57	srdi.	5,5,4
58	beq-	.Labort
59
60	stdu	1,-192(1)
61	mflr	0
62	std	27,152(1)
63	std	28,160(1)
64	std	29,168(1)
65	std	30,176(1)
66	std	31,184(1)
67	std	0,208(1)
68
69	ld	27,32(3)
70	ld	28,40(3)
71
72	ld	7,0(3)
73	ld	8,8(3)
74	ld	9,16(3)
75
76	srdi	29,28,2
77	mtctr	5
78	add	29,29,28
79	li	0,3
80	b	.Loop
81
82.align	4
83.Loop:
84	li	10,4
85	lwbrx	30,0,4
86	li	31,8
87	lwbrx	10,10,4
88	li	11,12
89	lwbrx	31,31,4
90	lwbrx	11,11,4
91	insrdi	30,10,32,0
92	insrdi	31,11,32,0
93	addi	4,4,16
94
95	addc	7,7,30
96	adde	8,8,31
97
98	mulld	10,7,27
99	mulhdu	11,7,27
100	adde	9,9,6
101
102	mulld	30,8,29
103	mulhdu	31,8,29
104	addc	10,10,30
105	adde	11,11,31
106
107	mulld	30,7,28
108	mulhdu	12,7,28
109	addc	11,11,30
110	addze	12,12
111
112	mulld	30,8,27
113	mulhdu	31,8,27
114	addc	11,11,30
115	adde	12,12,31
116
117	mulld	30,9,29
118	mulld	31,9,27
119	addc	11,11,30
120	adde	12,12,31
121
122	andc	30,12,0
123	and	9,12,0
124	srdi	31,30,2
125	add	30,30,31
126	addc	7,10,30
127	addze	8,11
128	addze	9,9
129
130	bc	16,0,.Loop
131
132	std	7,0(3)
133	std	8,8(3)
134	std	9,16(3)
135
136	ld	27,152(1)
137	ld	28,160(1)
138	ld	29,168(1)
139	ld	30,176(1)
140	ld	31,184(1)
141	addi	1,1,192
142.Labort:
143	blr
144.long	0
145.byte	0,12,4,1,0x80,5,4,0
146
147
148.globl	poly1305_emit
149.type	poly1305_emit,@function
150.section	".opd","aw"
151.align	3
152poly1305_emit:
153.quad	.poly1305_emit,.TOC.@tocbase,0
154.previous
155
156.align	4
157.poly1305_emit:
158	ld	7,0(3)
159	ld	8,8(3)
160	ld	9,16(3)
161	ld	6,0(5)
162	ld	5,8(5)
163
164	addic	10,7,5
165	addze	11,8
166	addze	12,9
167
168	srdi	0,12,2
169	neg	0,0
170
171	andc	7,7,0
172	and	10,10,0
173	andc	8,8,0
174	and	11,11,0
175	or	7,7,10
176	or	8,8,11
177	rotldi	6,6,32
178	rotldi	5,5,32
179	addc	7,7,6
180	adde	8,8,5
181	rldicl	0,7,32,32
182	li	10,4
183	stwbrx	7,0,4
184	rldicl	7,8,32,32
185	li	11,8
186	stwbrx	0,10,4
187	li	12,12
188	stwbrx	8,11,4
189	stwbrx	7,12,4
190	blr
191.long	0
192.byte	0,12,0x14,0,0,0,3,0
193
194.byte	80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,44,32,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
195.align	2
196