xref: /freebsd/sys/crypto/openssl/amd64/rsaz-3k-avxifma.S (revision 4757b351ea9d59d71d4a38b82506d2d16fcd560d)
1*4757b351SPierre Pronchery/* Do not modify. This file is auto-generated from rsaz-3k-avxifma.pl. */
2*4757b351SPierre Pronchery.text
3*4757b351SPierre Pronchery
4*4757b351SPierre Pronchery.globl	ossl_rsaz_amm52x30_x1_avxifma256
5*4757b351SPierre Pronchery.type	ossl_rsaz_amm52x30_x1_avxifma256,@function
6*4757b351SPierre Pronchery.align	32
7*4757b351SPierre Proncheryossl_rsaz_amm52x30_x1_avxifma256:
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	vpxor	%ymm0,%ymm0,%ymm0
30*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
31*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
32*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
33*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
34*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
35*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm8
36*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
37*4757b351SPierre Pronchery	vmovapd	%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	0(%r11),%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	vmovq	%r13,%xmm2
63*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
64*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
65*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
66*4757b351SPierre Pronchery	addq	%r13,%r9
67*4757b351SPierre Pronchery	adcq	%r12,%r10
68*4757b351SPierre Pronchery
69*4757b351SPierre Pronchery	shrq	$52,%r9
70*4757b351SPierre Pronchery	salq	$12,%r10
71*4757b351SPierre Pronchery	orq	%r10,%r9
72*4757b351SPierre Pronchery
73*4757b351SPierre Pronchery	leaq	-264(%rsp),%rsp
74*4757b351SPierre Pronchery
75*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
76*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
77*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
78*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
79*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
80*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
81*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
82*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
83*4757b351SPierre Pronchery
84*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
85*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
86*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
87*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
88*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
89*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
90*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
91*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
92*4757b351SPierre Pronchery
93*4757b351SPierre Pronchery
94*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
95*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
96*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
97*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
98*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
99*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
100*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
101*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
102*4757b351SPierre Pronchery	movq	$0,256(%rsp)
103*4757b351SPierre Pronchery
104*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
105*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
106*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
107*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
108*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
109*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
110*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
111*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
112*4757b351SPierre Pronchery
113*4757b351SPierre Pronchery	addq	8(%rsp),%r9
114*4757b351SPierre Pronchery
115*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
116*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
117*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
118*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
119*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
120*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
121*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
122*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
123*4757b351SPierre Pronchery
124*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
125*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
126*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
127*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
128*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
129*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
130*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
131*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
132*4757b351SPierre Pronchery
133*4757b351SPierre Pronchery	leaq	264(%rsp),%rsp
134*4757b351SPierre Pronchery	movq	8(%r11),%r13
135*4757b351SPierre Pronchery
136*4757b351SPierre Pronchery	vpbroadcastq	8(%r11),%ymm1
137*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
138*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
139*4757b351SPierre Pronchery	addq	%r13,%r9
140*4757b351SPierre Pronchery	movq	%r12,%r10
141*4757b351SPierre Pronchery	adcq	$0,%r10
142*4757b351SPierre Pronchery
143*4757b351SPierre Pronchery	movq	%r8,%r13
144*4757b351SPierre Pronchery	imulq	%r9,%r13
145*4757b351SPierre Pronchery	andq	%rax,%r13
146*4757b351SPierre Pronchery
147*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
148*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
149*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
150*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
151*4757b351SPierre Pronchery	addq	%r13,%r9
152*4757b351SPierre Pronchery	adcq	%r12,%r10
153*4757b351SPierre Pronchery
154*4757b351SPierre Pronchery	shrq	$52,%r9
155*4757b351SPierre Pronchery	salq	$12,%r10
156*4757b351SPierre Pronchery	orq	%r10,%r9
157*4757b351SPierre Pronchery
158*4757b351SPierre Pronchery	leaq	-264(%rsp),%rsp
159*4757b351SPierre Pronchery
160*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
161*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
162*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
163*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
164*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
165*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
166*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
167*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
168*4757b351SPierre Pronchery
169*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
170*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
171*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
172*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
173*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
174*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
175*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
176*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
177*4757b351SPierre Pronchery
178*4757b351SPierre Pronchery
179*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
180*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
181*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
182*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
183*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
184*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
185*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
186*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
187*4757b351SPierre Pronchery	movq	$0,256(%rsp)
188*4757b351SPierre Pronchery
189*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
190*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
191*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
192*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
193*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
194*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
195*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
196*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
197*4757b351SPierre Pronchery
198*4757b351SPierre Pronchery	addq	8(%rsp),%r9
199*4757b351SPierre Pronchery
200*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
201*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
202*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
203*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
204*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
205*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
206*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
207*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
208*4757b351SPierre Pronchery
209*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
210*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
211*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
212*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
213*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
214*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
215*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
216*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
217*4757b351SPierre Pronchery
218*4757b351SPierre Pronchery	leaq	264(%rsp),%rsp
219*4757b351SPierre Pronchery	movq	16(%r11),%r13
220*4757b351SPierre Pronchery
221*4757b351SPierre Pronchery	vpbroadcastq	16(%r11),%ymm1
222*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
223*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
224*4757b351SPierre Pronchery	addq	%r13,%r9
225*4757b351SPierre Pronchery	movq	%r12,%r10
226*4757b351SPierre Pronchery	adcq	$0,%r10
227*4757b351SPierre Pronchery
228*4757b351SPierre Pronchery	movq	%r8,%r13
229*4757b351SPierre Pronchery	imulq	%r9,%r13
230*4757b351SPierre Pronchery	andq	%rax,%r13
231*4757b351SPierre Pronchery
232*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
233*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
234*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
235*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
236*4757b351SPierre Pronchery	addq	%r13,%r9
237*4757b351SPierre Pronchery	adcq	%r12,%r10
238*4757b351SPierre Pronchery
239*4757b351SPierre Pronchery	shrq	$52,%r9
240*4757b351SPierre Pronchery	salq	$12,%r10
241*4757b351SPierre Pronchery	orq	%r10,%r9
242*4757b351SPierre Pronchery
243*4757b351SPierre Pronchery	leaq	-264(%rsp),%rsp
244*4757b351SPierre Pronchery
245*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
246*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
247*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
248*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
249*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
250*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
251*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
252*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
253*4757b351SPierre Pronchery
254*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
255*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
256*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
257*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
258*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
259*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
260*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
261*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
262*4757b351SPierre Pronchery
263*4757b351SPierre Pronchery
264*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
265*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
266*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
267*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
268*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
269*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
270*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
271*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
272*4757b351SPierre Pronchery	movq	$0,256(%rsp)
273*4757b351SPierre Pronchery
274*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
275*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
276*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
277*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
278*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
279*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
280*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
281*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
282*4757b351SPierre Pronchery
283*4757b351SPierre Pronchery	addq	8(%rsp),%r9
284*4757b351SPierre Pronchery
285*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
286*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
287*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
288*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
289*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
290*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
291*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
292*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
293*4757b351SPierre Pronchery
294*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
295*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
296*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
297*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
298*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
299*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
300*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
301*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
302*4757b351SPierre Pronchery
303*4757b351SPierre Pronchery	leaq	264(%rsp),%rsp
304*4757b351SPierre Pronchery	movq	24(%r11),%r13
305*4757b351SPierre Pronchery
306*4757b351SPierre Pronchery	vpbroadcastq	24(%r11),%ymm1
307*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
308*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
309*4757b351SPierre Pronchery	addq	%r13,%r9
310*4757b351SPierre Pronchery	movq	%r12,%r10
311*4757b351SPierre Pronchery	adcq	$0,%r10
312*4757b351SPierre Pronchery
313*4757b351SPierre Pronchery	movq	%r8,%r13
314*4757b351SPierre Pronchery	imulq	%r9,%r13
315*4757b351SPierre Pronchery	andq	%rax,%r13
316*4757b351SPierre Pronchery
317*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
318*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
319*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
320*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
321*4757b351SPierre Pronchery	addq	%r13,%r9
322*4757b351SPierre Pronchery	adcq	%r12,%r10
323*4757b351SPierre Pronchery
324*4757b351SPierre Pronchery	shrq	$52,%r9
325*4757b351SPierre Pronchery	salq	$12,%r10
326*4757b351SPierre Pronchery	orq	%r10,%r9
327*4757b351SPierre Pronchery
328*4757b351SPierre Pronchery	leaq	-264(%rsp),%rsp
329*4757b351SPierre Pronchery
330*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
331*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
332*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
333*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
334*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
335*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
336*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
337*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
338*4757b351SPierre Pronchery
339*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
340*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
341*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
342*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
343*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
344*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
345*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
346*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
347*4757b351SPierre Pronchery
348*4757b351SPierre Pronchery
349*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
350*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
351*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
352*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
353*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
354*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
355*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
356*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
357*4757b351SPierre Pronchery	movq	$0,256(%rsp)
358*4757b351SPierre Pronchery
359*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
360*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
361*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
362*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
363*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
364*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
365*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
366*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
367*4757b351SPierre Pronchery
368*4757b351SPierre Pronchery	addq	8(%rsp),%r9
369*4757b351SPierre Pronchery
370*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
371*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
372*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
373*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
374*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
375*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
376*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
377*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
378*4757b351SPierre Pronchery
379*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
380*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
381*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
382*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
383*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
384*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
385*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
386*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
387*4757b351SPierre Pronchery
388*4757b351SPierre Pronchery	leaq	264(%rsp),%rsp
389*4757b351SPierre Pronchery	leaq	32(%r11),%r11
390*4757b351SPierre Pronchery	decl	%ebx
391*4757b351SPierre Pronchery	jne	.Lloop7
392*4757b351SPierre Pronchery	movq	0(%r11),%r13
393*4757b351SPierre Pronchery
394*4757b351SPierre Pronchery	vpbroadcastq	0(%r11),%ymm1
395*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
396*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
397*4757b351SPierre Pronchery	addq	%r13,%r9
398*4757b351SPierre Pronchery	movq	%r12,%r10
399*4757b351SPierre Pronchery	adcq	$0,%r10
400*4757b351SPierre Pronchery
401*4757b351SPierre Pronchery	movq	%r8,%r13
402*4757b351SPierre Pronchery	imulq	%r9,%r13
403*4757b351SPierre Pronchery	andq	%rax,%r13
404*4757b351SPierre Pronchery
405*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
406*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
407*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
408*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
409*4757b351SPierre Pronchery	addq	%r13,%r9
410*4757b351SPierre Pronchery	adcq	%r12,%r10
411*4757b351SPierre Pronchery
412*4757b351SPierre Pronchery	shrq	$52,%r9
413*4757b351SPierre Pronchery	salq	$12,%r10
414*4757b351SPierre Pronchery	orq	%r10,%r9
415*4757b351SPierre Pronchery
416*4757b351SPierre Pronchery	leaq	-264(%rsp),%rsp
417*4757b351SPierre Pronchery
418*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
419*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
420*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
421*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
422*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
423*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
424*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
425*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
426*4757b351SPierre Pronchery
427*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
428*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
429*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
430*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
431*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
432*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
433*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
434*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
435*4757b351SPierre Pronchery
436*4757b351SPierre Pronchery
437*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
438*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
439*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
440*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
441*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
442*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
443*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
444*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
445*4757b351SPierre Pronchery	movq	$0,256(%rsp)
446*4757b351SPierre Pronchery
447*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
448*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
449*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
450*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
451*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
452*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
453*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
454*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
455*4757b351SPierre Pronchery
456*4757b351SPierre Pronchery	addq	8(%rsp),%r9
457*4757b351SPierre Pronchery
458*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
459*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
460*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
461*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
462*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
463*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
464*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
465*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
466*4757b351SPierre Pronchery
467*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
468*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
469*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
470*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
471*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
472*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
473*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
474*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
475*4757b351SPierre Pronchery
476*4757b351SPierre Pronchery	leaq	264(%rsp),%rsp
477*4757b351SPierre Pronchery	movq	8(%r11),%r13
478*4757b351SPierre Pronchery
479*4757b351SPierre Pronchery	vpbroadcastq	8(%r11),%ymm1
480*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
481*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
482*4757b351SPierre Pronchery	addq	%r13,%r9
483*4757b351SPierre Pronchery	movq	%r12,%r10
484*4757b351SPierre Pronchery	adcq	$0,%r10
485*4757b351SPierre Pronchery
486*4757b351SPierre Pronchery	movq	%r8,%r13
487*4757b351SPierre Pronchery	imulq	%r9,%r13
488*4757b351SPierre Pronchery	andq	%rax,%r13
489*4757b351SPierre Pronchery
490*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
491*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
492*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
493*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
494*4757b351SPierre Pronchery	addq	%r13,%r9
495*4757b351SPierre Pronchery	adcq	%r12,%r10
496*4757b351SPierre Pronchery
497*4757b351SPierre Pronchery	shrq	$52,%r9
498*4757b351SPierre Pronchery	salq	$12,%r10
499*4757b351SPierre Pronchery	orq	%r10,%r9
500*4757b351SPierre Pronchery
501*4757b351SPierre Pronchery	leaq	-264(%rsp),%rsp
502*4757b351SPierre Pronchery
503*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
504*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
505*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
506*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
507*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
508*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
509*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
510*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
511*4757b351SPierre Pronchery
512*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
513*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
514*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
515*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
516*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
517*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
518*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
519*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
520*4757b351SPierre Pronchery
521*4757b351SPierre Pronchery
522*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
523*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
524*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
525*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
526*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
527*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
528*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
529*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
530*4757b351SPierre Pronchery	movq	$0,256(%rsp)
531*4757b351SPierre Pronchery
532*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
533*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
534*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
535*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
536*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
537*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
538*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
539*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
540*4757b351SPierre Pronchery
541*4757b351SPierre Pronchery	addq	8(%rsp),%r9
542*4757b351SPierre Pronchery
543*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
544*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
545*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
546*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
547*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
548*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
549*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
550*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
551*4757b351SPierre Pronchery
552*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
553*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
554*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
555*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
556*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
557*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
558*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
559*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
560*4757b351SPierre Pronchery
561*4757b351SPierre Pronchery	leaq	264(%rsp),%rsp
562*4757b351SPierre Pronchery
563*4757b351SPierre Pronchery	vmovq	%r9,%xmm0
564*4757b351SPierre Pronchery	vpbroadcastq	%xmm0,%ymm0
565*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm3,%ymm3
566*4757b351SPierre Pronchery
567*4757b351SPierre Pronchery
568*4757b351SPierre Pronchery
569*4757b351SPierre Pronchery	vpsrlq	$52,%ymm3,%ymm0
570*4757b351SPierre Pronchery	vpsrlq	$52,%ymm4,%ymm1
571*4757b351SPierre Pronchery	vpsrlq	$52,%ymm5,%ymm2
572*4757b351SPierre Pronchery	vpsrlq	$52,%ymm6,%ymm11
573*4757b351SPierre Pronchery	vpsrlq	$52,%ymm7,%ymm12
574*4757b351SPierre Pronchery	vpsrlq	$52,%ymm8,%ymm13
575*4757b351SPierre Pronchery	vpsrlq	$52,%ymm9,%ymm14
576*4757b351SPierre Pronchery	vpsrlq	$52,%ymm10,%ymm15
577*4757b351SPierre Pronchery
578*4757b351SPierre Pronchery	leaq	-32(%rsp),%rsp
579*4757b351SPierre Pronchery	vmovupd	%ymm3,(%rsp)
580*4757b351SPierre Pronchery
581*4757b351SPierre Pronchery
582*4757b351SPierre Pronchery	vpermq	$144,%ymm15,%ymm15
583*4757b351SPierre Pronchery	vpermq	$3,%ymm14,%ymm3
584*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm15,%ymm15
585*4757b351SPierre Pronchery
586*4757b351SPierre Pronchery	vpermq	$144,%ymm14,%ymm14
587*4757b351SPierre Pronchery	vpermq	$3,%ymm13,%ymm3
588*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm14,%ymm14
589*4757b351SPierre Pronchery
590*4757b351SPierre Pronchery	vpermq	$144,%ymm13,%ymm13
591*4757b351SPierre Pronchery	vpermq	$3,%ymm12,%ymm3
592*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm13,%ymm13
593*4757b351SPierre Pronchery
594*4757b351SPierre Pronchery	vpermq	$144,%ymm12,%ymm12
595*4757b351SPierre Pronchery	vpermq	$3,%ymm11,%ymm3
596*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm12,%ymm12
597*4757b351SPierre Pronchery
598*4757b351SPierre Pronchery	vpermq	$144,%ymm11,%ymm11
599*4757b351SPierre Pronchery	vpermq	$3,%ymm2,%ymm3
600*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm11,%ymm11
601*4757b351SPierre Pronchery
602*4757b351SPierre Pronchery	vpermq	$144,%ymm2,%ymm2
603*4757b351SPierre Pronchery	vpermq	$3,%ymm1,%ymm3
604*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm2,%ymm2
605*4757b351SPierre Pronchery
606*4757b351SPierre Pronchery	vpermq	$144,%ymm1,%ymm1
607*4757b351SPierre Pronchery	vpermq	$3,%ymm0,%ymm3
608*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm1,%ymm1
609*4757b351SPierre Pronchery
610*4757b351SPierre Pronchery	vpermq	$144,%ymm0,%ymm0
611*4757b351SPierre Pronchery	vpand	.Lhigh64x3(%rip),%ymm0,%ymm0
612*4757b351SPierre Pronchery
613*4757b351SPierre Pronchery	vmovupd	(%rsp),%ymm3
614*4757b351SPierre Pronchery	leaq	32(%rsp),%rsp
615*4757b351SPierre Pronchery
616*4757b351SPierre Pronchery
617*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
618*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
619*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
620*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
621*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
622*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
623*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
624*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
625*4757b351SPierre Pronchery
626*4757b351SPierre Pronchery
627*4757b351SPierre Pronchery	vpaddq	%ymm0,%ymm3,%ymm3
628*4757b351SPierre Pronchery	vpaddq	%ymm1,%ymm4,%ymm4
629*4757b351SPierre Pronchery	vpaddq	%ymm2,%ymm5,%ymm5
630*4757b351SPierre Pronchery	vpaddq	%ymm11,%ymm6,%ymm6
631*4757b351SPierre Pronchery	vpaddq	%ymm12,%ymm7,%ymm7
632*4757b351SPierre Pronchery	vpaddq	%ymm13,%ymm8,%ymm8
633*4757b351SPierre Pronchery	vpaddq	%ymm14,%ymm9,%ymm9
634*4757b351SPierre Pronchery	vpaddq	%ymm15,%ymm10,%ymm10
635*4757b351SPierre Pronchery
636*4757b351SPierre Pronchery
637*4757b351SPierre Pronchery
638*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm3,%ymm0
639*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm4,%ymm1
640*4757b351SPierre Pronchery	vmovmskpd	%ymm0,%r14d
641*4757b351SPierre Pronchery	vmovmskpd	%ymm1,%r13d
642*4757b351SPierre Pronchery	shlb	$4,%r13b
643*4757b351SPierre Pronchery	orb	%r13b,%r14b
644*4757b351SPierre Pronchery
645*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm5,%ymm2
646*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm6,%ymm11
647*4757b351SPierre Pronchery	vmovmskpd	%ymm2,%r13d
648*4757b351SPierre Pronchery	vmovmskpd	%ymm11,%r12d
649*4757b351SPierre Pronchery	shlb	$4,%r12b
650*4757b351SPierre Pronchery	orb	%r12b,%r13b
651*4757b351SPierre Pronchery
652*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm7,%ymm12
653*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm8,%ymm13
654*4757b351SPierre Pronchery	vmovmskpd	%ymm12,%r12d
655*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
656*4757b351SPierre Pronchery	shlb	$4,%r11b
657*4757b351SPierre Pronchery	orb	%r11b,%r12b
658*4757b351SPierre Pronchery
659*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm9,%ymm14
660*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm10,%ymm15
661*4757b351SPierre Pronchery	vmovmskpd	%ymm14,%r11d
662*4757b351SPierre Pronchery	vmovmskpd	%ymm15,%r10d
663*4757b351SPierre Pronchery	shlb	$4,%r10b
664*4757b351SPierre Pronchery	orb	%r10b,%r11b
665*4757b351SPierre Pronchery
666*4757b351SPierre Pronchery	addb	%r14b,%r14b
667*4757b351SPierre Pronchery	adcb	%r13b,%r13b
668*4757b351SPierre Pronchery	adcb	%r12b,%r12b
669*4757b351SPierre Pronchery	adcb	%r11b,%r11b
670*4757b351SPierre Pronchery
671*4757b351SPierre Pronchery
672*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm3,%ymm0
673*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm4,%ymm1
674*4757b351SPierre Pronchery	vmovmskpd	%ymm0,%r9d
675*4757b351SPierre Pronchery	vmovmskpd	%ymm1,%r8d
676*4757b351SPierre Pronchery	shlb	$4,%r8b
677*4757b351SPierre Pronchery	orb	%r8b,%r9b
678*4757b351SPierre Pronchery
679*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm5,%ymm2
680*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm6,%ymm11
681*4757b351SPierre Pronchery	vmovmskpd	%ymm2,%r8d
682*4757b351SPierre Pronchery	vmovmskpd	%ymm11,%edx
683*4757b351SPierre Pronchery	shlb	$4,%dl
684*4757b351SPierre Pronchery	orb	%dl,%r8b
685*4757b351SPierre Pronchery
686*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm7,%ymm12
687*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm8,%ymm13
688*4757b351SPierre Pronchery	vmovmskpd	%ymm12,%edx
689*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
690*4757b351SPierre Pronchery	shlb	$4,%cl
691*4757b351SPierre Pronchery	orb	%cl,%dl
692*4757b351SPierre Pronchery
693*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm9,%ymm14
694*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm10,%ymm15
695*4757b351SPierre Pronchery	vmovmskpd	%ymm14,%ecx
696*4757b351SPierre Pronchery	vmovmskpd	%ymm15,%ebx
697*4757b351SPierre Pronchery	shlb	$4,%bl
698*4757b351SPierre Pronchery	orb	%bl,%cl
699*4757b351SPierre Pronchery
700*4757b351SPierre Pronchery	addb	%r9b,%r14b
701*4757b351SPierre Pronchery	adcb	%r8b,%r13b
702*4757b351SPierre Pronchery	adcb	%dl,%r12b
703*4757b351SPierre Pronchery	adcb	%cl,%r11b
704*4757b351SPierre Pronchery
705*4757b351SPierre Pronchery	xorb	%r9b,%r14b
706*4757b351SPierre Pronchery	xorb	%r8b,%r13b
707*4757b351SPierre Pronchery	xorb	%dl,%r12b
708*4757b351SPierre Pronchery	xorb	%cl,%r11b
709*4757b351SPierre Pronchery
710*4757b351SPierre Pronchery	leaq	.Lkmasklut(%rip),%rdx
711*4757b351SPierre Pronchery
712*4757b351SPierre Pronchery	movb	%r14b,%r10b
713*4757b351SPierre Pronchery	andq	$0xf,%r14
714*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm3,%ymm0
715*4757b351SPierre Pronchery	shlq	$5,%r14
716*4757b351SPierre Pronchery	vmovapd	(%rdx,%r14,1),%ymm2
717*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm3,%ymm3
718*4757b351SPierre Pronchery
719*4757b351SPierre Pronchery	shrb	$4,%r10b
720*4757b351SPierre Pronchery	andq	$0xf,%r10
721*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm4,%ymm0
722*4757b351SPierre Pronchery	shlq	$5,%r10
723*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
724*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm4,%ymm4
725*4757b351SPierre Pronchery
726*4757b351SPierre Pronchery	movb	%r13b,%r10b
727*4757b351SPierre Pronchery	andq	$0xf,%r13
728*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm5,%ymm0
729*4757b351SPierre Pronchery	shlq	$5,%r13
730*4757b351SPierre Pronchery	vmovapd	(%rdx,%r13,1),%ymm2
731*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm5,%ymm5
732*4757b351SPierre Pronchery
733*4757b351SPierre Pronchery	shrb	$4,%r10b
734*4757b351SPierre Pronchery	andq	$0xf,%r10
735*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm6,%ymm0
736*4757b351SPierre Pronchery	shlq	$5,%r10
737*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
738*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm6,%ymm6
739*4757b351SPierre Pronchery
740*4757b351SPierre Pronchery	movb	%r12b,%r10b
741*4757b351SPierre Pronchery	andq	$0xf,%r12
742*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm7,%ymm0
743*4757b351SPierre Pronchery	shlq	$5,%r12
744*4757b351SPierre Pronchery	vmovapd	(%rdx,%r12,1),%ymm2
745*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm7,%ymm7
746*4757b351SPierre Pronchery
747*4757b351SPierre Pronchery	shrb	$4,%r10b
748*4757b351SPierre Pronchery	andq	$0xf,%r10
749*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm8,%ymm0
750*4757b351SPierre Pronchery	shlq	$5,%r10
751*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
752*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm8,%ymm8
753*4757b351SPierre Pronchery
754*4757b351SPierre Pronchery	movb	%r11b,%r10b
755*4757b351SPierre Pronchery	andq	$0xf,%r11
756*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm9,%ymm0
757*4757b351SPierre Pronchery	shlq	$5,%r11
758*4757b351SPierre Pronchery	vmovapd	(%rdx,%r11,1),%ymm2
759*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm9,%ymm9
760*4757b351SPierre Pronchery
761*4757b351SPierre Pronchery	shrb	$4,%r10b
762*4757b351SPierre Pronchery	andq	$0xf,%r10
763*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm10,%ymm0
764*4757b351SPierre Pronchery	shlq	$5,%r10
765*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
766*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm10,%ymm10
767*4757b351SPierre Pronchery
768*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
769*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
770*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
771*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
772*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
773*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
774*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
775*4757b351SPierre Pronchery
776*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
777*4757b351SPierre Pronchery
778*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rdi)
779*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rdi)
780*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rdi)
781*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rdi)
782*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rdi)
783*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rdi)
784*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rdi)
785*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rdi)
786*4757b351SPierre Pronchery
787*4757b351SPierre Pronchery	vzeroupper
788*4757b351SPierre Pronchery	leaq	(%rsp),%rax
789*4757b351SPierre Pronchery.cfi_def_cfa_register	%rax
790*4757b351SPierre Pronchery	movq	0(%rax),%r15
791*4757b351SPierre Pronchery.cfi_restore	%r15
792*4757b351SPierre Pronchery	movq	8(%rax),%r14
793*4757b351SPierre Pronchery.cfi_restore	%r14
794*4757b351SPierre Pronchery	movq	16(%rax),%r13
795*4757b351SPierre Pronchery.cfi_restore	%r13
796*4757b351SPierre Pronchery	movq	24(%rax),%r12
797*4757b351SPierre Pronchery.cfi_restore	%r12
798*4757b351SPierre Pronchery	movq	32(%rax),%rbp
799*4757b351SPierre Pronchery.cfi_restore	%rbp
800*4757b351SPierre Pronchery	movq	40(%rax),%rbx
801*4757b351SPierre Pronchery.cfi_restore	%rbx
802*4757b351SPierre Pronchery	leaq	48(%rax),%rsp
803*4757b351SPierre Pronchery.cfi_def_cfa	%rsp,8
804*4757b351SPierre Pronchery.Lossl_rsaz_amm52x30_x1_avxifma256_epilogue:
805*4757b351SPierre Pronchery	.byte	0xf3,0xc3
806*4757b351SPierre Pronchery.cfi_endproc
807*4757b351SPierre Pronchery.size	ossl_rsaz_amm52x30_x1_avxifma256, .-ossl_rsaz_amm52x30_x1_avxifma256
808*4757b351SPierre Pronchery.section	.rodata
809*4757b351SPierre Pronchery.align	32
810*4757b351SPierre Pronchery.Lmask52x4:
811*4757b351SPierre Pronchery.quad	0xfffffffffffff
812*4757b351SPierre Pronchery.quad	0xfffffffffffff
813*4757b351SPierre Pronchery.quad	0xfffffffffffff
814*4757b351SPierre Pronchery.quad	0xfffffffffffff
815*4757b351SPierre Pronchery.Lhigh64x3:
816*4757b351SPierre Pronchery.quad	0x0
817*4757b351SPierre Pronchery.quad	0xffffffffffffffff
818*4757b351SPierre Pronchery.quad	0xffffffffffffffff
819*4757b351SPierre Pronchery.quad	0xffffffffffffffff
820*4757b351SPierre Pronchery.Lkmasklut:
821*4757b351SPierre Pronchery
822*4757b351SPierre Pronchery.quad	0x0
823*4757b351SPierre Pronchery.quad	0x0
824*4757b351SPierre Pronchery.quad	0x0
825*4757b351SPierre Pronchery.quad	0x0
826*4757b351SPierre Pronchery
827*4757b351SPierre Pronchery.quad	0xffffffffffffffff
828*4757b351SPierre Pronchery.quad	0x0
829*4757b351SPierre Pronchery.quad	0x0
830*4757b351SPierre Pronchery.quad	0x0
831*4757b351SPierre Pronchery
832*4757b351SPierre Pronchery.quad	0x0
833*4757b351SPierre Pronchery.quad	0xffffffffffffffff
834*4757b351SPierre Pronchery.quad	0x0
835*4757b351SPierre Pronchery.quad	0x0
836*4757b351SPierre Pronchery
837*4757b351SPierre Pronchery.quad	0xffffffffffffffff
838*4757b351SPierre Pronchery.quad	0xffffffffffffffff
839*4757b351SPierre Pronchery.quad	0x0
840*4757b351SPierre Pronchery.quad	0x0
841*4757b351SPierre Pronchery
842*4757b351SPierre Pronchery.quad	0x0
843*4757b351SPierre Pronchery.quad	0x0
844*4757b351SPierre Pronchery.quad	0xffffffffffffffff
845*4757b351SPierre Pronchery.quad	0x0
846*4757b351SPierre Pronchery
847*4757b351SPierre Pronchery.quad	0xffffffffffffffff
848*4757b351SPierre Pronchery.quad	0x0
849*4757b351SPierre Pronchery.quad	0xffffffffffffffff
850*4757b351SPierre Pronchery.quad	0x0
851*4757b351SPierre Pronchery
852*4757b351SPierre Pronchery.quad	0x0
853*4757b351SPierre Pronchery.quad	0xffffffffffffffff
854*4757b351SPierre Pronchery.quad	0xffffffffffffffff
855*4757b351SPierre Pronchery.quad	0x0
856*4757b351SPierre Pronchery
857*4757b351SPierre Pronchery.quad	0xffffffffffffffff
858*4757b351SPierre Pronchery.quad	0xffffffffffffffff
859*4757b351SPierre Pronchery.quad	0xffffffffffffffff
860*4757b351SPierre Pronchery.quad	0x0
861*4757b351SPierre Pronchery
862*4757b351SPierre Pronchery.quad	0x0
863*4757b351SPierre Pronchery.quad	0x0
864*4757b351SPierre Pronchery.quad	0x0
865*4757b351SPierre Pronchery.quad	0xffffffffffffffff
866*4757b351SPierre Pronchery
867*4757b351SPierre Pronchery.quad	0xffffffffffffffff
868*4757b351SPierre Pronchery.quad	0x0
869*4757b351SPierre Pronchery.quad	0x0
870*4757b351SPierre Pronchery.quad	0xffffffffffffffff
871*4757b351SPierre Pronchery
872*4757b351SPierre Pronchery.quad	0x0
873*4757b351SPierre Pronchery.quad	0xffffffffffffffff
874*4757b351SPierre Pronchery.quad	0x0
875*4757b351SPierre Pronchery.quad	0xffffffffffffffff
876*4757b351SPierre Pronchery
877*4757b351SPierre Pronchery.quad	0xffffffffffffffff
878*4757b351SPierre Pronchery.quad	0xffffffffffffffff
879*4757b351SPierre Pronchery.quad	0x0
880*4757b351SPierre Pronchery.quad	0xffffffffffffffff
881*4757b351SPierre Pronchery
882*4757b351SPierre Pronchery.quad	0x0
883*4757b351SPierre Pronchery.quad	0x0
884*4757b351SPierre Pronchery.quad	0xffffffffffffffff
885*4757b351SPierre Pronchery.quad	0xffffffffffffffff
886*4757b351SPierre Pronchery
887*4757b351SPierre Pronchery.quad	0xffffffffffffffff
888*4757b351SPierre Pronchery.quad	0x0
889*4757b351SPierre Pronchery.quad	0xffffffffffffffff
890*4757b351SPierre Pronchery.quad	0xffffffffffffffff
891*4757b351SPierre Pronchery
892*4757b351SPierre Pronchery.quad	0x0
893*4757b351SPierre Pronchery.quad	0xffffffffffffffff
894*4757b351SPierre Pronchery.quad	0xffffffffffffffff
895*4757b351SPierre Pronchery.quad	0xffffffffffffffff
896*4757b351SPierre Pronchery
897*4757b351SPierre Pronchery.quad	0xffffffffffffffff
898*4757b351SPierre Pronchery.quad	0xffffffffffffffff
899*4757b351SPierre Pronchery.quad	0xffffffffffffffff
900*4757b351SPierre Pronchery.quad	0xffffffffffffffff
901*4757b351SPierre Pronchery.text
902*4757b351SPierre Pronchery
903*4757b351SPierre Pronchery.globl	ossl_rsaz_amm52x30_x2_avxifma256
904*4757b351SPierre Pronchery.type	ossl_rsaz_amm52x30_x2_avxifma256,@function
905*4757b351SPierre Pronchery.align	32
906*4757b351SPierre Proncheryossl_rsaz_amm52x30_x2_avxifma256:
907*4757b351SPierre Pronchery.cfi_startproc
908*4757b351SPierre Pronchery.byte	243,15,30,250
909*4757b351SPierre Pronchery	pushq	%rbx
910*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
911*4757b351SPierre Pronchery.cfi_offset	%rbx,-16
912*4757b351SPierre Pronchery	pushq	%rbp
913*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
914*4757b351SPierre Pronchery.cfi_offset	%rbp,-24
915*4757b351SPierre Pronchery	pushq	%r12
916*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
917*4757b351SPierre Pronchery.cfi_offset	%r12,-32
918*4757b351SPierre Pronchery	pushq	%r13
919*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
920*4757b351SPierre Pronchery.cfi_offset	%r13,-40
921*4757b351SPierre Pronchery	pushq	%r14
922*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
923*4757b351SPierre Pronchery.cfi_offset	%r14,-48
924*4757b351SPierre Pronchery	pushq	%r15
925*4757b351SPierre Pronchery.cfi_adjust_cfa_offset	8
926*4757b351SPierre Pronchery.cfi_offset	%r15,-56
927*4757b351SPierre Pronchery
928*4757b351SPierre Pronchery	vpxor	%ymm0,%ymm0,%ymm0
929*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
930*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
931*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
932*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
933*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
934*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm8
935*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
936*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm10
937*4757b351SPierre Pronchery
938*4757b351SPierre Pronchery	xorl	%r9d,%r9d
939*4757b351SPierre Pronchery
940*4757b351SPierre Pronchery	movq	%rdx,%r11
941*4757b351SPierre Pronchery	movq	$0xfffffffffffff,%rax
942*4757b351SPierre Pronchery
943*4757b351SPierre Pronchery	movl	$30,%ebx
944*4757b351SPierre Pronchery
945*4757b351SPierre Pronchery.align	32
946*4757b351SPierre Pronchery.Lloop30:
947*4757b351SPierre Pronchery	movq	0(%r11),%r13
948*4757b351SPierre Pronchery
949*4757b351SPierre Pronchery	vpbroadcastq	0(%r11),%ymm1
950*4757b351SPierre Pronchery	movq	0(%rsi),%rdx
951*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
952*4757b351SPierre Pronchery	addq	%r13,%r9
953*4757b351SPierre Pronchery	movq	%r12,%r10
954*4757b351SPierre Pronchery	adcq	$0,%r10
955*4757b351SPierre Pronchery
956*4757b351SPierre Pronchery	movq	(%r8),%r13
957*4757b351SPierre Pronchery	imulq	%r9,%r13
958*4757b351SPierre Pronchery	andq	%rax,%r13
959*4757b351SPierre Pronchery
960*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
961*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
962*4757b351SPierre Pronchery	movq	0(%rcx),%rdx
963*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
964*4757b351SPierre Pronchery	addq	%r13,%r9
965*4757b351SPierre Pronchery	adcq	%r12,%r10
966*4757b351SPierre Pronchery
967*4757b351SPierre Pronchery	shrq	$52,%r9
968*4757b351SPierre Pronchery	salq	$12,%r10
969*4757b351SPierre Pronchery	orq	%r10,%r9
970*4757b351SPierre Pronchery
971*4757b351SPierre Pronchery	leaq	-264(%rsp),%rsp
972*4757b351SPierre Pronchery
973*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rsi),%ymm1,%ymm3
974*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rsi),%ymm1,%ymm4
975*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rsi),%ymm1,%ymm5
976*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rsi),%ymm1,%ymm6
977*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rsi),%ymm1,%ymm7
978*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rsi),%ymm1,%ymm8
979*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rsi),%ymm1,%ymm9
980*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rsi),%ymm1,%ymm10
981*4757b351SPierre Pronchery
982*4757b351SPierre Pronchery{vex}	vpmadd52luq	0(%rcx),%ymm2,%ymm3
983*4757b351SPierre Pronchery{vex}	vpmadd52luq	32(%rcx),%ymm2,%ymm4
984*4757b351SPierre Pronchery{vex}	vpmadd52luq	64(%rcx),%ymm2,%ymm5
985*4757b351SPierre Pronchery{vex}	vpmadd52luq	96(%rcx),%ymm2,%ymm6
986*4757b351SPierre Pronchery{vex}	vpmadd52luq	128(%rcx),%ymm2,%ymm7
987*4757b351SPierre Pronchery{vex}	vpmadd52luq	160(%rcx),%ymm2,%ymm8
988*4757b351SPierre Pronchery{vex}	vpmadd52luq	192(%rcx),%ymm2,%ymm9
989*4757b351SPierre Pronchery{vex}	vpmadd52luq	224(%rcx),%ymm2,%ymm10
990*4757b351SPierre Pronchery
991*4757b351SPierre Pronchery
992*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
993*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
994*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
995*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
996*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
997*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
998*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
999*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
1000*4757b351SPierre Pronchery	movq	$0,256(%rsp)
1001*4757b351SPierre Pronchery
1002*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
1003*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
1004*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
1005*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
1006*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
1007*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
1008*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
1009*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
1010*4757b351SPierre Pronchery
1011*4757b351SPierre Pronchery	addq	8(%rsp),%r9
1012*4757b351SPierre Pronchery
1013*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rsi),%ymm1,%ymm3
1014*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rsi),%ymm1,%ymm4
1015*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rsi),%ymm1,%ymm5
1016*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rsi),%ymm1,%ymm6
1017*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rsi),%ymm1,%ymm7
1018*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rsi),%ymm1,%ymm8
1019*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rsi),%ymm1,%ymm9
1020*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rsi),%ymm1,%ymm10
1021*4757b351SPierre Pronchery
1022*4757b351SPierre Pronchery{vex}	vpmadd52huq	0(%rcx),%ymm2,%ymm3
1023*4757b351SPierre Pronchery{vex}	vpmadd52huq	32(%rcx),%ymm2,%ymm4
1024*4757b351SPierre Pronchery{vex}	vpmadd52huq	64(%rcx),%ymm2,%ymm5
1025*4757b351SPierre Pronchery{vex}	vpmadd52huq	96(%rcx),%ymm2,%ymm6
1026*4757b351SPierre Pronchery{vex}	vpmadd52huq	128(%rcx),%ymm2,%ymm7
1027*4757b351SPierre Pronchery{vex}	vpmadd52huq	160(%rcx),%ymm2,%ymm8
1028*4757b351SPierre Pronchery{vex}	vpmadd52huq	192(%rcx),%ymm2,%ymm9
1029*4757b351SPierre Pronchery{vex}	vpmadd52huq	224(%rcx),%ymm2,%ymm10
1030*4757b351SPierre Pronchery
1031*4757b351SPierre Pronchery	leaq	264(%rsp),%rsp
1032*4757b351SPierre Pronchery	leaq	8(%r11),%r11
1033*4757b351SPierre Pronchery	decl	%ebx
1034*4757b351SPierre Pronchery	jne	.Lloop30
1035*4757b351SPierre Pronchery
1036*4757b351SPierre Pronchery	pushq	%r11
1037*4757b351SPierre Pronchery	pushq	%rsi
1038*4757b351SPierre Pronchery	pushq	%rcx
1039*4757b351SPierre Pronchery	pushq	%r8
1040*4757b351SPierre Pronchery
1041*4757b351SPierre Pronchery	vmovq	%r9,%xmm0
1042*4757b351SPierre Pronchery	vpbroadcastq	%xmm0,%ymm0
1043*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm3,%ymm3
1044*4757b351SPierre Pronchery
1045*4757b351SPierre Pronchery
1046*4757b351SPierre Pronchery
1047*4757b351SPierre Pronchery	vpsrlq	$52,%ymm3,%ymm0
1048*4757b351SPierre Pronchery	vpsrlq	$52,%ymm4,%ymm1
1049*4757b351SPierre Pronchery	vpsrlq	$52,%ymm5,%ymm2
1050*4757b351SPierre Pronchery	vpsrlq	$52,%ymm6,%ymm11
1051*4757b351SPierre Pronchery	vpsrlq	$52,%ymm7,%ymm12
1052*4757b351SPierre Pronchery	vpsrlq	$52,%ymm8,%ymm13
1053*4757b351SPierre Pronchery	vpsrlq	$52,%ymm9,%ymm14
1054*4757b351SPierre Pronchery	vpsrlq	$52,%ymm10,%ymm15
1055*4757b351SPierre Pronchery
1056*4757b351SPierre Pronchery	leaq	-32(%rsp),%rsp
1057*4757b351SPierre Pronchery	vmovupd	%ymm3,(%rsp)
1058*4757b351SPierre Pronchery
1059*4757b351SPierre Pronchery
1060*4757b351SPierre Pronchery	vpermq	$144,%ymm15,%ymm15
1061*4757b351SPierre Pronchery	vpermq	$3,%ymm14,%ymm3
1062*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm15,%ymm15
1063*4757b351SPierre Pronchery
1064*4757b351SPierre Pronchery	vpermq	$144,%ymm14,%ymm14
1065*4757b351SPierre Pronchery	vpermq	$3,%ymm13,%ymm3
1066*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm14,%ymm14
1067*4757b351SPierre Pronchery
1068*4757b351SPierre Pronchery	vpermq	$144,%ymm13,%ymm13
1069*4757b351SPierre Pronchery	vpermq	$3,%ymm12,%ymm3
1070*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm13,%ymm13
1071*4757b351SPierre Pronchery
1072*4757b351SPierre Pronchery	vpermq	$144,%ymm12,%ymm12
1073*4757b351SPierre Pronchery	vpermq	$3,%ymm11,%ymm3
1074*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm12,%ymm12
1075*4757b351SPierre Pronchery
1076*4757b351SPierre Pronchery	vpermq	$144,%ymm11,%ymm11
1077*4757b351SPierre Pronchery	vpermq	$3,%ymm2,%ymm3
1078*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm11,%ymm11
1079*4757b351SPierre Pronchery
1080*4757b351SPierre Pronchery	vpermq	$144,%ymm2,%ymm2
1081*4757b351SPierre Pronchery	vpermq	$3,%ymm1,%ymm3
1082*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm2,%ymm2
1083*4757b351SPierre Pronchery
1084*4757b351SPierre Pronchery	vpermq	$144,%ymm1,%ymm1
1085*4757b351SPierre Pronchery	vpermq	$3,%ymm0,%ymm3
1086*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm1,%ymm1
1087*4757b351SPierre Pronchery
1088*4757b351SPierre Pronchery	vpermq	$144,%ymm0,%ymm0
1089*4757b351SPierre Pronchery	vpand	.Lhigh64x3(%rip),%ymm0,%ymm0
1090*4757b351SPierre Pronchery
1091*4757b351SPierre Pronchery	vmovupd	(%rsp),%ymm3
1092*4757b351SPierre Pronchery	leaq	32(%rsp),%rsp
1093*4757b351SPierre Pronchery
1094*4757b351SPierre Pronchery
1095*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
1096*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
1097*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
1098*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
1099*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
1100*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
1101*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
1102*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
1103*4757b351SPierre Pronchery
1104*4757b351SPierre Pronchery
1105*4757b351SPierre Pronchery	vpaddq	%ymm0,%ymm3,%ymm3
1106*4757b351SPierre Pronchery	vpaddq	%ymm1,%ymm4,%ymm4
1107*4757b351SPierre Pronchery	vpaddq	%ymm2,%ymm5,%ymm5
1108*4757b351SPierre Pronchery	vpaddq	%ymm11,%ymm6,%ymm6
1109*4757b351SPierre Pronchery	vpaddq	%ymm12,%ymm7,%ymm7
1110*4757b351SPierre Pronchery	vpaddq	%ymm13,%ymm8,%ymm8
1111*4757b351SPierre Pronchery	vpaddq	%ymm14,%ymm9,%ymm9
1112*4757b351SPierre Pronchery	vpaddq	%ymm15,%ymm10,%ymm10
1113*4757b351SPierre Pronchery
1114*4757b351SPierre Pronchery
1115*4757b351SPierre Pronchery
1116*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm3,%ymm0
1117*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm4,%ymm1
1118*4757b351SPierre Pronchery	vmovmskpd	%ymm0,%r14d
1119*4757b351SPierre Pronchery	vmovmskpd	%ymm1,%r13d
1120*4757b351SPierre Pronchery	shlb	$4,%r13b
1121*4757b351SPierre Pronchery	orb	%r13b,%r14b
1122*4757b351SPierre Pronchery
1123*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm5,%ymm2
1124*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm6,%ymm11
1125*4757b351SPierre Pronchery	vmovmskpd	%ymm2,%r13d
1126*4757b351SPierre Pronchery	vmovmskpd	%ymm11,%r12d
1127*4757b351SPierre Pronchery	shlb	$4,%r12b
1128*4757b351SPierre Pronchery	orb	%r12b,%r13b
1129*4757b351SPierre Pronchery
1130*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm7,%ymm12
1131*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm8,%ymm13
1132*4757b351SPierre Pronchery	vmovmskpd	%ymm12,%r12d
1133*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
1134*4757b351SPierre Pronchery	shlb	$4,%r11b
1135*4757b351SPierre Pronchery	orb	%r11b,%r12b
1136*4757b351SPierre Pronchery
1137*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm9,%ymm14
1138*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm10,%ymm15
1139*4757b351SPierre Pronchery	vmovmskpd	%ymm14,%r11d
1140*4757b351SPierre Pronchery	vmovmskpd	%ymm15,%r10d
1141*4757b351SPierre Pronchery	shlb	$4,%r10b
1142*4757b351SPierre Pronchery	orb	%r10b,%r11b
1143*4757b351SPierre Pronchery
1144*4757b351SPierre Pronchery	addb	%r14b,%r14b
1145*4757b351SPierre Pronchery	adcb	%r13b,%r13b
1146*4757b351SPierre Pronchery	adcb	%r12b,%r12b
1147*4757b351SPierre Pronchery	adcb	%r11b,%r11b
1148*4757b351SPierre Pronchery
1149*4757b351SPierre Pronchery
1150*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm3,%ymm0
1151*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm4,%ymm1
1152*4757b351SPierre Pronchery	vmovmskpd	%ymm0,%r9d
1153*4757b351SPierre Pronchery	vmovmskpd	%ymm1,%r8d
1154*4757b351SPierre Pronchery	shlb	$4,%r8b
1155*4757b351SPierre Pronchery	orb	%r8b,%r9b
1156*4757b351SPierre Pronchery
1157*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm5,%ymm2
1158*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm6,%ymm11
1159*4757b351SPierre Pronchery	vmovmskpd	%ymm2,%r8d
1160*4757b351SPierre Pronchery	vmovmskpd	%ymm11,%edx
1161*4757b351SPierre Pronchery	shlb	$4,%dl
1162*4757b351SPierre Pronchery	orb	%dl,%r8b
1163*4757b351SPierre Pronchery
1164*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm7,%ymm12
1165*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm8,%ymm13
1166*4757b351SPierre Pronchery	vmovmskpd	%ymm12,%edx
1167*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
1168*4757b351SPierre Pronchery	shlb	$4,%cl
1169*4757b351SPierre Pronchery	orb	%cl,%dl
1170*4757b351SPierre Pronchery
1171*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm9,%ymm14
1172*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm10,%ymm15
1173*4757b351SPierre Pronchery	vmovmskpd	%ymm14,%ecx
1174*4757b351SPierre Pronchery	vmovmskpd	%ymm15,%ebx
1175*4757b351SPierre Pronchery	shlb	$4,%bl
1176*4757b351SPierre Pronchery	orb	%bl,%cl
1177*4757b351SPierre Pronchery
1178*4757b351SPierre Pronchery	addb	%r9b,%r14b
1179*4757b351SPierre Pronchery	adcb	%r8b,%r13b
1180*4757b351SPierre Pronchery	adcb	%dl,%r12b
1181*4757b351SPierre Pronchery	adcb	%cl,%r11b
1182*4757b351SPierre Pronchery
1183*4757b351SPierre Pronchery	xorb	%r9b,%r14b
1184*4757b351SPierre Pronchery	xorb	%r8b,%r13b
1185*4757b351SPierre Pronchery	xorb	%dl,%r12b
1186*4757b351SPierre Pronchery	xorb	%cl,%r11b
1187*4757b351SPierre Pronchery
1188*4757b351SPierre Pronchery	leaq	.Lkmasklut(%rip),%rdx
1189*4757b351SPierre Pronchery
1190*4757b351SPierre Pronchery	movb	%r14b,%r10b
1191*4757b351SPierre Pronchery	andq	$0xf,%r14
1192*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm3,%ymm0
1193*4757b351SPierre Pronchery	shlq	$5,%r14
1194*4757b351SPierre Pronchery	vmovapd	(%rdx,%r14,1),%ymm2
1195*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm3,%ymm3
1196*4757b351SPierre Pronchery
1197*4757b351SPierre Pronchery	shrb	$4,%r10b
1198*4757b351SPierre Pronchery	andq	$0xf,%r10
1199*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm4,%ymm0
1200*4757b351SPierre Pronchery	shlq	$5,%r10
1201*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
1202*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm4,%ymm4
1203*4757b351SPierre Pronchery
1204*4757b351SPierre Pronchery	movb	%r13b,%r10b
1205*4757b351SPierre Pronchery	andq	$0xf,%r13
1206*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm5,%ymm0
1207*4757b351SPierre Pronchery	shlq	$5,%r13
1208*4757b351SPierre Pronchery	vmovapd	(%rdx,%r13,1),%ymm2
1209*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm5,%ymm5
1210*4757b351SPierre Pronchery
1211*4757b351SPierre Pronchery	shrb	$4,%r10b
1212*4757b351SPierre Pronchery	andq	$0xf,%r10
1213*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm6,%ymm0
1214*4757b351SPierre Pronchery	shlq	$5,%r10
1215*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
1216*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm6,%ymm6
1217*4757b351SPierre Pronchery
1218*4757b351SPierre Pronchery	movb	%r12b,%r10b
1219*4757b351SPierre Pronchery	andq	$0xf,%r12
1220*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm7,%ymm0
1221*4757b351SPierre Pronchery	shlq	$5,%r12
1222*4757b351SPierre Pronchery	vmovapd	(%rdx,%r12,1),%ymm2
1223*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm7,%ymm7
1224*4757b351SPierre Pronchery
1225*4757b351SPierre Pronchery	shrb	$4,%r10b
1226*4757b351SPierre Pronchery	andq	$0xf,%r10
1227*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm8,%ymm0
1228*4757b351SPierre Pronchery	shlq	$5,%r10
1229*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
1230*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm8,%ymm8
1231*4757b351SPierre Pronchery
1232*4757b351SPierre Pronchery	movb	%r11b,%r10b
1233*4757b351SPierre Pronchery	andq	$0xf,%r11
1234*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm9,%ymm0
1235*4757b351SPierre Pronchery	shlq	$5,%r11
1236*4757b351SPierre Pronchery	vmovapd	(%rdx,%r11,1),%ymm2
1237*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm9,%ymm9
1238*4757b351SPierre Pronchery
1239*4757b351SPierre Pronchery	shrb	$4,%r10b
1240*4757b351SPierre Pronchery	andq	$0xf,%r10
1241*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm10,%ymm0
1242*4757b351SPierre Pronchery	shlq	$5,%r10
1243*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
1244*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm10,%ymm10
1245*4757b351SPierre Pronchery
1246*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
1247*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
1248*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
1249*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
1250*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
1251*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
1252*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
1253*4757b351SPierre Pronchery
1254*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
1255*4757b351SPierre Pronchery	popq	%r8
1256*4757b351SPierre Pronchery	popq	%rcx
1257*4757b351SPierre Pronchery	popq	%rsi
1258*4757b351SPierre Pronchery	popq	%r11
1259*4757b351SPierre Pronchery
1260*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rdi)
1261*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rdi)
1262*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rdi)
1263*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rdi)
1264*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rdi)
1265*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rdi)
1266*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rdi)
1267*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rdi)
1268*4757b351SPierre Pronchery
1269*4757b351SPierre Pronchery	xorl	%r15d,%r15d
1270*4757b351SPierre Pronchery
1271*4757b351SPierre Pronchery	leaq	16(%r11),%r11
1272*4757b351SPierre Pronchery	movq	$0xfffffffffffff,%rax
1273*4757b351SPierre Pronchery
1274*4757b351SPierre Pronchery	movl	$30,%ebx
1275*4757b351SPierre Pronchery
1276*4757b351SPierre Pronchery	vpxor	%ymm0,%ymm0,%ymm0
1277*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
1278*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
1279*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
1280*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
1281*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
1282*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm8
1283*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
1284*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm10
1285*4757b351SPierre Pronchery.align	32
1286*4757b351SPierre Pronchery.Lloop40:
1287*4757b351SPierre Pronchery	movq	0(%r11),%r13
1288*4757b351SPierre Pronchery
1289*4757b351SPierre Pronchery	vpbroadcastq	0(%r11),%ymm1
1290*4757b351SPierre Pronchery	movq	256(%rsi),%rdx
1291*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
1292*4757b351SPierre Pronchery	addq	%r13,%r9
1293*4757b351SPierre Pronchery	movq	%r12,%r10
1294*4757b351SPierre Pronchery	adcq	$0,%r10
1295*4757b351SPierre Pronchery
1296*4757b351SPierre Pronchery	movq	8(%r8),%r13
1297*4757b351SPierre Pronchery	imulq	%r9,%r13
1298*4757b351SPierre Pronchery	andq	%rax,%r13
1299*4757b351SPierre Pronchery
1300*4757b351SPierre Pronchery	vmovq	%r13,%xmm2
1301*4757b351SPierre Pronchery	vpbroadcastq	%xmm2,%ymm2
1302*4757b351SPierre Pronchery	movq	256(%rcx),%rdx
1303*4757b351SPierre Pronchery	mulxq	%r13,%r13,%r12
1304*4757b351SPierre Pronchery	addq	%r13,%r9
1305*4757b351SPierre Pronchery	adcq	%r12,%r10
1306*4757b351SPierre Pronchery
1307*4757b351SPierre Pronchery	shrq	$52,%r9
1308*4757b351SPierre Pronchery	salq	$12,%r10
1309*4757b351SPierre Pronchery	orq	%r10,%r9
1310*4757b351SPierre Pronchery
1311*4757b351SPierre Pronchery	leaq	-264(%rsp),%rsp
1312*4757b351SPierre Pronchery
1313*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rsi),%ymm1,%ymm3
1314*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rsi),%ymm1,%ymm4
1315*4757b351SPierre Pronchery{vex}	vpmadd52luq	320(%rsi),%ymm1,%ymm5
1316*4757b351SPierre Pronchery{vex}	vpmadd52luq	352(%rsi),%ymm1,%ymm6
1317*4757b351SPierre Pronchery{vex}	vpmadd52luq	384(%rsi),%ymm1,%ymm7
1318*4757b351SPierre Pronchery{vex}	vpmadd52luq	416(%rsi),%ymm1,%ymm8
1319*4757b351SPierre Pronchery{vex}	vpmadd52luq	448(%rsi),%ymm1,%ymm9
1320*4757b351SPierre Pronchery{vex}	vpmadd52luq	480(%rsi),%ymm1,%ymm10
1321*4757b351SPierre Pronchery
1322*4757b351SPierre Pronchery{vex}	vpmadd52luq	256(%rcx),%ymm2,%ymm3
1323*4757b351SPierre Pronchery{vex}	vpmadd52luq	288(%rcx),%ymm2,%ymm4
1324*4757b351SPierre Pronchery{vex}	vpmadd52luq	320(%rcx),%ymm2,%ymm5
1325*4757b351SPierre Pronchery{vex}	vpmadd52luq	352(%rcx),%ymm2,%ymm6
1326*4757b351SPierre Pronchery{vex}	vpmadd52luq	384(%rcx),%ymm2,%ymm7
1327*4757b351SPierre Pronchery{vex}	vpmadd52luq	416(%rcx),%ymm2,%ymm8
1328*4757b351SPierre Pronchery{vex}	vpmadd52luq	448(%rcx),%ymm2,%ymm9
1329*4757b351SPierre Pronchery{vex}	vpmadd52luq	480(%rcx),%ymm2,%ymm10
1330*4757b351SPierre Pronchery
1331*4757b351SPierre Pronchery
1332*4757b351SPierre Pronchery	vmovdqu	%ymm3,0(%rsp)
1333*4757b351SPierre Pronchery	vmovdqu	%ymm4,32(%rsp)
1334*4757b351SPierre Pronchery	vmovdqu	%ymm5,64(%rsp)
1335*4757b351SPierre Pronchery	vmovdqu	%ymm6,96(%rsp)
1336*4757b351SPierre Pronchery	vmovdqu	%ymm7,128(%rsp)
1337*4757b351SPierre Pronchery	vmovdqu	%ymm8,160(%rsp)
1338*4757b351SPierre Pronchery	vmovdqu	%ymm9,192(%rsp)
1339*4757b351SPierre Pronchery	vmovdqu	%ymm10,224(%rsp)
1340*4757b351SPierre Pronchery	movq	$0,256(%rsp)
1341*4757b351SPierre Pronchery
1342*4757b351SPierre Pronchery	vmovdqu	8(%rsp),%ymm3
1343*4757b351SPierre Pronchery	vmovdqu	40(%rsp),%ymm4
1344*4757b351SPierre Pronchery	vmovdqu	72(%rsp),%ymm5
1345*4757b351SPierre Pronchery	vmovdqu	104(%rsp),%ymm6
1346*4757b351SPierre Pronchery	vmovdqu	136(%rsp),%ymm7
1347*4757b351SPierre Pronchery	vmovdqu	168(%rsp),%ymm8
1348*4757b351SPierre Pronchery	vmovdqu	200(%rsp),%ymm9
1349*4757b351SPierre Pronchery	vmovdqu	232(%rsp),%ymm10
1350*4757b351SPierre Pronchery
1351*4757b351SPierre Pronchery	addq	8(%rsp),%r9
1352*4757b351SPierre Pronchery
1353*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rsi),%ymm1,%ymm3
1354*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rsi),%ymm1,%ymm4
1355*4757b351SPierre Pronchery{vex}	vpmadd52huq	320(%rsi),%ymm1,%ymm5
1356*4757b351SPierre Pronchery{vex}	vpmadd52huq	352(%rsi),%ymm1,%ymm6
1357*4757b351SPierre Pronchery{vex}	vpmadd52huq	384(%rsi),%ymm1,%ymm7
1358*4757b351SPierre Pronchery{vex}	vpmadd52huq	416(%rsi),%ymm1,%ymm8
1359*4757b351SPierre Pronchery{vex}	vpmadd52huq	448(%rsi),%ymm1,%ymm9
1360*4757b351SPierre Pronchery{vex}	vpmadd52huq	480(%rsi),%ymm1,%ymm10
1361*4757b351SPierre Pronchery
1362*4757b351SPierre Pronchery{vex}	vpmadd52huq	256(%rcx),%ymm2,%ymm3
1363*4757b351SPierre Pronchery{vex}	vpmadd52huq	288(%rcx),%ymm2,%ymm4
1364*4757b351SPierre Pronchery{vex}	vpmadd52huq	320(%rcx),%ymm2,%ymm5
1365*4757b351SPierre Pronchery{vex}	vpmadd52huq	352(%rcx),%ymm2,%ymm6
1366*4757b351SPierre Pronchery{vex}	vpmadd52huq	384(%rcx),%ymm2,%ymm7
1367*4757b351SPierre Pronchery{vex}	vpmadd52huq	416(%rcx),%ymm2,%ymm8
1368*4757b351SPierre Pronchery{vex}	vpmadd52huq	448(%rcx),%ymm2,%ymm9
1369*4757b351SPierre Pronchery{vex}	vpmadd52huq	480(%rcx),%ymm2,%ymm10
1370*4757b351SPierre Pronchery
1371*4757b351SPierre Pronchery	leaq	264(%rsp),%rsp
1372*4757b351SPierre Pronchery	leaq	8(%r11),%r11
1373*4757b351SPierre Pronchery	decl	%ebx
1374*4757b351SPierre Pronchery	jne	.Lloop40
1375*4757b351SPierre Pronchery
1376*4757b351SPierre Pronchery	vmovq	%r9,%xmm0
1377*4757b351SPierre Pronchery	vpbroadcastq	%xmm0,%ymm0
1378*4757b351SPierre Pronchery	vpblendd	$3,%ymm0,%ymm3,%ymm3
1379*4757b351SPierre Pronchery
1380*4757b351SPierre Pronchery
1381*4757b351SPierre Pronchery
1382*4757b351SPierre Pronchery	vpsrlq	$52,%ymm3,%ymm0
1383*4757b351SPierre Pronchery	vpsrlq	$52,%ymm4,%ymm1
1384*4757b351SPierre Pronchery	vpsrlq	$52,%ymm5,%ymm2
1385*4757b351SPierre Pronchery	vpsrlq	$52,%ymm6,%ymm11
1386*4757b351SPierre Pronchery	vpsrlq	$52,%ymm7,%ymm12
1387*4757b351SPierre Pronchery	vpsrlq	$52,%ymm8,%ymm13
1388*4757b351SPierre Pronchery	vpsrlq	$52,%ymm9,%ymm14
1389*4757b351SPierre Pronchery	vpsrlq	$52,%ymm10,%ymm15
1390*4757b351SPierre Pronchery
1391*4757b351SPierre Pronchery	leaq	-32(%rsp),%rsp
1392*4757b351SPierre Pronchery	vmovupd	%ymm3,(%rsp)
1393*4757b351SPierre Pronchery
1394*4757b351SPierre Pronchery
1395*4757b351SPierre Pronchery	vpermq	$144,%ymm15,%ymm15
1396*4757b351SPierre Pronchery	vpermq	$3,%ymm14,%ymm3
1397*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm15,%ymm15
1398*4757b351SPierre Pronchery
1399*4757b351SPierre Pronchery	vpermq	$144,%ymm14,%ymm14
1400*4757b351SPierre Pronchery	vpermq	$3,%ymm13,%ymm3
1401*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm14,%ymm14
1402*4757b351SPierre Pronchery
1403*4757b351SPierre Pronchery	vpermq	$144,%ymm13,%ymm13
1404*4757b351SPierre Pronchery	vpermq	$3,%ymm12,%ymm3
1405*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm13,%ymm13
1406*4757b351SPierre Pronchery
1407*4757b351SPierre Pronchery	vpermq	$144,%ymm12,%ymm12
1408*4757b351SPierre Pronchery	vpermq	$3,%ymm11,%ymm3
1409*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm12,%ymm12
1410*4757b351SPierre Pronchery
1411*4757b351SPierre Pronchery	vpermq	$144,%ymm11,%ymm11
1412*4757b351SPierre Pronchery	vpermq	$3,%ymm2,%ymm3
1413*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm11,%ymm11
1414*4757b351SPierre Pronchery
1415*4757b351SPierre Pronchery	vpermq	$144,%ymm2,%ymm2
1416*4757b351SPierre Pronchery	vpermq	$3,%ymm1,%ymm3
1417*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm2,%ymm2
1418*4757b351SPierre Pronchery
1419*4757b351SPierre Pronchery	vpermq	$144,%ymm1,%ymm1
1420*4757b351SPierre Pronchery	vpermq	$3,%ymm0,%ymm3
1421*4757b351SPierre Pronchery	vblendpd	$1,%ymm3,%ymm1,%ymm1
1422*4757b351SPierre Pronchery
1423*4757b351SPierre Pronchery	vpermq	$144,%ymm0,%ymm0
1424*4757b351SPierre Pronchery	vpand	.Lhigh64x3(%rip),%ymm0,%ymm0
1425*4757b351SPierre Pronchery
1426*4757b351SPierre Pronchery	vmovupd	(%rsp),%ymm3
1427*4757b351SPierre Pronchery	leaq	32(%rsp),%rsp
1428*4757b351SPierre Pronchery
1429*4757b351SPierre Pronchery
1430*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
1431*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
1432*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
1433*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
1434*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
1435*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
1436*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
1437*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
1438*4757b351SPierre Pronchery
1439*4757b351SPierre Pronchery
1440*4757b351SPierre Pronchery	vpaddq	%ymm0,%ymm3,%ymm3
1441*4757b351SPierre Pronchery	vpaddq	%ymm1,%ymm4,%ymm4
1442*4757b351SPierre Pronchery	vpaddq	%ymm2,%ymm5,%ymm5
1443*4757b351SPierre Pronchery	vpaddq	%ymm11,%ymm6,%ymm6
1444*4757b351SPierre Pronchery	vpaddq	%ymm12,%ymm7,%ymm7
1445*4757b351SPierre Pronchery	vpaddq	%ymm13,%ymm8,%ymm8
1446*4757b351SPierre Pronchery	vpaddq	%ymm14,%ymm9,%ymm9
1447*4757b351SPierre Pronchery	vpaddq	%ymm15,%ymm10,%ymm10
1448*4757b351SPierre Pronchery
1449*4757b351SPierre Pronchery
1450*4757b351SPierre Pronchery
1451*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm3,%ymm0
1452*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm4,%ymm1
1453*4757b351SPierre Pronchery	vmovmskpd	%ymm0,%r14d
1454*4757b351SPierre Pronchery	vmovmskpd	%ymm1,%r13d
1455*4757b351SPierre Pronchery	shlb	$4,%r13b
1456*4757b351SPierre Pronchery	orb	%r13b,%r14b
1457*4757b351SPierre Pronchery
1458*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm5,%ymm2
1459*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm6,%ymm11
1460*4757b351SPierre Pronchery	vmovmskpd	%ymm2,%r13d
1461*4757b351SPierre Pronchery	vmovmskpd	%ymm11,%r12d
1462*4757b351SPierre Pronchery	shlb	$4,%r12b
1463*4757b351SPierre Pronchery	orb	%r12b,%r13b
1464*4757b351SPierre Pronchery
1465*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm7,%ymm12
1466*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm8,%ymm13
1467*4757b351SPierre Pronchery	vmovmskpd	%ymm12,%r12d
1468*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%r11d
1469*4757b351SPierre Pronchery	shlb	$4,%r11b
1470*4757b351SPierre Pronchery	orb	%r11b,%r12b
1471*4757b351SPierre Pronchery
1472*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm9,%ymm14
1473*4757b351SPierre Pronchery	vpcmpgtq	.Lmask52x4(%rip),%ymm10,%ymm15
1474*4757b351SPierre Pronchery	vmovmskpd	%ymm14,%r11d
1475*4757b351SPierre Pronchery	vmovmskpd	%ymm15,%r10d
1476*4757b351SPierre Pronchery	shlb	$4,%r10b
1477*4757b351SPierre Pronchery	orb	%r10b,%r11b
1478*4757b351SPierre Pronchery
1479*4757b351SPierre Pronchery	addb	%r14b,%r14b
1480*4757b351SPierre Pronchery	adcb	%r13b,%r13b
1481*4757b351SPierre Pronchery	adcb	%r12b,%r12b
1482*4757b351SPierre Pronchery	adcb	%r11b,%r11b
1483*4757b351SPierre Pronchery
1484*4757b351SPierre Pronchery
1485*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm3,%ymm0
1486*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm4,%ymm1
1487*4757b351SPierre Pronchery	vmovmskpd	%ymm0,%r9d
1488*4757b351SPierre Pronchery	vmovmskpd	%ymm1,%r8d
1489*4757b351SPierre Pronchery	shlb	$4,%r8b
1490*4757b351SPierre Pronchery	orb	%r8b,%r9b
1491*4757b351SPierre Pronchery
1492*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm5,%ymm2
1493*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm6,%ymm11
1494*4757b351SPierre Pronchery	vmovmskpd	%ymm2,%r8d
1495*4757b351SPierre Pronchery	vmovmskpd	%ymm11,%edx
1496*4757b351SPierre Pronchery	shlb	$4,%dl
1497*4757b351SPierre Pronchery	orb	%dl,%r8b
1498*4757b351SPierre Pronchery
1499*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm7,%ymm12
1500*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm8,%ymm13
1501*4757b351SPierre Pronchery	vmovmskpd	%ymm12,%edx
1502*4757b351SPierre Pronchery	vmovmskpd	%ymm13,%ecx
1503*4757b351SPierre Pronchery	shlb	$4,%cl
1504*4757b351SPierre Pronchery	orb	%cl,%dl
1505*4757b351SPierre Pronchery
1506*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm9,%ymm14
1507*4757b351SPierre Pronchery	vpcmpeqq	.Lmask52x4(%rip),%ymm10,%ymm15
1508*4757b351SPierre Pronchery	vmovmskpd	%ymm14,%ecx
1509*4757b351SPierre Pronchery	vmovmskpd	%ymm15,%ebx
1510*4757b351SPierre Pronchery	shlb	$4,%bl
1511*4757b351SPierre Pronchery	orb	%bl,%cl
1512*4757b351SPierre Pronchery
1513*4757b351SPierre Pronchery	addb	%r9b,%r14b
1514*4757b351SPierre Pronchery	adcb	%r8b,%r13b
1515*4757b351SPierre Pronchery	adcb	%dl,%r12b
1516*4757b351SPierre Pronchery	adcb	%cl,%r11b
1517*4757b351SPierre Pronchery
1518*4757b351SPierre Pronchery	xorb	%r9b,%r14b
1519*4757b351SPierre Pronchery	xorb	%r8b,%r13b
1520*4757b351SPierre Pronchery	xorb	%dl,%r12b
1521*4757b351SPierre Pronchery	xorb	%cl,%r11b
1522*4757b351SPierre Pronchery
1523*4757b351SPierre Pronchery	leaq	.Lkmasklut(%rip),%rdx
1524*4757b351SPierre Pronchery
1525*4757b351SPierre Pronchery	movb	%r14b,%r10b
1526*4757b351SPierre Pronchery	andq	$0xf,%r14
1527*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm3,%ymm0
1528*4757b351SPierre Pronchery	shlq	$5,%r14
1529*4757b351SPierre Pronchery	vmovapd	(%rdx,%r14,1),%ymm2
1530*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm3,%ymm3
1531*4757b351SPierre Pronchery
1532*4757b351SPierre Pronchery	shrb	$4,%r10b
1533*4757b351SPierre Pronchery	andq	$0xf,%r10
1534*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm4,%ymm0
1535*4757b351SPierre Pronchery	shlq	$5,%r10
1536*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
1537*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm4,%ymm4
1538*4757b351SPierre Pronchery
1539*4757b351SPierre Pronchery	movb	%r13b,%r10b
1540*4757b351SPierre Pronchery	andq	$0xf,%r13
1541*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm5,%ymm0
1542*4757b351SPierre Pronchery	shlq	$5,%r13
1543*4757b351SPierre Pronchery	vmovapd	(%rdx,%r13,1),%ymm2
1544*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm5,%ymm5
1545*4757b351SPierre Pronchery
1546*4757b351SPierre Pronchery	shrb	$4,%r10b
1547*4757b351SPierre Pronchery	andq	$0xf,%r10
1548*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm6,%ymm0
1549*4757b351SPierre Pronchery	shlq	$5,%r10
1550*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
1551*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm6,%ymm6
1552*4757b351SPierre Pronchery
1553*4757b351SPierre Pronchery	movb	%r12b,%r10b
1554*4757b351SPierre Pronchery	andq	$0xf,%r12
1555*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm7,%ymm0
1556*4757b351SPierre Pronchery	shlq	$5,%r12
1557*4757b351SPierre Pronchery	vmovapd	(%rdx,%r12,1),%ymm2
1558*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm7,%ymm7
1559*4757b351SPierre Pronchery
1560*4757b351SPierre Pronchery	shrb	$4,%r10b
1561*4757b351SPierre Pronchery	andq	$0xf,%r10
1562*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm8,%ymm0
1563*4757b351SPierre Pronchery	shlq	$5,%r10
1564*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
1565*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm8,%ymm8
1566*4757b351SPierre Pronchery
1567*4757b351SPierre Pronchery	movb	%r11b,%r10b
1568*4757b351SPierre Pronchery	andq	$0xf,%r11
1569*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm9,%ymm0
1570*4757b351SPierre Pronchery	shlq	$5,%r11
1571*4757b351SPierre Pronchery	vmovapd	(%rdx,%r11,1),%ymm2
1572*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm9,%ymm9
1573*4757b351SPierre Pronchery
1574*4757b351SPierre Pronchery	shrb	$4,%r10b
1575*4757b351SPierre Pronchery	andq	$0xf,%r10
1576*4757b351SPierre Pronchery	vpsubq	.Lmask52x4(%rip),%ymm10,%ymm0
1577*4757b351SPierre Pronchery	shlq	$5,%r10
1578*4757b351SPierre Pronchery	vmovapd	(%rdx,%r10,1),%ymm2
1579*4757b351SPierre Pronchery	vblendvpd	%ymm2,%ymm0,%ymm10,%ymm10
1580*4757b351SPierre Pronchery
1581*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm3,%ymm3
1582*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm4,%ymm4
1583*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm5,%ymm5
1584*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm6,%ymm6
1585*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm7,%ymm7
1586*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm8,%ymm8
1587*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm9,%ymm9
1588*4757b351SPierre Pronchery
1589*4757b351SPierre Pronchery	vpand	.Lmask52x4(%rip),%ymm10,%ymm10
1590*4757b351SPierre Pronchery
1591*4757b351SPierre Pronchery	vmovdqu	%ymm3,256(%rdi)
1592*4757b351SPierre Pronchery	vmovdqu	%ymm4,288(%rdi)
1593*4757b351SPierre Pronchery	vmovdqu	%ymm5,320(%rdi)
1594*4757b351SPierre Pronchery	vmovdqu	%ymm6,352(%rdi)
1595*4757b351SPierre Pronchery	vmovdqu	%ymm7,384(%rdi)
1596*4757b351SPierre Pronchery	vmovdqu	%ymm8,416(%rdi)
1597*4757b351SPierre Pronchery	vmovdqu	%ymm9,448(%rdi)
1598*4757b351SPierre Pronchery	vmovdqu	%ymm10,480(%rdi)
1599*4757b351SPierre Pronchery
1600*4757b351SPierre Pronchery	vzeroupper
1601*4757b351SPierre Pronchery	leaq	(%rsp),%rax
1602*4757b351SPierre Pronchery.cfi_def_cfa_register	%rax
1603*4757b351SPierre Pronchery	movq	0(%rax),%r15
1604*4757b351SPierre Pronchery.cfi_restore	%r15
1605*4757b351SPierre Pronchery	movq	8(%rax),%r14
1606*4757b351SPierre Pronchery.cfi_restore	%r14
1607*4757b351SPierre Pronchery	movq	16(%rax),%r13
1608*4757b351SPierre Pronchery.cfi_restore	%r13
1609*4757b351SPierre Pronchery	movq	24(%rax),%r12
1610*4757b351SPierre Pronchery.cfi_restore	%r12
1611*4757b351SPierre Pronchery	movq	32(%rax),%rbp
1612*4757b351SPierre Pronchery.cfi_restore	%rbp
1613*4757b351SPierre Pronchery	movq	40(%rax),%rbx
1614*4757b351SPierre Pronchery.cfi_restore	%rbx
1615*4757b351SPierre Pronchery	leaq	48(%rax),%rsp
1616*4757b351SPierre Pronchery.cfi_def_cfa	%rsp,8
1617*4757b351SPierre Pronchery.Lossl_rsaz_amm52x30_x2_avxifma256_epilogue:
1618*4757b351SPierre Pronchery	.byte	0xf3,0xc3
1619*4757b351SPierre Pronchery.cfi_endproc
1620*4757b351SPierre Pronchery.size	ossl_rsaz_amm52x30_x2_avxifma256, .-ossl_rsaz_amm52x30_x2_avxifma256
1621*4757b351SPierre Pronchery.text
1622*4757b351SPierre Pronchery
1623*4757b351SPierre Pronchery.align	32
1624*4757b351SPierre Pronchery.globl	ossl_extract_multiplier_2x30_win5_avx
1625*4757b351SPierre Pronchery.type	ossl_extract_multiplier_2x30_win5_avx,@function
1626*4757b351SPierre Proncheryossl_extract_multiplier_2x30_win5_avx:
1627*4757b351SPierre Pronchery.cfi_startproc
1628*4757b351SPierre Pronchery.byte	243,15,30,250
1629*4757b351SPierre Pronchery	vmovapd	.Lones(%rip),%ymm12
1630*4757b351SPierre Pronchery	vmovq	%rdx,%xmm8
1631*4757b351SPierre Pronchery	vpbroadcastq	%xmm8,%ymm10
1632*4757b351SPierre Pronchery	vmovq	%rcx,%xmm8
1633*4757b351SPierre Pronchery	vpbroadcastq	%xmm8,%ymm11
1634*4757b351SPierre Pronchery	leaq	16384(%rsi),%rax
1635*4757b351SPierre Pronchery
1636*4757b351SPierre Pronchery
1637*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm0,%xmm0
1638*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
1639*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm1
1640*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm2
1641*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
1642*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
1643*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
1644*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
1645*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
1646*4757b351SPierre Pronchery
1647*4757b351SPierre Pronchery.align	32
1648*4757b351SPierre Pronchery.Lloop:
1649*4757b351SPierre Pronchery	vpcmpeqq	%ymm9,%ymm10,%ymm13
1650*4757b351SPierre Pronchery	vmovdqu	0(%rsi),%ymm8
1651*4757b351SPierre Pronchery
1652*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm0,%ymm0
1653*4757b351SPierre Pronchery	vmovdqu	32(%rsi),%ymm8
1654*4757b351SPierre Pronchery
1655*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm1,%ymm1
1656*4757b351SPierre Pronchery	vmovdqu	64(%rsi),%ymm8
1657*4757b351SPierre Pronchery
1658*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm2,%ymm2
1659*4757b351SPierre Pronchery	vmovdqu	96(%rsi),%ymm8
1660*4757b351SPierre Pronchery
1661*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm3,%ymm3
1662*4757b351SPierre Pronchery	vmovdqu	128(%rsi),%ymm8
1663*4757b351SPierre Pronchery
1664*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm4,%ymm4
1665*4757b351SPierre Pronchery	vmovdqu	160(%rsi),%ymm8
1666*4757b351SPierre Pronchery
1667*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm5,%ymm5
1668*4757b351SPierre Pronchery	vmovdqu	192(%rsi),%ymm8
1669*4757b351SPierre Pronchery
1670*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm6,%ymm6
1671*4757b351SPierre Pronchery	vmovdqu	224(%rsi),%ymm8
1672*4757b351SPierre Pronchery
1673*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm7,%ymm7
1674*4757b351SPierre Pronchery	vpaddq	%ymm12,%ymm9,%ymm9
1675*4757b351SPierre Pronchery	addq	$512,%rsi
1676*4757b351SPierre Pronchery	cmpq	%rsi,%rax
1677*4757b351SPierre Pronchery	jne	.Lloop
1678*4757b351SPierre Pronchery	vmovdqu	%ymm0,0(%rdi)
1679*4757b351SPierre Pronchery	vmovdqu	%ymm1,32(%rdi)
1680*4757b351SPierre Pronchery	vmovdqu	%ymm2,64(%rdi)
1681*4757b351SPierre Pronchery	vmovdqu	%ymm3,96(%rdi)
1682*4757b351SPierre Pronchery	vmovdqu	%ymm4,128(%rdi)
1683*4757b351SPierre Pronchery	vmovdqu	%ymm5,160(%rdi)
1684*4757b351SPierre Pronchery	vmovdqu	%ymm6,192(%rdi)
1685*4757b351SPierre Pronchery	vmovdqu	%ymm7,224(%rdi)
1686*4757b351SPierre Pronchery	leaq	-16384(%rax),%rsi
1687*4757b351SPierre Pronchery
1688*4757b351SPierre Pronchery
1689*4757b351SPierre Pronchery	vpxor	%xmm0,%xmm0,%xmm0
1690*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm9
1691*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm0
1692*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm1
1693*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm2
1694*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm3
1695*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm4
1696*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm5
1697*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm6
1698*4757b351SPierre Pronchery	vmovapd	%ymm0,%ymm7
1699*4757b351SPierre Pronchery
1700*4757b351SPierre Pronchery.align	32
1701*4757b351SPierre Pronchery.Lloop_8_15:
1702*4757b351SPierre Pronchery	vpcmpeqq	%ymm9,%ymm11,%ymm13
1703*4757b351SPierre Pronchery	vmovdqu	256(%rsi),%ymm8
1704*4757b351SPierre Pronchery
1705*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm0,%ymm0
1706*4757b351SPierre Pronchery	vmovdqu	288(%rsi),%ymm8
1707*4757b351SPierre Pronchery
1708*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm1,%ymm1
1709*4757b351SPierre Pronchery	vmovdqu	320(%rsi),%ymm8
1710*4757b351SPierre Pronchery
1711*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm2,%ymm2
1712*4757b351SPierre Pronchery	vmovdqu	352(%rsi),%ymm8
1713*4757b351SPierre Pronchery
1714*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm3,%ymm3
1715*4757b351SPierre Pronchery	vmovdqu	384(%rsi),%ymm8
1716*4757b351SPierre Pronchery
1717*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm4,%ymm4
1718*4757b351SPierre Pronchery	vmovdqu	416(%rsi),%ymm8
1719*4757b351SPierre Pronchery
1720*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm5,%ymm5
1721*4757b351SPierre Pronchery	vmovdqu	448(%rsi),%ymm8
1722*4757b351SPierre Pronchery
1723*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm6,%ymm6
1724*4757b351SPierre Pronchery	vmovdqu	480(%rsi),%ymm8
1725*4757b351SPierre Pronchery
1726*4757b351SPierre Pronchery	vblendvpd	%ymm13,%ymm8,%ymm7,%ymm7
1727*4757b351SPierre Pronchery	vpaddq	%ymm12,%ymm9,%ymm9
1728*4757b351SPierre Pronchery	addq	$512,%rsi
1729*4757b351SPierre Pronchery	cmpq	%rsi,%rax
1730*4757b351SPierre Pronchery	jne	.Lloop_8_15
1731*4757b351SPierre Pronchery	vmovdqu	%ymm0,256(%rdi)
1732*4757b351SPierre Pronchery	vmovdqu	%ymm1,288(%rdi)
1733*4757b351SPierre Pronchery	vmovdqu	%ymm2,320(%rdi)
1734*4757b351SPierre Pronchery	vmovdqu	%ymm3,352(%rdi)
1735*4757b351SPierre Pronchery	vmovdqu	%ymm4,384(%rdi)
1736*4757b351SPierre Pronchery	vmovdqu	%ymm5,416(%rdi)
1737*4757b351SPierre Pronchery	vmovdqu	%ymm6,448(%rdi)
1738*4757b351SPierre Pronchery	vmovdqu	%ymm7,480(%rdi)
1739*4757b351SPierre Pronchery
1740*4757b351SPierre Pronchery	.byte	0xf3,0xc3
1741*4757b351SPierre Pronchery.cfi_endproc
1742*4757b351SPierre Pronchery.size	ossl_extract_multiplier_2x30_win5_avx, .-ossl_extract_multiplier_2x30_win5_avx
1743*4757b351SPierre Pronchery.section	.rodata
1744*4757b351SPierre Pronchery.align	32
1745*4757b351SPierre Pronchery.Lones:
1746*4757b351SPierre Pronchery.quad	1,1,1,1
1747*4757b351SPierre Pronchery.Lzeros:
1748*4757b351SPierre Pronchery.quad	0,0,0,0
1749*4757b351SPierre Pronchery	.section ".note.gnu.property", "a"
1750*4757b351SPierre Pronchery	.p2align 3
1751*4757b351SPierre Pronchery	.long 1f - 0f
1752*4757b351SPierre Pronchery	.long 4f - 1f
1753*4757b351SPierre Pronchery	.long 5
1754*4757b351SPierre Pronchery0:
1755*4757b351SPierre Pronchery	# "GNU" encoded with .byte, since .asciz isn't supported
1756*4757b351SPierre Pronchery	# on Solaris.
1757*4757b351SPierre Pronchery	.byte 0x47
1758*4757b351SPierre Pronchery	.byte 0x4e
1759*4757b351SPierre Pronchery	.byte 0x55
1760*4757b351SPierre Pronchery	.byte 0
1761*4757b351SPierre Pronchery1:
1762*4757b351SPierre Pronchery	.p2align 3
1763*4757b351SPierre Pronchery	.long 0xc0000002
1764*4757b351SPierre Pronchery	.long 3f - 2f
1765*4757b351SPierre Pronchery2:
1766*4757b351SPierre Pronchery	.long 3
1767*4757b351SPierre Pronchery3:
1768*4757b351SPierre Pronchery	.p2align 3
1769*4757b351SPierre Pronchery4:
1770