1.text 2 3.globl rsaz_1024_sqr_avx2 4.type rsaz_1024_sqr_avx2,@function 5.align 64 6rsaz_1024_sqr_avx2: 7.cfi_startproc 8 leaq (%rsp),%rax 9.cfi_def_cfa_register %rax 10 pushq %rbx 11.cfi_offset %rbx,-16 12 pushq %rbp 13.cfi_offset %rbp,-24 14 pushq %r12 15.cfi_offset %r12,-32 16 pushq %r13 17.cfi_offset %r13,-40 18 pushq %r14 19.cfi_offset %r14,-48 20 pushq %r15 21.cfi_offset %r15,-56 22 vzeroupper 23 movq %rax,%rbp 24.cfi_def_cfa_register %rbp 25 movq %rdx,%r13 26 subq $832,%rsp 27 movq %r13,%r15 28 subq $-128,%rdi 29 subq $-128,%rsi 30 subq $-128,%r13 31 32 andq $4095,%r15 33 addq $320,%r15 34 shrq $12,%r15 35 vpxor %ymm9,%ymm9,%ymm9 36 jz .Lsqr_1024_no_n_copy 37 38 39 40 41 42 subq $320,%rsp 43 vmovdqu 0-128(%r13),%ymm0 44 andq $-2048,%rsp 45 vmovdqu 32-128(%r13),%ymm1 46 vmovdqu 64-128(%r13),%ymm2 47 vmovdqu 96-128(%r13),%ymm3 48 vmovdqu 128-128(%r13),%ymm4 49 vmovdqu 160-128(%r13),%ymm5 50 vmovdqu 192-128(%r13),%ymm6 51 vmovdqu 224-128(%r13),%ymm7 52 vmovdqu 256-128(%r13),%ymm8 53 leaq 832+128(%rsp),%r13 54 vmovdqu %ymm0,0-128(%r13) 55 vmovdqu %ymm1,32-128(%r13) 56 vmovdqu %ymm2,64-128(%r13) 57 vmovdqu %ymm3,96-128(%r13) 58 vmovdqu %ymm4,128-128(%r13) 59 vmovdqu %ymm5,160-128(%r13) 60 vmovdqu %ymm6,192-128(%r13) 61 vmovdqu %ymm7,224-128(%r13) 62 vmovdqu %ymm8,256-128(%r13) 63 vmovdqu %ymm9,288-128(%r13) 64 65.Lsqr_1024_no_n_copy: 66 andq $-1024,%rsp 67 68 vmovdqu 32-128(%rsi),%ymm1 69 vmovdqu 64-128(%rsi),%ymm2 70 vmovdqu 96-128(%rsi),%ymm3 71 vmovdqu 128-128(%rsi),%ymm4 72 vmovdqu 160-128(%rsi),%ymm5 73 vmovdqu 192-128(%rsi),%ymm6 74 vmovdqu 224-128(%rsi),%ymm7 75 vmovdqu 256-128(%rsi),%ymm8 76 77 leaq 192(%rsp),%rbx 78 vmovdqu .Land_mask(%rip),%ymm15 79 jmp .LOOP_GRANDE_SQR_1024 80 81.align 32 82.LOOP_GRANDE_SQR_1024: 83 leaq 576+128(%rsp),%r9 84 leaq 448(%rsp),%r12 85 86 87 88 89 vpaddq %ymm1,%ymm1,%ymm1 90 vpbroadcastq 0-128(%rsi),%ymm10 91 vpaddq %ymm2,%ymm2,%ymm2 92 vmovdqa %ymm1,0-128(%r9) 93 vpaddq %ymm3,%ymm3,%ymm3 94 vmovdqa %ymm2,32-128(%r9) 95 vpaddq %ymm4,%ymm4,%ymm4 96 vmovdqa %ymm3,64-128(%r9) 97 vpaddq %ymm5,%ymm5,%ymm5 98 vmovdqa %ymm4,96-128(%r9) 99 vpaddq %ymm6,%ymm6,%ymm6 100 vmovdqa %ymm5,128-128(%r9) 101 vpaddq %ymm7,%ymm7,%ymm7 102 vmovdqa %ymm6,160-128(%r9) 103 vpaddq %ymm8,%ymm8,%ymm8 104 vmovdqa %ymm7,192-128(%r9) 105 vpxor %ymm9,%ymm9,%ymm9 106 vmovdqa %ymm8,224-128(%r9) 107 108 vpmuludq 0-128(%rsi),%ymm10,%ymm0 109 vpbroadcastq 32-128(%rsi),%ymm11 110 vmovdqu %ymm9,288-192(%rbx) 111 vpmuludq %ymm10,%ymm1,%ymm1 112 vmovdqu %ymm9,320-448(%r12) 113 vpmuludq %ymm10,%ymm2,%ymm2 114 vmovdqu %ymm9,352-448(%r12) 115 vpmuludq %ymm10,%ymm3,%ymm3 116 vmovdqu %ymm9,384-448(%r12) 117 vpmuludq %ymm10,%ymm4,%ymm4 118 vmovdqu %ymm9,416-448(%r12) 119 vpmuludq %ymm10,%ymm5,%ymm5 120 vmovdqu %ymm9,448-448(%r12) 121 vpmuludq %ymm10,%ymm6,%ymm6 122 vmovdqu %ymm9,480-448(%r12) 123 vpmuludq %ymm10,%ymm7,%ymm7 124 vmovdqu %ymm9,512-448(%r12) 125 vpmuludq %ymm10,%ymm8,%ymm8 126 vpbroadcastq 64-128(%rsi),%ymm10 127 vmovdqu %ymm9,544-448(%r12) 128 129 movq %rsi,%r15 130 movl $4,%r14d 131 jmp .Lsqr_entry_1024 132.align 32 133.LOOP_SQR_1024: 134 vpbroadcastq 32-128(%r15),%ymm11 135 vpmuludq 0-128(%rsi),%ymm10,%ymm0 136 vpaddq 0-192(%rbx),%ymm0,%ymm0 137 vpmuludq 0-128(%r9),%ymm10,%ymm1 138 vpaddq 32-192(%rbx),%ymm1,%ymm1 139 vpmuludq 32-128(%r9),%ymm10,%ymm2 140 vpaddq 64-192(%rbx),%ymm2,%ymm2 141 vpmuludq 64-128(%r9),%ymm10,%ymm3 142 vpaddq 96-192(%rbx),%ymm3,%ymm3 143 vpmuludq 96-128(%r9),%ymm10,%ymm4 144 vpaddq 128-192(%rbx),%ymm4,%ymm4 145 vpmuludq 128-128(%r9),%ymm10,%ymm5 146 vpaddq 160-192(%rbx),%ymm5,%ymm5 147 vpmuludq 160-128(%r9),%ymm10,%ymm6 148 vpaddq 192-192(%rbx),%ymm6,%ymm6 149 vpmuludq 192-128(%r9),%ymm10,%ymm7 150 vpaddq 224-192(%rbx),%ymm7,%ymm7 151 vpmuludq 224-128(%r9),%ymm10,%ymm8 152 vpbroadcastq 64-128(%r15),%ymm10 153 vpaddq 256-192(%rbx),%ymm8,%ymm8 154.Lsqr_entry_1024: 155 vmovdqu %ymm0,0-192(%rbx) 156 vmovdqu %ymm1,32-192(%rbx) 157 158 vpmuludq 32-128(%rsi),%ymm11,%ymm12 159 vpaddq %ymm12,%ymm2,%ymm2 160 vpmuludq 32-128(%r9),%ymm11,%ymm14 161 vpaddq %ymm14,%ymm3,%ymm3 162 vpmuludq 64-128(%r9),%ymm11,%ymm13 163 vpaddq %ymm13,%ymm4,%ymm4 164 vpmuludq 96-128(%r9),%ymm11,%ymm12 165 vpaddq %ymm12,%ymm5,%ymm5 166 vpmuludq 128-128(%r9),%ymm11,%ymm14 167 vpaddq %ymm14,%ymm6,%ymm6 168 vpmuludq 160-128(%r9),%ymm11,%ymm13 169 vpaddq %ymm13,%ymm7,%ymm7 170 vpmuludq 192-128(%r9),%ymm11,%ymm12 171 vpaddq %ymm12,%ymm8,%ymm8 172 vpmuludq 224-128(%r9),%ymm11,%ymm0 173 vpbroadcastq 96-128(%r15),%ymm11 174 vpaddq 288-192(%rbx),%ymm0,%ymm0 175 176 vmovdqu %ymm2,64-192(%rbx) 177 vmovdqu %ymm3,96-192(%rbx) 178 179 vpmuludq 64-128(%rsi),%ymm10,%ymm13 180 vpaddq %ymm13,%ymm4,%ymm4 181 vpmuludq 64-128(%r9),%ymm10,%ymm12 182 vpaddq %ymm12,%ymm5,%ymm5 183 vpmuludq 96-128(%r9),%ymm10,%ymm14 184 vpaddq %ymm14,%ymm6,%ymm6 185 vpmuludq 128-128(%r9),%ymm10,%ymm13 186 vpaddq %ymm13,%ymm7,%ymm7 187 vpmuludq 160-128(%r9),%ymm10,%ymm12 188 vpaddq %ymm12,%ymm8,%ymm8 189 vpmuludq 192-128(%r9),%ymm10,%ymm14 190 vpaddq %ymm14,%ymm0,%ymm0 191 vpmuludq 224-128(%r9),%ymm10,%ymm1 192 vpbroadcastq 128-128(%r15),%ymm10 193 vpaddq 320-448(%r12),%ymm1,%ymm1 194 195 vmovdqu %ymm4,128-192(%rbx) 196 vmovdqu %ymm5,160-192(%rbx) 197 198 vpmuludq 96-128(%rsi),%ymm11,%ymm12 199 vpaddq %ymm12,%ymm6,%ymm6 200 vpmuludq 96-128(%r9),%ymm11,%ymm14 201 vpaddq %ymm14,%ymm7,%ymm7 202 vpmuludq 128-128(%r9),%ymm11,%ymm13 203 vpaddq %ymm13,%ymm8,%ymm8 204 vpmuludq 160-128(%r9),%ymm11,%ymm12 205 vpaddq %ymm12,%ymm0,%ymm0 206 vpmuludq 192-128(%r9),%ymm11,%ymm14 207 vpaddq %ymm14,%ymm1,%ymm1 208 vpmuludq 224-128(%r9),%ymm11,%ymm2 209 vpbroadcastq 160-128(%r15),%ymm11 210 vpaddq 352-448(%r12),%ymm2,%ymm2 211 212 vmovdqu %ymm6,192-192(%rbx) 213 vmovdqu %ymm7,224-192(%rbx) 214 215 vpmuludq 128-128(%rsi),%ymm10,%ymm12 216 vpaddq %ymm12,%ymm8,%ymm8 217 vpmuludq 128-128(%r9),%ymm10,%ymm14 218 vpaddq %ymm14,%ymm0,%ymm0 219 vpmuludq 160-128(%r9),%ymm10,%ymm13 220 vpaddq %ymm13,%ymm1,%ymm1 221 vpmuludq 192-128(%r9),%ymm10,%ymm12 222 vpaddq %ymm12,%ymm2,%ymm2 223 vpmuludq 224-128(%r9),%ymm10,%ymm3 224 vpbroadcastq 192-128(%r15),%ymm10 225 vpaddq 384-448(%r12),%ymm3,%ymm3 226 227 vmovdqu %ymm8,256-192(%rbx) 228 vmovdqu %ymm0,288-192(%rbx) 229 leaq 8(%rbx),%rbx 230 231 vpmuludq 160-128(%rsi),%ymm11,%ymm13 232 vpaddq %ymm13,%ymm1,%ymm1 233 vpmuludq 160-128(%r9),%ymm11,%ymm12 234 vpaddq %ymm12,%ymm2,%ymm2 235 vpmuludq 192-128(%r9),%ymm11,%ymm14 236 vpaddq %ymm14,%ymm3,%ymm3 237 vpmuludq 224-128(%r9),%ymm11,%ymm4 238 vpbroadcastq 224-128(%r15),%ymm11 239 vpaddq 416-448(%r12),%ymm4,%ymm4 240 241 vmovdqu %ymm1,320-448(%r12) 242 vmovdqu %ymm2,352-448(%r12) 243 244 vpmuludq 192-128(%rsi),%ymm10,%ymm12 245 vpaddq %ymm12,%ymm3,%ymm3 246 vpmuludq 192-128(%r9),%ymm10,%ymm14 247 vpbroadcastq 256-128(%r15),%ymm0 248 vpaddq %ymm14,%ymm4,%ymm4 249 vpmuludq 224-128(%r9),%ymm10,%ymm5 250 vpbroadcastq 0+8-128(%r15),%ymm10 251 vpaddq 448-448(%r12),%ymm5,%ymm5 252 253 vmovdqu %ymm3,384-448(%r12) 254 vmovdqu %ymm4,416-448(%r12) 255 leaq 8(%r15),%r15 256 257 vpmuludq 224-128(%rsi),%ymm11,%ymm12 258 vpaddq %ymm12,%ymm5,%ymm5 259 vpmuludq 224-128(%r9),%ymm11,%ymm6 260 vpaddq 480-448(%r12),%ymm6,%ymm6 261 262 vpmuludq 256-128(%rsi),%ymm0,%ymm7 263 vmovdqu %ymm5,448-448(%r12) 264 vpaddq 512-448(%r12),%ymm7,%ymm7 265 vmovdqu %ymm6,480-448(%r12) 266 vmovdqu %ymm7,512-448(%r12) 267 leaq 8(%r12),%r12 268 269 decl %r14d 270 jnz .LOOP_SQR_1024 271 272 vmovdqu 256(%rsp),%ymm8 273 vmovdqu 288(%rsp),%ymm1 274 vmovdqu 320(%rsp),%ymm2 275 leaq 192(%rsp),%rbx 276 277 vpsrlq $29,%ymm8,%ymm14 278 vpand %ymm15,%ymm8,%ymm8 279 vpsrlq $29,%ymm1,%ymm11 280 vpand %ymm15,%ymm1,%ymm1 281 282 vpermq $0x93,%ymm14,%ymm14 283 vpxor %ymm9,%ymm9,%ymm9 284 vpermq $0x93,%ymm11,%ymm11 285 286 vpblendd $3,%ymm9,%ymm14,%ymm10 287 vpblendd $3,%ymm14,%ymm11,%ymm14 288 vpaddq %ymm10,%ymm8,%ymm8 289 vpblendd $3,%ymm11,%ymm9,%ymm11 290 vpaddq %ymm14,%ymm1,%ymm1 291 vpaddq %ymm11,%ymm2,%ymm2 292 vmovdqu %ymm1,288-192(%rbx) 293 vmovdqu %ymm2,320-192(%rbx) 294 295 movq (%rsp),%rax 296 movq 8(%rsp),%r10 297 movq 16(%rsp),%r11 298 movq 24(%rsp),%r12 299 vmovdqu 32(%rsp),%ymm1 300 vmovdqu 64-192(%rbx),%ymm2 301 vmovdqu 96-192(%rbx),%ymm3 302 vmovdqu 128-192(%rbx),%ymm4 303 vmovdqu 160-192(%rbx),%ymm5 304 vmovdqu 192-192(%rbx),%ymm6 305 vmovdqu 224-192(%rbx),%ymm7 306 307 movq %rax,%r9 308 imull %ecx,%eax 309 andl $0x1fffffff,%eax 310 vmovd %eax,%xmm12 311 312 movq %rax,%rdx 313 imulq -128(%r13),%rax 314 vpbroadcastq %xmm12,%ymm12 315 addq %rax,%r9 316 movq %rdx,%rax 317 imulq 8-128(%r13),%rax 318 shrq $29,%r9 319 addq %rax,%r10 320 movq %rdx,%rax 321 imulq 16-128(%r13),%rax 322 addq %r9,%r10 323 addq %rax,%r11 324 imulq 24-128(%r13),%rdx 325 addq %rdx,%r12 326 327 movq %r10,%rax 328 imull %ecx,%eax 329 andl $0x1fffffff,%eax 330 331 movl $9,%r14d 332 jmp .LOOP_REDUCE_1024 333 334.align 32 335.LOOP_REDUCE_1024: 336 vmovd %eax,%xmm13 337 vpbroadcastq %xmm13,%ymm13 338 339 vpmuludq 32-128(%r13),%ymm12,%ymm10 340 movq %rax,%rdx 341 imulq -128(%r13),%rax 342 vpaddq %ymm10,%ymm1,%ymm1 343 addq %rax,%r10 344 vpmuludq 64-128(%r13),%ymm12,%ymm14 345 movq %rdx,%rax 346 imulq 8-128(%r13),%rax 347 vpaddq %ymm14,%ymm2,%ymm2 348 vpmuludq 96-128(%r13),%ymm12,%ymm11 349.byte 0x67 350 addq %rax,%r11 351.byte 0x67 352 movq %rdx,%rax 353 imulq 16-128(%r13),%rax 354 shrq $29,%r10 355 vpaddq %ymm11,%ymm3,%ymm3 356 vpmuludq 128-128(%r13),%ymm12,%ymm10 357 addq %rax,%r12 358 addq %r10,%r11 359 vpaddq %ymm10,%ymm4,%ymm4 360 vpmuludq 160-128(%r13),%ymm12,%ymm14 361 movq %r11,%rax 362 imull %ecx,%eax 363 vpaddq %ymm14,%ymm5,%ymm5 364 vpmuludq 192-128(%r13),%ymm12,%ymm11 365 andl $0x1fffffff,%eax 366 vpaddq %ymm11,%ymm6,%ymm6 367 vpmuludq 224-128(%r13),%ymm12,%ymm10 368 vpaddq %ymm10,%ymm7,%ymm7 369 vpmuludq 256-128(%r13),%ymm12,%ymm14 370 vmovd %eax,%xmm12 371 372 vpaddq %ymm14,%ymm8,%ymm8 373 374 vpbroadcastq %xmm12,%ymm12 375 376 vpmuludq 32-8-128(%r13),%ymm13,%ymm11 377 vmovdqu 96-8-128(%r13),%ymm14 378 movq %rax,%rdx 379 imulq -128(%r13),%rax 380 vpaddq %ymm11,%ymm1,%ymm1 381 vpmuludq 64-8-128(%r13),%ymm13,%ymm10 382 vmovdqu 128-8-128(%r13),%ymm11 383 addq %rax,%r11 384 movq %rdx,%rax 385 imulq 8-128(%r13),%rax 386 vpaddq %ymm10,%ymm2,%ymm2 387 addq %r12,%rax 388 shrq $29,%r11 389 vpmuludq %ymm13,%ymm14,%ymm14 390 vmovdqu 160-8-128(%r13),%ymm10 391 addq %r11,%rax 392 vpaddq %ymm14,%ymm3,%ymm3 393 vpmuludq %ymm13,%ymm11,%ymm11 394 vmovdqu 192-8-128(%r13),%ymm14 395.byte 0x67 396 movq %rax,%r12 397 imull %ecx,%eax 398 vpaddq %ymm11,%ymm4,%ymm4 399 vpmuludq %ymm13,%ymm10,%ymm10 400.byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00 401 andl $0x1fffffff,%eax 402 vpaddq %ymm10,%ymm5,%ymm5 403 vpmuludq %ymm13,%ymm14,%ymm14 404 vmovdqu 256-8-128(%r13),%ymm10 405 vpaddq %ymm14,%ymm6,%ymm6 406 vpmuludq %ymm13,%ymm11,%ymm11 407 vmovdqu 288-8-128(%r13),%ymm9 408 vmovd %eax,%xmm0 409 imulq -128(%r13),%rax 410 vpaddq %ymm11,%ymm7,%ymm7 411 vpmuludq %ymm13,%ymm10,%ymm10 412 vmovdqu 32-16-128(%r13),%ymm14 413 vpbroadcastq %xmm0,%ymm0 414 vpaddq %ymm10,%ymm8,%ymm8 415 vpmuludq %ymm13,%ymm9,%ymm9 416 vmovdqu 64-16-128(%r13),%ymm11 417 addq %rax,%r12 418 419 vmovdqu 32-24-128(%r13),%ymm13 420 vpmuludq %ymm12,%ymm14,%ymm14 421 vmovdqu 96-16-128(%r13),%ymm10 422 vpaddq %ymm14,%ymm1,%ymm1 423 vpmuludq %ymm0,%ymm13,%ymm13 424 vpmuludq %ymm12,%ymm11,%ymm11 425.byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff 426 vpaddq %ymm1,%ymm13,%ymm13 427 vpaddq %ymm11,%ymm2,%ymm2 428 vpmuludq %ymm12,%ymm10,%ymm10 429 vmovdqu 160-16-128(%r13),%ymm11 430.byte 0x67 431 vmovq %xmm13,%rax 432 vmovdqu %ymm13,(%rsp) 433 vpaddq %ymm10,%ymm3,%ymm3 434 vpmuludq %ymm12,%ymm14,%ymm14 435 vmovdqu 192-16-128(%r13),%ymm10 436 vpaddq %ymm14,%ymm4,%ymm4 437 vpmuludq %ymm12,%ymm11,%ymm11 438 vmovdqu 224-16-128(%r13),%ymm14 439 vpaddq %ymm11,%ymm5,%ymm5 440 vpmuludq %ymm12,%ymm10,%ymm10 441 vmovdqu 256-16-128(%r13),%ymm11 442 vpaddq %ymm10,%ymm6,%ymm6 443 vpmuludq %ymm12,%ymm14,%ymm14 444 shrq $29,%r12 445 vmovdqu 288-16-128(%r13),%ymm10 446 addq %r12,%rax 447 vpaddq %ymm14,%ymm7,%ymm7 448 vpmuludq %ymm12,%ymm11,%ymm11 449 450 movq %rax,%r9 451 imull %ecx,%eax 452 vpaddq %ymm11,%ymm8,%ymm8 453 vpmuludq %ymm12,%ymm10,%ymm10 454 andl $0x1fffffff,%eax 455 vmovd %eax,%xmm12 456 vmovdqu 96-24-128(%r13),%ymm11 457.byte 0x67 458 vpaddq %ymm10,%ymm9,%ymm9 459 vpbroadcastq %xmm12,%ymm12 460 461 vpmuludq 64-24-128(%r13),%ymm0,%ymm14 462 vmovdqu 128-24-128(%r13),%ymm10 463 movq %rax,%rdx 464 imulq -128(%r13),%rax 465 movq 8(%rsp),%r10 466 vpaddq %ymm14,%ymm2,%ymm1 467 vpmuludq %ymm0,%ymm11,%ymm11 468 vmovdqu 160-24-128(%r13),%ymm14 469 addq %rax,%r9 470 movq %rdx,%rax 471 imulq 8-128(%r13),%rax 472.byte 0x67 473 shrq $29,%r9 474 movq 16(%rsp),%r11 475 vpaddq %ymm11,%ymm3,%ymm2 476 vpmuludq %ymm0,%ymm10,%ymm10 477 vmovdqu 192-24-128(%r13),%ymm11 478 addq %rax,%r10 479 movq %rdx,%rax 480 imulq 16-128(%r13),%rax 481 vpaddq %ymm10,%ymm4,%ymm3 482 vpmuludq %ymm0,%ymm14,%ymm14 483 vmovdqu 224-24-128(%r13),%ymm10 484 imulq 24-128(%r13),%rdx 485 addq %rax,%r11 486 leaq (%r9,%r10,1),%rax 487 vpaddq %ymm14,%ymm5,%ymm4 488 vpmuludq %ymm0,%ymm11,%ymm11 489 vmovdqu 256-24-128(%r13),%ymm14 490 movq %rax,%r10 491 imull %ecx,%eax 492 vpmuludq %ymm0,%ymm10,%ymm10 493 vpaddq %ymm11,%ymm6,%ymm5 494 vmovdqu 288-24-128(%r13),%ymm11 495 andl $0x1fffffff,%eax 496 vpaddq %ymm10,%ymm7,%ymm6 497 vpmuludq %ymm0,%ymm14,%ymm14 498 addq 24(%rsp),%rdx 499 vpaddq %ymm14,%ymm8,%ymm7 500 vpmuludq %ymm0,%ymm11,%ymm11 501 vpaddq %ymm11,%ymm9,%ymm8 502 vmovq %r12,%xmm9 503 movq %rdx,%r12 504 505 decl %r14d 506 jnz .LOOP_REDUCE_1024 507 leaq 448(%rsp),%r12 508 vpaddq %ymm9,%ymm13,%ymm0 509 vpxor %ymm9,%ymm9,%ymm9 510 511 vpaddq 288-192(%rbx),%ymm0,%ymm0 512 vpaddq 320-448(%r12),%ymm1,%ymm1 513 vpaddq 352-448(%r12),%ymm2,%ymm2 514 vpaddq 384-448(%r12),%ymm3,%ymm3 515 vpaddq 416-448(%r12),%ymm4,%ymm4 516 vpaddq 448-448(%r12),%ymm5,%ymm5 517 vpaddq 480-448(%r12),%ymm6,%ymm6 518 vpaddq 512-448(%r12),%ymm7,%ymm7 519 vpaddq 544-448(%r12),%ymm8,%ymm8 520 521 vpsrlq $29,%ymm0,%ymm14 522 vpand %ymm15,%ymm0,%ymm0 523 vpsrlq $29,%ymm1,%ymm11 524 vpand %ymm15,%ymm1,%ymm1 525 vpsrlq $29,%ymm2,%ymm12 526 vpermq $0x93,%ymm14,%ymm14 527 vpand %ymm15,%ymm2,%ymm2 528 vpsrlq $29,%ymm3,%ymm13 529 vpermq $0x93,%ymm11,%ymm11 530 vpand %ymm15,%ymm3,%ymm3 531 vpermq $0x93,%ymm12,%ymm12 532 533 vpblendd $3,%ymm9,%ymm14,%ymm10 534 vpermq $0x93,%ymm13,%ymm13 535 vpblendd $3,%ymm14,%ymm11,%ymm14 536 vpaddq %ymm10,%ymm0,%ymm0 537 vpblendd $3,%ymm11,%ymm12,%ymm11 538 vpaddq %ymm14,%ymm1,%ymm1 539 vpblendd $3,%ymm12,%ymm13,%ymm12 540 vpaddq %ymm11,%ymm2,%ymm2 541 vpblendd $3,%ymm13,%ymm9,%ymm13 542 vpaddq %ymm12,%ymm3,%ymm3 543 vpaddq %ymm13,%ymm4,%ymm4 544 545 vpsrlq $29,%ymm0,%ymm14 546 vpand %ymm15,%ymm0,%ymm0 547 vpsrlq $29,%ymm1,%ymm11 548 vpand %ymm15,%ymm1,%ymm1 549 vpsrlq $29,%ymm2,%ymm12 550 vpermq $0x93,%ymm14,%ymm14 551 vpand %ymm15,%ymm2,%ymm2 552 vpsrlq $29,%ymm3,%ymm13 553 vpermq $0x93,%ymm11,%ymm11 554 vpand %ymm15,%ymm3,%ymm3 555 vpermq $0x93,%ymm12,%ymm12 556 557 vpblendd $3,%ymm9,%ymm14,%ymm10 558 vpermq $0x93,%ymm13,%ymm13 559 vpblendd $3,%ymm14,%ymm11,%ymm14 560 vpaddq %ymm10,%ymm0,%ymm0 561 vpblendd $3,%ymm11,%ymm12,%ymm11 562 vpaddq %ymm14,%ymm1,%ymm1 563 vmovdqu %ymm0,0-128(%rdi) 564 vpblendd $3,%ymm12,%ymm13,%ymm12 565 vpaddq %ymm11,%ymm2,%ymm2 566 vmovdqu %ymm1,32-128(%rdi) 567 vpblendd $3,%ymm13,%ymm9,%ymm13 568 vpaddq %ymm12,%ymm3,%ymm3 569 vmovdqu %ymm2,64-128(%rdi) 570 vpaddq %ymm13,%ymm4,%ymm4 571 vmovdqu %ymm3,96-128(%rdi) 572 vpsrlq $29,%ymm4,%ymm14 573 vpand %ymm15,%ymm4,%ymm4 574 vpsrlq $29,%ymm5,%ymm11 575 vpand %ymm15,%ymm5,%ymm5 576 vpsrlq $29,%ymm6,%ymm12 577 vpermq $0x93,%ymm14,%ymm14 578 vpand %ymm15,%ymm6,%ymm6 579 vpsrlq $29,%ymm7,%ymm13 580 vpermq $0x93,%ymm11,%ymm11 581 vpand %ymm15,%ymm7,%ymm7 582 vpsrlq $29,%ymm8,%ymm0 583 vpermq $0x93,%ymm12,%ymm12 584 vpand %ymm15,%ymm8,%ymm8 585 vpermq $0x93,%ymm13,%ymm13 586 587 vpblendd $3,%ymm9,%ymm14,%ymm10 588 vpermq $0x93,%ymm0,%ymm0 589 vpblendd $3,%ymm14,%ymm11,%ymm14 590 vpaddq %ymm10,%ymm4,%ymm4 591 vpblendd $3,%ymm11,%ymm12,%ymm11 592 vpaddq %ymm14,%ymm5,%ymm5 593 vpblendd $3,%ymm12,%ymm13,%ymm12 594 vpaddq %ymm11,%ymm6,%ymm6 595 vpblendd $3,%ymm13,%ymm0,%ymm13 596 vpaddq %ymm12,%ymm7,%ymm7 597 vpaddq %ymm13,%ymm8,%ymm8 598 599 vpsrlq $29,%ymm4,%ymm14 600 vpand %ymm15,%ymm4,%ymm4 601 vpsrlq $29,%ymm5,%ymm11 602 vpand %ymm15,%ymm5,%ymm5 603 vpsrlq $29,%ymm6,%ymm12 604 vpermq $0x93,%ymm14,%ymm14 605 vpand %ymm15,%ymm6,%ymm6 606 vpsrlq $29,%ymm7,%ymm13 607 vpermq $0x93,%ymm11,%ymm11 608 vpand %ymm15,%ymm7,%ymm7 609 vpsrlq $29,%ymm8,%ymm0 610 vpermq $0x93,%ymm12,%ymm12 611 vpand %ymm15,%ymm8,%ymm8 612 vpermq $0x93,%ymm13,%ymm13 613 614 vpblendd $3,%ymm9,%ymm14,%ymm10 615 vpermq $0x93,%ymm0,%ymm0 616 vpblendd $3,%ymm14,%ymm11,%ymm14 617 vpaddq %ymm10,%ymm4,%ymm4 618 vpblendd $3,%ymm11,%ymm12,%ymm11 619 vpaddq %ymm14,%ymm5,%ymm5 620 vmovdqu %ymm4,128-128(%rdi) 621 vpblendd $3,%ymm12,%ymm13,%ymm12 622 vpaddq %ymm11,%ymm6,%ymm6 623 vmovdqu %ymm5,160-128(%rdi) 624 vpblendd $3,%ymm13,%ymm0,%ymm13 625 vpaddq %ymm12,%ymm7,%ymm7 626 vmovdqu %ymm6,192-128(%rdi) 627 vpaddq %ymm13,%ymm8,%ymm8 628 vmovdqu %ymm7,224-128(%rdi) 629 vmovdqu %ymm8,256-128(%rdi) 630 631 movq %rdi,%rsi 632 decl %r8d 633 jne .LOOP_GRANDE_SQR_1024 634 635 vzeroall 636 movq %rbp,%rax 637.cfi_def_cfa_register %rax 638 movq -48(%rax),%r15 639.cfi_restore %r15 640 movq -40(%rax),%r14 641.cfi_restore %r14 642 movq -32(%rax),%r13 643.cfi_restore %r13 644 movq -24(%rax),%r12 645.cfi_restore %r12 646 movq -16(%rax),%rbp 647.cfi_restore %rbp 648 movq -8(%rax),%rbx 649.cfi_restore %rbx 650 leaq (%rax),%rsp 651.cfi_def_cfa_register %rsp 652.Lsqr_1024_epilogue: 653 .byte 0xf3,0xc3 654.cfi_endproc 655.size rsaz_1024_sqr_avx2,.-rsaz_1024_sqr_avx2 656.globl rsaz_1024_mul_avx2 657.type rsaz_1024_mul_avx2,@function 658.align 64 659rsaz_1024_mul_avx2: 660.cfi_startproc 661 leaq (%rsp),%rax 662.cfi_def_cfa_register %rax 663 pushq %rbx 664.cfi_offset %rbx,-16 665 pushq %rbp 666.cfi_offset %rbp,-24 667 pushq %r12 668.cfi_offset %r12,-32 669 pushq %r13 670.cfi_offset %r13,-40 671 pushq %r14 672.cfi_offset %r14,-48 673 pushq %r15 674.cfi_offset %r15,-56 675 movq %rax,%rbp 676.cfi_def_cfa_register %rbp 677 vzeroall 678 movq %rdx,%r13 679 subq $64,%rsp 680 681 682 683 684 685 686.byte 0x67,0x67 687 movq %rsi,%r15 688 andq $4095,%r15 689 addq $320,%r15 690 shrq $12,%r15 691 movq %rsi,%r15 692 cmovnzq %r13,%rsi 693 cmovnzq %r15,%r13 694 695 movq %rcx,%r15 696 subq $-128,%rsi 697 subq $-128,%rcx 698 subq $-128,%rdi 699 700 andq $4095,%r15 701 addq $320,%r15 702.byte 0x67,0x67 703 shrq $12,%r15 704 jz .Lmul_1024_no_n_copy 705 706 707 708 709 710 subq $320,%rsp 711 vmovdqu 0-128(%rcx),%ymm0 712 andq $-512,%rsp 713 vmovdqu 32-128(%rcx),%ymm1 714 vmovdqu 64-128(%rcx),%ymm2 715 vmovdqu 96-128(%rcx),%ymm3 716 vmovdqu 128-128(%rcx),%ymm4 717 vmovdqu 160-128(%rcx),%ymm5 718 vmovdqu 192-128(%rcx),%ymm6 719 vmovdqu 224-128(%rcx),%ymm7 720 vmovdqu 256-128(%rcx),%ymm8 721 leaq 64+128(%rsp),%rcx 722 vmovdqu %ymm0,0-128(%rcx) 723 vpxor %ymm0,%ymm0,%ymm0 724 vmovdqu %ymm1,32-128(%rcx) 725 vpxor %ymm1,%ymm1,%ymm1 726 vmovdqu %ymm2,64-128(%rcx) 727 vpxor %ymm2,%ymm2,%ymm2 728 vmovdqu %ymm3,96-128(%rcx) 729 vpxor %ymm3,%ymm3,%ymm3 730 vmovdqu %ymm4,128-128(%rcx) 731 vpxor %ymm4,%ymm4,%ymm4 732 vmovdqu %ymm5,160-128(%rcx) 733 vpxor %ymm5,%ymm5,%ymm5 734 vmovdqu %ymm6,192-128(%rcx) 735 vpxor %ymm6,%ymm6,%ymm6 736 vmovdqu %ymm7,224-128(%rcx) 737 vpxor %ymm7,%ymm7,%ymm7 738 vmovdqu %ymm8,256-128(%rcx) 739 vmovdqa %ymm0,%ymm8 740 vmovdqu %ymm9,288-128(%rcx) 741.Lmul_1024_no_n_copy: 742 andq $-64,%rsp 743 744 movq (%r13),%rbx 745 vpbroadcastq (%r13),%ymm10 746 vmovdqu %ymm0,(%rsp) 747 xorq %r9,%r9 748.byte 0x67 749 xorq %r10,%r10 750 xorq %r11,%r11 751 xorq %r12,%r12 752 753 vmovdqu .Land_mask(%rip),%ymm15 754 movl $9,%r14d 755 vmovdqu %ymm9,288-128(%rdi) 756 jmp .Loop_mul_1024 757 758.align 32 759.Loop_mul_1024: 760 vpsrlq $29,%ymm3,%ymm9 761 movq %rbx,%rax 762 imulq -128(%rsi),%rax 763 addq %r9,%rax 764 movq %rbx,%r10 765 imulq 8-128(%rsi),%r10 766 addq 8(%rsp),%r10 767 768 movq %rax,%r9 769 imull %r8d,%eax 770 andl $0x1fffffff,%eax 771 772 movq %rbx,%r11 773 imulq 16-128(%rsi),%r11 774 addq 16(%rsp),%r11 775 776 movq %rbx,%r12 777 imulq 24-128(%rsi),%r12 778 addq 24(%rsp),%r12 779 vpmuludq 32-128(%rsi),%ymm10,%ymm0 780 vmovd %eax,%xmm11 781 vpaddq %ymm0,%ymm1,%ymm1 782 vpmuludq 64-128(%rsi),%ymm10,%ymm12 783 vpbroadcastq %xmm11,%ymm11 784 vpaddq %ymm12,%ymm2,%ymm2 785 vpmuludq 96-128(%rsi),%ymm10,%ymm13 786 vpand %ymm15,%ymm3,%ymm3 787 vpaddq %ymm13,%ymm3,%ymm3 788 vpmuludq 128-128(%rsi),%ymm10,%ymm0 789 vpaddq %ymm0,%ymm4,%ymm4 790 vpmuludq 160-128(%rsi),%ymm10,%ymm12 791 vpaddq %ymm12,%ymm5,%ymm5 792 vpmuludq 192-128(%rsi),%ymm10,%ymm13 793 vpaddq %ymm13,%ymm6,%ymm6 794 vpmuludq 224-128(%rsi),%ymm10,%ymm0 795 vpermq $0x93,%ymm9,%ymm9 796 vpaddq %ymm0,%ymm7,%ymm7 797 vpmuludq 256-128(%rsi),%ymm10,%ymm12 798 vpbroadcastq 8(%r13),%ymm10 799 vpaddq %ymm12,%ymm8,%ymm8 800 801 movq %rax,%rdx 802 imulq -128(%rcx),%rax 803 addq %rax,%r9 804 movq %rdx,%rax 805 imulq 8-128(%rcx),%rax 806 addq %rax,%r10 807 movq %rdx,%rax 808 imulq 16-128(%rcx),%rax 809 addq %rax,%r11 810 shrq $29,%r9 811 imulq 24-128(%rcx),%rdx 812 addq %rdx,%r12 813 addq %r9,%r10 814 815 vpmuludq 32-128(%rcx),%ymm11,%ymm13 816 vmovq %xmm10,%rbx 817 vpaddq %ymm13,%ymm1,%ymm1 818 vpmuludq 64-128(%rcx),%ymm11,%ymm0 819 vpaddq %ymm0,%ymm2,%ymm2 820 vpmuludq 96-128(%rcx),%ymm11,%ymm12 821 vpaddq %ymm12,%ymm3,%ymm3 822 vpmuludq 128-128(%rcx),%ymm11,%ymm13 823 vpaddq %ymm13,%ymm4,%ymm4 824 vpmuludq 160-128(%rcx),%ymm11,%ymm0 825 vpaddq %ymm0,%ymm5,%ymm5 826 vpmuludq 192-128(%rcx),%ymm11,%ymm12 827 vpaddq %ymm12,%ymm6,%ymm6 828 vpmuludq 224-128(%rcx),%ymm11,%ymm13 829 vpblendd $3,%ymm14,%ymm9,%ymm12 830 vpaddq %ymm13,%ymm7,%ymm7 831 vpmuludq 256-128(%rcx),%ymm11,%ymm0 832 vpaddq %ymm12,%ymm3,%ymm3 833 vpaddq %ymm0,%ymm8,%ymm8 834 835 movq %rbx,%rax 836 imulq -128(%rsi),%rax 837 addq %rax,%r10 838 vmovdqu -8+32-128(%rsi),%ymm12 839 movq %rbx,%rax 840 imulq 8-128(%rsi),%rax 841 addq %rax,%r11 842 vmovdqu -8+64-128(%rsi),%ymm13 843 844 movq %r10,%rax 845 vpblendd $0xfc,%ymm14,%ymm9,%ymm9 846 imull %r8d,%eax 847 vpaddq %ymm9,%ymm4,%ymm4 848 andl $0x1fffffff,%eax 849 850 imulq 16-128(%rsi),%rbx 851 addq %rbx,%r12 852 vpmuludq %ymm10,%ymm12,%ymm12 853 vmovd %eax,%xmm11 854 vmovdqu -8+96-128(%rsi),%ymm0 855 vpaddq %ymm12,%ymm1,%ymm1 856 vpmuludq %ymm10,%ymm13,%ymm13 857 vpbroadcastq %xmm11,%ymm11 858 vmovdqu -8+128-128(%rsi),%ymm12 859 vpaddq %ymm13,%ymm2,%ymm2 860 vpmuludq %ymm10,%ymm0,%ymm0 861 vmovdqu -8+160-128(%rsi),%ymm13 862 vpaddq %ymm0,%ymm3,%ymm3 863 vpmuludq %ymm10,%ymm12,%ymm12 864 vmovdqu -8+192-128(%rsi),%ymm0 865 vpaddq %ymm12,%ymm4,%ymm4 866 vpmuludq %ymm10,%ymm13,%ymm13 867 vmovdqu -8+224-128(%rsi),%ymm12 868 vpaddq %ymm13,%ymm5,%ymm5 869 vpmuludq %ymm10,%ymm0,%ymm0 870 vmovdqu -8+256-128(%rsi),%ymm13 871 vpaddq %ymm0,%ymm6,%ymm6 872 vpmuludq %ymm10,%ymm12,%ymm12 873 vmovdqu -8+288-128(%rsi),%ymm9 874 vpaddq %ymm12,%ymm7,%ymm7 875 vpmuludq %ymm10,%ymm13,%ymm13 876 vpaddq %ymm13,%ymm8,%ymm8 877 vpmuludq %ymm10,%ymm9,%ymm9 878 vpbroadcastq 16(%r13),%ymm10 879 880 movq %rax,%rdx 881 imulq -128(%rcx),%rax 882 addq %rax,%r10 883 vmovdqu -8+32-128(%rcx),%ymm0 884 movq %rdx,%rax 885 imulq 8-128(%rcx),%rax 886 addq %rax,%r11 887 vmovdqu -8+64-128(%rcx),%ymm12 888 shrq $29,%r10 889 imulq 16-128(%rcx),%rdx 890 addq %rdx,%r12 891 addq %r10,%r11 892 893 vpmuludq %ymm11,%ymm0,%ymm0 894 vmovq %xmm10,%rbx 895 vmovdqu -8+96-128(%rcx),%ymm13 896 vpaddq %ymm0,%ymm1,%ymm1 897 vpmuludq %ymm11,%ymm12,%ymm12 898 vmovdqu -8+128-128(%rcx),%ymm0 899 vpaddq %ymm12,%ymm2,%ymm2 900 vpmuludq %ymm11,%ymm13,%ymm13 901 vmovdqu -8+160-128(%rcx),%ymm12 902 vpaddq %ymm13,%ymm3,%ymm3 903 vpmuludq %ymm11,%ymm0,%ymm0 904 vmovdqu -8+192-128(%rcx),%ymm13 905 vpaddq %ymm0,%ymm4,%ymm4 906 vpmuludq %ymm11,%ymm12,%ymm12 907 vmovdqu -8+224-128(%rcx),%ymm0 908 vpaddq %ymm12,%ymm5,%ymm5 909 vpmuludq %ymm11,%ymm13,%ymm13 910 vmovdqu -8+256-128(%rcx),%ymm12 911 vpaddq %ymm13,%ymm6,%ymm6 912 vpmuludq %ymm11,%ymm0,%ymm0 913 vmovdqu -8+288-128(%rcx),%ymm13 914 vpaddq %ymm0,%ymm7,%ymm7 915 vpmuludq %ymm11,%ymm12,%ymm12 916 vpaddq %ymm12,%ymm8,%ymm8 917 vpmuludq %ymm11,%ymm13,%ymm13 918 vpaddq %ymm13,%ymm9,%ymm9 919 920 vmovdqu -16+32-128(%rsi),%ymm0 921 movq %rbx,%rax 922 imulq -128(%rsi),%rax 923 addq %r11,%rax 924 925 vmovdqu -16+64-128(%rsi),%ymm12 926 movq %rax,%r11 927 imull %r8d,%eax 928 andl $0x1fffffff,%eax 929 930 imulq 8-128(%rsi),%rbx 931 addq %rbx,%r12 932 vpmuludq %ymm10,%ymm0,%ymm0 933 vmovd %eax,%xmm11 934 vmovdqu -16+96-128(%rsi),%ymm13 935 vpaddq %ymm0,%ymm1,%ymm1 936 vpmuludq %ymm10,%ymm12,%ymm12 937 vpbroadcastq %xmm11,%ymm11 938 vmovdqu -16+128-128(%rsi),%ymm0 939 vpaddq %ymm12,%ymm2,%ymm2 940 vpmuludq %ymm10,%ymm13,%ymm13 941 vmovdqu -16+160-128(%rsi),%ymm12 942 vpaddq %ymm13,%ymm3,%ymm3 943 vpmuludq %ymm10,%ymm0,%ymm0 944 vmovdqu -16+192-128(%rsi),%ymm13 945 vpaddq %ymm0,%ymm4,%ymm4 946 vpmuludq %ymm10,%ymm12,%ymm12 947 vmovdqu -16+224-128(%rsi),%ymm0 948 vpaddq %ymm12,%ymm5,%ymm5 949 vpmuludq %ymm10,%ymm13,%ymm13 950 vmovdqu -16+256-128(%rsi),%ymm12 951 vpaddq %ymm13,%ymm6,%ymm6 952 vpmuludq %ymm10,%ymm0,%ymm0 953 vmovdqu -16+288-128(%rsi),%ymm13 954 vpaddq %ymm0,%ymm7,%ymm7 955 vpmuludq %ymm10,%ymm12,%ymm12 956 vpaddq %ymm12,%ymm8,%ymm8 957 vpmuludq %ymm10,%ymm13,%ymm13 958 vpbroadcastq 24(%r13),%ymm10 959 vpaddq %ymm13,%ymm9,%ymm9 960 961 vmovdqu -16+32-128(%rcx),%ymm0 962 movq %rax,%rdx 963 imulq -128(%rcx),%rax 964 addq %rax,%r11 965 vmovdqu -16+64-128(%rcx),%ymm12 966 imulq 8-128(%rcx),%rdx 967 addq %rdx,%r12 968 shrq $29,%r11 969 970 vpmuludq %ymm11,%ymm0,%ymm0 971 vmovq %xmm10,%rbx 972 vmovdqu -16+96-128(%rcx),%ymm13 973 vpaddq %ymm0,%ymm1,%ymm1 974 vpmuludq %ymm11,%ymm12,%ymm12 975 vmovdqu -16+128-128(%rcx),%ymm0 976 vpaddq %ymm12,%ymm2,%ymm2 977 vpmuludq %ymm11,%ymm13,%ymm13 978 vmovdqu -16+160-128(%rcx),%ymm12 979 vpaddq %ymm13,%ymm3,%ymm3 980 vpmuludq %ymm11,%ymm0,%ymm0 981 vmovdqu -16+192-128(%rcx),%ymm13 982 vpaddq %ymm0,%ymm4,%ymm4 983 vpmuludq %ymm11,%ymm12,%ymm12 984 vmovdqu -16+224-128(%rcx),%ymm0 985 vpaddq %ymm12,%ymm5,%ymm5 986 vpmuludq %ymm11,%ymm13,%ymm13 987 vmovdqu -16+256-128(%rcx),%ymm12 988 vpaddq %ymm13,%ymm6,%ymm6 989 vpmuludq %ymm11,%ymm0,%ymm0 990 vmovdqu -16+288-128(%rcx),%ymm13 991 vpaddq %ymm0,%ymm7,%ymm7 992 vpmuludq %ymm11,%ymm12,%ymm12 993 vmovdqu -24+32-128(%rsi),%ymm0 994 vpaddq %ymm12,%ymm8,%ymm8 995 vpmuludq %ymm11,%ymm13,%ymm13 996 vmovdqu -24+64-128(%rsi),%ymm12 997 vpaddq %ymm13,%ymm9,%ymm9 998 999 addq %r11,%r12 1000 imulq -128(%rsi),%rbx 1001 addq %rbx,%r12 1002 1003 movq %r12,%rax 1004 imull %r8d,%eax 1005 andl $0x1fffffff,%eax 1006 1007 vpmuludq %ymm10,%ymm0,%ymm0 1008 vmovd %eax,%xmm11 1009 vmovdqu -24+96-128(%rsi),%ymm13 1010 vpaddq %ymm0,%ymm1,%ymm1 1011 vpmuludq %ymm10,%ymm12,%ymm12 1012 vpbroadcastq %xmm11,%ymm11 1013 vmovdqu -24+128-128(%rsi),%ymm0 1014 vpaddq %ymm12,%ymm2,%ymm2 1015 vpmuludq %ymm10,%ymm13,%ymm13 1016 vmovdqu -24+160-128(%rsi),%ymm12 1017 vpaddq %ymm13,%ymm3,%ymm3 1018 vpmuludq %ymm10,%ymm0,%ymm0 1019 vmovdqu -24+192-128(%rsi),%ymm13 1020 vpaddq %ymm0,%ymm4,%ymm4 1021 vpmuludq %ymm10,%ymm12,%ymm12 1022 vmovdqu -24+224-128(%rsi),%ymm0 1023 vpaddq %ymm12,%ymm5,%ymm5 1024 vpmuludq %ymm10,%ymm13,%ymm13 1025 vmovdqu -24+256-128(%rsi),%ymm12 1026 vpaddq %ymm13,%ymm6,%ymm6 1027 vpmuludq %ymm10,%ymm0,%ymm0 1028 vmovdqu -24+288-128(%rsi),%ymm13 1029 vpaddq %ymm0,%ymm7,%ymm7 1030 vpmuludq %ymm10,%ymm12,%ymm12 1031 vpaddq %ymm12,%ymm8,%ymm8 1032 vpmuludq %ymm10,%ymm13,%ymm13 1033 vpbroadcastq 32(%r13),%ymm10 1034 vpaddq %ymm13,%ymm9,%ymm9 1035 addq $32,%r13 1036 1037 vmovdqu -24+32-128(%rcx),%ymm0 1038 imulq -128(%rcx),%rax 1039 addq %rax,%r12 1040 shrq $29,%r12 1041 1042 vmovdqu -24+64-128(%rcx),%ymm12 1043 vpmuludq %ymm11,%ymm0,%ymm0 1044 vmovq %xmm10,%rbx 1045 vmovdqu -24+96-128(%rcx),%ymm13 1046 vpaddq %ymm0,%ymm1,%ymm0 1047 vpmuludq %ymm11,%ymm12,%ymm12 1048 vmovdqu %ymm0,(%rsp) 1049 vpaddq %ymm12,%ymm2,%ymm1 1050 vmovdqu -24+128-128(%rcx),%ymm0 1051 vpmuludq %ymm11,%ymm13,%ymm13 1052 vmovdqu -24+160-128(%rcx),%ymm12 1053 vpaddq %ymm13,%ymm3,%ymm2 1054 vpmuludq %ymm11,%ymm0,%ymm0 1055 vmovdqu -24+192-128(%rcx),%ymm13 1056 vpaddq %ymm0,%ymm4,%ymm3 1057 vpmuludq %ymm11,%ymm12,%ymm12 1058 vmovdqu -24+224-128(%rcx),%ymm0 1059 vpaddq %ymm12,%ymm5,%ymm4 1060 vpmuludq %ymm11,%ymm13,%ymm13 1061 vmovdqu -24+256-128(%rcx),%ymm12 1062 vpaddq %ymm13,%ymm6,%ymm5 1063 vpmuludq %ymm11,%ymm0,%ymm0 1064 vmovdqu -24+288-128(%rcx),%ymm13 1065 movq %r12,%r9 1066 vpaddq %ymm0,%ymm7,%ymm6 1067 vpmuludq %ymm11,%ymm12,%ymm12 1068 addq (%rsp),%r9 1069 vpaddq %ymm12,%ymm8,%ymm7 1070 vpmuludq %ymm11,%ymm13,%ymm13 1071 vmovq %r12,%xmm12 1072 vpaddq %ymm13,%ymm9,%ymm8 1073 1074 decl %r14d 1075 jnz .Loop_mul_1024 1076 vpaddq (%rsp),%ymm12,%ymm0 1077 1078 vpsrlq $29,%ymm0,%ymm12 1079 vpand %ymm15,%ymm0,%ymm0 1080 vpsrlq $29,%ymm1,%ymm13 1081 vpand %ymm15,%ymm1,%ymm1 1082 vpsrlq $29,%ymm2,%ymm10 1083 vpermq $0x93,%ymm12,%ymm12 1084 vpand %ymm15,%ymm2,%ymm2 1085 vpsrlq $29,%ymm3,%ymm11 1086 vpermq $0x93,%ymm13,%ymm13 1087 vpand %ymm15,%ymm3,%ymm3 1088 1089 vpblendd $3,%ymm14,%ymm12,%ymm9 1090 vpermq $0x93,%ymm10,%ymm10 1091 vpblendd $3,%ymm12,%ymm13,%ymm12 1092 vpermq $0x93,%ymm11,%ymm11 1093 vpaddq %ymm9,%ymm0,%ymm0 1094 vpblendd $3,%ymm13,%ymm10,%ymm13 1095 vpaddq %ymm12,%ymm1,%ymm1 1096 vpblendd $3,%ymm10,%ymm11,%ymm10 1097 vpaddq %ymm13,%ymm2,%ymm2 1098 vpblendd $3,%ymm11,%ymm14,%ymm11 1099 vpaddq %ymm10,%ymm3,%ymm3 1100 vpaddq %ymm11,%ymm4,%ymm4 1101 1102 vpsrlq $29,%ymm0,%ymm12 1103 vpand %ymm15,%ymm0,%ymm0 1104 vpsrlq $29,%ymm1,%ymm13 1105 vpand %ymm15,%ymm1,%ymm1 1106 vpsrlq $29,%ymm2,%ymm10 1107 vpermq $0x93,%ymm12,%ymm12 1108 vpand %ymm15,%ymm2,%ymm2 1109 vpsrlq $29,%ymm3,%ymm11 1110 vpermq $0x93,%ymm13,%ymm13 1111 vpand %ymm15,%ymm3,%ymm3 1112 vpermq $0x93,%ymm10,%ymm10 1113 1114 vpblendd $3,%ymm14,%ymm12,%ymm9 1115 vpermq $0x93,%ymm11,%ymm11 1116 vpblendd $3,%ymm12,%ymm13,%ymm12 1117 vpaddq %ymm9,%ymm0,%ymm0 1118 vpblendd $3,%ymm13,%ymm10,%ymm13 1119 vpaddq %ymm12,%ymm1,%ymm1 1120 vpblendd $3,%ymm10,%ymm11,%ymm10 1121 vpaddq %ymm13,%ymm2,%ymm2 1122 vpblendd $3,%ymm11,%ymm14,%ymm11 1123 vpaddq %ymm10,%ymm3,%ymm3 1124 vpaddq %ymm11,%ymm4,%ymm4 1125 1126 vmovdqu %ymm0,0-128(%rdi) 1127 vmovdqu %ymm1,32-128(%rdi) 1128 vmovdqu %ymm2,64-128(%rdi) 1129 vmovdqu %ymm3,96-128(%rdi) 1130 vpsrlq $29,%ymm4,%ymm12 1131 vpand %ymm15,%ymm4,%ymm4 1132 vpsrlq $29,%ymm5,%ymm13 1133 vpand %ymm15,%ymm5,%ymm5 1134 vpsrlq $29,%ymm6,%ymm10 1135 vpermq $0x93,%ymm12,%ymm12 1136 vpand %ymm15,%ymm6,%ymm6 1137 vpsrlq $29,%ymm7,%ymm11 1138 vpermq $0x93,%ymm13,%ymm13 1139 vpand %ymm15,%ymm7,%ymm7 1140 vpsrlq $29,%ymm8,%ymm0 1141 vpermq $0x93,%ymm10,%ymm10 1142 vpand %ymm15,%ymm8,%ymm8 1143 vpermq $0x93,%ymm11,%ymm11 1144 1145 vpblendd $3,%ymm14,%ymm12,%ymm9 1146 vpermq $0x93,%ymm0,%ymm0 1147 vpblendd $3,%ymm12,%ymm13,%ymm12 1148 vpaddq %ymm9,%ymm4,%ymm4 1149 vpblendd $3,%ymm13,%ymm10,%ymm13 1150 vpaddq %ymm12,%ymm5,%ymm5 1151 vpblendd $3,%ymm10,%ymm11,%ymm10 1152 vpaddq %ymm13,%ymm6,%ymm6 1153 vpblendd $3,%ymm11,%ymm0,%ymm11 1154 vpaddq %ymm10,%ymm7,%ymm7 1155 vpaddq %ymm11,%ymm8,%ymm8 1156 1157 vpsrlq $29,%ymm4,%ymm12 1158 vpand %ymm15,%ymm4,%ymm4 1159 vpsrlq $29,%ymm5,%ymm13 1160 vpand %ymm15,%ymm5,%ymm5 1161 vpsrlq $29,%ymm6,%ymm10 1162 vpermq $0x93,%ymm12,%ymm12 1163 vpand %ymm15,%ymm6,%ymm6 1164 vpsrlq $29,%ymm7,%ymm11 1165 vpermq $0x93,%ymm13,%ymm13 1166 vpand %ymm15,%ymm7,%ymm7 1167 vpsrlq $29,%ymm8,%ymm0 1168 vpermq $0x93,%ymm10,%ymm10 1169 vpand %ymm15,%ymm8,%ymm8 1170 vpermq $0x93,%ymm11,%ymm11 1171 1172 vpblendd $3,%ymm14,%ymm12,%ymm9 1173 vpermq $0x93,%ymm0,%ymm0 1174 vpblendd $3,%ymm12,%ymm13,%ymm12 1175 vpaddq %ymm9,%ymm4,%ymm4 1176 vpblendd $3,%ymm13,%ymm10,%ymm13 1177 vpaddq %ymm12,%ymm5,%ymm5 1178 vpblendd $3,%ymm10,%ymm11,%ymm10 1179 vpaddq %ymm13,%ymm6,%ymm6 1180 vpblendd $3,%ymm11,%ymm0,%ymm11 1181 vpaddq %ymm10,%ymm7,%ymm7 1182 vpaddq %ymm11,%ymm8,%ymm8 1183 1184 vmovdqu %ymm4,128-128(%rdi) 1185 vmovdqu %ymm5,160-128(%rdi) 1186 vmovdqu %ymm6,192-128(%rdi) 1187 vmovdqu %ymm7,224-128(%rdi) 1188 vmovdqu %ymm8,256-128(%rdi) 1189 vzeroupper 1190 1191 movq %rbp,%rax 1192.cfi_def_cfa_register %rax 1193 movq -48(%rax),%r15 1194.cfi_restore %r15 1195 movq -40(%rax),%r14 1196.cfi_restore %r14 1197 movq -32(%rax),%r13 1198.cfi_restore %r13 1199 movq -24(%rax),%r12 1200.cfi_restore %r12 1201 movq -16(%rax),%rbp 1202.cfi_restore %rbp 1203 movq -8(%rax),%rbx 1204.cfi_restore %rbx 1205 leaq (%rax),%rsp 1206.cfi_def_cfa_register %rsp 1207.Lmul_1024_epilogue: 1208 .byte 0xf3,0xc3 1209.cfi_endproc 1210.size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2 1211.globl rsaz_1024_red2norm_avx2 1212.type rsaz_1024_red2norm_avx2,@function 1213.align 32 1214rsaz_1024_red2norm_avx2: 1215.cfi_startproc 1216 subq $-128,%rsi 1217 xorq %rax,%rax 1218 movq -128(%rsi),%r8 1219 movq -120(%rsi),%r9 1220 movq -112(%rsi),%r10 1221 shlq $0,%r8 1222 shlq $29,%r9 1223 movq %r10,%r11 1224 shlq $58,%r10 1225 shrq $6,%r11 1226 addq %r8,%rax 1227 addq %r9,%rax 1228 addq %r10,%rax 1229 adcq $0,%r11 1230 movq %rax,0(%rdi) 1231 movq %r11,%rax 1232 movq -104(%rsi),%r8 1233 movq -96(%rsi),%r9 1234 shlq $23,%r8 1235 movq %r9,%r10 1236 shlq $52,%r9 1237 shrq $12,%r10 1238 addq %r8,%rax 1239 addq %r9,%rax 1240 adcq $0,%r10 1241 movq %rax,8(%rdi) 1242 movq %r10,%rax 1243 movq -88(%rsi),%r11 1244 movq -80(%rsi),%r8 1245 shlq $17,%r11 1246 movq %r8,%r9 1247 shlq $46,%r8 1248 shrq $18,%r9 1249 addq %r11,%rax 1250 addq %r8,%rax 1251 adcq $0,%r9 1252 movq %rax,16(%rdi) 1253 movq %r9,%rax 1254 movq -72(%rsi),%r10 1255 movq -64(%rsi),%r11 1256 shlq $11,%r10 1257 movq %r11,%r8 1258 shlq $40,%r11 1259 shrq $24,%r8 1260 addq %r10,%rax 1261 addq %r11,%rax 1262 adcq $0,%r8 1263 movq %rax,24(%rdi) 1264 movq %r8,%rax 1265 movq -56(%rsi),%r9 1266 movq -48(%rsi),%r10 1267 movq -40(%rsi),%r11 1268 shlq $5,%r9 1269 shlq $34,%r10 1270 movq %r11,%r8 1271 shlq $63,%r11 1272 shrq $1,%r8 1273 addq %r9,%rax 1274 addq %r10,%rax 1275 addq %r11,%rax 1276 adcq $0,%r8 1277 movq %rax,32(%rdi) 1278 movq %r8,%rax 1279 movq -32(%rsi),%r9 1280 movq -24(%rsi),%r10 1281 shlq $28,%r9 1282 movq %r10,%r11 1283 shlq $57,%r10 1284 shrq $7,%r11 1285 addq %r9,%rax 1286 addq %r10,%rax 1287 adcq $0,%r11 1288 movq %rax,40(%rdi) 1289 movq %r11,%rax 1290 movq -16(%rsi),%r8 1291 movq -8(%rsi),%r9 1292 shlq $22,%r8 1293 movq %r9,%r10 1294 shlq $51,%r9 1295 shrq $13,%r10 1296 addq %r8,%rax 1297 addq %r9,%rax 1298 adcq $0,%r10 1299 movq %rax,48(%rdi) 1300 movq %r10,%rax 1301 movq 0(%rsi),%r11 1302 movq 8(%rsi),%r8 1303 shlq $16,%r11 1304 movq %r8,%r9 1305 shlq $45,%r8 1306 shrq $19,%r9 1307 addq %r11,%rax 1308 addq %r8,%rax 1309 adcq $0,%r9 1310 movq %rax,56(%rdi) 1311 movq %r9,%rax 1312 movq 16(%rsi),%r10 1313 movq 24(%rsi),%r11 1314 shlq $10,%r10 1315 movq %r11,%r8 1316 shlq $39,%r11 1317 shrq $25,%r8 1318 addq %r10,%rax 1319 addq %r11,%rax 1320 adcq $0,%r8 1321 movq %rax,64(%rdi) 1322 movq %r8,%rax 1323 movq 32(%rsi),%r9 1324 movq 40(%rsi),%r10 1325 movq 48(%rsi),%r11 1326 shlq $4,%r9 1327 shlq $33,%r10 1328 movq %r11,%r8 1329 shlq $62,%r11 1330 shrq $2,%r8 1331 addq %r9,%rax 1332 addq %r10,%rax 1333 addq %r11,%rax 1334 adcq $0,%r8 1335 movq %rax,72(%rdi) 1336 movq %r8,%rax 1337 movq 56(%rsi),%r9 1338 movq 64(%rsi),%r10 1339 shlq $27,%r9 1340 movq %r10,%r11 1341 shlq $56,%r10 1342 shrq $8,%r11 1343 addq %r9,%rax 1344 addq %r10,%rax 1345 adcq $0,%r11 1346 movq %rax,80(%rdi) 1347 movq %r11,%rax 1348 movq 72(%rsi),%r8 1349 movq 80(%rsi),%r9 1350 shlq $21,%r8 1351 movq %r9,%r10 1352 shlq $50,%r9 1353 shrq $14,%r10 1354 addq %r8,%rax 1355 addq %r9,%rax 1356 adcq $0,%r10 1357 movq %rax,88(%rdi) 1358 movq %r10,%rax 1359 movq 88(%rsi),%r11 1360 movq 96(%rsi),%r8 1361 shlq $15,%r11 1362 movq %r8,%r9 1363 shlq $44,%r8 1364 shrq $20,%r9 1365 addq %r11,%rax 1366 addq %r8,%rax 1367 adcq $0,%r9 1368 movq %rax,96(%rdi) 1369 movq %r9,%rax 1370 movq 104(%rsi),%r10 1371 movq 112(%rsi),%r11 1372 shlq $9,%r10 1373 movq %r11,%r8 1374 shlq $38,%r11 1375 shrq $26,%r8 1376 addq %r10,%rax 1377 addq %r11,%rax 1378 adcq $0,%r8 1379 movq %rax,104(%rdi) 1380 movq %r8,%rax 1381 movq 120(%rsi),%r9 1382 movq 128(%rsi),%r10 1383 movq 136(%rsi),%r11 1384 shlq $3,%r9 1385 shlq $32,%r10 1386 movq %r11,%r8 1387 shlq $61,%r11 1388 shrq $3,%r8 1389 addq %r9,%rax 1390 addq %r10,%rax 1391 addq %r11,%rax 1392 adcq $0,%r8 1393 movq %rax,112(%rdi) 1394 movq %r8,%rax 1395 movq 144(%rsi),%r9 1396 movq 152(%rsi),%r10 1397 shlq $26,%r9 1398 movq %r10,%r11 1399 shlq $55,%r10 1400 shrq $9,%r11 1401 addq %r9,%rax 1402 addq %r10,%rax 1403 adcq $0,%r11 1404 movq %rax,120(%rdi) 1405 movq %r11,%rax 1406 .byte 0xf3,0xc3 1407.cfi_endproc 1408.size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2 1409 1410.globl rsaz_1024_norm2red_avx2 1411.type rsaz_1024_norm2red_avx2,@function 1412.align 32 1413rsaz_1024_norm2red_avx2: 1414.cfi_startproc 1415 subq $-128,%rdi 1416 movq (%rsi),%r8 1417 movl $0x1fffffff,%eax 1418 movq 8(%rsi),%r9 1419 movq %r8,%r11 1420 shrq $0,%r11 1421 andq %rax,%r11 1422 movq %r11,-128(%rdi) 1423 movq %r8,%r10 1424 shrq $29,%r10 1425 andq %rax,%r10 1426 movq %r10,-120(%rdi) 1427 shrdq $58,%r9,%r8 1428 andq %rax,%r8 1429 movq %r8,-112(%rdi) 1430 movq 16(%rsi),%r10 1431 movq %r9,%r8 1432 shrq $23,%r8 1433 andq %rax,%r8 1434 movq %r8,-104(%rdi) 1435 shrdq $52,%r10,%r9 1436 andq %rax,%r9 1437 movq %r9,-96(%rdi) 1438 movq 24(%rsi),%r11 1439 movq %r10,%r9 1440 shrq $17,%r9 1441 andq %rax,%r9 1442 movq %r9,-88(%rdi) 1443 shrdq $46,%r11,%r10 1444 andq %rax,%r10 1445 movq %r10,-80(%rdi) 1446 movq 32(%rsi),%r8 1447 movq %r11,%r10 1448 shrq $11,%r10 1449 andq %rax,%r10 1450 movq %r10,-72(%rdi) 1451 shrdq $40,%r8,%r11 1452 andq %rax,%r11 1453 movq %r11,-64(%rdi) 1454 movq 40(%rsi),%r9 1455 movq %r8,%r11 1456 shrq $5,%r11 1457 andq %rax,%r11 1458 movq %r11,-56(%rdi) 1459 movq %r8,%r10 1460 shrq $34,%r10 1461 andq %rax,%r10 1462 movq %r10,-48(%rdi) 1463 shrdq $63,%r9,%r8 1464 andq %rax,%r8 1465 movq %r8,-40(%rdi) 1466 movq 48(%rsi),%r10 1467 movq %r9,%r8 1468 shrq $28,%r8 1469 andq %rax,%r8 1470 movq %r8,-32(%rdi) 1471 shrdq $57,%r10,%r9 1472 andq %rax,%r9 1473 movq %r9,-24(%rdi) 1474 movq 56(%rsi),%r11 1475 movq %r10,%r9 1476 shrq $22,%r9 1477 andq %rax,%r9 1478 movq %r9,-16(%rdi) 1479 shrdq $51,%r11,%r10 1480 andq %rax,%r10 1481 movq %r10,-8(%rdi) 1482 movq 64(%rsi),%r8 1483 movq %r11,%r10 1484 shrq $16,%r10 1485 andq %rax,%r10 1486 movq %r10,0(%rdi) 1487 shrdq $45,%r8,%r11 1488 andq %rax,%r11 1489 movq %r11,8(%rdi) 1490 movq 72(%rsi),%r9 1491 movq %r8,%r11 1492 shrq $10,%r11 1493 andq %rax,%r11 1494 movq %r11,16(%rdi) 1495 shrdq $39,%r9,%r8 1496 andq %rax,%r8 1497 movq %r8,24(%rdi) 1498 movq 80(%rsi),%r10 1499 movq %r9,%r8 1500 shrq $4,%r8 1501 andq %rax,%r8 1502 movq %r8,32(%rdi) 1503 movq %r9,%r11 1504 shrq $33,%r11 1505 andq %rax,%r11 1506 movq %r11,40(%rdi) 1507 shrdq $62,%r10,%r9 1508 andq %rax,%r9 1509 movq %r9,48(%rdi) 1510 movq 88(%rsi),%r11 1511 movq %r10,%r9 1512 shrq $27,%r9 1513 andq %rax,%r9 1514 movq %r9,56(%rdi) 1515 shrdq $56,%r11,%r10 1516 andq %rax,%r10 1517 movq %r10,64(%rdi) 1518 movq 96(%rsi),%r8 1519 movq %r11,%r10 1520 shrq $21,%r10 1521 andq %rax,%r10 1522 movq %r10,72(%rdi) 1523 shrdq $50,%r8,%r11 1524 andq %rax,%r11 1525 movq %r11,80(%rdi) 1526 movq 104(%rsi),%r9 1527 movq %r8,%r11 1528 shrq $15,%r11 1529 andq %rax,%r11 1530 movq %r11,88(%rdi) 1531 shrdq $44,%r9,%r8 1532 andq %rax,%r8 1533 movq %r8,96(%rdi) 1534 movq 112(%rsi),%r10 1535 movq %r9,%r8 1536 shrq $9,%r8 1537 andq %rax,%r8 1538 movq %r8,104(%rdi) 1539 shrdq $38,%r10,%r9 1540 andq %rax,%r9 1541 movq %r9,112(%rdi) 1542 movq 120(%rsi),%r11 1543 movq %r10,%r9 1544 shrq $3,%r9 1545 andq %rax,%r9 1546 movq %r9,120(%rdi) 1547 movq %r10,%r8 1548 shrq $32,%r8 1549 andq %rax,%r8 1550 movq %r8,128(%rdi) 1551 shrdq $61,%r11,%r10 1552 andq %rax,%r10 1553 movq %r10,136(%rdi) 1554 xorq %r8,%r8 1555 movq %r11,%r10 1556 shrq $26,%r10 1557 andq %rax,%r10 1558 movq %r10,144(%rdi) 1559 shrdq $55,%r8,%r11 1560 andq %rax,%r11 1561 movq %r11,152(%rdi) 1562 movq %r8,160(%rdi) 1563 movq %r8,168(%rdi) 1564 movq %r8,176(%rdi) 1565 movq %r8,184(%rdi) 1566 .byte 0xf3,0xc3 1567.cfi_endproc 1568.size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2 1569.globl rsaz_1024_scatter5_avx2 1570.type rsaz_1024_scatter5_avx2,@function 1571.align 32 1572rsaz_1024_scatter5_avx2: 1573.cfi_startproc 1574 vzeroupper 1575 vmovdqu .Lscatter_permd(%rip),%ymm5 1576 shll $4,%edx 1577 leaq (%rdi,%rdx,1),%rdi 1578 movl $9,%eax 1579 jmp .Loop_scatter_1024 1580 1581.align 32 1582.Loop_scatter_1024: 1583 vmovdqu (%rsi),%ymm0 1584 leaq 32(%rsi),%rsi 1585 vpermd %ymm0,%ymm5,%ymm0 1586 vmovdqu %xmm0,(%rdi) 1587 leaq 512(%rdi),%rdi 1588 decl %eax 1589 jnz .Loop_scatter_1024 1590 1591 vzeroupper 1592 .byte 0xf3,0xc3 1593.cfi_endproc 1594.size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2 1595 1596.globl rsaz_1024_gather5_avx2 1597.type rsaz_1024_gather5_avx2,@function 1598.align 32 1599rsaz_1024_gather5_avx2: 1600.cfi_startproc 1601 vzeroupper 1602 movq %rsp,%r11 1603.cfi_def_cfa_register %r11 1604 leaq -256(%rsp),%rsp 1605 andq $-32,%rsp 1606 leaq .Linc(%rip),%r10 1607 leaq -128(%rsp),%rax 1608 1609 vmovd %edx,%xmm4 1610 vmovdqa (%r10),%ymm0 1611 vmovdqa 32(%r10),%ymm1 1612 vmovdqa 64(%r10),%ymm5 1613 vpbroadcastd %xmm4,%ymm4 1614 1615 vpaddd %ymm5,%ymm0,%ymm2 1616 vpcmpeqd %ymm4,%ymm0,%ymm0 1617 vpaddd %ymm5,%ymm1,%ymm3 1618 vpcmpeqd %ymm4,%ymm1,%ymm1 1619 vmovdqa %ymm0,0+128(%rax) 1620 vpaddd %ymm5,%ymm2,%ymm0 1621 vpcmpeqd %ymm4,%ymm2,%ymm2 1622 vmovdqa %ymm1,32+128(%rax) 1623 vpaddd %ymm5,%ymm3,%ymm1 1624 vpcmpeqd %ymm4,%ymm3,%ymm3 1625 vmovdqa %ymm2,64+128(%rax) 1626 vpaddd %ymm5,%ymm0,%ymm2 1627 vpcmpeqd %ymm4,%ymm0,%ymm0 1628 vmovdqa %ymm3,96+128(%rax) 1629 vpaddd %ymm5,%ymm1,%ymm3 1630 vpcmpeqd %ymm4,%ymm1,%ymm1 1631 vmovdqa %ymm0,128+128(%rax) 1632 vpaddd %ymm5,%ymm2,%ymm8 1633 vpcmpeqd %ymm4,%ymm2,%ymm2 1634 vmovdqa %ymm1,160+128(%rax) 1635 vpaddd %ymm5,%ymm3,%ymm9 1636 vpcmpeqd %ymm4,%ymm3,%ymm3 1637 vmovdqa %ymm2,192+128(%rax) 1638 vpaddd %ymm5,%ymm8,%ymm10 1639 vpcmpeqd %ymm4,%ymm8,%ymm8 1640 vmovdqa %ymm3,224+128(%rax) 1641 vpaddd %ymm5,%ymm9,%ymm11 1642 vpcmpeqd %ymm4,%ymm9,%ymm9 1643 vpaddd %ymm5,%ymm10,%ymm12 1644 vpcmpeqd %ymm4,%ymm10,%ymm10 1645 vpaddd %ymm5,%ymm11,%ymm13 1646 vpcmpeqd %ymm4,%ymm11,%ymm11 1647 vpaddd %ymm5,%ymm12,%ymm14 1648 vpcmpeqd %ymm4,%ymm12,%ymm12 1649 vpaddd %ymm5,%ymm13,%ymm15 1650 vpcmpeqd %ymm4,%ymm13,%ymm13 1651 vpcmpeqd %ymm4,%ymm14,%ymm14 1652 vpcmpeqd %ymm4,%ymm15,%ymm15 1653 1654 vmovdqa -32(%r10),%ymm7 1655 leaq 128(%rsi),%rsi 1656 movl $9,%edx 1657 1658.Loop_gather_1024: 1659 vmovdqa 0-128(%rsi),%ymm0 1660 vmovdqa 32-128(%rsi),%ymm1 1661 vmovdqa 64-128(%rsi),%ymm2 1662 vmovdqa 96-128(%rsi),%ymm3 1663 vpand 0+128(%rax),%ymm0,%ymm0 1664 vpand 32+128(%rax),%ymm1,%ymm1 1665 vpand 64+128(%rax),%ymm2,%ymm2 1666 vpor %ymm0,%ymm1,%ymm4 1667 vpand 96+128(%rax),%ymm3,%ymm3 1668 vmovdqa 128-128(%rsi),%ymm0 1669 vmovdqa 160-128(%rsi),%ymm1 1670 vpor %ymm2,%ymm3,%ymm5 1671 vmovdqa 192-128(%rsi),%ymm2 1672 vmovdqa 224-128(%rsi),%ymm3 1673 vpand 128+128(%rax),%ymm0,%ymm0 1674 vpand 160+128(%rax),%ymm1,%ymm1 1675 vpand 192+128(%rax),%ymm2,%ymm2 1676 vpor %ymm0,%ymm4,%ymm4 1677 vpand 224+128(%rax),%ymm3,%ymm3 1678 vpand 256-128(%rsi),%ymm8,%ymm0 1679 vpor %ymm1,%ymm5,%ymm5 1680 vpand 288-128(%rsi),%ymm9,%ymm1 1681 vpor %ymm2,%ymm4,%ymm4 1682 vpand 320-128(%rsi),%ymm10,%ymm2 1683 vpor %ymm3,%ymm5,%ymm5 1684 vpand 352-128(%rsi),%ymm11,%ymm3 1685 vpor %ymm0,%ymm4,%ymm4 1686 vpand 384-128(%rsi),%ymm12,%ymm0 1687 vpor %ymm1,%ymm5,%ymm5 1688 vpand 416-128(%rsi),%ymm13,%ymm1 1689 vpor %ymm2,%ymm4,%ymm4 1690 vpand 448-128(%rsi),%ymm14,%ymm2 1691 vpor %ymm3,%ymm5,%ymm5 1692 vpand 480-128(%rsi),%ymm15,%ymm3 1693 leaq 512(%rsi),%rsi 1694 vpor %ymm0,%ymm4,%ymm4 1695 vpor %ymm1,%ymm5,%ymm5 1696 vpor %ymm2,%ymm4,%ymm4 1697 vpor %ymm3,%ymm5,%ymm5 1698 1699 vpor %ymm5,%ymm4,%ymm4 1700 vextracti128 $1,%ymm4,%xmm5 1701 vpor %xmm4,%xmm5,%xmm5 1702 vpermd %ymm5,%ymm7,%ymm5 1703 vmovdqu %ymm5,(%rdi) 1704 leaq 32(%rdi),%rdi 1705 decl %edx 1706 jnz .Loop_gather_1024 1707 1708 vpxor %ymm0,%ymm0,%ymm0 1709 vmovdqu %ymm0,(%rdi) 1710 vzeroupper 1711 leaq (%r11),%rsp 1712.cfi_def_cfa_register %rsp 1713 .byte 0xf3,0xc3 1714.cfi_endproc 1715.LSEH_end_rsaz_1024_gather5: 1716.size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2 1717 1718.globl rsaz_avx2_eligible 1719.type rsaz_avx2_eligible,@function 1720.align 32 1721rsaz_avx2_eligible: 1722 movl OPENSSL_ia32cap_P+8(%rip),%eax 1723 movl $524544,%ecx 1724 movl $0,%edx 1725 andl %eax,%ecx 1726 cmpl $524544,%ecx 1727 cmovel %edx,%eax 1728 andl $32,%eax 1729 shrl $5,%eax 1730 .byte 0xf3,0xc3 1731.size rsaz_avx2_eligible,.-rsaz_avx2_eligible 1732 1733.align 64 1734.Land_mask: 1735.quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff 1736.Lscatter_permd: 1737.long 0,2,4,6,7,7,7,7 1738.Lgather_permd: 1739.long 0,7,1,7,2,7,3,7 1740.Linc: 1741.long 0,0,0,0, 1,1,1,1 1742.long 2,2,2,2, 3,3,3,3 1743.long 4,4,4,4, 4,4,4,4 1744.align 64 1745