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