1 #if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) 2 .text 3 4 .globl _rsaz_1024_sqr_avx2 5 .private_extern _rsaz_1024_sqr_avx2 6 7 .p2align 6 8 _rsaz_1024_sqr_avx2: 9 10 leaq (%rsp),%rax 11 12 pushq %rbx 13 14 pushq %rbp 15 16 pushq %r12 17 18 pushq %r13 19 20 pushq %r14 21 22 pushq %r15 23 24 vzeroupper 25 movq %rax,%rbp 26 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 L$sqr_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 L$sqr_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 L$and_mask(%rip),%ymm15 81 jmp L$OOP_GRANDE_SQR_1024 82 83 .p2align 5 84 L$OOP_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 L$sqr_entry_1024 134 .p2align 5 135 L$OOP_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 L$sqr_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 L$OOP_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 L$OOP_REDUCE_1024 335 336 .p2align 5 337 L$OOP_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 L$OOP_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 L$OOP_GRANDE_SQR_1024 636 637 vzeroall 638 movq %rbp,%rax 639 640 movq -48(%rax),%r15 641 642 movq -40(%rax),%r14 643 644 movq -32(%rax),%r13 645 646 movq -24(%rax),%r12 647 648 movq -16(%rax),%rbp 649 650 movq -8(%rax),%rbx 651 652 leaq (%rax),%rsp 653 654 L$sqr_1024_epilogue: 655 .byte 0xf3,0xc3 656 657 658 .globl _rsaz_1024_mul_avx2 659 .private_extern _rsaz_1024_mul_avx2 660 661 .p2align 6 662 _rsaz_1024_mul_avx2: 663 664 leaq (%rsp),%rax 665 666 pushq %rbx 667 668 pushq %rbp 669 670 pushq %r12 671 672 pushq %r13 673 674 pushq %r14 675 676 pushq %r15 677 678 movq %rax,%rbp 679 680 vzeroall 681 movq %rdx,%r13 682 subq $64,%rsp 683 684 685 686 687 688 689 .byte 0x67,0x67 690 movq %rsi,%r15 691 andq $4095,%r15 692 addq $320,%r15 693 shrq $12,%r15 694 movq %rsi,%r15 695 cmovnzq %r13,%rsi 696 cmovnzq %r15,%r13 697 698 movq %rcx,%r15 699 subq $-128,%rsi 700 subq $-128,%rcx 701 subq $-128,%rdi 702 703 andq $4095,%r15 704 addq $320,%r15 705 .byte 0x67,0x67 706 shrq $12,%r15 707 jz L$mul_1024_no_n_copy 708 709 710 711 712 713 subq $320,%rsp 714 vmovdqu 0-128(%rcx),%ymm0 715 andq $-512,%rsp 716 vmovdqu 32-128(%rcx),%ymm1 717 vmovdqu 64-128(%rcx),%ymm2 718 vmovdqu 96-128(%rcx),%ymm3 719 vmovdqu 128-128(%rcx),%ymm4 720 vmovdqu 160-128(%rcx),%ymm5 721 vmovdqu 192-128(%rcx),%ymm6 722 vmovdqu 224-128(%rcx),%ymm7 723 vmovdqu 256-128(%rcx),%ymm8 724 leaq 64+128(%rsp),%rcx 725 vmovdqu %ymm0,0-128(%rcx) 726 vpxor %ymm0,%ymm0,%ymm0 727 vmovdqu %ymm1,32-128(%rcx) 728 vpxor %ymm1,%ymm1,%ymm1 729 vmovdqu %ymm2,64-128(%rcx) 730 vpxor %ymm2,%ymm2,%ymm2 731 vmovdqu %ymm3,96-128(%rcx) 732 vpxor %ymm3,%ymm3,%ymm3 733 vmovdqu %ymm4,128-128(%rcx) 734 vpxor %ymm4,%ymm4,%ymm4 735 vmovdqu %ymm5,160-128(%rcx) 736 vpxor %ymm5,%ymm5,%ymm5 737 vmovdqu %ymm6,192-128(%rcx) 738 vpxor %ymm6,%ymm6,%ymm6 739 vmovdqu %ymm7,224-128(%rcx) 740 vpxor %ymm7,%ymm7,%ymm7 741 vmovdqu %ymm8,256-128(%rcx) 742 vmovdqa %ymm0,%ymm8 743 vmovdqu %ymm9,288-128(%rcx) 744 L$mul_1024_no_n_copy: 745 andq $-64,%rsp 746 747 movq (%r13),%rbx 748 vpbroadcastq (%r13),%ymm10 749 vmovdqu %ymm0,(%rsp) 750 xorq %r9,%r9 751 .byte 0x67 752 xorq %r10,%r10 753 xorq %r11,%r11 754 xorq %r12,%r12 755 756 vmovdqu L$and_mask(%rip),%ymm15 757 movl $9,%r14d 758 vmovdqu %ymm9,288-128(%rdi) 759 jmp L$oop_mul_1024 760 761 .p2align 5 762 L$oop_mul_1024: 763 vpsrlq $29,%ymm3,%ymm9 764 movq %rbx,%rax 765 imulq -128(%rsi),%rax 766 addq %r9,%rax 767 movq %rbx,%r10 768 imulq 8-128(%rsi),%r10 769 addq 8(%rsp),%r10 770 771 movq %rax,%r9 772 imull %r8d,%eax 773 andl $0x1fffffff,%eax 774 775 movq %rbx,%r11 776 imulq 16-128(%rsi),%r11 777 addq 16(%rsp),%r11 778 779 movq %rbx,%r12 780 imulq 24-128(%rsi),%r12 781 addq 24(%rsp),%r12 782 vpmuludq 32-128(%rsi),%ymm10,%ymm0 783 vmovd %eax,%xmm11 784 vpaddq %ymm0,%ymm1,%ymm1 785 vpmuludq 64-128(%rsi),%ymm10,%ymm12 786 vpbroadcastq %xmm11,%ymm11 787 vpaddq %ymm12,%ymm2,%ymm2 788 vpmuludq 96-128(%rsi),%ymm10,%ymm13 789 vpand %ymm15,%ymm3,%ymm3 790 vpaddq %ymm13,%ymm3,%ymm3 791 vpmuludq 128-128(%rsi),%ymm10,%ymm0 792 vpaddq %ymm0,%ymm4,%ymm4 793 vpmuludq 160-128(%rsi),%ymm10,%ymm12 794 vpaddq %ymm12,%ymm5,%ymm5 795 vpmuludq 192-128(%rsi),%ymm10,%ymm13 796 vpaddq %ymm13,%ymm6,%ymm6 797 vpmuludq 224-128(%rsi),%ymm10,%ymm0 798 vpermq $0x93,%ymm9,%ymm9 799 vpaddq %ymm0,%ymm7,%ymm7 800 vpmuludq 256-128(%rsi),%ymm10,%ymm12 801 vpbroadcastq 8(%r13),%ymm10 802 vpaddq %ymm12,%ymm8,%ymm8 803 804 movq %rax,%rdx 805 imulq -128(%rcx),%rax 806 addq %rax,%r9 807 movq %rdx,%rax 808 imulq 8-128(%rcx),%rax 809 addq %rax,%r10 810 movq %rdx,%rax 811 imulq 16-128(%rcx),%rax 812 addq %rax,%r11 813 shrq $29,%r9 814 imulq 24-128(%rcx),%rdx 815 addq %rdx,%r12 816 addq %r9,%r10 817 818 vpmuludq 32-128(%rcx),%ymm11,%ymm13 819 vmovq %xmm10,%rbx 820 vpaddq %ymm13,%ymm1,%ymm1 821 vpmuludq 64-128(%rcx),%ymm11,%ymm0 822 vpaddq %ymm0,%ymm2,%ymm2 823 vpmuludq 96-128(%rcx),%ymm11,%ymm12 824 vpaddq %ymm12,%ymm3,%ymm3 825 vpmuludq 128-128(%rcx),%ymm11,%ymm13 826 vpaddq %ymm13,%ymm4,%ymm4 827 vpmuludq 160-128(%rcx),%ymm11,%ymm0 828 vpaddq %ymm0,%ymm5,%ymm5 829 vpmuludq 192-128(%rcx),%ymm11,%ymm12 830 vpaddq %ymm12,%ymm6,%ymm6 831 vpmuludq 224-128(%rcx),%ymm11,%ymm13 832 vpblendd $3,%ymm14,%ymm9,%ymm12 833 vpaddq %ymm13,%ymm7,%ymm7 834 vpmuludq 256-128(%rcx),%ymm11,%ymm0 835 vpaddq %ymm12,%ymm3,%ymm3 836 vpaddq %ymm0,%ymm8,%ymm8 837 838 movq %rbx,%rax 839 imulq -128(%rsi),%rax 840 addq %rax,%r10 841 vmovdqu -8+32-128(%rsi),%ymm12 842 movq %rbx,%rax 843 imulq 8-128(%rsi),%rax 844 addq %rax,%r11 845 vmovdqu -8+64-128(%rsi),%ymm13 846 847 movq %r10,%rax 848 vpblendd $0xfc,%ymm14,%ymm9,%ymm9 849 imull %r8d,%eax 850 vpaddq %ymm9,%ymm4,%ymm4 851 andl $0x1fffffff,%eax 852 853 imulq 16-128(%rsi),%rbx 854 addq %rbx,%r12 855 vpmuludq %ymm10,%ymm12,%ymm12 856 vmovd %eax,%xmm11 857 vmovdqu -8+96-128(%rsi),%ymm0 858 vpaddq %ymm12,%ymm1,%ymm1 859 vpmuludq %ymm10,%ymm13,%ymm13 860 vpbroadcastq %xmm11,%ymm11 861 vmovdqu -8+128-128(%rsi),%ymm12 862 vpaddq %ymm13,%ymm2,%ymm2 863 vpmuludq %ymm10,%ymm0,%ymm0 864 vmovdqu -8+160-128(%rsi),%ymm13 865 vpaddq %ymm0,%ymm3,%ymm3 866 vpmuludq %ymm10,%ymm12,%ymm12 867 vmovdqu -8+192-128(%rsi),%ymm0 868 vpaddq %ymm12,%ymm4,%ymm4 869 vpmuludq %ymm10,%ymm13,%ymm13 870 vmovdqu -8+224-128(%rsi),%ymm12 871 vpaddq %ymm13,%ymm5,%ymm5 872 vpmuludq %ymm10,%ymm0,%ymm0 873 vmovdqu -8+256-128(%rsi),%ymm13 874 vpaddq %ymm0,%ymm6,%ymm6 875 vpmuludq %ymm10,%ymm12,%ymm12 876 vmovdqu -8+288-128(%rsi),%ymm9 877 vpaddq %ymm12,%ymm7,%ymm7 878 vpmuludq %ymm10,%ymm13,%ymm13 879 vpaddq %ymm13,%ymm8,%ymm8 880 vpmuludq %ymm10,%ymm9,%ymm9 881 vpbroadcastq 16(%r13),%ymm10 882 883 movq %rax,%rdx 884 imulq -128(%rcx),%rax 885 addq %rax,%r10 886 vmovdqu -8+32-128(%rcx),%ymm0 887 movq %rdx,%rax 888 imulq 8-128(%rcx),%rax 889 addq %rax,%r11 890 vmovdqu -8+64-128(%rcx),%ymm12 891 shrq $29,%r10 892 imulq 16-128(%rcx),%rdx 893 addq %rdx,%r12 894 addq %r10,%r11 895 896 vpmuludq %ymm11,%ymm0,%ymm0 897 vmovq %xmm10,%rbx 898 vmovdqu -8+96-128(%rcx),%ymm13 899 vpaddq %ymm0,%ymm1,%ymm1 900 vpmuludq %ymm11,%ymm12,%ymm12 901 vmovdqu -8+128-128(%rcx),%ymm0 902 vpaddq %ymm12,%ymm2,%ymm2 903 vpmuludq %ymm11,%ymm13,%ymm13 904 vmovdqu -8+160-128(%rcx),%ymm12 905 vpaddq %ymm13,%ymm3,%ymm3 906 vpmuludq %ymm11,%ymm0,%ymm0 907 vmovdqu -8+192-128(%rcx),%ymm13 908 vpaddq %ymm0,%ymm4,%ymm4 909 vpmuludq %ymm11,%ymm12,%ymm12 910 vmovdqu -8+224-128(%rcx),%ymm0 911 vpaddq %ymm12,%ymm5,%ymm5 912 vpmuludq %ymm11,%ymm13,%ymm13 913 vmovdqu -8+256-128(%rcx),%ymm12 914 vpaddq %ymm13,%ymm6,%ymm6 915 vpmuludq %ymm11,%ymm0,%ymm0 916 vmovdqu -8+288-128(%rcx),%ymm13 917 vpaddq %ymm0,%ymm7,%ymm7 918 vpmuludq %ymm11,%ymm12,%ymm12 919 vpaddq %ymm12,%ymm8,%ymm8 920 vpmuludq %ymm11,%ymm13,%ymm13 921 vpaddq %ymm13,%ymm9,%ymm9 922 923 vmovdqu -16+32-128(%rsi),%ymm0 924 movq %rbx,%rax 925 imulq -128(%rsi),%rax 926 addq %r11,%rax 927 928 vmovdqu -16+64-128(%rsi),%ymm12 929 movq %rax,%r11 930 imull %r8d,%eax 931 andl $0x1fffffff,%eax 932 933 imulq 8-128(%rsi),%rbx 934 addq %rbx,%r12 935 vpmuludq %ymm10,%ymm0,%ymm0 936 vmovd %eax,%xmm11 937 vmovdqu -16+96-128(%rsi),%ymm13 938 vpaddq %ymm0,%ymm1,%ymm1 939 vpmuludq %ymm10,%ymm12,%ymm12 940 vpbroadcastq %xmm11,%ymm11 941 vmovdqu -16+128-128(%rsi),%ymm0 942 vpaddq %ymm12,%ymm2,%ymm2 943 vpmuludq %ymm10,%ymm13,%ymm13 944 vmovdqu -16+160-128(%rsi),%ymm12 945 vpaddq %ymm13,%ymm3,%ymm3 946 vpmuludq %ymm10,%ymm0,%ymm0 947 vmovdqu -16+192-128(%rsi),%ymm13 948 vpaddq %ymm0,%ymm4,%ymm4 949 vpmuludq %ymm10,%ymm12,%ymm12 950 vmovdqu -16+224-128(%rsi),%ymm0 951 vpaddq %ymm12,%ymm5,%ymm5 952 vpmuludq %ymm10,%ymm13,%ymm13 953 vmovdqu -16+256-128(%rsi),%ymm12 954 vpaddq %ymm13,%ymm6,%ymm6 955 vpmuludq %ymm10,%ymm0,%ymm0 956 vmovdqu -16+288-128(%rsi),%ymm13 957 vpaddq %ymm0,%ymm7,%ymm7 958 vpmuludq %ymm10,%ymm12,%ymm12 959 vpaddq %ymm12,%ymm8,%ymm8 960 vpmuludq %ymm10,%ymm13,%ymm13 961 vpbroadcastq 24(%r13),%ymm10 962 vpaddq %ymm13,%ymm9,%ymm9 963 964 vmovdqu -16+32-128(%rcx),%ymm0 965 movq %rax,%rdx 966 imulq -128(%rcx),%rax 967 addq %rax,%r11 968 vmovdqu -16+64-128(%rcx),%ymm12 969 imulq 8-128(%rcx),%rdx 970 addq %rdx,%r12 971 shrq $29,%r11 972 973 vpmuludq %ymm11,%ymm0,%ymm0 974 vmovq %xmm10,%rbx 975 vmovdqu -16+96-128(%rcx),%ymm13 976 vpaddq %ymm0,%ymm1,%ymm1 977 vpmuludq %ymm11,%ymm12,%ymm12 978 vmovdqu -16+128-128(%rcx),%ymm0 979 vpaddq %ymm12,%ymm2,%ymm2 980 vpmuludq %ymm11,%ymm13,%ymm13 981 vmovdqu -16+160-128(%rcx),%ymm12 982 vpaddq %ymm13,%ymm3,%ymm3 983 vpmuludq %ymm11,%ymm0,%ymm0 984 vmovdqu -16+192-128(%rcx),%ymm13 985 vpaddq %ymm0,%ymm4,%ymm4 986 vpmuludq %ymm11,%ymm12,%ymm12 987 vmovdqu -16+224-128(%rcx),%ymm0 988 vpaddq %ymm12,%ymm5,%ymm5 989 vpmuludq %ymm11,%ymm13,%ymm13 990 vmovdqu -16+256-128(%rcx),%ymm12 991 vpaddq %ymm13,%ymm6,%ymm6 992 vpmuludq %ymm11,%ymm0,%ymm0 993 vmovdqu -16+288-128(%rcx),%ymm13 994 vpaddq %ymm0,%ymm7,%ymm7 995 vpmuludq %ymm11,%ymm12,%ymm12 996 vmovdqu -24+32-128(%rsi),%ymm0 997 vpaddq %ymm12,%ymm8,%ymm8 998 vpmuludq %ymm11,%ymm13,%ymm13 999 vmovdqu -24+64-128(%rsi),%ymm12 1000 vpaddq %ymm13,%ymm9,%ymm9 1001 1002 addq %r11,%r12 1003 imulq -128(%rsi),%rbx 1004 addq %rbx,%r12 1005 1006 movq %r12,%rax 1007 imull %r8d,%eax 1008 andl $0x1fffffff,%eax 1009 1010 vpmuludq %ymm10,%ymm0,%ymm0 1011 vmovd %eax,%xmm11 1012 vmovdqu -24+96-128(%rsi),%ymm13 1013 vpaddq %ymm0,%ymm1,%ymm1 1014 vpmuludq %ymm10,%ymm12,%ymm12 1015 vpbroadcastq %xmm11,%ymm11 1016 vmovdqu -24+128-128(%rsi),%ymm0 1017 vpaddq %ymm12,%ymm2,%ymm2 1018 vpmuludq %ymm10,%ymm13,%ymm13 1019 vmovdqu -24+160-128(%rsi),%ymm12 1020 vpaddq %ymm13,%ymm3,%ymm3 1021 vpmuludq %ymm10,%ymm0,%ymm0 1022 vmovdqu -24+192-128(%rsi),%ymm13 1023 vpaddq %ymm0,%ymm4,%ymm4 1024 vpmuludq %ymm10,%ymm12,%ymm12 1025 vmovdqu -24+224-128(%rsi),%ymm0 1026 vpaddq %ymm12,%ymm5,%ymm5 1027 vpmuludq %ymm10,%ymm13,%ymm13 1028 vmovdqu -24+256-128(%rsi),%ymm12 1029 vpaddq %ymm13,%ymm6,%ymm6 1030 vpmuludq %ymm10,%ymm0,%ymm0 1031 vmovdqu -24+288-128(%rsi),%ymm13 1032 vpaddq %ymm0,%ymm7,%ymm7 1033 vpmuludq %ymm10,%ymm12,%ymm12 1034 vpaddq %ymm12,%ymm8,%ymm8 1035 vpmuludq %ymm10,%ymm13,%ymm13 1036 vpbroadcastq 32(%r13),%ymm10 1037 vpaddq %ymm13,%ymm9,%ymm9 1038 addq $32,%r13 1039 1040 vmovdqu -24+32-128(%rcx),%ymm0 1041 imulq -128(%rcx),%rax 1042 addq %rax,%r12 1043 shrq $29,%r12 1044 1045 vmovdqu -24+64-128(%rcx),%ymm12 1046 vpmuludq %ymm11,%ymm0,%ymm0 1047 vmovq %xmm10,%rbx 1048 vmovdqu -24+96-128(%rcx),%ymm13 1049 vpaddq %ymm0,%ymm1,%ymm0 1050 vpmuludq %ymm11,%ymm12,%ymm12 1051 vmovdqu %ymm0,(%rsp) 1052 vpaddq %ymm12,%ymm2,%ymm1 1053 vmovdqu -24+128-128(%rcx),%ymm0 1054 vpmuludq %ymm11,%ymm13,%ymm13 1055 vmovdqu -24+160-128(%rcx),%ymm12 1056 vpaddq %ymm13,%ymm3,%ymm2 1057 vpmuludq %ymm11,%ymm0,%ymm0 1058 vmovdqu -24+192-128(%rcx),%ymm13 1059 vpaddq %ymm0,%ymm4,%ymm3 1060 vpmuludq %ymm11,%ymm12,%ymm12 1061 vmovdqu -24+224-128(%rcx),%ymm0 1062 vpaddq %ymm12,%ymm5,%ymm4 1063 vpmuludq %ymm11,%ymm13,%ymm13 1064 vmovdqu -24+256-128(%rcx),%ymm12 1065 vpaddq %ymm13,%ymm6,%ymm5 1066 vpmuludq %ymm11,%ymm0,%ymm0 1067 vmovdqu -24+288-128(%rcx),%ymm13 1068 movq %r12,%r9 1069 vpaddq %ymm0,%ymm7,%ymm6 1070 vpmuludq %ymm11,%ymm12,%ymm12 1071 addq (%rsp),%r9 1072 vpaddq %ymm12,%ymm8,%ymm7 1073 vpmuludq %ymm11,%ymm13,%ymm13 1074 vmovq %r12,%xmm12 1075 vpaddq %ymm13,%ymm9,%ymm8 1076 1077 decl %r14d 1078 jnz L$oop_mul_1024 1079 vpaddq (%rsp),%ymm12,%ymm0 1080 1081 vpsrlq $29,%ymm0,%ymm12 1082 vpand %ymm15,%ymm0,%ymm0 1083 vpsrlq $29,%ymm1,%ymm13 1084 vpand %ymm15,%ymm1,%ymm1 1085 vpsrlq $29,%ymm2,%ymm10 1086 vpermq $0x93,%ymm12,%ymm12 1087 vpand %ymm15,%ymm2,%ymm2 1088 vpsrlq $29,%ymm3,%ymm11 1089 vpermq $0x93,%ymm13,%ymm13 1090 vpand %ymm15,%ymm3,%ymm3 1091 1092 vpblendd $3,%ymm14,%ymm12,%ymm9 1093 vpermq $0x93,%ymm10,%ymm10 1094 vpblendd $3,%ymm12,%ymm13,%ymm12 1095 vpermq $0x93,%ymm11,%ymm11 1096 vpaddq %ymm9,%ymm0,%ymm0 1097 vpblendd $3,%ymm13,%ymm10,%ymm13 1098 vpaddq %ymm12,%ymm1,%ymm1 1099 vpblendd $3,%ymm10,%ymm11,%ymm10 1100 vpaddq %ymm13,%ymm2,%ymm2 1101 vpblendd $3,%ymm11,%ymm14,%ymm11 1102 vpaddq %ymm10,%ymm3,%ymm3 1103 vpaddq %ymm11,%ymm4,%ymm4 1104 1105 vpsrlq $29,%ymm0,%ymm12 1106 vpand %ymm15,%ymm0,%ymm0 1107 vpsrlq $29,%ymm1,%ymm13 1108 vpand %ymm15,%ymm1,%ymm1 1109 vpsrlq $29,%ymm2,%ymm10 1110 vpermq $0x93,%ymm12,%ymm12 1111 vpand %ymm15,%ymm2,%ymm2 1112 vpsrlq $29,%ymm3,%ymm11 1113 vpermq $0x93,%ymm13,%ymm13 1114 vpand %ymm15,%ymm3,%ymm3 1115 vpermq $0x93,%ymm10,%ymm10 1116 1117 vpblendd $3,%ymm14,%ymm12,%ymm9 1118 vpermq $0x93,%ymm11,%ymm11 1119 vpblendd $3,%ymm12,%ymm13,%ymm12 1120 vpaddq %ymm9,%ymm0,%ymm0 1121 vpblendd $3,%ymm13,%ymm10,%ymm13 1122 vpaddq %ymm12,%ymm1,%ymm1 1123 vpblendd $3,%ymm10,%ymm11,%ymm10 1124 vpaddq %ymm13,%ymm2,%ymm2 1125 vpblendd $3,%ymm11,%ymm14,%ymm11 1126 vpaddq %ymm10,%ymm3,%ymm3 1127 vpaddq %ymm11,%ymm4,%ymm4 1128 1129 vmovdqu %ymm0,0-128(%rdi) 1130 vmovdqu %ymm1,32-128(%rdi) 1131 vmovdqu %ymm2,64-128(%rdi) 1132 vmovdqu %ymm3,96-128(%rdi) 1133 vpsrlq $29,%ymm4,%ymm12 1134 vpand %ymm15,%ymm4,%ymm4 1135 vpsrlq $29,%ymm5,%ymm13 1136 vpand %ymm15,%ymm5,%ymm5 1137 vpsrlq $29,%ymm6,%ymm10 1138 vpermq $0x93,%ymm12,%ymm12 1139 vpand %ymm15,%ymm6,%ymm6 1140 vpsrlq $29,%ymm7,%ymm11 1141 vpermq $0x93,%ymm13,%ymm13 1142 vpand %ymm15,%ymm7,%ymm7 1143 vpsrlq $29,%ymm8,%ymm0 1144 vpermq $0x93,%ymm10,%ymm10 1145 vpand %ymm15,%ymm8,%ymm8 1146 vpermq $0x93,%ymm11,%ymm11 1147 1148 vpblendd $3,%ymm14,%ymm12,%ymm9 1149 vpermq $0x93,%ymm0,%ymm0 1150 vpblendd $3,%ymm12,%ymm13,%ymm12 1151 vpaddq %ymm9,%ymm4,%ymm4 1152 vpblendd $3,%ymm13,%ymm10,%ymm13 1153 vpaddq %ymm12,%ymm5,%ymm5 1154 vpblendd $3,%ymm10,%ymm11,%ymm10 1155 vpaddq %ymm13,%ymm6,%ymm6 1156 vpblendd $3,%ymm11,%ymm0,%ymm11 1157 vpaddq %ymm10,%ymm7,%ymm7 1158 vpaddq %ymm11,%ymm8,%ymm8 1159 1160 vpsrlq $29,%ymm4,%ymm12 1161 vpand %ymm15,%ymm4,%ymm4 1162 vpsrlq $29,%ymm5,%ymm13 1163 vpand %ymm15,%ymm5,%ymm5 1164 vpsrlq $29,%ymm6,%ymm10 1165 vpermq $0x93,%ymm12,%ymm12 1166 vpand %ymm15,%ymm6,%ymm6 1167 vpsrlq $29,%ymm7,%ymm11 1168 vpermq $0x93,%ymm13,%ymm13 1169 vpand %ymm15,%ymm7,%ymm7 1170 vpsrlq $29,%ymm8,%ymm0 1171 vpermq $0x93,%ymm10,%ymm10 1172 vpand %ymm15,%ymm8,%ymm8 1173 vpermq $0x93,%ymm11,%ymm11 1174 1175 vpblendd $3,%ymm14,%ymm12,%ymm9 1176 vpermq $0x93,%ymm0,%ymm0 1177 vpblendd $3,%ymm12,%ymm13,%ymm12 1178 vpaddq %ymm9,%ymm4,%ymm4 1179 vpblendd $3,%ymm13,%ymm10,%ymm13 1180 vpaddq %ymm12,%ymm5,%ymm5 1181 vpblendd $3,%ymm10,%ymm11,%ymm10 1182 vpaddq %ymm13,%ymm6,%ymm6 1183 vpblendd $3,%ymm11,%ymm0,%ymm11 1184 vpaddq %ymm10,%ymm7,%ymm7 1185 vpaddq %ymm11,%ymm8,%ymm8 1186 1187 vmovdqu %ymm4,128-128(%rdi) 1188 vmovdqu %ymm5,160-128(%rdi) 1189 vmovdqu %ymm6,192-128(%rdi) 1190 vmovdqu %ymm7,224-128(%rdi) 1191 vmovdqu %ymm8,256-128(%rdi) 1192 vzeroupper 1193 1194 movq %rbp,%rax 1195 1196 movq -48(%rax),%r15 1197 1198 movq -40(%rax),%r14 1199 1200 movq -32(%rax),%r13 1201 1202 movq -24(%rax),%r12 1203 1204 movq -16(%rax),%rbp 1205 1206 movq -8(%rax),%rbx 1207 1208 leaq (%rax),%rsp 1209 1210 L$mul_1024_epilogue: 1211 .byte 0xf3,0xc3 1212 1213 1214 .globl _rsaz_1024_red2norm_avx2 1215 .private_extern _rsaz_1024_red2norm_avx2 1216 1217 .p2align 5 1218 _rsaz_1024_red2norm_avx2: 1219 subq $-128,%rsi 1220 xorq %rax,%rax 1221 movq -128(%rsi),%r8 1222 movq -120(%rsi),%r9 1223 movq -112(%rsi),%r10 1224 shlq $0,%r8 1225 shlq $29,%r9 1226 movq %r10,%r11 1227 shlq $58,%r10 1228 shrq $6,%r11 1229 addq %r8,%rax 1230 addq %r9,%rax 1231 addq %r10,%rax 1232 adcq $0,%r11 1233 movq %rax,0(%rdi) 1234 movq %r11,%rax 1235 movq -104(%rsi),%r8 1236 movq -96(%rsi),%r9 1237 shlq $23,%r8 1238 movq %r9,%r10 1239 shlq $52,%r9 1240 shrq $12,%r10 1241 addq %r8,%rax 1242 addq %r9,%rax 1243 adcq $0,%r10 1244 movq %rax,8(%rdi) 1245 movq %r10,%rax 1246 movq -88(%rsi),%r11 1247 movq -80(%rsi),%r8 1248 shlq $17,%r11 1249 movq %r8,%r9 1250 shlq $46,%r8 1251 shrq $18,%r9 1252 addq %r11,%rax 1253 addq %r8,%rax 1254 adcq $0,%r9 1255 movq %rax,16(%rdi) 1256 movq %r9,%rax 1257 movq -72(%rsi),%r10 1258 movq -64(%rsi),%r11 1259 shlq $11,%r10 1260 movq %r11,%r8 1261 shlq $40,%r11 1262 shrq $24,%r8 1263 addq %r10,%rax 1264 addq %r11,%rax 1265 adcq $0,%r8 1266 movq %rax,24(%rdi) 1267 movq %r8,%rax 1268 movq -56(%rsi),%r9 1269 movq -48(%rsi),%r10 1270 movq -40(%rsi),%r11 1271 shlq $5,%r9 1272 shlq $34,%r10 1273 movq %r11,%r8 1274 shlq $63,%r11 1275 shrq $1,%r8 1276 addq %r9,%rax 1277 addq %r10,%rax 1278 addq %r11,%rax 1279 adcq $0,%r8 1280 movq %rax,32(%rdi) 1281 movq %r8,%rax 1282 movq -32(%rsi),%r9 1283 movq -24(%rsi),%r10 1284 shlq $28,%r9 1285 movq %r10,%r11 1286 shlq $57,%r10 1287 shrq $7,%r11 1288 addq %r9,%rax 1289 addq %r10,%rax 1290 adcq $0,%r11 1291 movq %rax,40(%rdi) 1292 movq %r11,%rax 1293 movq -16(%rsi),%r8 1294 movq -8(%rsi),%r9 1295 shlq $22,%r8 1296 movq %r9,%r10 1297 shlq $51,%r9 1298 shrq $13,%r10 1299 addq %r8,%rax 1300 addq %r9,%rax 1301 adcq $0,%r10 1302 movq %rax,48(%rdi) 1303 movq %r10,%rax 1304 movq 0(%rsi),%r11 1305 movq 8(%rsi),%r8 1306 shlq $16,%r11 1307 movq %r8,%r9 1308 shlq $45,%r8 1309 shrq $19,%r9 1310 addq %r11,%rax 1311 addq %r8,%rax 1312 adcq $0,%r9 1313 movq %rax,56(%rdi) 1314 movq %r9,%rax 1315 movq 16(%rsi),%r10 1316 movq 24(%rsi),%r11 1317 shlq $10,%r10 1318 movq %r11,%r8 1319 shlq $39,%r11 1320 shrq $25,%r8 1321 addq %r10,%rax 1322 addq %r11,%rax 1323 adcq $0,%r8 1324 movq %rax,64(%rdi) 1325 movq %r8,%rax 1326 movq 32(%rsi),%r9 1327 movq 40(%rsi),%r10 1328 movq 48(%rsi),%r11 1329 shlq $4,%r9 1330 shlq $33,%r10 1331 movq %r11,%r8 1332 shlq $62,%r11 1333 shrq $2,%r8 1334 addq %r9,%rax 1335 addq %r10,%rax 1336 addq %r11,%rax 1337 adcq $0,%r8 1338 movq %rax,72(%rdi) 1339 movq %r8,%rax 1340 movq 56(%rsi),%r9 1341 movq 64(%rsi),%r10 1342 shlq $27,%r9 1343 movq %r10,%r11 1344 shlq $56,%r10 1345 shrq $8,%r11 1346 addq %r9,%rax 1347 addq %r10,%rax 1348 adcq $0,%r11 1349 movq %rax,80(%rdi) 1350 movq %r11,%rax 1351 movq 72(%rsi),%r8 1352 movq 80(%rsi),%r9 1353 shlq $21,%r8 1354 movq %r9,%r10 1355 shlq $50,%r9 1356 shrq $14,%r10 1357 addq %r8,%rax 1358 addq %r9,%rax 1359 adcq $0,%r10 1360 movq %rax,88(%rdi) 1361 movq %r10,%rax 1362 movq 88(%rsi),%r11 1363 movq 96(%rsi),%r8 1364 shlq $15,%r11 1365 movq %r8,%r9 1366 shlq $44,%r8 1367 shrq $20,%r9 1368 addq %r11,%rax 1369 addq %r8,%rax 1370 adcq $0,%r9 1371 movq %rax,96(%rdi) 1372 movq %r9,%rax 1373 movq 104(%rsi),%r10 1374 movq 112(%rsi),%r11 1375 shlq $9,%r10 1376 movq %r11,%r8 1377 shlq $38,%r11 1378 shrq $26,%r8 1379 addq %r10,%rax 1380 addq %r11,%rax 1381 adcq $0,%r8 1382 movq %rax,104(%rdi) 1383 movq %r8,%rax 1384 movq 120(%rsi),%r9 1385 movq 128(%rsi),%r10 1386 movq 136(%rsi),%r11 1387 shlq $3,%r9 1388 shlq $32,%r10 1389 movq %r11,%r8 1390 shlq $61,%r11 1391 shrq $3,%r8 1392 addq %r9,%rax 1393 addq %r10,%rax 1394 addq %r11,%rax 1395 adcq $0,%r8 1396 movq %rax,112(%rdi) 1397 movq %r8,%rax 1398 movq 144(%rsi),%r9 1399 movq 152(%rsi),%r10 1400 shlq $26,%r9 1401 movq %r10,%r11 1402 shlq $55,%r10 1403 shrq $9,%r11 1404 addq %r9,%rax 1405 addq %r10,%rax 1406 adcq $0,%r11 1407 movq %rax,120(%rdi) 1408 movq %r11,%rax 1409 .byte 0xf3,0xc3 1410 1411 1412 .globl _rsaz_1024_norm2red_avx2 1413 .private_extern _rsaz_1024_norm2red_avx2 1414 1415 .p2align 5 1416 _rsaz_1024_norm2red_avx2: 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 1570 .globl _rsaz_1024_scatter5_avx2 1571 .private_extern _rsaz_1024_scatter5_avx2 1572 1573 .p2align 5 1574 _rsaz_1024_scatter5_avx2: 1575 vzeroupper 1576 vmovdqu L$scatter_permd(%rip),%ymm5 1577 shll $4,%edx 1578 leaq (%rdi,%rdx,1),%rdi 1579 movl $9,%eax 1580 jmp L$oop_scatter_1024 1581 1582 .p2align 5 1583 L$oop_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 L$oop_scatter_1024 1591 1592 vzeroupper 1593 .byte 0xf3,0xc3 1594 1595 1596 .globl _rsaz_1024_gather5_avx2 1597 .private_extern _rsaz_1024_gather5_avx2 1598 1599 .p2align 5 1600 _rsaz_1024_gather5_avx2: 1601 1602 vzeroupper 1603 movq %rsp,%r11 1604 1605 leaq -256(%rsp),%rsp 1606 andq $-32,%rsp 1607 leaq L$inc(%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 L$oop_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 L$oop_gather_1024 1708 1709 vpxor %ymm0,%ymm0,%ymm0 1710 vmovdqu %ymm0,(%rdi) 1711 vzeroupper 1712 leaq (%r11),%rsp 1713 1714 .byte 0xf3,0xc3 1715 1716 L$SEH_end_rsaz_1024_gather5: 1717 1718 1719 .globl _rsaz_avx2_eligible 1720 .private_extern _rsaz_avx2_eligible 1721 1722 .p2align 5 1723 _rsaz_avx2_eligible: 1724 leaq _OPENSSL_ia32cap_P(%rip),%rax 1725 movl 8(%rax),%eax 1726 andl $32,%eax 1727 shrl $5,%eax 1728 .byte 0xf3,0xc3 1729 1730 1731 .p2align 6 1732 L$and_mask: 1733 .quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff 1734 L$scatter_permd: 1735 .long 0,2,4,6,7,7,7,7 1736 L$gather_permd: 1737 .long 0,7,1,7,2,7,3,7 1738 L$inc: 1739 .long 0,0,0,0, 1,1,1,1 1740 .long 2,2,2,2, 3,3,3,3 1741 .long 4,4,4,4, 4,4,4,4 1742 .p2align 6 1743 #endif 1744