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