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 vpbroadcastq .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,%ymm9
805 vpaddq %ymm13,%ymm7,%ymm7
806 vpmuludq 256-128(%rcx),%ymm11,%ymm0
807 vpaddq %ymm9,%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
821 andl $0x1fffffff,%eax
823 imulq 16-128(%rsi),%rbx
825 vpmuludq %ymm10,%ymm12,%ymm12
827 vmovdqu -8+96-128(%rsi),%ymm0
828 vpaddq %ymm12,%ymm1,%ymm1
829 vpmuludq %ymm10,%ymm13,%ymm13
830 vpbroadcastq %xmm11,%ymm11
831 vmovdqu -8+128-128(%rsi),%ymm12
832 vpaddq %ymm13,%ymm2,%ymm2
833 vpmuludq %ymm10,%ymm0,%ymm0
834 vmovdqu -8+160-128(%rsi),%ymm13
835 vpaddq %ymm0,%ymm3,%ymm3
836 vpmuludq %ymm10,%ymm12,%ymm12
837 vmovdqu -8+192-128(%rsi),%ymm0
838 vpaddq %ymm12,%ymm4,%ymm4
839 vpmuludq %ymm10,%ymm13,%ymm13
840 vmovdqu -8+224-128(%rsi),%ymm12
841 vpaddq %ymm13,%ymm5,%ymm5
842 vpmuludq %ymm10,%ymm0,%ymm0
843 vmovdqu -8+256-128(%rsi),%ymm13
844 vpaddq %ymm0,%ymm6,%ymm6
845 vpmuludq %ymm10,%ymm12,%ymm12
846 vmovdqu -8+288-128(%rsi),%ymm9
847 vpaddq %ymm12,%ymm7,%ymm7
848 vpmuludq %ymm10,%ymm13,%ymm13
849 vpaddq %ymm13,%ymm8,%ymm8
850 vpmuludq %ymm10,%ymm9,%ymm9
851 vpbroadcastq 16(%r13),%ymm10
854 imulq -128(%rcx),%rax
856 vmovdqu -8+32-128(%rcx),%ymm0
858 imulq 8-128(%rcx),%rax
860 vmovdqu -8+64-128(%rcx),%ymm12
862 imulq 16-128(%rcx),%rdx
866 vpmuludq %ymm11,%ymm0,%ymm0
868 vmovdqu -8+96-128(%rcx),%ymm13
869 vpaddq %ymm0,%ymm1,%ymm1
870 vpmuludq %ymm11,%ymm12,%ymm12
871 vmovdqu -8+128-128(%rcx),%ymm0
872 vpaddq %ymm12,%ymm2,%ymm2
873 vpmuludq %ymm11,%ymm13,%ymm13
874 vmovdqu -8+160-128(%rcx),%ymm12
875 vpaddq %ymm13,%ymm3,%ymm3
876 vpmuludq %ymm11,%ymm0,%ymm0
877 vmovdqu -8+192-128(%rcx),%ymm13
878 vpaddq %ymm0,%ymm4,%ymm4
879 vpmuludq %ymm11,%ymm12,%ymm12
880 vmovdqu -8+224-128(%rcx),%ymm0
881 vpaddq %ymm12,%ymm5,%ymm5
882 vpmuludq %ymm11,%ymm13,%ymm13
883 vmovdqu -8+256-128(%rcx),%ymm12
884 vpaddq %ymm13,%ymm6,%ymm6
885 vpmuludq %ymm11,%ymm0,%ymm0
886 vmovdqu -8+288-128(%rcx),%ymm13
887 vpaddq %ymm0,%ymm7,%ymm7
888 vpmuludq %ymm11,%ymm12,%ymm12
889 vpaddq %ymm12,%ymm8,%ymm8
890 vpmuludq %ymm11,%ymm13,%ymm13
891 vpaddq %ymm13,%ymm9,%ymm9
893 vmovdqu -16+32-128(%rsi),%ymm0
895 imulq -128(%rsi),%rax
898 vmovdqu -16+64-128(%rsi),%ymm12
901 andl $0x1fffffff,%eax
903 imulq 8-128(%rsi),%rbx
905 vpmuludq %ymm10,%ymm0,%ymm0
907 vmovdqu -16+96-128(%rsi),%ymm13
908 vpaddq %ymm0,%ymm1,%ymm1
909 vpmuludq %ymm10,%ymm12,%ymm12
910 vpbroadcastq %xmm11,%ymm11
911 vmovdqu -16+128-128(%rsi),%ymm0
912 vpaddq %ymm12,%ymm2,%ymm2
913 vpmuludq %ymm10,%ymm13,%ymm13
914 vmovdqu -16+160-128(%rsi),%ymm12
915 vpaddq %ymm13,%ymm3,%ymm3
916 vpmuludq %ymm10,%ymm0,%ymm0
917 vmovdqu -16+192-128(%rsi),%ymm13
918 vpaddq %ymm0,%ymm4,%ymm4
919 vpmuludq %ymm10,%ymm12,%ymm12
920 vmovdqu -16+224-128(%rsi),%ymm0
921 vpaddq %ymm12,%ymm5,%ymm5
922 vpmuludq %ymm10,%ymm13,%ymm13
923 vmovdqu -16+256-128(%rsi),%ymm12
924 vpaddq %ymm13,%ymm6,%ymm6
925 vpmuludq %ymm10,%ymm0,%ymm0
926 vmovdqu -16+288-128(%rsi),%ymm13
927 vpaddq %ymm0,%ymm7,%ymm7
928 vpmuludq %ymm10,%ymm12,%ymm12
929 vpaddq %ymm12,%ymm8,%ymm8
930 vpmuludq %ymm10,%ymm13,%ymm13
931 vpbroadcastq 24(%r13),%ymm10
932 vpaddq %ymm13,%ymm9,%ymm9
934 vmovdqu -16+32-128(%rcx),%ymm0
936 imulq -128(%rcx),%rax
938 vmovdqu -16+64-128(%rcx),%ymm12
939 imulq 8-128(%rcx),%rdx
943 vpmuludq %ymm11,%ymm0,%ymm0
945 vmovdqu -16+96-128(%rcx),%ymm13
946 vpaddq %ymm0,%ymm1,%ymm1
947 vpmuludq %ymm11,%ymm12,%ymm12
948 vmovdqu -16+128-128(%rcx),%ymm0
949 vpaddq %ymm12,%ymm2,%ymm2
950 vpmuludq %ymm11,%ymm13,%ymm13
951 vmovdqu -16+160-128(%rcx),%ymm12
952 vpaddq %ymm13,%ymm3,%ymm3
953 vpmuludq %ymm11,%ymm0,%ymm0
954 vmovdqu -16+192-128(%rcx),%ymm13
955 vpaddq %ymm0,%ymm4,%ymm4
956 vpmuludq %ymm11,%ymm12,%ymm12
957 vmovdqu -16+224-128(%rcx),%ymm0
958 vpaddq %ymm12,%ymm5,%ymm5
959 vpmuludq %ymm11,%ymm13,%ymm13
960 vmovdqu -16+256-128(%rcx),%ymm12
961 vpaddq %ymm13,%ymm6,%ymm6
962 vpmuludq %ymm11,%ymm0,%ymm0
963 vmovdqu -16+288-128(%rcx),%ymm13
964 vpaddq %ymm0,%ymm7,%ymm7
965 vpmuludq %ymm11,%ymm12,%ymm12
966 vmovdqu -24+32-128(%rsi),%ymm0
967 vpaddq %ymm12,%ymm8,%ymm8
968 vpmuludq %ymm11,%ymm13,%ymm13
969 vmovdqu -24+64-128(%rsi),%ymm12
970 vpaddq %ymm13,%ymm9,%ymm9
973 imulq -128(%rsi),%rbx
978 andl $0x1fffffff,%eax
980 vpmuludq %ymm10,%ymm0,%ymm0
982 vmovdqu -24+96-128(%rsi),%ymm13
983 vpaddq %ymm0,%ymm1,%ymm1
984 vpmuludq %ymm10,%ymm12,%ymm12
985 vpbroadcastq %xmm11,%ymm11
986 vmovdqu -24+128-128(%rsi),%ymm0
987 vpaddq %ymm12,%ymm2,%ymm2
988 vpmuludq %ymm10,%ymm13,%ymm13
989 vmovdqu -24+160-128(%rsi),%ymm12
990 vpaddq %ymm13,%ymm3,%ymm3
991 vpmuludq %ymm10,%ymm0,%ymm0
992 vmovdqu -24+192-128(%rsi),%ymm13
993 vpaddq %ymm0,%ymm4,%ymm4
994 vpmuludq %ymm10,%ymm12,%ymm12
995 vmovdqu -24+224-128(%rsi),%ymm0
996 vpaddq %ymm12,%ymm5,%ymm5
997 vpmuludq %ymm10,%ymm13,%ymm13
998 vmovdqu -24+256-128(%rsi),%ymm12
999 vpaddq %ymm13,%ymm6,%ymm6
1000 vpmuludq %ymm10,%ymm0,%ymm0
1001 vmovdqu -24+288-128(%rsi),%ymm13
1002 vpaddq %ymm0,%ymm7,%ymm7
1003 vpmuludq %ymm10,%ymm12,%ymm12
1004 vpaddq %ymm12,%ymm8,%ymm8
1005 vpmuludq %ymm10,%ymm13,%ymm13
1006 vpbroadcastq 32(%r13),%ymm10
1007 vpaddq %ymm13,%ymm9,%ymm9
1010 vmovdqu -24+32-128(%rcx),%ymm0
1011 imulq -128(%rcx),%rax
1015 vmovdqu -24+64-128(%rcx),%ymm12
1016 vpmuludq %ymm11,%ymm0,%ymm0
1018 vmovdqu -24+96-128(%rcx),%ymm13
1019 vpaddq %ymm0,%ymm1,%ymm0
1020 vpmuludq %ymm11,%ymm12,%ymm12
1021 vmovdqu %ymm0,(%rsp)
1022 vpaddq %ymm12,%ymm2,%ymm1
1023 vmovdqu -24+128-128(%rcx),%ymm0
1024 vpmuludq %ymm11,%ymm13,%ymm13
1025 vmovdqu -24+160-128(%rcx),%ymm12
1026 vpaddq %ymm13,%ymm3,%ymm2
1027 vpmuludq %ymm11,%ymm0,%ymm0
1028 vmovdqu -24+192-128(%rcx),%ymm13
1029 vpaddq %ymm0,%ymm4,%ymm3
1030 vpmuludq %ymm11,%ymm12,%ymm12
1031 vmovdqu -24+224-128(%rcx),%ymm0
1032 vpaddq %ymm12,%ymm5,%ymm4
1033 vpmuludq %ymm11,%ymm13,%ymm13
1034 vmovdqu -24+256-128(%rcx),%ymm12
1035 vpaddq %ymm13,%ymm6,%ymm5
1036 vpmuludq %ymm11,%ymm0,%ymm0
1037 vmovdqu -24+288-128(%rcx),%ymm13
1039 vpaddq %ymm0,%ymm7,%ymm6
1040 vpmuludq %ymm11,%ymm12,%ymm12
1042 vpaddq %ymm12,%ymm8,%ymm7
1043 vpmuludq %ymm11,%ymm13,%ymm13
1045 vpaddq %ymm13,%ymm9,%ymm8
1049 vpermq $0,%ymm15,%ymm15
1050 vpaddq (%rsp),%ymm12,%ymm0
1052 vpsrlq $29,%ymm0,%ymm12
1053 vpand %ymm15,%ymm0,%ymm0
1054 vpsrlq $29,%ymm1,%ymm13
1055 vpand %ymm15,%ymm1,%ymm1
1056 vpsrlq $29,%ymm2,%ymm10
1057 vpermq $0x93,%ymm12,%ymm12
1058 vpand %ymm15,%ymm2,%ymm2
1059 vpsrlq $29,%ymm3,%ymm11
1060 vpermq $0x93,%ymm13,%ymm13
1061 vpand %ymm15,%ymm3,%ymm3
1063 vpblendd $3,%ymm14,%ymm12,%ymm9
1064 vpermq $0x93,%ymm10,%ymm10
1065 vpblendd $3,%ymm12,%ymm13,%ymm12
1066 vpermq $0x93,%ymm11,%ymm11
1067 vpaddq %ymm9,%ymm0,%ymm0
1068 vpblendd $3,%ymm13,%ymm10,%ymm13
1069 vpaddq %ymm12,%ymm1,%ymm1
1070 vpblendd $3,%ymm10,%ymm11,%ymm10
1071 vpaddq %ymm13,%ymm2,%ymm2
1072 vpblendd $3,%ymm11,%ymm14,%ymm11
1073 vpaddq %ymm10,%ymm3,%ymm3
1074 vpaddq %ymm11,%ymm4,%ymm4
1076 vpsrlq $29,%ymm0,%ymm12
1077 vpand %ymm15,%ymm0,%ymm0
1078 vpsrlq $29,%ymm1,%ymm13
1079 vpand %ymm15,%ymm1,%ymm1
1080 vpsrlq $29,%ymm2,%ymm10
1081 vpermq $0x93,%ymm12,%ymm12
1082 vpand %ymm15,%ymm2,%ymm2
1083 vpsrlq $29,%ymm3,%ymm11
1084 vpermq $0x93,%ymm13,%ymm13
1085 vpand %ymm15,%ymm3,%ymm3
1086 vpermq $0x93,%ymm10,%ymm10
1088 vpblendd $3,%ymm14,%ymm12,%ymm9
1089 vpermq $0x93,%ymm11,%ymm11
1090 vpblendd $3,%ymm12,%ymm13,%ymm12
1091 vpaddq %ymm9,%ymm0,%ymm0
1092 vpblendd $3,%ymm13,%ymm10,%ymm13
1093 vpaddq %ymm12,%ymm1,%ymm1
1094 vpblendd $3,%ymm10,%ymm11,%ymm10
1095 vpaddq %ymm13,%ymm2,%ymm2
1096 vpblendd $3,%ymm11,%ymm14,%ymm11
1097 vpaddq %ymm10,%ymm3,%ymm3
1098 vpaddq %ymm11,%ymm4,%ymm4
1100 vmovdqu %ymm0,0-128(%rdi)
1101 vmovdqu %ymm1,32-128(%rdi)
1102 vmovdqu %ymm2,64-128(%rdi)
1103 vmovdqu %ymm3,96-128(%rdi)
1104 vpsrlq $29,%ymm4,%ymm12
1105 vpand %ymm15,%ymm4,%ymm4
1106 vpsrlq $29,%ymm5,%ymm13
1107 vpand %ymm15,%ymm5,%ymm5
1108 vpsrlq $29,%ymm6,%ymm10
1109 vpermq $0x93,%ymm12,%ymm12
1110 vpand %ymm15,%ymm6,%ymm6
1111 vpsrlq $29,%ymm7,%ymm11
1112 vpermq $0x93,%ymm13,%ymm13
1113 vpand %ymm15,%ymm7,%ymm7
1114 vpsrlq $29,%ymm8,%ymm0
1115 vpermq $0x93,%ymm10,%ymm10
1116 vpand %ymm15,%ymm8,%ymm8
1117 vpermq $0x93,%ymm11,%ymm11
1119 vpblendd $3,%ymm14,%ymm12,%ymm9
1120 vpermq $0x93,%ymm0,%ymm0
1121 vpblendd $3,%ymm12,%ymm13,%ymm12
1122 vpaddq %ymm9,%ymm4,%ymm4
1123 vpblendd $3,%ymm13,%ymm10,%ymm13
1124 vpaddq %ymm12,%ymm5,%ymm5
1125 vpblendd $3,%ymm10,%ymm11,%ymm10
1126 vpaddq %ymm13,%ymm6,%ymm6
1127 vpblendd $3,%ymm11,%ymm0,%ymm11
1128 vpaddq %ymm10,%ymm7,%ymm7
1129 vpaddq %ymm11,%ymm8,%ymm8
1131 vpsrlq $29,%ymm4,%ymm12
1132 vpand %ymm15,%ymm4,%ymm4
1133 vpsrlq $29,%ymm5,%ymm13
1134 vpand %ymm15,%ymm5,%ymm5
1135 vpsrlq $29,%ymm6,%ymm10
1136 vpermq $0x93,%ymm12,%ymm12
1137 vpand %ymm15,%ymm6,%ymm6
1138 vpsrlq $29,%ymm7,%ymm11
1139 vpermq $0x93,%ymm13,%ymm13
1140 vpand %ymm15,%ymm7,%ymm7
1141 vpsrlq $29,%ymm8,%ymm0
1142 vpermq $0x93,%ymm10,%ymm10
1143 vpand %ymm15,%ymm8,%ymm8
1144 vpermq $0x93,%ymm11,%ymm11
1146 vpblendd $3,%ymm14,%ymm12,%ymm9
1147 vpermq $0x93,%ymm0,%ymm0
1148 vpblendd $3,%ymm12,%ymm13,%ymm12
1149 vpaddq %ymm9,%ymm4,%ymm4
1150 vpblendd $3,%ymm13,%ymm10,%ymm13
1151 vpaddq %ymm12,%ymm5,%ymm5
1152 vpblendd $3,%ymm10,%ymm11,%ymm10
1153 vpaddq %ymm13,%ymm6,%ymm6
1154 vpblendd $3,%ymm11,%ymm0,%ymm11
1155 vpaddq %ymm10,%ymm7,%ymm7
1156 vpaddq %ymm11,%ymm8,%ymm8
1158 vmovdqu %ymm4,128-128(%rdi)
1159 vmovdqu %ymm5,160-128(%rdi)
1160 vmovdqu %ymm6,192-128(%rdi)
1161 vmovdqu %ymm7,224-128(%rdi)
1162 vmovdqu %ymm8,256-128(%rdi)
1173 .Lmul_1024_epilogue:
1175 .size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2
1176 .globl rsaz_1024_red2norm_avx2
1177 .type rsaz_1024_red2norm_avx2,@function
1179 rsaz_1024_red2norm_avx2:
1184 movq -112(%rsi),%r10
1371 .size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2
1373 .globl rsaz_1024_norm2red_avx2
1374 .type rsaz_1024_norm2red_avx2,@function
1376 rsaz_1024_norm2red_avx2:
1379 movl $0x1fffffff,%eax
1384 movq %r11,-128(%rdi)
1388 movq %r10,-120(%rdi)
1529 .size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2
1530 .globl rsaz_1024_scatter5_avx2
1531 .type rsaz_1024_scatter5_avx2,@function
1533 rsaz_1024_scatter5_avx2:
1535 vmovdqu .Lscatter_permd(%rip),%ymm5
1537 leaq (%rdi,%rdx,1),%rdi
1539 jmp .Loop_scatter_1024
1543 vmovdqu (%rsi),%ymm0
1545 vpermd %ymm0,%ymm5,%ymm0
1546 vmovdqu %xmm0,(%rdi)
1549 jnz .Loop_scatter_1024
1553 .size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2
1555 .globl rsaz_1024_gather5_avx2
1556 .type rsaz_1024_gather5_avx2,@function
1558 rsaz_1024_gather5_avx2:
1561 leaq -256(%rsp),%rsp
1563 leaq .Linc(%rip),%r10
1564 leaq -128(%rsp),%rax
1567 vmovdqa (%r10),%ymm0
1568 vmovdqa 32(%r10),%ymm1
1569 vmovdqa 64(%r10),%ymm5
1570 vpbroadcastd %xmm4,%ymm4
1572 vpaddd %ymm5,%ymm0,%ymm2
1573 vpcmpeqd %ymm4,%ymm0,%ymm0
1574 vpaddd %ymm5,%ymm1,%ymm3
1575 vpcmpeqd %ymm4,%ymm1,%ymm1
1576 vmovdqa %ymm0,0+128(%rax)
1577 vpaddd %ymm5,%ymm2,%ymm0
1578 vpcmpeqd %ymm4,%ymm2,%ymm2
1579 vmovdqa %ymm1,32+128(%rax)
1580 vpaddd %ymm5,%ymm3,%ymm1
1581 vpcmpeqd %ymm4,%ymm3,%ymm3
1582 vmovdqa %ymm2,64+128(%rax)
1583 vpaddd %ymm5,%ymm0,%ymm2
1584 vpcmpeqd %ymm4,%ymm0,%ymm0
1585 vmovdqa %ymm3,96+128(%rax)
1586 vpaddd %ymm5,%ymm1,%ymm3
1587 vpcmpeqd %ymm4,%ymm1,%ymm1
1588 vmovdqa %ymm0,128+128(%rax)
1589 vpaddd %ymm5,%ymm2,%ymm8
1590 vpcmpeqd %ymm4,%ymm2,%ymm2
1591 vmovdqa %ymm1,160+128(%rax)
1592 vpaddd %ymm5,%ymm3,%ymm9
1593 vpcmpeqd %ymm4,%ymm3,%ymm3
1594 vmovdqa %ymm2,192+128(%rax)
1595 vpaddd %ymm5,%ymm8,%ymm10
1596 vpcmpeqd %ymm4,%ymm8,%ymm8
1597 vmovdqa %ymm3,224+128(%rax)
1598 vpaddd %ymm5,%ymm9,%ymm11
1599 vpcmpeqd %ymm4,%ymm9,%ymm9
1600 vpaddd %ymm5,%ymm10,%ymm12
1601 vpcmpeqd %ymm4,%ymm10,%ymm10
1602 vpaddd %ymm5,%ymm11,%ymm13
1603 vpcmpeqd %ymm4,%ymm11,%ymm11
1604 vpaddd %ymm5,%ymm12,%ymm14
1605 vpcmpeqd %ymm4,%ymm12,%ymm12
1606 vpaddd %ymm5,%ymm13,%ymm15
1607 vpcmpeqd %ymm4,%ymm13,%ymm13
1608 vpcmpeqd %ymm4,%ymm14,%ymm14
1609 vpcmpeqd %ymm4,%ymm15,%ymm15
1611 vmovdqa -32(%r10),%ymm7
1616 vmovdqa 0-128(%rsi),%ymm0
1617 vmovdqa 32-128(%rsi),%ymm1
1618 vmovdqa 64-128(%rsi),%ymm2
1619 vmovdqa 96-128(%rsi),%ymm3
1620 vpand 0+128(%rax),%ymm0,%ymm0
1621 vpand 32+128(%rax),%ymm1,%ymm1
1622 vpand 64+128(%rax),%ymm2,%ymm2
1623 vpor %ymm0,%ymm1,%ymm4
1624 vpand 96+128(%rax),%ymm3,%ymm3
1625 vmovdqa 128-128(%rsi),%ymm0
1626 vmovdqa 160-128(%rsi),%ymm1
1627 vpor %ymm2,%ymm3,%ymm5
1628 vmovdqa 192-128(%rsi),%ymm2
1629 vmovdqa 224-128(%rsi),%ymm3
1630 vpand 128+128(%rax),%ymm0,%ymm0
1631 vpand 160+128(%rax),%ymm1,%ymm1
1632 vpand 192+128(%rax),%ymm2,%ymm2
1633 vpor %ymm0,%ymm4,%ymm4
1634 vpand 224+128(%rax),%ymm3,%ymm3
1635 vpand 256-128(%rsi),%ymm8,%ymm0
1636 vpor %ymm1,%ymm5,%ymm5
1637 vpand 288-128(%rsi),%ymm9,%ymm1
1638 vpor %ymm2,%ymm4,%ymm4
1639 vpand 320-128(%rsi),%ymm10,%ymm2
1640 vpor %ymm3,%ymm5,%ymm5
1641 vpand 352-128(%rsi),%ymm11,%ymm3
1642 vpor %ymm0,%ymm4,%ymm4
1643 vpand 384-128(%rsi),%ymm12,%ymm0
1644 vpor %ymm1,%ymm5,%ymm5
1645 vpand 416-128(%rsi),%ymm13,%ymm1
1646 vpor %ymm2,%ymm4,%ymm4
1647 vpand 448-128(%rsi),%ymm14,%ymm2
1648 vpor %ymm3,%ymm5,%ymm5
1649 vpand 480-128(%rsi),%ymm15,%ymm3
1651 vpor %ymm0,%ymm4,%ymm4
1652 vpor %ymm1,%ymm5,%ymm5
1653 vpor %ymm2,%ymm4,%ymm4
1654 vpor %ymm3,%ymm5,%ymm5
1656 vpor %ymm5,%ymm4,%ymm4
1657 vextracti128 $1,%ymm4,%xmm5
1658 vpor %xmm4,%xmm5,%xmm5
1659 vpermd %ymm5,%ymm7,%ymm5
1660 vmovdqu %ymm5,(%rdi)
1663 jnz .Loop_gather_1024
1665 vpxor %ymm0,%ymm0,%ymm0
1666 vmovdqu %ymm0,(%rdi)
1670 .size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2
1672 .globl rsaz_avx2_eligible
1673 .type rsaz_avx2_eligible,@function
1676 movl OPENSSL_ia32cap_P+8(%rip),%eax
1685 .size rsaz_avx2_eligible,.-rsaz_avx2_eligible
1689 .quad 0x1fffffff,0x1fffffff,0x1fffffff,-1
1691 .long 0,2,4,6,7,7,7,7
1693 .long 0,7,1,7,2,7,3,7
1695 .long 0,0,0,0, 1,1,1,1
1696 .long 2,2,2,2, 3,3,3,3
1697 .long 4,4,4,4, 4,4,4,4