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