1/* Do not modify. This file is auto-generated from rsaz-avx2.pl. */ 2.text 3 4.globl rsaz_1024_sqr_avx2 5.type rsaz_1024_sqr_avx2,@function 6.align 64 7rsaz_1024_sqr_avx2: 8.cfi_startproc 9 leaq (%rsp),%rax 10.cfi_def_cfa_register %rax 11 pushq %rbx 12.cfi_offset %rbx,-16 13 pushq %rbp 14.cfi_offset %rbp,-24 15 pushq %r12 16.cfi_offset %r12,-32 17 pushq %r13 18.cfi_offset %r13,-40 19 pushq %r14 20.cfi_offset %r14,-48 21 pushq %r15 22.cfi_offset %r15,-56 23 vzeroupper 24 movq %rax,%rbp 25.cfi_def_cfa_register %rbp 26 movq %rdx,%r13 27 subq $832,%rsp 28 movq %r13,%r15 29 subq $-128,%rdi 30 subq $-128,%rsi 31 subq $-128,%r13 32 33 andq $4095,%r15 34 addq $320,%r15 35 shrq $12,%r15 36 vpxor %ymm9,%ymm9,%ymm9 37 jz .Lsqr_1024_no_n_copy 38 39 40 41 42 43 subq $320,%rsp 44 vmovdqu 0-128(%r13),%ymm0 45 andq $-2048,%rsp 46 vmovdqu 32-128(%r13),%ymm1 47 vmovdqu 64-128(%r13),%ymm2 48 vmovdqu 96-128(%r13),%ymm3 49 vmovdqu 128-128(%r13),%ymm4 50 vmovdqu 160-128(%r13),%ymm5 51 vmovdqu 192-128(%r13),%ymm6 52 vmovdqu 224-128(%r13),%ymm7 53 vmovdqu 256-128(%r13),%ymm8 54 leaq 832+128(%rsp),%r13 55 vmovdqu %ymm0,0-128(%r13) 56 vmovdqu %ymm1,32-128(%r13) 57 vmovdqu %ymm2,64-128(%r13) 58 vmovdqu %ymm3,96-128(%r13) 59 vmovdqu %ymm4,128-128(%r13) 60 vmovdqu %ymm5,160-128(%r13) 61 vmovdqu %ymm6,192-128(%r13) 62 vmovdqu %ymm7,224-128(%r13) 63 vmovdqu %ymm8,256-128(%r13) 64 vmovdqu %ymm9,288-128(%r13) 65 66.Lsqr_1024_no_n_copy: 67 andq $-1024,%rsp 68 69 vmovdqu 32-128(%rsi),%ymm1 70 vmovdqu 64-128(%rsi),%ymm2 71 vmovdqu 96-128(%rsi),%ymm3 72 vmovdqu 128-128(%rsi),%ymm4 73 vmovdqu 160-128(%rsi),%ymm5 74 vmovdqu 192-128(%rsi),%ymm6 75 vmovdqu 224-128(%rsi),%ymm7 76 vmovdqu 256-128(%rsi),%ymm8 77 78 leaq 192(%rsp),%rbx 79 vmovdqu .Land_mask(%rip),%ymm15 80 jmp .LOOP_GRANDE_SQR_1024 81 82.align 32 83.LOOP_GRANDE_SQR_1024: 84 leaq 576+128(%rsp),%r9 85 leaq 448(%rsp),%r12 86 87 88 89 90 vpaddq %ymm1,%ymm1,%ymm1 91 vpbroadcastq 0-128(%rsi),%ymm10 92 vpaddq %ymm2,%ymm2,%ymm2 93 vmovdqa %ymm1,0-128(%r9) 94 vpaddq %ymm3,%ymm3,%ymm3 95 vmovdqa %ymm2,32-128(%r9) 96 vpaddq %ymm4,%ymm4,%ymm4 97 vmovdqa %ymm3,64-128(%r9) 98 vpaddq %ymm5,%ymm5,%ymm5 99 vmovdqa %ymm4,96-128(%r9) 100 vpaddq %ymm6,%ymm6,%ymm6 101 vmovdqa %ymm5,128-128(%r9) 102 vpaddq %ymm7,%ymm7,%ymm7 103 vmovdqa %ymm6,160-128(%r9) 104 vpaddq %ymm8,%ymm8,%ymm8 105 vmovdqa %ymm7,192-128(%r9) 106 vpxor %ymm9,%ymm9,%ymm9 107 vmovdqa %ymm8,224-128(%r9) 108 109 vpmuludq 0-128(%rsi),%ymm10,%ymm0 110 vpbroadcastq 32-128(%rsi),%ymm11 111 vmovdqu %ymm9,288-192(%rbx) 112 vpmuludq %ymm10,%ymm1,%ymm1 113 vmovdqu %ymm9,320-448(%r12) 114 vpmuludq %ymm10,%ymm2,%ymm2 115 vmovdqu %ymm9,352-448(%r12) 116 vpmuludq %ymm10,%ymm3,%ymm3 117 vmovdqu %ymm9,384-448(%r12) 118 vpmuludq %ymm10,%ymm4,%ymm4 119 vmovdqu %ymm9,416-448(%r12) 120 vpmuludq %ymm10,%ymm5,%ymm5 121 vmovdqu %ymm9,448-448(%r12) 122 vpmuludq %ymm10,%ymm6,%ymm6 123 vmovdqu %ymm9,480-448(%r12) 124 vpmuludq %ymm10,%ymm7,%ymm7 125 vmovdqu %ymm9,512-448(%r12) 126 vpmuludq %ymm10,%ymm8,%ymm8 127 vpbroadcastq 64-128(%rsi),%ymm10 128 vmovdqu %ymm9,544-448(%r12) 129 130 movq %rsi,%r15 131 movl $4,%r14d 132 jmp .Lsqr_entry_1024 133.align 32 134.LOOP_SQR_1024: 135 vpbroadcastq 32-128(%r15),%ymm11 136 vpmuludq 0-128(%rsi),%ymm10,%ymm0 137 vpaddq 0-192(%rbx),%ymm0,%ymm0 138 vpmuludq 0-128(%r9),%ymm10,%ymm1 139 vpaddq 32-192(%rbx),%ymm1,%ymm1 140 vpmuludq 32-128(%r9),%ymm10,%ymm2 141 vpaddq 64-192(%rbx),%ymm2,%ymm2 142 vpmuludq 64-128(%r9),%ymm10,%ymm3 143 vpaddq 96-192(%rbx),%ymm3,%ymm3 144 vpmuludq 96-128(%r9),%ymm10,%ymm4 145 vpaddq 128-192(%rbx),%ymm4,%ymm4 146 vpmuludq 128-128(%r9),%ymm10,%ymm5 147 vpaddq 160-192(%rbx),%ymm5,%ymm5 148 vpmuludq 160-128(%r9),%ymm10,%ymm6 149 vpaddq 192-192(%rbx),%ymm6,%ymm6 150 vpmuludq 192-128(%r9),%ymm10,%ymm7 151 vpaddq 224-192(%rbx),%ymm7,%ymm7 152 vpmuludq 224-128(%r9),%ymm10,%ymm8 153 vpbroadcastq 64-128(%r15),%ymm10 154 vpaddq 256-192(%rbx),%ymm8,%ymm8 155.Lsqr_entry_1024: 156 vmovdqu %ymm0,0-192(%rbx) 157 vmovdqu %ymm1,32-192(%rbx) 158 159 vpmuludq 32-128(%rsi),%ymm11,%ymm12 160 vpaddq %ymm12,%ymm2,%ymm2 161 vpmuludq 32-128(%r9),%ymm11,%ymm14 162 vpaddq %ymm14,%ymm3,%ymm3 163 vpmuludq 64-128(%r9),%ymm11,%ymm13 164 vpaddq %ymm13,%ymm4,%ymm4 165 vpmuludq 96-128(%r9),%ymm11,%ymm12 166 vpaddq %ymm12,%ymm5,%ymm5 167 vpmuludq 128-128(%r9),%ymm11,%ymm14 168 vpaddq %ymm14,%ymm6,%ymm6 169 vpmuludq 160-128(%r9),%ymm11,%ymm13 170 vpaddq %ymm13,%ymm7,%ymm7 171 vpmuludq 192-128(%r9),%ymm11,%ymm12 172 vpaddq %ymm12,%ymm8,%ymm8 173 vpmuludq 224-128(%r9),%ymm11,%ymm0 174 vpbroadcastq 96-128(%r15),%ymm11 175 vpaddq 288-192(%rbx),%ymm0,%ymm0 176 177 vmovdqu %ymm2,64-192(%rbx) 178 vmovdqu %ymm3,96-192(%rbx) 179 180 vpmuludq 64-128(%rsi),%ymm10,%ymm13 181 vpaddq %ymm13,%ymm4,%ymm4 182 vpmuludq 64-128(%r9),%ymm10,%ymm12 183 vpaddq %ymm12,%ymm5,%ymm5 184 vpmuludq 96-128(%r9),%ymm10,%ymm14 185 vpaddq %ymm14,%ymm6,%ymm6 186 vpmuludq 128-128(%r9),%ymm10,%ymm13 187 vpaddq %ymm13,%ymm7,%ymm7 188 vpmuludq 160-128(%r9),%ymm10,%ymm12 189 vpaddq %ymm12,%ymm8,%ymm8 190 vpmuludq 192-128(%r9),%ymm10,%ymm14 191 vpaddq %ymm14,%ymm0,%ymm0 192 vpmuludq 224-128(%r9),%ymm10,%ymm1 193 vpbroadcastq 128-128(%r15),%ymm10 194 vpaddq 320-448(%r12),%ymm1,%ymm1 195 196 vmovdqu %ymm4,128-192(%rbx) 197 vmovdqu %ymm5,160-192(%rbx) 198 199 vpmuludq 96-128(%rsi),%ymm11,%ymm12 200 vpaddq %ymm12,%ymm6,%ymm6 201 vpmuludq 96-128(%r9),%ymm11,%ymm14 202 vpaddq %ymm14,%ymm7,%ymm7 203 vpmuludq 128-128(%r9),%ymm11,%ymm13 204 vpaddq %ymm13,%ymm8,%ymm8 205 vpmuludq 160-128(%r9),%ymm11,%ymm12 206 vpaddq %ymm12,%ymm0,%ymm0 207 vpmuludq 192-128(%r9),%ymm11,%ymm14 208 vpaddq %ymm14,%ymm1,%ymm1 209 vpmuludq 224-128(%r9),%ymm11,%ymm2 210 vpbroadcastq 160-128(%r15),%ymm11 211 vpaddq 352-448(%r12),%ymm2,%ymm2 212 213 vmovdqu %ymm6,192-192(%rbx) 214 vmovdqu %ymm7,224-192(%rbx) 215 216 vpmuludq 128-128(%rsi),%ymm10,%ymm12 217 vpaddq %ymm12,%ymm8,%ymm8 218 vpmuludq 128-128(%r9),%ymm10,%ymm14 219 vpaddq %ymm14,%ymm0,%ymm0 220 vpmuludq 160-128(%r9),%ymm10,%ymm13 221 vpaddq %ymm13,%ymm1,%ymm1 222 vpmuludq 192-128(%r9),%ymm10,%ymm12 223 vpaddq %ymm12,%ymm2,%ymm2 224 vpmuludq 224-128(%r9),%ymm10,%ymm3 225 vpbroadcastq 192-128(%r15),%ymm10 226 vpaddq 384-448(%r12),%ymm3,%ymm3 227 228 vmovdqu %ymm8,256-192(%rbx) 229 vmovdqu %ymm0,288-192(%rbx) 230 leaq 8(%rbx),%rbx 231 232 vpmuludq 160-128(%rsi),%ymm11,%ymm13 233 vpaddq %ymm13,%ymm1,%ymm1 234 vpmuludq 160-128(%r9),%ymm11,%ymm12 235 vpaddq %ymm12,%ymm2,%ymm2 236 vpmuludq 192-128(%r9),%ymm11,%ymm14 237 vpaddq %ymm14,%ymm3,%ymm3 238 vpmuludq 224-128(%r9),%ymm11,%ymm4 239 vpbroadcastq 224-128(%r15),%ymm11 240 vpaddq 416-448(%r12),%ymm4,%ymm4 241 242 vmovdqu %ymm1,320-448(%r12) 243 vmovdqu %ymm2,352-448(%r12) 244 245 vpmuludq 192-128(%rsi),%ymm10,%ymm12 246 vpaddq %ymm12,%ymm3,%ymm3 247 vpmuludq 192-128(%r9),%ymm10,%ymm14 248 vpbroadcastq 256-128(%r15),%ymm0 249 vpaddq %ymm14,%ymm4,%ymm4 250 vpmuludq 224-128(%r9),%ymm10,%ymm5 251 vpbroadcastq 0+8-128(%r15),%ymm10 252 vpaddq 448-448(%r12),%ymm5,%ymm5 253 254 vmovdqu %ymm3,384-448(%r12) 255 vmovdqu %ymm4,416-448(%r12) 256 leaq 8(%r15),%r15 257 258 vpmuludq 224-128(%rsi),%ymm11,%ymm12 259 vpaddq %ymm12,%ymm5,%ymm5 260 vpmuludq 224-128(%r9),%ymm11,%ymm6 261 vpaddq 480-448(%r12),%ymm6,%ymm6 262 263 vpmuludq 256-128(%rsi),%ymm0,%ymm7 264 vmovdqu %ymm5,448-448(%r12) 265 vpaddq 512-448(%r12),%ymm7,%ymm7 266 vmovdqu %ymm6,480-448(%r12) 267 vmovdqu %ymm7,512-448(%r12) 268 leaq 8(%r12),%r12 269 270 decl %r14d 271 jnz .LOOP_SQR_1024 272 273 vmovdqu 256(%rsp),%ymm8 274 vmovdqu 288(%rsp),%ymm1 275 vmovdqu 320(%rsp),%ymm2 276 leaq 192(%rsp),%rbx 277 278 vpsrlq $29,%ymm8,%ymm14 279 vpand %ymm15,%ymm8,%ymm8 280 vpsrlq $29,%ymm1,%ymm11 281 vpand %ymm15,%ymm1,%ymm1 282 283 vpermq $0x93,%ymm14,%ymm14 284 vpxor %ymm9,%ymm9,%ymm9 285 vpermq $0x93,%ymm11,%ymm11 286 287 vpblendd $3,%ymm9,%ymm14,%ymm10 288 vpblendd $3,%ymm14,%ymm11,%ymm14 289 vpaddq %ymm10,%ymm8,%ymm8 290 vpblendd $3,%ymm11,%ymm9,%ymm11 291 vpaddq %ymm14,%ymm1,%ymm1 292 vpaddq %ymm11,%ymm2,%ymm2 293 vmovdqu %ymm1,288-192(%rbx) 294 vmovdqu %ymm2,320-192(%rbx) 295 296 movq (%rsp),%rax 297 movq 8(%rsp),%r10 298 movq 16(%rsp),%r11 299 movq 24(%rsp),%r12 300 vmovdqu 32(%rsp),%ymm1 301 vmovdqu 64-192(%rbx),%ymm2 302 vmovdqu 96-192(%rbx),%ymm3 303 vmovdqu 128-192(%rbx),%ymm4 304 vmovdqu 160-192(%rbx),%ymm5 305 vmovdqu 192-192(%rbx),%ymm6 306 vmovdqu 224-192(%rbx),%ymm7 307 308 movq %rax,%r9 309 imull %ecx,%eax 310 andl $0x1fffffff,%eax 311 vmovd %eax,%xmm12 312 313 movq %rax,%rdx 314 imulq -128(%r13),%rax 315 vpbroadcastq %xmm12,%ymm12 316 addq %rax,%r9 317 movq %rdx,%rax 318 imulq 8-128(%r13),%rax 319 shrq $29,%r9 320 addq %rax,%r10 321 movq %rdx,%rax 322 imulq 16-128(%r13),%rax 323 addq %r9,%r10 324 addq %rax,%r11 325 imulq 24-128(%r13),%rdx 326 addq %rdx,%r12 327 328 movq %r10,%rax 329 imull %ecx,%eax 330 andl $0x1fffffff,%eax 331 332 movl $9,%r14d 333 jmp .LOOP_REDUCE_1024 334 335.align 32 336.LOOP_REDUCE_1024: 337 vmovd %eax,%xmm13 338 vpbroadcastq %xmm13,%ymm13 339 340 vpmuludq 32-128(%r13),%ymm12,%ymm10 341 movq %rax,%rdx 342 imulq -128(%r13),%rax 343 vpaddq %ymm10,%ymm1,%ymm1 344 addq %rax,%r10 345 vpmuludq 64-128(%r13),%ymm12,%ymm14 346 movq %rdx,%rax 347 imulq 8-128(%r13),%rax 348 vpaddq %ymm14,%ymm2,%ymm2 349 vpmuludq 96-128(%r13),%ymm12,%ymm11 350.byte 0x67 351 addq %rax,%r11 352.byte 0x67 353 movq %rdx,%rax 354 imulq 16-128(%r13),%rax 355 shrq $29,%r10 356 vpaddq %ymm11,%ymm3,%ymm3 357 vpmuludq 128-128(%r13),%ymm12,%ymm10 358 addq %rax,%r12 359 addq %r10,%r11 360 vpaddq %ymm10,%ymm4,%ymm4 361 vpmuludq 160-128(%r13),%ymm12,%ymm14 362 movq %r11,%rax 363 imull %ecx,%eax 364 vpaddq %ymm14,%ymm5,%ymm5 365 vpmuludq 192-128(%r13),%ymm12,%ymm11 366 andl $0x1fffffff,%eax 367 vpaddq %ymm11,%ymm6,%ymm6 368 vpmuludq 224-128(%r13),%ymm12,%ymm10 369 vpaddq %ymm10,%ymm7,%ymm7 370 vpmuludq 256-128(%r13),%ymm12,%ymm14 371 vmovd %eax,%xmm12 372 373 vpaddq %ymm14,%ymm8,%ymm8 374 375 vpbroadcastq %xmm12,%ymm12 376 377 vpmuludq 32-8-128(%r13),%ymm13,%ymm11 378 vmovdqu 96-8-128(%r13),%ymm14 379 movq %rax,%rdx 380 imulq -128(%r13),%rax 381 vpaddq %ymm11,%ymm1,%ymm1 382 vpmuludq 64-8-128(%r13),%ymm13,%ymm10 383 vmovdqu 128-8-128(%r13),%ymm11 384 addq %rax,%r11 385 movq %rdx,%rax 386 imulq 8-128(%r13),%rax 387 vpaddq %ymm10,%ymm2,%ymm2 388 addq %r12,%rax 389 shrq $29,%r11 390 vpmuludq %ymm13,%ymm14,%ymm14 391 vmovdqu 160-8-128(%r13),%ymm10 392 addq %r11,%rax 393 vpaddq %ymm14,%ymm3,%ymm3 394 vpmuludq %ymm13,%ymm11,%ymm11 395 vmovdqu 192-8-128(%r13),%ymm14 396.byte 0x67 397 movq %rax,%r12 398 imull %ecx,%eax 399 vpaddq %ymm11,%ymm4,%ymm4 400 vpmuludq %ymm13,%ymm10,%ymm10 401.byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00 402 andl $0x1fffffff,%eax 403 vpaddq %ymm10,%ymm5,%ymm5 404 vpmuludq %ymm13,%ymm14,%ymm14 405 vmovdqu 256-8-128(%r13),%ymm10 406 vpaddq %ymm14,%ymm6,%ymm6 407 vpmuludq %ymm13,%ymm11,%ymm11 408 vmovdqu 288-8-128(%r13),%ymm9 409 vmovd %eax,%xmm0 410 imulq -128(%r13),%rax 411 vpaddq %ymm11,%ymm7,%ymm7 412 vpmuludq %ymm13,%ymm10,%ymm10 413 vmovdqu 32-16-128(%r13),%ymm14 414 vpbroadcastq %xmm0,%ymm0 415 vpaddq %ymm10,%ymm8,%ymm8 416 vpmuludq %ymm13,%ymm9,%ymm9 417 vmovdqu 64-16-128(%r13),%ymm11 418 addq %rax,%r12 419 420 vmovdqu 32-24-128(%r13),%ymm13 421 vpmuludq %ymm12,%ymm14,%ymm14 422 vmovdqu 96-16-128(%r13),%ymm10 423 vpaddq %ymm14,%ymm1,%ymm1 424 vpmuludq %ymm0,%ymm13,%ymm13 425 vpmuludq %ymm12,%ymm11,%ymm11 426.byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff 427 vpaddq %ymm1,%ymm13,%ymm13 428 vpaddq %ymm11,%ymm2,%ymm2 429 vpmuludq %ymm12,%ymm10,%ymm10 430 vmovdqu 160-16-128(%r13),%ymm11 431.byte 0x67 432 vmovq %xmm13,%rax 433 vmovdqu %ymm13,(%rsp) 434 vpaddq %ymm10,%ymm3,%ymm3 435 vpmuludq %ymm12,%ymm14,%ymm14 436 vmovdqu 192-16-128(%r13),%ymm10 437 vpaddq %ymm14,%ymm4,%ymm4 438 vpmuludq %ymm12,%ymm11,%ymm11 439 vmovdqu 224-16-128(%r13),%ymm14 440 vpaddq %ymm11,%ymm5,%ymm5 441 vpmuludq %ymm12,%ymm10,%ymm10 442 vmovdqu 256-16-128(%r13),%ymm11 443 vpaddq %ymm10,%ymm6,%ymm6 444 vpmuludq %ymm12,%ymm14,%ymm14 445 shrq $29,%r12 446 vmovdqu 288-16-128(%r13),%ymm10 447 addq %r12,%rax 448 vpaddq %ymm14,%ymm7,%ymm7 449 vpmuludq %ymm12,%ymm11,%ymm11 450 451 movq %rax,%r9 452 imull %ecx,%eax 453 vpaddq %ymm11,%ymm8,%ymm8 454 vpmuludq %ymm12,%ymm10,%ymm10 455 andl $0x1fffffff,%eax 456 vmovd %eax,%xmm12 457 vmovdqu 96-24-128(%r13),%ymm11 458.byte 0x67 459 vpaddq %ymm10,%ymm9,%ymm9 460 vpbroadcastq %xmm12,%ymm12 461 462 vpmuludq 64-24-128(%r13),%ymm0,%ymm14 463 vmovdqu 128-24-128(%r13),%ymm10 464 movq %rax,%rdx 465 imulq -128(%r13),%rax 466 movq 8(%rsp),%r10 467 vpaddq %ymm14,%ymm2,%ymm1 468 vpmuludq %ymm0,%ymm11,%ymm11 469 vmovdqu 160-24-128(%r13),%ymm14 470 addq %rax,%r9 471 movq %rdx,%rax 472 imulq 8-128(%r13),%rax 473.byte 0x67 474 shrq $29,%r9 475 movq 16(%rsp),%r11 476 vpaddq %ymm11,%ymm3,%ymm2 477 vpmuludq %ymm0,%ymm10,%ymm10 478 vmovdqu 192-24-128(%r13),%ymm11 479 addq %rax,%r10 480 movq %rdx,%rax 481 imulq 16-128(%r13),%rax 482 vpaddq %ymm10,%ymm4,%ymm3 483 vpmuludq %ymm0,%ymm14,%ymm14 484 vmovdqu 224-24-128(%r13),%ymm10 485 imulq 24-128(%r13),%rdx 486 addq %rax,%r11 487 leaq (%r9,%r10,1),%rax 488 vpaddq %ymm14,%ymm5,%ymm4 489 vpmuludq %ymm0,%ymm11,%ymm11 490 vmovdqu 256-24-128(%r13),%ymm14 491 movq %rax,%r10 492 imull %ecx,%eax 493 vpmuludq %ymm0,%ymm10,%ymm10 494 vpaddq %ymm11,%ymm6,%ymm5 495 vmovdqu 288-24-128(%r13),%ymm11 496 andl $0x1fffffff,%eax 497 vpaddq %ymm10,%ymm7,%ymm6 498 vpmuludq %ymm0,%ymm14,%ymm14 499 addq 24(%rsp),%rdx 500 vpaddq %ymm14,%ymm8,%ymm7 501 vpmuludq %ymm0,%ymm11,%ymm11 502 vpaddq %ymm11,%ymm9,%ymm8 503 vmovq %r12,%xmm9 504 movq %rdx,%r12 505 506 decl %r14d 507 jnz .LOOP_REDUCE_1024 508 leaq 448(%rsp),%r12 509 vpaddq %ymm9,%ymm13,%ymm0 510 vpxor %ymm9,%ymm9,%ymm9 511 512 vpaddq 288-192(%rbx),%ymm0,%ymm0 513 vpaddq 320-448(%r12),%ymm1,%ymm1 514 vpaddq 352-448(%r12),%ymm2,%ymm2 515 vpaddq 384-448(%r12),%ymm3,%ymm3 516 vpaddq 416-448(%r12),%ymm4,%ymm4 517 vpaddq 448-448(%r12),%ymm5,%ymm5 518 vpaddq 480-448(%r12),%ymm6,%ymm6 519 vpaddq 512-448(%r12),%ymm7,%ymm7 520 vpaddq 544-448(%r12),%ymm8,%ymm8 521 522 vpsrlq $29,%ymm0,%ymm14 523 vpand %ymm15,%ymm0,%ymm0 524 vpsrlq $29,%ymm1,%ymm11 525 vpand %ymm15,%ymm1,%ymm1 526 vpsrlq $29,%ymm2,%ymm12 527 vpermq $0x93,%ymm14,%ymm14 528 vpand %ymm15,%ymm2,%ymm2 529 vpsrlq $29,%ymm3,%ymm13 530 vpermq $0x93,%ymm11,%ymm11 531 vpand %ymm15,%ymm3,%ymm3 532 vpermq $0x93,%ymm12,%ymm12 533 534 vpblendd $3,%ymm9,%ymm14,%ymm10 535 vpermq $0x93,%ymm13,%ymm13 536 vpblendd $3,%ymm14,%ymm11,%ymm14 537 vpaddq %ymm10,%ymm0,%ymm0 538 vpblendd $3,%ymm11,%ymm12,%ymm11 539 vpaddq %ymm14,%ymm1,%ymm1 540 vpblendd $3,%ymm12,%ymm13,%ymm12 541 vpaddq %ymm11,%ymm2,%ymm2 542 vpblendd $3,%ymm13,%ymm9,%ymm13 543 vpaddq %ymm12,%ymm3,%ymm3 544 vpaddq %ymm13,%ymm4,%ymm4 545 546 vpsrlq $29,%ymm0,%ymm14 547 vpand %ymm15,%ymm0,%ymm0 548 vpsrlq $29,%ymm1,%ymm11 549 vpand %ymm15,%ymm1,%ymm1 550 vpsrlq $29,%ymm2,%ymm12 551 vpermq $0x93,%ymm14,%ymm14 552 vpand %ymm15,%ymm2,%ymm2 553 vpsrlq $29,%ymm3,%ymm13 554 vpermq $0x93,%ymm11,%ymm11 555 vpand %ymm15,%ymm3,%ymm3 556 vpermq $0x93,%ymm12,%ymm12 557 558 vpblendd $3,%ymm9,%ymm14,%ymm10 559 vpermq $0x93,%ymm13,%ymm13 560 vpblendd $3,%ymm14,%ymm11,%ymm14 561 vpaddq %ymm10,%ymm0,%ymm0 562 vpblendd $3,%ymm11,%ymm12,%ymm11 563 vpaddq %ymm14,%ymm1,%ymm1 564 vmovdqu %ymm0,0-128(%rdi) 565 vpblendd $3,%ymm12,%ymm13,%ymm12 566 vpaddq %ymm11,%ymm2,%ymm2 567 vmovdqu %ymm1,32-128(%rdi) 568 vpblendd $3,%ymm13,%ymm9,%ymm13 569 vpaddq %ymm12,%ymm3,%ymm3 570 vmovdqu %ymm2,64-128(%rdi) 571 vpaddq %ymm13,%ymm4,%ymm4 572 vmovdqu %ymm3,96-128(%rdi) 573 vpsrlq $29,%ymm4,%ymm14 574 vpand %ymm15,%ymm4,%ymm4 575 vpsrlq $29,%ymm5,%ymm11 576 vpand %ymm15,%ymm5,%ymm5 577 vpsrlq $29,%ymm6,%ymm12 578 vpermq $0x93,%ymm14,%ymm14 579 vpand %ymm15,%ymm6,%ymm6 580 vpsrlq $29,%ymm7,%ymm13 581 vpermq $0x93,%ymm11,%ymm11 582 vpand %ymm15,%ymm7,%ymm7 583 vpsrlq $29,%ymm8,%ymm0 584 vpermq $0x93,%ymm12,%ymm12 585 vpand %ymm15,%ymm8,%ymm8 586 vpermq $0x93,%ymm13,%ymm13 587 588 vpblendd $3,%ymm9,%ymm14,%ymm10 589 vpermq $0x93,%ymm0,%ymm0 590 vpblendd $3,%ymm14,%ymm11,%ymm14 591 vpaddq %ymm10,%ymm4,%ymm4 592 vpblendd $3,%ymm11,%ymm12,%ymm11 593 vpaddq %ymm14,%ymm5,%ymm5 594 vpblendd $3,%ymm12,%ymm13,%ymm12 595 vpaddq %ymm11,%ymm6,%ymm6 596 vpblendd $3,%ymm13,%ymm0,%ymm13 597 vpaddq %ymm12,%ymm7,%ymm7 598 vpaddq %ymm13,%ymm8,%ymm8 599 600 vpsrlq $29,%ymm4,%ymm14 601 vpand %ymm15,%ymm4,%ymm4 602 vpsrlq $29,%ymm5,%ymm11 603 vpand %ymm15,%ymm5,%ymm5 604 vpsrlq $29,%ymm6,%ymm12 605 vpermq $0x93,%ymm14,%ymm14 606 vpand %ymm15,%ymm6,%ymm6 607 vpsrlq $29,%ymm7,%ymm13 608 vpermq $0x93,%ymm11,%ymm11 609 vpand %ymm15,%ymm7,%ymm7 610 vpsrlq $29,%ymm8,%ymm0 611 vpermq $0x93,%ymm12,%ymm12 612 vpand %ymm15,%ymm8,%ymm8 613 vpermq $0x93,%ymm13,%ymm13 614 615 vpblendd $3,%ymm9,%ymm14,%ymm10 616 vpermq $0x93,%ymm0,%ymm0 617 vpblendd $3,%ymm14,%ymm11,%ymm14 618 vpaddq %ymm10,%ymm4,%ymm4 619 vpblendd $3,%ymm11,%ymm12,%ymm11 620 vpaddq %ymm14,%ymm5,%ymm5 621 vmovdqu %ymm4,128-128(%rdi) 622 vpblendd $3,%ymm12,%ymm13,%ymm12 623 vpaddq %ymm11,%ymm6,%ymm6 624 vmovdqu %ymm5,160-128(%rdi) 625 vpblendd $3,%ymm13,%ymm0,%ymm13 626 vpaddq %ymm12,%ymm7,%ymm7 627 vmovdqu %ymm6,192-128(%rdi) 628 vpaddq %ymm13,%ymm8,%ymm8 629 vmovdqu %ymm7,224-128(%rdi) 630 vmovdqu %ymm8,256-128(%rdi) 631 632 movq %rdi,%rsi 633 decl %r8d 634 jne .LOOP_GRANDE_SQR_1024 635 636 vzeroall 637 movq %rbp,%rax 638.cfi_def_cfa_register %rax 639 movq -48(%rax),%r15 640.cfi_restore %r15 641 movq -40(%rax),%r14 642.cfi_restore %r14 643 movq -32(%rax),%r13 644.cfi_restore %r13 645 movq -24(%rax),%r12 646.cfi_restore %r12 647 movq -16(%rax),%rbp 648.cfi_restore %rbp 649 movq -8(%rax),%rbx 650.cfi_restore %rbx 651 leaq (%rax),%rsp 652.cfi_def_cfa_register %rsp 653.Lsqr_1024_epilogue: 654 .byte 0xf3,0xc3 655.cfi_endproc 656.size rsaz_1024_sqr_avx2,.-rsaz_1024_sqr_avx2 657.globl rsaz_1024_mul_avx2 658.type rsaz_1024_mul_avx2,@function 659.align 64 660rsaz_1024_mul_avx2: 661.cfi_startproc 662 leaq (%rsp),%rax 663.cfi_def_cfa_register %rax 664 pushq %rbx 665.cfi_offset %rbx,-16 666 pushq %rbp 667.cfi_offset %rbp,-24 668 pushq %r12 669.cfi_offset %r12,-32 670 pushq %r13 671.cfi_offset %r13,-40 672 pushq %r14 673.cfi_offset %r14,-48 674 pushq %r15 675.cfi_offset %r15,-56 676 movq %rax,%rbp 677.cfi_def_cfa_register %rbp 678 vzeroall 679 movq %rdx,%r13 680 subq $64,%rsp 681 682 683 684 685 686 687.byte 0x67,0x67 688 movq %rsi,%r15 689 andq $4095,%r15 690 addq $320,%r15 691 shrq $12,%r15 692 movq %rsi,%r15 693 cmovnzq %r13,%rsi 694 cmovnzq %r15,%r13 695 696 movq %rcx,%r15 697 subq $-128,%rsi 698 subq $-128,%rcx 699 subq $-128,%rdi 700 701 andq $4095,%r15 702 addq $320,%r15 703.byte 0x67,0x67 704 shrq $12,%r15 705 jz .Lmul_1024_no_n_copy 706 707 708 709 710 711 subq $320,%rsp 712 vmovdqu 0-128(%rcx),%ymm0 713 andq $-512,%rsp 714 vmovdqu 32-128(%rcx),%ymm1 715 vmovdqu 64-128(%rcx),%ymm2 716 vmovdqu 96-128(%rcx),%ymm3 717 vmovdqu 128-128(%rcx),%ymm4 718 vmovdqu 160-128(%rcx),%ymm5 719 vmovdqu 192-128(%rcx),%ymm6 720 vmovdqu 224-128(%rcx),%ymm7 721 vmovdqu 256-128(%rcx),%ymm8 722 leaq 64+128(%rsp),%rcx 723 vmovdqu %ymm0,0-128(%rcx) 724 vpxor %ymm0,%ymm0,%ymm0 725 vmovdqu %ymm1,32-128(%rcx) 726 vpxor %ymm1,%ymm1,%ymm1 727 vmovdqu %ymm2,64-128(%rcx) 728 vpxor %ymm2,%ymm2,%ymm2 729 vmovdqu %ymm3,96-128(%rcx) 730 vpxor %ymm3,%ymm3,%ymm3 731 vmovdqu %ymm4,128-128(%rcx) 732 vpxor %ymm4,%ymm4,%ymm4 733 vmovdqu %ymm5,160-128(%rcx) 734 vpxor %ymm5,%ymm5,%ymm5 735 vmovdqu %ymm6,192-128(%rcx) 736 vpxor %ymm6,%ymm6,%ymm6 737 vmovdqu %ymm7,224-128(%rcx) 738 vpxor %ymm7,%ymm7,%ymm7 739 vmovdqu %ymm8,256-128(%rcx) 740 vmovdqa %ymm0,%ymm8 741 vmovdqu %ymm9,288-128(%rcx) 742.Lmul_1024_no_n_copy: 743 andq $-64,%rsp 744 745 movq (%r13),%rbx 746 vpbroadcastq (%r13),%ymm10 747 vmovdqu %ymm0,(%rsp) 748 xorq %r9,%r9 749.byte 0x67 750 xorq %r10,%r10 751 xorq %r11,%r11 752 xorq %r12,%r12 753 754 vmovdqu .Land_mask(%rip),%ymm15 755 movl $9,%r14d 756 vmovdqu %ymm9,288-128(%rdi) 757 jmp .Loop_mul_1024 758 759.align 32 760.Loop_mul_1024: 761 vpsrlq $29,%ymm3,%ymm9 762 movq %rbx,%rax 763 imulq -128(%rsi),%rax 764 addq %r9,%rax 765 movq %rbx,%r10 766 imulq 8-128(%rsi),%r10 767 addq 8(%rsp),%r10 768 769 movq %rax,%r9 770 imull %r8d,%eax 771 andl $0x1fffffff,%eax 772 773 movq %rbx,%r11 774 imulq 16-128(%rsi),%r11 775 addq 16(%rsp),%r11 776 777 movq %rbx,%r12 778 imulq 24-128(%rsi),%r12 779 addq 24(%rsp),%r12 780 vpmuludq 32-128(%rsi),%ymm10,%ymm0 781 vmovd %eax,%xmm11 782 vpaddq %ymm0,%ymm1,%ymm1 783 vpmuludq 64-128(%rsi),%ymm10,%ymm12 784 vpbroadcastq %xmm11,%ymm11 785 vpaddq %ymm12,%ymm2,%ymm2 786 vpmuludq 96-128(%rsi),%ymm10,%ymm13 787 vpand %ymm15,%ymm3,%ymm3 788 vpaddq %ymm13,%ymm3,%ymm3 789 vpmuludq 128-128(%rsi),%ymm10,%ymm0 790 vpaddq %ymm0,%ymm4,%ymm4 791 vpmuludq 160-128(%rsi),%ymm10,%ymm12 792 vpaddq %ymm12,%ymm5,%ymm5 793 vpmuludq 192-128(%rsi),%ymm10,%ymm13 794 vpaddq %ymm13,%ymm6,%ymm6 795 vpmuludq 224-128(%rsi),%ymm10,%ymm0 796 vpermq $0x93,%ymm9,%ymm9 797 vpaddq %ymm0,%ymm7,%ymm7 798 vpmuludq 256-128(%rsi),%ymm10,%ymm12 799 vpbroadcastq 8(%r13),%ymm10 800 vpaddq %ymm12,%ymm8,%ymm8 801 802 movq %rax,%rdx 803 imulq -128(%rcx),%rax 804 addq %rax,%r9 805 movq %rdx,%rax 806 imulq 8-128(%rcx),%rax 807 addq %rax,%r10 808 movq %rdx,%rax 809 imulq 16-128(%rcx),%rax 810 addq %rax,%r11 811 shrq $29,%r9 812 imulq 24-128(%rcx),%rdx 813 addq %rdx,%r12 814 addq %r9,%r10 815 816 vpmuludq 32-128(%rcx),%ymm11,%ymm13 817 vmovq %xmm10,%rbx 818 vpaddq %ymm13,%ymm1,%ymm1 819 vpmuludq 64-128(%rcx),%ymm11,%ymm0 820 vpaddq %ymm0,%ymm2,%ymm2 821 vpmuludq 96-128(%rcx),%ymm11,%ymm12 822 vpaddq %ymm12,%ymm3,%ymm3 823 vpmuludq 128-128(%rcx),%ymm11,%ymm13 824 vpaddq %ymm13,%ymm4,%ymm4 825 vpmuludq 160-128(%rcx),%ymm11,%ymm0 826 vpaddq %ymm0,%ymm5,%ymm5 827 vpmuludq 192-128(%rcx),%ymm11,%ymm12 828 vpaddq %ymm12,%ymm6,%ymm6 829 vpmuludq 224-128(%rcx),%ymm11,%ymm13 830 vpblendd $3,%ymm14,%ymm9,%ymm12 831 vpaddq %ymm13,%ymm7,%ymm7 832 vpmuludq 256-128(%rcx),%ymm11,%ymm0 833 vpaddq %ymm12,%ymm3,%ymm3 834 vpaddq %ymm0,%ymm8,%ymm8 835 836 movq %rbx,%rax 837 imulq -128(%rsi),%rax 838 addq %rax,%r10 839 vmovdqu -8+32-128(%rsi),%ymm12 840 movq %rbx,%rax 841 imulq 8-128(%rsi),%rax 842 addq %rax,%r11 843 vmovdqu -8+64-128(%rsi),%ymm13 844 845 movq %r10,%rax 846 vpblendd $0xfc,%ymm14,%ymm9,%ymm9 847 imull %r8d,%eax 848 vpaddq %ymm9,%ymm4,%ymm4 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 vpaddq (%rsp),%ymm12,%ymm0 1078 1079 vpsrlq $29,%ymm0,%ymm12 1080 vpand %ymm15,%ymm0,%ymm0 1081 vpsrlq $29,%ymm1,%ymm13 1082 vpand %ymm15,%ymm1,%ymm1 1083 vpsrlq $29,%ymm2,%ymm10 1084 vpermq $0x93,%ymm12,%ymm12 1085 vpand %ymm15,%ymm2,%ymm2 1086 vpsrlq $29,%ymm3,%ymm11 1087 vpermq $0x93,%ymm13,%ymm13 1088 vpand %ymm15,%ymm3,%ymm3 1089 1090 vpblendd $3,%ymm14,%ymm12,%ymm9 1091 vpermq $0x93,%ymm10,%ymm10 1092 vpblendd $3,%ymm12,%ymm13,%ymm12 1093 vpermq $0x93,%ymm11,%ymm11 1094 vpaddq %ymm9,%ymm0,%ymm0 1095 vpblendd $3,%ymm13,%ymm10,%ymm13 1096 vpaddq %ymm12,%ymm1,%ymm1 1097 vpblendd $3,%ymm10,%ymm11,%ymm10 1098 vpaddq %ymm13,%ymm2,%ymm2 1099 vpblendd $3,%ymm11,%ymm14,%ymm11 1100 vpaddq %ymm10,%ymm3,%ymm3 1101 vpaddq %ymm11,%ymm4,%ymm4 1102 1103 vpsrlq $29,%ymm0,%ymm12 1104 vpand %ymm15,%ymm0,%ymm0 1105 vpsrlq $29,%ymm1,%ymm13 1106 vpand %ymm15,%ymm1,%ymm1 1107 vpsrlq $29,%ymm2,%ymm10 1108 vpermq $0x93,%ymm12,%ymm12 1109 vpand %ymm15,%ymm2,%ymm2 1110 vpsrlq $29,%ymm3,%ymm11 1111 vpermq $0x93,%ymm13,%ymm13 1112 vpand %ymm15,%ymm3,%ymm3 1113 vpermq $0x93,%ymm10,%ymm10 1114 1115 vpblendd $3,%ymm14,%ymm12,%ymm9 1116 vpermq $0x93,%ymm11,%ymm11 1117 vpblendd $3,%ymm12,%ymm13,%ymm12 1118 vpaddq %ymm9,%ymm0,%ymm0 1119 vpblendd $3,%ymm13,%ymm10,%ymm13 1120 vpaddq %ymm12,%ymm1,%ymm1 1121 vpblendd $3,%ymm10,%ymm11,%ymm10 1122 vpaddq %ymm13,%ymm2,%ymm2 1123 vpblendd $3,%ymm11,%ymm14,%ymm11 1124 vpaddq %ymm10,%ymm3,%ymm3 1125 vpaddq %ymm11,%ymm4,%ymm4 1126 1127 vmovdqu %ymm0,0-128(%rdi) 1128 vmovdqu %ymm1,32-128(%rdi) 1129 vmovdqu %ymm2,64-128(%rdi) 1130 vmovdqu %ymm3,96-128(%rdi) 1131 vpsrlq $29,%ymm4,%ymm12 1132 vpand %ymm15,%ymm4,%ymm4 1133 vpsrlq $29,%ymm5,%ymm13 1134 vpand %ymm15,%ymm5,%ymm5 1135 vpsrlq $29,%ymm6,%ymm10 1136 vpermq $0x93,%ymm12,%ymm12 1137 vpand %ymm15,%ymm6,%ymm6 1138 vpsrlq $29,%ymm7,%ymm11 1139 vpermq $0x93,%ymm13,%ymm13 1140 vpand %ymm15,%ymm7,%ymm7 1141 vpsrlq $29,%ymm8,%ymm0 1142 vpermq $0x93,%ymm10,%ymm10 1143 vpand %ymm15,%ymm8,%ymm8 1144 vpermq $0x93,%ymm11,%ymm11 1145 1146 vpblendd $3,%ymm14,%ymm12,%ymm9 1147 vpermq $0x93,%ymm0,%ymm0 1148 vpblendd $3,%ymm12,%ymm13,%ymm12 1149 vpaddq %ymm9,%ymm4,%ymm4 1150 vpblendd $3,%ymm13,%ymm10,%ymm13 1151 vpaddq %ymm12,%ymm5,%ymm5 1152 vpblendd $3,%ymm10,%ymm11,%ymm10 1153 vpaddq %ymm13,%ymm6,%ymm6 1154 vpblendd $3,%ymm11,%ymm0,%ymm11 1155 vpaddq %ymm10,%ymm7,%ymm7 1156 vpaddq %ymm11,%ymm8,%ymm8 1157 1158 vpsrlq $29,%ymm4,%ymm12 1159 vpand %ymm15,%ymm4,%ymm4 1160 vpsrlq $29,%ymm5,%ymm13 1161 vpand %ymm15,%ymm5,%ymm5 1162 vpsrlq $29,%ymm6,%ymm10 1163 vpermq $0x93,%ymm12,%ymm12 1164 vpand %ymm15,%ymm6,%ymm6 1165 vpsrlq $29,%ymm7,%ymm11 1166 vpermq $0x93,%ymm13,%ymm13 1167 vpand %ymm15,%ymm7,%ymm7 1168 vpsrlq $29,%ymm8,%ymm0 1169 vpermq $0x93,%ymm10,%ymm10 1170 vpand %ymm15,%ymm8,%ymm8 1171 vpermq $0x93,%ymm11,%ymm11 1172 1173 vpblendd $3,%ymm14,%ymm12,%ymm9 1174 vpermq $0x93,%ymm0,%ymm0 1175 vpblendd $3,%ymm12,%ymm13,%ymm12 1176 vpaddq %ymm9,%ymm4,%ymm4 1177 vpblendd $3,%ymm13,%ymm10,%ymm13 1178 vpaddq %ymm12,%ymm5,%ymm5 1179 vpblendd $3,%ymm10,%ymm11,%ymm10 1180 vpaddq %ymm13,%ymm6,%ymm6 1181 vpblendd $3,%ymm11,%ymm0,%ymm11 1182 vpaddq %ymm10,%ymm7,%ymm7 1183 vpaddq %ymm11,%ymm8,%ymm8 1184 1185 vmovdqu %ymm4,128-128(%rdi) 1186 vmovdqu %ymm5,160-128(%rdi) 1187 vmovdqu %ymm6,192-128(%rdi) 1188 vmovdqu %ymm7,224-128(%rdi) 1189 vmovdqu %ymm8,256-128(%rdi) 1190 vzeroupper 1191 1192 movq %rbp,%rax 1193.cfi_def_cfa_register %rax 1194 movq -48(%rax),%r15 1195.cfi_restore %r15 1196 movq -40(%rax),%r14 1197.cfi_restore %r14 1198 movq -32(%rax),%r13 1199.cfi_restore %r13 1200 movq -24(%rax),%r12 1201.cfi_restore %r12 1202 movq -16(%rax),%rbp 1203.cfi_restore %rbp 1204 movq -8(%rax),%rbx 1205.cfi_restore %rbx 1206 leaq (%rax),%rsp 1207.cfi_def_cfa_register %rsp 1208.Lmul_1024_epilogue: 1209 .byte 0xf3,0xc3 1210.cfi_endproc 1211.size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2 1212.globl rsaz_1024_red2norm_avx2 1213.type rsaz_1024_red2norm_avx2,@function 1214.align 32 1215rsaz_1024_red2norm_avx2: 1216.cfi_startproc 1217 subq $-128,%rsi 1218 xorq %rax,%rax 1219 movq -128(%rsi),%r8 1220 movq -120(%rsi),%r9 1221 movq -112(%rsi),%r10 1222 shlq $0,%r8 1223 shlq $29,%r9 1224 movq %r10,%r11 1225 shlq $58,%r10 1226 shrq $6,%r11 1227 addq %r8,%rax 1228 addq %r9,%rax 1229 addq %r10,%rax 1230 adcq $0,%r11 1231 movq %rax,0(%rdi) 1232 movq %r11,%rax 1233 movq -104(%rsi),%r8 1234 movq -96(%rsi),%r9 1235 shlq $23,%r8 1236 movq %r9,%r10 1237 shlq $52,%r9 1238 shrq $12,%r10 1239 addq %r8,%rax 1240 addq %r9,%rax 1241 adcq $0,%r10 1242 movq %rax,8(%rdi) 1243 movq %r10,%rax 1244 movq -88(%rsi),%r11 1245 movq -80(%rsi),%r8 1246 shlq $17,%r11 1247 movq %r8,%r9 1248 shlq $46,%r8 1249 shrq $18,%r9 1250 addq %r11,%rax 1251 addq %r8,%rax 1252 adcq $0,%r9 1253 movq %rax,16(%rdi) 1254 movq %r9,%rax 1255 movq -72(%rsi),%r10 1256 movq -64(%rsi),%r11 1257 shlq $11,%r10 1258 movq %r11,%r8 1259 shlq $40,%r11 1260 shrq $24,%r8 1261 addq %r10,%rax 1262 addq %r11,%rax 1263 adcq $0,%r8 1264 movq %rax,24(%rdi) 1265 movq %r8,%rax 1266 movq -56(%rsi),%r9 1267 movq -48(%rsi),%r10 1268 movq -40(%rsi),%r11 1269 shlq $5,%r9 1270 shlq $34,%r10 1271 movq %r11,%r8 1272 shlq $63,%r11 1273 shrq $1,%r8 1274 addq %r9,%rax 1275 addq %r10,%rax 1276 addq %r11,%rax 1277 adcq $0,%r8 1278 movq %rax,32(%rdi) 1279 movq %r8,%rax 1280 movq -32(%rsi),%r9 1281 movq -24(%rsi),%r10 1282 shlq $28,%r9 1283 movq %r10,%r11 1284 shlq $57,%r10 1285 shrq $7,%r11 1286 addq %r9,%rax 1287 addq %r10,%rax 1288 adcq $0,%r11 1289 movq %rax,40(%rdi) 1290 movq %r11,%rax 1291 movq -16(%rsi),%r8 1292 movq -8(%rsi),%r9 1293 shlq $22,%r8 1294 movq %r9,%r10 1295 shlq $51,%r9 1296 shrq $13,%r10 1297 addq %r8,%rax 1298 addq %r9,%rax 1299 adcq $0,%r10 1300 movq %rax,48(%rdi) 1301 movq %r10,%rax 1302 movq 0(%rsi),%r11 1303 movq 8(%rsi),%r8 1304 shlq $16,%r11 1305 movq %r8,%r9 1306 shlq $45,%r8 1307 shrq $19,%r9 1308 addq %r11,%rax 1309 addq %r8,%rax 1310 adcq $0,%r9 1311 movq %rax,56(%rdi) 1312 movq %r9,%rax 1313 movq 16(%rsi),%r10 1314 movq 24(%rsi),%r11 1315 shlq $10,%r10 1316 movq %r11,%r8 1317 shlq $39,%r11 1318 shrq $25,%r8 1319 addq %r10,%rax 1320 addq %r11,%rax 1321 adcq $0,%r8 1322 movq %rax,64(%rdi) 1323 movq %r8,%rax 1324 movq 32(%rsi),%r9 1325 movq 40(%rsi),%r10 1326 movq 48(%rsi),%r11 1327 shlq $4,%r9 1328 shlq $33,%r10 1329 movq %r11,%r8 1330 shlq $62,%r11 1331 shrq $2,%r8 1332 addq %r9,%rax 1333 addq %r10,%rax 1334 addq %r11,%rax 1335 adcq $0,%r8 1336 movq %rax,72(%rdi) 1337 movq %r8,%rax 1338 movq 56(%rsi),%r9 1339 movq 64(%rsi),%r10 1340 shlq $27,%r9 1341 movq %r10,%r11 1342 shlq $56,%r10 1343 shrq $8,%r11 1344 addq %r9,%rax 1345 addq %r10,%rax 1346 adcq $0,%r11 1347 movq %rax,80(%rdi) 1348 movq %r11,%rax 1349 movq 72(%rsi),%r8 1350 movq 80(%rsi),%r9 1351 shlq $21,%r8 1352 movq %r9,%r10 1353 shlq $50,%r9 1354 shrq $14,%r10 1355 addq %r8,%rax 1356 addq %r9,%rax 1357 adcq $0,%r10 1358 movq %rax,88(%rdi) 1359 movq %r10,%rax 1360 movq 88(%rsi),%r11 1361 movq 96(%rsi),%r8 1362 shlq $15,%r11 1363 movq %r8,%r9 1364 shlq $44,%r8 1365 shrq $20,%r9 1366 addq %r11,%rax 1367 addq %r8,%rax 1368 adcq $0,%r9 1369 movq %rax,96(%rdi) 1370 movq %r9,%rax 1371 movq 104(%rsi),%r10 1372 movq 112(%rsi),%r11 1373 shlq $9,%r10 1374 movq %r11,%r8 1375 shlq $38,%r11 1376 shrq $26,%r8 1377 addq %r10,%rax 1378 addq %r11,%rax 1379 adcq $0,%r8 1380 movq %rax,104(%rdi) 1381 movq %r8,%rax 1382 movq 120(%rsi),%r9 1383 movq 128(%rsi),%r10 1384 movq 136(%rsi),%r11 1385 shlq $3,%r9 1386 shlq $32,%r10 1387 movq %r11,%r8 1388 shlq $61,%r11 1389 shrq $3,%r8 1390 addq %r9,%rax 1391 addq %r10,%rax 1392 addq %r11,%rax 1393 adcq $0,%r8 1394 movq %rax,112(%rdi) 1395 movq %r8,%rax 1396 movq 144(%rsi),%r9 1397 movq 152(%rsi),%r10 1398 shlq $26,%r9 1399 movq %r10,%r11 1400 shlq $55,%r10 1401 shrq $9,%r11 1402 addq %r9,%rax 1403 addq %r10,%rax 1404 adcq $0,%r11 1405 movq %rax,120(%rdi) 1406 movq %r11,%rax 1407 .byte 0xf3,0xc3 1408.cfi_endproc 1409.size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2 1410 1411.globl rsaz_1024_norm2red_avx2 1412.type rsaz_1024_norm2red_avx2,@function 1413.align 32 1414rsaz_1024_norm2red_avx2: 1415.cfi_startproc 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.cfi_endproc 1569.size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2 1570.globl rsaz_1024_scatter5_avx2 1571.type rsaz_1024_scatter5_avx2,@function 1572.align 32 1573rsaz_1024_scatter5_avx2: 1574.cfi_startproc 1575 vzeroupper 1576 vmovdqu .Lscatter_permd(%rip),%ymm5 1577 shll $4,%edx 1578 leaq (%rdi,%rdx,1),%rdi 1579 movl $9,%eax 1580 jmp .Loop_scatter_1024 1581 1582.align 32 1583.Loop_scatter_1024: 1584 vmovdqu (%rsi),%ymm0 1585 leaq 32(%rsi),%rsi 1586 vpermd %ymm0,%ymm5,%ymm0 1587 vmovdqu %xmm0,(%rdi) 1588 leaq 512(%rdi),%rdi 1589 decl %eax 1590 jnz .Loop_scatter_1024 1591 1592 vzeroupper 1593 .byte 0xf3,0xc3 1594.cfi_endproc 1595.size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2 1596 1597.globl rsaz_1024_gather5_avx2 1598.type rsaz_1024_gather5_avx2,@function 1599.align 32 1600rsaz_1024_gather5_avx2: 1601.cfi_startproc 1602 vzeroupper 1603 movq %rsp,%r11 1604.cfi_def_cfa_register %r11 1605 leaq -256(%rsp),%rsp 1606 andq $-32,%rsp 1607 leaq .Linc(%rip),%r10 1608 leaq -128(%rsp),%rax 1609 1610 vmovd %edx,%xmm4 1611 vmovdqa (%r10),%ymm0 1612 vmovdqa 32(%r10),%ymm1 1613 vmovdqa 64(%r10),%ymm5 1614 vpbroadcastd %xmm4,%ymm4 1615 1616 vpaddd %ymm5,%ymm0,%ymm2 1617 vpcmpeqd %ymm4,%ymm0,%ymm0 1618 vpaddd %ymm5,%ymm1,%ymm3 1619 vpcmpeqd %ymm4,%ymm1,%ymm1 1620 vmovdqa %ymm0,0+128(%rax) 1621 vpaddd %ymm5,%ymm2,%ymm0 1622 vpcmpeqd %ymm4,%ymm2,%ymm2 1623 vmovdqa %ymm1,32+128(%rax) 1624 vpaddd %ymm5,%ymm3,%ymm1 1625 vpcmpeqd %ymm4,%ymm3,%ymm3 1626 vmovdqa %ymm2,64+128(%rax) 1627 vpaddd %ymm5,%ymm0,%ymm2 1628 vpcmpeqd %ymm4,%ymm0,%ymm0 1629 vmovdqa %ymm3,96+128(%rax) 1630 vpaddd %ymm5,%ymm1,%ymm3 1631 vpcmpeqd %ymm4,%ymm1,%ymm1 1632 vmovdqa %ymm0,128+128(%rax) 1633 vpaddd %ymm5,%ymm2,%ymm8 1634 vpcmpeqd %ymm4,%ymm2,%ymm2 1635 vmovdqa %ymm1,160+128(%rax) 1636 vpaddd %ymm5,%ymm3,%ymm9 1637 vpcmpeqd %ymm4,%ymm3,%ymm3 1638 vmovdqa %ymm2,192+128(%rax) 1639 vpaddd %ymm5,%ymm8,%ymm10 1640 vpcmpeqd %ymm4,%ymm8,%ymm8 1641 vmovdqa %ymm3,224+128(%rax) 1642 vpaddd %ymm5,%ymm9,%ymm11 1643 vpcmpeqd %ymm4,%ymm9,%ymm9 1644 vpaddd %ymm5,%ymm10,%ymm12 1645 vpcmpeqd %ymm4,%ymm10,%ymm10 1646 vpaddd %ymm5,%ymm11,%ymm13 1647 vpcmpeqd %ymm4,%ymm11,%ymm11 1648 vpaddd %ymm5,%ymm12,%ymm14 1649 vpcmpeqd %ymm4,%ymm12,%ymm12 1650 vpaddd %ymm5,%ymm13,%ymm15 1651 vpcmpeqd %ymm4,%ymm13,%ymm13 1652 vpcmpeqd %ymm4,%ymm14,%ymm14 1653 vpcmpeqd %ymm4,%ymm15,%ymm15 1654 1655 vmovdqa -32(%r10),%ymm7 1656 leaq 128(%rsi),%rsi 1657 movl $9,%edx 1658 1659.Loop_gather_1024: 1660 vmovdqa 0-128(%rsi),%ymm0 1661 vmovdqa 32-128(%rsi),%ymm1 1662 vmovdqa 64-128(%rsi),%ymm2 1663 vmovdqa 96-128(%rsi),%ymm3 1664 vpand 0+128(%rax),%ymm0,%ymm0 1665 vpand 32+128(%rax),%ymm1,%ymm1 1666 vpand 64+128(%rax),%ymm2,%ymm2 1667 vpor %ymm0,%ymm1,%ymm4 1668 vpand 96+128(%rax),%ymm3,%ymm3 1669 vmovdqa 128-128(%rsi),%ymm0 1670 vmovdqa 160-128(%rsi),%ymm1 1671 vpor %ymm2,%ymm3,%ymm5 1672 vmovdqa 192-128(%rsi),%ymm2 1673 vmovdqa 224-128(%rsi),%ymm3 1674 vpand 128+128(%rax),%ymm0,%ymm0 1675 vpand 160+128(%rax),%ymm1,%ymm1 1676 vpand 192+128(%rax),%ymm2,%ymm2 1677 vpor %ymm0,%ymm4,%ymm4 1678 vpand 224+128(%rax),%ymm3,%ymm3 1679 vpand 256-128(%rsi),%ymm8,%ymm0 1680 vpor %ymm1,%ymm5,%ymm5 1681 vpand 288-128(%rsi),%ymm9,%ymm1 1682 vpor %ymm2,%ymm4,%ymm4 1683 vpand 320-128(%rsi),%ymm10,%ymm2 1684 vpor %ymm3,%ymm5,%ymm5 1685 vpand 352-128(%rsi),%ymm11,%ymm3 1686 vpor %ymm0,%ymm4,%ymm4 1687 vpand 384-128(%rsi),%ymm12,%ymm0 1688 vpor %ymm1,%ymm5,%ymm5 1689 vpand 416-128(%rsi),%ymm13,%ymm1 1690 vpor %ymm2,%ymm4,%ymm4 1691 vpand 448-128(%rsi),%ymm14,%ymm2 1692 vpor %ymm3,%ymm5,%ymm5 1693 vpand 480-128(%rsi),%ymm15,%ymm3 1694 leaq 512(%rsi),%rsi 1695 vpor %ymm0,%ymm4,%ymm4 1696 vpor %ymm1,%ymm5,%ymm5 1697 vpor %ymm2,%ymm4,%ymm4 1698 vpor %ymm3,%ymm5,%ymm5 1699 1700 vpor %ymm5,%ymm4,%ymm4 1701 vextracti128 $1,%ymm4,%xmm5 1702 vpor %xmm4,%xmm5,%xmm5 1703 vpermd %ymm5,%ymm7,%ymm5 1704 vmovdqu %ymm5,(%rdi) 1705 leaq 32(%rdi),%rdi 1706 decl %edx 1707 jnz .Loop_gather_1024 1708 1709 vpxor %ymm0,%ymm0,%ymm0 1710 vmovdqu %ymm0,(%rdi) 1711 vzeroupper 1712 leaq (%r11),%rsp 1713.cfi_def_cfa_register %rsp 1714 .byte 0xf3,0xc3 1715.cfi_endproc 1716.LSEH_end_rsaz_1024_gather5: 1717.size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2 1718 1719.globl rsaz_avx2_eligible 1720.type rsaz_avx2_eligible,@function 1721.align 32 1722rsaz_avx2_eligible: 1723 movl OPENSSL_ia32cap_P+8(%rip),%eax 1724 movl $524544,%ecx 1725 movl $0,%edx 1726 andl %eax,%ecx 1727 cmpl $524544,%ecx 1728 cmovel %edx,%eax 1729 andl $32,%eax 1730 shrl $5,%eax 1731 .byte 0xf3,0xc3 1732.size rsaz_avx2_eligible,.-rsaz_avx2_eligible 1733 1734.align 64 1735.Land_mask: 1736.quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff 1737.Lscatter_permd: 1738.long 0,2,4,6,7,7,7,7 1739.Lgather_permd: 1740.long 0,7,1,7,2,7,3,7 1741.Linc: 1742.long 0,0,0,0, 1,1,1,1 1743.long 2,2,2,2, 3,3,3,3 1744.long 4,4,4,4, 4,4,4,4 1745.align 64 1746 .section ".note.gnu.property", "a" 1747 .p2align 3 1748 .long 1f - 0f 1749 .long 4f - 1f 1750 .long 5 17510: 1752 # "GNU" encoded with .byte, since .asciz isn't supported 1753 # on Solaris. 1754 .byte 0x47 1755 .byte 0x4e 1756 .byte 0x55 1757 .byte 0 17581: 1759 .p2align 3 1760 .long 0xc0000002 1761 .long 3f - 2f 17622: 1763 .long 3 17643: 1765 .p2align 3 17664: 1767