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