2 /* Do not modify. This file is auto-generated from rsaz-avx2.pl. */
5 .globl rsaz_1024_sqr_avx2
6 .type rsaz_1024_sqr_avx2,@function
11 .cfi_def_cfa_register %rax
26 .cfi_def_cfa_register %rbp
37 vpxor %ymm9,%ymm9,%ymm9
38 jz .Lsqr_1024_no_n_copy
45 vmovdqu 0-128(%r13),%ymm0
47 vmovdqu 32-128(%r13),%ymm1
48 vmovdqu 64-128(%r13),%ymm2
49 vmovdqu 96-128(%r13),%ymm3
50 vmovdqu 128-128(%r13),%ymm4
51 vmovdqu 160-128(%r13),%ymm5
52 vmovdqu 192-128(%r13),%ymm6
53 vmovdqu 224-128(%r13),%ymm7
54 vmovdqu 256-128(%r13),%ymm8
55 leaq 832+128(%rsp),%r13
56 vmovdqu %ymm0,0-128(%r13)
57 vmovdqu %ymm1,32-128(%r13)
58 vmovdqu %ymm2,64-128(%r13)
59 vmovdqu %ymm3,96-128(%r13)
60 vmovdqu %ymm4,128-128(%r13)
61 vmovdqu %ymm5,160-128(%r13)
62 vmovdqu %ymm6,192-128(%r13)
63 vmovdqu %ymm7,224-128(%r13)
64 vmovdqu %ymm8,256-128(%r13)
65 vmovdqu %ymm9,288-128(%r13)
70 vmovdqu 32-128(%rsi),%ymm1
71 vmovdqu 64-128(%rsi),%ymm2
72 vmovdqu 96-128(%rsi),%ymm3
73 vmovdqu 128-128(%rsi),%ymm4
74 vmovdqu 160-128(%rsi),%ymm5
75 vmovdqu 192-128(%rsi),%ymm6
76 vmovdqu 224-128(%rsi),%ymm7
77 vmovdqu 256-128(%rsi),%ymm8
80 vmovdqu .Land_mask(%rip),%ymm15
81 jmp .LOOP_GRANDE_SQR_1024
84 .LOOP_GRANDE_SQR_1024:
85 leaq 576+128(%rsp),%r9
91 vpaddq %ymm1,%ymm1,%ymm1
92 vpbroadcastq 0-128(%rsi),%ymm10
93 vpaddq %ymm2,%ymm2,%ymm2
94 vmovdqa %ymm1,0-128(%r9)
95 vpaddq %ymm3,%ymm3,%ymm3
96 vmovdqa %ymm2,32-128(%r9)
97 vpaddq %ymm4,%ymm4,%ymm4
98 vmovdqa %ymm3,64-128(%r9)
99 vpaddq %ymm5,%ymm5,%ymm5
100 vmovdqa %ymm4,96-128(%r9)
101 vpaddq %ymm6,%ymm6,%ymm6
102 vmovdqa %ymm5,128-128(%r9)
103 vpaddq %ymm7,%ymm7,%ymm7
104 vmovdqa %ymm6,160-128(%r9)
105 vpaddq %ymm8,%ymm8,%ymm8
106 vmovdqa %ymm7,192-128(%r9)
107 vpxor %ymm9,%ymm9,%ymm9
108 vmovdqa %ymm8,224-128(%r9)
110 vpmuludq 0-128(%rsi),%ymm10,%ymm0
111 vpbroadcastq 32-128(%rsi),%ymm11
112 vmovdqu %ymm9,288-192(%rbx)
113 vpmuludq %ymm10,%ymm1,%ymm1
114 vmovdqu %ymm9,320-448(%r12)
115 vpmuludq %ymm10,%ymm2,%ymm2
116 vmovdqu %ymm9,352-448(%r12)
117 vpmuludq %ymm10,%ymm3,%ymm3
118 vmovdqu %ymm9,384-448(%r12)
119 vpmuludq %ymm10,%ymm4,%ymm4
120 vmovdqu %ymm9,416-448(%r12)
121 vpmuludq %ymm10,%ymm5,%ymm5
122 vmovdqu %ymm9,448-448(%r12)
123 vpmuludq %ymm10,%ymm6,%ymm6
124 vmovdqu %ymm9,480-448(%r12)
125 vpmuludq %ymm10,%ymm7,%ymm7
126 vmovdqu %ymm9,512-448(%r12)
127 vpmuludq %ymm10,%ymm8,%ymm8
128 vpbroadcastq 64-128(%rsi),%ymm10
129 vmovdqu %ymm9,544-448(%r12)
136 vpbroadcastq 32-128(%r15),%ymm11
137 vpmuludq 0-128(%rsi),%ymm10,%ymm0
138 vpaddq 0-192(%rbx),%ymm0,%ymm0
139 vpmuludq 0-128(%r9),%ymm10,%ymm1
140 vpaddq 32-192(%rbx),%ymm1,%ymm1
141 vpmuludq 32-128(%r9),%ymm10,%ymm2
142 vpaddq 64-192(%rbx),%ymm2,%ymm2
143 vpmuludq 64-128(%r9),%ymm10,%ymm3
144 vpaddq 96-192(%rbx),%ymm3,%ymm3
145 vpmuludq 96-128(%r9),%ymm10,%ymm4
146 vpaddq 128-192(%rbx),%ymm4,%ymm4
147 vpmuludq 128-128(%r9),%ymm10,%ymm5
148 vpaddq 160-192(%rbx),%ymm5,%ymm5
149 vpmuludq 160-128(%r9),%ymm10,%ymm6
150 vpaddq 192-192(%rbx),%ymm6,%ymm6
151 vpmuludq 192-128(%r9),%ymm10,%ymm7
152 vpaddq 224-192(%rbx),%ymm7,%ymm7
153 vpmuludq 224-128(%r9),%ymm10,%ymm8
154 vpbroadcastq 64-128(%r15),%ymm10
155 vpaddq 256-192(%rbx),%ymm8,%ymm8
157 vmovdqu %ymm0,0-192(%rbx)
158 vmovdqu %ymm1,32-192(%rbx)
160 vpmuludq 32-128(%rsi),%ymm11,%ymm12
161 vpaddq %ymm12,%ymm2,%ymm2
162 vpmuludq 32-128(%r9),%ymm11,%ymm14
163 vpaddq %ymm14,%ymm3,%ymm3
164 vpmuludq 64-128(%r9),%ymm11,%ymm13
165 vpaddq %ymm13,%ymm4,%ymm4
166 vpmuludq 96-128(%r9),%ymm11,%ymm12
167 vpaddq %ymm12,%ymm5,%ymm5
168 vpmuludq 128-128(%r9),%ymm11,%ymm14
169 vpaddq %ymm14,%ymm6,%ymm6
170 vpmuludq 160-128(%r9),%ymm11,%ymm13
171 vpaddq %ymm13,%ymm7,%ymm7
172 vpmuludq 192-128(%r9),%ymm11,%ymm12
173 vpaddq %ymm12,%ymm8,%ymm8
174 vpmuludq 224-128(%r9),%ymm11,%ymm0
175 vpbroadcastq 96-128(%r15),%ymm11
176 vpaddq 288-192(%rbx),%ymm0,%ymm0
178 vmovdqu %ymm2,64-192(%rbx)
179 vmovdqu %ymm3,96-192(%rbx)
181 vpmuludq 64-128(%rsi),%ymm10,%ymm13
182 vpaddq %ymm13,%ymm4,%ymm4
183 vpmuludq 64-128(%r9),%ymm10,%ymm12
184 vpaddq %ymm12,%ymm5,%ymm5
185 vpmuludq 96-128(%r9),%ymm10,%ymm14
186 vpaddq %ymm14,%ymm6,%ymm6
187 vpmuludq 128-128(%r9),%ymm10,%ymm13
188 vpaddq %ymm13,%ymm7,%ymm7
189 vpmuludq 160-128(%r9),%ymm10,%ymm12
190 vpaddq %ymm12,%ymm8,%ymm8
191 vpmuludq 192-128(%r9),%ymm10,%ymm14
192 vpaddq %ymm14,%ymm0,%ymm0
193 vpmuludq 224-128(%r9),%ymm10,%ymm1
194 vpbroadcastq 128-128(%r15),%ymm10
195 vpaddq 320-448(%r12),%ymm1,%ymm1
197 vmovdqu %ymm4,128-192(%rbx)
198 vmovdqu %ymm5,160-192(%rbx)
200 vpmuludq 96-128(%rsi),%ymm11,%ymm12
201 vpaddq %ymm12,%ymm6,%ymm6
202 vpmuludq 96-128(%r9),%ymm11,%ymm14
203 vpaddq %ymm14,%ymm7,%ymm7
204 vpmuludq 128-128(%r9),%ymm11,%ymm13
205 vpaddq %ymm13,%ymm8,%ymm8
206 vpmuludq 160-128(%r9),%ymm11,%ymm12
207 vpaddq %ymm12,%ymm0,%ymm0
208 vpmuludq 192-128(%r9),%ymm11,%ymm14
209 vpaddq %ymm14,%ymm1,%ymm1
210 vpmuludq 224-128(%r9),%ymm11,%ymm2
211 vpbroadcastq 160-128(%r15),%ymm11
212 vpaddq 352-448(%r12),%ymm2,%ymm2
214 vmovdqu %ymm6,192-192(%rbx)
215 vmovdqu %ymm7,224-192(%rbx)
217 vpmuludq 128-128(%rsi),%ymm10,%ymm12
218 vpaddq %ymm12,%ymm8,%ymm8
219 vpmuludq 128-128(%r9),%ymm10,%ymm14
220 vpaddq %ymm14,%ymm0,%ymm0
221 vpmuludq 160-128(%r9),%ymm10,%ymm13
222 vpaddq %ymm13,%ymm1,%ymm1
223 vpmuludq 192-128(%r9),%ymm10,%ymm12
224 vpaddq %ymm12,%ymm2,%ymm2
225 vpmuludq 224-128(%r9),%ymm10,%ymm3
226 vpbroadcastq 192-128(%r15),%ymm10
227 vpaddq 384-448(%r12),%ymm3,%ymm3
229 vmovdqu %ymm8,256-192(%rbx)
230 vmovdqu %ymm0,288-192(%rbx)
233 vpmuludq 160-128(%rsi),%ymm11,%ymm13
234 vpaddq %ymm13,%ymm1,%ymm1
235 vpmuludq 160-128(%r9),%ymm11,%ymm12
236 vpaddq %ymm12,%ymm2,%ymm2
237 vpmuludq 192-128(%r9),%ymm11,%ymm14
238 vpaddq %ymm14,%ymm3,%ymm3
239 vpmuludq 224-128(%r9),%ymm11,%ymm4
240 vpbroadcastq 224-128(%r15),%ymm11
241 vpaddq 416-448(%r12),%ymm4,%ymm4
243 vmovdqu %ymm1,320-448(%r12)
244 vmovdqu %ymm2,352-448(%r12)
246 vpmuludq 192-128(%rsi),%ymm10,%ymm12
247 vpaddq %ymm12,%ymm3,%ymm3
248 vpmuludq 192-128(%r9),%ymm10,%ymm14
249 vpbroadcastq 256-128(%r15),%ymm0
250 vpaddq %ymm14,%ymm4,%ymm4
251 vpmuludq 224-128(%r9),%ymm10,%ymm5
252 vpbroadcastq 0+8-128(%r15),%ymm10
253 vpaddq 448-448(%r12),%ymm5,%ymm5
255 vmovdqu %ymm3,384-448(%r12)
256 vmovdqu %ymm4,416-448(%r12)
259 vpmuludq 224-128(%rsi),%ymm11,%ymm12
260 vpaddq %ymm12,%ymm5,%ymm5
261 vpmuludq 224-128(%r9),%ymm11,%ymm6
262 vpaddq 480-448(%r12),%ymm6,%ymm6
264 vpmuludq 256-128(%rsi),%ymm0,%ymm7
265 vmovdqu %ymm5,448-448(%r12)
266 vpaddq 512-448(%r12),%ymm7,%ymm7
267 vmovdqu %ymm6,480-448(%r12)
268 vmovdqu %ymm7,512-448(%r12)
274 vmovdqu 256(%rsp),%ymm8
275 vmovdqu 288(%rsp),%ymm1
276 vmovdqu 320(%rsp),%ymm2
279 vpsrlq $29,%ymm8,%ymm14
280 vpand %ymm15,%ymm8,%ymm8
281 vpsrlq $29,%ymm1,%ymm11
282 vpand %ymm15,%ymm1,%ymm1
284 vpermq $0x93,%ymm14,%ymm14
285 vpxor %ymm9,%ymm9,%ymm9
286 vpermq $0x93,%ymm11,%ymm11
288 vpblendd $3,%ymm9,%ymm14,%ymm10
289 vpblendd $3,%ymm14,%ymm11,%ymm14
290 vpaddq %ymm10,%ymm8,%ymm8
291 vpblendd $3,%ymm11,%ymm9,%ymm11
292 vpaddq %ymm14,%ymm1,%ymm1
293 vpaddq %ymm11,%ymm2,%ymm2
294 vmovdqu %ymm1,288-192(%rbx)
295 vmovdqu %ymm2,320-192(%rbx)
301 vmovdqu 32(%rsp),%ymm1
302 vmovdqu 64-192(%rbx),%ymm2
303 vmovdqu 96-192(%rbx),%ymm3
304 vmovdqu 128-192(%rbx),%ymm4
305 vmovdqu 160-192(%rbx),%ymm5
306 vmovdqu 192-192(%rbx),%ymm6
307 vmovdqu 224-192(%rbx),%ymm7
311 andl $0x1fffffff,%eax
315 imulq -128(%r13),%rax
316 vpbroadcastq %xmm12,%ymm12
319 imulq 8-128(%r13),%rax
323 imulq 16-128(%r13),%rax
326 imulq 24-128(%r13),%rdx
331 andl $0x1fffffff,%eax
334 jmp .LOOP_REDUCE_1024
339 vpbroadcastq %xmm13,%ymm13
341 vpmuludq 32-128(%r13),%ymm12,%ymm10
343 imulq -128(%r13),%rax
344 vpaddq %ymm10,%ymm1,%ymm1
346 vpmuludq 64-128(%r13),%ymm12,%ymm14
348 imulq 8-128(%r13),%rax
349 vpaddq %ymm14,%ymm2,%ymm2
350 vpmuludq 96-128(%r13),%ymm12,%ymm11
355 imulq 16-128(%r13),%rax
357 vpaddq %ymm11,%ymm3,%ymm3
358 vpmuludq 128-128(%r13),%ymm12,%ymm10
361 vpaddq %ymm10,%ymm4,%ymm4
362 vpmuludq 160-128(%r13),%ymm12,%ymm14
365 vpaddq %ymm14,%ymm5,%ymm5
366 vpmuludq 192-128(%r13),%ymm12,%ymm11
367 andl $0x1fffffff,%eax
368 vpaddq %ymm11,%ymm6,%ymm6
369 vpmuludq 224-128(%r13),%ymm12,%ymm10
370 vpaddq %ymm10,%ymm7,%ymm7
371 vpmuludq 256-128(%r13),%ymm12,%ymm14
374 vpaddq %ymm14,%ymm8,%ymm8
376 vpbroadcastq %xmm12,%ymm12
378 vpmuludq 32-8-128(%r13),%ymm13,%ymm11
379 vmovdqu 96-8-128(%r13),%ymm14
381 imulq -128(%r13),%rax
382 vpaddq %ymm11,%ymm1,%ymm1
383 vpmuludq 64-8-128(%r13),%ymm13,%ymm10
384 vmovdqu 128-8-128(%r13),%ymm11
387 imulq 8-128(%r13),%rax
388 vpaddq %ymm10,%ymm2,%ymm2
391 vpmuludq %ymm13,%ymm14,%ymm14
392 vmovdqu 160-8-128(%r13),%ymm10
394 vpaddq %ymm14,%ymm3,%ymm3
395 vpmuludq %ymm13,%ymm11,%ymm11
396 vmovdqu 192-8-128(%r13),%ymm14
400 vpaddq %ymm11,%ymm4,%ymm4
401 vpmuludq %ymm13,%ymm10,%ymm10
402 .byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00
403 andl $0x1fffffff,%eax
404 vpaddq %ymm10,%ymm5,%ymm5
405 vpmuludq %ymm13,%ymm14,%ymm14
406 vmovdqu 256-8-128(%r13),%ymm10
407 vpaddq %ymm14,%ymm6,%ymm6
408 vpmuludq %ymm13,%ymm11,%ymm11
409 vmovdqu 288-8-128(%r13),%ymm9
411 imulq -128(%r13),%rax
412 vpaddq %ymm11,%ymm7,%ymm7
413 vpmuludq %ymm13,%ymm10,%ymm10
414 vmovdqu 32-16-128(%r13),%ymm14
415 vpbroadcastq %xmm0,%ymm0
416 vpaddq %ymm10,%ymm8,%ymm8
417 vpmuludq %ymm13,%ymm9,%ymm9
418 vmovdqu 64-16-128(%r13),%ymm11
421 vmovdqu 32-24-128(%r13),%ymm13
422 vpmuludq %ymm12,%ymm14,%ymm14
423 vmovdqu 96-16-128(%r13),%ymm10
424 vpaddq %ymm14,%ymm1,%ymm1
425 vpmuludq %ymm0,%ymm13,%ymm13
426 vpmuludq %ymm12,%ymm11,%ymm11
427 .byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff
428 vpaddq %ymm1,%ymm13,%ymm13
429 vpaddq %ymm11,%ymm2,%ymm2
430 vpmuludq %ymm12,%ymm10,%ymm10
431 vmovdqu 160-16-128(%r13),%ymm11
434 vmovdqu %ymm13,(%rsp)
435 vpaddq %ymm10,%ymm3,%ymm3
436 vpmuludq %ymm12,%ymm14,%ymm14
437 vmovdqu 192-16-128(%r13),%ymm10
438 vpaddq %ymm14,%ymm4,%ymm4
439 vpmuludq %ymm12,%ymm11,%ymm11
440 vmovdqu 224-16-128(%r13),%ymm14
441 vpaddq %ymm11,%ymm5,%ymm5
442 vpmuludq %ymm12,%ymm10,%ymm10
443 vmovdqu 256-16-128(%r13),%ymm11
444 vpaddq %ymm10,%ymm6,%ymm6
445 vpmuludq %ymm12,%ymm14,%ymm14
447 vmovdqu 288-16-128(%r13),%ymm10
449 vpaddq %ymm14,%ymm7,%ymm7
450 vpmuludq %ymm12,%ymm11,%ymm11
454 vpaddq %ymm11,%ymm8,%ymm8
455 vpmuludq %ymm12,%ymm10,%ymm10
456 andl $0x1fffffff,%eax
458 vmovdqu 96-24-128(%r13),%ymm11
460 vpaddq %ymm10,%ymm9,%ymm9
461 vpbroadcastq %xmm12,%ymm12
463 vpmuludq 64-24-128(%r13),%ymm0,%ymm14
464 vmovdqu 128-24-128(%r13),%ymm10
466 imulq -128(%r13),%rax
468 vpaddq %ymm14,%ymm2,%ymm1
469 vpmuludq %ymm0,%ymm11,%ymm11
470 vmovdqu 160-24-128(%r13),%ymm14
473 imulq 8-128(%r13),%rax
477 vpaddq %ymm11,%ymm3,%ymm2
478 vpmuludq %ymm0,%ymm10,%ymm10
479 vmovdqu 192-24-128(%r13),%ymm11
482 imulq 16-128(%r13),%rax
483 vpaddq %ymm10,%ymm4,%ymm3
484 vpmuludq %ymm0,%ymm14,%ymm14
485 vmovdqu 224-24-128(%r13),%ymm10
486 imulq 24-128(%r13),%rdx
488 leaq (%r9,%r10,1),%rax
489 vpaddq %ymm14,%ymm5,%ymm4
490 vpmuludq %ymm0,%ymm11,%ymm11
491 vmovdqu 256-24-128(%r13),%ymm14
494 vpmuludq %ymm0,%ymm10,%ymm10
495 vpaddq %ymm11,%ymm6,%ymm5
496 vmovdqu 288-24-128(%r13),%ymm11
497 andl $0x1fffffff,%eax
498 vpaddq %ymm10,%ymm7,%ymm6
499 vpmuludq %ymm0,%ymm14,%ymm14
501 vpaddq %ymm14,%ymm8,%ymm7
502 vpmuludq %ymm0,%ymm11,%ymm11
503 vpaddq %ymm11,%ymm9,%ymm8
508 jnz .LOOP_REDUCE_1024
510 vpaddq %ymm9,%ymm13,%ymm0
511 vpxor %ymm9,%ymm9,%ymm9
513 vpaddq 288-192(%rbx),%ymm0,%ymm0
514 vpaddq 320-448(%r12),%ymm1,%ymm1
515 vpaddq 352-448(%r12),%ymm2,%ymm2
516 vpaddq 384-448(%r12),%ymm3,%ymm3
517 vpaddq 416-448(%r12),%ymm4,%ymm4
518 vpaddq 448-448(%r12),%ymm5,%ymm5
519 vpaddq 480-448(%r12),%ymm6,%ymm6
520 vpaddq 512-448(%r12),%ymm7,%ymm7
521 vpaddq 544-448(%r12),%ymm8,%ymm8
523 vpsrlq $29,%ymm0,%ymm14
524 vpand %ymm15,%ymm0,%ymm0
525 vpsrlq $29,%ymm1,%ymm11
526 vpand %ymm15,%ymm1,%ymm1
527 vpsrlq $29,%ymm2,%ymm12
528 vpermq $0x93,%ymm14,%ymm14
529 vpand %ymm15,%ymm2,%ymm2
530 vpsrlq $29,%ymm3,%ymm13
531 vpermq $0x93,%ymm11,%ymm11
532 vpand %ymm15,%ymm3,%ymm3
533 vpermq $0x93,%ymm12,%ymm12
535 vpblendd $3,%ymm9,%ymm14,%ymm10
536 vpermq $0x93,%ymm13,%ymm13
537 vpblendd $3,%ymm14,%ymm11,%ymm14
538 vpaddq %ymm10,%ymm0,%ymm0
539 vpblendd $3,%ymm11,%ymm12,%ymm11
540 vpaddq %ymm14,%ymm1,%ymm1
541 vpblendd $3,%ymm12,%ymm13,%ymm12
542 vpaddq %ymm11,%ymm2,%ymm2
543 vpblendd $3,%ymm13,%ymm9,%ymm13
544 vpaddq %ymm12,%ymm3,%ymm3
545 vpaddq %ymm13,%ymm4,%ymm4
547 vpsrlq $29,%ymm0,%ymm14
548 vpand %ymm15,%ymm0,%ymm0
549 vpsrlq $29,%ymm1,%ymm11
550 vpand %ymm15,%ymm1,%ymm1
551 vpsrlq $29,%ymm2,%ymm12
552 vpermq $0x93,%ymm14,%ymm14
553 vpand %ymm15,%ymm2,%ymm2
554 vpsrlq $29,%ymm3,%ymm13
555 vpermq $0x93,%ymm11,%ymm11
556 vpand %ymm15,%ymm3,%ymm3
557 vpermq $0x93,%ymm12,%ymm12
559 vpblendd $3,%ymm9,%ymm14,%ymm10
560 vpermq $0x93,%ymm13,%ymm13
561 vpblendd $3,%ymm14,%ymm11,%ymm14
562 vpaddq %ymm10,%ymm0,%ymm0
563 vpblendd $3,%ymm11,%ymm12,%ymm11
564 vpaddq %ymm14,%ymm1,%ymm1
565 vmovdqu %ymm0,0-128(%rdi)
566 vpblendd $3,%ymm12,%ymm13,%ymm12
567 vpaddq %ymm11,%ymm2,%ymm2
568 vmovdqu %ymm1,32-128(%rdi)
569 vpblendd $3,%ymm13,%ymm9,%ymm13
570 vpaddq %ymm12,%ymm3,%ymm3
571 vmovdqu %ymm2,64-128(%rdi)
572 vpaddq %ymm13,%ymm4,%ymm4
573 vmovdqu %ymm3,96-128(%rdi)
574 vpsrlq $29,%ymm4,%ymm14
575 vpand %ymm15,%ymm4,%ymm4
576 vpsrlq $29,%ymm5,%ymm11
577 vpand %ymm15,%ymm5,%ymm5
578 vpsrlq $29,%ymm6,%ymm12
579 vpermq $0x93,%ymm14,%ymm14
580 vpand %ymm15,%ymm6,%ymm6
581 vpsrlq $29,%ymm7,%ymm13
582 vpermq $0x93,%ymm11,%ymm11
583 vpand %ymm15,%ymm7,%ymm7
584 vpsrlq $29,%ymm8,%ymm0
585 vpermq $0x93,%ymm12,%ymm12
586 vpand %ymm15,%ymm8,%ymm8
587 vpermq $0x93,%ymm13,%ymm13
589 vpblendd $3,%ymm9,%ymm14,%ymm10
590 vpermq $0x93,%ymm0,%ymm0
591 vpblendd $3,%ymm14,%ymm11,%ymm14
592 vpaddq %ymm10,%ymm4,%ymm4
593 vpblendd $3,%ymm11,%ymm12,%ymm11
594 vpaddq %ymm14,%ymm5,%ymm5
595 vpblendd $3,%ymm12,%ymm13,%ymm12
596 vpaddq %ymm11,%ymm6,%ymm6
597 vpblendd $3,%ymm13,%ymm0,%ymm13
598 vpaddq %ymm12,%ymm7,%ymm7
599 vpaddq %ymm13,%ymm8,%ymm8
601 vpsrlq $29,%ymm4,%ymm14
602 vpand %ymm15,%ymm4,%ymm4
603 vpsrlq $29,%ymm5,%ymm11
604 vpand %ymm15,%ymm5,%ymm5
605 vpsrlq $29,%ymm6,%ymm12
606 vpermq $0x93,%ymm14,%ymm14
607 vpand %ymm15,%ymm6,%ymm6
608 vpsrlq $29,%ymm7,%ymm13
609 vpermq $0x93,%ymm11,%ymm11
610 vpand %ymm15,%ymm7,%ymm7
611 vpsrlq $29,%ymm8,%ymm0
612 vpermq $0x93,%ymm12,%ymm12
613 vpand %ymm15,%ymm8,%ymm8
614 vpermq $0x93,%ymm13,%ymm13
616 vpblendd $3,%ymm9,%ymm14,%ymm10
617 vpermq $0x93,%ymm0,%ymm0
618 vpblendd $3,%ymm14,%ymm11,%ymm14
619 vpaddq %ymm10,%ymm4,%ymm4
620 vpblendd $3,%ymm11,%ymm12,%ymm11
621 vpaddq %ymm14,%ymm5,%ymm5
622 vmovdqu %ymm4,128-128(%rdi)
623 vpblendd $3,%ymm12,%ymm13,%ymm12
624 vpaddq %ymm11,%ymm6,%ymm6
625 vmovdqu %ymm5,160-128(%rdi)
626 vpblendd $3,%ymm13,%ymm0,%ymm13
627 vpaddq %ymm12,%ymm7,%ymm7
628 vmovdqu %ymm6,192-128(%rdi)
629 vpaddq %ymm13,%ymm8,%ymm8
630 vmovdqu %ymm7,224-128(%rdi)
631 vmovdqu %ymm8,256-128(%rdi)
635 jne .LOOP_GRANDE_SQR_1024
639 .cfi_def_cfa_register %rax
653 .cfi_def_cfa_register %rsp
657 .size rsaz_1024_sqr_avx2,.-rsaz_1024_sqr_avx2
658 .globl rsaz_1024_mul_avx2
659 .type rsaz_1024_mul_avx2,@function
664 .cfi_def_cfa_register %rax
678 .cfi_def_cfa_register %rbp
706 jz .Lmul_1024_no_n_copy
713 vmovdqu 0-128(%rcx),%ymm0
715 vmovdqu 32-128(%rcx),%ymm1
716 vmovdqu 64-128(%rcx),%ymm2
717 vmovdqu 96-128(%rcx),%ymm3
718 vmovdqu 128-128(%rcx),%ymm4
719 vmovdqu 160-128(%rcx),%ymm5
720 vmovdqu 192-128(%rcx),%ymm6
721 vmovdqu 224-128(%rcx),%ymm7
722 vmovdqu 256-128(%rcx),%ymm8
723 leaq 64+128(%rsp),%rcx
724 vmovdqu %ymm0,0-128(%rcx)
725 vpxor %ymm0,%ymm0,%ymm0
726 vmovdqu %ymm1,32-128(%rcx)
727 vpxor %ymm1,%ymm1,%ymm1
728 vmovdqu %ymm2,64-128(%rcx)
729 vpxor %ymm2,%ymm2,%ymm2
730 vmovdqu %ymm3,96-128(%rcx)
731 vpxor %ymm3,%ymm3,%ymm3
732 vmovdqu %ymm4,128-128(%rcx)
733 vpxor %ymm4,%ymm4,%ymm4
734 vmovdqu %ymm5,160-128(%rcx)
735 vpxor %ymm5,%ymm5,%ymm5
736 vmovdqu %ymm6,192-128(%rcx)
737 vpxor %ymm6,%ymm6,%ymm6
738 vmovdqu %ymm7,224-128(%rcx)
739 vpxor %ymm7,%ymm7,%ymm7
740 vmovdqu %ymm8,256-128(%rcx)
742 vmovdqu %ymm9,288-128(%rcx)
743 .Lmul_1024_no_n_copy:
747 vpbroadcastq (%r13),%ymm10
755 vmovdqu .Land_mask(%rip),%ymm15
757 vmovdqu %ymm9,288-128(%rdi)
762 vpsrlq $29,%ymm3,%ymm9
764 imulq -128(%rsi),%rax
767 imulq 8-128(%rsi),%r10
772 andl $0x1fffffff,%eax
775 imulq 16-128(%rsi),%r11
779 imulq 24-128(%rsi),%r12
781 vpmuludq 32-128(%rsi),%ymm10,%ymm0
783 vpaddq %ymm0,%ymm1,%ymm1
784 vpmuludq 64-128(%rsi),%ymm10,%ymm12
785 vpbroadcastq %xmm11,%ymm11
786 vpaddq %ymm12,%ymm2,%ymm2
787 vpmuludq 96-128(%rsi),%ymm10,%ymm13
788 vpand %ymm15,%ymm3,%ymm3
789 vpaddq %ymm13,%ymm3,%ymm3
790 vpmuludq 128-128(%rsi),%ymm10,%ymm0
791 vpaddq %ymm0,%ymm4,%ymm4
792 vpmuludq 160-128(%rsi),%ymm10,%ymm12
793 vpaddq %ymm12,%ymm5,%ymm5
794 vpmuludq 192-128(%rsi),%ymm10,%ymm13
795 vpaddq %ymm13,%ymm6,%ymm6
796 vpmuludq 224-128(%rsi),%ymm10,%ymm0
797 vpermq $0x93,%ymm9,%ymm9
798 vpaddq %ymm0,%ymm7,%ymm7
799 vpmuludq 256-128(%rsi),%ymm10,%ymm12
800 vpbroadcastq 8(%r13),%ymm10
801 vpaddq %ymm12,%ymm8,%ymm8
804 imulq -128(%rcx),%rax
807 imulq 8-128(%rcx),%rax
810 imulq 16-128(%rcx),%rax
813 imulq 24-128(%rcx),%rdx
817 vpmuludq 32-128(%rcx),%ymm11,%ymm13
819 vpaddq %ymm13,%ymm1,%ymm1
820 vpmuludq 64-128(%rcx),%ymm11,%ymm0
821 vpaddq %ymm0,%ymm2,%ymm2
822 vpmuludq 96-128(%rcx),%ymm11,%ymm12
823 vpaddq %ymm12,%ymm3,%ymm3
824 vpmuludq 128-128(%rcx),%ymm11,%ymm13
825 vpaddq %ymm13,%ymm4,%ymm4
826 vpmuludq 160-128(%rcx),%ymm11,%ymm0
827 vpaddq %ymm0,%ymm5,%ymm5
828 vpmuludq 192-128(%rcx),%ymm11,%ymm12
829 vpaddq %ymm12,%ymm6,%ymm6
830 vpmuludq 224-128(%rcx),%ymm11,%ymm13
831 vpblendd $3,%ymm14,%ymm9,%ymm12
832 vpaddq %ymm13,%ymm7,%ymm7
833 vpmuludq 256-128(%rcx),%ymm11,%ymm0
834 vpaddq %ymm12,%ymm3,%ymm3
835 vpaddq %ymm0,%ymm8,%ymm8
838 imulq -128(%rsi),%rax
840 vmovdqu -8+32-128(%rsi),%ymm12
842 imulq 8-128(%rsi),%rax
844 vmovdqu -8+64-128(%rsi),%ymm13
847 vpblendd $0xfc,%ymm14,%ymm9,%ymm9
849 vpaddq %ymm9,%ymm4,%ymm4
850 andl $0x1fffffff,%eax
852 imulq 16-128(%rsi),%rbx
854 vpmuludq %ymm10,%ymm12,%ymm12
856 vmovdqu -8+96-128(%rsi),%ymm0
857 vpaddq %ymm12,%ymm1,%ymm1
858 vpmuludq %ymm10,%ymm13,%ymm13
859 vpbroadcastq %xmm11,%ymm11
860 vmovdqu -8+128-128(%rsi),%ymm12
861 vpaddq %ymm13,%ymm2,%ymm2
862 vpmuludq %ymm10,%ymm0,%ymm0
863 vmovdqu -8+160-128(%rsi),%ymm13
864 vpaddq %ymm0,%ymm3,%ymm3
865 vpmuludq %ymm10,%ymm12,%ymm12
866 vmovdqu -8+192-128(%rsi),%ymm0
867 vpaddq %ymm12,%ymm4,%ymm4
868 vpmuludq %ymm10,%ymm13,%ymm13
869 vmovdqu -8+224-128(%rsi),%ymm12
870 vpaddq %ymm13,%ymm5,%ymm5
871 vpmuludq %ymm10,%ymm0,%ymm0
872 vmovdqu -8+256-128(%rsi),%ymm13
873 vpaddq %ymm0,%ymm6,%ymm6
874 vpmuludq %ymm10,%ymm12,%ymm12
875 vmovdqu -8+288-128(%rsi),%ymm9
876 vpaddq %ymm12,%ymm7,%ymm7
877 vpmuludq %ymm10,%ymm13,%ymm13
878 vpaddq %ymm13,%ymm8,%ymm8
879 vpmuludq %ymm10,%ymm9,%ymm9
880 vpbroadcastq 16(%r13),%ymm10
883 imulq -128(%rcx),%rax
885 vmovdqu -8+32-128(%rcx),%ymm0
887 imulq 8-128(%rcx),%rax
889 vmovdqu -8+64-128(%rcx),%ymm12
891 imulq 16-128(%rcx),%rdx
895 vpmuludq %ymm11,%ymm0,%ymm0
897 vmovdqu -8+96-128(%rcx),%ymm13
898 vpaddq %ymm0,%ymm1,%ymm1
899 vpmuludq %ymm11,%ymm12,%ymm12
900 vmovdqu -8+128-128(%rcx),%ymm0
901 vpaddq %ymm12,%ymm2,%ymm2
902 vpmuludq %ymm11,%ymm13,%ymm13
903 vmovdqu -8+160-128(%rcx),%ymm12
904 vpaddq %ymm13,%ymm3,%ymm3
905 vpmuludq %ymm11,%ymm0,%ymm0
906 vmovdqu -8+192-128(%rcx),%ymm13
907 vpaddq %ymm0,%ymm4,%ymm4
908 vpmuludq %ymm11,%ymm12,%ymm12
909 vmovdqu -8+224-128(%rcx),%ymm0
910 vpaddq %ymm12,%ymm5,%ymm5
911 vpmuludq %ymm11,%ymm13,%ymm13
912 vmovdqu -8+256-128(%rcx),%ymm12
913 vpaddq %ymm13,%ymm6,%ymm6
914 vpmuludq %ymm11,%ymm0,%ymm0
915 vmovdqu -8+288-128(%rcx),%ymm13
916 vpaddq %ymm0,%ymm7,%ymm7
917 vpmuludq %ymm11,%ymm12,%ymm12
918 vpaddq %ymm12,%ymm8,%ymm8
919 vpmuludq %ymm11,%ymm13,%ymm13
920 vpaddq %ymm13,%ymm9,%ymm9
922 vmovdqu -16+32-128(%rsi),%ymm0
924 imulq -128(%rsi),%rax
927 vmovdqu -16+64-128(%rsi),%ymm12
930 andl $0x1fffffff,%eax
932 imulq 8-128(%rsi),%rbx
934 vpmuludq %ymm10,%ymm0,%ymm0
936 vmovdqu -16+96-128(%rsi),%ymm13
937 vpaddq %ymm0,%ymm1,%ymm1
938 vpmuludq %ymm10,%ymm12,%ymm12
939 vpbroadcastq %xmm11,%ymm11
940 vmovdqu -16+128-128(%rsi),%ymm0
941 vpaddq %ymm12,%ymm2,%ymm2
942 vpmuludq %ymm10,%ymm13,%ymm13
943 vmovdqu -16+160-128(%rsi),%ymm12
944 vpaddq %ymm13,%ymm3,%ymm3
945 vpmuludq %ymm10,%ymm0,%ymm0
946 vmovdqu -16+192-128(%rsi),%ymm13
947 vpaddq %ymm0,%ymm4,%ymm4
948 vpmuludq %ymm10,%ymm12,%ymm12
949 vmovdqu -16+224-128(%rsi),%ymm0
950 vpaddq %ymm12,%ymm5,%ymm5
951 vpmuludq %ymm10,%ymm13,%ymm13
952 vmovdqu -16+256-128(%rsi),%ymm12
953 vpaddq %ymm13,%ymm6,%ymm6
954 vpmuludq %ymm10,%ymm0,%ymm0
955 vmovdqu -16+288-128(%rsi),%ymm13
956 vpaddq %ymm0,%ymm7,%ymm7
957 vpmuludq %ymm10,%ymm12,%ymm12
958 vpaddq %ymm12,%ymm8,%ymm8
959 vpmuludq %ymm10,%ymm13,%ymm13
960 vpbroadcastq 24(%r13),%ymm10
961 vpaddq %ymm13,%ymm9,%ymm9
963 vmovdqu -16+32-128(%rcx),%ymm0
965 imulq -128(%rcx),%rax
967 vmovdqu -16+64-128(%rcx),%ymm12
968 imulq 8-128(%rcx),%rdx
972 vpmuludq %ymm11,%ymm0,%ymm0
974 vmovdqu -16+96-128(%rcx),%ymm13
975 vpaddq %ymm0,%ymm1,%ymm1
976 vpmuludq %ymm11,%ymm12,%ymm12
977 vmovdqu -16+128-128(%rcx),%ymm0
978 vpaddq %ymm12,%ymm2,%ymm2
979 vpmuludq %ymm11,%ymm13,%ymm13
980 vmovdqu -16+160-128(%rcx),%ymm12
981 vpaddq %ymm13,%ymm3,%ymm3
982 vpmuludq %ymm11,%ymm0,%ymm0
983 vmovdqu -16+192-128(%rcx),%ymm13
984 vpaddq %ymm0,%ymm4,%ymm4
985 vpmuludq %ymm11,%ymm12,%ymm12
986 vmovdqu -16+224-128(%rcx),%ymm0
987 vpaddq %ymm12,%ymm5,%ymm5
988 vpmuludq %ymm11,%ymm13,%ymm13
989 vmovdqu -16+256-128(%rcx),%ymm12
990 vpaddq %ymm13,%ymm6,%ymm6
991 vpmuludq %ymm11,%ymm0,%ymm0
992 vmovdqu -16+288-128(%rcx),%ymm13
993 vpaddq %ymm0,%ymm7,%ymm7
994 vpmuludq %ymm11,%ymm12,%ymm12
995 vmovdqu -24+32-128(%rsi),%ymm0
996 vpaddq %ymm12,%ymm8,%ymm8
997 vpmuludq %ymm11,%ymm13,%ymm13
998 vmovdqu -24+64-128(%rsi),%ymm12
999 vpaddq %ymm13,%ymm9,%ymm9
1002 imulq -128(%rsi),%rbx
1007 andl $0x1fffffff,%eax
1009 vpmuludq %ymm10,%ymm0,%ymm0
1011 vmovdqu -24+96-128(%rsi),%ymm13
1012 vpaddq %ymm0,%ymm1,%ymm1
1013 vpmuludq %ymm10,%ymm12,%ymm12
1014 vpbroadcastq %xmm11,%ymm11
1015 vmovdqu -24+128-128(%rsi),%ymm0
1016 vpaddq %ymm12,%ymm2,%ymm2
1017 vpmuludq %ymm10,%ymm13,%ymm13
1018 vmovdqu -24+160-128(%rsi),%ymm12
1019 vpaddq %ymm13,%ymm3,%ymm3
1020 vpmuludq %ymm10,%ymm0,%ymm0
1021 vmovdqu -24+192-128(%rsi),%ymm13
1022 vpaddq %ymm0,%ymm4,%ymm4
1023 vpmuludq %ymm10,%ymm12,%ymm12
1024 vmovdqu -24+224-128(%rsi),%ymm0
1025 vpaddq %ymm12,%ymm5,%ymm5
1026 vpmuludq %ymm10,%ymm13,%ymm13
1027 vmovdqu -24+256-128(%rsi),%ymm12
1028 vpaddq %ymm13,%ymm6,%ymm6
1029 vpmuludq %ymm10,%ymm0,%ymm0
1030 vmovdqu -24+288-128(%rsi),%ymm13
1031 vpaddq %ymm0,%ymm7,%ymm7
1032 vpmuludq %ymm10,%ymm12,%ymm12
1033 vpaddq %ymm12,%ymm8,%ymm8
1034 vpmuludq %ymm10,%ymm13,%ymm13
1035 vpbroadcastq 32(%r13),%ymm10
1036 vpaddq %ymm13,%ymm9,%ymm9
1039 vmovdqu -24+32-128(%rcx),%ymm0
1040 imulq -128(%rcx),%rax
1044 vmovdqu -24+64-128(%rcx),%ymm12
1045 vpmuludq %ymm11,%ymm0,%ymm0
1047 vmovdqu -24+96-128(%rcx),%ymm13
1048 vpaddq %ymm0,%ymm1,%ymm0
1049 vpmuludq %ymm11,%ymm12,%ymm12
1050 vmovdqu %ymm0,(%rsp)
1051 vpaddq %ymm12,%ymm2,%ymm1
1052 vmovdqu -24+128-128(%rcx),%ymm0
1053 vpmuludq %ymm11,%ymm13,%ymm13
1054 vmovdqu -24+160-128(%rcx),%ymm12
1055 vpaddq %ymm13,%ymm3,%ymm2
1056 vpmuludq %ymm11,%ymm0,%ymm0
1057 vmovdqu -24+192-128(%rcx),%ymm13
1058 vpaddq %ymm0,%ymm4,%ymm3
1059 vpmuludq %ymm11,%ymm12,%ymm12
1060 vmovdqu -24+224-128(%rcx),%ymm0
1061 vpaddq %ymm12,%ymm5,%ymm4
1062 vpmuludq %ymm11,%ymm13,%ymm13
1063 vmovdqu -24+256-128(%rcx),%ymm12
1064 vpaddq %ymm13,%ymm6,%ymm5
1065 vpmuludq %ymm11,%ymm0,%ymm0
1066 vmovdqu -24+288-128(%rcx),%ymm13
1068 vpaddq %ymm0,%ymm7,%ymm6
1069 vpmuludq %ymm11,%ymm12,%ymm12
1071 vpaddq %ymm12,%ymm8,%ymm7
1072 vpmuludq %ymm11,%ymm13,%ymm13
1074 vpaddq %ymm13,%ymm9,%ymm8
1078 vpaddq (%rsp),%ymm12,%ymm0
1080 vpsrlq $29,%ymm0,%ymm12
1081 vpand %ymm15,%ymm0,%ymm0
1082 vpsrlq $29,%ymm1,%ymm13
1083 vpand %ymm15,%ymm1,%ymm1
1084 vpsrlq $29,%ymm2,%ymm10
1085 vpermq $0x93,%ymm12,%ymm12
1086 vpand %ymm15,%ymm2,%ymm2
1087 vpsrlq $29,%ymm3,%ymm11
1088 vpermq $0x93,%ymm13,%ymm13
1089 vpand %ymm15,%ymm3,%ymm3
1091 vpblendd $3,%ymm14,%ymm12,%ymm9
1092 vpermq $0x93,%ymm10,%ymm10
1093 vpblendd $3,%ymm12,%ymm13,%ymm12
1094 vpermq $0x93,%ymm11,%ymm11
1095 vpaddq %ymm9,%ymm0,%ymm0
1096 vpblendd $3,%ymm13,%ymm10,%ymm13
1097 vpaddq %ymm12,%ymm1,%ymm1
1098 vpblendd $3,%ymm10,%ymm11,%ymm10
1099 vpaddq %ymm13,%ymm2,%ymm2
1100 vpblendd $3,%ymm11,%ymm14,%ymm11
1101 vpaddq %ymm10,%ymm3,%ymm3
1102 vpaddq %ymm11,%ymm4,%ymm4
1104 vpsrlq $29,%ymm0,%ymm12
1105 vpand %ymm15,%ymm0,%ymm0
1106 vpsrlq $29,%ymm1,%ymm13
1107 vpand %ymm15,%ymm1,%ymm1
1108 vpsrlq $29,%ymm2,%ymm10
1109 vpermq $0x93,%ymm12,%ymm12
1110 vpand %ymm15,%ymm2,%ymm2
1111 vpsrlq $29,%ymm3,%ymm11
1112 vpermq $0x93,%ymm13,%ymm13
1113 vpand %ymm15,%ymm3,%ymm3
1114 vpermq $0x93,%ymm10,%ymm10
1116 vpblendd $3,%ymm14,%ymm12,%ymm9
1117 vpermq $0x93,%ymm11,%ymm11
1118 vpblendd $3,%ymm12,%ymm13,%ymm12
1119 vpaddq %ymm9,%ymm0,%ymm0
1120 vpblendd $3,%ymm13,%ymm10,%ymm13
1121 vpaddq %ymm12,%ymm1,%ymm1
1122 vpblendd $3,%ymm10,%ymm11,%ymm10
1123 vpaddq %ymm13,%ymm2,%ymm2
1124 vpblendd $3,%ymm11,%ymm14,%ymm11
1125 vpaddq %ymm10,%ymm3,%ymm3
1126 vpaddq %ymm11,%ymm4,%ymm4
1128 vmovdqu %ymm0,0-128(%rdi)
1129 vmovdqu %ymm1,32-128(%rdi)
1130 vmovdqu %ymm2,64-128(%rdi)
1131 vmovdqu %ymm3,96-128(%rdi)
1132 vpsrlq $29,%ymm4,%ymm12
1133 vpand %ymm15,%ymm4,%ymm4
1134 vpsrlq $29,%ymm5,%ymm13
1135 vpand %ymm15,%ymm5,%ymm5
1136 vpsrlq $29,%ymm6,%ymm10
1137 vpermq $0x93,%ymm12,%ymm12
1138 vpand %ymm15,%ymm6,%ymm6
1139 vpsrlq $29,%ymm7,%ymm11
1140 vpermq $0x93,%ymm13,%ymm13
1141 vpand %ymm15,%ymm7,%ymm7
1142 vpsrlq $29,%ymm8,%ymm0
1143 vpermq $0x93,%ymm10,%ymm10
1144 vpand %ymm15,%ymm8,%ymm8
1145 vpermq $0x93,%ymm11,%ymm11
1147 vpblendd $3,%ymm14,%ymm12,%ymm9
1148 vpermq $0x93,%ymm0,%ymm0
1149 vpblendd $3,%ymm12,%ymm13,%ymm12
1150 vpaddq %ymm9,%ymm4,%ymm4
1151 vpblendd $3,%ymm13,%ymm10,%ymm13
1152 vpaddq %ymm12,%ymm5,%ymm5
1153 vpblendd $3,%ymm10,%ymm11,%ymm10
1154 vpaddq %ymm13,%ymm6,%ymm6
1155 vpblendd $3,%ymm11,%ymm0,%ymm11
1156 vpaddq %ymm10,%ymm7,%ymm7
1157 vpaddq %ymm11,%ymm8,%ymm8
1159 vpsrlq $29,%ymm4,%ymm12
1160 vpand %ymm15,%ymm4,%ymm4
1161 vpsrlq $29,%ymm5,%ymm13
1162 vpand %ymm15,%ymm5,%ymm5
1163 vpsrlq $29,%ymm6,%ymm10
1164 vpermq $0x93,%ymm12,%ymm12
1165 vpand %ymm15,%ymm6,%ymm6
1166 vpsrlq $29,%ymm7,%ymm11
1167 vpermq $0x93,%ymm13,%ymm13
1168 vpand %ymm15,%ymm7,%ymm7
1169 vpsrlq $29,%ymm8,%ymm0
1170 vpermq $0x93,%ymm10,%ymm10
1171 vpand %ymm15,%ymm8,%ymm8
1172 vpermq $0x93,%ymm11,%ymm11
1174 vpblendd $3,%ymm14,%ymm12,%ymm9
1175 vpermq $0x93,%ymm0,%ymm0
1176 vpblendd $3,%ymm12,%ymm13,%ymm12
1177 vpaddq %ymm9,%ymm4,%ymm4
1178 vpblendd $3,%ymm13,%ymm10,%ymm13
1179 vpaddq %ymm12,%ymm5,%ymm5
1180 vpblendd $3,%ymm10,%ymm11,%ymm10
1181 vpaddq %ymm13,%ymm6,%ymm6
1182 vpblendd $3,%ymm11,%ymm0,%ymm11
1183 vpaddq %ymm10,%ymm7,%ymm7
1184 vpaddq %ymm11,%ymm8,%ymm8
1186 vmovdqu %ymm4,128-128(%rdi)
1187 vmovdqu %ymm5,160-128(%rdi)
1188 vmovdqu %ymm6,192-128(%rdi)
1189 vmovdqu %ymm7,224-128(%rdi)
1190 vmovdqu %ymm8,256-128(%rdi)
1194 .cfi_def_cfa_register %rax
1208 .cfi_def_cfa_register %rsp
1209 .Lmul_1024_epilogue:
1212 .size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2
1213 .globl rsaz_1024_red2norm_avx2
1214 .type rsaz_1024_red2norm_avx2,@function
1216 rsaz_1024_red2norm_avx2:
1221 movq -112(%rsi),%r10
1408 .size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2
1410 .globl rsaz_1024_norm2red_avx2
1411 .type rsaz_1024_norm2red_avx2,@function
1413 rsaz_1024_norm2red_avx2:
1416 movl $0x1fffffff,%eax
1421 movq %r11,-128(%rdi)
1425 movq %r10,-120(%rdi)
1566 .size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2
1567 .globl rsaz_1024_scatter5_avx2
1568 .type rsaz_1024_scatter5_avx2,@function
1570 rsaz_1024_scatter5_avx2:
1572 vmovdqu .Lscatter_permd(%rip),%ymm5
1574 leaq (%rdi,%rdx,1),%rdi
1576 jmp .Loop_scatter_1024
1580 vmovdqu (%rsi),%ymm0
1582 vpermd %ymm0,%ymm5,%ymm0
1583 vmovdqu %xmm0,(%rdi)
1586 jnz .Loop_scatter_1024
1590 .size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2
1592 .globl rsaz_1024_gather5_avx2
1593 .type rsaz_1024_gather5_avx2,@function
1595 rsaz_1024_gather5_avx2:
1599 .cfi_def_cfa_register %r11
1600 leaq -256(%rsp),%rsp
1602 leaq .Linc(%rip),%r10
1603 leaq -128(%rsp),%rax
1606 vmovdqa (%r10),%ymm0
1607 vmovdqa 32(%r10),%ymm1
1608 vmovdqa 64(%r10),%ymm5
1609 vpbroadcastd %xmm4,%ymm4
1611 vpaddd %ymm5,%ymm0,%ymm2
1612 vpcmpeqd %ymm4,%ymm0,%ymm0
1613 vpaddd %ymm5,%ymm1,%ymm3
1614 vpcmpeqd %ymm4,%ymm1,%ymm1
1615 vmovdqa %ymm0,0+128(%rax)
1616 vpaddd %ymm5,%ymm2,%ymm0
1617 vpcmpeqd %ymm4,%ymm2,%ymm2
1618 vmovdqa %ymm1,32+128(%rax)
1619 vpaddd %ymm5,%ymm3,%ymm1
1620 vpcmpeqd %ymm4,%ymm3,%ymm3
1621 vmovdqa %ymm2,64+128(%rax)
1622 vpaddd %ymm5,%ymm0,%ymm2
1623 vpcmpeqd %ymm4,%ymm0,%ymm0
1624 vmovdqa %ymm3,96+128(%rax)
1625 vpaddd %ymm5,%ymm1,%ymm3
1626 vpcmpeqd %ymm4,%ymm1,%ymm1
1627 vmovdqa %ymm0,128+128(%rax)
1628 vpaddd %ymm5,%ymm2,%ymm8
1629 vpcmpeqd %ymm4,%ymm2,%ymm2
1630 vmovdqa %ymm1,160+128(%rax)
1631 vpaddd %ymm5,%ymm3,%ymm9
1632 vpcmpeqd %ymm4,%ymm3,%ymm3
1633 vmovdqa %ymm2,192+128(%rax)
1634 vpaddd %ymm5,%ymm8,%ymm10
1635 vpcmpeqd %ymm4,%ymm8,%ymm8
1636 vmovdqa %ymm3,224+128(%rax)
1637 vpaddd %ymm5,%ymm9,%ymm11
1638 vpcmpeqd %ymm4,%ymm9,%ymm9
1639 vpaddd %ymm5,%ymm10,%ymm12
1640 vpcmpeqd %ymm4,%ymm10,%ymm10
1641 vpaddd %ymm5,%ymm11,%ymm13
1642 vpcmpeqd %ymm4,%ymm11,%ymm11
1643 vpaddd %ymm5,%ymm12,%ymm14
1644 vpcmpeqd %ymm4,%ymm12,%ymm12
1645 vpaddd %ymm5,%ymm13,%ymm15
1646 vpcmpeqd %ymm4,%ymm13,%ymm13
1647 vpcmpeqd %ymm4,%ymm14,%ymm14
1648 vpcmpeqd %ymm4,%ymm15,%ymm15
1650 vmovdqa -32(%r10),%ymm7
1655 vmovdqa 0-128(%rsi),%ymm0
1656 vmovdqa 32-128(%rsi),%ymm1
1657 vmovdqa 64-128(%rsi),%ymm2
1658 vmovdqa 96-128(%rsi),%ymm3
1659 vpand 0+128(%rax),%ymm0,%ymm0
1660 vpand 32+128(%rax),%ymm1,%ymm1
1661 vpand 64+128(%rax),%ymm2,%ymm2
1662 vpor %ymm0,%ymm1,%ymm4
1663 vpand 96+128(%rax),%ymm3,%ymm3
1664 vmovdqa 128-128(%rsi),%ymm0
1665 vmovdqa 160-128(%rsi),%ymm1
1666 vpor %ymm2,%ymm3,%ymm5
1667 vmovdqa 192-128(%rsi),%ymm2
1668 vmovdqa 224-128(%rsi),%ymm3
1669 vpand 128+128(%rax),%ymm0,%ymm0
1670 vpand 160+128(%rax),%ymm1,%ymm1
1671 vpand 192+128(%rax),%ymm2,%ymm2
1672 vpor %ymm0,%ymm4,%ymm4
1673 vpand 224+128(%rax),%ymm3,%ymm3
1674 vpand 256-128(%rsi),%ymm8,%ymm0
1675 vpor %ymm1,%ymm5,%ymm5
1676 vpand 288-128(%rsi),%ymm9,%ymm1
1677 vpor %ymm2,%ymm4,%ymm4
1678 vpand 320-128(%rsi),%ymm10,%ymm2
1679 vpor %ymm3,%ymm5,%ymm5
1680 vpand 352-128(%rsi),%ymm11,%ymm3
1681 vpor %ymm0,%ymm4,%ymm4
1682 vpand 384-128(%rsi),%ymm12,%ymm0
1683 vpor %ymm1,%ymm5,%ymm5
1684 vpand 416-128(%rsi),%ymm13,%ymm1
1685 vpor %ymm2,%ymm4,%ymm4
1686 vpand 448-128(%rsi),%ymm14,%ymm2
1687 vpor %ymm3,%ymm5,%ymm5
1688 vpand 480-128(%rsi),%ymm15,%ymm3
1690 vpor %ymm0,%ymm4,%ymm4
1691 vpor %ymm1,%ymm5,%ymm5
1692 vpor %ymm2,%ymm4,%ymm4
1693 vpor %ymm3,%ymm5,%ymm5
1695 vpor %ymm5,%ymm4,%ymm4
1696 vextracti128 $1,%ymm4,%xmm5
1697 vpor %xmm4,%xmm5,%xmm5
1698 vpermd %ymm5,%ymm7,%ymm5
1699 vmovdqu %ymm5,(%rdi)
1702 jnz .Loop_gather_1024
1704 vpxor %ymm0,%ymm0,%ymm0
1705 vmovdqu %ymm0,(%rdi)
1708 .cfi_def_cfa_register %rsp
1711 .LSEH_end_rsaz_1024_gather5:
1712 .size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2
1714 .globl rsaz_avx2_eligible
1715 .type rsaz_avx2_eligible,@function
1718 movl OPENSSL_ia32cap_P+8(%rip),%eax
1727 .size rsaz_avx2_eligible,.-rsaz_avx2_eligible
1731 .quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff
1733 .long 0,2,4,6,7,7,7,7
1735 .long 0,7,1,7,2,7,3,7
1737 .long 0,0,0,0, 1,1,1,1
1738 .long 2,2,2,2, 3,3,3,3
1739 .long 4,4,4,4, 4,4,4,4