xref: /freebsd/sys/crypto/openssl/amd64/rsaz-3k-avx512.S (revision 4757b351ea9d59d71d4a38b82506d2d16fcd560d)
1*4757b351SPierre Pronchery/* Do not modify. This file is auto-generated from rsaz-3k-avx512.pl. */
2*4757b351SPierre Pronchery.text
3*4757b351SPierre Pronchery
4*4757b351SPierre Pronchery.globl	ossl_rsaz_amm52x30_x1_ifma256
5*4757b351SPierre Pronchery.type	ossl_rsaz_amm52x30_x1_ifma256,@function
6*4757b351SPierre Pronchery.align	32
7*4757b351SPierre Proncheryossl_rsaz_amm52x30_x1_ifma256:
8*4757b351SPierre Pronchery.cfi_startproc
9*4757b351SPierre Pronchery.byte	243,15,30,250
10*4757b351SPierre Pronchery	pushq	%rbx
11*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
12*4757b351SPierre Pronchery.cfi_offset	%rbx,-16
13*4757b351SPierre Pronchery	pushq	%rbp
14*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
15*4757b351SPierre Pronchery.cfi_offset	%rbp,-24
16*4757b351SPierre Pronchery	pushq	%r12
17*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
18*4757b351SPierre Pronchery.cfi_offset	%r12,-32
19*4757b351SPierre Pronchery	pushq	%r13
20*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
21*4757b351SPierre Pronchery.cfi_offset	%r13,-40
22*4757b351SPierre Pronchery	pushq	%r14
23*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
24*4757b351SPierre Pronchery.cfi_offset	%r14,-48
25*4757b351SPierre Pronchery	pushq	%r15
26*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
27*4757b351SPierre Pronchery.cfi_offset	%r15,-56
28*4757b351SPierre Pronchery
29*4757b351SPierre Pronchery	vpxord	%ymm0,%ymm0,%ymm0
30*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm3
31*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm4
32*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm5
33*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm6
34*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm7
35*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm8
36*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm9
37*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm10
38*4757b351SPierre Pronchery
39*4757b351SPierre Pronchery	xorl	%r9d,%r9d
40*4757b351SPierre Pronchery
41*4757b351SPierre Pronchery	movq	%rdx,%r11
42*4757b351SPierre Pronchery	movq	$0xfffffffffffff,%rax
43*4757b351SPierre Pronchery
44*4757b351SPierre Pronchery
45*4757b351SPierre Pronchery	movl	$7,%ebx
46*4757b351SPierre Pronchery
47*4757b351SPierre Pronchery.align	32
48*4757b351SPierre Pronchery.Lloop7:
49*4757b351SPierre Pronchery	movq	0(%r11),%r13
50*4757b351SPierre Pronchery
51*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm1
52*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
53*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
54*4757b351SPierre Pronchery	addq	%r13,%r9
55*4757b351SPierre Pronchery	movq	%r12,%r10
56*4757b351SPierre Pronchery	adcq	$0,%r10
57*4757b351SPierre Pronchery
58*4757b351SPierre Pronchery	movq	%r8,%r13
59*4757b351SPierre Pronchery	imulq	%r9,%r13
60*4757b351SPierre Pronchery	andq	%rax,%r13
61*4757b351SPierre Pronchery
62*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm2
63*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
64*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
65*4757b351SPierre Pronchery	addq	%r13,%r9
66*4757b351SPierre Pronchery	adcq	%r12,%r10
67*4757b351SPierre Pronchery
68*4757b351SPierre Pronchery	shrq	$52,%r9
69*4757b351SPierre Pronchery	salq	$12,%r10
70*4757b351SPierre Pronchery	orq	%r10,%r9
71*4757b351SPierre Pronchery
72*4757b351SPierre Pronchery	vpmadd52luq	0(%rsi),%ymm1,%ymm3
73*4757b351SPierre Pronchery	vpmadd52luq	32(%rsi),%ymm1,%ymm4
74*4757b351SPierre Pronchery	vpmadd52luq	64(%rsi),%ymm1,%ymm5
75*4757b351SPierre Pronchery	vpmadd52luq	96(%rsi),%ymm1,%ymm6
76*4757b351SPierre Pronchery	vpmadd52luq	128(%rsi),%ymm1,%ymm7
77*4757b351SPierre Pronchery	vpmadd52luq	160(%rsi),%ymm1,%ymm8
78*4757b351SPierre Pronchery	vpmadd52luq	192(%rsi),%ymm1,%ymm9
79*4757b351SPierre Pronchery	vpmadd52luq	224(%rsi),%ymm1,%ymm10
80*4757b351SPierre Pronchery
81*4757b351SPierre Pronchery	vpmadd52luq	0(%rcx),%ymm2,%ymm3
82*4757b351SPierre Pronchery	vpmadd52luq	32(%rcx),%ymm2,%ymm4
83*4757b351SPierre Pronchery	vpmadd52luq	64(%rcx),%ymm2,%ymm5
84*4757b351SPierre Pronchery	vpmadd52luq	96(%rcx),%ymm2,%ymm6
85*4757b351SPierre Pronchery	vpmadd52luq	128(%rcx),%ymm2,%ymm7
86*4757b351SPierre Pronchery	vpmadd52luq	160(%rcx),%ymm2,%ymm8
87*4757b351SPierre Pronchery	vpmadd52luq	192(%rcx),%ymm2,%ymm9
88*4757b351SPierre Pronchery	vpmadd52luq	224(%rcx),%ymm2,%ymm10
89*4757b351SPierre Pronchery
90*4757b351SPierre Pronchery
91*4757b351SPierre Pronchery	valignq	$1,%ymm3,%ymm4,%ymm3
92*4757b351SPierre Pronchery	valignq	$1,%ymm4,%ymm5,%ymm4
93*4757b351SPierre Pronchery	valignq	$1,%ymm5,%ymm6,%ymm5
94*4757b351SPierre Pronchery	valignq	$1,%ymm6,%ymm7,%ymm6
95*4757b351SPierre Pronchery	valignq	$1,%ymm7,%ymm8,%ymm7
96*4757b351SPierre Pronchery	valignq	$1,%ymm8,%ymm9,%ymm8
97*4757b351SPierre Pronchery	valignq	$1,%ymm9,%ymm10,%ymm9
98*4757b351SPierre Pronchery	valignq	$1,%ymm10,%ymm0,%ymm10
99*4757b351SPierre Pronchery
100*4757b351SPierre Pronchery	vmovq	%xmm3,%r13
101*4757b351SPierre Pronchery	addq	%r13,%r9
102*4757b351SPierre Pronchery
103*4757b351SPierre Pronchery	vpmadd52huq	0(%rsi),%ymm1,%ymm3
104*4757b351SPierre Pronchery	vpmadd52huq	32(%rsi),%ymm1,%ymm4
105*4757b351SPierre Pronchery	vpmadd52huq	64(%rsi),%ymm1,%ymm5
106*4757b351SPierre Pronchery	vpmadd52huq	96(%rsi),%ymm1,%ymm6
107*4757b351SPierre Pronchery	vpmadd52huq	128(%rsi),%ymm1,%ymm7
108*4757b351SPierre Pronchery	vpmadd52huq	160(%rsi),%ymm1,%ymm8
109*4757b351SPierre Pronchery	vpmadd52huq	192(%rsi),%ymm1,%ymm9
110*4757b351SPierre Pronchery	vpmadd52huq	224(%rsi),%ymm1,%ymm10
111*4757b351SPierre Pronchery
112*4757b351SPierre Pronchery	vpmadd52huq	0(%rcx),%ymm2,%ymm3
113*4757b351SPierre Pronchery	vpmadd52huq	32(%rcx),%ymm2,%ymm4
114*4757b351SPierre Pronchery	vpmadd52huq	64(%rcx),%ymm2,%ymm5
115*4757b351SPierre Pronchery	vpmadd52huq	96(%rcx),%ymm2,%ymm6
116*4757b351SPierre Pronchery	vpmadd52huq	128(%rcx),%ymm2,%ymm7
117*4757b351SPierre Pronchery	vpmadd52huq	160(%rcx),%ymm2,%ymm8
118*4757b351SPierre Pronchery	vpmadd52huq	192(%rcx),%ymm2,%ymm9
119*4757b351SPierre Pronchery	vpmadd52huq	224(%rcx),%ymm2,%ymm10
120*4757b351SPierre Pronchery	movq	8(%r11),%r13
121*4757b351SPierre Pronchery
122*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm1
123*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
124*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
125*4757b351SPierre Pronchery	addq	%r13,%r9
126*4757b351SPierre Pronchery	movq	%r12,%r10
127*4757b351SPierre Pronchery	adcq	$0,%r10
128*4757b351SPierre Pronchery
129*4757b351SPierre Pronchery	movq	%r8,%r13
130*4757b351SPierre Pronchery	imulq	%r9,%r13
131*4757b351SPierre Pronchery	andq	%rax,%r13
132*4757b351SPierre Pronchery
133*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm2
134*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
135*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
136*4757b351SPierre Pronchery	addq	%r13,%r9
137*4757b351SPierre Pronchery	adcq	%r12,%r10
138*4757b351SPierre Pronchery
139*4757b351SPierre Pronchery	shrq	$52,%r9
140*4757b351SPierre Pronchery	salq	$12,%r10
141*4757b351SPierre Pronchery	orq	%r10,%r9
142*4757b351SPierre Pronchery
143*4757b351SPierre Pronchery	vpmadd52luq	0(%rsi),%ymm1,%ymm3
144*4757b351SPierre Pronchery	vpmadd52luq	32(%rsi),%ymm1,%ymm4
145*4757b351SPierre Pronchery	vpmadd52luq	64(%rsi),%ymm1,%ymm5
146*4757b351SPierre Pronchery	vpmadd52luq	96(%rsi),%ymm1,%ymm6
147*4757b351SPierre Pronchery	vpmadd52luq	128(%rsi),%ymm1,%ymm7
148*4757b351SPierre Pronchery	vpmadd52luq	160(%rsi),%ymm1,%ymm8
149*4757b351SPierre Pronchery	vpmadd52luq	192(%rsi),%ymm1,%ymm9
150*4757b351SPierre Pronchery	vpmadd52luq	224(%rsi),%ymm1,%ymm10
151*4757b351SPierre Pronchery
152*4757b351SPierre Pronchery	vpmadd52luq	0(%rcx),%ymm2,%ymm3
153*4757b351SPierre Pronchery	vpmadd52luq	32(%rcx),%ymm2,%ymm4
154*4757b351SPierre Pronchery	vpmadd52luq	64(%rcx),%ymm2,%ymm5
155*4757b351SPierre Pronchery	vpmadd52luq	96(%rcx),%ymm2,%ymm6
156*4757b351SPierre Pronchery	vpmadd52luq	128(%rcx),%ymm2,%ymm7
157*4757b351SPierre Pronchery	vpmadd52luq	160(%rcx),%ymm2,%ymm8
158*4757b351SPierre Pronchery	vpmadd52luq	192(%rcx),%ymm2,%ymm9
159*4757b351SPierre Pronchery	vpmadd52luq	224(%rcx),%ymm2,%ymm10
160*4757b351SPierre Pronchery
161*4757b351SPierre Pronchery
162*4757b351SPierre Pronchery	valignq	$1,%ymm3,%ymm4,%ymm3
163*4757b351SPierre Pronchery	valignq	$1,%ymm4,%ymm5,%ymm4
164*4757b351SPierre Pronchery	valignq	$1,%ymm5,%ymm6,%ymm5
165*4757b351SPierre Pronchery	valignq	$1,%ymm6,%ymm7,%ymm6
166*4757b351SPierre Pronchery	valignq	$1,%ymm7,%ymm8,%ymm7
167*4757b351SPierre Pronchery	valignq	$1,%ymm8,%ymm9,%ymm8
168*4757b351SPierre Pronchery	valignq	$1,%ymm9,%ymm10,%ymm9
169*4757b351SPierre Pronchery	valignq	$1,%ymm10,%ymm0,%ymm10
170*4757b351SPierre Pronchery
171*4757b351SPierre Pronchery	vmovq	%xmm3,%r13
172*4757b351SPierre Pronchery	addq	%r13,%r9
173*4757b351SPierre Pronchery
174*4757b351SPierre Pronchery	vpmadd52huq	0(%rsi),%ymm1,%ymm3
175*4757b351SPierre Pronchery	vpmadd52huq	32(%rsi),%ymm1,%ymm4
176*4757b351SPierre Pronchery	vpmadd52huq	64(%rsi),%ymm1,%ymm5
177*4757b351SPierre Pronchery	vpmadd52huq	96(%rsi),%ymm1,%ymm6
178*4757b351SPierre Pronchery	vpmadd52huq	128(%rsi),%ymm1,%ymm7
179*4757b351SPierre Pronchery	vpmadd52huq	160(%rsi),%ymm1,%ymm8
180*4757b351SPierre Pronchery	vpmadd52huq	192(%rsi),%ymm1,%ymm9
181*4757b351SPierre Pronchery	vpmadd52huq	224(%rsi),%ymm1,%ymm10
182*4757b351SPierre Pronchery
183*4757b351SPierre Pronchery	vpmadd52huq	0(%rcx),%ymm2,%ymm3
184*4757b351SPierre Pronchery	vpmadd52huq	32(%rcx),%ymm2,%ymm4
185*4757b351SPierre Pronchery	vpmadd52huq	64(%rcx),%ymm2,%ymm5
186*4757b351SPierre Pronchery	vpmadd52huq	96(%rcx),%ymm2,%ymm6
187*4757b351SPierre Pronchery	vpmadd52huq	128(%rcx),%ymm2,%ymm7
188*4757b351SPierre Pronchery	vpmadd52huq	160(%rcx),%ymm2,%ymm8
189*4757b351SPierre Pronchery	vpmadd52huq	192(%rcx),%ymm2,%ymm9
190*4757b351SPierre Pronchery	vpmadd52huq	224(%rcx),%ymm2,%ymm10
191*4757b351SPierre Pronchery	movq	16(%r11),%r13
192*4757b351SPierre Pronchery
193*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm1
194*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
195*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
196*4757b351SPierre Pronchery	addq	%r13,%r9
197*4757b351SPierre Pronchery	movq	%r12,%r10
198*4757b351SPierre Pronchery	adcq	$0,%r10
199*4757b351SPierre Pronchery
200*4757b351SPierre Pronchery	movq	%r8,%r13
201*4757b351SPierre Pronchery	imulq	%r9,%r13
202*4757b351SPierre Pronchery	andq	%rax,%r13
203*4757b351SPierre Pronchery
204*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm2
205*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
206*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
207*4757b351SPierre Pronchery	addq	%r13,%r9
208*4757b351SPierre Pronchery	adcq	%r12,%r10
209*4757b351SPierre Pronchery
210*4757b351SPierre Pronchery	shrq	$52,%r9
211*4757b351SPierre Pronchery	salq	$12,%r10
212*4757b351SPierre Pronchery	orq	%r10,%r9
213*4757b351SPierre Pronchery
214*4757b351SPierre Pronchery	vpmadd52luq	0(%rsi),%ymm1,%ymm3
215*4757b351SPierre Pronchery	vpmadd52luq	32(%rsi),%ymm1,%ymm4
216*4757b351SPierre Pronchery	vpmadd52luq	64(%rsi),%ymm1,%ymm5
217*4757b351SPierre Pronchery	vpmadd52luq	96(%rsi),%ymm1,%ymm6
218*4757b351SPierre Pronchery	vpmadd52luq	128(%rsi),%ymm1,%ymm7
219*4757b351SPierre Pronchery	vpmadd52luq	160(%rsi),%ymm1,%ymm8
220*4757b351SPierre Pronchery	vpmadd52luq	192(%rsi),%ymm1,%ymm9
221*4757b351SPierre Pronchery	vpmadd52luq	224(%rsi),%ymm1,%ymm10
222*4757b351SPierre Pronchery
223*4757b351SPierre Pronchery	vpmadd52luq	0(%rcx),%ymm2,%ymm3
224*4757b351SPierre Pronchery	vpmadd52luq	32(%rcx),%ymm2,%ymm4
225*4757b351SPierre Pronchery	vpmadd52luq	64(%rcx),%ymm2,%ymm5
226*4757b351SPierre Pronchery	vpmadd52luq	96(%rcx),%ymm2,%ymm6
227*4757b351SPierre Pronchery	vpmadd52luq	128(%rcx),%ymm2,%ymm7
228*4757b351SPierre Pronchery	vpmadd52luq	160(%rcx),%ymm2,%ymm8
229*4757b351SPierre Pronchery	vpmadd52luq	192(%rcx),%ymm2,%ymm9
230*4757b351SPierre Pronchery	vpmadd52luq	224(%rcx),%ymm2,%ymm10
231*4757b351SPierre Pronchery
232*4757b351SPierre Pronchery
233*4757b351SPierre Pronchery	valignq	$1,%ymm3,%ymm4,%ymm3
234*4757b351SPierre Pronchery	valignq	$1,%ymm4,%ymm5,%ymm4
235*4757b351SPierre Pronchery	valignq	$1,%ymm5,%ymm6,%ymm5
236*4757b351SPierre Pronchery	valignq	$1,%ymm6,%ymm7,%ymm6
237*4757b351SPierre Pronchery	valignq	$1,%ymm7,%ymm8,%ymm7
238*4757b351SPierre Pronchery	valignq	$1,%ymm8,%ymm9,%ymm8
239*4757b351SPierre Pronchery	valignq	$1,%ymm9,%ymm10,%ymm9
240*4757b351SPierre Pronchery	valignq	$1,%ymm10,%ymm0,%ymm10
241*4757b351SPierre Pronchery
242*4757b351SPierre Pronchery	vmovq	%xmm3,%r13
243*4757b351SPierre Pronchery	addq	%r13,%r9
244*4757b351SPierre Pronchery
245*4757b351SPierre Pronchery	vpmadd52huq	0(%rsi),%ymm1,%ymm3
246*4757b351SPierre Pronchery	vpmadd52huq	32(%rsi),%ymm1,%ymm4
247*4757b351SPierre Pronchery	vpmadd52huq	64(%rsi),%ymm1,%ymm5
248*4757b351SPierre Pronchery	vpmadd52huq	96(%rsi),%ymm1,%ymm6
249*4757b351SPierre Pronchery	vpmadd52huq	128(%rsi),%ymm1,%ymm7
250*4757b351SPierre Pronchery	vpmadd52huq	160(%rsi),%ymm1,%ymm8
251*4757b351SPierre Pronchery	vpmadd52huq	192(%rsi),%ymm1,%ymm9
252*4757b351SPierre Pronchery	vpmadd52huq	224(%rsi),%ymm1,%ymm10
253*4757b351SPierre Pronchery
254*4757b351SPierre Pronchery	vpmadd52huq	0(%rcx),%ymm2,%ymm3
255*4757b351SPierre Pronchery	vpmadd52huq	32(%rcx),%ymm2,%ymm4
256*4757b351SPierre Pronchery	vpmadd52huq	64(%rcx),%ymm2,%ymm5
257*4757b351SPierre Pronchery	vpmadd52huq	96(%rcx),%ymm2,%ymm6
258*4757b351SPierre Pronchery	vpmadd52huq	128(%rcx),%ymm2,%ymm7
259*4757b351SPierre Pronchery	vpmadd52huq	160(%rcx),%ymm2,%ymm8
260*4757b351SPierre Pronchery	vpmadd52huq	192(%rcx),%ymm2,%ymm9
261*4757b351SPierre Pronchery	vpmadd52huq	224(%rcx),%ymm2,%ymm10
262*4757b351SPierre Pronchery	movq	24(%r11),%r13
263*4757b351SPierre Pronchery
264*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm1
265*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
266*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
267*4757b351SPierre Pronchery	addq	%r13,%r9
268*4757b351SPierre Pronchery	movq	%r12,%r10
269*4757b351SPierre Pronchery	adcq	$0,%r10
270*4757b351SPierre Pronchery
271*4757b351SPierre Pronchery	movq	%r8,%r13
272*4757b351SPierre Pronchery	imulq	%r9,%r13
273*4757b351SPierre Pronchery	andq	%rax,%r13
274*4757b351SPierre Pronchery
275*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm2
276*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
277*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
278*4757b351SPierre Pronchery	addq	%r13,%r9
279*4757b351SPierre Pronchery	adcq	%r12,%r10
280*4757b351SPierre Pronchery
281*4757b351SPierre Pronchery	shrq	$52,%r9
282*4757b351SPierre Pronchery	salq	$12,%r10
283*4757b351SPierre Pronchery	orq	%r10,%r9
284*4757b351SPierre Pronchery
285*4757b351SPierre Pronchery	vpmadd52luq	0(%rsi),%ymm1,%ymm3
286*4757b351SPierre Pronchery	vpmadd52luq	32(%rsi),%ymm1,%ymm4
287*4757b351SPierre Pronchery	vpmadd52luq	64(%rsi),%ymm1,%ymm5
288*4757b351SPierre Pronchery	vpmadd52luq	96(%rsi),%ymm1,%ymm6
289*4757b351SPierre Pronchery	vpmadd52luq	128(%rsi),%ymm1,%ymm7
290*4757b351SPierre Pronchery	vpmadd52luq	160(%rsi),%ymm1,%ymm8
291*4757b351SPierre Pronchery	vpmadd52luq	192(%rsi),%ymm1,%ymm9
292*4757b351SPierre Pronchery	vpmadd52luq	224(%rsi),%ymm1,%ymm10
293*4757b351SPierre Pronchery
294*4757b351SPierre Pronchery	vpmadd52luq	0(%rcx),%ymm2,%ymm3
295*4757b351SPierre Pronchery	vpmadd52luq	32(%rcx),%ymm2,%ymm4
296*4757b351SPierre Pronchery	vpmadd52luq	64(%rcx),%ymm2,%ymm5
297*4757b351SPierre Pronchery	vpmadd52luq	96(%rcx),%ymm2,%ymm6
298*4757b351SPierre Pronchery	vpmadd52luq	128(%rcx),%ymm2,%ymm7
299*4757b351SPierre Pronchery	vpmadd52luq	160(%rcx),%ymm2,%ymm8
300*4757b351SPierre Pronchery	vpmadd52luq	192(%rcx),%ymm2,%ymm9
301*4757b351SPierre Pronchery	vpmadd52luq	224(%rcx),%ymm2,%ymm10
302*4757b351SPierre Pronchery
303*4757b351SPierre Pronchery
304*4757b351SPierre Pronchery	valignq	$1,%ymm3,%ymm4,%ymm3
305*4757b351SPierre Pronchery	valignq	$1,%ymm4,%ymm5,%ymm4
306*4757b351SPierre Pronchery	valignq	$1,%ymm5,%ymm6,%ymm5
307*4757b351SPierre Pronchery	valignq	$1,%ymm6,%ymm7,%ymm6
308*4757b351SPierre Pronchery	valignq	$1,%ymm7,%ymm8,%ymm7
309*4757b351SPierre Pronchery	valignq	$1,%ymm8,%ymm9,%ymm8
310*4757b351SPierre Pronchery	valignq	$1,%ymm9,%ymm10,%ymm9
311*4757b351SPierre Pronchery	valignq	$1,%ymm10,%ymm0,%ymm10
312*4757b351SPierre Pronchery
313*4757b351SPierre Pronchery	vmovq	%xmm3,%r13
314*4757b351SPierre Pronchery	addq	%r13,%r9
315*4757b351SPierre Pronchery
316*4757b351SPierre Pronchery	vpmadd52huq	0(%rsi),%ymm1,%ymm3
317*4757b351SPierre Pronchery	vpmadd52huq	32(%rsi),%ymm1,%ymm4
318*4757b351SPierre Pronchery	vpmadd52huq	64(%rsi),%ymm1,%ymm5
319*4757b351SPierre Pronchery	vpmadd52huq	96(%rsi),%ymm1,%ymm6
320*4757b351SPierre Pronchery	vpmadd52huq	128(%rsi),%ymm1,%ymm7
321*4757b351SPierre Pronchery	vpmadd52huq	160(%rsi),%ymm1,%ymm8
322*4757b351SPierre Pronchery	vpmadd52huq	192(%rsi),%ymm1,%ymm9
323*4757b351SPierre Pronchery	vpmadd52huq	224(%rsi),%ymm1,%ymm10
324*4757b351SPierre Pronchery
325*4757b351SPierre Pronchery	vpmadd52huq	0(%rcx),%ymm2,%ymm3
326*4757b351SPierre Pronchery	vpmadd52huq	32(%rcx),%ymm2,%ymm4
327*4757b351SPierre Pronchery	vpmadd52huq	64(%rcx),%ymm2,%ymm5
328*4757b351SPierre Pronchery	vpmadd52huq	96(%rcx),%ymm2,%ymm6
329*4757b351SPierre Pronchery	vpmadd52huq	128(%rcx),%ymm2,%ymm7
330*4757b351SPierre Pronchery	vpmadd52huq	160(%rcx),%ymm2,%ymm8
331*4757b351SPierre Pronchery	vpmadd52huq	192(%rcx),%ymm2,%ymm9
332*4757b351SPierre Pronchery	vpmadd52huq	224(%rcx),%ymm2,%ymm10
333*4757b351SPierre Pronchery	leaq	32(%r11),%r11
334*4757b351SPierre Pronchery	decl	%ebx
335*4757b351SPierre Pronchery	jne	.Lloop7
336*4757b351SPierre Pronchery	movq	0(%r11),%r13
337*4757b351SPierre Pronchery
338*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm1
339*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
340*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
341*4757b351SPierre Pronchery	addq	%r13,%r9
342*4757b351SPierre Pronchery	movq	%r12,%r10
343*4757b351SPierre Pronchery	adcq	$0,%r10
344*4757b351SPierre Pronchery
345*4757b351SPierre Pronchery	movq	%r8,%r13
346*4757b351SPierre Pronchery	imulq	%r9,%r13
347*4757b351SPierre Pronchery	andq	%rax,%r13
348*4757b351SPierre Pronchery
349*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm2
350*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
351*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
352*4757b351SPierre Pronchery	addq	%r13,%r9
353*4757b351SPierre Pronchery	adcq	%r12,%r10
354*4757b351SPierre Pronchery
355*4757b351SPierre Pronchery	shrq	$52,%r9
356*4757b351SPierre Pronchery	salq	$12,%r10
357*4757b351SPierre Pronchery	orq	%r10,%r9
358*4757b351SPierre Pronchery
359*4757b351SPierre Pronchery	vpmadd52luq	0(%rsi),%ymm1,%ymm3
360*4757b351SPierre Pronchery	vpmadd52luq	32(%rsi),%ymm1,%ymm4
361*4757b351SPierre Pronchery	vpmadd52luq	64(%rsi),%ymm1,%ymm5
362*4757b351SPierre Pronchery	vpmadd52luq	96(%rsi),%ymm1,%ymm6
363*4757b351SPierre Pronchery	vpmadd52luq	128(%rsi),%ymm1,%ymm7
364*4757b351SPierre Pronchery	vpmadd52luq	160(%rsi),%ymm1,%ymm8
365*4757b351SPierre Pronchery	vpmadd52luq	192(%rsi),%ymm1,%ymm9
366*4757b351SPierre Pronchery	vpmadd52luq	224(%rsi),%ymm1,%ymm10
367*4757b351SPierre Pronchery
368*4757b351SPierre Pronchery	vpmadd52luq	0(%rcx),%ymm2,%ymm3
369*4757b351SPierre Pronchery	vpmadd52luq	32(%rcx),%ymm2,%ymm4
370*4757b351SPierre Pronchery	vpmadd52luq	64(%rcx),%ymm2,%ymm5
371*4757b351SPierre Pronchery	vpmadd52luq	96(%rcx),%ymm2,%ymm6
372*4757b351SPierre Pronchery	vpmadd52luq	128(%rcx),%ymm2,%ymm7
373*4757b351SPierre Pronchery	vpmadd52luq	160(%rcx),%ymm2,%ymm8
374*4757b351SPierre Pronchery	vpmadd52luq	192(%rcx),%ymm2,%ymm9
375*4757b351SPierre Pronchery	vpmadd52luq	224(%rcx),%ymm2,%ymm10
376*4757b351SPierre Pronchery
377*4757b351SPierre Pronchery
378*4757b351SPierre Pronchery	valignq	$1,%ymm3,%ymm4,%ymm3
379*4757b351SPierre Pronchery	valignq	$1,%ymm4,%ymm5,%ymm4
380*4757b351SPierre Pronchery	valignq	$1,%ymm5,%ymm6,%ymm5
381*4757b351SPierre Pronchery	valignq	$1,%ymm6,%ymm7,%ymm6
382*4757b351SPierre Pronchery	valignq	$1,%ymm7,%ymm8,%ymm7
383*4757b351SPierre Pronchery	valignq	$1,%ymm8,%ymm9,%ymm8
384*4757b351SPierre Pronchery	valignq	$1,%ymm9,%ymm10,%ymm9
385*4757b351SPierre Pronchery	valignq	$1,%ymm10,%ymm0,%ymm10
386*4757b351SPierre Pronchery
387*4757b351SPierre Pronchery	vmovq	%xmm3,%r13
388*4757b351SPierre Pronchery	addq	%r13,%r9
389*4757b351SPierre Pronchery
390*4757b351SPierre Pronchery	vpmadd52huq	0(%rsi),%ymm1,%ymm3
391*4757b351SPierre Pronchery	vpmadd52huq	32(%rsi),%ymm1,%ymm4
392*4757b351SPierre Pronchery	vpmadd52huq	64(%rsi),%ymm1,%ymm5
393*4757b351SPierre Pronchery	vpmadd52huq	96(%rsi),%ymm1,%ymm6
394*4757b351SPierre Pronchery	vpmadd52huq	128(%rsi),%ymm1,%ymm7
395*4757b351SPierre Pronchery	vpmadd52huq	160(%rsi),%ymm1,%ymm8
396*4757b351SPierre Pronchery	vpmadd52huq	192(%rsi),%ymm1,%ymm9
397*4757b351SPierre Pronchery	vpmadd52huq	224(%rsi),%ymm1,%ymm10
398*4757b351SPierre Pronchery
399*4757b351SPierre Pronchery	vpmadd52huq	0(%rcx),%ymm2,%ymm3
400*4757b351SPierre Pronchery	vpmadd52huq	32(%rcx),%ymm2,%ymm4
401*4757b351SPierre Pronchery	vpmadd52huq	64(%rcx),%ymm2,%ymm5
402*4757b351SPierre Pronchery	vpmadd52huq	96(%rcx),%ymm2,%ymm6
403*4757b351SPierre Pronchery	vpmadd52huq	128(%rcx),%ymm2,%ymm7
404*4757b351SPierre Pronchery	vpmadd52huq	160(%rcx),%ymm2,%ymm8
405*4757b351SPierre Pronchery	vpmadd52huq	192(%rcx),%ymm2,%ymm9
406*4757b351SPierre Pronchery	vpmadd52huq	224(%rcx),%ymm2,%ymm10
407*4757b351SPierre Pronchery	movq	8(%r11),%r13
408*4757b351SPierre Pronchery
409*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm1
410*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
411*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
412*4757b351SPierre Pronchery	addq	%r13,%r9
413*4757b351SPierre Pronchery	movq	%r12,%r10
414*4757b351SPierre Pronchery	adcq	$0,%r10
415*4757b351SPierre Pronchery
416*4757b351SPierre Pronchery	movq	%r8,%r13
417*4757b351SPierre Pronchery	imulq	%r9,%r13
418*4757b351SPierre Pronchery	andq	%rax,%r13
419*4757b351SPierre Pronchery
420*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm2
421*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
422*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
423*4757b351SPierre Pronchery	addq	%r13,%r9
424*4757b351SPierre Pronchery	adcq	%r12,%r10
425*4757b351SPierre Pronchery
426*4757b351SPierre Pronchery	shrq	$52,%r9
427*4757b351SPierre Pronchery	salq	$12,%r10
428*4757b351SPierre Pronchery	orq	%r10,%r9
429*4757b351SPierre Pronchery
430*4757b351SPierre Pronchery	vpmadd52luq	0(%rsi),%ymm1,%ymm3
431*4757b351SPierre Pronchery	vpmadd52luq	32(%rsi),%ymm1,%ymm4
432*4757b351SPierre Pronchery	vpmadd52luq	64(%rsi),%ymm1,%ymm5
433*4757b351SPierre Pronchery	vpmadd52luq	96(%rsi),%ymm1,%ymm6
434*4757b351SPierre Pronchery	vpmadd52luq	128(%rsi),%ymm1,%ymm7
435*4757b351SPierre Pronchery	vpmadd52luq	160(%rsi),%ymm1,%ymm8
436*4757b351SPierre Pronchery	vpmadd52luq	192(%rsi),%ymm1,%ymm9
437*4757b351SPierre Pronchery	vpmadd52luq	224(%rsi),%ymm1,%ymm10
438*4757b351SPierre Pronchery
439*4757b351SPierre Pronchery	vpmadd52luq	0(%rcx),%ymm2,%ymm3
440*4757b351SPierre Pronchery	vpmadd52luq	32(%rcx),%ymm2,%ymm4
441*4757b351SPierre Pronchery	vpmadd52luq	64(%rcx),%ymm2,%ymm5
442*4757b351SPierre Pronchery	vpmadd52luq	96(%rcx),%ymm2,%ymm6
443*4757b351SPierre Pronchery	vpmadd52luq	128(%rcx),%ymm2,%ymm7
444*4757b351SPierre Pronchery	vpmadd52luq	160(%rcx),%ymm2,%ymm8
445*4757b351SPierre Pronchery	vpmadd52luq	192(%rcx),%ymm2,%ymm9
446*4757b351SPierre Pronchery	vpmadd52luq	224(%rcx),%ymm2,%ymm10
447*4757b351SPierre Pronchery
448*4757b351SPierre Pronchery
449*4757b351SPierre Pronchery	valignq	$1,%ymm3,%ymm4,%ymm3
450*4757b351SPierre Pronchery	valignq	$1,%ymm4,%ymm5,%ymm4
451*4757b351SPierre Pronchery	valignq	$1,%ymm5,%ymm6,%ymm5
452*4757b351SPierre Pronchery	valignq	$1,%ymm6,%ymm7,%ymm6
453*4757b351SPierre Pronchery	valignq	$1,%ymm7,%ymm8,%ymm7
454*4757b351SPierre Pronchery	valignq	$1,%ymm8,%ymm9,%ymm8
455*4757b351SPierre Pronchery	valignq	$1,%ymm9,%ymm10,%ymm9
456*4757b351SPierre Pronchery	valignq	$1,%ymm10,%ymm0,%ymm10
457*4757b351SPierre Pronchery
458*4757b351SPierre Pronchery	vmovq	%xmm3,%r13
459*4757b351SPierre Pronchery	addq	%r13,%r9
460*4757b351SPierre Pronchery
461*4757b351SPierre Pronchery	vpmadd52huq	0(%rsi),%ymm1,%ymm3
462*4757b351SPierre Pronchery	vpmadd52huq	32(%rsi),%ymm1,%ymm4
463*4757b351SPierre Pronchery	vpmadd52huq	64(%rsi),%ymm1,%ymm5
464*4757b351SPierre Pronchery	vpmadd52huq	96(%rsi),%ymm1,%ymm6
465*4757b351SPierre Pronchery	vpmadd52huq	128(%rsi),%ymm1,%ymm7
466*4757b351SPierre Pronchery	vpmadd52huq	160(%rsi),%ymm1,%ymm8
467*4757b351SPierre Pronchery	vpmadd52huq	192(%rsi),%ymm1,%ymm9
468*4757b351SPierre Pronchery	vpmadd52huq	224(%rsi),%ymm1,%ymm10
469*4757b351SPierre Pronchery
470*4757b351SPierre Pronchery	vpmadd52huq	0(%rcx),%ymm2,%ymm3
471*4757b351SPierre Pronchery	vpmadd52huq	32(%rcx),%ymm2,%ymm4
472*4757b351SPierre Pronchery	vpmadd52huq	64(%rcx),%ymm2,%ymm5
473*4757b351SPierre Pronchery	vpmadd52huq	96(%rcx),%ymm2,%ymm6
474*4757b351SPierre Pronchery	vpmadd52huq	128(%rcx),%ymm2,%ymm7
475*4757b351SPierre Pronchery	vpmadd52huq	160(%rcx),%ymm2,%ymm8
476*4757b351SPierre Pronchery	vpmadd52huq	192(%rcx),%ymm2,%ymm9
477*4757b351SPierre Pronchery	vpmadd52huq	224(%rcx),%ymm2,%ymm10
478*4757b351SPierre Pronchery
479*4757b351SPierre Pronchery	vpbroadcastq	%r9,%ymm0
480*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm3,%ymm3
481*4757b351SPierre Pronchery
482*4757b351SPierre Pronchery
483*4757b351SPierre Pronchery
484*4757b351SPierre Pronchery	vpsrlq	$52,%ymm3,%ymm0
485*4757b351SPierre Pronchery	vpsrlq	$52,%ymm4,%ymm1
486*4757b351SPierre Pronchery	vpsrlq	$52,%ymm5,%ymm2
487*4757b351SPierre Pronchery	vpsrlq	$52,%ymm6,%ymm19
488*4757b351SPierre Pronchery	vpsrlq	$52,%ymm7,%ymm20
489*4757b351SPierre Pronchery	vpsrlq	$52,%ymm8,%ymm21
490*4757b351SPierre Pronchery	vpsrlq	$52,%ymm9,%ymm22
491*4757b351SPierre Pronchery	vpsrlq	$52,%ymm10,%ymm23
492*4757b351SPierre Pronchery
493*4757b351SPierre Pronchery
494*4757b351SPierre Pronchery	valignq	$3,%ymm22,%ymm23,%ymm23
495*4757b351SPierre Pronchery	valignq	$3,%ymm21,%ymm22,%ymm22
496*4757b351SPierre Pronchery	valignq	$3,%ymm20,%ymm21,%ymm21
497*4757b351SPierre Pronchery	valignq	$3,%ymm19,%ymm20,%ymm20
498*4757b351SPierre Pronchery	valignq	$3,%ymm2,%ymm19,%ymm19
499*4757b351SPierre Pronchery	valignq	$3,%ymm1,%ymm2,%ymm2
500*4757b351SPierre Pronchery	valignq	$3,%ymm0,%ymm1,%ymm1
501*4757b351SPierre Pronchery	valignq	$3,.Lzeros(%rip),%ymm0,%ymm0
502*4757b351SPierre Pronchery
503*4757b351SPierre Pronchery
504*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm3,%ymm3
505*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm4,%ymm4
506*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm5,%ymm5
507*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm6,%ymm6
508*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm7,%ymm7
509*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm8,%ymm8
510*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm9,%ymm9
511*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm10,%ymm10
512*4757b351SPierre Pronchery
513*4757b351SPierre Pronchery
514*4757b351SPierre Pronchery	vpaddq	%ymm0,%ymm3,%ymm3
515*4757b351SPierre Pronchery	vpaddq	%ymm1,%ymm4,%ymm4
516*4757b351SPierre Pronchery	vpaddq	%ymm2,%ymm5,%ymm5
517*4757b351SPierre Pronchery	vpaddq	%ymm19,%ymm6,%ymm6
518*4757b351SPierre Pronchery	vpaddq	%ymm20,%ymm7,%ymm7
519*4757b351SPierre Pronchery	vpaddq	%ymm21,%ymm8,%ymm8
520*4757b351SPierre Pronchery	vpaddq	%ymm22,%ymm9,%ymm9
521*4757b351SPierre Pronchery	vpaddq	%ymm23,%ymm10,%ymm10
522*4757b351SPierre Pronchery
523*4757b351SPierre Pronchery
524*4757b351SPierre Pronchery
525*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm3,%k1
526*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm4,%k2
527*4757b351SPierre Pronchery	kmovb	%k1,%r14d
528*4757b351SPierre Pronchery	kmovb	%k2,%r13d
529*4757b351SPierre Pronchery	shlb	$4,%r13b
530*4757b351SPierre Pronchery	orb	%r13b,%r14b
531*4757b351SPierre Pronchery
532*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm5,%k1
533*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm6,%k2
534*4757b351SPierre Pronchery	kmovb	%k1,%r13d
535*4757b351SPierre Pronchery	kmovb	%k2,%r12d
536*4757b351SPierre Pronchery	shlb	$4,%r12b
537*4757b351SPierre Pronchery	orb	%r12b,%r13b
538*4757b351SPierre Pronchery
539*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm7,%k1
540*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm8,%k2
541*4757b351SPierre Pronchery	kmovb	%k1,%r12d
542*4757b351SPierre Pronchery	kmovb	%k2,%r11d
543*4757b351SPierre Pronchery	shlb	$4,%r11b
544*4757b351SPierre Pronchery	orb	%r11b,%r12b
545*4757b351SPierre Pronchery
546*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm9,%k1
547*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm10,%k2
548*4757b351SPierre Pronchery	kmovb	%k1,%r11d
549*4757b351SPierre Pronchery	kmovb	%k2,%r10d
550*4757b351SPierre Pronchery	shlb	$4,%r10b
551*4757b351SPierre Pronchery	orb	%r10b,%r11b
552*4757b351SPierre Pronchery
553*4757b351SPierre Pronchery	addb	%r14b,%r14b
554*4757b351SPierre Pronchery	adcb	%r13b,%r13b
555*4757b351SPierre Pronchery	adcb	%r12b,%r12b
556*4757b351SPierre Pronchery	adcb	%r11b,%r11b
557*4757b351SPierre Pronchery
558*4757b351SPierre Pronchery
559*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm3,%k1
560*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm4,%k2
561*4757b351SPierre Pronchery	kmovb	%k1,%r9d
562*4757b351SPierre Pronchery	kmovb	%k2,%r8d
563*4757b351SPierre Pronchery	shlb	$4,%r8b
564*4757b351SPierre Pronchery	orb	%r8b,%r9b
565*4757b351SPierre Pronchery
566*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm5,%k1
567*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm6,%k2
568*4757b351SPierre Pronchery	kmovb	%k1,%r8d
569*4757b351SPierre Pronchery	kmovb	%k2,%edx
570*4757b351SPierre Pronchery	shlb	$4,%dl
571*4757b351SPierre Pronchery	orb	%dl,%r8b
572*4757b351SPierre Pronchery
573*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm7,%k1
574*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm8,%k2
575*4757b351SPierre Pronchery	kmovb	%k1,%edx
576*4757b351SPierre Pronchery	kmovb	%k2,%ecx
577*4757b351SPierre Pronchery	shlb	$4,%cl
578*4757b351SPierre Pronchery	orb	%cl,%dl
579*4757b351SPierre Pronchery
580*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm9,%k1
581*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm10,%k2
582*4757b351SPierre Pronchery	kmovb	%k1,%ecx
583*4757b351SPierre Pronchery	kmovb	%k2,%ebx
584*4757b351SPierre Pronchery	shlb	$4,%bl
585*4757b351SPierre Pronchery	orb	%bl,%cl
586*4757b351SPierre Pronchery
587*4757b351SPierre Pronchery	addb	%r9b,%r14b
588*4757b351SPierre Pronchery	adcb	%r8b,%r13b
589*4757b351SPierre Pronchery	adcb	%dl,%r12b
590*4757b351SPierre Pronchery	adcb	%cl,%r11b
591*4757b351SPierre Pronchery
592*4757b351SPierre Pronchery	xorb	%r9b,%r14b
593*4757b351SPierre Pronchery	xorb	%r8b,%r13b
594*4757b351SPierre Pronchery	xorb	%dl,%r12b
595*4757b351SPierre Pronchery	xorb	%cl,%r11b
596*4757b351SPierre Pronchery
597*4757b351SPierre Pronchery	kmovb	%r14d,%k1
598*4757b351SPierre Pronchery	shrb	$4,%r14b
599*4757b351SPierre Pronchery	kmovb	%r14d,%k2
600*4757b351SPierre Pronchery	kmovb	%r13d,%k3
601*4757b351SPierre Pronchery	shrb	$4,%r13b
602*4757b351SPierre Pronchery	kmovb	%r13d,%k4
603*4757b351SPierre Pronchery	kmovb	%r12d,%k5
604*4757b351SPierre Pronchery	shrb	$4,%r12b
605*4757b351SPierre Pronchery	kmovb	%r12d,%k6
606*4757b351SPierre Pronchery	kmovb	%r11d,%k7
607*4757b351SPierre Pronchery
608*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm3,%ymm3{%k1}
609*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm4,%ymm4{%k2}
610*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm5,%ymm5{%k3}
611*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm6,%ymm6{%k4}
612*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm7,%ymm7{%k5}
613*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm8,%ymm8{%k6}
614*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm9,%ymm9{%k7}
615*4757b351SPierre Pronchery
616*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm3,%ymm3
617*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm4,%ymm4
618*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm5,%ymm5
619*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm6,%ymm6
620*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm7,%ymm7
621*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm8,%ymm8
622*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm9,%ymm9
623*4757b351SPierre Pronchery
624*4757b351SPierre Pronchery	shrb	$4,%r11b
625*4757b351SPierre Pronchery	kmovb	%r11d,%k1
626*4757b351SPierre Pronchery
627*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm10,%ymm10{%k1}
628*4757b351SPierre Pronchery
629*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm10,%ymm10
630*4757b351SPierre Pronchery
631*4757b351SPierre Pronchery	vmovdqu64	%ymm3,0(%rdi)
632*4757b351SPierre Pronchery	vmovdqu64	%ymm4,32(%rdi)
633*4757b351SPierre Pronchery	vmovdqu64	%ymm5,64(%rdi)
634*4757b351SPierre Pronchery	vmovdqu64	%ymm6,96(%rdi)
635*4757b351SPierre Pronchery	vmovdqu64	%ymm7,128(%rdi)
636*4757b351SPierre Pronchery	vmovdqu64	%ymm8,160(%rdi)
637*4757b351SPierre Pronchery	vmovdqu64	%ymm9,192(%rdi)
638*4757b351SPierre Pronchery	vmovdqu64	%ymm10,224(%rdi)
639*4757b351SPierre Pronchery
640*4757b351SPierre Pronchery	vzeroupper
641*4757b351SPierre Pronchery	leaq	(%rsp),%rax
642*4757b351SPierre Pronchery.cfi_def_cfa_register	%rax
643*4757b351SPierre Pronchery	movq	0(%rax),%r15
644*4757b351SPierre Pronchery.cfi_restore	%r15
645*4757b351SPierre Pronchery	movq	8(%rax),%r14
646*4757b351SPierre Pronchery.cfi_restore	%r14
647*4757b351SPierre Pronchery	movq	16(%rax),%r13
648*4757b351SPierre Pronchery.cfi_restore	%r13
649*4757b351SPierre Pronchery	movq	24(%rax),%r12
650*4757b351SPierre Pronchery.cfi_restore	%r12
651*4757b351SPierre Pronchery	movq	32(%rax),%rbp
652*4757b351SPierre Pronchery.cfi_restore	%rbp
653*4757b351SPierre Pronchery	movq	40(%rax),%rbx
654*4757b351SPierre Pronchery.cfi_restore	%rbx
655*4757b351SPierre Pronchery	leaq	48(%rax),%rsp
656*4757b351SPierre Pronchery.cfi_def_cfa	%rsp,8
657*4757b351SPierre Pronchery.Lossl_rsaz_amm52x30_x1_ifma256_epilogue:
658*4757b351SPierre Pronchery	.byte	0xf3,0xc3
659*4757b351SPierre Pronchery.cfi_endproc
660*4757b351SPierre Pronchery.size	ossl_rsaz_amm52x30_x1_ifma256, .-ossl_rsaz_amm52x30_x1_ifma256
661*4757b351SPierre Pronchery.section	.rodata
662*4757b351SPierre Pronchery.align	32
663*4757b351SPierre Pronchery.Lmask52x4:
664*4757b351SPierre Pronchery.quad	0xfffffffffffff
665*4757b351SPierre Pronchery.quad	0xfffffffffffff
666*4757b351SPierre Pronchery.quad	0xfffffffffffff
667*4757b351SPierre Pronchery.quad	0xfffffffffffff
668*4757b351SPierre Pronchery.text
669*4757b351SPierre Pronchery
670*4757b351SPierre Pronchery.globl	ossl_rsaz_amm52x30_x2_ifma256
671*4757b351SPierre Pronchery.type	ossl_rsaz_amm52x30_x2_ifma256,@function
672*4757b351SPierre Pronchery.align	32
673*4757b351SPierre Proncheryossl_rsaz_amm52x30_x2_ifma256:
674*4757b351SPierre Pronchery.cfi_startproc
675*4757b351SPierre Pronchery.byte	243,15,30,250
676*4757b351SPierre Pronchery	pushq	%rbx
677*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
678*4757b351SPierre Pronchery.cfi_offset	%rbx,-16
679*4757b351SPierre Pronchery	pushq	%rbp
680*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
681*4757b351SPierre Pronchery.cfi_offset	%rbp,-24
682*4757b351SPierre Pronchery	pushq	%r12
683*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
684*4757b351SPierre Pronchery.cfi_offset	%r12,-32
685*4757b351SPierre Pronchery	pushq	%r13
686*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
687*4757b351SPierre Pronchery.cfi_offset	%r13,-40
688*4757b351SPierre Pronchery	pushq	%r14
689*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
690*4757b351SPierre Pronchery.cfi_offset	%r14,-48
691*4757b351SPierre Pronchery	pushq	%r15
692*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
693*4757b351SPierre Pronchery.cfi_offset	%r15,-56
694*4757b351SPierre Pronchery
695*4757b351SPierre Pronchery	vpxord	%ymm0,%ymm0,%ymm0
696*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm3
697*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm4
698*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm5
699*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm6
700*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm7
701*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm8
702*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm9
703*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm10
704*4757b351SPierre Pronchery
705*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm11
706*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm12
707*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm13
708*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm14
709*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm15
710*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm16
711*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm17
712*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm18
713*4757b351SPierre Pronchery
714*4757b351SPierre Pronchery
715*4757b351SPierre Pronchery	xorl	%r9d,%r9d
716*4757b351SPierre Pronchery	xorl	%r15d,%r15d
717*4757b351SPierre Pronchery
718*4757b351SPierre Pronchery	movq	%rdx,%r11
719*4757b351SPierre Pronchery	movq	$0xfffffffffffff,%rax
720*4757b351SPierre Pronchery
721*4757b351SPierre Pronchery	movl	$30,%ebx
722*4757b351SPierre Pronchery
723*4757b351SPierre Pronchery.align	32
724*4757b351SPierre Pronchery.Lloop30:
725*4757b351SPierre Pronchery	movq	0(%r11),%r13
726*4757b351SPierre Pronchery
727*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm1
728*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
729*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
730*4757b351SPierre Pronchery	addq	%r13,%r9
731*4757b351SPierre Pronchery	movq	%r12,%r10
732*4757b351SPierre Pronchery	adcq	$0,%r10
733*4757b351SPierre Pronchery
734*4757b351SPierre Pronchery	movq	(%r8),%r13
735*4757b351SPierre Pronchery	imulq	%r9,%r13
736*4757b351SPierre Pronchery	andq	%rax,%r13
737*4757b351SPierre Pronchery
738*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm2
739*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
740*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
741*4757b351SPierre Pronchery	addq	%r13,%r9
742*4757b351SPierre Pronchery	adcq	%r12,%r10
743*4757b351SPierre Pronchery
744*4757b351SPierre Pronchery	shrq	$52,%r9
745*4757b351SPierre Pronchery	salq	$12,%r10
746*4757b351SPierre Pronchery	orq	%r10,%r9
747*4757b351SPierre Pronchery
748*4757b351SPierre Pronchery	vpmadd52luq	0(%rsi),%ymm1,%ymm3
749*4757b351SPierre Pronchery	vpmadd52luq	32(%rsi),%ymm1,%ymm4
750*4757b351SPierre Pronchery	vpmadd52luq	64(%rsi),%ymm1,%ymm5
751*4757b351SPierre Pronchery	vpmadd52luq	96(%rsi),%ymm1,%ymm6
752*4757b351SPierre Pronchery	vpmadd52luq	128(%rsi),%ymm1,%ymm7
753*4757b351SPierre Pronchery	vpmadd52luq	160(%rsi),%ymm1,%ymm8
754*4757b351SPierre Pronchery	vpmadd52luq	192(%rsi),%ymm1,%ymm9
755*4757b351SPierre Pronchery	vpmadd52luq	224(%rsi),%ymm1,%ymm10
756*4757b351SPierre Pronchery
757*4757b351SPierre Pronchery	vpmadd52luq	0(%rcx),%ymm2,%ymm3
758*4757b351SPierre Pronchery	vpmadd52luq	32(%rcx),%ymm2,%ymm4
759*4757b351SPierre Pronchery	vpmadd52luq	64(%rcx),%ymm2,%ymm5
760*4757b351SPierre Pronchery	vpmadd52luq	96(%rcx),%ymm2,%ymm6
761*4757b351SPierre Pronchery	vpmadd52luq	128(%rcx),%ymm2,%ymm7
762*4757b351SPierre Pronchery	vpmadd52luq	160(%rcx),%ymm2,%ymm8
763*4757b351SPierre Pronchery	vpmadd52luq	192(%rcx),%ymm2,%ymm9
764*4757b351SPierre Pronchery	vpmadd52luq	224(%rcx),%ymm2,%ymm10
765*4757b351SPierre Pronchery
766*4757b351SPierre Pronchery
767*4757b351SPierre Pronchery	valignq	$1,%ymm3,%ymm4,%ymm3
768*4757b351SPierre Pronchery	valignq	$1,%ymm4,%ymm5,%ymm4
769*4757b351SPierre Pronchery	valignq	$1,%ymm5,%ymm6,%ymm5
770*4757b351SPierre Pronchery	valignq	$1,%ymm6,%ymm7,%ymm6
771*4757b351SPierre Pronchery	valignq	$1,%ymm7,%ymm8,%ymm7
772*4757b351SPierre Pronchery	valignq	$1,%ymm8,%ymm9,%ymm8
773*4757b351SPierre Pronchery	valignq	$1,%ymm9,%ymm10,%ymm9
774*4757b351SPierre Pronchery	valignq	$1,%ymm10,%ymm0,%ymm10
775*4757b351SPierre Pronchery
776*4757b351SPierre Pronchery	vmovq	%xmm3,%r13
777*4757b351SPierre Pronchery	addq	%r13,%r9
778*4757b351SPierre Pronchery
779*4757b351SPierre Pronchery	vpmadd52huq	0(%rsi),%ymm1,%ymm3
780*4757b351SPierre Pronchery	vpmadd52huq	32(%rsi),%ymm1,%ymm4
781*4757b351SPierre Pronchery	vpmadd52huq	64(%rsi),%ymm1,%ymm5
782*4757b351SPierre Pronchery	vpmadd52huq	96(%rsi),%ymm1,%ymm6
783*4757b351SPierre Pronchery	vpmadd52huq	128(%rsi),%ymm1,%ymm7
784*4757b351SPierre Pronchery	vpmadd52huq	160(%rsi),%ymm1,%ymm8
785*4757b351SPierre Pronchery	vpmadd52huq	192(%rsi),%ymm1,%ymm9
786*4757b351SPierre Pronchery	vpmadd52huq	224(%rsi),%ymm1,%ymm10
787*4757b351SPierre Pronchery
788*4757b351SPierre Pronchery	vpmadd52huq	0(%rcx),%ymm2,%ymm3
789*4757b351SPierre Pronchery	vpmadd52huq	32(%rcx),%ymm2,%ymm4
790*4757b351SPierre Pronchery	vpmadd52huq	64(%rcx),%ymm2,%ymm5
791*4757b351SPierre Pronchery	vpmadd52huq	96(%rcx),%ymm2,%ymm6
792*4757b351SPierre Pronchery	vpmadd52huq	128(%rcx),%ymm2,%ymm7
793*4757b351SPierre Pronchery	vpmadd52huq	160(%rcx),%ymm2,%ymm8
794*4757b351SPierre Pronchery	vpmadd52huq	192(%rcx),%ymm2,%ymm9
795*4757b351SPierre Pronchery	vpmadd52huq	224(%rcx),%ymm2,%ymm10
796*4757b351SPierre Pronchery	movq	256(%r11),%r13
797*4757b351SPierre Pronchery
798*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm1
799*4757b351SPierre Pronchery	movq	256(%rsi),%rdx
800*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
801*4757b351SPierre Pronchery	addq	%r13,%r15
802*4757b351SPierre Pronchery	movq	%r12,%r10
803*4757b351SPierre Pronchery	adcq	$0,%r10
804*4757b351SPierre Pronchery
805*4757b351SPierre Pronchery	movq	8(%r8),%r13
806*4757b351SPierre Pronchery	imulq	%r15,%r13
807*4757b351SPierre Pronchery	andq	%rax,%r13
808*4757b351SPierre Pronchery
809*4757b351SPierre Pronchery	vpbroadcastq	%r13,%ymm2
810*4757b351SPierre Pronchery	movq	256(%rcx),%rdx
811*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
812*4757b351SPierre Pronchery	addq	%r13,%r15
813*4757b351SPierre Pronchery	adcq	%r12,%r10
814*4757b351SPierre Pronchery
815*4757b351SPierre Pronchery	shrq	$52,%r15
816*4757b351SPierre Pronchery	salq	$12,%r10
817*4757b351SPierre Pronchery	orq	%r10,%r15
818*4757b351SPierre Pronchery
819*4757b351SPierre Pronchery	vpmadd52luq	256(%rsi),%ymm1,%ymm11
820*4757b351SPierre Pronchery	vpmadd52luq	288(%rsi),%ymm1,%ymm12
821*4757b351SPierre Pronchery	vpmadd52luq	320(%rsi),%ymm1,%ymm13
822*4757b351SPierre Pronchery	vpmadd52luq	352(%rsi),%ymm1,%ymm14
823*4757b351SPierre Pronchery	vpmadd52luq	384(%rsi),%ymm1,%ymm15
824*4757b351SPierre Pronchery	vpmadd52luq	416(%rsi),%ymm1,%ymm16
825*4757b351SPierre Pronchery	vpmadd52luq	448(%rsi),%ymm1,%ymm17
826*4757b351SPierre Pronchery	vpmadd52luq	480(%rsi),%ymm1,%ymm18
827*4757b351SPierre Pronchery
828*4757b351SPierre Pronchery	vpmadd52luq	256(%rcx),%ymm2,%ymm11
829*4757b351SPierre Pronchery	vpmadd52luq	288(%rcx),%ymm2,%ymm12
830*4757b351SPierre Pronchery	vpmadd52luq	320(%rcx),%ymm2,%ymm13
831*4757b351SPierre Pronchery	vpmadd52luq	352(%rcx),%ymm2,%ymm14
832*4757b351SPierre Pronchery	vpmadd52luq	384(%rcx),%ymm2,%ymm15
833*4757b351SPierre Pronchery	vpmadd52luq	416(%rcx),%ymm2,%ymm16
834*4757b351SPierre Pronchery	vpmadd52luq	448(%rcx),%ymm2,%ymm17
835*4757b351SPierre Pronchery	vpmadd52luq	480(%rcx),%ymm2,%ymm18
836*4757b351SPierre Pronchery
837*4757b351SPierre Pronchery
838*4757b351SPierre Pronchery	valignq	$1,%ymm11,%ymm12,%ymm11
839*4757b351SPierre Pronchery	valignq	$1,%ymm12,%ymm13,%ymm12
840*4757b351SPierre Pronchery	valignq	$1,%ymm13,%ymm14,%ymm13
841*4757b351SPierre Pronchery	valignq	$1,%ymm14,%ymm15,%ymm14
842*4757b351SPierre Pronchery	valignq	$1,%ymm15,%ymm16,%ymm15
843*4757b351SPierre Pronchery	valignq	$1,%ymm16,%ymm17,%ymm16
844*4757b351SPierre Pronchery	valignq	$1,%ymm17,%ymm18,%ymm17
845*4757b351SPierre Pronchery	valignq	$1,%ymm18,%ymm0,%ymm18
846*4757b351SPierre Pronchery
847*4757b351SPierre Pronchery	vmovq	%xmm11,%r13
848*4757b351SPierre Pronchery	addq	%r13,%r15
849*4757b351SPierre Pronchery
850*4757b351SPierre Pronchery	vpmadd52huq	256(%rsi),%ymm1,%ymm11
851*4757b351SPierre Pronchery	vpmadd52huq	288(%rsi),%ymm1,%ymm12
852*4757b351SPierre Pronchery	vpmadd52huq	320(%rsi),%ymm1,%ymm13
853*4757b351SPierre Pronchery	vpmadd52huq	352(%rsi),%ymm1,%ymm14
854*4757b351SPierre Pronchery	vpmadd52huq	384(%rsi),%ymm1,%ymm15
855*4757b351SPierre Pronchery	vpmadd52huq	416(%rsi),%ymm1,%ymm16
856*4757b351SPierre Pronchery	vpmadd52huq	448(%rsi),%ymm1,%ymm17
857*4757b351SPierre Pronchery	vpmadd52huq	480(%rsi),%ymm1,%ymm18
858*4757b351SPierre Pronchery
859*4757b351SPierre Pronchery	vpmadd52huq	256(%rcx),%ymm2,%ymm11
860*4757b351SPierre Pronchery	vpmadd52huq	288(%rcx),%ymm2,%ymm12
861*4757b351SPierre Pronchery	vpmadd52huq	320(%rcx),%ymm2,%ymm13
862*4757b351SPierre Pronchery	vpmadd52huq	352(%rcx),%ymm2,%ymm14
863*4757b351SPierre Pronchery	vpmadd52huq	384(%rcx),%ymm2,%ymm15
864*4757b351SPierre Pronchery	vpmadd52huq	416(%rcx),%ymm2,%ymm16
865*4757b351SPierre Pronchery	vpmadd52huq	448(%rcx),%ymm2,%ymm17
866*4757b351SPierre Pronchery	vpmadd52huq	480(%rcx),%ymm2,%ymm18
867*4757b351SPierre Pronchery	leaq	8(%r11),%r11
868*4757b351SPierre Pronchery	decl	%ebx
869*4757b351SPierre Pronchery	jne	.Lloop30
870*4757b351SPierre Pronchery
871*4757b351SPierre Pronchery	vpbroadcastq	%r9,%ymm0
872*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm3,%ymm3
873*4757b351SPierre Pronchery
874*4757b351SPierre Pronchery
875*4757b351SPierre Pronchery
876*4757b351SPierre Pronchery	vpsrlq	$52,%ymm3,%ymm0
877*4757b351SPierre Pronchery	vpsrlq	$52,%ymm4,%ymm1
878*4757b351SPierre Pronchery	vpsrlq	$52,%ymm5,%ymm2
879*4757b351SPierre Pronchery	vpsrlq	$52,%ymm6,%ymm19
880*4757b351SPierre Pronchery	vpsrlq	$52,%ymm7,%ymm20
881*4757b351SPierre Pronchery	vpsrlq	$52,%ymm8,%ymm21
882*4757b351SPierre Pronchery	vpsrlq	$52,%ymm9,%ymm22
883*4757b351SPierre Pronchery	vpsrlq	$52,%ymm10,%ymm23
884*4757b351SPierre Pronchery
885*4757b351SPierre Pronchery
886*4757b351SPierre Pronchery	valignq	$3,%ymm22,%ymm23,%ymm23
887*4757b351SPierre Pronchery	valignq	$3,%ymm21,%ymm22,%ymm22
888*4757b351SPierre Pronchery	valignq	$3,%ymm20,%ymm21,%ymm21
889*4757b351SPierre Pronchery	valignq	$3,%ymm19,%ymm20,%ymm20
890*4757b351SPierre Pronchery	valignq	$3,%ymm2,%ymm19,%ymm19
891*4757b351SPierre Pronchery	valignq	$3,%ymm1,%ymm2,%ymm2
892*4757b351SPierre Pronchery	valignq	$3,%ymm0,%ymm1,%ymm1
893*4757b351SPierre Pronchery	valignq	$3,.Lzeros(%rip),%ymm0,%ymm0
894*4757b351SPierre Pronchery
895*4757b351SPierre Pronchery
896*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm3,%ymm3
897*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm4,%ymm4
898*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm5,%ymm5
899*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm6,%ymm6
900*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm7,%ymm7
901*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm8,%ymm8
902*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm9,%ymm9
903*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm10,%ymm10
904*4757b351SPierre Pronchery
905*4757b351SPierre Pronchery
906*4757b351SPierre Pronchery	vpaddq	%ymm0,%ymm3,%ymm3
907*4757b351SPierre Pronchery	vpaddq	%ymm1,%ymm4,%ymm4
908*4757b351SPierre Pronchery	vpaddq	%ymm2,%ymm5,%ymm5
909*4757b351SPierre Pronchery	vpaddq	%ymm19,%ymm6,%ymm6
910*4757b351SPierre Pronchery	vpaddq	%ymm20,%ymm7,%ymm7
911*4757b351SPierre Pronchery	vpaddq	%ymm21,%ymm8,%ymm8
912*4757b351SPierre Pronchery	vpaddq	%ymm22,%ymm9,%ymm9
913*4757b351SPierre Pronchery	vpaddq	%ymm23,%ymm10,%ymm10
914*4757b351SPierre Pronchery
915*4757b351SPierre Pronchery
916*4757b351SPierre Pronchery
917*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm3,%k1
918*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm4,%k2
919*4757b351SPierre Pronchery	kmovb	%k1,%r14d
920*4757b351SPierre Pronchery	kmovb	%k2,%r13d
921*4757b351SPierre Pronchery	shlb	$4,%r13b
922*4757b351SPierre Pronchery	orb	%r13b,%r14b
923*4757b351SPierre Pronchery
924*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm5,%k1
925*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm6,%k2
926*4757b351SPierre Pronchery	kmovb	%k1,%r13d
927*4757b351SPierre Pronchery	kmovb	%k2,%r12d
928*4757b351SPierre Pronchery	shlb	$4,%r12b
929*4757b351SPierre Pronchery	orb	%r12b,%r13b
930*4757b351SPierre Pronchery
931*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm7,%k1
932*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm8,%k2
933*4757b351SPierre Pronchery	kmovb	%k1,%r12d
934*4757b351SPierre Pronchery	kmovb	%k2,%r11d
935*4757b351SPierre Pronchery	shlb	$4,%r11b
936*4757b351SPierre Pronchery	orb	%r11b,%r12b
937*4757b351SPierre Pronchery
938*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm9,%k1
939*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm10,%k2
940*4757b351SPierre Pronchery	kmovb	%k1,%r11d
941*4757b351SPierre Pronchery	kmovb	%k2,%r10d
942*4757b351SPierre Pronchery	shlb	$4,%r10b
943*4757b351SPierre Pronchery	orb	%r10b,%r11b
944*4757b351SPierre Pronchery
945*4757b351SPierre Pronchery	addb	%r14b,%r14b
946*4757b351SPierre Pronchery	adcb	%r13b,%r13b
947*4757b351SPierre Pronchery	adcb	%r12b,%r12b
948*4757b351SPierre Pronchery	adcb	%r11b,%r11b
949*4757b351SPierre Pronchery
950*4757b351SPierre Pronchery
951*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm3,%k1
952*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm4,%k2
953*4757b351SPierre Pronchery	kmovb	%k1,%r9d
954*4757b351SPierre Pronchery	kmovb	%k2,%r8d
955*4757b351SPierre Pronchery	shlb	$4,%r8b
956*4757b351SPierre Pronchery	orb	%r8b,%r9b
957*4757b351SPierre Pronchery
958*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm5,%k1
959*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm6,%k2
960*4757b351SPierre Pronchery	kmovb	%k1,%r8d
961*4757b351SPierre Pronchery	kmovb	%k2,%edx
962*4757b351SPierre Pronchery	shlb	$4,%dl
963*4757b351SPierre Pronchery	orb	%dl,%r8b
964*4757b351SPierre Pronchery
965*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm7,%k1
966*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm8,%k2
967*4757b351SPierre Pronchery	kmovb	%k1,%edx
968*4757b351SPierre Pronchery	kmovb	%k2,%ecx
969*4757b351SPierre Pronchery	shlb	$4,%cl
970*4757b351SPierre Pronchery	orb	%cl,%dl
971*4757b351SPierre Pronchery
972*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm9,%k1
973*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm10,%k2
974*4757b351SPierre Pronchery	kmovb	%k1,%ecx
975*4757b351SPierre Pronchery	kmovb	%k2,%ebx
976*4757b351SPierre Pronchery	shlb	$4,%bl
977*4757b351SPierre Pronchery	orb	%bl,%cl
978*4757b351SPierre Pronchery
979*4757b351SPierre Pronchery	addb	%r9b,%r14b
980*4757b351SPierre Pronchery	adcb	%r8b,%r13b
981*4757b351SPierre Pronchery	adcb	%dl,%r12b
982*4757b351SPierre Pronchery	adcb	%cl,%r11b
983*4757b351SPierre Pronchery
984*4757b351SPierre Pronchery	xorb	%r9b,%r14b
985*4757b351SPierre Pronchery	xorb	%r8b,%r13b
986*4757b351SPierre Pronchery	xorb	%dl,%r12b
987*4757b351SPierre Pronchery	xorb	%cl,%r11b
988*4757b351SPierre Pronchery
989*4757b351SPierre Pronchery	kmovb	%r14d,%k1
990*4757b351SPierre Pronchery	shrb	$4,%r14b
991*4757b351SPierre Pronchery	kmovb	%r14d,%k2
992*4757b351SPierre Pronchery	kmovb	%r13d,%k3
993*4757b351SPierre Pronchery	shrb	$4,%r13b
994*4757b351SPierre Pronchery	kmovb	%r13d,%k4
995*4757b351SPierre Pronchery	kmovb	%r12d,%k5
996*4757b351SPierre Pronchery	shrb	$4,%r12b
997*4757b351SPierre Pronchery	kmovb	%r12d,%k6
998*4757b351SPierre Pronchery	kmovb	%r11d,%k7
999*4757b351SPierre Pronchery
1000*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm3,%ymm3{%k1}
1001*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm4,%ymm4{%k2}
1002*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm5,%ymm5{%k3}
1003*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm6,%ymm6{%k4}
1004*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm7,%ymm7{%k5}
1005*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm8,%ymm8{%k6}
1006*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm9,%ymm9{%k7}
1007*4757b351SPierre Pronchery
1008*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm3,%ymm3
1009*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm4,%ymm4
1010*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm5,%ymm5
1011*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm6,%ymm6
1012*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm7,%ymm7
1013*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm8,%ymm8
1014*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm9,%ymm9
1015*4757b351SPierre Pronchery
1016*4757b351SPierre Pronchery	shrb	$4,%r11b
1017*4757b351SPierre Pronchery	kmovb	%r11d,%k1
1018*4757b351SPierre Pronchery
1019*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm10,%ymm10{%k1}
1020*4757b351SPierre Pronchery
1021*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm10,%ymm10
1022*4757b351SPierre Pronchery
1023*4757b351SPierre Pronchery	vpbroadcastq	%r15,%ymm0
1024*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm11,%ymm11
1025*4757b351SPierre Pronchery
1026*4757b351SPierre Pronchery
1027*4757b351SPierre Pronchery
1028*4757b351SPierre Pronchery	vpsrlq	$52,%ymm11,%ymm0
1029*4757b351SPierre Pronchery	vpsrlq	$52,%ymm12,%ymm1
1030*4757b351SPierre Pronchery	vpsrlq	$52,%ymm13,%ymm2
1031*4757b351SPierre Pronchery	vpsrlq	$52,%ymm14,%ymm19
1032*4757b351SPierre Pronchery	vpsrlq	$52,%ymm15,%ymm20
1033*4757b351SPierre Pronchery	vpsrlq	$52,%ymm16,%ymm21
1034*4757b351SPierre Pronchery	vpsrlq	$52,%ymm17,%ymm22
1035*4757b351SPierre Pronchery	vpsrlq	$52,%ymm18,%ymm23
1036*4757b351SPierre Pronchery
1037*4757b351SPierre Pronchery
1038*4757b351SPierre Pronchery	valignq	$3,%ymm22,%ymm23,%ymm23
1039*4757b351SPierre Pronchery	valignq	$3,%ymm21,%ymm22,%ymm22
1040*4757b351SPierre Pronchery	valignq	$3,%ymm20,%ymm21,%ymm21
1041*4757b351SPierre Pronchery	valignq	$3,%ymm19,%ymm20,%ymm20
1042*4757b351SPierre Pronchery	valignq	$3,%ymm2,%ymm19,%ymm19
1043*4757b351SPierre Pronchery	valignq	$3,%ymm1,%ymm2,%ymm2
1044*4757b351SPierre Pronchery	valignq	$3,%ymm0,%ymm1,%ymm1
1045*4757b351SPierre Pronchery	valignq	$3,.Lzeros(%rip),%ymm0,%ymm0
1046*4757b351SPierre Pronchery
1047*4757b351SPierre Pronchery
1048*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm11,%ymm11
1049*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm12,%ymm12
1050*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm13,%ymm13
1051*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm14,%ymm14
1052*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm15,%ymm15
1053*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm16,%ymm16
1054*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm17,%ymm17
1055*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm18,%ymm18
1056*4757b351SPierre Pronchery
1057*4757b351SPierre Pronchery
1058*4757b351SPierre Pronchery	vpaddq	%ymm0,%ymm11,%ymm11
1059*4757b351SPierre Pronchery	vpaddq	%ymm1,%ymm12,%ymm12
1060*4757b351SPierre Pronchery	vpaddq	%ymm2,%ymm13,%ymm13
1061*4757b351SPierre Pronchery	vpaddq	%ymm19,%ymm14,%ymm14
1062*4757b351SPierre Pronchery	vpaddq	%ymm20,%ymm15,%ymm15
1063*4757b351SPierre Pronchery	vpaddq	%ymm21,%ymm16,%ymm16
1064*4757b351SPierre Pronchery	vpaddq	%ymm22,%ymm17,%ymm17
1065*4757b351SPierre Pronchery	vpaddq	%ymm23,%ymm18,%ymm18
1066*4757b351SPierre Pronchery
1067*4757b351SPierre Pronchery
1068*4757b351SPierre Pronchery
1069*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm11,%k1
1070*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm12,%k2
1071*4757b351SPierre Pronchery	kmovb	%k1,%r14d
1072*4757b351SPierre Pronchery	kmovb	%k2,%r13d
1073*4757b351SPierre Pronchery	shlb	$4,%r13b
1074*4757b351SPierre Pronchery	orb	%r13b,%r14b
1075*4757b351SPierre Pronchery
1076*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm13,%k1
1077*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm14,%k2
1078*4757b351SPierre Pronchery	kmovb	%k1,%r13d
1079*4757b351SPierre Pronchery	kmovb	%k2,%r12d
1080*4757b351SPierre Pronchery	shlb	$4,%r12b
1081*4757b351SPierre Pronchery	orb	%r12b,%r13b
1082*4757b351SPierre Pronchery
1083*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm15,%k1
1084*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm16,%k2
1085*4757b351SPierre Pronchery	kmovb	%k1,%r12d
1086*4757b351SPierre Pronchery	kmovb	%k2,%r11d
1087*4757b351SPierre Pronchery	shlb	$4,%r11b
1088*4757b351SPierre Pronchery	orb	%r11b,%r12b
1089*4757b351SPierre Pronchery
1090*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm17,%k1
1091*4757b351SPierre Pronchery	vpcmpuq	$6,.Lmask52x4(%rip),%ymm18,%k2
1092*4757b351SPierre Pronchery	kmovb	%k1,%r11d
1093*4757b351SPierre Pronchery	kmovb	%k2,%r10d
1094*4757b351SPierre Pronchery	shlb	$4,%r10b
1095*4757b351SPierre Pronchery	orb	%r10b,%r11b
1096*4757b351SPierre Pronchery
1097*4757b351SPierre Pronchery	addb	%r14b,%r14b
1098*4757b351SPierre Pronchery	adcb	%r13b,%r13b
1099*4757b351SPierre Pronchery	adcb	%r12b,%r12b
1100*4757b351SPierre Pronchery	adcb	%r11b,%r11b
1101*4757b351SPierre Pronchery
1102*4757b351SPierre Pronchery
1103*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm11,%k1
1104*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm12,%k2
1105*4757b351SPierre Pronchery	kmovb	%k1,%r9d
1106*4757b351SPierre Pronchery	kmovb	%k2,%r8d
1107*4757b351SPierre Pronchery	shlb	$4,%r8b
1108*4757b351SPierre Pronchery	orb	%r8b,%r9b
1109*4757b351SPierre Pronchery
1110*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm13,%k1
1111*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm14,%k2
1112*4757b351SPierre Pronchery	kmovb	%k1,%r8d
1113*4757b351SPierre Pronchery	kmovb	%k2,%edx
1114*4757b351SPierre Pronchery	shlb	$4,%dl
1115*4757b351SPierre Pronchery	orb	%dl,%r8b
1116*4757b351SPierre Pronchery
1117*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm15,%k1
1118*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm16,%k2
1119*4757b351SPierre Pronchery	kmovb	%k1,%edx
1120*4757b351SPierre Pronchery	kmovb	%k2,%ecx
1121*4757b351SPierre Pronchery	shlb	$4,%cl
1122*4757b351SPierre Pronchery	orb	%cl,%dl
1123*4757b351SPierre Pronchery
1124*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm17,%k1
1125*4757b351SPierre Pronchery	vpcmpuq	$0,.Lmask52x4(%rip),%ymm18,%k2
1126*4757b351SPierre Pronchery	kmovb	%k1,%ecx
1127*4757b351SPierre Pronchery	kmovb	%k2,%ebx
1128*4757b351SPierre Pronchery	shlb	$4,%bl
1129*4757b351SPierre Pronchery	orb	%bl,%cl
1130*4757b351SPierre Pronchery
1131*4757b351SPierre Pronchery	addb	%r9b,%r14b
1132*4757b351SPierre Pronchery	adcb	%r8b,%r13b
1133*4757b351SPierre Pronchery	adcb	%dl,%r12b
1134*4757b351SPierre Pronchery	adcb	%cl,%r11b
1135*4757b351SPierre Pronchery
1136*4757b351SPierre Pronchery	xorb	%r9b,%r14b
1137*4757b351SPierre Pronchery	xorb	%r8b,%r13b
1138*4757b351SPierre Pronchery	xorb	%dl,%r12b
1139*4757b351SPierre Pronchery	xorb	%cl,%r11b
1140*4757b351SPierre Pronchery
1141*4757b351SPierre Pronchery	kmovb	%r14d,%k1
1142*4757b351SPierre Pronchery	shrb	$4,%r14b
1143*4757b351SPierre Pronchery	kmovb	%r14d,%k2
1144*4757b351SPierre Pronchery	kmovb	%r13d,%k3
1145*4757b351SPierre Pronchery	shrb	$4,%r13b
1146*4757b351SPierre Pronchery	kmovb	%r13d,%k4
1147*4757b351SPierre Pronchery	kmovb	%r12d,%k5
1148*4757b351SPierre Pronchery	shrb	$4,%r12b
1149*4757b351SPierre Pronchery	kmovb	%r12d,%k6
1150*4757b351SPierre Pronchery	kmovb	%r11d,%k7
1151*4757b351SPierre Pronchery
1152*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm11,%ymm11{%k1}
1153*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm12,%ymm12{%k2}
1154*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm13,%ymm13{%k3}
1155*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm14,%ymm14{%k4}
1156*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm15,%ymm15{%k5}
1157*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm16,%ymm16{%k6}
1158*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm17,%ymm17{%k7}
1159*4757b351SPierre Pronchery
1160*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm11,%ymm11
1161*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm12,%ymm12
1162*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm13,%ymm13
1163*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm14,%ymm14
1164*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm15,%ymm15
1165*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm16,%ymm16
1166*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm17,%ymm17
1167*4757b351SPierre Pronchery
1168*4757b351SPierre Pronchery	shrb	$4,%r11b
1169*4757b351SPierre Pronchery	kmovb	%r11d,%k1
1170*4757b351SPierre Pronchery
1171*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm18,%ymm18{%k1}
1172*4757b351SPierre Pronchery
1173*4757b351SPierre Pronchery	vpandq	.Lmask52x4(%rip),%ymm18,%ymm18
1174*4757b351SPierre Pronchery
1175*4757b351SPierre Pronchery	vmovdqu64	%ymm3,0(%rdi)
1176*4757b351SPierre Pronchery	vmovdqu64	%ymm4,32(%rdi)
1177*4757b351SPierre Pronchery	vmovdqu64	%ymm5,64(%rdi)
1178*4757b351SPierre Pronchery	vmovdqu64	%ymm6,96(%rdi)
1179*4757b351SPierre Pronchery	vmovdqu64	%ymm7,128(%rdi)
1180*4757b351SPierre Pronchery	vmovdqu64	%ymm8,160(%rdi)
1181*4757b351SPierre Pronchery	vmovdqu64	%ymm9,192(%rdi)
1182*4757b351SPierre Pronchery	vmovdqu64	%ymm10,224(%rdi)
1183*4757b351SPierre Pronchery
1184*4757b351SPierre Pronchery	vmovdqu64	%ymm11,256(%rdi)
1185*4757b351SPierre Pronchery	vmovdqu64	%ymm12,288(%rdi)
1186*4757b351SPierre Pronchery	vmovdqu64	%ymm13,320(%rdi)
1187*4757b351SPierre Pronchery	vmovdqu64	%ymm14,352(%rdi)
1188*4757b351SPierre Pronchery	vmovdqu64	%ymm15,384(%rdi)
1189*4757b351SPierre Pronchery	vmovdqu64	%ymm16,416(%rdi)
1190*4757b351SPierre Pronchery	vmovdqu64	%ymm17,448(%rdi)
1191*4757b351SPierre Pronchery	vmovdqu64	%ymm18,480(%rdi)
1192*4757b351SPierre Pronchery
1193*4757b351SPierre Pronchery	vzeroupper
1194*4757b351SPierre Pronchery	leaq	(%rsp),%rax
1195*4757b351SPierre Pronchery.cfi_def_cfa_register	%rax
1196*4757b351SPierre Pronchery	movq	0(%rax),%r15
1197*4757b351SPierre Pronchery.cfi_restore	%r15
1198*4757b351SPierre Pronchery	movq	8(%rax),%r14
1199*4757b351SPierre Pronchery.cfi_restore	%r14
1200*4757b351SPierre Pronchery	movq	16(%rax),%r13
1201*4757b351SPierre Pronchery.cfi_restore	%r13
1202*4757b351SPierre Pronchery	movq	24(%rax),%r12
1203*4757b351SPierre Pronchery.cfi_restore	%r12
1204*4757b351SPierre Pronchery	movq	32(%rax),%rbp
1205*4757b351SPierre Pronchery.cfi_restore	%rbp
1206*4757b351SPierre Pronchery	movq	40(%rax),%rbx
1207*4757b351SPierre Pronchery.cfi_restore	%rbx
1208*4757b351SPierre Pronchery	leaq	48(%rax),%rsp
1209*4757b351SPierre Pronchery.cfi_def_cfa	%rsp,8
1210*4757b351SPierre Pronchery.Lossl_rsaz_amm52x30_x2_ifma256_epilogue:
1211*4757b351SPierre Pronchery	.byte	0xf3,0xc3
1212*4757b351SPierre Pronchery.cfi_endproc
1213*4757b351SPierre Pronchery.size	ossl_rsaz_amm52x30_x2_ifma256, .-ossl_rsaz_amm52x30_x2_ifma256
1214*4757b351SPierre Pronchery.text
1215*4757b351SPierre Pronchery
1216*4757b351SPierre Pronchery.align	32
1217*4757b351SPierre Pronchery.globl	ossl_extract_multiplier_2x30_win5
1218*4757b351SPierre Pronchery.type	ossl_extract_multiplier_2x30_win5,@function
1219*4757b351SPierre Proncheryossl_extract_multiplier_2x30_win5:
1220*4757b351SPierre Pronchery.cfi_startproc
1221*4757b351SPierre Pronchery.byte	243,15,30,250
1222*4757b351SPierre Pronchery	vmovdqa64	.Lones(%rip),%ymm30
1223*4757b351SPierre Pronchery	vpbroadcastq	%rdx,%ymm28
1224*4757b351SPierre Pronchery	vpbroadcastq	%rcx,%ymm29
1225*4757b351SPierre Pronchery	leaq	16384(%rsi),%rax
1226*4757b351SPierre Pronchery
1227*4757b351SPierre Pronchery
1228*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm0,%xmm0
1229*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm27
1230*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm1
1231*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm2
1232*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm3
1233*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm4
1234*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm5
1235*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm16
1236*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm17
1237*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm18
1238*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm19
1239*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm20
1240*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm21
1241*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm22
1242*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm23
1243*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm24
1244*4757b351SPierre Pronchery	vmovdqa64	%ymm0,%ymm25
1245*4757b351SPierre Pronchery
1246*4757b351SPierre Pronchery.align	32
1247*4757b351SPierre Pronchery.Lloop:
1248*4757b351SPierre Pronchery	vpcmpq	$0,%ymm27,%ymm28,%k1
1249*4757b351SPierre Pronchery	vpcmpq	$0,%ymm27,%ymm29,%k2
1250*4757b351SPierre Pronchery	vmovdqu64	0(%rsi),%ymm26
1251*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm0,%ymm0{%k1}
1252*4757b351SPierre Pronchery	vmovdqu64	32(%rsi),%ymm26
1253*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm1,%ymm1{%k1}
1254*4757b351SPierre Pronchery	vmovdqu64	64(%rsi),%ymm26
1255*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm2,%ymm2{%k1}
1256*4757b351SPierre Pronchery	vmovdqu64	96(%rsi),%ymm26
1257*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm3,%ymm3{%k1}
1258*4757b351SPierre Pronchery	vmovdqu64	128(%rsi),%ymm26
1259*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm4,%ymm4{%k1}
1260*4757b351SPierre Pronchery	vmovdqu64	160(%rsi),%ymm26
1261*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm5,%ymm5{%k1}
1262*4757b351SPierre Pronchery	vmovdqu64	192(%rsi),%ymm26
1263*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm16,%ymm16{%k1}
1264*4757b351SPierre Pronchery	vmovdqu64	224(%rsi),%ymm26
1265*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm17,%ymm17{%k1}
1266*4757b351SPierre Pronchery	vmovdqu64	256(%rsi),%ymm26
1267*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm18,%ymm18{%k2}
1268*4757b351SPierre Pronchery	vmovdqu64	288(%rsi),%ymm26
1269*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm19,%ymm19{%k2}
1270*4757b351SPierre Pronchery	vmovdqu64	320(%rsi),%ymm26
1271*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm20,%ymm20{%k2}
1272*4757b351SPierre Pronchery	vmovdqu64	352(%rsi),%ymm26
1273*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm21,%ymm21{%k2}
1274*4757b351SPierre Pronchery	vmovdqu64	384(%rsi),%ymm26
1275*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm22,%ymm22{%k2}
1276*4757b351SPierre Pronchery	vmovdqu64	416(%rsi),%ymm26
1277*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm23,%ymm23{%k2}
1278*4757b351SPierre Pronchery	vmovdqu64	448(%rsi),%ymm26
1279*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm24,%ymm24{%k2}
1280*4757b351SPierre Pronchery	vmovdqu64	480(%rsi),%ymm26
1281*4757b351SPierre Pronchery	vpblendmq	%ymm26,%ymm25,%ymm25{%k2}
1282*4757b351SPierre Pronchery	vpaddq	%ymm30,%ymm27,%ymm27
1283*4757b351SPierre Pronchery	addq	$512,%rsi
1284*4757b351SPierre Pronchery	cmpq	%rsi,%rax
1285*4757b351SPierre Pronchery	jne	.Lloop
1286*4757b351SPierre Pronchery	vmovdqu64	%ymm0,0(%rdi)
1287*4757b351SPierre Pronchery	vmovdqu64	%ymm1,32(%rdi)
1288*4757b351SPierre Pronchery	vmovdqu64	%ymm2,64(%rdi)
1289*4757b351SPierre Pronchery	vmovdqu64	%ymm3,96(%rdi)
1290*4757b351SPierre Pronchery	vmovdqu64	%ymm4,128(%rdi)
1291*4757b351SPierre Pronchery	vmovdqu64	%ymm5,160(%rdi)
1292*4757b351SPierre Pronchery	vmovdqu64	%ymm16,192(%rdi)
1293*4757b351SPierre Pronchery	vmovdqu64	%ymm17,224(%rdi)
1294*4757b351SPierre Pronchery	vmovdqu64	%ymm18,256(%rdi)
1295*4757b351SPierre Pronchery	vmovdqu64	%ymm19,288(%rdi)
1296*4757b351SPierre Pronchery	vmovdqu64	%ymm20,320(%rdi)
1297*4757b351SPierre Pronchery	vmovdqu64	%ymm21,352(%rdi)
1298*4757b351SPierre Pronchery	vmovdqu64	%ymm22,384(%rdi)
1299*4757b351SPierre Pronchery	vmovdqu64	%ymm23,416(%rdi)
1300*4757b351SPierre Pronchery	vmovdqu64	%ymm24,448(%rdi)
1301*4757b351SPierre Pronchery	vmovdqu64	%ymm25,480(%rdi)
1302*4757b351SPierre Pronchery
1303*4757b351SPierre Pronchery	.byte	0xf3,0xc3
1304*4757b351SPierre Pronchery.cfi_endproc
1305*4757b351SPierre Pronchery.size	ossl_extract_multiplier_2x30_win5, .-ossl_extract_multiplier_2x30_win5
1306*4757b351SPierre Pronchery.section	.rodata
1307*4757b351SPierre Pronchery.align	32
1308*4757b351SPierre Pronchery.Lones:
1309*4757b351SPierre Pronchery.quad	1,1,1,1
1310*4757b351SPierre Pronchery.Lzeros:
1311*4757b351SPierre Pronchery.quad	0,0,0,0
1312*4757b351SPierre Pronchery	.section ".note.gnu.property", "a"
1313*4757b351SPierre Pronchery	.p2align 3
1314*4757b351SPierre Pronchery	.long 1f - 0f
1315*4757b351SPierre Pronchery	.long 4f - 1f
1316*4757b351SPierre Pronchery	.long 5
1317*4757b351SPierre Pronchery0:
1318*4757b351SPierre Pronchery	# "GNU" encoded with .byte, since .asciz isn't supported
1319*4757b351SPierre Pronchery	# on Solaris.
1320*4757b351SPierre Pronchery	.byte 0x47
1321*4757b351SPierre Pronchery	.byte 0x4e
1322*4757b351SPierre Pronchery	.byte 0x55
1323*4757b351SPierre Pronchery	.byte 0
1324*4757b351SPierre Pronchery1:
1325*4757b351SPierre Pronchery	.p2align 3
1326*4757b351SPierre Pronchery	.long 0xc0000002
1327*4757b351SPierre Pronchery	.long 3f - 2f
1328*4757b351SPierre Pronchery2:
1329*4757b351SPierre Pronchery	.long 3
1330*4757b351SPierre Pronchery3:
1331*4757b351SPierre Pronchery	.p2align 3
1332*4757b351SPierre Pronchery4:
1333