rsaz-avx2.S revision 305153
1/* $FreeBSD: stable/11/secure/lib/libcrypto/amd64/rsaz-avx2.S 305153 2016-08-31 20:33:59Z 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 vpbroadcastq .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,%ymm9 805 vpaddq %ymm13,%ymm7,%ymm7 806 vpmuludq 256-128(%rcx),%ymm11,%ymm0 807 vpaddq %ymm9,%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 imull %r8d,%eax 821 andl $0x1fffffff,%eax 822 823 imulq 16-128(%rsi),%rbx 824 addq %rbx,%r12 825 vpmuludq %ymm10,%ymm12,%ymm12 826 vmovd %eax,%xmm11 827 vmovdqu -8+96-128(%rsi),%ymm0 828 vpaddq %ymm12,%ymm1,%ymm1 829 vpmuludq %ymm10,%ymm13,%ymm13 830 vpbroadcastq %xmm11,%ymm11 831 vmovdqu -8+128-128(%rsi),%ymm12 832 vpaddq %ymm13,%ymm2,%ymm2 833 vpmuludq %ymm10,%ymm0,%ymm0 834 vmovdqu -8+160-128(%rsi),%ymm13 835 vpaddq %ymm0,%ymm3,%ymm3 836 vpmuludq %ymm10,%ymm12,%ymm12 837 vmovdqu -8+192-128(%rsi),%ymm0 838 vpaddq %ymm12,%ymm4,%ymm4 839 vpmuludq %ymm10,%ymm13,%ymm13 840 vmovdqu -8+224-128(%rsi),%ymm12 841 vpaddq %ymm13,%ymm5,%ymm5 842 vpmuludq %ymm10,%ymm0,%ymm0 843 vmovdqu -8+256-128(%rsi),%ymm13 844 vpaddq %ymm0,%ymm6,%ymm6 845 vpmuludq %ymm10,%ymm12,%ymm12 846 vmovdqu -8+288-128(%rsi),%ymm9 847 vpaddq %ymm12,%ymm7,%ymm7 848 vpmuludq %ymm10,%ymm13,%ymm13 849 vpaddq %ymm13,%ymm8,%ymm8 850 vpmuludq %ymm10,%ymm9,%ymm9 851 vpbroadcastq 16(%r13),%ymm10 852 853 movq %rax,%rdx 854 imulq -128(%rcx),%rax 855 addq %rax,%r10 856 vmovdqu -8+32-128(%rcx),%ymm0 857 movq %rdx,%rax 858 imulq 8-128(%rcx),%rax 859 addq %rax,%r11 860 vmovdqu -8+64-128(%rcx),%ymm12 861 shrq $29,%r10 862 imulq 16-128(%rcx),%rdx 863 addq %rdx,%r12 864 addq %r10,%r11 865 866 vpmuludq %ymm11,%ymm0,%ymm0 867 vmovq %xmm10,%rbx 868 vmovdqu -8+96-128(%rcx),%ymm13 869 vpaddq %ymm0,%ymm1,%ymm1 870 vpmuludq %ymm11,%ymm12,%ymm12 871 vmovdqu -8+128-128(%rcx),%ymm0 872 vpaddq %ymm12,%ymm2,%ymm2 873 vpmuludq %ymm11,%ymm13,%ymm13 874 vmovdqu -8+160-128(%rcx),%ymm12 875 vpaddq %ymm13,%ymm3,%ymm3 876 vpmuludq %ymm11,%ymm0,%ymm0 877 vmovdqu -8+192-128(%rcx),%ymm13 878 vpaddq %ymm0,%ymm4,%ymm4 879 vpmuludq %ymm11,%ymm12,%ymm12 880 vmovdqu -8+224-128(%rcx),%ymm0 881 vpaddq %ymm12,%ymm5,%ymm5 882 vpmuludq %ymm11,%ymm13,%ymm13 883 vmovdqu -8+256-128(%rcx),%ymm12 884 vpaddq %ymm13,%ymm6,%ymm6 885 vpmuludq %ymm11,%ymm0,%ymm0 886 vmovdqu -8+288-128(%rcx),%ymm13 887 vpaddq %ymm0,%ymm7,%ymm7 888 vpmuludq %ymm11,%ymm12,%ymm12 889 vpaddq %ymm12,%ymm8,%ymm8 890 vpmuludq %ymm11,%ymm13,%ymm13 891 vpaddq %ymm13,%ymm9,%ymm9 892 893 vmovdqu -16+32-128(%rsi),%ymm0 894 movq %rbx,%rax 895 imulq -128(%rsi),%rax 896 addq %r11,%rax 897 898 vmovdqu -16+64-128(%rsi),%ymm12 899 movq %rax,%r11 900 imull %r8d,%eax 901 andl $0x1fffffff,%eax 902 903 imulq 8-128(%rsi),%rbx 904 addq %rbx,%r12 905 vpmuludq %ymm10,%ymm0,%ymm0 906 vmovd %eax,%xmm11 907 vmovdqu -16+96-128(%rsi),%ymm13 908 vpaddq %ymm0,%ymm1,%ymm1 909 vpmuludq %ymm10,%ymm12,%ymm12 910 vpbroadcastq %xmm11,%ymm11 911 vmovdqu -16+128-128(%rsi),%ymm0 912 vpaddq %ymm12,%ymm2,%ymm2 913 vpmuludq %ymm10,%ymm13,%ymm13 914 vmovdqu -16+160-128(%rsi),%ymm12 915 vpaddq %ymm13,%ymm3,%ymm3 916 vpmuludq %ymm10,%ymm0,%ymm0 917 vmovdqu -16+192-128(%rsi),%ymm13 918 vpaddq %ymm0,%ymm4,%ymm4 919 vpmuludq %ymm10,%ymm12,%ymm12 920 vmovdqu -16+224-128(%rsi),%ymm0 921 vpaddq %ymm12,%ymm5,%ymm5 922 vpmuludq %ymm10,%ymm13,%ymm13 923 vmovdqu -16+256-128(%rsi),%ymm12 924 vpaddq %ymm13,%ymm6,%ymm6 925 vpmuludq %ymm10,%ymm0,%ymm0 926 vmovdqu -16+288-128(%rsi),%ymm13 927 vpaddq %ymm0,%ymm7,%ymm7 928 vpmuludq %ymm10,%ymm12,%ymm12 929 vpaddq %ymm12,%ymm8,%ymm8 930 vpmuludq %ymm10,%ymm13,%ymm13 931 vpbroadcastq 24(%r13),%ymm10 932 vpaddq %ymm13,%ymm9,%ymm9 933 934 vmovdqu -16+32-128(%rcx),%ymm0 935 movq %rax,%rdx 936 imulq -128(%rcx),%rax 937 addq %rax,%r11 938 vmovdqu -16+64-128(%rcx),%ymm12 939 imulq 8-128(%rcx),%rdx 940 addq %rdx,%r12 941 shrq $29,%r11 942 943 vpmuludq %ymm11,%ymm0,%ymm0 944 vmovq %xmm10,%rbx 945 vmovdqu -16+96-128(%rcx),%ymm13 946 vpaddq %ymm0,%ymm1,%ymm1 947 vpmuludq %ymm11,%ymm12,%ymm12 948 vmovdqu -16+128-128(%rcx),%ymm0 949 vpaddq %ymm12,%ymm2,%ymm2 950 vpmuludq %ymm11,%ymm13,%ymm13 951 vmovdqu -16+160-128(%rcx),%ymm12 952 vpaddq %ymm13,%ymm3,%ymm3 953 vpmuludq %ymm11,%ymm0,%ymm0 954 vmovdqu -16+192-128(%rcx),%ymm13 955 vpaddq %ymm0,%ymm4,%ymm4 956 vpmuludq %ymm11,%ymm12,%ymm12 957 vmovdqu -16+224-128(%rcx),%ymm0 958 vpaddq %ymm12,%ymm5,%ymm5 959 vpmuludq %ymm11,%ymm13,%ymm13 960 vmovdqu -16+256-128(%rcx),%ymm12 961 vpaddq %ymm13,%ymm6,%ymm6 962 vpmuludq %ymm11,%ymm0,%ymm0 963 vmovdqu -16+288-128(%rcx),%ymm13 964 vpaddq %ymm0,%ymm7,%ymm7 965 vpmuludq %ymm11,%ymm12,%ymm12 966 vmovdqu -24+32-128(%rsi),%ymm0 967 vpaddq %ymm12,%ymm8,%ymm8 968 vpmuludq %ymm11,%ymm13,%ymm13 969 vmovdqu -24+64-128(%rsi),%ymm12 970 vpaddq %ymm13,%ymm9,%ymm9 971 972 addq %r11,%r12 973 imulq -128(%rsi),%rbx 974 addq %rbx,%r12 975 976 movq %r12,%rax 977 imull %r8d,%eax 978 andl $0x1fffffff,%eax 979 980 vpmuludq %ymm10,%ymm0,%ymm0 981 vmovd %eax,%xmm11 982 vmovdqu -24+96-128(%rsi),%ymm13 983 vpaddq %ymm0,%ymm1,%ymm1 984 vpmuludq %ymm10,%ymm12,%ymm12 985 vpbroadcastq %xmm11,%ymm11 986 vmovdqu -24+128-128(%rsi),%ymm0 987 vpaddq %ymm12,%ymm2,%ymm2 988 vpmuludq %ymm10,%ymm13,%ymm13 989 vmovdqu -24+160-128(%rsi),%ymm12 990 vpaddq %ymm13,%ymm3,%ymm3 991 vpmuludq %ymm10,%ymm0,%ymm0 992 vmovdqu -24+192-128(%rsi),%ymm13 993 vpaddq %ymm0,%ymm4,%ymm4 994 vpmuludq %ymm10,%ymm12,%ymm12 995 vmovdqu -24+224-128(%rsi),%ymm0 996 vpaddq %ymm12,%ymm5,%ymm5 997 vpmuludq %ymm10,%ymm13,%ymm13 998 vmovdqu -24+256-128(%rsi),%ymm12 999 vpaddq %ymm13,%ymm6,%ymm6 1000 vpmuludq %ymm10,%ymm0,%ymm0 1001 vmovdqu -24+288-128(%rsi),%ymm13 1002 vpaddq %ymm0,%ymm7,%ymm7 1003 vpmuludq %ymm10,%ymm12,%ymm12 1004 vpaddq %ymm12,%ymm8,%ymm8 1005 vpmuludq %ymm10,%ymm13,%ymm13 1006 vpbroadcastq 32(%r13),%ymm10 1007 vpaddq %ymm13,%ymm9,%ymm9 1008 addq $32,%r13 1009 1010 vmovdqu -24+32-128(%rcx),%ymm0 1011 imulq -128(%rcx),%rax 1012 addq %rax,%r12 1013 shrq $29,%r12 1014 1015 vmovdqu -24+64-128(%rcx),%ymm12 1016 vpmuludq %ymm11,%ymm0,%ymm0 1017 vmovq %xmm10,%rbx 1018 vmovdqu -24+96-128(%rcx),%ymm13 1019 vpaddq %ymm0,%ymm1,%ymm0 1020 vpmuludq %ymm11,%ymm12,%ymm12 1021 vmovdqu %ymm0,(%rsp) 1022 vpaddq %ymm12,%ymm2,%ymm1 1023 vmovdqu -24+128-128(%rcx),%ymm0 1024 vpmuludq %ymm11,%ymm13,%ymm13 1025 vmovdqu -24+160-128(%rcx),%ymm12 1026 vpaddq %ymm13,%ymm3,%ymm2 1027 vpmuludq %ymm11,%ymm0,%ymm0 1028 vmovdqu -24+192-128(%rcx),%ymm13 1029 vpaddq %ymm0,%ymm4,%ymm3 1030 vpmuludq %ymm11,%ymm12,%ymm12 1031 vmovdqu -24+224-128(%rcx),%ymm0 1032 vpaddq %ymm12,%ymm5,%ymm4 1033 vpmuludq %ymm11,%ymm13,%ymm13 1034 vmovdqu -24+256-128(%rcx),%ymm12 1035 vpaddq %ymm13,%ymm6,%ymm5 1036 vpmuludq %ymm11,%ymm0,%ymm0 1037 vmovdqu -24+288-128(%rcx),%ymm13 1038 movq %r12,%r9 1039 vpaddq %ymm0,%ymm7,%ymm6 1040 vpmuludq %ymm11,%ymm12,%ymm12 1041 addq (%rsp),%r9 1042 vpaddq %ymm12,%ymm8,%ymm7 1043 vpmuludq %ymm11,%ymm13,%ymm13 1044 vmovq %r12,%xmm12 1045 vpaddq %ymm13,%ymm9,%ymm8 1046 1047 decl %r14d 1048 jnz .Loop_mul_1024 1049 vpermq $0,%ymm15,%ymm15 1050 vpaddq (%rsp),%ymm12,%ymm0 1051 1052 vpsrlq $29,%ymm0,%ymm12 1053 vpand %ymm15,%ymm0,%ymm0 1054 vpsrlq $29,%ymm1,%ymm13 1055 vpand %ymm15,%ymm1,%ymm1 1056 vpsrlq $29,%ymm2,%ymm10 1057 vpermq $0x93,%ymm12,%ymm12 1058 vpand %ymm15,%ymm2,%ymm2 1059 vpsrlq $29,%ymm3,%ymm11 1060 vpermq $0x93,%ymm13,%ymm13 1061 vpand %ymm15,%ymm3,%ymm3 1062 1063 vpblendd $3,%ymm14,%ymm12,%ymm9 1064 vpermq $0x93,%ymm10,%ymm10 1065 vpblendd $3,%ymm12,%ymm13,%ymm12 1066 vpermq $0x93,%ymm11,%ymm11 1067 vpaddq %ymm9,%ymm0,%ymm0 1068 vpblendd $3,%ymm13,%ymm10,%ymm13 1069 vpaddq %ymm12,%ymm1,%ymm1 1070 vpblendd $3,%ymm10,%ymm11,%ymm10 1071 vpaddq %ymm13,%ymm2,%ymm2 1072 vpblendd $3,%ymm11,%ymm14,%ymm11 1073 vpaddq %ymm10,%ymm3,%ymm3 1074 vpaddq %ymm11,%ymm4,%ymm4 1075 1076 vpsrlq $29,%ymm0,%ymm12 1077 vpand %ymm15,%ymm0,%ymm0 1078 vpsrlq $29,%ymm1,%ymm13 1079 vpand %ymm15,%ymm1,%ymm1 1080 vpsrlq $29,%ymm2,%ymm10 1081 vpermq $0x93,%ymm12,%ymm12 1082 vpand %ymm15,%ymm2,%ymm2 1083 vpsrlq $29,%ymm3,%ymm11 1084 vpermq $0x93,%ymm13,%ymm13 1085 vpand %ymm15,%ymm3,%ymm3 1086 vpermq $0x93,%ymm10,%ymm10 1087 1088 vpblendd $3,%ymm14,%ymm12,%ymm9 1089 vpermq $0x93,%ymm11,%ymm11 1090 vpblendd $3,%ymm12,%ymm13,%ymm12 1091 vpaddq %ymm9,%ymm0,%ymm0 1092 vpblendd $3,%ymm13,%ymm10,%ymm13 1093 vpaddq %ymm12,%ymm1,%ymm1 1094 vpblendd $3,%ymm10,%ymm11,%ymm10 1095 vpaddq %ymm13,%ymm2,%ymm2 1096 vpblendd $3,%ymm11,%ymm14,%ymm11 1097 vpaddq %ymm10,%ymm3,%ymm3 1098 vpaddq %ymm11,%ymm4,%ymm4 1099 1100 vmovdqu %ymm0,0-128(%rdi) 1101 vmovdqu %ymm1,32-128(%rdi) 1102 vmovdqu %ymm2,64-128(%rdi) 1103 vmovdqu %ymm3,96-128(%rdi) 1104 vpsrlq $29,%ymm4,%ymm12 1105 vpand %ymm15,%ymm4,%ymm4 1106 vpsrlq $29,%ymm5,%ymm13 1107 vpand %ymm15,%ymm5,%ymm5 1108 vpsrlq $29,%ymm6,%ymm10 1109 vpermq $0x93,%ymm12,%ymm12 1110 vpand %ymm15,%ymm6,%ymm6 1111 vpsrlq $29,%ymm7,%ymm11 1112 vpermq $0x93,%ymm13,%ymm13 1113 vpand %ymm15,%ymm7,%ymm7 1114 vpsrlq $29,%ymm8,%ymm0 1115 vpermq $0x93,%ymm10,%ymm10 1116 vpand %ymm15,%ymm8,%ymm8 1117 vpermq $0x93,%ymm11,%ymm11 1118 1119 vpblendd $3,%ymm14,%ymm12,%ymm9 1120 vpermq $0x93,%ymm0,%ymm0 1121 vpblendd $3,%ymm12,%ymm13,%ymm12 1122 vpaddq %ymm9,%ymm4,%ymm4 1123 vpblendd $3,%ymm13,%ymm10,%ymm13 1124 vpaddq %ymm12,%ymm5,%ymm5 1125 vpblendd $3,%ymm10,%ymm11,%ymm10 1126 vpaddq %ymm13,%ymm6,%ymm6 1127 vpblendd $3,%ymm11,%ymm0,%ymm11 1128 vpaddq %ymm10,%ymm7,%ymm7 1129 vpaddq %ymm11,%ymm8,%ymm8 1130 1131 vpsrlq $29,%ymm4,%ymm12 1132 vpand %ymm15,%ymm4,%ymm4 1133 vpsrlq $29,%ymm5,%ymm13 1134 vpand %ymm15,%ymm5,%ymm5 1135 vpsrlq $29,%ymm6,%ymm10 1136 vpermq $0x93,%ymm12,%ymm12 1137 vpand %ymm15,%ymm6,%ymm6 1138 vpsrlq $29,%ymm7,%ymm11 1139 vpermq $0x93,%ymm13,%ymm13 1140 vpand %ymm15,%ymm7,%ymm7 1141 vpsrlq $29,%ymm8,%ymm0 1142 vpermq $0x93,%ymm10,%ymm10 1143 vpand %ymm15,%ymm8,%ymm8 1144 vpermq $0x93,%ymm11,%ymm11 1145 1146 vpblendd $3,%ymm14,%ymm12,%ymm9 1147 vpermq $0x93,%ymm0,%ymm0 1148 vpblendd $3,%ymm12,%ymm13,%ymm12 1149 vpaddq %ymm9,%ymm4,%ymm4 1150 vpblendd $3,%ymm13,%ymm10,%ymm13 1151 vpaddq %ymm12,%ymm5,%ymm5 1152 vpblendd $3,%ymm10,%ymm11,%ymm10 1153 vpaddq %ymm13,%ymm6,%ymm6 1154 vpblendd $3,%ymm11,%ymm0,%ymm11 1155 vpaddq %ymm10,%ymm7,%ymm7 1156 vpaddq %ymm11,%ymm8,%ymm8 1157 1158 vmovdqu %ymm4,128-128(%rdi) 1159 vmovdqu %ymm5,160-128(%rdi) 1160 vmovdqu %ymm6,192-128(%rdi) 1161 vmovdqu %ymm7,224-128(%rdi) 1162 vmovdqu %ymm8,256-128(%rdi) 1163 vzeroupper 1164 1165 movq %rbp,%rax 1166 movq -48(%rax),%r15 1167 movq -40(%rax),%r14 1168 movq -32(%rax),%r13 1169 movq -24(%rax),%r12 1170 movq -16(%rax),%rbp 1171 movq -8(%rax),%rbx 1172 leaq (%rax),%rsp 1173.Lmul_1024_epilogue: 1174 .byte 0xf3,0xc3 1175.size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2 1176.globl rsaz_1024_red2norm_avx2 1177.type rsaz_1024_red2norm_avx2,@function 1178.align 32 1179rsaz_1024_red2norm_avx2: 1180 subq $-128,%rsi 1181 xorq %rax,%rax 1182 movq -128(%rsi),%r8 1183 movq -120(%rsi),%r9 1184 movq -112(%rsi),%r10 1185 shlq $0,%r8 1186 shlq $29,%r9 1187 movq %r10,%r11 1188 shlq $58,%r10 1189 shrq $6,%r11 1190 addq %r8,%rax 1191 addq %r9,%rax 1192 addq %r10,%rax 1193 adcq $0,%r11 1194 movq %rax,0(%rdi) 1195 movq %r11,%rax 1196 movq -104(%rsi),%r8 1197 movq -96(%rsi),%r9 1198 shlq $23,%r8 1199 movq %r9,%r10 1200 shlq $52,%r9 1201 shrq $12,%r10 1202 addq %r8,%rax 1203 addq %r9,%rax 1204 adcq $0,%r10 1205 movq %rax,8(%rdi) 1206 movq %r10,%rax 1207 movq -88(%rsi),%r11 1208 movq -80(%rsi),%r8 1209 shlq $17,%r11 1210 movq %r8,%r9 1211 shlq $46,%r8 1212 shrq $18,%r9 1213 addq %r11,%rax 1214 addq %r8,%rax 1215 adcq $0,%r9 1216 movq %rax,16(%rdi) 1217 movq %r9,%rax 1218 movq -72(%rsi),%r10 1219 movq -64(%rsi),%r11 1220 shlq $11,%r10 1221 movq %r11,%r8 1222 shlq $40,%r11 1223 shrq $24,%r8 1224 addq %r10,%rax 1225 addq %r11,%rax 1226 adcq $0,%r8 1227 movq %rax,24(%rdi) 1228 movq %r8,%rax 1229 movq -56(%rsi),%r9 1230 movq -48(%rsi),%r10 1231 movq -40(%rsi),%r11 1232 shlq $5,%r9 1233 shlq $34,%r10 1234 movq %r11,%r8 1235 shlq $63,%r11 1236 shrq $1,%r8 1237 addq %r9,%rax 1238 addq %r10,%rax 1239 addq %r11,%rax 1240 adcq $0,%r8 1241 movq %rax,32(%rdi) 1242 movq %r8,%rax 1243 movq -32(%rsi),%r9 1244 movq -24(%rsi),%r10 1245 shlq $28,%r9 1246 movq %r10,%r11 1247 shlq $57,%r10 1248 shrq $7,%r11 1249 addq %r9,%rax 1250 addq %r10,%rax 1251 adcq $0,%r11 1252 movq %rax,40(%rdi) 1253 movq %r11,%rax 1254 movq -16(%rsi),%r8 1255 movq -8(%rsi),%r9 1256 shlq $22,%r8 1257 movq %r9,%r10 1258 shlq $51,%r9 1259 shrq $13,%r10 1260 addq %r8,%rax 1261 addq %r9,%rax 1262 adcq $0,%r10 1263 movq %rax,48(%rdi) 1264 movq %r10,%rax 1265 movq 0(%rsi),%r11 1266 movq 8(%rsi),%r8 1267 shlq $16,%r11 1268 movq %r8,%r9 1269 shlq $45,%r8 1270 shrq $19,%r9 1271 addq %r11,%rax 1272 addq %r8,%rax 1273 adcq $0,%r9 1274 movq %rax,56(%rdi) 1275 movq %r9,%rax 1276 movq 16(%rsi),%r10 1277 movq 24(%rsi),%r11 1278 shlq $10,%r10 1279 movq %r11,%r8 1280 shlq $39,%r11 1281 shrq $25,%r8 1282 addq %r10,%rax 1283 addq %r11,%rax 1284 adcq $0,%r8 1285 movq %rax,64(%rdi) 1286 movq %r8,%rax 1287 movq 32(%rsi),%r9 1288 movq 40(%rsi),%r10 1289 movq 48(%rsi),%r11 1290 shlq $4,%r9 1291 shlq $33,%r10 1292 movq %r11,%r8 1293 shlq $62,%r11 1294 shrq $2,%r8 1295 addq %r9,%rax 1296 addq %r10,%rax 1297 addq %r11,%rax 1298 adcq $0,%r8 1299 movq %rax,72(%rdi) 1300 movq %r8,%rax 1301 movq 56(%rsi),%r9 1302 movq 64(%rsi),%r10 1303 shlq $27,%r9 1304 movq %r10,%r11 1305 shlq $56,%r10 1306 shrq $8,%r11 1307 addq %r9,%rax 1308 addq %r10,%rax 1309 adcq $0,%r11 1310 movq %rax,80(%rdi) 1311 movq %r11,%rax 1312 movq 72(%rsi),%r8 1313 movq 80(%rsi),%r9 1314 shlq $21,%r8 1315 movq %r9,%r10 1316 shlq $50,%r9 1317 shrq $14,%r10 1318 addq %r8,%rax 1319 addq %r9,%rax 1320 adcq $0,%r10 1321 movq %rax,88(%rdi) 1322 movq %r10,%rax 1323 movq 88(%rsi),%r11 1324 movq 96(%rsi),%r8 1325 shlq $15,%r11 1326 movq %r8,%r9 1327 shlq $44,%r8 1328 shrq $20,%r9 1329 addq %r11,%rax 1330 addq %r8,%rax 1331 adcq $0,%r9 1332 movq %rax,96(%rdi) 1333 movq %r9,%rax 1334 movq 104(%rsi),%r10 1335 movq 112(%rsi),%r11 1336 shlq $9,%r10 1337 movq %r11,%r8 1338 shlq $38,%r11 1339 shrq $26,%r8 1340 addq %r10,%rax 1341 addq %r11,%rax 1342 adcq $0,%r8 1343 movq %rax,104(%rdi) 1344 movq %r8,%rax 1345 movq 120(%rsi),%r9 1346 movq 128(%rsi),%r10 1347 movq 136(%rsi),%r11 1348 shlq $3,%r9 1349 shlq $32,%r10 1350 movq %r11,%r8 1351 shlq $61,%r11 1352 shrq $3,%r8 1353 addq %r9,%rax 1354 addq %r10,%rax 1355 addq %r11,%rax 1356 adcq $0,%r8 1357 movq %rax,112(%rdi) 1358 movq %r8,%rax 1359 movq 144(%rsi),%r9 1360 movq 152(%rsi),%r10 1361 shlq $26,%r9 1362 movq %r10,%r11 1363 shlq $55,%r10 1364 shrq $9,%r11 1365 addq %r9,%rax 1366 addq %r10,%rax 1367 adcq $0,%r11 1368 movq %rax,120(%rdi) 1369 movq %r11,%rax 1370 .byte 0xf3,0xc3 1371.size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2 1372 1373.globl rsaz_1024_norm2red_avx2 1374.type rsaz_1024_norm2red_avx2,@function 1375.align 32 1376rsaz_1024_norm2red_avx2: 1377 subq $-128,%rdi 1378 movq (%rsi),%r8 1379 movl $0x1fffffff,%eax 1380 movq 8(%rsi),%r9 1381 movq %r8,%r11 1382 shrq $0,%r11 1383 andq %rax,%r11 1384 movq %r11,-128(%rdi) 1385 movq %r8,%r10 1386 shrq $29,%r10 1387 andq %rax,%r10 1388 movq %r10,-120(%rdi) 1389 shrdq $58,%r9,%r8 1390 andq %rax,%r8 1391 movq %r8,-112(%rdi) 1392 movq 16(%rsi),%r10 1393 movq %r9,%r8 1394 shrq $23,%r8 1395 andq %rax,%r8 1396 movq %r8,-104(%rdi) 1397 shrdq $52,%r10,%r9 1398 andq %rax,%r9 1399 movq %r9,-96(%rdi) 1400 movq 24(%rsi),%r11 1401 movq %r10,%r9 1402 shrq $17,%r9 1403 andq %rax,%r9 1404 movq %r9,-88(%rdi) 1405 shrdq $46,%r11,%r10 1406 andq %rax,%r10 1407 movq %r10,-80(%rdi) 1408 movq 32(%rsi),%r8 1409 movq %r11,%r10 1410 shrq $11,%r10 1411 andq %rax,%r10 1412 movq %r10,-72(%rdi) 1413 shrdq $40,%r8,%r11 1414 andq %rax,%r11 1415 movq %r11,-64(%rdi) 1416 movq 40(%rsi),%r9 1417 movq %r8,%r11 1418 shrq $5,%r11 1419 andq %rax,%r11 1420 movq %r11,-56(%rdi) 1421 movq %r8,%r10 1422 shrq $34,%r10 1423 andq %rax,%r10 1424 movq %r10,-48(%rdi) 1425 shrdq $63,%r9,%r8 1426 andq %rax,%r8 1427 movq %r8,-40(%rdi) 1428 movq 48(%rsi),%r10 1429 movq %r9,%r8 1430 shrq $28,%r8 1431 andq %rax,%r8 1432 movq %r8,-32(%rdi) 1433 shrdq $57,%r10,%r9 1434 andq %rax,%r9 1435 movq %r9,-24(%rdi) 1436 movq 56(%rsi),%r11 1437 movq %r10,%r9 1438 shrq $22,%r9 1439 andq %rax,%r9 1440 movq %r9,-16(%rdi) 1441 shrdq $51,%r11,%r10 1442 andq %rax,%r10 1443 movq %r10,-8(%rdi) 1444 movq 64(%rsi),%r8 1445 movq %r11,%r10 1446 shrq $16,%r10 1447 andq %rax,%r10 1448 movq %r10,0(%rdi) 1449 shrdq $45,%r8,%r11 1450 andq %rax,%r11 1451 movq %r11,8(%rdi) 1452 movq 72(%rsi),%r9 1453 movq %r8,%r11 1454 shrq $10,%r11 1455 andq %rax,%r11 1456 movq %r11,16(%rdi) 1457 shrdq $39,%r9,%r8 1458 andq %rax,%r8 1459 movq %r8,24(%rdi) 1460 movq 80(%rsi),%r10 1461 movq %r9,%r8 1462 shrq $4,%r8 1463 andq %rax,%r8 1464 movq %r8,32(%rdi) 1465 movq %r9,%r11 1466 shrq $33,%r11 1467 andq %rax,%r11 1468 movq %r11,40(%rdi) 1469 shrdq $62,%r10,%r9 1470 andq %rax,%r9 1471 movq %r9,48(%rdi) 1472 movq 88(%rsi),%r11 1473 movq %r10,%r9 1474 shrq $27,%r9 1475 andq %rax,%r9 1476 movq %r9,56(%rdi) 1477 shrdq $56,%r11,%r10 1478 andq %rax,%r10 1479 movq %r10,64(%rdi) 1480 movq 96(%rsi),%r8 1481 movq %r11,%r10 1482 shrq $21,%r10 1483 andq %rax,%r10 1484 movq %r10,72(%rdi) 1485 shrdq $50,%r8,%r11 1486 andq %rax,%r11 1487 movq %r11,80(%rdi) 1488 movq 104(%rsi),%r9 1489 movq %r8,%r11 1490 shrq $15,%r11 1491 andq %rax,%r11 1492 movq %r11,88(%rdi) 1493 shrdq $44,%r9,%r8 1494 andq %rax,%r8 1495 movq %r8,96(%rdi) 1496 movq 112(%rsi),%r10 1497 movq %r9,%r8 1498 shrq $9,%r8 1499 andq %rax,%r8 1500 movq %r8,104(%rdi) 1501 shrdq $38,%r10,%r9 1502 andq %rax,%r9 1503 movq %r9,112(%rdi) 1504 movq 120(%rsi),%r11 1505 movq %r10,%r9 1506 shrq $3,%r9 1507 andq %rax,%r9 1508 movq %r9,120(%rdi) 1509 movq %r10,%r8 1510 shrq $32,%r8 1511 andq %rax,%r8 1512 movq %r8,128(%rdi) 1513 shrdq $61,%r11,%r10 1514 andq %rax,%r10 1515 movq %r10,136(%rdi) 1516 xorq %r8,%r8 1517 movq %r11,%r10 1518 shrq $26,%r10 1519 andq %rax,%r10 1520 movq %r10,144(%rdi) 1521 shrdq $55,%r8,%r11 1522 andq %rax,%r11 1523 movq %r11,152(%rdi) 1524 movq %r8,160(%rdi) 1525 movq %r8,168(%rdi) 1526 movq %r8,176(%rdi) 1527 movq %r8,184(%rdi) 1528 .byte 0xf3,0xc3 1529.size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2 1530.globl rsaz_1024_scatter5_avx2 1531.type rsaz_1024_scatter5_avx2,@function 1532.align 32 1533rsaz_1024_scatter5_avx2: 1534 vzeroupper 1535 vmovdqu .Lscatter_permd(%rip),%ymm5 1536 shll $4,%edx 1537 leaq (%rdi,%rdx,1),%rdi 1538 movl $9,%eax 1539 jmp .Loop_scatter_1024 1540 1541.align 32 1542.Loop_scatter_1024: 1543 vmovdqu (%rsi),%ymm0 1544 leaq 32(%rsi),%rsi 1545 vpermd %ymm0,%ymm5,%ymm0 1546 vmovdqu %xmm0,(%rdi) 1547 leaq 512(%rdi),%rdi 1548 decl %eax 1549 jnz .Loop_scatter_1024 1550 1551 vzeroupper 1552 .byte 0xf3,0xc3 1553.size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2 1554 1555.globl rsaz_1024_gather5_avx2 1556.type rsaz_1024_gather5_avx2,@function 1557.align 32 1558rsaz_1024_gather5_avx2: 1559 vzeroupper 1560 movq %rsp,%r11 1561 leaq -256(%rsp),%rsp 1562 andq $-32,%rsp 1563 leaq .Linc(%rip),%r10 1564 leaq -128(%rsp),%rax 1565 1566 vmovd %edx,%xmm4 1567 vmovdqa (%r10),%ymm0 1568 vmovdqa 32(%r10),%ymm1 1569 vmovdqa 64(%r10),%ymm5 1570 vpbroadcastd %xmm4,%ymm4 1571 1572 vpaddd %ymm5,%ymm0,%ymm2 1573 vpcmpeqd %ymm4,%ymm0,%ymm0 1574 vpaddd %ymm5,%ymm1,%ymm3 1575 vpcmpeqd %ymm4,%ymm1,%ymm1 1576 vmovdqa %ymm0,0+128(%rax) 1577 vpaddd %ymm5,%ymm2,%ymm0 1578 vpcmpeqd %ymm4,%ymm2,%ymm2 1579 vmovdqa %ymm1,32+128(%rax) 1580 vpaddd %ymm5,%ymm3,%ymm1 1581 vpcmpeqd %ymm4,%ymm3,%ymm3 1582 vmovdqa %ymm2,64+128(%rax) 1583 vpaddd %ymm5,%ymm0,%ymm2 1584 vpcmpeqd %ymm4,%ymm0,%ymm0 1585 vmovdqa %ymm3,96+128(%rax) 1586 vpaddd %ymm5,%ymm1,%ymm3 1587 vpcmpeqd %ymm4,%ymm1,%ymm1 1588 vmovdqa %ymm0,128+128(%rax) 1589 vpaddd %ymm5,%ymm2,%ymm8 1590 vpcmpeqd %ymm4,%ymm2,%ymm2 1591 vmovdqa %ymm1,160+128(%rax) 1592 vpaddd %ymm5,%ymm3,%ymm9 1593 vpcmpeqd %ymm4,%ymm3,%ymm3 1594 vmovdqa %ymm2,192+128(%rax) 1595 vpaddd %ymm5,%ymm8,%ymm10 1596 vpcmpeqd %ymm4,%ymm8,%ymm8 1597 vmovdqa %ymm3,224+128(%rax) 1598 vpaddd %ymm5,%ymm9,%ymm11 1599 vpcmpeqd %ymm4,%ymm9,%ymm9 1600 vpaddd %ymm5,%ymm10,%ymm12 1601 vpcmpeqd %ymm4,%ymm10,%ymm10 1602 vpaddd %ymm5,%ymm11,%ymm13 1603 vpcmpeqd %ymm4,%ymm11,%ymm11 1604 vpaddd %ymm5,%ymm12,%ymm14 1605 vpcmpeqd %ymm4,%ymm12,%ymm12 1606 vpaddd %ymm5,%ymm13,%ymm15 1607 vpcmpeqd %ymm4,%ymm13,%ymm13 1608 vpcmpeqd %ymm4,%ymm14,%ymm14 1609 vpcmpeqd %ymm4,%ymm15,%ymm15 1610 1611 vmovdqa -32(%r10),%ymm7 1612 leaq 128(%rsi),%rsi 1613 movl $9,%edx 1614 1615.Loop_gather_1024: 1616 vmovdqa 0-128(%rsi),%ymm0 1617 vmovdqa 32-128(%rsi),%ymm1 1618 vmovdqa 64-128(%rsi),%ymm2 1619 vmovdqa 96-128(%rsi),%ymm3 1620 vpand 0+128(%rax),%ymm0,%ymm0 1621 vpand 32+128(%rax),%ymm1,%ymm1 1622 vpand 64+128(%rax),%ymm2,%ymm2 1623 vpor %ymm0,%ymm1,%ymm4 1624 vpand 96+128(%rax),%ymm3,%ymm3 1625 vmovdqa 128-128(%rsi),%ymm0 1626 vmovdqa 160-128(%rsi),%ymm1 1627 vpor %ymm2,%ymm3,%ymm5 1628 vmovdqa 192-128(%rsi),%ymm2 1629 vmovdqa 224-128(%rsi),%ymm3 1630 vpand 128+128(%rax),%ymm0,%ymm0 1631 vpand 160+128(%rax),%ymm1,%ymm1 1632 vpand 192+128(%rax),%ymm2,%ymm2 1633 vpor %ymm0,%ymm4,%ymm4 1634 vpand 224+128(%rax),%ymm3,%ymm3 1635 vpand 256-128(%rsi),%ymm8,%ymm0 1636 vpor %ymm1,%ymm5,%ymm5 1637 vpand 288-128(%rsi),%ymm9,%ymm1 1638 vpor %ymm2,%ymm4,%ymm4 1639 vpand 320-128(%rsi),%ymm10,%ymm2 1640 vpor %ymm3,%ymm5,%ymm5 1641 vpand 352-128(%rsi),%ymm11,%ymm3 1642 vpor %ymm0,%ymm4,%ymm4 1643 vpand 384-128(%rsi),%ymm12,%ymm0 1644 vpor %ymm1,%ymm5,%ymm5 1645 vpand 416-128(%rsi),%ymm13,%ymm1 1646 vpor %ymm2,%ymm4,%ymm4 1647 vpand 448-128(%rsi),%ymm14,%ymm2 1648 vpor %ymm3,%ymm5,%ymm5 1649 vpand 480-128(%rsi),%ymm15,%ymm3 1650 leaq 512(%rsi),%rsi 1651 vpor %ymm0,%ymm4,%ymm4 1652 vpor %ymm1,%ymm5,%ymm5 1653 vpor %ymm2,%ymm4,%ymm4 1654 vpor %ymm3,%ymm5,%ymm5 1655 1656 vpor %ymm5,%ymm4,%ymm4 1657 vextracti128 $1,%ymm4,%xmm5 1658 vpor %xmm4,%xmm5,%xmm5 1659 vpermd %ymm5,%ymm7,%ymm5 1660 vmovdqu %ymm5,(%rdi) 1661 leaq 32(%rdi),%rdi 1662 decl %edx 1663 jnz .Loop_gather_1024 1664 1665 vpxor %ymm0,%ymm0,%ymm0 1666 vmovdqu %ymm0,(%rdi) 1667 vzeroupper 1668 leaq (%r11),%rsp 1669 .byte 0xf3,0xc3 1670.size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2 1671 1672.globl rsaz_avx2_eligible 1673.type rsaz_avx2_eligible,@function 1674.align 32 1675rsaz_avx2_eligible: 1676 movl OPENSSL_ia32cap_P+8(%rip),%eax 1677 movl $524544,%ecx 1678 movl $0,%edx 1679 andl %eax,%ecx 1680 cmpl $524544,%ecx 1681 cmovel %edx,%eax 1682 andl $32,%eax 1683 shrl $5,%eax 1684 .byte 0xf3,0xc3 1685.size rsaz_avx2_eligible,.-rsaz_avx2_eligible 1686 1687.align 64 1688.Land_mask: 1689.quad 0x1fffffff,0x1fffffff,0x1fffffff,-1 1690.Lscatter_permd: 1691.long 0,2,4,6,7,7,7,7 1692.Lgather_permd: 1693.long 0,7,1,7,2,7,3,7 1694.Linc: 1695.long 0,0,0,0, 1,1,1,1 1696.long 2,2,2,2, 3,3,3,3 1697.long 4,4,4,4, 4,4,4,4 1698.align 64 1699