3 .globl rsaz_1024_sqr_avx2
4 .type rsaz_1024_sqr_avx2,@function
26 vpxor %ymm9,%ymm9,%ymm9
27 jz .Lsqr_1024_no_n_copy
34 vmovdqu 0-128(%r13),%ymm0
36 vmovdqu 32-128(%r13),%ymm1
37 vmovdqu 64-128(%r13),%ymm2
38 vmovdqu 96-128(%r13),%ymm3
39 vmovdqu 128-128(%r13),%ymm4
40 vmovdqu 160-128(%r13),%ymm5
41 vmovdqu 192-128(%r13),%ymm6
42 vmovdqu 224-128(%r13),%ymm7
43 vmovdqu 256-128(%r13),%ymm8
44 leaq 832+128(%rsp),%r13
45 vmovdqu %ymm0,0-128(%r13)
46 vmovdqu %ymm1,32-128(%r13)
47 vmovdqu %ymm2,64-128(%r13)
48 vmovdqu %ymm3,96-128(%r13)
49 vmovdqu %ymm4,128-128(%r13)
50 vmovdqu %ymm5,160-128(%r13)
51 vmovdqu %ymm6,192-128(%r13)
52 vmovdqu %ymm7,224-128(%r13)
53 vmovdqu %ymm8,256-128(%r13)
54 vmovdqu %ymm9,288-128(%r13)
59 vmovdqu 32-128(%rsi),%ymm1
60 vmovdqu 64-128(%rsi),%ymm2
61 vmovdqu 96-128(%rsi),%ymm3
62 vmovdqu 128-128(%rsi),%ymm4
63 vmovdqu 160-128(%rsi),%ymm5
64 vmovdqu 192-128(%rsi),%ymm6
65 vmovdqu 224-128(%rsi),%ymm7
66 vmovdqu 256-128(%rsi),%ymm8
69 vpbroadcastq .Land_mask(%rip),%ymm15
70 jmp .LOOP_GRANDE_SQR_1024
73 .LOOP_GRANDE_SQR_1024:
74 leaq 576+128(%rsp),%r9
80 vpaddq %ymm1,%ymm1,%ymm1
81 vpbroadcastq 0-128(%rsi),%ymm10
82 vpaddq %ymm2,%ymm2,%ymm2
83 vmovdqa %ymm1,0-128(%r9)
84 vpaddq %ymm3,%ymm3,%ymm3
85 vmovdqa %ymm2,32-128(%r9)
86 vpaddq %ymm4,%ymm4,%ymm4
87 vmovdqa %ymm3,64-128(%r9)
88 vpaddq %ymm5,%ymm5,%ymm5
89 vmovdqa %ymm4,96-128(%r9)
90 vpaddq %ymm6,%ymm6,%ymm6
91 vmovdqa %ymm5,128-128(%r9)
92 vpaddq %ymm7,%ymm7,%ymm7
93 vmovdqa %ymm6,160-128(%r9)
94 vpaddq %ymm8,%ymm8,%ymm8
95 vmovdqa %ymm7,192-128(%r9)
96 vpxor %ymm9,%ymm9,%ymm9
97 vmovdqa %ymm8,224-128(%r9)
99 vpmuludq 0-128(%rsi),%ymm10,%ymm0
100 vpbroadcastq 32-128(%rsi),%ymm11
101 vmovdqu %ymm9,288-192(%rbx)
102 vpmuludq %ymm10,%ymm1,%ymm1
103 vmovdqu %ymm9,320-448(%r12)
104 vpmuludq %ymm10,%ymm2,%ymm2
105 vmovdqu %ymm9,352-448(%r12)
106 vpmuludq %ymm10,%ymm3,%ymm3
107 vmovdqu %ymm9,384-448(%r12)
108 vpmuludq %ymm10,%ymm4,%ymm4
109 vmovdqu %ymm9,416-448(%r12)
110 vpmuludq %ymm10,%ymm5,%ymm5
111 vmovdqu %ymm9,448-448(%r12)
112 vpmuludq %ymm10,%ymm6,%ymm6
113 vmovdqu %ymm9,480-448(%r12)
114 vpmuludq %ymm10,%ymm7,%ymm7
115 vmovdqu %ymm9,512-448(%r12)
116 vpmuludq %ymm10,%ymm8,%ymm8
117 vpbroadcastq 64-128(%rsi),%ymm10
118 vmovdqu %ymm9,544-448(%r12)
125 vpbroadcastq 32-128(%r15),%ymm11
126 vpmuludq 0-128(%rsi),%ymm10,%ymm0
127 vpaddq 0-192(%rbx),%ymm0,%ymm0
128 vpmuludq 0-128(%r9),%ymm10,%ymm1
129 vpaddq 32-192(%rbx),%ymm1,%ymm1
130 vpmuludq 32-128(%r9),%ymm10,%ymm2
131 vpaddq 64-192(%rbx),%ymm2,%ymm2
132 vpmuludq 64-128(%r9),%ymm10,%ymm3
133 vpaddq 96-192(%rbx),%ymm3,%ymm3
134 vpmuludq 96-128(%r9),%ymm10,%ymm4
135 vpaddq 128-192(%rbx),%ymm4,%ymm4
136 vpmuludq 128-128(%r9),%ymm10,%ymm5
137 vpaddq 160-192(%rbx),%ymm5,%ymm5
138 vpmuludq 160-128(%r9),%ymm10,%ymm6
139 vpaddq 192-192(%rbx),%ymm6,%ymm6
140 vpmuludq 192-128(%r9),%ymm10,%ymm7
141 vpaddq 224-192(%rbx),%ymm7,%ymm7
142 vpmuludq 224-128(%r9),%ymm10,%ymm8
143 vpbroadcastq 64-128(%r15),%ymm10
144 vpaddq 256-192(%rbx),%ymm8,%ymm8
146 vmovdqu %ymm0,0-192(%rbx)
147 vmovdqu %ymm1,32-192(%rbx)
149 vpmuludq 32-128(%rsi),%ymm11,%ymm12
150 vpaddq %ymm12,%ymm2,%ymm2
151 vpmuludq 32-128(%r9),%ymm11,%ymm14
152 vpaddq %ymm14,%ymm3,%ymm3
153 vpmuludq 64-128(%r9),%ymm11,%ymm13
154 vpaddq %ymm13,%ymm4,%ymm4
155 vpmuludq 96-128(%r9),%ymm11,%ymm12
156 vpaddq %ymm12,%ymm5,%ymm5
157 vpmuludq 128-128(%r9),%ymm11,%ymm14
158 vpaddq %ymm14,%ymm6,%ymm6
159 vpmuludq 160-128(%r9),%ymm11,%ymm13
160 vpaddq %ymm13,%ymm7,%ymm7
161 vpmuludq 192-128(%r9),%ymm11,%ymm12
162 vpaddq %ymm12,%ymm8,%ymm8
163 vpmuludq 224-128(%r9),%ymm11,%ymm0
164 vpbroadcastq 96-128(%r15),%ymm11
165 vpaddq 288-192(%rbx),%ymm0,%ymm0
167 vmovdqu %ymm2,64-192(%rbx)
168 vmovdqu %ymm3,96-192(%rbx)
170 vpmuludq 64-128(%rsi),%ymm10,%ymm13
171 vpaddq %ymm13,%ymm4,%ymm4
172 vpmuludq 64-128(%r9),%ymm10,%ymm12
173 vpaddq %ymm12,%ymm5,%ymm5
174 vpmuludq 96-128(%r9),%ymm10,%ymm14
175 vpaddq %ymm14,%ymm6,%ymm6
176 vpmuludq 128-128(%r9),%ymm10,%ymm13
177 vpaddq %ymm13,%ymm7,%ymm7
178 vpmuludq 160-128(%r9),%ymm10,%ymm12
179 vpaddq %ymm12,%ymm8,%ymm8
180 vpmuludq 192-128(%r9),%ymm10,%ymm14
181 vpaddq %ymm14,%ymm0,%ymm0
182 vpmuludq 224-128(%r9),%ymm10,%ymm1
183 vpbroadcastq 128-128(%r15),%ymm10
184 vpaddq 320-448(%r12),%ymm1,%ymm1
186 vmovdqu %ymm4,128-192(%rbx)
187 vmovdqu %ymm5,160-192(%rbx)
189 vpmuludq 96-128(%rsi),%ymm11,%ymm12
190 vpaddq %ymm12,%ymm6,%ymm6
191 vpmuludq 96-128(%r9),%ymm11,%ymm14
192 vpaddq %ymm14,%ymm7,%ymm7
193 vpmuludq 128-128(%r9),%ymm11,%ymm13
194 vpaddq %ymm13,%ymm8,%ymm8
195 vpmuludq 160-128(%r9),%ymm11,%ymm12
196 vpaddq %ymm12,%ymm0,%ymm0
197 vpmuludq 192-128(%r9),%ymm11,%ymm14
198 vpaddq %ymm14,%ymm1,%ymm1
199 vpmuludq 224-128(%r9),%ymm11,%ymm2
200 vpbroadcastq 160-128(%r15),%ymm11
201 vpaddq 352-448(%r12),%ymm2,%ymm2
203 vmovdqu %ymm6,192-192(%rbx)
204 vmovdqu %ymm7,224-192(%rbx)
206 vpmuludq 128-128(%rsi),%ymm10,%ymm12
207 vpaddq %ymm12,%ymm8,%ymm8
208 vpmuludq 128-128(%r9),%ymm10,%ymm14
209 vpaddq %ymm14,%ymm0,%ymm0
210 vpmuludq 160-128(%r9),%ymm10,%ymm13
211 vpaddq %ymm13,%ymm1,%ymm1
212 vpmuludq 192-128(%r9),%ymm10,%ymm12
213 vpaddq %ymm12,%ymm2,%ymm2
214 vpmuludq 224-128(%r9),%ymm10,%ymm3
215 vpbroadcastq 192-128(%r15),%ymm10
216 vpaddq 384-448(%r12),%ymm3,%ymm3
218 vmovdqu %ymm8,256-192(%rbx)
219 vmovdqu %ymm0,288-192(%rbx)
222 vpmuludq 160-128(%rsi),%ymm11,%ymm13
223 vpaddq %ymm13,%ymm1,%ymm1
224 vpmuludq 160-128(%r9),%ymm11,%ymm12
225 vpaddq %ymm12,%ymm2,%ymm2
226 vpmuludq 192-128(%r9),%ymm11,%ymm14
227 vpaddq %ymm14,%ymm3,%ymm3
228 vpmuludq 224-128(%r9),%ymm11,%ymm4
229 vpbroadcastq 224-128(%r15),%ymm11
230 vpaddq 416-448(%r12),%ymm4,%ymm4
232 vmovdqu %ymm1,320-448(%r12)
233 vmovdqu %ymm2,352-448(%r12)
235 vpmuludq 192-128(%rsi),%ymm10,%ymm12
236 vpaddq %ymm12,%ymm3,%ymm3
237 vpmuludq 192-128(%r9),%ymm10,%ymm14
238 vpbroadcastq 256-128(%r15),%ymm0
239 vpaddq %ymm14,%ymm4,%ymm4
240 vpmuludq 224-128(%r9),%ymm10,%ymm5
241 vpbroadcastq 0+8-128(%r15),%ymm10
242 vpaddq 448-448(%r12),%ymm5,%ymm5
244 vmovdqu %ymm3,384-448(%r12)
245 vmovdqu %ymm4,416-448(%r12)
248 vpmuludq 224-128(%rsi),%ymm11,%ymm12
249 vpaddq %ymm12,%ymm5,%ymm5
250 vpmuludq 224-128(%r9),%ymm11,%ymm6
251 vpaddq 480-448(%r12),%ymm6,%ymm6
253 vpmuludq 256-128(%rsi),%ymm0,%ymm7
254 vmovdqu %ymm5,448-448(%r12)
255 vpaddq 512-448(%r12),%ymm7,%ymm7
256 vmovdqu %ymm6,480-448(%r12)
257 vmovdqu %ymm7,512-448(%r12)
263 vmovdqu 256(%rsp),%ymm8
264 vmovdqu 288(%rsp),%ymm1
265 vmovdqu 320(%rsp),%ymm2
268 vpsrlq $29,%ymm8,%ymm14
269 vpand %ymm15,%ymm8,%ymm8
270 vpsrlq $29,%ymm1,%ymm11
271 vpand %ymm15,%ymm1,%ymm1
273 vpermq $0x93,%ymm14,%ymm14
274 vpxor %ymm9,%ymm9,%ymm9
275 vpermq $0x93,%ymm11,%ymm11
277 vpblendd $3,%ymm9,%ymm14,%ymm10
278 vpblendd $3,%ymm14,%ymm11,%ymm14
279 vpaddq %ymm10,%ymm8,%ymm8
280 vpblendd $3,%ymm11,%ymm9,%ymm11
281 vpaddq %ymm14,%ymm1,%ymm1
282 vpaddq %ymm11,%ymm2,%ymm2
283 vmovdqu %ymm1,288-192(%rbx)
284 vmovdqu %ymm2,320-192(%rbx)
290 vmovdqu 32(%rsp),%ymm1
291 vmovdqu 64-192(%rbx),%ymm2
292 vmovdqu 96-192(%rbx),%ymm3
293 vmovdqu 128-192(%rbx),%ymm4
294 vmovdqu 160-192(%rbx),%ymm5
295 vmovdqu 192-192(%rbx),%ymm6
296 vmovdqu 224-192(%rbx),%ymm7
300 andl $0x1fffffff,%eax
304 imulq -128(%r13),%rax
305 vpbroadcastq %xmm12,%ymm12
308 imulq 8-128(%r13),%rax
312 imulq 16-128(%r13),%rax
315 imulq 24-128(%r13),%rdx
320 andl $0x1fffffff,%eax
323 jmp .LOOP_REDUCE_1024
328 vpbroadcastq %xmm13,%ymm13
330 vpmuludq 32-128(%r13),%ymm12,%ymm10
332 imulq -128(%r13),%rax
333 vpaddq %ymm10,%ymm1,%ymm1
335 vpmuludq 64-128(%r13),%ymm12,%ymm14
337 imulq 8-128(%r13),%rax
338 vpaddq %ymm14,%ymm2,%ymm2
339 vpmuludq 96-128(%r13),%ymm12,%ymm11
344 imulq 16-128(%r13),%rax
346 vpaddq %ymm11,%ymm3,%ymm3
347 vpmuludq 128-128(%r13),%ymm12,%ymm10
350 vpaddq %ymm10,%ymm4,%ymm4
351 vpmuludq 160-128(%r13),%ymm12,%ymm14
354 vpaddq %ymm14,%ymm5,%ymm5
355 vpmuludq 192-128(%r13),%ymm12,%ymm11
356 andl $0x1fffffff,%eax
357 vpaddq %ymm11,%ymm6,%ymm6
358 vpmuludq 224-128(%r13),%ymm12,%ymm10
359 vpaddq %ymm10,%ymm7,%ymm7
360 vpmuludq 256-128(%r13),%ymm12,%ymm14
363 vpaddq %ymm14,%ymm8,%ymm8
365 vpbroadcastq %xmm12,%ymm12
367 vpmuludq 32-8-128(%r13),%ymm13,%ymm11
368 vmovdqu 96-8-128(%r13),%ymm14
370 imulq -128(%r13),%rax
371 vpaddq %ymm11,%ymm1,%ymm1
372 vpmuludq 64-8-128(%r13),%ymm13,%ymm10
373 vmovdqu 128-8-128(%r13),%ymm11
376 imulq 8-128(%r13),%rax
377 vpaddq %ymm10,%ymm2,%ymm2
380 vpmuludq %ymm13,%ymm14,%ymm14
381 vmovdqu 160-8-128(%r13),%ymm10
383 vpaddq %ymm14,%ymm3,%ymm3
384 vpmuludq %ymm13,%ymm11,%ymm11
385 vmovdqu 192-8-128(%r13),%ymm14
389 vpaddq %ymm11,%ymm4,%ymm4
390 vpmuludq %ymm13,%ymm10,%ymm10
391 .byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00
392 andl $0x1fffffff,%eax
393 vpaddq %ymm10,%ymm5,%ymm5
394 vpmuludq %ymm13,%ymm14,%ymm14
395 vmovdqu 256-8-128(%r13),%ymm10
396 vpaddq %ymm14,%ymm6,%ymm6
397 vpmuludq %ymm13,%ymm11,%ymm11
398 vmovdqu 288-8-128(%r13),%ymm9
400 imulq -128(%r13),%rax
401 vpaddq %ymm11,%ymm7,%ymm7
402 vpmuludq %ymm13,%ymm10,%ymm10
403 vmovdqu 32-16-128(%r13),%ymm14
404 vpbroadcastq %xmm0,%ymm0
405 vpaddq %ymm10,%ymm8,%ymm8
406 vpmuludq %ymm13,%ymm9,%ymm9
407 vmovdqu 64-16-128(%r13),%ymm11
410 vmovdqu 32-24-128(%r13),%ymm13
411 vpmuludq %ymm12,%ymm14,%ymm14
412 vmovdqu 96-16-128(%r13),%ymm10
413 vpaddq %ymm14,%ymm1,%ymm1
414 vpmuludq %ymm0,%ymm13,%ymm13
415 vpmuludq %ymm12,%ymm11,%ymm11
416 .byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff
417 vpaddq %ymm1,%ymm13,%ymm13
418 vpaddq %ymm11,%ymm2,%ymm2
419 vpmuludq %ymm12,%ymm10,%ymm10
420 vmovdqu 160-16-128(%r13),%ymm11
423 vmovdqu %ymm13,(%rsp)
424 vpaddq %ymm10,%ymm3,%ymm3
425 vpmuludq %ymm12,%ymm14,%ymm14
426 vmovdqu 192-16-128(%r13),%ymm10
427 vpaddq %ymm14,%ymm4,%ymm4
428 vpmuludq %ymm12,%ymm11,%ymm11
429 vmovdqu 224-16-128(%r13),%ymm14
430 vpaddq %ymm11,%ymm5,%ymm5
431 vpmuludq %ymm12,%ymm10,%ymm10
432 vmovdqu 256-16-128(%r13),%ymm11
433 vpaddq %ymm10,%ymm6,%ymm6
434 vpmuludq %ymm12,%ymm14,%ymm14
436 vmovdqu 288-16-128(%r13),%ymm10
438 vpaddq %ymm14,%ymm7,%ymm7
439 vpmuludq %ymm12,%ymm11,%ymm11
443 vpaddq %ymm11,%ymm8,%ymm8
444 vpmuludq %ymm12,%ymm10,%ymm10
445 andl $0x1fffffff,%eax
447 vmovdqu 96-24-128(%r13),%ymm11
449 vpaddq %ymm10,%ymm9,%ymm9
450 vpbroadcastq %xmm12,%ymm12
452 vpmuludq 64-24-128(%r13),%ymm0,%ymm14
453 vmovdqu 128-24-128(%r13),%ymm10
455 imulq -128(%r13),%rax
457 vpaddq %ymm14,%ymm2,%ymm1
458 vpmuludq %ymm0,%ymm11,%ymm11
459 vmovdqu 160-24-128(%r13),%ymm14
462 imulq 8-128(%r13),%rax
466 vpaddq %ymm11,%ymm3,%ymm2
467 vpmuludq %ymm0,%ymm10,%ymm10
468 vmovdqu 192-24-128(%r13),%ymm11
471 imulq 16-128(%r13),%rax
472 vpaddq %ymm10,%ymm4,%ymm3
473 vpmuludq %ymm0,%ymm14,%ymm14
474 vmovdqu 224-24-128(%r13),%ymm10
475 imulq 24-128(%r13),%rdx
477 leaq (%r9,%r10,1),%rax
478 vpaddq %ymm14,%ymm5,%ymm4
479 vpmuludq %ymm0,%ymm11,%ymm11
480 vmovdqu 256-24-128(%r13),%ymm14
483 vpmuludq %ymm0,%ymm10,%ymm10
484 vpaddq %ymm11,%ymm6,%ymm5
485 vmovdqu 288-24-128(%r13),%ymm11
486 andl $0x1fffffff,%eax
487 vpaddq %ymm10,%ymm7,%ymm6
488 vpmuludq %ymm0,%ymm14,%ymm14
490 vpaddq %ymm14,%ymm8,%ymm7
491 vpmuludq %ymm0,%ymm11,%ymm11
492 vpaddq %ymm11,%ymm9,%ymm8
497 jnz .LOOP_REDUCE_1024
499 vpaddq %ymm9,%ymm13,%ymm0
500 vpxor %ymm9,%ymm9,%ymm9
502 vpaddq 288-192(%rbx),%ymm0,%ymm0
503 vpaddq 320-448(%r12),%ymm1,%ymm1
504 vpaddq 352-448(%r12),%ymm2,%ymm2
505 vpaddq 384-448(%r12),%ymm3,%ymm3
506 vpaddq 416-448(%r12),%ymm4,%ymm4
507 vpaddq 448-448(%r12),%ymm5,%ymm5
508 vpaddq 480-448(%r12),%ymm6,%ymm6
509 vpaddq 512-448(%r12),%ymm7,%ymm7
510 vpaddq 544-448(%r12),%ymm8,%ymm8
512 vpsrlq $29,%ymm0,%ymm14
513 vpand %ymm15,%ymm0,%ymm0
514 vpsrlq $29,%ymm1,%ymm11
515 vpand %ymm15,%ymm1,%ymm1
516 vpsrlq $29,%ymm2,%ymm12
517 vpermq $0x93,%ymm14,%ymm14
518 vpand %ymm15,%ymm2,%ymm2
519 vpsrlq $29,%ymm3,%ymm13
520 vpermq $0x93,%ymm11,%ymm11
521 vpand %ymm15,%ymm3,%ymm3
522 vpermq $0x93,%ymm12,%ymm12
524 vpblendd $3,%ymm9,%ymm14,%ymm10
525 vpermq $0x93,%ymm13,%ymm13
526 vpblendd $3,%ymm14,%ymm11,%ymm14
527 vpaddq %ymm10,%ymm0,%ymm0
528 vpblendd $3,%ymm11,%ymm12,%ymm11
529 vpaddq %ymm14,%ymm1,%ymm1
530 vpblendd $3,%ymm12,%ymm13,%ymm12
531 vpaddq %ymm11,%ymm2,%ymm2
532 vpblendd $3,%ymm13,%ymm9,%ymm13
533 vpaddq %ymm12,%ymm3,%ymm3
534 vpaddq %ymm13,%ymm4,%ymm4
536 vpsrlq $29,%ymm0,%ymm14
537 vpand %ymm15,%ymm0,%ymm0
538 vpsrlq $29,%ymm1,%ymm11
539 vpand %ymm15,%ymm1,%ymm1
540 vpsrlq $29,%ymm2,%ymm12
541 vpermq $0x93,%ymm14,%ymm14
542 vpand %ymm15,%ymm2,%ymm2
543 vpsrlq $29,%ymm3,%ymm13
544 vpermq $0x93,%ymm11,%ymm11
545 vpand %ymm15,%ymm3,%ymm3
546 vpermq $0x93,%ymm12,%ymm12
548 vpblendd $3,%ymm9,%ymm14,%ymm10
549 vpermq $0x93,%ymm13,%ymm13
550 vpblendd $3,%ymm14,%ymm11,%ymm14
551 vpaddq %ymm10,%ymm0,%ymm0
552 vpblendd $3,%ymm11,%ymm12,%ymm11
553 vpaddq %ymm14,%ymm1,%ymm1
554 vmovdqu %ymm0,0-128(%rdi)
555 vpblendd $3,%ymm12,%ymm13,%ymm12
556 vpaddq %ymm11,%ymm2,%ymm2
557 vmovdqu %ymm1,32-128(%rdi)
558 vpblendd $3,%ymm13,%ymm9,%ymm13
559 vpaddq %ymm12,%ymm3,%ymm3
560 vmovdqu %ymm2,64-128(%rdi)
561 vpaddq %ymm13,%ymm4,%ymm4
562 vmovdqu %ymm3,96-128(%rdi)
563 vpsrlq $29,%ymm4,%ymm14
564 vpand %ymm15,%ymm4,%ymm4
565 vpsrlq $29,%ymm5,%ymm11
566 vpand %ymm15,%ymm5,%ymm5
567 vpsrlq $29,%ymm6,%ymm12
568 vpermq $0x93,%ymm14,%ymm14
569 vpand %ymm15,%ymm6,%ymm6
570 vpsrlq $29,%ymm7,%ymm13
571 vpermq $0x93,%ymm11,%ymm11
572 vpand %ymm15,%ymm7,%ymm7
573 vpsrlq $29,%ymm8,%ymm0
574 vpermq $0x93,%ymm12,%ymm12
575 vpand %ymm15,%ymm8,%ymm8
576 vpermq $0x93,%ymm13,%ymm13
578 vpblendd $3,%ymm9,%ymm14,%ymm10
579 vpermq $0x93,%ymm0,%ymm0
580 vpblendd $3,%ymm14,%ymm11,%ymm14
581 vpaddq %ymm10,%ymm4,%ymm4
582 vpblendd $3,%ymm11,%ymm12,%ymm11
583 vpaddq %ymm14,%ymm5,%ymm5
584 vpblendd $3,%ymm12,%ymm13,%ymm12
585 vpaddq %ymm11,%ymm6,%ymm6
586 vpblendd $3,%ymm13,%ymm0,%ymm13
587 vpaddq %ymm12,%ymm7,%ymm7
588 vpaddq %ymm13,%ymm8,%ymm8
590 vpsrlq $29,%ymm4,%ymm14
591 vpand %ymm15,%ymm4,%ymm4
592 vpsrlq $29,%ymm5,%ymm11
593 vpand %ymm15,%ymm5,%ymm5
594 vpsrlq $29,%ymm6,%ymm12
595 vpermq $0x93,%ymm14,%ymm14
596 vpand %ymm15,%ymm6,%ymm6
597 vpsrlq $29,%ymm7,%ymm13
598 vpermq $0x93,%ymm11,%ymm11
599 vpand %ymm15,%ymm7,%ymm7
600 vpsrlq $29,%ymm8,%ymm0
601 vpermq $0x93,%ymm12,%ymm12
602 vpand %ymm15,%ymm8,%ymm8
603 vpermq $0x93,%ymm13,%ymm13
605 vpblendd $3,%ymm9,%ymm14,%ymm10
606 vpermq $0x93,%ymm0,%ymm0
607 vpblendd $3,%ymm14,%ymm11,%ymm14
608 vpaddq %ymm10,%ymm4,%ymm4
609 vpblendd $3,%ymm11,%ymm12,%ymm11
610 vpaddq %ymm14,%ymm5,%ymm5
611 vmovdqu %ymm4,128-128(%rdi)
612 vpblendd $3,%ymm12,%ymm13,%ymm12
613 vpaddq %ymm11,%ymm6,%ymm6
614 vmovdqu %ymm5,160-128(%rdi)
615 vpblendd $3,%ymm13,%ymm0,%ymm13
616 vpaddq %ymm12,%ymm7,%ymm7
617 vmovdqu %ymm6,192-128(%rdi)
618 vpaddq %ymm13,%ymm8,%ymm8
619 vmovdqu %ymm7,224-128(%rdi)
620 vmovdqu %ymm8,256-128(%rdi)
624 jne .LOOP_GRANDE_SQR_1024
637 .size rsaz_1024_sqr_avx2,.-rsaz_1024_sqr_avx2
638 .globl rsaz_1024_mul_avx2
639 .type rsaz_1024_mul_avx2,@function
677 jz .Lmul_1024_no_n_copy
684 vmovdqu 0-128(%rcx),%ymm0
686 vmovdqu 32-128(%rcx),%ymm1
687 vmovdqu 64-128(%rcx),%ymm2
688 vmovdqu 96-128(%rcx),%ymm3
689 vmovdqu 128-128(%rcx),%ymm4
690 vmovdqu 160-128(%rcx),%ymm5
691 vmovdqu 192-128(%rcx),%ymm6
692 vmovdqu 224-128(%rcx),%ymm7
693 vmovdqu 256-128(%rcx),%ymm8
694 leaq 64+128(%rsp),%rcx
695 vmovdqu %ymm0,0-128(%rcx)
696 vpxor %ymm0,%ymm0,%ymm0
697 vmovdqu %ymm1,32-128(%rcx)
698 vpxor %ymm1,%ymm1,%ymm1
699 vmovdqu %ymm2,64-128(%rcx)
700 vpxor %ymm2,%ymm2,%ymm2
701 vmovdqu %ymm3,96-128(%rcx)
702 vpxor %ymm3,%ymm3,%ymm3
703 vmovdqu %ymm4,128-128(%rcx)
704 vpxor %ymm4,%ymm4,%ymm4
705 vmovdqu %ymm5,160-128(%rcx)
706 vpxor %ymm5,%ymm5,%ymm5
707 vmovdqu %ymm6,192-128(%rcx)
708 vpxor %ymm6,%ymm6,%ymm6
709 vmovdqu %ymm7,224-128(%rcx)
710 vpxor %ymm7,%ymm7,%ymm7
711 vmovdqu %ymm8,256-128(%rcx)
713 vmovdqu %ymm9,288-128(%rcx)
714 .Lmul_1024_no_n_copy:
718 vpbroadcastq (%r13),%ymm10
726 vmovdqu .Land_mask(%rip),%ymm15
728 vmovdqu %ymm9,288-128(%rdi)
733 vpsrlq $29,%ymm3,%ymm9
735 imulq -128(%rsi),%rax
738 imulq 8-128(%rsi),%r10
743 andl $0x1fffffff,%eax
746 imulq 16-128(%rsi),%r11
750 imulq 24-128(%rsi),%r12
752 vpmuludq 32-128(%rsi),%ymm10,%ymm0
754 vpaddq %ymm0,%ymm1,%ymm1
755 vpmuludq 64-128(%rsi),%ymm10,%ymm12
756 vpbroadcastq %xmm11,%ymm11
757 vpaddq %ymm12,%ymm2,%ymm2
758 vpmuludq 96-128(%rsi),%ymm10,%ymm13
759 vpand %ymm15,%ymm3,%ymm3
760 vpaddq %ymm13,%ymm3,%ymm3
761 vpmuludq 128-128(%rsi),%ymm10,%ymm0
762 vpaddq %ymm0,%ymm4,%ymm4
763 vpmuludq 160-128(%rsi),%ymm10,%ymm12
764 vpaddq %ymm12,%ymm5,%ymm5
765 vpmuludq 192-128(%rsi),%ymm10,%ymm13
766 vpaddq %ymm13,%ymm6,%ymm6
767 vpmuludq 224-128(%rsi),%ymm10,%ymm0
768 vpermq $0x93,%ymm9,%ymm9
769 vpaddq %ymm0,%ymm7,%ymm7
770 vpmuludq 256-128(%rsi),%ymm10,%ymm12
771 vpbroadcastq 8(%r13),%ymm10
772 vpaddq %ymm12,%ymm8,%ymm8
775 imulq -128(%rcx),%rax
778 imulq 8-128(%rcx),%rax
781 imulq 16-128(%rcx),%rax
784 imulq 24-128(%rcx),%rdx
788 vpmuludq 32-128(%rcx),%ymm11,%ymm13
790 vpaddq %ymm13,%ymm1,%ymm1
791 vpmuludq 64-128(%rcx),%ymm11,%ymm0
792 vpaddq %ymm0,%ymm2,%ymm2
793 vpmuludq 96-128(%rcx),%ymm11,%ymm12
794 vpaddq %ymm12,%ymm3,%ymm3
795 vpmuludq 128-128(%rcx),%ymm11,%ymm13
796 vpaddq %ymm13,%ymm4,%ymm4
797 vpmuludq 160-128(%rcx),%ymm11,%ymm0
798 vpaddq %ymm0,%ymm5,%ymm5
799 vpmuludq 192-128(%rcx),%ymm11,%ymm12
800 vpaddq %ymm12,%ymm6,%ymm6
801 vpmuludq 224-128(%rcx),%ymm11,%ymm13
802 vpblendd $3,%ymm14,%ymm9,%ymm9
803 vpaddq %ymm13,%ymm7,%ymm7
804 vpmuludq 256-128(%rcx),%ymm11,%ymm0
805 vpaddq %ymm9,%ymm3,%ymm3
806 vpaddq %ymm0,%ymm8,%ymm8
809 imulq -128(%rsi),%rax
811 vmovdqu -8+32-128(%rsi),%ymm12
813 imulq 8-128(%rsi),%rax
815 vmovdqu -8+64-128(%rsi),%ymm13
819 andl $0x1fffffff,%eax
821 imulq 16-128(%rsi),%rbx
823 vpmuludq %ymm10,%ymm12,%ymm12
825 vmovdqu -8+96-128(%rsi),%ymm0
826 vpaddq %ymm12,%ymm1,%ymm1
827 vpmuludq %ymm10,%ymm13,%ymm13
828 vpbroadcastq %xmm11,%ymm11
829 vmovdqu -8+128-128(%rsi),%ymm12
830 vpaddq %ymm13,%ymm2,%ymm2
831 vpmuludq %ymm10,%ymm0,%ymm0
832 vmovdqu -8+160-128(%rsi),%ymm13
833 vpaddq %ymm0,%ymm3,%ymm3
834 vpmuludq %ymm10,%ymm12,%ymm12
835 vmovdqu -8+192-128(%rsi),%ymm0
836 vpaddq %ymm12,%ymm4,%ymm4
837 vpmuludq %ymm10,%ymm13,%ymm13
838 vmovdqu -8+224-128(%rsi),%ymm12
839 vpaddq %ymm13,%ymm5,%ymm5
840 vpmuludq %ymm10,%ymm0,%ymm0
841 vmovdqu -8+256-128(%rsi),%ymm13
842 vpaddq %ymm0,%ymm6,%ymm6
843 vpmuludq %ymm10,%ymm12,%ymm12
844 vmovdqu -8+288-128(%rsi),%ymm9
845 vpaddq %ymm12,%ymm7,%ymm7
846 vpmuludq %ymm10,%ymm13,%ymm13
847 vpaddq %ymm13,%ymm8,%ymm8
848 vpmuludq %ymm10,%ymm9,%ymm9
849 vpbroadcastq 16(%r13),%ymm10
852 imulq -128(%rcx),%rax
854 vmovdqu -8+32-128(%rcx),%ymm0
856 imulq 8-128(%rcx),%rax
858 vmovdqu -8+64-128(%rcx),%ymm12
860 imulq 16-128(%rcx),%rdx
864 vpmuludq %ymm11,%ymm0,%ymm0
866 vmovdqu -8+96-128(%rcx),%ymm13
867 vpaddq %ymm0,%ymm1,%ymm1
868 vpmuludq %ymm11,%ymm12,%ymm12
869 vmovdqu -8+128-128(%rcx),%ymm0
870 vpaddq %ymm12,%ymm2,%ymm2
871 vpmuludq %ymm11,%ymm13,%ymm13
872 vmovdqu -8+160-128(%rcx),%ymm12
873 vpaddq %ymm13,%ymm3,%ymm3
874 vpmuludq %ymm11,%ymm0,%ymm0
875 vmovdqu -8+192-128(%rcx),%ymm13
876 vpaddq %ymm0,%ymm4,%ymm4
877 vpmuludq %ymm11,%ymm12,%ymm12
878 vmovdqu -8+224-128(%rcx),%ymm0
879 vpaddq %ymm12,%ymm5,%ymm5
880 vpmuludq %ymm11,%ymm13,%ymm13
881 vmovdqu -8+256-128(%rcx),%ymm12
882 vpaddq %ymm13,%ymm6,%ymm6
883 vpmuludq %ymm11,%ymm0,%ymm0
884 vmovdqu -8+288-128(%rcx),%ymm13
885 vpaddq %ymm0,%ymm7,%ymm7
886 vpmuludq %ymm11,%ymm12,%ymm12
887 vpaddq %ymm12,%ymm8,%ymm8
888 vpmuludq %ymm11,%ymm13,%ymm13
889 vpaddq %ymm13,%ymm9,%ymm9
891 vmovdqu -16+32-128(%rsi),%ymm0
893 imulq -128(%rsi),%rax
896 vmovdqu -16+64-128(%rsi),%ymm12
899 andl $0x1fffffff,%eax
901 imulq 8-128(%rsi),%rbx
903 vpmuludq %ymm10,%ymm0,%ymm0
905 vmovdqu -16+96-128(%rsi),%ymm13
906 vpaddq %ymm0,%ymm1,%ymm1
907 vpmuludq %ymm10,%ymm12,%ymm12
908 vpbroadcastq %xmm11,%ymm11
909 vmovdqu -16+128-128(%rsi),%ymm0
910 vpaddq %ymm12,%ymm2,%ymm2
911 vpmuludq %ymm10,%ymm13,%ymm13
912 vmovdqu -16+160-128(%rsi),%ymm12
913 vpaddq %ymm13,%ymm3,%ymm3
914 vpmuludq %ymm10,%ymm0,%ymm0
915 vmovdqu -16+192-128(%rsi),%ymm13
916 vpaddq %ymm0,%ymm4,%ymm4
917 vpmuludq %ymm10,%ymm12,%ymm12
918 vmovdqu -16+224-128(%rsi),%ymm0
919 vpaddq %ymm12,%ymm5,%ymm5
920 vpmuludq %ymm10,%ymm13,%ymm13
921 vmovdqu -16+256-128(%rsi),%ymm12
922 vpaddq %ymm13,%ymm6,%ymm6
923 vpmuludq %ymm10,%ymm0,%ymm0
924 vmovdqu -16+288-128(%rsi),%ymm13
925 vpaddq %ymm0,%ymm7,%ymm7
926 vpmuludq %ymm10,%ymm12,%ymm12
927 vpaddq %ymm12,%ymm8,%ymm8
928 vpmuludq %ymm10,%ymm13,%ymm13
929 vpbroadcastq 24(%r13),%ymm10
930 vpaddq %ymm13,%ymm9,%ymm9
932 vmovdqu -16+32-128(%rcx),%ymm0
934 imulq -128(%rcx),%rax
936 vmovdqu -16+64-128(%rcx),%ymm12
937 imulq 8-128(%rcx),%rdx
941 vpmuludq %ymm11,%ymm0,%ymm0
943 vmovdqu -16+96-128(%rcx),%ymm13
944 vpaddq %ymm0,%ymm1,%ymm1
945 vpmuludq %ymm11,%ymm12,%ymm12
946 vmovdqu -16+128-128(%rcx),%ymm0
947 vpaddq %ymm12,%ymm2,%ymm2
948 vpmuludq %ymm11,%ymm13,%ymm13
949 vmovdqu -16+160-128(%rcx),%ymm12
950 vpaddq %ymm13,%ymm3,%ymm3
951 vpmuludq %ymm11,%ymm0,%ymm0
952 vmovdqu -16+192-128(%rcx),%ymm13
953 vpaddq %ymm0,%ymm4,%ymm4
954 vpmuludq %ymm11,%ymm12,%ymm12
955 vmovdqu -16+224-128(%rcx),%ymm0
956 vpaddq %ymm12,%ymm5,%ymm5
957 vpmuludq %ymm11,%ymm13,%ymm13
958 vmovdqu -16+256-128(%rcx),%ymm12
959 vpaddq %ymm13,%ymm6,%ymm6
960 vpmuludq %ymm11,%ymm0,%ymm0
961 vmovdqu -16+288-128(%rcx),%ymm13
962 vpaddq %ymm0,%ymm7,%ymm7
963 vpmuludq %ymm11,%ymm12,%ymm12
964 vmovdqu -24+32-128(%rsi),%ymm0
965 vpaddq %ymm12,%ymm8,%ymm8
966 vpmuludq %ymm11,%ymm13,%ymm13
967 vmovdqu -24+64-128(%rsi),%ymm12
968 vpaddq %ymm13,%ymm9,%ymm9
971 imulq -128(%rsi),%rbx
976 andl $0x1fffffff,%eax
978 vpmuludq %ymm10,%ymm0,%ymm0
980 vmovdqu -24+96-128(%rsi),%ymm13
981 vpaddq %ymm0,%ymm1,%ymm1
982 vpmuludq %ymm10,%ymm12,%ymm12
983 vpbroadcastq %xmm11,%ymm11
984 vmovdqu -24+128-128(%rsi),%ymm0
985 vpaddq %ymm12,%ymm2,%ymm2
986 vpmuludq %ymm10,%ymm13,%ymm13
987 vmovdqu -24+160-128(%rsi),%ymm12
988 vpaddq %ymm13,%ymm3,%ymm3
989 vpmuludq %ymm10,%ymm0,%ymm0
990 vmovdqu -24+192-128(%rsi),%ymm13
991 vpaddq %ymm0,%ymm4,%ymm4
992 vpmuludq %ymm10,%ymm12,%ymm12
993 vmovdqu -24+224-128(%rsi),%ymm0
994 vpaddq %ymm12,%ymm5,%ymm5
995 vpmuludq %ymm10,%ymm13,%ymm13
996 vmovdqu -24+256-128(%rsi),%ymm12
997 vpaddq %ymm13,%ymm6,%ymm6
998 vpmuludq %ymm10,%ymm0,%ymm0
999 vmovdqu -24+288-128(%rsi),%ymm13
1000 vpaddq %ymm0,%ymm7,%ymm7
1001 vpmuludq %ymm10,%ymm12,%ymm12
1002 vpaddq %ymm12,%ymm8,%ymm8
1003 vpmuludq %ymm10,%ymm13,%ymm13
1004 vpbroadcastq 32(%r13),%ymm10
1005 vpaddq %ymm13,%ymm9,%ymm9
1008 vmovdqu -24+32-128(%rcx),%ymm0
1009 imulq -128(%rcx),%rax
1013 vmovdqu -24+64-128(%rcx),%ymm12
1014 vpmuludq %ymm11,%ymm0,%ymm0
1016 vmovdqu -24+96-128(%rcx),%ymm13
1017 vpaddq %ymm0,%ymm1,%ymm0
1018 vpmuludq %ymm11,%ymm12,%ymm12
1019 vmovdqu %ymm0,(%rsp)
1020 vpaddq %ymm12,%ymm2,%ymm1
1021 vmovdqu -24+128-128(%rcx),%ymm0
1022 vpmuludq %ymm11,%ymm13,%ymm13
1023 vmovdqu -24+160-128(%rcx),%ymm12
1024 vpaddq %ymm13,%ymm3,%ymm2
1025 vpmuludq %ymm11,%ymm0,%ymm0
1026 vmovdqu -24+192-128(%rcx),%ymm13
1027 vpaddq %ymm0,%ymm4,%ymm3
1028 vpmuludq %ymm11,%ymm12,%ymm12
1029 vmovdqu -24+224-128(%rcx),%ymm0
1030 vpaddq %ymm12,%ymm5,%ymm4
1031 vpmuludq %ymm11,%ymm13,%ymm13
1032 vmovdqu -24+256-128(%rcx),%ymm12
1033 vpaddq %ymm13,%ymm6,%ymm5
1034 vpmuludq %ymm11,%ymm0,%ymm0
1035 vmovdqu -24+288-128(%rcx),%ymm13
1037 vpaddq %ymm0,%ymm7,%ymm6
1038 vpmuludq %ymm11,%ymm12,%ymm12
1040 vpaddq %ymm12,%ymm8,%ymm7
1041 vpmuludq %ymm11,%ymm13,%ymm13
1043 vpaddq %ymm13,%ymm9,%ymm8
1047 vpermq $0,%ymm15,%ymm15
1048 vpaddq (%rsp),%ymm12,%ymm0
1050 vpsrlq $29,%ymm0,%ymm12
1051 vpand %ymm15,%ymm0,%ymm0
1052 vpsrlq $29,%ymm1,%ymm13
1053 vpand %ymm15,%ymm1,%ymm1
1054 vpsrlq $29,%ymm2,%ymm10
1055 vpermq $0x93,%ymm12,%ymm12
1056 vpand %ymm15,%ymm2,%ymm2
1057 vpsrlq $29,%ymm3,%ymm11
1058 vpermq $0x93,%ymm13,%ymm13
1059 vpand %ymm15,%ymm3,%ymm3
1061 vpblendd $3,%ymm14,%ymm12,%ymm9
1062 vpermq $0x93,%ymm10,%ymm10
1063 vpblendd $3,%ymm12,%ymm13,%ymm12
1064 vpermq $0x93,%ymm11,%ymm11
1065 vpaddq %ymm9,%ymm0,%ymm0
1066 vpblendd $3,%ymm13,%ymm10,%ymm13
1067 vpaddq %ymm12,%ymm1,%ymm1
1068 vpblendd $3,%ymm10,%ymm11,%ymm10
1069 vpaddq %ymm13,%ymm2,%ymm2
1070 vpblendd $3,%ymm11,%ymm14,%ymm11
1071 vpaddq %ymm10,%ymm3,%ymm3
1072 vpaddq %ymm11,%ymm4,%ymm4
1074 vpsrlq $29,%ymm0,%ymm12
1075 vpand %ymm15,%ymm0,%ymm0
1076 vpsrlq $29,%ymm1,%ymm13
1077 vpand %ymm15,%ymm1,%ymm1
1078 vpsrlq $29,%ymm2,%ymm10
1079 vpermq $0x93,%ymm12,%ymm12
1080 vpand %ymm15,%ymm2,%ymm2
1081 vpsrlq $29,%ymm3,%ymm11
1082 vpermq $0x93,%ymm13,%ymm13
1083 vpand %ymm15,%ymm3,%ymm3
1084 vpermq $0x93,%ymm10,%ymm10
1086 vpblendd $3,%ymm14,%ymm12,%ymm9
1087 vpermq $0x93,%ymm11,%ymm11
1088 vpblendd $3,%ymm12,%ymm13,%ymm12
1089 vpaddq %ymm9,%ymm0,%ymm0
1090 vpblendd $3,%ymm13,%ymm10,%ymm13
1091 vpaddq %ymm12,%ymm1,%ymm1
1092 vpblendd $3,%ymm10,%ymm11,%ymm10
1093 vpaddq %ymm13,%ymm2,%ymm2
1094 vpblendd $3,%ymm11,%ymm14,%ymm11
1095 vpaddq %ymm10,%ymm3,%ymm3
1096 vpaddq %ymm11,%ymm4,%ymm4
1098 vmovdqu %ymm0,0-128(%rdi)
1099 vmovdqu %ymm1,32-128(%rdi)
1100 vmovdqu %ymm2,64-128(%rdi)
1101 vmovdqu %ymm3,96-128(%rdi)
1102 vpsrlq $29,%ymm4,%ymm12
1103 vpand %ymm15,%ymm4,%ymm4
1104 vpsrlq $29,%ymm5,%ymm13
1105 vpand %ymm15,%ymm5,%ymm5
1106 vpsrlq $29,%ymm6,%ymm10
1107 vpermq $0x93,%ymm12,%ymm12
1108 vpand %ymm15,%ymm6,%ymm6
1109 vpsrlq $29,%ymm7,%ymm11
1110 vpermq $0x93,%ymm13,%ymm13
1111 vpand %ymm15,%ymm7,%ymm7
1112 vpsrlq $29,%ymm8,%ymm0
1113 vpermq $0x93,%ymm10,%ymm10
1114 vpand %ymm15,%ymm8,%ymm8
1115 vpermq $0x93,%ymm11,%ymm11
1117 vpblendd $3,%ymm14,%ymm12,%ymm9
1118 vpermq $0x93,%ymm0,%ymm0
1119 vpblendd $3,%ymm12,%ymm13,%ymm12
1120 vpaddq %ymm9,%ymm4,%ymm4
1121 vpblendd $3,%ymm13,%ymm10,%ymm13
1122 vpaddq %ymm12,%ymm5,%ymm5
1123 vpblendd $3,%ymm10,%ymm11,%ymm10
1124 vpaddq %ymm13,%ymm6,%ymm6
1125 vpblendd $3,%ymm11,%ymm0,%ymm11
1126 vpaddq %ymm10,%ymm7,%ymm7
1127 vpaddq %ymm11,%ymm8,%ymm8
1129 vpsrlq $29,%ymm4,%ymm12
1130 vpand %ymm15,%ymm4,%ymm4
1131 vpsrlq $29,%ymm5,%ymm13
1132 vpand %ymm15,%ymm5,%ymm5
1133 vpsrlq $29,%ymm6,%ymm10
1134 vpermq $0x93,%ymm12,%ymm12
1135 vpand %ymm15,%ymm6,%ymm6
1136 vpsrlq $29,%ymm7,%ymm11
1137 vpermq $0x93,%ymm13,%ymm13
1138 vpand %ymm15,%ymm7,%ymm7
1139 vpsrlq $29,%ymm8,%ymm0
1140 vpermq $0x93,%ymm10,%ymm10
1141 vpand %ymm15,%ymm8,%ymm8
1142 vpermq $0x93,%ymm11,%ymm11
1144 vpblendd $3,%ymm14,%ymm12,%ymm9
1145 vpermq $0x93,%ymm0,%ymm0
1146 vpblendd $3,%ymm12,%ymm13,%ymm12
1147 vpaddq %ymm9,%ymm4,%ymm4
1148 vpblendd $3,%ymm13,%ymm10,%ymm13
1149 vpaddq %ymm12,%ymm5,%ymm5
1150 vpblendd $3,%ymm10,%ymm11,%ymm10
1151 vpaddq %ymm13,%ymm6,%ymm6
1152 vpblendd $3,%ymm11,%ymm0,%ymm11
1153 vpaddq %ymm10,%ymm7,%ymm7
1154 vpaddq %ymm11,%ymm8,%ymm8
1156 vmovdqu %ymm4,128-128(%rdi)
1157 vmovdqu %ymm5,160-128(%rdi)
1158 vmovdqu %ymm6,192-128(%rdi)
1159 vmovdqu %ymm7,224-128(%rdi)
1160 vmovdqu %ymm8,256-128(%rdi)
1171 .Lmul_1024_epilogue:
1173 .size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2
1174 .globl rsaz_1024_red2norm_avx2
1175 .type rsaz_1024_red2norm_avx2,@function
1177 rsaz_1024_red2norm_avx2:
1182 movq -112(%rsi),%r10
1369 .size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2
1371 .globl rsaz_1024_norm2red_avx2
1372 .type rsaz_1024_norm2red_avx2,@function
1374 rsaz_1024_norm2red_avx2:
1377 movl $0x1fffffff,%eax
1382 movq %r11,-128(%rdi)
1386 movq %r10,-120(%rdi)
1527 .size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2
1528 .globl rsaz_1024_scatter5_avx2
1529 .type rsaz_1024_scatter5_avx2,@function
1531 rsaz_1024_scatter5_avx2:
1533 vmovdqu .Lscatter_permd(%rip),%ymm5
1535 leaq (%rdi,%rdx,1),%rdi
1537 jmp .Loop_scatter_1024
1541 vmovdqu (%rsi),%ymm0
1543 vpermd %ymm0,%ymm5,%ymm0
1544 vmovdqu %xmm0,(%rdi)
1547 jnz .Loop_scatter_1024
1551 .size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2
1553 .globl rsaz_1024_gather5_avx2
1554 .type rsaz_1024_gather5_avx2,@function
1556 rsaz_1024_gather5_avx2:
1559 leaq -256(%rsp),%rsp
1561 leaq .Linc(%rip),%r10
1562 leaq -128(%rsp),%rax
1565 vmovdqa (%r10),%ymm0
1566 vmovdqa 32(%r10),%ymm1
1567 vmovdqa 64(%r10),%ymm5
1568 vpbroadcastd %xmm4,%ymm4
1570 vpaddd %ymm5,%ymm0,%ymm2
1571 vpcmpeqd %ymm4,%ymm0,%ymm0
1572 vpaddd %ymm5,%ymm1,%ymm3
1573 vpcmpeqd %ymm4,%ymm1,%ymm1
1574 vmovdqa %ymm0,0+128(%rax)
1575 vpaddd %ymm5,%ymm2,%ymm0
1576 vpcmpeqd %ymm4,%ymm2,%ymm2
1577 vmovdqa %ymm1,32+128(%rax)
1578 vpaddd %ymm5,%ymm3,%ymm1
1579 vpcmpeqd %ymm4,%ymm3,%ymm3
1580 vmovdqa %ymm2,64+128(%rax)
1581 vpaddd %ymm5,%ymm0,%ymm2
1582 vpcmpeqd %ymm4,%ymm0,%ymm0
1583 vmovdqa %ymm3,96+128(%rax)
1584 vpaddd %ymm5,%ymm1,%ymm3
1585 vpcmpeqd %ymm4,%ymm1,%ymm1
1586 vmovdqa %ymm0,128+128(%rax)
1587 vpaddd %ymm5,%ymm2,%ymm8
1588 vpcmpeqd %ymm4,%ymm2,%ymm2
1589 vmovdqa %ymm1,160+128(%rax)
1590 vpaddd %ymm5,%ymm3,%ymm9
1591 vpcmpeqd %ymm4,%ymm3,%ymm3
1592 vmovdqa %ymm2,192+128(%rax)
1593 vpaddd %ymm5,%ymm8,%ymm10
1594 vpcmpeqd %ymm4,%ymm8,%ymm8
1595 vmovdqa %ymm3,224+128(%rax)
1596 vpaddd %ymm5,%ymm9,%ymm11
1597 vpcmpeqd %ymm4,%ymm9,%ymm9
1598 vpaddd %ymm5,%ymm10,%ymm12
1599 vpcmpeqd %ymm4,%ymm10,%ymm10
1600 vpaddd %ymm5,%ymm11,%ymm13
1601 vpcmpeqd %ymm4,%ymm11,%ymm11
1602 vpaddd %ymm5,%ymm12,%ymm14
1603 vpcmpeqd %ymm4,%ymm12,%ymm12
1604 vpaddd %ymm5,%ymm13,%ymm15
1605 vpcmpeqd %ymm4,%ymm13,%ymm13
1606 vpcmpeqd %ymm4,%ymm14,%ymm14
1607 vpcmpeqd %ymm4,%ymm15,%ymm15
1609 vmovdqa -32(%r10),%ymm7
1614 vmovdqa 0-128(%rsi),%ymm0
1615 vmovdqa 32-128(%rsi),%ymm1
1616 vmovdqa 64-128(%rsi),%ymm2
1617 vmovdqa 96-128(%rsi),%ymm3
1618 vpand 0+128(%rax),%ymm0,%ymm0
1619 vpand 32+128(%rax),%ymm1,%ymm1
1620 vpand 64+128(%rax),%ymm2,%ymm2
1621 vpor %ymm0,%ymm1,%ymm4
1622 vpand 96+128(%rax),%ymm3,%ymm3
1623 vmovdqa 128-128(%rsi),%ymm0
1624 vmovdqa 160-128(%rsi),%ymm1
1625 vpor %ymm2,%ymm3,%ymm5
1626 vmovdqa 192-128(%rsi),%ymm2
1627 vmovdqa 224-128(%rsi),%ymm3
1628 vpand 128+128(%rax),%ymm0,%ymm0
1629 vpand 160+128(%rax),%ymm1,%ymm1
1630 vpand 192+128(%rax),%ymm2,%ymm2
1631 vpor %ymm0,%ymm4,%ymm4
1632 vpand 224+128(%rax),%ymm3,%ymm3
1633 vpand 256-128(%rsi),%ymm8,%ymm0
1634 vpor %ymm1,%ymm5,%ymm5
1635 vpand 288-128(%rsi),%ymm9,%ymm1
1636 vpor %ymm2,%ymm4,%ymm4
1637 vpand 320-128(%rsi),%ymm10,%ymm2
1638 vpor %ymm3,%ymm5,%ymm5
1639 vpand 352-128(%rsi),%ymm11,%ymm3
1640 vpor %ymm0,%ymm4,%ymm4
1641 vpand 384-128(%rsi),%ymm12,%ymm0
1642 vpor %ymm1,%ymm5,%ymm5
1643 vpand 416-128(%rsi),%ymm13,%ymm1
1644 vpor %ymm2,%ymm4,%ymm4
1645 vpand 448-128(%rsi),%ymm14,%ymm2
1646 vpor %ymm3,%ymm5,%ymm5
1647 vpand 480-128(%rsi),%ymm15,%ymm3
1649 vpor %ymm0,%ymm4,%ymm4
1650 vpor %ymm1,%ymm5,%ymm5
1651 vpor %ymm2,%ymm4,%ymm4
1652 vpor %ymm3,%ymm5,%ymm5
1654 vpor %ymm5,%ymm4,%ymm4
1655 vextracti128 $1,%ymm4,%xmm5
1656 vpor %xmm4,%xmm5,%xmm5
1657 vpermd %ymm5,%ymm7,%ymm5
1658 vmovdqu %ymm5,(%rdi)
1661 jnz .Loop_gather_1024
1663 vpxor %ymm0,%ymm0,%ymm0
1664 vmovdqu %ymm0,(%rdi)
1668 .size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2
1670 .globl rsaz_avx2_eligible
1671 .type rsaz_avx2_eligible,@function
1674 movl OPENSSL_ia32cap_P+8(%rip),%eax
1683 .size rsaz_avx2_eligible,.-rsaz_avx2_eligible
1687 .quad 0x1fffffff,0x1fffffff,0x1fffffff,-1
1689 .long 0,2,4,6,7,7,7,7
1691 .long 0,7,1,7,2,7,3,7
1693 .long 0,0,0,0, 1,1,1,1
1694 .long 2,2,2,2, 3,3,3,3
1695 .long 4,4,4,4, 4,4,4,4
1697 .section .note.GNU-stack,"",%progbits