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
28 vpxor %ymm9,%ymm9,%ymm9
29 jz .Lsqr_1024_no_n_copy
36 vmovdqu 0-128(%r13),%ymm0
38 vmovdqu 32-128(%r13),%ymm1
39 vmovdqu 64-128(%r13),%ymm2
40 vmovdqu 96-128(%r13),%ymm3
41 vmovdqu 128-128(%r13),%ymm4
42 vmovdqu 160-128(%r13),%ymm5
43 vmovdqu 192-128(%r13),%ymm6
44 vmovdqu 224-128(%r13),%ymm7
45 vmovdqu 256-128(%r13),%ymm8
46 leaq 832+128(%rsp),%r13
47 vmovdqu %ymm0,0-128(%r13)
48 vmovdqu %ymm1,32-128(%r13)
49 vmovdqu %ymm2,64-128(%r13)
50 vmovdqu %ymm3,96-128(%r13)
51 vmovdqu %ymm4,128-128(%r13)
52 vmovdqu %ymm5,160-128(%r13)
53 vmovdqu %ymm6,192-128(%r13)
54 vmovdqu %ymm7,224-128(%r13)
55 vmovdqu %ymm8,256-128(%r13)
56 vmovdqu %ymm9,288-128(%r13)
61 vmovdqu 32-128(%rsi),%ymm1
62 vmovdqu 64-128(%rsi),%ymm2
63 vmovdqu 96-128(%rsi),%ymm3
64 vmovdqu 128-128(%rsi),%ymm4
65 vmovdqu 160-128(%rsi),%ymm5
66 vmovdqu 192-128(%rsi),%ymm6
67 vmovdqu 224-128(%rsi),%ymm7
68 vmovdqu 256-128(%rsi),%ymm8
71 vmovdqu .Land_mask(%rip),%ymm15
72 jmp .LOOP_GRANDE_SQR_1024
75 .LOOP_GRANDE_SQR_1024:
76 leaq 576+128(%rsp),%r9
82 vpaddq %ymm1,%ymm1,%ymm1
83 vpbroadcastq 0-128(%rsi),%ymm10
84 vpaddq %ymm2,%ymm2,%ymm2
85 vmovdqa %ymm1,0-128(%r9)
86 vpaddq %ymm3,%ymm3,%ymm3
87 vmovdqa %ymm2,32-128(%r9)
88 vpaddq %ymm4,%ymm4,%ymm4
89 vmovdqa %ymm3,64-128(%r9)
90 vpaddq %ymm5,%ymm5,%ymm5
91 vmovdqa %ymm4,96-128(%r9)
92 vpaddq %ymm6,%ymm6,%ymm6
93 vmovdqa %ymm5,128-128(%r9)
94 vpaddq %ymm7,%ymm7,%ymm7
95 vmovdqa %ymm6,160-128(%r9)
96 vpaddq %ymm8,%ymm8,%ymm8
97 vmovdqa %ymm7,192-128(%r9)
98 vpxor %ymm9,%ymm9,%ymm9
99 vmovdqa %ymm8,224-128(%r9)
101 vpmuludq 0-128(%rsi),%ymm10,%ymm0
102 vpbroadcastq 32-128(%rsi),%ymm11
103 vmovdqu %ymm9,288-192(%rbx)
104 vpmuludq %ymm10,%ymm1,%ymm1
105 vmovdqu %ymm9,320-448(%r12)
106 vpmuludq %ymm10,%ymm2,%ymm2
107 vmovdqu %ymm9,352-448(%r12)
108 vpmuludq %ymm10,%ymm3,%ymm3
109 vmovdqu %ymm9,384-448(%r12)
110 vpmuludq %ymm10,%ymm4,%ymm4
111 vmovdqu %ymm9,416-448(%r12)
112 vpmuludq %ymm10,%ymm5,%ymm5
113 vmovdqu %ymm9,448-448(%r12)
114 vpmuludq %ymm10,%ymm6,%ymm6
115 vmovdqu %ymm9,480-448(%r12)
116 vpmuludq %ymm10,%ymm7,%ymm7
117 vmovdqu %ymm9,512-448(%r12)
118 vpmuludq %ymm10,%ymm8,%ymm8
119 vpbroadcastq 64-128(%rsi),%ymm10
120 vmovdqu %ymm9,544-448(%r12)
127 vpbroadcastq 32-128(%r15),%ymm11
128 vpmuludq 0-128(%rsi),%ymm10,%ymm0
129 vpaddq 0-192(%rbx),%ymm0,%ymm0
130 vpmuludq 0-128(%r9),%ymm10,%ymm1
131 vpaddq 32-192(%rbx),%ymm1,%ymm1
132 vpmuludq 32-128(%r9),%ymm10,%ymm2
133 vpaddq 64-192(%rbx),%ymm2,%ymm2
134 vpmuludq 64-128(%r9),%ymm10,%ymm3
135 vpaddq 96-192(%rbx),%ymm3,%ymm3
136 vpmuludq 96-128(%r9),%ymm10,%ymm4
137 vpaddq 128-192(%rbx),%ymm4,%ymm4
138 vpmuludq 128-128(%r9),%ymm10,%ymm5
139 vpaddq 160-192(%rbx),%ymm5,%ymm5
140 vpmuludq 160-128(%r9),%ymm10,%ymm6
141 vpaddq 192-192(%rbx),%ymm6,%ymm6
142 vpmuludq 192-128(%r9),%ymm10,%ymm7
143 vpaddq 224-192(%rbx),%ymm7,%ymm7
144 vpmuludq 224-128(%r9),%ymm10,%ymm8
145 vpbroadcastq 64-128(%r15),%ymm10
146 vpaddq 256-192(%rbx),%ymm8,%ymm8
148 vmovdqu %ymm0,0-192(%rbx)
149 vmovdqu %ymm1,32-192(%rbx)
151 vpmuludq 32-128(%rsi),%ymm11,%ymm12
152 vpaddq %ymm12,%ymm2,%ymm2
153 vpmuludq 32-128(%r9),%ymm11,%ymm14
154 vpaddq %ymm14,%ymm3,%ymm3
155 vpmuludq 64-128(%r9),%ymm11,%ymm13
156 vpaddq %ymm13,%ymm4,%ymm4
157 vpmuludq 96-128(%r9),%ymm11,%ymm12
158 vpaddq %ymm12,%ymm5,%ymm5
159 vpmuludq 128-128(%r9),%ymm11,%ymm14
160 vpaddq %ymm14,%ymm6,%ymm6
161 vpmuludq 160-128(%r9),%ymm11,%ymm13
162 vpaddq %ymm13,%ymm7,%ymm7
163 vpmuludq 192-128(%r9),%ymm11,%ymm12
164 vpaddq %ymm12,%ymm8,%ymm8
165 vpmuludq 224-128(%r9),%ymm11,%ymm0
166 vpbroadcastq 96-128(%r15),%ymm11
167 vpaddq 288-192(%rbx),%ymm0,%ymm0
169 vmovdqu %ymm2,64-192(%rbx)
170 vmovdqu %ymm3,96-192(%rbx)
172 vpmuludq 64-128(%rsi),%ymm10,%ymm13
173 vpaddq %ymm13,%ymm4,%ymm4
174 vpmuludq 64-128(%r9),%ymm10,%ymm12
175 vpaddq %ymm12,%ymm5,%ymm5
176 vpmuludq 96-128(%r9),%ymm10,%ymm14
177 vpaddq %ymm14,%ymm6,%ymm6
178 vpmuludq 128-128(%r9),%ymm10,%ymm13
179 vpaddq %ymm13,%ymm7,%ymm7
180 vpmuludq 160-128(%r9),%ymm10,%ymm12
181 vpaddq %ymm12,%ymm8,%ymm8
182 vpmuludq 192-128(%r9),%ymm10,%ymm14
183 vpaddq %ymm14,%ymm0,%ymm0
184 vpmuludq 224-128(%r9),%ymm10,%ymm1
185 vpbroadcastq 128-128(%r15),%ymm10
186 vpaddq 320-448(%r12),%ymm1,%ymm1
188 vmovdqu %ymm4,128-192(%rbx)
189 vmovdqu %ymm5,160-192(%rbx)
191 vpmuludq 96-128(%rsi),%ymm11,%ymm12
192 vpaddq %ymm12,%ymm6,%ymm6
193 vpmuludq 96-128(%r9),%ymm11,%ymm14
194 vpaddq %ymm14,%ymm7,%ymm7
195 vpmuludq 128-128(%r9),%ymm11,%ymm13
196 vpaddq %ymm13,%ymm8,%ymm8
197 vpmuludq 160-128(%r9),%ymm11,%ymm12
198 vpaddq %ymm12,%ymm0,%ymm0
199 vpmuludq 192-128(%r9),%ymm11,%ymm14
200 vpaddq %ymm14,%ymm1,%ymm1
201 vpmuludq 224-128(%r9),%ymm11,%ymm2
202 vpbroadcastq 160-128(%r15),%ymm11
203 vpaddq 352-448(%r12),%ymm2,%ymm2
205 vmovdqu %ymm6,192-192(%rbx)
206 vmovdqu %ymm7,224-192(%rbx)
208 vpmuludq 128-128(%rsi),%ymm10,%ymm12
209 vpaddq %ymm12,%ymm8,%ymm8
210 vpmuludq 128-128(%r9),%ymm10,%ymm14
211 vpaddq %ymm14,%ymm0,%ymm0
212 vpmuludq 160-128(%r9),%ymm10,%ymm13
213 vpaddq %ymm13,%ymm1,%ymm1
214 vpmuludq 192-128(%r9),%ymm10,%ymm12
215 vpaddq %ymm12,%ymm2,%ymm2
216 vpmuludq 224-128(%r9),%ymm10,%ymm3
217 vpbroadcastq 192-128(%r15),%ymm10
218 vpaddq 384-448(%r12),%ymm3,%ymm3
220 vmovdqu %ymm8,256-192(%rbx)
221 vmovdqu %ymm0,288-192(%rbx)
224 vpmuludq 160-128(%rsi),%ymm11,%ymm13
225 vpaddq %ymm13,%ymm1,%ymm1
226 vpmuludq 160-128(%r9),%ymm11,%ymm12
227 vpaddq %ymm12,%ymm2,%ymm2
228 vpmuludq 192-128(%r9),%ymm11,%ymm14
229 vpaddq %ymm14,%ymm3,%ymm3
230 vpmuludq 224-128(%r9),%ymm11,%ymm4
231 vpbroadcastq 224-128(%r15),%ymm11
232 vpaddq 416-448(%r12),%ymm4,%ymm4
234 vmovdqu %ymm1,320-448(%r12)
235 vmovdqu %ymm2,352-448(%r12)
237 vpmuludq 192-128(%rsi),%ymm10,%ymm12
238 vpaddq %ymm12,%ymm3,%ymm3
239 vpmuludq 192-128(%r9),%ymm10,%ymm14
240 vpbroadcastq 256-128(%r15),%ymm0
241 vpaddq %ymm14,%ymm4,%ymm4
242 vpmuludq 224-128(%r9),%ymm10,%ymm5
243 vpbroadcastq 0+8-128(%r15),%ymm10
244 vpaddq 448-448(%r12),%ymm5,%ymm5
246 vmovdqu %ymm3,384-448(%r12)
247 vmovdqu %ymm4,416-448(%r12)
250 vpmuludq 224-128(%rsi),%ymm11,%ymm12
251 vpaddq %ymm12,%ymm5,%ymm5
252 vpmuludq 224-128(%r9),%ymm11,%ymm6
253 vpaddq 480-448(%r12),%ymm6,%ymm6
255 vpmuludq 256-128(%rsi),%ymm0,%ymm7
256 vmovdqu %ymm5,448-448(%r12)
257 vpaddq 512-448(%r12),%ymm7,%ymm7
258 vmovdqu %ymm6,480-448(%r12)
259 vmovdqu %ymm7,512-448(%r12)
265 vmovdqu 256(%rsp),%ymm8
266 vmovdqu 288(%rsp),%ymm1
267 vmovdqu 320(%rsp),%ymm2
270 vpsrlq $29,%ymm8,%ymm14
271 vpand %ymm15,%ymm8,%ymm8
272 vpsrlq $29,%ymm1,%ymm11
273 vpand %ymm15,%ymm1,%ymm1
275 vpermq $0x93,%ymm14,%ymm14
276 vpxor %ymm9,%ymm9,%ymm9
277 vpermq $0x93,%ymm11,%ymm11
279 vpblendd $3,%ymm9,%ymm14,%ymm10
280 vpblendd $3,%ymm14,%ymm11,%ymm14
281 vpaddq %ymm10,%ymm8,%ymm8
282 vpblendd $3,%ymm11,%ymm9,%ymm11
283 vpaddq %ymm14,%ymm1,%ymm1
284 vpaddq %ymm11,%ymm2,%ymm2
285 vmovdqu %ymm1,288-192(%rbx)
286 vmovdqu %ymm2,320-192(%rbx)
292 vmovdqu 32(%rsp),%ymm1
293 vmovdqu 64-192(%rbx),%ymm2
294 vmovdqu 96-192(%rbx),%ymm3
295 vmovdqu 128-192(%rbx),%ymm4
296 vmovdqu 160-192(%rbx),%ymm5
297 vmovdqu 192-192(%rbx),%ymm6
298 vmovdqu 224-192(%rbx),%ymm7
302 andl $0x1fffffff,%eax
306 imulq -128(%r13),%rax
307 vpbroadcastq %xmm12,%ymm12
310 imulq 8-128(%r13),%rax
314 imulq 16-128(%r13),%rax
317 imulq 24-128(%r13),%rdx
322 andl $0x1fffffff,%eax
325 jmp .LOOP_REDUCE_1024
330 vpbroadcastq %xmm13,%ymm13
332 vpmuludq 32-128(%r13),%ymm12,%ymm10
334 imulq -128(%r13),%rax
335 vpaddq %ymm10,%ymm1,%ymm1
337 vpmuludq 64-128(%r13),%ymm12,%ymm14
339 imulq 8-128(%r13),%rax
340 vpaddq %ymm14,%ymm2,%ymm2
341 vpmuludq 96-128(%r13),%ymm12,%ymm11
346 imulq 16-128(%r13),%rax
348 vpaddq %ymm11,%ymm3,%ymm3
349 vpmuludq 128-128(%r13),%ymm12,%ymm10
352 vpaddq %ymm10,%ymm4,%ymm4
353 vpmuludq 160-128(%r13),%ymm12,%ymm14
356 vpaddq %ymm14,%ymm5,%ymm5
357 vpmuludq 192-128(%r13),%ymm12,%ymm11
358 andl $0x1fffffff,%eax
359 vpaddq %ymm11,%ymm6,%ymm6
360 vpmuludq 224-128(%r13),%ymm12,%ymm10
361 vpaddq %ymm10,%ymm7,%ymm7
362 vpmuludq 256-128(%r13),%ymm12,%ymm14
365 vpaddq %ymm14,%ymm8,%ymm8
367 vpbroadcastq %xmm12,%ymm12
369 vpmuludq 32-8-128(%r13),%ymm13,%ymm11
370 vmovdqu 96-8-128(%r13),%ymm14
372 imulq -128(%r13),%rax
373 vpaddq %ymm11,%ymm1,%ymm1
374 vpmuludq 64-8-128(%r13),%ymm13,%ymm10
375 vmovdqu 128-8-128(%r13),%ymm11
378 imulq 8-128(%r13),%rax
379 vpaddq %ymm10,%ymm2,%ymm2
382 vpmuludq %ymm13,%ymm14,%ymm14
383 vmovdqu 160-8-128(%r13),%ymm10
385 vpaddq %ymm14,%ymm3,%ymm3
386 vpmuludq %ymm13,%ymm11,%ymm11
387 vmovdqu 192-8-128(%r13),%ymm14
391 vpaddq %ymm11,%ymm4,%ymm4
392 vpmuludq %ymm13,%ymm10,%ymm10
393 .byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00
394 andl $0x1fffffff,%eax
395 vpaddq %ymm10,%ymm5,%ymm5
396 vpmuludq %ymm13,%ymm14,%ymm14
397 vmovdqu 256-8-128(%r13),%ymm10
398 vpaddq %ymm14,%ymm6,%ymm6
399 vpmuludq %ymm13,%ymm11,%ymm11
400 vmovdqu 288-8-128(%r13),%ymm9
402 imulq -128(%r13),%rax
403 vpaddq %ymm11,%ymm7,%ymm7
404 vpmuludq %ymm13,%ymm10,%ymm10
405 vmovdqu 32-16-128(%r13),%ymm14
406 vpbroadcastq %xmm0,%ymm0
407 vpaddq %ymm10,%ymm8,%ymm8
408 vpmuludq %ymm13,%ymm9,%ymm9
409 vmovdqu 64-16-128(%r13),%ymm11
412 vmovdqu 32-24-128(%r13),%ymm13
413 vpmuludq %ymm12,%ymm14,%ymm14
414 vmovdqu 96-16-128(%r13),%ymm10
415 vpaddq %ymm14,%ymm1,%ymm1
416 vpmuludq %ymm0,%ymm13,%ymm13
417 vpmuludq %ymm12,%ymm11,%ymm11
418 .byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff
419 vpaddq %ymm1,%ymm13,%ymm13
420 vpaddq %ymm11,%ymm2,%ymm2
421 vpmuludq %ymm12,%ymm10,%ymm10
422 vmovdqu 160-16-128(%r13),%ymm11
425 vmovdqu %ymm13,(%rsp)
426 vpaddq %ymm10,%ymm3,%ymm3
427 vpmuludq %ymm12,%ymm14,%ymm14
428 vmovdqu 192-16-128(%r13),%ymm10
429 vpaddq %ymm14,%ymm4,%ymm4
430 vpmuludq %ymm12,%ymm11,%ymm11
431 vmovdqu 224-16-128(%r13),%ymm14
432 vpaddq %ymm11,%ymm5,%ymm5
433 vpmuludq %ymm12,%ymm10,%ymm10
434 vmovdqu 256-16-128(%r13),%ymm11
435 vpaddq %ymm10,%ymm6,%ymm6
436 vpmuludq %ymm12,%ymm14,%ymm14
438 vmovdqu 288-16-128(%r13),%ymm10
440 vpaddq %ymm14,%ymm7,%ymm7
441 vpmuludq %ymm12,%ymm11,%ymm11
445 vpaddq %ymm11,%ymm8,%ymm8
446 vpmuludq %ymm12,%ymm10,%ymm10
447 andl $0x1fffffff,%eax
449 vmovdqu 96-24-128(%r13),%ymm11
451 vpaddq %ymm10,%ymm9,%ymm9
452 vpbroadcastq %xmm12,%ymm12
454 vpmuludq 64-24-128(%r13),%ymm0,%ymm14
455 vmovdqu 128-24-128(%r13),%ymm10
457 imulq -128(%r13),%rax
459 vpaddq %ymm14,%ymm2,%ymm1
460 vpmuludq %ymm0,%ymm11,%ymm11
461 vmovdqu 160-24-128(%r13),%ymm14
464 imulq 8-128(%r13),%rax
468 vpaddq %ymm11,%ymm3,%ymm2
469 vpmuludq %ymm0,%ymm10,%ymm10
470 vmovdqu 192-24-128(%r13),%ymm11
473 imulq 16-128(%r13),%rax
474 vpaddq %ymm10,%ymm4,%ymm3
475 vpmuludq %ymm0,%ymm14,%ymm14
476 vmovdqu 224-24-128(%r13),%ymm10
477 imulq 24-128(%r13),%rdx
479 leaq (%r9,%r10,1),%rax
480 vpaddq %ymm14,%ymm5,%ymm4
481 vpmuludq %ymm0,%ymm11,%ymm11
482 vmovdqu 256-24-128(%r13),%ymm14
485 vpmuludq %ymm0,%ymm10,%ymm10
486 vpaddq %ymm11,%ymm6,%ymm5
487 vmovdqu 288-24-128(%r13),%ymm11
488 andl $0x1fffffff,%eax
489 vpaddq %ymm10,%ymm7,%ymm6
490 vpmuludq %ymm0,%ymm14,%ymm14
492 vpaddq %ymm14,%ymm8,%ymm7
493 vpmuludq %ymm0,%ymm11,%ymm11
494 vpaddq %ymm11,%ymm9,%ymm8
499 jnz .LOOP_REDUCE_1024
501 vpaddq %ymm9,%ymm13,%ymm0
502 vpxor %ymm9,%ymm9,%ymm9
504 vpaddq 288-192(%rbx),%ymm0,%ymm0
505 vpaddq 320-448(%r12),%ymm1,%ymm1
506 vpaddq 352-448(%r12),%ymm2,%ymm2
507 vpaddq 384-448(%r12),%ymm3,%ymm3
508 vpaddq 416-448(%r12),%ymm4,%ymm4
509 vpaddq 448-448(%r12),%ymm5,%ymm5
510 vpaddq 480-448(%r12),%ymm6,%ymm6
511 vpaddq 512-448(%r12),%ymm7,%ymm7
512 vpaddq 544-448(%r12),%ymm8,%ymm8
514 vpsrlq $29,%ymm0,%ymm14
515 vpand %ymm15,%ymm0,%ymm0
516 vpsrlq $29,%ymm1,%ymm11
517 vpand %ymm15,%ymm1,%ymm1
518 vpsrlq $29,%ymm2,%ymm12
519 vpermq $0x93,%ymm14,%ymm14
520 vpand %ymm15,%ymm2,%ymm2
521 vpsrlq $29,%ymm3,%ymm13
522 vpermq $0x93,%ymm11,%ymm11
523 vpand %ymm15,%ymm3,%ymm3
524 vpermq $0x93,%ymm12,%ymm12
526 vpblendd $3,%ymm9,%ymm14,%ymm10
527 vpermq $0x93,%ymm13,%ymm13
528 vpblendd $3,%ymm14,%ymm11,%ymm14
529 vpaddq %ymm10,%ymm0,%ymm0
530 vpblendd $3,%ymm11,%ymm12,%ymm11
531 vpaddq %ymm14,%ymm1,%ymm1
532 vpblendd $3,%ymm12,%ymm13,%ymm12
533 vpaddq %ymm11,%ymm2,%ymm2
534 vpblendd $3,%ymm13,%ymm9,%ymm13
535 vpaddq %ymm12,%ymm3,%ymm3
536 vpaddq %ymm13,%ymm4,%ymm4
538 vpsrlq $29,%ymm0,%ymm14
539 vpand %ymm15,%ymm0,%ymm0
540 vpsrlq $29,%ymm1,%ymm11
541 vpand %ymm15,%ymm1,%ymm1
542 vpsrlq $29,%ymm2,%ymm12
543 vpermq $0x93,%ymm14,%ymm14
544 vpand %ymm15,%ymm2,%ymm2
545 vpsrlq $29,%ymm3,%ymm13
546 vpermq $0x93,%ymm11,%ymm11
547 vpand %ymm15,%ymm3,%ymm3
548 vpermq $0x93,%ymm12,%ymm12
550 vpblendd $3,%ymm9,%ymm14,%ymm10
551 vpermq $0x93,%ymm13,%ymm13
552 vpblendd $3,%ymm14,%ymm11,%ymm14
553 vpaddq %ymm10,%ymm0,%ymm0
554 vpblendd $3,%ymm11,%ymm12,%ymm11
555 vpaddq %ymm14,%ymm1,%ymm1
556 vmovdqu %ymm0,0-128(%rdi)
557 vpblendd $3,%ymm12,%ymm13,%ymm12
558 vpaddq %ymm11,%ymm2,%ymm2
559 vmovdqu %ymm1,32-128(%rdi)
560 vpblendd $3,%ymm13,%ymm9,%ymm13
561 vpaddq %ymm12,%ymm3,%ymm3
562 vmovdqu %ymm2,64-128(%rdi)
563 vpaddq %ymm13,%ymm4,%ymm4
564 vmovdqu %ymm3,96-128(%rdi)
565 vpsrlq $29,%ymm4,%ymm14
566 vpand %ymm15,%ymm4,%ymm4
567 vpsrlq $29,%ymm5,%ymm11
568 vpand %ymm15,%ymm5,%ymm5
569 vpsrlq $29,%ymm6,%ymm12
570 vpermq $0x93,%ymm14,%ymm14
571 vpand %ymm15,%ymm6,%ymm6
572 vpsrlq $29,%ymm7,%ymm13
573 vpermq $0x93,%ymm11,%ymm11
574 vpand %ymm15,%ymm7,%ymm7
575 vpsrlq $29,%ymm8,%ymm0
576 vpermq $0x93,%ymm12,%ymm12
577 vpand %ymm15,%ymm8,%ymm8
578 vpermq $0x93,%ymm13,%ymm13
580 vpblendd $3,%ymm9,%ymm14,%ymm10
581 vpermq $0x93,%ymm0,%ymm0
582 vpblendd $3,%ymm14,%ymm11,%ymm14
583 vpaddq %ymm10,%ymm4,%ymm4
584 vpblendd $3,%ymm11,%ymm12,%ymm11
585 vpaddq %ymm14,%ymm5,%ymm5
586 vpblendd $3,%ymm12,%ymm13,%ymm12
587 vpaddq %ymm11,%ymm6,%ymm6
588 vpblendd $3,%ymm13,%ymm0,%ymm13
589 vpaddq %ymm12,%ymm7,%ymm7
590 vpaddq %ymm13,%ymm8,%ymm8
592 vpsrlq $29,%ymm4,%ymm14
593 vpand %ymm15,%ymm4,%ymm4
594 vpsrlq $29,%ymm5,%ymm11
595 vpand %ymm15,%ymm5,%ymm5
596 vpsrlq $29,%ymm6,%ymm12
597 vpermq $0x93,%ymm14,%ymm14
598 vpand %ymm15,%ymm6,%ymm6
599 vpsrlq $29,%ymm7,%ymm13
600 vpermq $0x93,%ymm11,%ymm11
601 vpand %ymm15,%ymm7,%ymm7
602 vpsrlq $29,%ymm8,%ymm0
603 vpermq $0x93,%ymm12,%ymm12
604 vpand %ymm15,%ymm8,%ymm8
605 vpermq $0x93,%ymm13,%ymm13
607 vpblendd $3,%ymm9,%ymm14,%ymm10
608 vpermq $0x93,%ymm0,%ymm0
609 vpblendd $3,%ymm14,%ymm11,%ymm14
610 vpaddq %ymm10,%ymm4,%ymm4
611 vpblendd $3,%ymm11,%ymm12,%ymm11
612 vpaddq %ymm14,%ymm5,%ymm5
613 vmovdqu %ymm4,128-128(%rdi)
614 vpblendd $3,%ymm12,%ymm13,%ymm12
615 vpaddq %ymm11,%ymm6,%ymm6
616 vmovdqu %ymm5,160-128(%rdi)
617 vpblendd $3,%ymm13,%ymm0,%ymm13
618 vpaddq %ymm12,%ymm7,%ymm7
619 vmovdqu %ymm6,192-128(%rdi)
620 vpaddq %ymm13,%ymm8,%ymm8
621 vmovdqu %ymm7,224-128(%rdi)
622 vmovdqu %ymm8,256-128(%rdi)
626 jne .LOOP_GRANDE_SQR_1024
639 .size rsaz_1024_sqr_avx2,.-rsaz_1024_sqr_avx2
640 .globl rsaz_1024_mul_avx2
641 .type rsaz_1024_mul_avx2,@function
679 jz .Lmul_1024_no_n_copy
686 vmovdqu 0-128(%rcx),%ymm0
688 vmovdqu 32-128(%rcx),%ymm1
689 vmovdqu 64-128(%rcx),%ymm2
690 vmovdqu 96-128(%rcx),%ymm3
691 vmovdqu 128-128(%rcx),%ymm4
692 vmovdqu 160-128(%rcx),%ymm5
693 vmovdqu 192-128(%rcx),%ymm6
694 vmovdqu 224-128(%rcx),%ymm7
695 vmovdqu 256-128(%rcx),%ymm8
696 leaq 64+128(%rsp),%rcx
697 vmovdqu %ymm0,0-128(%rcx)
698 vpxor %ymm0,%ymm0,%ymm0
699 vmovdqu %ymm1,32-128(%rcx)
700 vpxor %ymm1,%ymm1,%ymm1
701 vmovdqu %ymm2,64-128(%rcx)
702 vpxor %ymm2,%ymm2,%ymm2
703 vmovdqu %ymm3,96-128(%rcx)
704 vpxor %ymm3,%ymm3,%ymm3
705 vmovdqu %ymm4,128-128(%rcx)
706 vpxor %ymm4,%ymm4,%ymm4
707 vmovdqu %ymm5,160-128(%rcx)
708 vpxor %ymm5,%ymm5,%ymm5
709 vmovdqu %ymm6,192-128(%rcx)
710 vpxor %ymm6,%ymm6,%ymm6
711 vmovdqu %ymm7,224-128(%rcx)
712 vpxor %ymm7,%ymm7,%ymm7
713 vmovdqu %ymm8,256-128(%rcx)
715 vmovdqu %ymm9,288-128(%rcx)
716 .Lmul_1024_no_n_copy:
720 vpbroadcastq (%r13),%ymm10
728 vmovdqu .Land_mask(%rip),%ymm15
730 vmovdqu %ymm9,288-128(%rdi)
735 vpsrlq $29,%ymm3,%ymm9
737 imulq -128(%rsi),%rax
740 imulq 8-128(%rsi),%r10
745 andl $0x1fffffff,%eax
748 imulq 16-128(%rsi),%r11
752 imulq 24-128(%rsi),%r12
754 vpmuludq 32-128(%rsi),%ymm10,%ymm0
756 vpaddq %ymm0,%ymm1,%ymm1
757 vpmuludq 64-128(%rsi),%ymm10,%ymm12
758 vpbroadcastq %xmm11,%ymm11
759 vpaddq %ymm12,%ymm2,%ymm2
760 vpmuludq 96-128(%rsi),%ymm10,%ymm13
761 vpand %ymm15,%ymm3,%ymm3
762 vpaddq %ymm13,%ymm3,%ymm3
763 vpmuludq 128-128(%rsi),%ymm10,%ymm0
764 vpaddq %ymm0,%ymm4,%ymm4
765 vpmuludq 160-128(%rsi),%ymm10,%ymm12
766 vpaddq %ymm12,%ymm5,%ymm5
767 vpmuludq 192-128(%rsi),%ymm10,%ymm13
768 vpaddq %ymm13,%ymm6,%ymm6
769 vpmuludq 224-128(%rsi),%ymm10,%ymm0
770 vpermq $0x93,%ymm9,%ymm9
771 vpaddq %ymm0,%ymm7,%ymm7
772 vpmuludq 256-128(%rsi),%ymm10,%ymm12
773 vpbroadcastq 8(%r13),%ymm10
774 vpaddq %ymm12,%ymm8,%ymm8
777 imulq -128(%rcx),%rax
780 imulq 8-128(%rcx),%rax
783 imulq 16-128(%rcx),%rax
786 imulq 24-128(%rcx),%rdx
790 vpmuludq 32-128(%rcx),%ymm11,%ymm13
792 vpaddq %ymm13,%ymm1,%ymm1
793 vpmuludq 64-128(%rcx),%ymm11,%ymm0
794 vpaddq %ymm0,%ymm2,%ymm2
795 vpmuludq 96-128(%rcx),%ymm11,%ymm12
796 vpaddq %ymm12,%ymm3,%ymm3
797 vpmuludq 128-128(%rcx),%ymm11,%ymm13
798 vpaddq %ymm13,%ymm4,%ymm4
799 vpmuludq 160-128(%rcx),%ymm11,%ymm0
800 vpaddq %ymm0,%ymm5,%ymm5
801 vpmuludq 192-128(%rcx),%ymm11,%ymm12
802 vpaddq %ymm12,%ymm6,%ymm6
803 vpmuludq 224-128(%rcx),%ymm11,%ymm13
804 vpblendd $3,%ymm14,%ymm9,%ymm12
805 vpaddq %ymm13,%ymm7,%ymm7
806 vpmuludq 256-128(%rcx),%ymm11,%ymm0
807 vpaddq %ymm12,%ymm3,%ymm3
808 vpaddq %ymm0,%ymm8,%ymm8
811 imulq -128(%rsi),%rax
813 vmovdqu -8+32-128(%rsi),%ymm12
815 imulq 8-128(%rsi),%rax
817 vmovdqu -8+64-128(%rsi),%ymm13
820 vpblendd $0xfc,%ymm14,%ymm9,%ymm9
822 vpaddq %ymm9,%ymm4,%ymm4
823 andl $0x1fffffff,%eax
825 imulq 16-128(%rsi),%rbx
827 vpmuludq %ymm10,%ymm12,%ymm12
829 vmovdqu -8+96-128(%rsi),%ymm0
830 vpaddq %ymm12,%ymm1,%ymm1
831 vpmuludq %ymm10,%ymm13,%ymm13
832 vpbroadcastq %xmm11,%ymm11
833 vmovdqu -8+128-128(%rsi),%ymm12
834 vpaddq %ymm13,%ymm2,%ymm2
835 vpmuludq %ymm10,%ymm0,%ymm0
836 vmovdqu -8+160-128(%rsi),%ymm13
837 vpaddq %ymm0,%ymm3,%ymm3
838 vpmuludq %ymm10,%ymm12,%ymm12
839 vmovdqu -8+192-128(%rsi),%ymm0
840 vpaddq %ymm12,%ymm4,%ymm4
841 vpmuludq %ymm10,%ymm13,%ymm13
842 vmovdqu -8+224-128(%rsi),%ymm12
843 vpaddq %ymm13,%ymm5,%ymm5
844 vpmuludq %ymm10,%ymm0,%ymm0
845 vmovdqu -8+256-128(%rsi),%ymm13
846 vpaddq %ymm0,%ymm6,%ymm6
847 vpmuludq %ymm10,%ymm12,%ymm12
848 vmovdqu -8+288-128(%rsi),%ymm9
849 vpaddq %ymm12,%ymm7,%ymm7
850 vpmuludq %ymm10,%ymm13,%ymm13
851 vpaddq %ymm13,%ymm8,%ymm8
852 vpmuludq %ymm10,%ymm9,%ymm9
853 vpbroadcastq 16(%r13),%ymm10
856 imulq -128(%rcx),%rax
858 vmovdqu -8+32-128(%rcx),%ymm0
860 imulq 8-128(%rcx),%rax
862 vmovdqu -8+64-128(%rcx),%ymm12
864 imulq 16-128(%rcx),%rdx
868 vpmuludq %ymm11,%ymm0,%ymm0
870 vmovdqu -8+96-128(%rcx),%ymm13
871 vpaddq %ymm0,%ymm1,%ymm1
872 vpmuludq %ymm11,%ymm12,%ymm12
873 vmovdqu -8+128-128(%rcx),%ymm0
874 vpaddq %ymm12,%ymm2,%ymm2
875 vpmuludq %ymm11,%ymm13,%ymm13
876 vmovdqu -8+160-128(%rcx),%ymm12
877 vpaddq %ymm13,%ymm3,%ymm3
878 vpmuludq %ymm11,%ymm0,%ymm0
879 vmovdqu -8+192-128(%rcx),%ymm13
880 vpaddq %ymm0,%ymm4,%ymm4
881 vpmuludq %ymm11,%ymm12,%ymm12
882 vmovdqu -8+224-128(%rcx),%ymm0
883 vpaddq %ymm12,%ymm5,%ymm5
884 vpmuludq %ymm11,%ymm13,%ymm13
885 vmovdqu -8+256-128(%rcx),%ymm12
886 vpaddq %ymm13,%ymm6,%ymm6
887 vpmuludq %ymm11,%ymm0,%ymm0
888 vmovdqu -8+288-128(%rcx),%ymm13
889 vpaddq %ymm0,%ymm7,%ymm7
890 vpmuludq %ymm11,%ymm12,%ymm12
891 vpaddq %ymm12,%ymm8,%ymm8
892 vpmuludq %ymm11,%ymm13,%ymm13
893 vpaddq %ymm13,%ymm9,%ymm9
895 vmovdqu -16+32-128(%rsi),%ymm0
897 imulq -128(%rsi),%rax
900 vmovdqu -16+64-128(%rsi),%ymm12
903 andl $0x1fffffff,%eax
905 imulq 8-128(%rsi),%rbx
907 vpmuludq %ymm10,%ymm0,%ymm0
909 vmovdqu -16+96-128(%rsi),%ymm13
910 vpaddq %ymm0,%ymm1,%ymm1
911 vpmuludq %ymm10,%ymm12,%ymm12
912 vpbroadcastq %xmm11,%ymm11
913 vmovdqu -16+128-128(%rsi),%ymm0
914 vpaddq %ymm12,%ymm2,%ymm2
915 vpmuludq %ymm10,%ymm13,%ymm13
916 vmovdqu -16+160-128(%rsi),%ymm12
917 vpaddq %ymm13,%ymm3,%ymm3
918 vpmuludq %ymm10,%ymm0,%ymm0
919 vmovdqu -16+192-128(%rsi),%ymm13
920 vpaddq %ymm0,%ymm4,%ymm4
921 vpmuludq %ymm10,%ymm12,%ymm12
922 vmovdqu -16+224-128(%rsi),%ymm0
923 vpaddq %ymm12,%ymm5,%ymm5
924 vpmuludq %ymm10,%ymm13,%ymm13
925 vmovdqu -16+256-128(%rsi),%ymm12
926 vpaddq %ymm13,%ymm6,%ymm6
927 vpmuludq %ymm10,%ymm0,%ymm0
928 vmovdqu -16+288-128(%rsi),%ymm13
929 vpaddq %ymm0,%ymm7,%ymm7
930 vpmuludq %ymm10,%ymm12,%ymm12
931 vpaddq %ymm12,%ymm8,%ymm8
932 vpmuludq %ymm10,%ymm13,%ymm13
933 vpbroadcastq 24(%r13),%ymm10
934 vpaddq %ymm13,%ymm9,%ymm9
936 vmovdqu -16+32-128(%rcx),%ymm0
938 imulq -128(%rcx),%rax
940 vmovdqu -16+64-128(%rcx),%ymm12
941 imulq 8-128(%rcx),%rdx
945 vpmuludq %ymm11,%ymm0,%ymm0
947 vmovdqu -16+96-128(%rcx),%ymm13
948 vpaddq %ymm0,%ymm1,%ymm1
949 vpmuludq %ymm11,%ymm12,%ymm12
950 vmovdqu -16+128-128(%rcx),%ymm0
951 vpaddq %ymm12,%ymm2,%ymm2
952 vpmuludq %ymm11,%ymm13,%ymm13
953 vmovdqu -16+160-128(%rcx),%ymm12
954 vpaddq %ymm13,%ymm3,%ymm3
955 vpmuludq %ymm11,%ymm0,%ymm0
956 vmovdqu -16+192-128(%rcx),%ymm13
957 vpaddq %ymm0,%ymm4,%ymm4
958 vpmuludq %ymm11,%ymm12,%ymm12
959 vmovdqu -16+224-128(%rcx),%ymm0
960 vpaddq %ymm12,%ymm5,%ymm5
961 vpmuludq %ymm11,%ymm13,%ymm13
962 vmovdqu -16+256-128(%rcx),%ymm12
963 vpaddq %ymm13,%ymm6,%ymm6
964 vpmuludq %ymm11,%ymm0,%ymm0
965 vmovdqu -16+288-128(%rcx),%ymm13
966 vpaddq %ymm0,%ymm7,%ymm7
967 vpmuludq %ymm11,%ymm12,%ymm12
968 vmovdqu -24+32-128(%rsi),%ymm0
969 vpaddq %ymm12,%ymm8,%ymm8
970 vpmuludq %ymm11,%ymm13,%ymm13
971 vmovdqu -24+64-128(%rsi),%ymm12
972 vpaddq %ymm13,%ymm9,%ymm9
975 imulq -128(%rsi),%rbx
980 andl $0x1fffffff,%eax
982 vpmuludq %ymm10,%ymm0,%ymm0
984 vmovdqu -24+96-128(%rsi),%ymm13
985 vpaddq %ymm0,%ymm1,%ymm1
986 vpmuludq %ymm10,%ymm12,%ymm12
987 vpbroadcastq %xmm11,%ymm11
988 vmovdqu -24+128-128(%rsi),%ymm0
989 vpaddq %ymm12,%ymm2,%ymm2
990 vpmuludq %ymm10,%ymm13,%ymm13
991 vmovdqu -24+160-128(%rsi),%ymm12
992 vpaddq %ymm13,%ymm3,%ymm3
993 vpmuludq %ymm10,%ymm0,%ymm0
994 vmovdqu -24+192-128(%rsi),%ymm13
995 vpaddq %ymm0,%ymm4,%ymm4
996 vpmuludq %ymm10,%ymm12,%ymm12
997 vmovdqu -24+224-128(%rsi),%ymm0
998 vpaddq %ymm12,%ymm5,%ymm5
999 vpmuludq %ymm10,%ymm13,%ymm13
1000 vmovdqu -24+256-128(%rsi),%ymm12
1001 vpaddq %ymm13,%ymm6,%ymm6
1002 vpmuludq %ymm10,%ymm0,%ymm0
1003 vmovdqu -24+288-128(%rsi),%ymm13
1004 vpaddq %ymm0,%ymm7,%ymm7
1005 vpmuludq %ymm10,%ymm12,%ymm12
1006 vpaddq %ymm12,%ymm8,%ymm8
1007 vpmuludq %ymm10,%ymm13,%ymm13
1008 vpbroadcastq 32(%r13),%ymm10
1009 vpaddq %ymm13,%ymm9,%ymm9
1012 vmovdqu -24+32-128(%rcx),%ymm0
1013 imulq -128(%rcx),%rax
1017 vmovdqu -24+64-128(%rcx),%ymm12
1018 vpmuludq %ymm11,%ymm0,%ymm0
1020 vmovdqu -24+96-128(%rcx),%ymm13
1021 vpaddq %ymm0,%ymm1,%ymm0
1022 vpmuludq %ymm11,%ymm12,%ymm12
1023 vmovdqu %ymm0,(%rsp)
1024 vpaddq %ymm12,%ymm2,%ymm1
1025 vmovdqu -24+128-128(%rcx),%ymm0
1026 vpmuludq %ymm11,%ymm13,%ymm13
1027 vmovdqu -24+160-128(%rcx),%ymm12
1028 vpaddq %ymm13,%ymm3,%ymm2
1029 vpmuludq %ymm11,%ymm0,%ymm0
1030 vmovdqu -24+192-128(%rcx),%ymm13
1031 vpaddq %ymm0,%ymm4,%ymm3
1032 vpmuludq %ymm11,%ymm12,%ymm12
1033 vmovdqu -24+224-128(%rcx),%ymm0
1034 vpaddq %ymm12,%ymm5,%ymm4
1035 vpmuludq %ymm11,%ymm13,%ymm13
1036 vmovdqu -24+256-128(%rcx),%ymm12
1037 vpaddq %ymm13,%ymm6,%ymm5
1038 vpmuludq %ymm11,%ymm0,%ymm0
1039 vmovdqu -24+288-128(%rcx),%ymm13
1041 vpaddq %ymm0,%ymm7,%ymm6
1042 vpmuludq %ymm11,%ymm12,%ymm12
1044 vpaddq %ymm12,%ymm8,%ymm7
1045 vpmuludq %ymm11,%ymm13,%ymm13
1047 vpaddq %ymm13,%ymm9,%ymm8
1051 vpaddq (%rsp),%ymm12,%ymm0
1053 vpsrlq $29,%ymm0,%ymm12
1054 vpand %ymm15,%ymm0,%ymm0
1055 vpsrlq $29,%ymm1,%ymm13
1056 vpand %ymm15,%ymm1,%ymm1
1057 vpsrlq $29,%ymm2,%ymm10
1058 vpermq $0x93,%ymm12,%ymm12
1059 vpand %ymm15,%ymm2,%ymm2
1060 vpsrlq $29,%ymm3,%ymm11
1061 vpermq $0x93,%ymm13,%ymm13
1062 vpand %ymm15,%ymm3,%ymm3
1064 vpblendd $3,%ymm14,%ymm12,%ymm9
1065 vpermq $0x93,%ymm10,%ymm10
1066 vpblendd $3,%ymm12,%ymm13,%ymm12
1067 vpermq $0x93,%ymm11,%ymm11
1068 vpaddq %ymm9,%ymm0,%ymm0
1069 vpblendd $3,%ymm13,%ymm10,%ymm13
1070 vpaddq %ymm12,%ymm1,%ymm1
1071 vpblendd $3,%ymm10,%ymm11,%ymm10
1072 vpaddq %ymm13,%ymm2,%ymm2
1073 vpblendd $3,%ymm11,%ymm14,%ymm11
1074 vpaddq %ymm10,%ymm3,%ymm3
1075 vpaddq %ymm11,%ymm4,%ymm4
1077 vpsrlq $29,%ymm0,%ymm12
1078 vpand %ymm15,%ymm0,%ymm0
1079 vpsrlq $29,%ymm1,%ymm13
1080 vpand %ymm15,%ymm1,%ymm1
1081 vpsrlq $29,%ymm2,%ymm10
1082 vpermq $0x93,%ymm12,%ymm12
1083 vpand %ymm15,%ymm2,%ymm2
1084 vpsrlq $29,%ymm3,%ymm11
1085 vpermq $0x93,%ymm13,%ymm13
1086 vpand %ymm15,%ymm3,%ymm3
1087 vpermq $0x93,%ymm10,%ymm10
1089 vpblendd $3,%ymm14,%ymm12,%ymm9
1090 vpermq $0x93,%ymm11,%ymm11
1091 vpblendd $3,%ymm12,%ymm13,%ymm12
1092 vpaddq %ymm9,%ymm0,%ymm0
1093 vpblendd $3,%ymm13,%ymm10,%ymm13
1094 vpaddq %ymm12,%ymm1,%ymm1
1095 vpblendd $3,%ymm10,%ymm11,%ymm10
1096 vpaddq %ymm13,%ymm2,%ymm2
1097 vpblendd $3,%ymm11,%ymm14,%ymm11
1098 vpaddq %ymm10,%ymm3,%ymm3
1099 vpaddq %ymm11,%ymm4,%ymm4
1101 vmovdqu %ymm0,0-128(%rdi)
1102 vmovdqu %ymm1,32-128(%rdi)
1103 vmovdqu %ymm2,64-128(%rdi)
1104 vmovdqu %ymm3,96-128(%rdi)
1105 vpsrlq $29,%ymm4,%ymm12
1106 vpand %ymm15,%ymm4,%ymm4
1107 vpsrlq $29,%ymm5,%ymm13
1108 vpand %ymm15,%ymm5,%ymm5
1109 vpsrlq $29,%ymm6,%ymm10
1110 vpermq $0x93,%ymm12,%ymm12
1111 vpand %ymm15,%ymm6,%ymm6
1112 vpsrlq $29,%ymm7,%ymm11
1113 vpermq $0x93,%ymm13,%ymm13
1114 vpand %ymm15,%ymm7,%ymm7
1115 vpsrlq $29,%ymm8,%ymm0
1116 vpermq $0x93,%ymm10,%ymm10
1117 vpand %ymm15,%ymm8,%ymm8
1118 vpermq $0x93,%ymm11,%ymm11
1120 vpblendd $3,%ymm14,%ymm12,%ymm9
1121 vpermq $0x93,%ymm0,%ymm0
1122 vpblendd $3,%ymm12,%ymm13,%ymm12
1123 vpaddq %ymm9,%ymm4,%ymm4
1124 vpblendd $3,%ymm13,%ymm10,%ymm13
1125 vpaddq %ymm12,%ymm5,%ymm5
1126 vpblendd $3,%ymm10,%ymm11,%ymm10
1127 vpaddq %ymm13,%ymm6,%ymm6
1128 vpblendd $3,%ymm11,%ymm0,%ymm11
1129 vpaddq %ymm10,%ymm7,%ymm7
1130 vpaddq %ymm11,%ymm8,%ymm8
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 vmovdqu %ymm4,128-128(%rdi)
1160 vmovdqu %ymm5,160-128(%rdi)
1161 vmovdqu %ymm6,192-128(%rdi)
1162 vmovdqu %ymm7,224-128(%rdi)
1163 vmovdqu %ymm8,256-128(%rdi)
1174 .Lmul_1024_epilogue:
1176 .size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2
1177 .globl rsaz_1024_red2norm_avx2
1178 .type rsaz_1024_red2norm_avx2,@function
1180 rsaz_1024_red2norm_avx2:
1185 movq -112(%rsi),%r10
1372 .size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2
1374 .globl rsaz_1024_norm2red_avx2
1375 .type rsaz_1024_norm2red_avx2,@function
1377 rsaz_1024_norm2red_avx2:
1380 movl $0x1fffffff,%eax
1385 movq %r11,-128(%rdi)
1389 movq %r10,-120(%rdi)
1530 .size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2
1531 .globl rsaz_1024_scatter5_avx2
1532 .type rsaz_1024_scatter5_avx2,@function
1534 rsaz_1024_scatter5_avx2:
1536 vmovdqu .Lscatter_permd(%rip),%ymm5
1538 leaq (%rdi,%rdx,1),%rdi
1540 jmp .Loop_scatter_1024
1544 vmovdqu (%rsi),%ymm0
1546 vpermd %ymm0,%ymm5,%ymm0
1547 vmovdqu %xmm0,(%rdi)
1550 jnz .Loop_scatter_1024
1554 .size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2
1556 .globl rsaz_1024_gather5_avx2
1557 .type rsaz_1024_gather5_avx2,@function
1559 rsaz_1024_gather5_avx2:
1562 leaq -256(%rsp),%rsp
1564 leaq .Linc(%rip),%r10
1565 leaq -128(%rsp),%rax
1568 vmovdqa (%r10),%ymm0
1569 vmovdqa 32(%r10),%ymm1
1570 vmovdqa 64(%r10),%ymm5
1571 vpbroadcastd %xmm4,%ymm4
1573 vpaddd %ymm5,%ymm0,%ymm2
1574 vpcmpeqd %ymm4,%ymm0,%ymm0
1575 vpaddd %ymm5,%ymm1,%ymm3
1576 vpcmpeqd %ymm4,%ymm1,%ymm1
1577 vmovdqa %ymm0,0+128(%rax)
1578 vpaddd %ymm5,%ymm2,%ymm0
1579 vpcmpeqd %ymm4,%ymm2,%ymm2
1580 vmovdqa %ymm1,32+128(%rax)
1581 vpaddd %ymm5,%ymm3,%ymm1
1582 vpcmpeqd %ymm4,%ymm3,%ymm3
1583 vmovdqa %ymm2,64+128(%rax)
1584 vpaddd %ymm5,%ymm0,%ymm2
1585 vpcmpeqd %ymm4,%ymm0,%ymm0
1586 vmovdqa %ymm3,96+128(%rax)
1587 vpaddd %ymm5,%ymm1,%ymm3
1588 vpcmpeqd %ymm4,%ymm1,%ymm1
1589 vmovdqa %ymm0,128+128(%rax)
1590 vpaddd %ymm5,%ymm2,%ymm8
1591 vpcmpeqd %ymm4,%ymm2,%ymm2
1592 vmovdqa %ymm1,160+128(%rax)
1593 vpaddd %ymm5,%ymm3,%ymm9
1594 vpcmpeqd %ymm4,%ymm3,%ymm3
1595 vmovdqa %ymm2,192+128(%rax)
1596 vpaddd %ymm5,%ymm8,%ymm10
1597 vpcmpeqd %ymm4,%ymm8,%ymm8
1598 vmovdqa %ymm3,224+128(%rax)
1599 vpaddd %ymm5,%ymm9,%ymm11
1600 vpcmpeqd %ymm4,%ymm9,%ymm9
1601 vpaddd %ymm5,%ymm10,%ymm12
1602 vpcmpeqd %ymm4,%ymm10,%ymm10
1603 vpaddd %ymm5,%ymm11,%ymm13
1604 vpcmpeqd %ymm4,%ymm11,%ymm11
1605 vpaddd %ymm5,%ymm12,%ymm14
1606 vpcmpeqd %ymm4,%ymm12,%ymm12
1607 vpaddd %ymm5,%ymm13,%ymm15
1608 vpcmpeqd %ymm4,%ymm13,%ymm13
1609 vpcmpeqd %ymm4,%ymm14,%ymm14
1610 vpcmpeqd %ymm4,%ymm15,%ymm15
1612 vmovdqa -32(%r10),%ymm7
1617 vmovdqa 0-128(%rsi),%ymm0
1618 vmovdqa 32-128(%rsi),%ymm1
1619 vmovdqa 64-128(%rsi),%ymm2
1620 vmovdqa 96-128(%rsi),%ymm3
1621 vpand 0+128(%rax),%ymm0,%ymm0
1622 vpand 32+128(%rax),%ymm1,%ymm1
1623 vpand 64+128(%rax),%ymm2,%ymm2
1624 vpor %ymm0,%ymm1,%ymm4
1625 vpand 96+128(%rax),%ymm3,%ymm3
1626 vmovdqa 128-128(%rsi),%ymm0
1627 vmovdqa 160-128(%rsi),%ymm1
1628 vpor %ymm2,%ymm3,%ymm5
1629 vmovdqa 192-128(%rsi),%ymm2
1630 vmovdqa 224-128(%rsi),%ymm3
1631 vpand 128+128(%rax),%ymm0,%ymm0
1632 vpand 160+128(%rax),%ymm1,%ymm1
1633 vpand 192+128(%rax),%ymm2,%ymm2
1634 vpor %ymm0,%ymm4,%ymm4
1635 vpand 224+128(%rax),%ymm3,%ymm3
1636 vpand 256-128(%rsi),%ymm8,%ymm0
1637 vpor %ymm1,%ymm5,%ymm5
1638 vpand 288-128(%rsi),%ymm9,%ymm1
1639 vpor %ymm2,%ymm4,%ymm4
1640 vpand 320-128(%rsi),%ymm10,%ymm2
1641 vpor %ymm3,%ymm5,%ymm5
1642 vpand 352-128(%rsi),%ymm11,%ymm3
1643 vpor %ymm0,%ymm4,%ymm4
1644 vpand 384-128(%rsi),%ymm12,%ymm0
1645 vpor %ymm1,%ymm5,%ymm5
1646 vpand 416-128(%rsi),%ymm13,%ymm1
1647 vpor %ymm2,%ymm4,%ymm4
1648 vpand 448-128(%rsi),%ymm14,%ymm2
1649 vpor %ymm3,%ymm5,%ymm5
1650 vpand 480-128(%rsi),%ymm15,%ymm3
1652 vpor %ymm0,%ymm4,%ymm4
1653 vpor %ymm1,%ymm5,%ymm5
1654 vpor %ymm2,%ymm4,%ymm4
1655 vpor %ymm3,%ymm5,%ymm5
1657 vpor %ymm5,%ymm4,%ymm4
1658 vextracti128 $1,%ymm4,%xmm5
1659 vpor %xmm4,%xmm5,%xmm5
1660 vpermd %ymm5,%ymm7,%ymm5
1661 vmovdqu %ymm5,(%rdi)
1664 jnz .Loop_gather_1024
1666 vpxor %ymm0,%ymm0,%ymm0
1667 vmovdqu %ymm0,(%rdi)
1671 .size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2
1673 .globl rsaz_avx2_eligible
1674 .type rsaz_avx2_eligible,@function
1677 movl OPENSSL_ia32cap_P+8(%rip),%eax
1686 .size rsaz_avx2_eligible,.-rsaz_avx2_eligible
1690 .quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff
1692 .long 0,2,4,6,7,7,7,7
1694 .long 0,7,1,7,2,7,3,7
1696 .long 0,0,0,0, 1,1,1,1
1697 .long 2,2,2,2, 3,3,3,3
1698 .long 4,4,4,4, 4,4,4,4