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