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