1/* $FreeBSD$ */ 2/* Do not modify. This file is auto-generated from rsaz-avx2.pl. */ 3.text 4 5.globl 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 vmovdqu .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.type rsaz_1024_mul_avx2,@function 660.align 64 661rsaz_1024_mul_avx2: 662.cfi_startproc 663 leaq (%rsp),%rax 664.cfi_def_cfa_register %rax 665 pushq %rbx 666.cfi_offset %rbx,-16 667 pushq %rbp 668.cfi_offset %rbp,-24 669 pushq %r12 670.cfi_offset %r12,-32 671 pushq %r13 672.cfi_offset %r13,-40 673 pushq %r14 674.cfi_offset %r14,-48 675 pushq %r15 676.cfi_offset %r15,-56 677 movq %rax,%rbp 678.cfi_def_cfa_register %rbp 679 vzeroall 680 movq %rdx,%r13 681 subq $64,%rsp 682 683 684 685 686 687 688.byte 0x67,0x67 689 movq %rsi,%r15 690 andq $4095,%r15 691 addq $320,%r15 692 shrq $12,%r15 693 movq %rsi,%r15 694 cmovnzq %r13,%rsi 695 cmovnzq %r15,%r13 696 697 movq %rcx,%r15 698 subq $-128,%rsi 699 subq $-128,%rcx 700 subq $-128,%rdi 701 702 andq $4095,%r15 703 addq $320,%r15 704.byte 0x67,0x67 705 shrq $12,%r15 706 jz .Lmul_1024_no_n_copy 707 708 709 710 711 712 subq $320,%rsp 713 vmovdqu 0-128(%rcx),%ymm0 714 andq $-512,%rsp 715 vmovdqu 32-128(%rcx),%ymm1 716 vmovdqu 64-128(%rcx),%ymm2 717 vmovdqu 96-128(%rcx),%ymm3 718 vmovdqu 128-128(%rcx),%ymm4 719 vmovdqu 160-128(%rcx),%ymm5 720 vmovdqu 192-128(%rcx),%ymm6 721 vmovdqu 224-128(%rcx),%ymm7 722 vmovdqu 256-128(%rcx),%ymm8 723 leaq 64+128(%rsp),%rcx 724 vmovdqu %ymm0,0-128(%rcx) 725 vpxor %ymm0,%ymm0,%ymm0 726 vmovdqu %ymm1,32-128(%rcx) 727 vpxor %ymm1,%ymm1,%ymm1 728 vmovdqu %ymm2,64-128(%rcx) 729 vpxor %ymm2,%ymm2,%ymm2 730 vmovdqu %ymm3,96-128(%rcx) 731 vpxor %ymm3,%ymm3,%ymm3 732 vmovdqu %ymm4,128-128(%rcx) 733 vpxor %ymm4,%ymm4,%ymm4 734 vmovdqu %ymm5,160-128(%rcx) 735 vpxor %ymm5,%ymm5,%ymm5 736 vmovdqu %ymm6,192-128(%rcx) 737 vpxor %ymm6,%ymm6,%ymm6 738 vmovdqu %ymm7,224-128(%rcx) 739 vpxor %ymm7,%ymm7,%ymm7 740 vmovdqu %ymm8,256-128(%rcx) 741 vmovdqa %ymm0,%ymm8 742 vmovdqu %ymm9,288-128(%rcx) 743.Lmul_1024_no_n_copy: 744 andq $-64,%rsp 745 746 movq (%r13),%rbx 747 vpbroadcastq (%r13),%ymm10 748 vmovdqu %ymm0,(%rsp) 749 xorq %r9,%r9 750.byte 0x67 751 xorq %r10,%r10 752 xorq %r11,%r11 753 xorq %r12,%r12 754 755 vmovdqu .Land_mask(%rip),%ymm15 756 movl $9,%r14d 757 vmovdqu %ymm9,288-128(%rdi) 758 jmp .Loop_mul_1024 759 760.align 32 761.Loop_mul_1024: 762 vpsrlq $29,%ymm3,%ymm9 763 movq %rbx,%rax 764 imulq -128(%rsi),%rax 765 addq %r9,%rax 766 movq %rbx,%r10 767 imulq 8-128(%rsi),%r10 768 addq 8(%rsp),%r10 769 770 movq %rax,%r9 771 imull %r8d,%eax 772 andl $0x1fffffff,%eax 773 774 movq %rbx,%r11 775 imulq 16-128(%rsi),%r11 776 addq 16(%rsp),%r11 777 778 movq %rbx,%r12 779 imulq 24-128(%rsi),%r12 780 addq 24(%rsp),%r12 781 vpmuludq 32-128(%rsi),%ymm10,%ymm0 782 vmovd %eax,%xmm11 783 vpaddq %ymm0,%ymm1,%ymm1 784 vpmuludq 64-128(%rsi),%ymm10,%ymm12 785 vpbroadcastq %xmm11,%ymm11 786 vpaddq %ymm12,%ymm2,%ymm2 787 vpmuludq 96-128(%rsi),%ymm10,%ymm13 788 vpand %ymm15,%ymm3,%ymm3 789 vpaddq %ymm13,%ymm3,%ymm3 790 vpmuludq 128-128(%rsi),%ymm10,%ymm0 791 vpaddq %ymm0,%ymm4,%ymm4 792 vpmuludq 160-128(%rsi),%ymm10,%ymm12 793 vpaddq %ymm12,%ymm5,%ymm5 794 vpmuludq 192-128(%rsi),%ymm10,%ymm13 795 vpaddq %ymm13,%ymm6,%ymm6 796 vpmuludq 224-128(%rsi),%ymm10,%ymm0 797 vpermq $0x93,%ymm9,%ymm9 798 vpaddq %ymm0,%ymm7,%ymm7 799 vpmuludq 256-128(%rsi),%ymm10,%ymm12 800 vpbroadcastq 8(%r13),%ymm10 801 vpaddq %ymm12,%ymm8,%ymm8 802 803 movq %rax,%rdx 804 imulq -128(%rcx),%rax 805 addq %rax,%r9 806 movq %rdx,%rax 807 imulq 8-128(%rcx),%rax 808 addq %rax,%r10 809 movq %rdx,%rax 810 imulq 16-128(%rcx),%rax 811 addq %rax,%r11 812 shrq $29,%r9 813 imulq 24-128(%rcx),%rdx 814 addq %rdx,%r12 815 addq %r9,%r10 816 817 vpmuludq 32-128(%rcx),%ymm11,%ymm13 818 vmovq %xmm10,%rbx 819 vpaddq %ymm13,%ymm1,%ymm1 820 vpmuludq 64-128(%rcx),%ymm11,%ymm0 821 vpaddq %ymm0,%ymm2,%ymm2 822 vpmuludq 96-128(%rcx),%ymm11,%ymm12 823 vpaddq %ymm12,%ymm3,%ymm3 824 vpmuludq 128-128(%rcx),%ymm11,%ymm13 825 vpaddq %ymm13,%ymm4,%ymm4 826 vpmuludq 160-128(%rcx),%ymm11,%ymm0 827 vpaddq %ymm0,%ymm5,%ymm5 828 vpmuludq 192-128(%rcx),%ymm11,%ymm12 829 vpaddq %ymm12,%ymm6,%ymm6 830 vpmuludq 224-128(%rcx),%ymm11,%ymm13 831 vpblendd $3,%ymm14,%ymm9,%ymm12 832 vpaddq %ymm13,%ymm7,%ymm7 833 vpmuludq 256-128(%rcx),%ymm11,%ymm0 834 vpaddq %ymm12,%ymm3,%ymm3 835 vpaddq %ymm0,%ymm8,%ymm8 836 837 movq %rbx,%rax 838 imulq -128(%rsi),%rax 839 addq %rax,%r10 840 vmovdqu -8+32-128(%rsi),%ymm12 841 movq %rbx,%rax 842 imulq 8-128(%rsi),%rax 843 addq %rax,%r11 844 vmovdqu -8+64-128(%rsi),%ymm13 845 846 movq %r10,%rax 847 vpblendd $0xfc,%ymm14,%ymm9,%ymm9 848 imull %r8d,%eax 849 vpaddq %ymm9,%ymm4,%ymm4 850 andl $0x1fffffff,%eax 851 852 imulq 16-128(%rsi),%rbx 853 addq %rbx,%r12 854 vpmuludq %ymm10,%ymm12,%ymm12 855 vmovd %eax,%xmm11 856 vmovdqu -8+96-128(%rsi),%ymm0 857 vpaddq %ymm12,%ymm1,%ymm1 858 vpmuludq %ymm10,%ymm13,%ymm13 859 vpbroadcastq %xmm11,%ymm11 860 vmovdqu -8+128-128(%rsi),%ymm12 861 vpaddq %ymm13,%ymm2,%ymm2 862 vpmuludq %ymm10,%ymm0,%ymm0 863 vmovdqu -8+160-128(%rsi),%ymm13 864 vpaddq %ymm0,%ymm3,%ymm3 865 vpmuludq %ymm10,%ymm12,%ymm12 866 vmovdqu -8+192-128(%rsi),%ymm0 867 vpaddq %ymm12,%ymm4,%ymm4 868 vpmuludq %ymm10,%ymm13,%ymm13 869 vmovdqu -8+224-128(%rsi),%ymm12 870 vpaddq %ymm13,%ymm5,%ymm5 871 vpmuludq %ymm10,%ymm0,%ymm0 872 vmovdqu -8+256-128(%rsi),%ymm13 873 vpaddq %ymm0,%ymm6,%ymm6 874 vpmuludq %ymm10,%ymm12,%ymm12 875 vmovdqu -8+288-128(%rsi),%ymm9 876 vpaddq %ymm12,%ymm7,%ymm7 877 vpmuludq %ymm10,%ymm13,%ymm13 878 vpaddq %ymm13,%ymm8,%ymm8 879 vpmuludq %ymm10,%ymm9,%ymm9 880 vpbroadcastq 16(%r13),%ymm10 881 882 movq %rax,%rdx 883 imulq -128(%rcx),%rax 884 addq %rax,%r10 885 vmovdqu -8+32-128(%rcx),%ymm0 886 movq %rdx,%rax 887 imulq 8-128(%rcx),%rax 888 addq %rax,%r11 889 vmovdqu -8+64-128(%rcx),%ymm12 890 shrq $29,%r10 891 imulq 16-128(%rcx),%rdx 892 addq %rdx,%r12 893 addq %r10,%r11 894 895 vpmuludq %ymm11,%ymm0,%ymm0 896 vmovq %xmm10,%rbx 897 vmovdqu -8+96-128(%rcx),%ymm13 898 vpaddq %ymm0,%ymm1,%ymm1 899 vpmuludq %ymm11,%ymm12,%ymm12 900 vmovdqu -8+128-128(%rcx),%ymm0 901 vpaddq %ymm12,%ymm2,%ymm2 902 vpmuludq %ymm11,%ymm13,%ymm13 903 vmovdqu -8+160-128(%rcx),%ymm12 904 vpaddq %ymm13,%ymm3,%ymm3 905 vpmuludq %ymm11,%ymm0,%ymm0 906 vmovdqu -8+192-128(%rcx),%ymm13 907 vpaddq %ymm0,%ymm4,%ymm4 908 vpmuludq %ymm11,%ymm12,%ymm12 909 vmovdqu -8+224-128(%rcx),%ymm0 910 vpaddq %ymm12,%ymm5,%ymm5 911 vpmuludq %ymm11,%ymm13,%ymm13 912 vmovdqu -8+256-128(%rcx),%ymm12 913 vpaddq %ymm13,%ymm6,%ymm6 914 vpmuludq %ymm11,%ymm0,%ymm0 915 vmovdqu -8+288-128(%rcx),%ymm13 916 vpaddq %ymm0,%ymm7,%ymm7 917 vpmuludq %ymm11,%ymm12,%ymm12 918 vpaddq %ymm12,%ymm8,%ymm8 919 vpmuludq %ymm11,%ymm13,%ymm13 920 vpaddq %ymm13,%ymm9,%ymm9 921 922 vmovdqu -16+32-128(%rsi),%ymm0 923 movq %rbx,%rax 924 imulq -128(%rsi),%rax 925 addq %r11,%rax 926 927 vmovdqu -16+64-128(%rsi),%ymm12 928 movq %rax,%r11 929 imull %r8d,%eax 930 andl $0x1fffffff,%eax 931 932 imulq 8-128(%rsi),%rbx 933 addq %rbx,%r12 934 vpmuludq %ymm10,%ymm0,%ymm0 935 vmovd %eax,%xmm11 936 vmovdqu -16+96-128(%rsi),%ymm13 937 vpaddq %ymm0,%ymm1,%ymm1 938 vpmuludq %ymm10,%ymm12,%ymm12 939 vpbroadcastq %xmm11,%ymm11 940 vmovdqu -16+128-128(%rsi),%ymm0 941 vpaddq %ymm12,%ymm2,%ymm2 942 vpmuludq %ymm10,%ymm13,%ymm13 943 vmovdqu -16+160-128(%rsi),%ymm12 944 vpaddq %ymm13,%ymm3,%ymm3 945 vpmuludq %ymm10,%ymm0,%ymm0 946 vmovdqu -16+192-128(%rsi),%ymm13 947 vpaddq %ymm0,%ymm4,%ymm4 948 vpmuludq %ymm10,%ymm12,%ymm12 949 vmovdqu -16+224-128(%rsi),%ymm0 950 vpaddq %ymm12,%ymm5,%ymm5 951 vpmuludq %ymm10,%ymm13,%ymm13 952 vmovdqu -16+256-128(%rsi),%ymm12 953 vpaddq %ymm13,%ymm6,%ymm6 954 vpmuludq %ymm10,%ymm0,%ymm0 955 vmovdqu -16+288-128(%rsi),%ymm13 956 vpaddq %ymm0,%ymm7,%ymm7 957 vpmuludq %ymm10,%ymm12,%ymm12 958 vpaddq %ymm12,%ymm8,%ymm8 959 vpmuludq %ymm10,%ymm13,%ymm13 960 vpbroadcastq 24(%r13),%ymm10 961 vpaddq %ymm13,%ymm9,%ymm9 962 963 vmovdqu -16+32-128(%rcx),%ymm0 964 movq %rax,%rdx 965 imulq -128(%rcx),%rax 966 addq %rax,%r11 967 vmovdqu -16+64-128(%rcx),%ymm12 968 imulq 8-128(%rcx),%rdx 969 addq %rdx,%r12 970 shrq $29,%r11 971 972 vpmuludq %ymm11,%ymm0,%ymm0 973 vmovq %xmm10,%rbx 974 vmovdqu -16+96-128(%rcx),%ymm13 975 vpaddq %ymm0,%ymm1,%ymm1 976 vpmuludq %ymm11,%ymm12,%ymm12 977 vmovdqu -16+128-128(%rcx),%ymm0 978 vpaddq %ymm12,%ymm2,%ymm2 979 vpmuludq %ymm11,%ymm13,%ymm13 980 vmovdqu -16+160-128(%rcx),%ymm12 981 vpaddq %ymm13,%ymm3,%ymm3 982 vpmuludq %ymm11,%ymm0,%ymm0 983 vmovdqu -16+192-128(%rcx),%ymm13 984 vpaddq %ymm0,%ymm4,%ymm4 985 vpmuludq %ymm11,%ymm12,%ymm12 986 vmovdqu -16+224-128(%rcx),%ymm0 987 vpaddq %ymm12,%ymm5,%ymm5 988 vpmuludq %ymm11,%ymm13,%ymm13 989 vmovdqu -16+256-128(%rcx),%ymm12 990 vpaddq %ymm13,%ymm6,%ymm6 991 vpmuludq %ymm11,%ymm0,%ymm0 992 vmovdqu -16+288-128(%rcx),%ymm13 993 vpaddq %ymm0,%ymm7,%ymm7 994 vpmuludq %ymm11,%ymm12,%ymm12 995 vmovdqu -24+32-128(%rsi),%ymm0 996 vpaddq %ymm12,%ymm8,%ymm8 997 vpmuludq %ymm11,%ymm13,%ymm13 998 vmovdqu -24+64-128(%rsi),%ymm12 999 vpaddq %ymm13,%ymm9,%ymm9 1000 1001 addq %r11,%r12 1002 imulq -128(%rsi),%rbx 1003 addq %rbx,%r12 1004 1005 movq %r12,%rax 1006 imull %r8d,%eax 1007 andl $0x1fffffff,%eax 1008 1009 vpmuludq %ymm10,%ymm0,%ymm0 1010 vmovd %eax,%xmm11 1011 vmovdqu -24+96-128(%rsi),%ymm13 1012 vpaddq %ymm0,%ymm1,%ymm1 1013 vpmuludq %ymm10,%ymm12,%ymm12 1014 vpbroadcastq %xmm11,%ymm11 1015 vmovdqu -24+128-128(%rsi),%ymm0 1016 vpaddq %ymm12,%ymm2,%ymm2 1017 vpmuludq %ymm10,%ymm13,%ymm13 1018 vmovdqu -24+160-128(%rsi),%ymm12 1019 vpaddq %ymm13,%ymm3,%ymm3 1020 vpmuludq %ymm10,%ymm0,%ymm0 1021 vmovdqu -24+192-128(%rsi),%ymm13 1022 vpaddq %ymm0,%ymm4,%ymm4 1023 vpmuludq %ymm10,%ymm12,%ymm12 1024 vmovdqu -24+224-128(%rsi),%ymm0 1025 vpaddq %ymm12,%ymm5,%ymm5 1026 vpmuludq %ymm10,%ymm13,%ymm13 1027 vmovdqu -24+256-128(%rsi),%ymm12 1028 vpaddq %ymm13,%ymm6,%ymm6 1029 vpmuludq %ymm10,%ymm0,%ymm0 1030 vmovdqu -24+288-128(%rsi),%ymm13 1031 vpaddq %ymm0,%ymm7,%ymm7 1032 vpmuludq %ymm10,%ymm12,%ymm12 1033 vpaddq %ymm12,%ymm8,%ymm8 1034 vpmuludq %ymm10,%ymm13,%ymm13 1035 vpbroadcastq 32(%r13),%ymm10 1036 vpaddq %ymm13,%ymm9,%ymm9 1037 addq $32,%r13 1038 1039 vmovdqu -24+32-128(%rcx),%ymm0 1040 imulq -128(%rcx),%rax 1041 addq %rax,%r12 1042 shrq $29,%r12 1043 1044 vmovdqu -24+64-128(%rcx),%ymm12 1045 vpmuludq %ymm11,%ymm0,%ymm0 1046 vmovq %xmm10,%rbx 1047 vmovdqu -24+96-128(%rcx),%ymm13 1048 vpaddq %ymm0,%ymm1,%ymm0 1049 vpmuludq %ymm11,%ymm12,%ymm12 1050 vmovdqu %ymm0,(%rsp) 1051 vpaddq %ymm12,%ymm2,%ymm1 1052 vmovdqu -24+128-128(%rcx),%ymm0 1053 vpmuludq %ymm11,%ymm13,%ymm13 1054 vmovdqu -24+160-128(%rcx),%ymm12 1055 vpaddq %ymm13,%ymm3,%ymm2 1056 vpmuludq %ymm11,%ymm0,%ymm0 1057 vmovdqu -24+192-128(%rcx),%ymm13 1058 vpaddq %ymm0,%ymm4,%ymm3 1059 vpmuludq %ymm11,%ymm12,%ymm12 1060 vmovdqu -24+224-128(%rcx),%ymm0 1061 vpaddq %ymm12,%ymm5,%ymm4 1062 vpmuludq %ymm11,%ymm13,%ymm13 1063 vmovdqu -24+256-128(%rcx),%ymm12 1064 vpaddq %ymm13,%ymm6,%ymm5 1065 vpmuludq %ymm11,%ymm0,%ymm0 1066 vmovdqu -24+288-128(%rcx),%ymm13 1067 movq %r12,%r9 1068 vpaddq %ymm0,%ymm7,%ymm6 1069 vpmuludq %ymm11,%ymm12,%ymm12 1070 addq (%rsp),%r9 1071 vpaddq %ymm12,%ymm8,%ymm7 1072 vpmuludq %ymm11,%ymm13,%ymm13 1073 vmovq %r12,%xmm12 1074 vpaddq %ymm13,%ymm9,%ymm8 1075 1076 decl %r14d 1077 jnz .Loop_mul_1024 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.type rsaz_1024_red2norm_avx2,@function 1215.align 32 1216rsaz_1024_red2norm_avx2: 1217.cfi_startproc 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.cfi_endproc 1410.size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2 1411 1412.globl rsaz_1024_norm2red_avx2 1413.type rsaz_1024_norm2red_avx2,@function 1414.align 32 1415rsaz_1024_norm2red_avx2: 1416.cfi_startproc 1417 subq $-128,%rdi 1418 movq (%rsi),%r8 1419 movl $0x1fffffff,%eax 1420 movq 8(%rsi),%r9 1421 movq %r8,%r11 1422 shrq $0,%r11 1423 andq %rax,%r11 1424 movq %r11,-128(%rdi) 1425 movq %r8,%r10 1426 shrq $29,%r10 1427 andq %rax,%r10 1428 movq %r10,-120(%rdi) 1429 shrdq $58,%r9,%r8 1430 andq %rax,%r8 1431 movq %r8,-112(%rdi) 1432 movq 16(%rsi),%r10 1433 movq %r9,%r8 1434 shrq $23,%r8 1435 andq %rax,%r8 1436 movq %r8,-104(%rdi) 1437 shrdq $52,%r10,%r9 1438 andq %rax,%r9 1439 movq %r9,-96(%rdi) 1440 movq 24(%rsi),%r11 1441 movq %r10,%r9 1442 shrq $17,%r9 1443 andq %rax,%r9 1444 movq %r9,-88(%rdi) 1445 shrdq $46,%r11,%r10 1446 andq %rax,%r10 1447 movq %r10,-80(%rdi) 1448 movq 32(%rsi),%r8 1449 movq %r11,%r10 1450 shrq $11,%r10 1451 andq %rax,%r10 1452 movq %r10,-72(%rdi) 1453 shrdq $40,%r8,%r11 1454 andq %rax,%r11 1455 movq %r11,-64(%rdi) 1456 movq 40(%rsi),%r9 1457 movq %r8,%r11 1458 shrq $5,%r11 1459 andq %rax,%r11 1460 movq %r11,-56(%rdi) 1461 movq %r8,%r10 1462 shrq $34,%r10 1463 andq %rax,%r10 1464 movq %r10,-48(%rdi) 1465 shrdq $63,%r9,%r8 1466 andq %rax,%r8 1467 movq %r8,-40(%rdi) 1468 movq 48(%rsi),%r10 1469 movq %r9,%r8 1470 shrq $28,%r8 1471 andq %rax,%r8 1472 movq %r8,-32(%rdi) 1473 shrdq $57,%r10,%r9 1474 andq %rax,%r9 1475 movq %r9,-24(%rdi) 1476 movq 56(%rsi),%r11 1477 movq %r10,%r9 1478 shrq $22,%r9 1479 andq %rax,%r9 1480 movq %r9,-16(%rdi) 1481 shrdq $51,%r11,%r10 1482 andq %rax,%r10 1483 movq %r10,-8(%rdi) 1484 movq 64(%rsi),%r8 1485 movq %r11,%r10 1486 shrq $16,%r10 1487 andq %rax,%r10 1488 movq %r10,0(%rdi) 1489 shrdq $45,%r8,%r11 1490 andq %rax,%r11 1491 movq %r11,8(%rdi) 1492 movq 72(%rsi),%r9 1493 movq %r8,%r11 1494 shrq $10,%r11 1495 andq %rax,%r11 1496 movq %r11,16(%rdi) 1497 shrdq $39,%r9,%r8 1498 andq %rax,%r8 1499 movq %r8,24(%rdi) 1500 movq 80(%rsi),%r10 1501 movq %r9,%r8 1502 shrq $4,%r8 1503 andq %rax,%r8 1504 movq %r8,32(%rdi) 1505 movq %r9,%r11 1506 shrq $33,%r11 1507 andq %rax,%r11 1508 movq %r11,40(%rdi) 1509 shrdq $62,%r10,%r9 1510 andq %rax,%r9 1511 movq %r9,48(%rdi) 1512 movq 88(%rsi),%r11 1513 movq %r10,%r9 1514 shrq $27,%r9 1515 andq %rax,%r9 1516 movq %r9,56(%rdi) 1517 shrdq $56,%r11,%r10 1518 andq %rax,%r10 1519 movq %r10,64(%rdi) 1520 movq 96(%rsi),%r8 1521 movq %r11,%r10 1522 shrq $21,%r10 1523 andq %rax,%r10 1524 movq %r10,72(%rdi) 1525 shrdq $50,%r8,%r11 1526 andq %rax,%r11 1527 movq %r11,80(%rdi) 1528 movq 104(%rsi),%r9 1529 movq %r8,%r11 1530 shrq $15,%r11 1531 andq %rax,%r11 1532 movq %r11,88(%rdi) 1533 shrdq $44,%r9,%r8 1534 andq %rax,%r8 1535 movq %r8,96(%rdi) 1536 movq 112(%rsi),%r10 1537 movq %r9,%r8 1538 shrq $9,%r8 1539 andq %rax,%r8 1540 movq %r8,104(%rdi) 1541 shrdq $38,%r10,%r9 1542 andq %rax,%r9 1543 movq %r9,112(%rdi) 1544 movq 120(%rsi),%r11 1545 movq %r10,%r9 1546 shrq $3,%r9 1547 andq %rax,%r9 1548 movq %r9,120(%rdi) 1549 movq %r10,%r8 1550 shrq $32,%r8 1551 andq %rax,%r8 1552 movq %r8,128(%rdi) 1553 shrdq $61,%r11,%r10 1554 andq %rax,%r10 1555 movq %r10,136(%rdi) 1556 xorq %r8,%r8 1557 movq %r11,%r10 1558 shrq $26,%r10 1559 andq %rax,%r10 1560 movq %r10,144(%rdi) 1561 shrdq $55,%r8,%r11 1562 andq %rax,%r11 1563 movq %r11,152(%rdi) 1564 movq %r8,160(%rdi) 1565 movq %r8,168(%rdi) 1566 movq %r8,176(%rdi) 1567 movq %r8,184(%rdi) 1568 .byte 0xf3,0xc3 1569.cfi_endproc 1570.size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2 1571.globl rsaz_1024_scatter5_avx2 1572.type rsaz_1024_scatter5_avx2,@function 1573.align 32 1574rsaz_1024_scatter5_avx2: 1575.cfi_startproc 1576 vzeroupper 1577 vmovdqu .Lscatter_permd(%rip),%ymm5 1578 shll $4,%edx 1579 leaq (%rdi,%rdx,1),%rdi 1580 movl $9,%eax 1581 jmp .Loop_scatter_1024 1582 1583.align 32 1584.Loop_scatter_1024: 1585 vmovdqu (%rsi),%ymm0 1586 leaq 32(%rsi),%rsi 1587 vpermd %ymm0,%ymm5,%ymm0 1588 vmovdqu %xmm0,(%rdi) 1589 leaq 512(%rdi),%rdi 1590 decl %eax 1591 jnz .Loop_scatter_1024 1592 1593 vzeroupper 1594 .byte 0xf3,0xc3 1595.cfi_endproc 1596.size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2 1597 1598.globl rsaz_1024_gather5_avx2 1599.type rsaz_1024_gather5_avx2,@function 1600.align 32 1601rsaz_1024_gather5_avx2: 1602.cfi_startproc 1603 vzeroupper 1604 movq %rsp,%r11 1605.cfi_def_cfa_register %r11 1606 leaq -256(%rsp),%rsp 1607 andq $-32,%rsp 1608 leaq .Linc(%rip),%r10 1609 leaq -128(%rsp),%rax 1610 1611 vmovd %edx,%xmm4 1612 vmovdqa (%r10),%ymm0 1613 vmovdqa 32(%r10),%ymm1 1614 vmovdqa 64(%r10),%ymm5 1615 vpbroadcastd %xmm4,%ymm4 1616 1617 vpaddd %ymm5,%ymm0,%ymm2 1618 vpcmpeqd %ymm4,%ymm0,%ymm0 1619 vpaddd %ymm5,%ymm1,%ymm3 1620 vpcmpeqd %ymm4,%ymm1,%ymm1 1621 vmovdqa %ymm0,0+128(%rax) 1622 vpaddd %ymm5,%ymm2,%ymm0 1623 vpcmpeqd %ymm4,%ymm2,%ymm2 1624 vmovdqa %ymm1,32+128(%rax) 1625 vpaddd %ymm5,%ymm3,%ymm1 1626 vpcmpeqd %ymm4,%ymm3,%ymm3 1627 vmovdqa %ymm2,64+128(%rax) 1628 vpaddd %ymm5,%ymm0,%ymm2 1629 vpcmpeqd %ymm4,%ymm0,%ymm0 1630 vmovdqa %ymm3,96+128(%rax) 1631 vpaddd %ymm5,%ymm1,%ymm3 1632 vpcmpeqd %ymm4,%ymm1,%ymm1 1633 vmovdqa %ymm0,128+128(%rax) 1634 vpaddd %ymm5,%ymm2,%ymm8 1635 vpcmpeqd %ymm4,%ymm2,%ymm2 1636 vmovdqa %ymm1,160+128(%rax) 1637 vpaddd %ymm5,%ymm3,%ymm9 1638 vpcmpeqd %ymm4,%ymm3,%ymm3 1639 vmovdqa %ymm2,192+128(%rax) 1640 vpaddd %ymm5,%ymm8,%ymm10 1641 vpcmpeqd %ymm4,%ymm8,%ymm8 1642 vmovdqa %ymm3,224+128(%rax) 1643 vpaddd %ymm5,%ymm9,%ymm11 1644 vpcmpeqd %ymm4,%ymm9,%ymm9 1645 vpaddd %ymm5,%ymm10,%ymm12 1646 vpcmpeqd %ymm4,%ymm10,%ymm10 1647 vpaddd %ymm5,%ymm11,%ymm13 1648 vpcmpeqd %ymm4,%ymm11,%ymm11 1649 vpaddd %ymm5,%ymm12,%ymm14 1650 vpcmpeqd %ymm4,%ymm12,%ymm12 1651 vpaddd %ymm5,%ymm13,%ymm15 1652 vpcmpeqd %ymm4,%ymm13,%ymm13 1653 vpcmpeqd %ymm4,%ymm14,%ymm14 1654 vpcmpeqd %ymm4,%ymm15,%ymm15 1655 1656 vmovdqa -32(%r10),%ymm7 1657 leaq 128(%rsi),%rsi 1658 movl $9,%edx 1659 1660.Loop_gather_1024: 1661 vmovdqa 0-128(%rsi),%ymm0 1662 vmovdqa 32-128(%rsi),%ymm1 1663 vmovdqa 64-128(%rsi),%ymm2 1664 vmovdqa 96-128(%rsi),%ymm3 1665 vpand 0+128(%rax),%ymm0,%ymm0 1666 vpand 32+128(%rax),%ymm1,%ymm1 1667 vpand 64+128(%rax),%ymm2,%ymm2 1668 vpor %ymm0,%ymm1,%ymm4 1669 vpand 96+128(%rax),%ymm3,%ymm3 1670 vmovdqa 128-128(%rsi),%ymm0 1671 vmovdqa 160-128(%rsi),%ymm1 1672 vpor %ymm2,%ymm3,%ymm5 1673 vmovdqa 192-128(%rsi),%ymm2 1674 vmovdqa 224-128(%rsi),%ymm3 1675 vpand 128+128(%rax),%ymm0,%ymm0 1676 vpand 160+128(%rax),%ymm1,%ymm1 1677 vpand 192+128(%rax),%ymm2,%ymm2 1678 vpor %ymm0,%ymm4,%ymm4 1679 vpand 224+128(%rax),%ymm3,%ymm3 1680 vpand 256-128(%rsi),%ymm8,%ymm0 1681 vpor %ymm1,%ymm5,%ymm5 1682 vpand 288-128(%rsi),%ymm9,%ymm1 1683 vpor %ymm2,%ymm4,%ymm4 1684 vpand 320-128(%rsi),%ymm10,%ymm2 1685 vpor %ymm3,%ymm5,%ymm5 1686 vpand 352-128(%rsi),%ymm11,%ymm3 1687 vpor %ymm0,%ymm4,%ymm4 1688 vpand 384-128(%rsi),%ymm12,%ymm0 1689 vpor %ymm1,%ymm5,%ymm5 1690 vpand 416-128(%rsi),%ymm13,%ymm1 1691 vpor %ymm2,%ymm4,%ymm4 1692 vpand 448-128(%rsi),%ymm14,%ymm2 1693 vpor %ymm3,%ymm5,%ymm5 1694 vpand 480-128(%rsi),%ymm15,%ymm3 1695 leaq 512(%rsi),%rsi 1696 vpor %ymm0,%ymm4,%ymm4 1697 vpor %ymm1,%ymm5,%ymm5 1698 vpor %ymm2,%ymm4,%ymm4 1699 vpor %ymm3,%ymm5,%ymm5 1700 1701 vpor %ymm5,%ymm4,%ymm4 1702 vextracti128 $1,%ymm4,%xmm5 1703 vpor %xmm4,%xmm5,%xmm5 1704 vpermd %ymm5,%ymm7,%ymm5 1705 vmovdqu %ymm5,(%rdi) 1706 leaq 32(%rdi),%rdi 1707 decl %edx 1708 jnz .Loop_gather_1024 1709 1710 vpxor %ymm0,%ymm0,%ymm0 1711 vmovdqu %ymm0,(%rdi) 1712 vzeroupper 1713 leaq (%r11),%rsp 1714.cfi_def_cfa_register %rsp 1715 .byte 0xf3,0xc3 1716.cfi_endproc 1717.LSEH_end_rsaz_1024_gather5: 1718.size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2 1719 1720.globl rsaz_avx2_eligible 1721.type rsaz_avx2_eligible,@function 1722.align 32 1723rsaz_avx2_eligible: 1724 movl OPENSSL_ia32cap_P+8(%rip),%eax 1725 movl $524544,%ecx 1726 movl $0,%edx 1727 andl %eax,%ecx 1728 cmpl $524544,%ecx 1729 cmovel %edx,%eax 1730 andl $32,%eax 1731 shrl $5,%eax 1732 .byte 0xf3,0xc3 1733.size rsaz_avx2_eligible,.-rsaz_avx2_eligible 1734 1735.align 64 1736.Land_mask: 1737.quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff 1738.Lscatter_permd: 1739.long 0,2,4,6,7,7,7,7 1740.Lgather_permd: 1741.long 0,7,1,7,2,7,3,7 1742.Linc: 1743.long 0,0,0,0, 1,1,1,1 1744.long 2,2,2,2, 3,3,3,3 1745.long 4,4,4,4, 4,4,4,4 1746.align 64 1747