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