1 #include "s390x_arch.h"
2 .text
3 .globl	poly1305_init
4 .type	poly1305_init,@function
5 .align	16
6 poly1305_init:
7 	lghi	%r0,0
8 	lghi	%r1,-1
9 	stg	%r0,0(%r2)
10 	stg	%r0,8(%r2)
11 	stg	%r0,16(%r2)
12 	st	%r0,24(%r2)
13 	lgr	%r5,%r2
14 	lghi	%r2,0
15 	clr	%r3,%r0
16 	je	.Lno_key
17 	lrvg	%r2,0(%r3)
18 	lrvg	%r3,8(%r3)
19 	nihl	%r1,65472
20 	srlg	%r0,%r1,4
21 	srlg	%r1,%r1,4
22 	nill	%r1,65532
23 	ngr	%r2,%r0
24 	ngr	%r3,%r1
25 	stmg	%r2,%r3,32(%r5)
26 	larl	%r1,OPENSSL_s390xcap_P
27 	lg	%r0,16(%r1)
28 	srlg	%r0,%r0,62
29 	nill	%r0,1
30 	lcgr	%r0,%r0
31 	larl	%r1,.Lpoly1305_blocks
32 	larl	%r2,.Lpoly1305_blocks_vx
33 	larl	%r3,.Lpoly1305_emit
34 	xr	%r2,%r1
35 	nr	%r2,%r0
36 	xr	%r2,%r1
37 	stm	%r2,%r3,0(%r4)
38 	lghi	%r2,1
39 .Lno_key:
40 	br	%r14
41 .size	poly1305_init,.-poly1305_init
42 .globl	poly1305_blocks
43 .type	poly1305_blocks,@function
44 .align	16
45 poly1305_blocks:
46 .Lpoly1305_blocks:
47 	ltr	%r0,%r4
48 	jz	.Lno_data
49 	stm	%r6,%r14,6*4(%r15)
50 	lg	%r11,0(%r2)
51 	lg	%r13,8(%r2)
52 	lg	%r14,16(%r2)
53 .Lpoly1305_blocks_entry:
54 	srl	%r4,4
55 	llgfr	%r5,%r5
56 	lg	%r0,32(%r2)
57 	lg	%r1,40(%r2)
58 	st	%r2,2*4(%r15)
59 	srlg	%r2,%r1,2
60 	algr	%r2,%r1
61 	j	.Loop
62 .align	16
63 .Loop:
64 	lrvg	%r7,0(%r3)
65 	lrvg	%r9,8(%r3)
66 	la	%r3,16(%r3)
67 	algr	%r7,%r11
68 	alcgr	%r9,%r13
69 	alcgr	%r14,%r5
70 	lgr	%r11,%r7
71 	mlgr	%r6,%r0
72 	lgr	%r13,%r9
73 	mlgr	%r8,%r2
74 	mlgr	%r10,%r1
75 	mlgr	%r12,%r0
76 	algr	%r7,%r9
77 	lgr	%r9,%r14
78 	alcgr	%r6,%r8
79 	lghi	%r8,0
80 	algr	%r13,%r11
81 	alcgr	%r12,%r10
82 	msgr	%r9,%r2
83 	msgr	%r14,%r0
84 	algr	%r13,%r9
85 	alcgr	%r12,%r8
86 	algr	%r13,%r6
87 	alcgr	%r14,%r12
88 	lghi	%r11,-4
89 	ngr	%r11,%r14
90 	srlg	%r10,%r14,2
91 	algr	%r11,%r10
92 	lghi	%r12,3
93 	ngr	%r14,%r12
94 	algr	%r11,%r7
95 	alcgr	%r13,%r8
96 	alcgr	%r14,%r8
97 	brct	%r4,.Loop
98 	l	%r2,2*4(%r15)
99 	stg	%r11,0(%r2)
100 	stg	%r13,8(%r2)
101 	stg	%r14,16(%r2)
102 	lm	%r6,%r14,6*4(%r15)
103 .Lno_data:
104 	br	%r14
105 .size	poly1305_blocks,.-poly1305_blocks
106 .type	poly1305_blocks_vx,@function
107 .align	16
108 poly1305_blocks_vx:
109 .Lpoly1305_blocks_vx:
110 	.word	0xc24f,000000,0x0080	# clfi	%r4,128
111 	jhe	__poly1305_blocks_vx
112 	stm	%r6,%r14,6*4(%r15)
113 	lg	%r10,0(%r2)
114 	lg	%r12,8(%r2)
115 	lg	%r9,16(%r2)
116 	llgfr	%r0,%r10
117 	srlg	%r11,%r10,32
118 	llgfr	%r1,%r12
119 	srlg	%r13,%r12,32
120 	srlg	%r14,%r9,32
121 	sllg	%r0,%r0,26
122 	algr	%r11,%r0
123 	sllg	%r0,%r13,52
124 	srlg	%r13,%r13,12
125 	sllg	%r1,%r1,14
126 	algr	%r11,%r0
127 	alcgr	%r13,%r1
128 	sllg	%r0,%r14,40
129 	srlg	%r14,%r14,24
130 	lghi	%r1,0
131 	algr	%r13,%r0
132 	alcgr	%r14,%r1
133 	llgf	%r0,24(%r2)
134 	lcgr	%r0,%r0
135 	xgr	%r11,%r10
136 	xgr	%r13,%r12
137 	xgr	%r14,%r9
138 	ngr	%r11,%r0
139 	ngr	%r13,%r0
140 	ngr	%r14,%r0
141 	xgr	%r11,%r10
142 	xgr	%r13,%r12
143 	xgr	%r14,%r9
144 	lhi	%r0,0
145 	st	%r0,24(%r2)
146 	j	.Lpoly1305_blocks_entry
147 .size	poly1305_blocks_vx,.-poly1305_blocks_vx
148 .type	__poly1305_mul,@function
149 .align	16
150 __poly1305_mul:
151 	.word	0xe730,0xa000,0x28a5	# vmlo	%v19,%v0,%v10,2
152 	.word	0xe740,0xb000,0x28a5	# vmlo	%v20,%v0,%v11,2
153 	.word	0xe750,0xd000,0x28a5	# vmlo	%v21,%v0,%v13,2
154 	.word	0xe760,0xf000,0x28a5	# vmlo	%v22,%v0,%v15,2
155 	.word	0xe770,0x1000,0x2aa5	# vmlo	%v23,%v0,%v17,2
156 	.word	0xe731,0x2200,0x3bad	# vmalo	%v19,%v1,%v18,%v19,2
157 	.word	0xe741,0xa200,0x49ad	# vmalo	%v20,%v1,%v10,%v20,2
158 	.word	0xe751,0xb200,0x59ad	# vmalo	%v21,%v1,%v11,%v21,2
159 	.word	0xe761,0xd200,0x69ad	# vmalo	%v22,%v1,%v13,%v22,2
160 	.word	0xe771,0xf200,0x79ad	# vmalo	%v23,%v1,%v15,%v23,2
161 	.word	0xe732,0x0200,0x3bad	# vmalo	%v19,%v2,%v16,%v19,2
162 	.word	0xe742,0x2200,0x4bad	# vmalo	%v20,%v2,%v18,%v20,2
163 	.word	0xe752,0xa200,0x59ad	# vmalo	%v21,%v2,%v10,%v21,2
164 	.word	0xe762,0xb200,0x69ad	# vmalo	%v22,%v2,%v11,%v22,2
165 	.word	0xe772,0xd200,0x79ad	# vmalo	%v23,%v2,%v13,%v23,2
166 	.word	0xe733,0xe200,0x39ad	# vmalo	%v19,%v3,%v14,%v19,2
167 	.word	0xe743,0x0200,0x4bad	# vmalo	%v20,%v3,%v16,%v20,2
168 	.word	0xe753,0x2200,0x5bad	# vmalo	%v21,%v3,%v18,%v21,2
169 	.word	0xe763,0xa200,0x69ad	# vmalo	%v22,%v3,%v10,%v22,2
170 	.word	0xe773,0xb200,0x79ad	# vmalo	%v23,%v3,%v11,%v23,2
171 	.word	0xe734,0xc200,0x39ad	# vmalo	%v19,%v4,%v12,%v19,2
172 	.word	0xe744,0xe200,0x49ad	# vmalo	%v20,%v4,%v14,%v20,2
173 	.word	0xe754,0x0200,0x5bad	# vmalo	%v21,%v4,%v16,%v21,2
174 	.word	0xe764,0x2200,0x6bad	# vmalo	%v22,%v4,%v18,%v22,2
175 	.word	0xe774,0xa200,0x79ad	# vmalo	%v23,%v4,%v10,%v23,2
176 	.word	0xe746,0x001a,0x3438	# vesrl	%v4,%v22,26,3
177 	.word	0xe713,0x001a,0x3438	# vesrl	%v1,%v19,26,3
178 	.word	0xe736,0xc000,0x0668	# vn	%v3,%v22,%v28
179 	.word	0xe703,0xc000,0x0668	# vn	%v0,%v19,%v28
180 	.word	0xe744,0x7000,0x32f3	# va	%v4,%v4,%v23,3
181 	.word	0xe711,0x4000,0x32f3	# va	%v1,%v1,%v20,3
182 	.word	0xe774,0x001a,0x3838	# vesrl	%v23,%v4,26,3
183 	.word	0xe741,0x001a,0x3838	# vesrl	%v20,%v1,26,3
184 	.word	0xe744,0xc000,0x0268	# vn	%v4,%v4,%v28
185 	.word	0xe711,0xc000,0x0268	# vn	%v1,%v1,%v28
186 	.word	0xe700,0x7000,0x32f3	# va	%v0,%v0,%v23,3
187 	.word	0xe725,0x4000,0x36f3	# va	%v2,%v21,%v20,3
188 	.word	0xe777,0x0002,0x3c30	# vesl	%v23,%v23,2,3
189 	.word	0xe752,0x001a,0x3838	# vesrl	%v21,%v2,26,3
190 	.word	0xe722,0xc000,0x0268	# vn	%v2,%v2,%v28
191 	.word	0xe700,0x7000,0x32f3	# va	%v0,%v0,%v23,3
192 	.word	0xe733,0x5000,0x32f3	# va	%v3,%v3,%v21,3
193 	.word	0xe730,0x001a,0x3838	# vesrl	%v19,%v0,26,3
194 	.word	0xe763,0x001a,0x3838	# vesrl	%v22,%v3,26,3
195 	.word	0xe700,0xc000,0x0268	# vn	%v0,%v0,%v28
196 	.word	0xe733,0xc000,0x0268	# vn	%v3,%v3,%v28
197 	.word	0xe711,0x3000,0x32f3	# va	%v1,%v1,%v19,3
198 	.word	0xe744,0x6000,0x32f3	# va	%v4,%v4,%v22,3
199 	br	%r14
200 .size	__poly1305_mul,.-__poly1305_mul
201 .type	__poly1305_blocks_vx,@function
202 .align	16
203 __poly1305_blocks_vx:
204 	lr	%r0,%r15
205 	stm	%r10,%r15,10*4(%r15)
206 	std	%f4,16*4+2*8(%r15)
207 	std	%f6,16*4+3*8(%r15)
208 	ahi	%r15,-96
209 	st	%r0,0(%r15)
210 	llgfr	%r4,%r4
211 	larl	%r1,.Lconst
212 	.word	0xe7c0,0x263f,0x3846	# vgm	%v28,38,63,3
213 	.word	0xe7df,0x1010,0x0c36	# vlm	%v29,%v31,16(%r1)
214 	.word	0xe300,0x2018,0x0012	# lt	%r0,24(%r2)
215 	jnz	.Lskip_init
216 	lg	%r11,32(%r2)
217 	lg	%r13,40(%r2)
218 	.word	0xecab,0x26bf,0x2655	# risbg	%r10,%r11,38,191,38
219 	srlg	%r12,%r11,52
220 	.word	0xecbb,0x26bf,0x0055	# risbg	%r11,%r11,38,191,0
221 	.word	0xe7ab,000000,0x3022	# vlvg	%v10,%r11,0,3
222 	.word	0xeccd,0x2633,0x0c55	# risbg	%r12,%r13,38,51,12
223 	.word	0xe7ba,000000,0x3022	# vlvg	%v11,%r10,0,3
224 	.word	0xecad,0x263f,0x3255	# risbg	%r10,%r13,38,63,50
225 	.word	0xe7dc,000000,0x3022	# vlvg	%v13,%r12,0,3
226 	srlg	%r12,%r13,40
227 	.word	0xe7fa,000000,0x3022	# vlvg	%v15,%r10,0,3
228 	.word	0xe71c,000000,0x3822	# vlvg	%v17,%r12,0,3
229 	.word	0xe7cb,0x0002,0x3030	# vesl	%v12,%v11,2,3
230 	.word	0xe7ed,0x0002,0x3030	# vesl	%v14,%v13,2,3
231 	.word	0xe70f,0x0002,0x3830	# vesl	%v16,%v15,2,3
232 	.word	0xe721,0x0002,0x3c30	# vesl	%v18,%v17,2,3
233 	.word	0xe70a,000000,0x0056	# vlr	%v0,%v10
234 	.word	0xe71b,000000,0x0056	# vlr	%v1,%v11
235 	.word	0xe72d,000000,0x0056	# vlr	%v2,%v13
236 	.word	0xe73f,000000,0x0056	# vlr	%v3,%v15
237 	.word	0xe741,000000,0x0456	# vlr	%v4,%v17
238 	.word	0xe7cc,0xb000,0x30f3	# va	%v12,%v12,%v11,3
239 	.word	0xe7ee,0xd000,0x30f3	# va	%v14,%v14,%v13,3
240 	.word	0xe700,0xf000,0x3cf3	# va	%v16,%v16,%v15,3
241 	.word	0xe722,0x1000,0x3ef3	# va	%v18,%v18,%v17,3
242 	brasl	%r14,__poly1305_mul
243 	.word	0xe7a0,0xa000,0x0084	# vpdi	%v10,%v0,%v10,0
244 	.word	0xe7b1,0xb000,0x0084	# vpdi	%v11,%v1,%v11,0
245 	.word	0xe7d2,0xd000,0x0084	# vpdi	%v13,%v2,%v13,0
246 	.word	0xe7f3,0xf000,0x0084	# vpdi	%v15,%v3,%v15,0
247 	.word	0xe714,0x1000,0x0a84	# vpdi	%v17,%v4,%v17,0
248 	.word	0xe700,000000,0x0084	# vpdi	%v0,%v0,%v0,0
249 	.word	0xe711,0x1000,0x0084	# vpdi	%v1,%v1,%v1,0
250 	.word	0xe722,0x2000,0x0084	# vpdi	%v2,%v2,%v2,0
251 	.word	0xe733,0x3000,0x0084	# vpdi	%v3,%v3,%v3,0
252 	.word	0xe744,0x4000,0x0084	# vpdi	%v4,%v4,%v4,0
253 	.word	0xe7cb,0x0002,0x3030	# vesl	%v12,%v11,2,3
254 	.word	0xe7ed,0x0002,0x3030	# vesl	%v14,%v13,2,3
255 	.word	0xe70f,0x0002,0x3830	# vesl	%v16,%v15,2,3
256 	.word	0xe721,0x0002,0x3c30	# vesl	%v18,%v17,2,3
257 	.word	0xe7cc,0xb000,0x30f3	# va	%v12,%v12,%v11,3
258 	.word	0xe7ee,0xd000,0x30f3	# va	%v14,%v14,%v13,3
259 	.word	0xe700,0xf000,0x3cf3	# va	%v16,%v16,%v15,3
260 	.word	0xe722,0x1000,0x3ef3	# va	%v18,%v18,%v17,3
261 	brasl	%r14,__poly1305_mul
262 	.word	0xe750,0x1000,0x0006	# vl	%v5,0(%r1)
263 	.word	0xe7aa,000000,0x508c	# vperm	%v10,%v10,%v0,%v5
264 	.word	0xe7bb,0x1000,0x508c	# vperm	%v11,%v11,%v1,%v5
265 	.word	0xe7dd,0x2000,0x508c	# vperm	%v13,%v13,%v2,%v5
266 	.word	0xe7ff,0x3000,0x508c	# vperm	%v15,%v15,%v3,%v5
267 	.word	0xe711,0x4000,0x5c8c	# vperm	%v17,%v17,%v4,%v5
268 	.word	0xe7cb,0x0002,0x2030	# vesl	%v12,%v11,2,2
269 	.word	0xe7ed,0x0002,0x2030	# vesl	%v14,%v13,2,2
270 	.word	0xe70f,0x0002,0x2830	# vesl	%v16,%v15,2,2
271 	.word	0xe721,0x0002,0x2c30	# vesl	%v18,%v17,2,2
272 	.word	0xe7cc,0xb000,0x20f3	# va	%v12,%v12,%v11,2
273 	.word	0xe7ee,0xd000,0x20f3	# va	%v14,%v14,%v13,2
274 	.word	0xe700,0xf000,0x2cf3	# va	%v16,%v16,%v15,2
275 	.word	0xe722,0x1000,0x2ef3	# va	%v18,%v18,%v17,2
276 	lg	%r11,0(%r2)
277 	lg	%r13,8(%r2)
278 	lg	%r14,16(%r2)
279 	.word	0xe700,000000,0x0044	# vgbm	%v0,0
280 	.word	0xe710,000000,0x0044	# vgbm	%v1,0
281 	.word	0xe720,000000,0x0044	# vgbm	%v2,0
282 	.word	0xe730,000000,0x0044	# vgbm	%v3,0
283 	.word	0xe740,000000,0x0044	# vgbm	%v4,0
284 	.word	0xecab,0x26bf,0x2655	# risbg	%r10,%r11,38,191,38
285 	srlg	%r12,%r11,52
286 	.word	0xecbb,0x26bf,0x0055	# risbg	%r11,%r11,38,191,0
287 	.word	0xe70b,000000,0x3022	# vlvg	%v0,%r11,0,3
288 	.word	0xeccd,0x2633,0x0c55	# risbg	%r12,%r13,38,51,12
289 	.word	0xe71a,000000,0x3022	# vlvg	%v1,%r10,0,3
290 	.word	0xecad,0x263f,0x3255	# risbg	%r10,%r13,38,63,50
291 	.word	0xe72c,000000,0x3022	# vlvg	%v2,%r12,0,3
292 	srlg	%r12,%r13,40
293 	.word	0xe73a,000000,0x3022	# vlvg	%v3,%r10,0,3
294 	.word	0xecce,0x2527,0x1855	# risbg	%r12,%r14,37,39,24
295 	.word	0xe74c,000000,0x3022	# vlvg	%v4,%r12,0,3
296 	lhi	%r0,1
297 	st	%r0,24(%r2)
298 	.word	0xe7a2,0x2030,0x043e	# vstm	%v10,%v18,48(%r2)
299 	.word	0xe7aa,0xa000,0x0084	# vpdi	%v10,%v10,%v10,0
300 	.word	0xe7bb,0xb000,0x0084	# vpdi	%v11,%v11,%v11,0
301 	.word	0xe7cc,0xc000,0x0084	# vpdi	%v12,%v12,%v12,0
302 	.word	0xe7dd,0xd000,0x0084	# vpdi	%v13,%v13,%v13,0
303 	.word	0xe7ee,0xe000,0x0084	# vpdi	%v14,%v14,%v14,0
304 	.word	0xe7ff,0xf000,0x0084	# vpdi	%v15,%v15,%v15,0
305 	.word	0xe700,000000,0x0e84	# vpdi	%v16,%v16,%v16,0
306 	.word	0xe711,0x1000,0x0e84	# vpdi	%v17,%v17,%v17,0
307 	.word	0xe722,0x2000,0x0e84	# vpdi	%v18,%v18,%v18,0
308 	j	.Loaded_hash
309 .align	16
310 .Lskip_init:
311 	.word	0xe700,0x2000,0x2004	# vllez	%v0,0(%r2),2
312 	.word	0xe710,0x2004,0x2004	# vllez	%v1,4(%r2),2
313 	.word	0xe720,0x2008,0x2004	# vllez	%v2,8(%r2),2
314 	.word	0xe730,0x200c,0x2004	# vllez	%v3,12(%r2),2
315 	.word	0xe740,0x2010,0x2004	# vllez	%v4,16(%r2),2
316 	.word	0xe7a0,0x2030,0x3005	# vlrep	%v10,0x30(%r2),3
317 	.word	0xe7b0,0x2040,0x3005	# vlrep	%v11,0x40(%r2),3
318 	.word	0xe7c0,0x2050,0x3005	# vlrep	%v12,0x50(%r2),3
319 	.word	0xe7d0,0x2060,0x3005	# vlrep	%v13,0x60(%r2),3
320 	.word	0xe7e0,0x2070,0x3005	# vlrep	%v14,0x70(%r2),3
321 	.word	0xe7f0,0x2080,0x3005	# vlrep	%v15,0x80(%r2),3
322 	.word	0xe700,0x2090,0x3805	# vlrep	%v16,0x90(%r2),3
323 	.word	0xe710,0x20a0,0x3805	# vlrep	%v17,0xa0(%r2),3
324 	.word	0xe720,0x20b0,0x3805	# vlrep	%v18,0xb0(%r2),3
325 .Loaded_hash:
326 	.word	0xe760,000000,0x0044	# vgbm	%v6,0
327 	.word	0xe780,000000,0x0044	# vgbm	%v8,0
328 	.word	0xe78b,0x3000,0x0c36	# vlm	%v24,%v27,0x00(%r3)
329 	la	%r3,0x40(%r3)
330 	.word	0xe7c0,0x061f,0x3846	# vgm	%v28,6,31,3
331 	.word	0xe790,0x0505,0x2046	# vgm	%v9,5,5,2
332 	.word	0xe75a,0xb000,0xd78c	# vperm	%v5,%v26,%v27,%v29
333 	.word	0xe77a,0xb000,0xf78c	# vperm	%v7,%v26,%v27,%v31
334 	.word	0xe7aa,0xb000,0xef8c	# vperm	%v26,%v26,%v27,%v30
335 	.word	0xe765,0xc006,0x3272	# verim	%v6,%v5,%v28,6,3
336 	.word	0xe755,0x0020,0x3030	# vesl	%v5,%v5,32,3
337 	.word	0xe777,0x001c,0x3030	# vesl	%v7,%v7,28,3
338 	.word	0xe78a,0xc012,0x3672	# verim	%v8,%v26,%v28,18,3
339 	.word	0xe79a,0xc03a,0x3672	# verim	%v9,%v26,%v28,58,3
340 	.word	0xe755,0xc000,0x0268	# vn	%v5,%v5,%v28
341 	.word	0xe777,0xc000,0x0268	# vn	%v7,%v7,%v28
342 	.word	0xe799,0x0002,0x2038	# vesrl	%v9,%v9,2,2
343 	.word	0xe7c0,0x263f,0x3846	# vgm	%v28,38,63,3
344 	.word	0xe7a8,0x9000,0xdf8c	# vperm	%v26,%v24,%v25,%v29
345 	.word	0xe7b8,0x9000,0xef8c	# vperm	%v27,%v24,%v25,%v30
346 	.word	0xe798,0x9000,0xff8c	# vperm	%v25,%v24,%v25,%v31
347 	.word	0xe75a,0xc000,0x3672	# verim	%v5,%v26,%v28,0,3
348 	.word	0xe76a,0xc026,0x3672	# verim	%v6,%v26,%v28,38,3
349 	.word	0xe779,0xc03c,0x3672	# verim	%v7,%v25,%v28,60,3
350 	.word	0xe78b,0xc032,0x3672	# verim	%v8,%v27,%v28,50,3
351 	.word	0xe7bb,0x0028,0x3c38	# vesrl	%v27,%v27,40,3
352 	.word	0xe799,0xb000,0x026a	# vo	%v9,%v9,%v27
353 	srlg	%r0,%r4,6
354 	ahi	%r0,-1
355 .align	16
356 .Loop_vx:
357 	.word	0xe735,0xa000,0x28a4	# vmle	%v19,%v5,%v10,2
358 	.word	0xe745,0xb000,0x28a4	# vmle	%v20,%v5,%v11,2
359 	.word	0xe755,0xd000,0x28a4	# vmle	%v21,%v5,%v13,2
360 	.word	0xe765,0xf000,0x28a4	# vmle	%v22,%v5,%v15,2
361 	.word	0xe775,0x1000,0x2aa4	# vmle	%v23,%v5,%v17,2
362 	.word	0xe736,0x2200,0x3bac	# vmale	%v19,%v6,%v18,%v19,2
363 	.word	0xe746,0xa200,0x49ac	# vmale	%v20,%v6,%v10,%v20,2
364 	.word	0xe756,0xb200,0x59ac	# vmale	%v21,%v6,%v11,%v21,2
365 	.word	0xe766,0xd200,0x69ac	# vmale	%v22,%v6,%v13,%v22,2
366 	.word	0xe776,0xf200,0x79ac	# vmale	%v23,%v6,%v15,%v23,2
367 	.word	0xe722,0x7000,0x20f3	# va	%v2,%v2,%v7,2
368 	.word	0xe700,0x5000,0x20f3	# va	%v0,%v0,%v5,2
369 	.word	0xe733,0x8000,0x20f3	# va	%v3,%v3,%v8,2
370 	.word	0xe711,0x6000,0x20f3	# va	%v1,%v1,%v6,2
371 	.word	0xe744,0x9000,0x20f3	# va	%v4,%v4,%v9,2
372 	.word	0xe737,0x0200,0x3bac	# vmale	%v19,%v7,%v16,%v19,2
373 	.word	0xe747,0x2200,0x4bac	# vmale	%v20,%v7,%v18,%v20,2
374 	.word	0xe757,0xa200,0x59ac	# vmale	%v21,%v7,%v10,%v21,2
375 	.word	0xe767,0xb200,0x69ac	# vmale	%v22,%v7,%v11,%v22,2
376 	.word	0xe777,0xd200,0x79ac	# vmale	%v23,%v7,%v13,%v23,2
377 	.word	0xe78b,0x3000,0x0c36	# vlm	%v24,%v27,0x00(%r3)
378 	la	%r3,0x40(%r3)
379 	.word	0xe7c0,0x061f,0x3846	# vgm	%v28,6,31,3
380 	.word	0xe738,0xe200,0x39ac	# vmale	%v19,%v8,%v14,%v19,2
381 	.word	0xe748,0x0200,0x4bac	# vmale	%v20,%v8,%v16,%v20,2
382 	.word	0xe758,0x2200,0x5bac	# vmale	%v21,%v8,%v18,%v21,2
383 	.word	0xe768,0xa200,0x69ac	# vmale	%v22,%v8,%v10,%v22,2
384 	.word	0xe778,0xb200,0x79ac	# vmale	%v23,%v8,%v11,%v23,2
385 	.word	0xe75a,0xb000,0xd78c	# vperm	%v5,%v26,%v27,%v29
386 	.word	0xe77a,0xb000,0xf78c	# vperm	%v7,%v26,%v27,%v31
387 	.word	0xe7aa,0xb000,0xef8c	# vperm	%v26,%v26,%v27,%v30
388 	.word	0xe739,0xc200,0x39ac	# vmale	%v19,%v9,%v12,%v19,2
389 	.word	0xe749,0xe200,0x49ac	# vmale	%v20,%v9,%v14,%v20,2
390 	.word	0xe759,0x0200,0x5bac	# vmale	%v21,%v9,%v16,%v21,2
391 	.word	0xe769,0x2200,0x6bac	# vmale	%v22,%v9,%v18,%v22,2
392 	.word	0xe779,0xa200,0x79ac	# vmale	%v23,%v9,%v10,%v23,2
393 	.word	0xe765,0xc006,0x3272	# verim	%v6,%v5,%v28,6,3
394 	.word	0xe755,0x0020,0x3030	# vesl	%v5,%v5,32,3
395 	.word	0xe777,0x001c,0x3030	# vesl	%v7,%v7,28,3
396 	.word	0xe78a,0xc012,0x3672	# verim	%v8,%v26,%v28,18,3
397 	.word	0xe730,0xa200,0x39ad	# vmalo	%v19,%v0,%v10,%v19,2
398 	.word	0xe740,0xb200,0x49ad	# vmalo	%v20,%v0,%v11,%v20,2
399 	.word	0xe750,0xd200,0x59ad	# vmalo	%v21,%v0,%v13,%v21,2
400 	.word	0xe760,0xf200,0x69ad	# vmalo	%v22,%v0,%v15,%v22,2
401 	.word	0xe770,0x1200,0x7bad	# vmalo	%v23,%v0,%v17,%v23,2
402 	.word	0xe790,0x0505,0x2046	# vgm	%v9,5,5,2
403 	.word	0xe79a,0xc03a,0x3672	# verim	%v9,%v26,%v28,58,3
404 	.word	0xe755,0xc000,0x0268	# vn	%v5,%v5,%v28
405 	.word	0xe777,0xc000,0x0268	# vn	%v7,%v7,%v28
406 	.word	0xe799,0x0002,0x2038	# vesrl	%v9,%v9,2,2
407 	.word	0xe731,0x2200,0x3bad	# vmalo	%v19,%v1,%v18,%v19,2
408 	.word	0xe741,0xa200,0x49ad	# vmalo	%v20,%v1,%v10,%v20,2
409 	.word	0xe751,0xb200,0x59ad	# vmalo	%v21,%v1,%v11,%v21,2
410 	.word	0xe761,0xd200,0x69ad	# vmalo	%v22,%v1,%v13,%v22,2
411 	.word	0xe771,0xf200,0x79ad	# vmalo	%v23,%v1,%v15,%v23,2
412 	.word	0xe7c0,0x263f,0x3846	# vgm	%v28,38,63,3
413 	.word	0xe7a8,0x9000,0xdf8c	# vperm	%v26,%v24,%v25,%v29
414 	.word	0xe7b8,0x9000,0xef8c	# vperm	%v27,%v24,%v25,%v30
415 	.word	0xe798,0x9000,0xff8c	# vperm	%v25,%v24,%v25,%v31
416 	.word	0xe732,0x0200,0x3bad	# vmalo	%v19,%v2,%v16,%v19,2
417 	.word	0xe742,0x2200,0x4bad	# vmalo	%v20,%v2,%v18,%v20,2
418 	.word	0xe752,0xa200,0x59ad	# vmalo	%v21,%v2,%v10,%v21,2
419 	.word	0xe762,0xb200,0x69ad	# vmalo	%v22,%v2,%v11,%v22,2
420 	.word	0xe772,0xd200,0x79ad	# vmalo	%v23,%v2,%v13,%v23,2
421 	.word	0xe75a,0xc000,0x3672	# verim	%v5,%v26,%v28,0,3
422 	.word	0xe76a,0xc026,0x3672	# verim	%v6,%v26,%v28,38,3
423 	.word	0xe779,0xc03c,0x3672	# verim	%v7,%v25,%v28,60,3
424 	.word	0xe733,0xe200,0x39ad	# vmalo	%v19,%v3,%v14,%v19,2
425 	.word	0xe743,0x0200,0x4bad	# vmalo	%v20,%v3,%v16,%v20,2
426 	.word	0xe753,0x2200,0x5bad	# vmalo	%v21,%v3,%v18,%v21,2
427 	.word	0xe763,0xa200,0x69ad	# vmalo	%v22,%v3,%v10,%v22,2
428 	.word	0xe773,0xb200,0x79ad	# vmalo	%v23,%v3,%v11,%v23,2
429 	.word	0xe78b,0xc032,0x3672	# verim	%v8,%v27,%v28,50,3
430 	.word	0xe7bb,0x0028,0x3c38	# vesrl	%v27,%v27,40,3
431 	.word	0xe799,0xb000,0x026a	# vo	%v9,%v9,%v27
432 	.word	0xe734,0xc200,0x39ad	# vmalo	%v19,%v4,%v12,%v19,2
433 	.word	0xe744,0xe200,0x49ad	# vmalo	%v20,%v4,%v14,%v20,2
434 	.word	0xe754,0x0200,0x5bad	# vmalo	%v21,%v4,%v16,%v21,2
435 	.word	0xe764,0x2200,0x6bad	# vmalo	%v22,%v4,%v18,%v22,2
436 	.word	0xe774,0xa200,0x79ad	# vmalo	%v23,%v4,%v10,%v23,2
437 	.word	0xe746,0x001a,0x3438	# vesrl	%v4,%v22,26,3
438 	.word	0xe713,0x001a,0x3438	# vesrl	%v1,%v19,26,3
439 	.word	0xe736,0xc000,0x0668	# vn	%v3,%v22,%v28
440 	.word	0xe703,0xc000,0x0668	# vn	%v0,%v19,%v28
441 	.word	0xe744,0x7000,0x32f3	# va	%v4,%v4,%v23,3
442 	.word	0xe711,0x4000,0x32f3	# va	%v1,%v1,%v20,3
443 	.word	0xe774,0x001a,0x3838	# vesrl	%v23,%v4,26,3
444 	.word	0xe741,0x001a,0x3838	# vesrl	%v20,%v1,26,3
445 	.word	0xe744,0xc000,0x0268	# vn	%v4,%v4,%v28
446 	.word	0xe711,0xc000,0x0268	# vn	%v1,%v1,%v28
447 	.word	0xe700,0x7000,0x32f3	# va	%v0,%v0,%v23,3
448 	.word	0xe725,0x4000,0x36f3	# va	%v2,%v21,%v20,3
449 	.word	0xe777,0x0002,0x3c30	# vesl	%v23,%v23,2,3
450 	.word	0xe752,0x001a,0x3838	# vesrl	%v21,%v2,26,3
451 	.word	0xe722,0xc000,0x0268	# vn	%v2,%v2,%v28
452 	.word	0xe700,0x7000,0x32f3	# va	%v0,%v0,%v23,3
453 	.word	0xe733,0x5000,0x32f3	# va	%v3,%v3,%v21,3
454 	.word	0xe730,0x001a,0x3838	# vesrl	%v19,%v0,26,3
455 	.word	0xe763,0x001a,0x3838	# vesrl	%v22,%v3,26,3
456 	.word	0xe700,0xc000,0x0268	# vn	%v0,%v0,%v28
457 	.word	0xe733,0xc000,0x0268	# vn	%v3,%v3,%v28
458 	.word	0xe711,0x3000,0x32f3	# va	%v1,%v1,%v19,3
459 	.word	0xe744,0x6000,0x32f3	# va	%v4,%v4,%v22,3
460 	brct	%r0,.Loop_vx
461 	.word	0xe7a2,0x2030,0x0436	# vlm	%v10,%v18,48(%r2)
462 	lghi	%r0,48
463 	lcr	%r4,%r4
464 	nr	%r4,%r0
465 	slr	%r3,%r4
466 .Last:
467 	.word	0xe735,0xa000,0x28a4	# vmle	%v19,%v5,%v10,2
468 	.word	0xe745,0xb000,0x28a4	# vmle	%v20,%v5,%v11,2
469 	.word	0xe755,0xd000,0x28a4	# vmle	%v21,%v5,%v13,2
470 	.word	0xe765,0xf000,0x28a4	# vmle	%v22,%v5,%v15,2
471 	.word	0xe775,0x1000,0x2aa4	# vmle	%v23,%v5,%v17,2
472 	.word	0xe736,0x2200,0x3bac	# vmale	%v19,%v6,%v18,%v19,2
473 	.word	0xe746,0xa200,0x49ac	# vmale	%v20,%v6,%v10,%v20,2
474 	.word	0xe756,0xb200,0x59ac	# vmale	%v21,%v6,%v11,%v21,2
475 	.word	0xe766,0xd200,0x69ac	# vmale	%v22,%v6,%v13,%v22,2
476 	.word	0xe776,0xf200,0x79ac	# vmale	%v23,%v6,%v15,%v23,2
477 	.word	0xe700,0x5000,0x20f3	# va	%v0,%v0,%v5,2
478 	.word	0xe711,0x6000,0x20f3	# va	%v1,%v1,%v6,2
479 	.word	0xe722,0x7000,0x20f3	# va	%v2,%v2,%v7,2
480 	.word	0xe733,0x8000,0x20f3	# va	%v3,%v3,%v8,2
481 	.word	0xe744,0x9000,0x20f3	# va	%v4,%v4,%v9,2
482 	.word	0xe737,0x0200,0x3bac	# vmale	%v19,%v7,%v16,%v19,2
483 	.word	0xe747,0x2200,0x4bac	# vmale	%v20,%v7,%v18,%v20,2
484 	.word	0xe757,0xa200,0x59ac	# vmale	%v21,%v7,%v10,%v21,2
485 	.word	0xe767,0xb200,0x69ac	# vmale	%v22,%v7,%v11,%v22,2
486 	.word	0xe777,0xd200,0x79ac	# vmale	%v23,%v7,%v13,%v23,2
487 	.word	0xe738,0xe200,0x39ac	# vmale	%v19,%v8,%v14,%v19,2
488 	.word	0xe748,0x0200,0x4bac	# vmale	%v20,%v8,%v16,%v20,2
489 	.word	0xe758,0x2200,0x5bac	# vmale	%v21,%v8,%v18,%v21,2
490 	.word	0xe768,0xa200,0x69ac	# vmale	%v22,%v8,%v10,%v22,2
491 	.word	0xe778,0xb200,0x79ac	# vmale	%v23,%v8,%v11,%v23,2
492 	.word	0xe739,0xc200,0x39ac	# vmale	%v19,%v9,%v12,%v19,2
493 	.word	0xe749,0xe200,0x49ac	# vmale	%v20,%v9,%v14,%v20,2
494 	.word	0xe759,0x0200,0x5bac	# vmale	%v21,%v9,%v16,%v21,2
495 	.word	0xe769,0x2200,0x6bac	# vmale	%v22,%v9,%v18,%v22,2
496 	.word	0xe779,0xa200,0x79ac	# vmale	%v23,%v9,%v10,%v23,2
497 	.word	0xe730,0xa200,0x39ad	# vmalo	%v19,%v0,%v10,%v19,2
498 	.word	0xe740,0xb200,0x49ad	# vmalo	%v20,%v0,%v11,%v20,2
499 	.word	0xe750,0xd200,0x59ad	# vmalo	%v21,%v0,%v13,%v21,2
500 	.word	0xe760,0xf200,0x69ad	# vmalo	%v22,%v0,%v15,%v22,2
501 	.word	0xe770,0x1200,0x7bad	# vmalo	%v23,%v0,%v17,%v23,2
502 	.word	0xe731,0x2200,0x3bad	# vmalo	%v19,%v1,%v18,%v19,2
503 	.word	0xe741,0xa200,0x49ad	# vmalo	%v20,%v1,%v10,%v20,2
504 	.word	0xe751,0xb200,0x59ad	# vmalo	%v21,%v1,%v11,%v21,2
505 	.word	0xe761,0xd200,0x69ad	# vmalo	%v22,%v1,%v13,%v22,2
506 	.word	0xe771,0xf200,0x79ad	# vmalo	%v23,%v1,%v15,%v23,2
507 	.word	0xe732,0x0200,0x3bad	# vmalo	%v19,%v2,%v16,%v19,2
508 	.word	0xe742,0x2200,0x4bad	# vmalo	%v20,%v2,%v18,%v20,2
509 	.word	0xe752,0xa200,0x59ad	# vmalo	%v21,%v2,%v10,%v21,2
510 	.word	0xe762,0xb200,0x69ad	# vmalo	%v22,%v2,%v11,%v22,2
511 	.word	0xe772,0xd200,0x79ad	# vmalo	%v23,%v2,%v13,%v23,2
512 	.word	0xe733,0xe200,0x39ad	# vmalo	%v19,%v3,%v14,%v19,2
513 	.word	0xe743,0x0200,0x4bad	# vmalo	%v20,%v3,%v16,%v20,2
514 	.word	0xe753,0x2200,0x5bad	# vmalo	%v21,%v3,%v18,%v21,2
515 	.word	0xe763,0xa200,0x69ad	# vmalo	%v22,%v3,%v10,%v22,2
516 	.word	0xe773,0xb200,0x79ad	# vmalo	%v23,%v3,%v11,%v23,2
517 	.word	0xe734,0xc200,0x39ad	# vmalo	%v19,%v4,%v12,%v19,2
518 	.word	0xe744,0xe200,0x49ad	# vmalo	%v20,%v4,%v14,%v20,2
519 	.word	0xe754,0x0200,0x5bad	# vmalo	%v21,%v4,%v16,%v21,2
520 	.word	0xe764,0x2200,0x6bad	# vmalo	%v22,%v4,%v18,%v22,2
521 	.word	0xe774,0xa200,0x79ad	# vmalo	%v23,%v4,%v10,%v23,2
522 	.word	0xe700,000000,0x0044	# vgbm	%v0,0
523 	.word	0xe733,000000,0x3c67	# vsumq	%v19,%v19,%v0,3
524 	.word	0xe744,000000,0x3c67	# vsumq	%v20,%v20,%v0,3
525 	.word	0xe755,000000,0x3c67	# vsumq	%v21,%v21,%v0,3
526 	.word	0xe766,000000,0x3c67	# vsumq	%v22,%v22,%v0,3
527 	.word	0xe777,000000,0x3c67	# vsumq	%v23,%v23,%v0,3
528 	.word	0xe746,0x001a,0x3438	# vesrl	%v4,%v22,26,3
529 	.word	0xe713,0x001a,0x3438	# vesrl	%v1,%v19,26,3
530 	.word	0xe736,0xc000,0x0668	# vn	%v3,%v22,%v28
531 	.word	0xe703,0xc000,0x0668	# vn	%v0,%v19,%v28
532 	.word	0xe744,0x7000,0x32f3	# va	%v4,%v4,%v23,3
533 	.word	0xe711,0x4000,0x32f3	# va	%v1,%v1,%v20,3
534 	.word	0xe774,0x001a,0x3838	# vesrl	%v23,%v4,26,3
535 	.word	0xe741,0x001a,0x3838	# vesrl	%v20,%v1,26,3
536 	.word	0xe744,0xc000,0x0268	# vn	%v4,%v4,%v28
537 	.word	0xe711,0xc000,0x0268	# vn	%v1,%v1,%v28
538 	.word	0xe700,0x7000,0x32f3	# va	%v0,%v0,%v23,3
539 	.word	0xe725,0x4000,0x36f3	# va	%v2,%v21,%v20,3
540 	.word	0xe777,0x0002,0x3c30	# vesl	%v23,%v23,2,3
541 	.word	0xe752,0x001a,0x3838	# vesrl	%v21,%v2,26,3
542 	.word	0xe722,0xc000,0x0268	# vn	%v2,%v2,%v28
543 	.word	0xe700,0x7000,0x32f3	# va	%v0,%v0,%v23,3
544 	.word	0xe733,0x5000,0x32f3	# va	%v3,%v3,%v21,3
545 	.word	0xe730,0x001a,0x3838	# vesrl	%v19,%v0,26,3
546 	.word	0xe763,0x001a,0x3838	# vesrl	%v22,%v3,26,3
547 	.word	0xe700,0xc000,0x0268	# vn	%v0,%v0,%v28
548 	.word	0xe733,0xc000,0x0268	# vn	%v3,%v3,%v28
549 	.word	0xe711,0x3000,0x32f3	# va	%v1,%v1,%v19,3
550 	.word	0xe744,0x6000,0x32f3	# va	%v4,%v4,%v22,3
551 	.word	0xc24f,000000,000000	# clfi	%r4,0
552 	je	.Ldone
553 	.word	0xe78b,0x3000,0x0c36	# vlm	%v24,%v27,0x00(%r3)
554 	.word	0xe7c0,0x061f,0x3846	# vgm	%v28,6,31,3
555 	.word	0xe790,0x0505,0x2046	# vgm	%v9,5,5,2
556 	.word	0xe75a,0xb000,0xd78c	# vperm	%v5,%v26,%v27,%v29
557 	.word	0xe77a,0xb000,0xf78c	# vperm	%v7,%v26,%v27,%v31
558 	.word	0xe7aa,0xb000,0xef8c	# vperm	%v26,%v26,%v27,%v30
559 	.word	0xe734,0x1030,0x0806	# vl	%v19,0x30(%r4,%r1)
560 	.word	0xe744,0x1060,0x0806	# vl	%v20,0x60(%r4,%r1)
561 	.word	0xe765,0xc006,0x3272	# verim	%v6,%v5,%v28,6,3
562 	.word	0xe755,0x0020,0x3030	# vesl	%v5,%v5,32,3
563 	.word	0xe777,0x001c,0x3030	# vesl	%v7,%v7,28,3
564 	.word	0xe78a,0xc012,0x3672	# verim	%v8,%v26,%v28,18,3
565 	.word	0xe79a,0xc03a,0x3672	# verim	%v9,%v26,%v28,58,3
566 	.word	0xe755,0xc000,0x0268	# vn	%v5,%v5,%v28
567 	.word	0xe777,0xc000,0x0268	# vn	%v7,%v7,%v28
568 	.word	0xe799,0x0002,0x2038	# vesrl	%v9,%v9,2,2
569 	.word	0xe7c0,0x263f,0x3846	# vgm	%v28,38,63,3
570 	.word	0xe7a8,0x9000,0xdf8c	# vperm	%v26,%v24,%v25,%v29
571 	.word	0xe7b8,0x9000,0xef8c	# vperm	%v27,%v24,%v25,%v30
572 	.word	0xe798,0x9000,0xff8c	# vperm	%v25,%v24,%v25,%v31
573 	.word	0xe75a,0xc000,0x3672	# verim	%v5,%v26,%v28,0,3
574 	.word	0xe76a,0xc026,0x3672	# verim	%v6,%v26,%v28,38,3
575 	.word	0xe779,0xc03c,0x3672	# verim	%v7,%v25,%v28,60,3
576 	.word	0xe78b,0xc032,0x3672	# verim	%v8,%v27,%v28,50,3
577 	.word	0xe7bb,0x0028,0x3c38	# vesrl	%v27,%v27,40,3
578 	.word	0xe799,0xb000,0x026a	# vo	%v9,%v9,%v27
579 	.word	0xe700,000000,0x318c	# vperm	%v0,%v0,%v0,%v19
580 	.word	0xe755,0x4000,0x0268	# vn	%v5,%v5,%v20
581 	.word	0xe711,0x1000,0x318c	# vperm	%v1,%v1,%v1,%v19
582 	.word	0xe766,0x4000,0x0268	# vn	%v6,%v6,%v20
583 	.word	0xe722,0x2000,0x318c	# vperm	%v2,%v2,%v2,%v19
584 	.word	0xe777,0x4000,0x0268	# vn	%v7,%v7,%v20
585 	.word	0xe733,0x3000,0x318c	# vperm	%v3,%v3,%v3,%v19
586 	.word	0xe788,0x4000,0x0268	# vn	%v8,%v8,%v20
587 	.word	0xe744,0x4000,0x318c	# vperm	%v4,%v4,%v4,%v19
588 	.word	0xe799,0x4000,0x0268	# vn	%v9,%v9,%v20
589 	.word	0xe755,000000,0x20f3	# va	%v5,%v5,%v0,2
590 	.word	0xe700,000000,0x0044	# vgbm	%v0,0
591 	.word	0xe766,0x1000,0x20f3	# va	%v6,%v6,%v1,2
592 	.word	0xe710,000000,0x0044	# vgbm	%v1,0
593 	.word	0xe777,0x2000,0x20f3	# va	%v7,%v7,%v2,2
594 	.word	0xe720,000000,0x0044	# vgbm	%v2,0
595 	.word	0xe788,0x3000,0x20f3	# va	%v8,%v8,%v3,2
596 	.word	0xe730,000000,0x0044	# vgbm	%v3,0
597 	.word	0xe799,0x4000,0x20f3	# va	%v9,%v9,%v4,2
598 	.word	0xe740,000000,0x0044	# vgbm	%v4,0
599 	lhi	%r4,0
600 	j	.Last
601 .Ldone:
602 	.word	0xe700,0x2000,0x300b	# vstef	%v0,0(%r2),3
603 	.word	0xe710,0x2004,0x300b	# vstef	%v1,4(%r2),3
604 	.word	0xe720,0x2008,0x300b	# vstef	%v2,8(%r2),3
605 	.word	0xe730,0x200c,0x300b	# vstef	%v3,12(%r2),3
606 	.word	0xe740,0x2010,0x300b	# vstef	%v4,16(%r2),3
607 	ld	%f4,96+16*4+2*8(%r15)
608 	ld	%f6,96+16*4+3*8(%r15)
609 	lm	%r10,%r15,96+10*4(%r15)
610 	br	%r14
611 .size	__poly1305_blocks_vx,.-__poly1305_blocks_vx
612 .globl	poly1305_emit
613 .type	poly1305_emit,@function
614 .align	16
615 poly1305_emit:
616 .Lpoly1305_emit:
617 	stm	%r6,%r10,6*4(%r15)
618 	lg	%r8,0(%r2)
619 	lg	%r9,8(%r2)
620 	lg	%r10,16(%r2)
621 	llgfr	%r0,%r8
622 	srlg	%r5,%r8,32
623 	llgfr	%r1,%r9
624 	srlg	%r6,%r9,32
625 	srlg	%r7,%r10,32
626 	sllg	%r0,%r0,26
627 	algr	%r5,%r0
628 	sllg	%r0,%r6,52
629 	srlg	%r6,%r6,12
630 	sllg	%r1,%r1,14
631 	algr	%r5,%r0
632 	alcgr	%r6,%r1
633 	sllg	%r0,%r7,40
634 	srlg	%r7,%r7,24
635 	lghi	%r1,0
636 	algr	%r6,%r0
637 	alcgr	%r7,%r1
638 	llgf	%r0,24(%r2)
639 	lcgr	%r0,%r0
640 	xgr	%r5,%r8
641 	xgr	%r6,%r9
642 	xgr	%r7,%r10
643 	ngr	%r5,%r0
644 	ngr	%r6,%r0
645 	ngr	%r7,%r0
646 	xgr	%r5,%r8
647 	xgr	%r6,%r9
648 	xgr	%r7,%r10
649 	lghi	%r0,5
650 	lgr	%r8,%r5
651 	lgr	%r9,%r6
652 	algr	%r5,%r0
653 	alcgr	%r6,%r1
654 	alcgr	%r7,%r1
655 	srlg	%r7,%r7,2
656 	slgr	%r1,%r7
657 	lg	%r10,0(%r4)
658 	lg	%r2,8(%r4)
659 	xgr	%r5,%r8
660 	xgr	%r6,%r9
661 	ngr	%r5,%r1
662 	ngr	%r6,%r1
663 	xgr	%r5,%r8
664 	rllg	%r8,%r10,32
665 	xgr	%r6,%r9
666 	rllg	%r9,%r2,32
667 	algr	%r5,%r8
668 	alcgr	%r6,%r9
669 	strvg	%r5,0(%r3)
670 	strvg	%r6,8(%r3)
671 	lm	%r6,%r10,6*4(%r15)
672 	br	%r14
673 .size	poly1305_emit,.-poly1305_emit
674 .align	16
675 .Lconst:
676 .long	67438087,336926231,202182159,471670303
677 .long	117835012,50462976,387323156,319951120
678 .long	252579084,185207048,522067228,454695192
679 .long	0,151521030,0,421009174
680 .long	0,0,0,202182159
681 .long	202182159,0,0,0
682 .long	0,0,202182159,0
683 .long	4294967295,0,4294967295,4294967295
684 .long	4294967295,0,4294967295,0
685 .long	0,0,4294967295,0
686 .string	"Poly1305 for s390x, CRYPTOGAMS by <appro@openssl.org>"
687