1305153Sjkim/* $FreeBSD: stable/11/secure/lib/libcrypto/amd64/rsaz-avx2.S 326663 2017-12-07 18:04:48Z jkim $ */ 2305153Sjkim/* Do not modify. This file is auto-generated from rsaz-avx2.pl. */ 3290207Sjkim.text 4290207Sjkim 5290207Sjkim.globl rsaz_1024_sqr_avx2 6290207Sjkim.type rsaz_1024_sqr_avx2,@function 7299481Sjkim.align 64 8290207Sjkimrsaz_1024_sqr_avx2: 9299481Sjkim leaq (%rsp),%rax 10299481Sjkim pushq %rbx 11299481Sjkim pushq %rbp 12299481Sjkim pushq %r12 13299481Sjkim pushq %r13 14299481Sjkim pushq %r14 15299481Sjkim pushq %r15 16299481Sjkim vzeroupper 17299481Sjkim movq %rax,%rbp 18299481Sjkim movq %rdx,%r13 19299481Sjkim subq $832,%rsp 20299481Sjkim movq %r13,%r15 21299481Sjkim subq $-128,%rdi 22299481Sjkim subq $-128,%rsi 23299481Sjkim subq $-128,%r13 24299481Sjkim 25299481Sjkim andq $4095,%r15 26299481Sjkim addq $320,%r15 27299481Sjkim shrq $12,%r15 28299481Sjkim vpxor %ymm9,%ymm9,%ymm9 29299481Sjkim jz .Lsqr_1024_no_n_copy 30299481Sjkim 31299481Sjkim 32299481Sjkim 33299481Sjkim 34299481Sjkim 35299481Sjkim subq $320,%rsp 36299481Sjkim vmovdqu 0-128(%r13),%ymm0 37299481Sjkim andq $-2048,%rsp 38299481Sjkim vmovdqu 32-128(%r13),%ymm1 39299481Sjkim vmovdqu 64-128(%r13),%ymm2 40299481Sjkim vmovdqu 96-128(%r13),%ymm3 41299481Sjkim vmovdqu 128-128(%r13),%ymm4 42299481Sjkim vmovdqu 160-128(%r13),%ymm5 43299481Sjkim vmovdqu 192-128(%r13),%ymm6 44299481Sjkim vmovdqu 224-128(%r13),%ymm7 45299481Sjkim vmovdqu 256-128(%r13),%ymm8 46299481Sjkim leaq 832+128(%rsp),%r13 47299481Sjkim vmovdqu %ymm0,0-128(%r13) 48299481Sjkim vmovdqu %ymm1,32-128(%r13) 49299481Sjkim vmovdqu %ymm2,64-128(%r13) 50299481Sjkim vmovdqu %ymm3,96-128(%r13) 51299481Sjkim vmovdqu %ymm4,128-128(%r13) 52299481Sjkim vmovdqu %ymm5,160-128(%r13) 53299481Sjkim vmovdqu %ymm6,192-128(%r13) 54299481Sjkim vmovdqu %ymm7,224-128(%r13) 55299481Sjkim vmovdqu %ymm8,256-128(%r13) 56299481Sjkim vmovdqu %ymm9,288-128(%r13) 57299481Sjkim 58299481Sjkim.Lsqr_1024_no_n_copy: 59299481Sjkim andq $-1024,%rsp 60299481Sjkim 61299481Sjkim vmovdqu 32-128(%rsi),%ymm1 62299481Sjkim vmovdqu 64-128(%rsi),%ymm2 63299481Sjkim vmovdqu 96-128(%rsi),%ymm3 64299481Sjkim vmovdqu 128-128(%rsi),%ymm4 65299481Sjkim vmovdqu 160-128(%rsi),%ymm5 66299481Sjkim vmovdqu 192-128(%rsi),%ymm6 67299481Sjkim vmovdqu 224-128(%rsi),%ymm7 68299481Sjkim vmovdqu 256-128(%rsi),%ymm8 69299481Sjkim 70299481Sjkim leaq 192(%rsp),%rbx 71326663Sjkim vmovdqu .Land_mask(%rip),%ymm15 72299481Sjkim jmp .LOOP_GRANDE_SQR_1024 73299481Sjkim 74299481Sjkim.align 32 75299481Sjkim.LOOP_GRANDE_SQR_1024: 76299481Sjkim leaq 576+128(%rsp),%r9 77299481Sjkim leaq 448(%rsp),%r12 78299481Sjkim 79299481Sjkim 80299481Sjkim 81299481Sjkim 82299481Sjkim vpaddq %ymm1,%ymm1,%ymm1 83299481Sjkim vpbroadcastq 0-128(%rsi),%ymm10 84299481Sjkim vpaddq %ymm2,%ymm2,%ymm2 85299481Sjkim vmovdqa %ymm1,0-128(%r9) 86299481Sjkim vpaddq %ymm3,%ymm3,%ymm3 87299481Sjkim vmovdqa %ymm2,32-128(%r9) 88299481Sjkim vpaddq %ymm4,%ymm4,%ymm4 89299481Sjkim vmovdqa %ymm3,64-128(%r9) 90299481Sjkim vpaddq %ymm5,%ymm5,%ymm5 91299481Sjkim vmovdqa %ymm4,96-128(%r9) 92299481Sjkim vpaddq %ymm6,%ymm6,%ymm6 93299481Sjkim vmovdqa %ymm5,128-128(%r9) 94299481Sjkim vpaddq %ymm7,%ymm7,%ymm7 95299481Sjkim vmovdqa %ymm6,160-128(%r9) 96299481Sjkim vpaddq %ymm8,%ymm8,%ymm8 97299481Sjkim vmovdqa %ymm7,192-128(%r9) 98299481Sjkim vpxor %ymm9,%ymm9,%ymm9 99299481Sjkim vmovdqa %ymm8,224-128(%r9) 100299481Sjkim 101299481Sjkim vpmuludq 0-128(%rsi),%ymm10,%ymm0 102299481Sjkim vpbroadcastq 32-128(%rsi),%ymm11 103299481Sjkim vmovdqu %ymm9,288-192(%rbx) 104299481Sjkim vpmuludq %ymm10,%ymm1,%ymm1 105299481Sjkim vmovdqu %ymm9,320-448(%r12) 106299481Sjkim vpmuludq %ymm10,%ymm2,%ymm2 107299481Sjkim vmovdqu %ymm9,352-448(%r12) 108299481Sjkim vpmuludq %ymm10,%ymm3,%ymm3 109299481Sjkim vmovdqu %ymm9,384-448(%r12) 110299481Sjkim vpmuludq %ymm10,%ymm4,%ymm4 111299481Sjkim vmovdqu %ymm9,416-448(%r12) 112299481Sjkim vpmuludq %ymm10,%ymm5,%ymm5 113299481Sjkim vmovdqu %ymm9,448-448(%r12) 114299481Sjkim vpmuludq %ymm10,%ymm6,%ymm6 115299481Sjkim vmovdqu %ymm9,480-448(%r12) 116299481Sjkim vpmuludq %ymm10,%ymm7,%ymm7 117299481Sjkim vmovdqu %ymm9,512-448(%r12) 118299481Sjkim vpmuludq %ymm10,%ymm8,%ymm8 119299481Sjkim vpbroadcastq 64-128(%rsi),%ymm10 120299481Sjkim vmovdqu %ymm9,544-448(%r12) 121299481Sjkim 122299481Sjkim movq %rsi,%r15 123299481Sjkim movl $4,%r14d 124299481Sjkim jmp .Lsqr_entry_1024 125299481Sjkim.align 32 126299481Sjkim.LOOP_SQR_1024: 127299481Sjkim vpbroadcastq 32-128(%r15),%ymm11 128299481Sjkim vpmuludq 0-128(%rsi),%ymm10,%ymm0 129299481Sjkim vpaddq 0-192(%rbx),%ymm0,%ymm0 130299481Sjkim vpmuludq 0-128(%r9),%ymm10,%ymm1 131299481Sjkim vpaddq 32-192(%rbx),%ymm1,%ymm1 132299481Sjkim vpmuludq 32-128(%r9),%ymm10,%ymm2 133299481Sjkim vpaddq 64-192(%rbx),%ymm2,%ymm2 134299481Sjkim vpmuludq 64-128(%r9),%ymm10,%ymm3 135299481Sjkim vpaddq 96-192(%rbx),%ymm3,%ymm3 136299481Sjkim vpmuludq 96-128(%r9),%ymm10,%ymm4 137299481Sjkim vpaddq 128-192(%rbx),%ymm4,%ymm4 138299481Sjkim vpmuludq 128-128(%r9),%ymm10,%ymm5 139299481Sjkim vpaddq 160-192(%rbx),%ymm5,%ymm5 140299481Sjkim vpmuludq 160-128(%r9),%ymm10,%ymm6 141299481Sjkim vpaddq 192-192(%rbx),%ymm6,%ymm6 142299481Sjkim vpmuludq 192-128(%r9),%ymm10,%ymm7 143299481Sjkim vpaddq 224-192(%rbx),%ymm7,%ymm7 144299481Sjkim vpmuludq 224-128(%r9),%ymm10,%ymm8 145299481Sjkim vpbroadcastq 64-128(%r15),%ymm10 146299481Sjkim vpaddq 256-192(%rbx),%ymm8,%ymm8 147299481Sjkim.Lsqr_entry_1024: 148299481Sjkim vmovdqu %ymm0,0-192(%rbx) 149299481Sjkim vmovdqu %ymm1,32-192(%rbx) 150299481Sjkim 151299481Sjkim vpmuludq 32-128(%rsi),%ymm11,%ymm12 152299481Sjkim vpaddq %ymm12,%ymm2,%ymm2 153299481Sjkim vpmuludq 32-128(%r9),%ymm11,%ymm14 154299481Sjkim vpaddq %ymm14,%ymm3,%ymm3 155299481Sjkim vpmuludq 64-128(%r9),%ymm11,%ymm13 156299481Sjkim vpaddq %ymm13,%ymm4,%ymm4 157299481Sjkim vpmuludq 96-128(%r9),%ymm11,%ymm12 158299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 159299481Sjkim vpmuludq 128-128(%r9),%ymm11,%ymm14 160299481Sjkim vpaddq %ymm14,%ymm6,%ymm6 161299481Sjkim vpmuludq 160-128(%r9),%ymm11,%ymm13 162299481Sjkim vpaddq %ymm13,%ymm7,%ymm7 163299481Sjkim vpmuludq 192-128(%r9),%ymm11,%ymm12 164299481Sjkim vpaddq %ymm12,%ymm8,%ymm8 165299481Sjkim vpmuludq 224-128(%r9),%ymm11,%ymm0 166299481Sjkim vpbroadcastq 96-128(%r15),%ymm11 167299481Sjkim vpaddq 288-192(%rbx),%ymm0,%ymm0 168299481Sjkim 169299481Sjkim vmovdqu %ymm2,64-192(%rbx) 170299481Sjkim vmovdqu %ymm3,96-192(%rbx) 171299481Sjkim 172299481Sjkim vpmuludq 64-128(%rsi),%ymm10,%ymm13 173299481Sjkim vpaddq %ymm13,%ymm4,%ymm4 174299481Sjkim vpmuludq 64-128(%r9),%ymm10,%ymm12 175299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 176299481Sjkim vpmuludq 96-128(%r9),%ymm10,%ymm14 177299481Sjkim vpaddq %ymm14,%ymm6,%ymm6 178299481Sjkim vpmuludq 128-128(%r9),%ymm10,%ymm13 179299481Sjkim vpaddq %ymm13,%ymm7,%ymm7 180299481Sjkim vpmuludq 160-128(%r9),%ymm10,%ymm12 181299481Sjkim vpaddq %ymm12,%ymm8,%ymm8 182299481Sjkim vpmuludq 192-128(%r9),%ymm10,%ymm14 183299481Sjkim vpaddq %ymm14,%ymm0,%ymm0 184299481Sjkim vpmuludq 224-128(%r9),%ymm10,%ymm1 185299481Sjkim vpbroadcastq 128-128(%r15),%ymm10 186299481Sjkim vpaddq 320-448(%r12),%ymm1,%ymm1 187299481Sjkim 188299481Sjkim vmovdqu %ymm4,128-192(%rbx) 189299481Sjkim vmovdqu %ymm5,160-192(%rbx) 190299481Sjkim 191299481Sjkim vpmuludq 96-128(%rsi),%ymm11,%ymm12 192299481Sjkim vpaddq %ymm12,%ymm6,%ymm6 193299481Sjkim vpmuludq 96-128(%r9),%ymm11,%ymm14 194299481Sjkim vpaddq %ymm14,%ymm7,%ymm7 195299481Sjkim vpmuludq 128-128(%r9),%ymm11,%ymm13 196299481Sjkim vpaddq %ymm13,%ymm8,%ymm8 197299481Sjkim vpmuludq 160-128(%r9),%ymm11,%ymm12 198299481Sjkim vpaddq %ymm12,%ymm0,%ymm0 199299481Sjkim vpmuludq 192-128(%r9),%ymm11,%ymm14 200299481Sjkim vpaddq %ymm14,%ymm1,%ymm1 201299481Sjkim vpmuludq 224-128(%r9),%ymm11,%ymm2 202299481Sjkim vpbroadcastq 160-128(%r15),%ymm11 203299481Sjkim vpaddq 352-448(%r12),%ymm2,%ymm2 204299481Sjkim 205299481Sjkim vmovdqu %ymm6,192-192(%rbx) 206299481Sjkim vmovdqu %ymm7,224-192(%rbx) 207299481Sjkim 208299481Sjkim vpmuludq 128-128(%rsi),%ymm10,%ymm12 209299481Sjkim vpaddq %ymm12,%ymm8,%ymm8 210299481Sjkim vpmuludq 128-128(%r9),%ymm10,%ymm14 211299481Sjkim vpaddq %ymm14,%ymm0,%ymm0 212299481Sjkim vpmuludq 160-128(%r9),%ymm10,%ymm13 213299481Sjkim vpaddq %ymm13,%ymm1,%ymm1 214299481Sjkim vpmuludq 192-128(%r9),%ymm10,%ymm12 215299481Sjkim vpaddq %ymm12,%ymm2,%ymm2 216299481Sjkim vpmuludq 224-128(%r9),%ymm10,%ymm3 217299481Sjkim vpbroadcastq 192-128(%r15),%ymm10 218299481Sjkim vpaddq 384-448(%r12),%ymm3,%ymm3 219299481Sjkim 220299481Sjkim vmovdqu %ymm8,256-192(%rbx) 221299481Sjkim vmovdqu %ymm0,288-192(%rbx) 222299481Sjkim leaq 8(%rbx),%rbx 223299481Sjkim 224299481Sjkim vpmuludq 160-128(%rsi),%ymm11,%ymm13 225299481Sjkim vpaddq %ymm13,%ymm1,%ymm1 226299481Sjkim vpmuludq 160-128(%r9),%ymm11,%ymm12 227299481Sjkim vpaddq %ymm12,%ymm2,%ymm2 228299481Sjkim vpmuludq 192-128(%r9),%ymm11,%ymm14 229299481Sjkim vpaddq %ymm14,%ymm3,%ymm3 230299481Sjkim vpmuludq 224-128(%r9),%ymm11,%ymm4 231299481Sjkim vpbroadcastq 224-128(%r15),%ymm11 232299481Sjkim vpaddq 416-448(%r12),%ymm4,%ymm4 233299481Sjkim 234299481Sjkim vmovdqu %ymm1,320-448(%r12) 235299481Sjkim vmovdqu %ymm2,352-448(%r12) 236299481Sjkim 237299481Sjkim vpmuludq 192-128(%rsi),%ymm10,%ymm12 238299481Sjkim vpaddq %ymm12,%ymm3,%ymm3 239299481Sjkim vpmuludq 192-128(%r9),%ymm10,%ymm14 240299481Sjkim vpbroadcastq 256-128(%r15),%ymm0 241299481Sjkim vpaddq %ymm14,%ymm4,%ymm4 242299481Sjkim vpmuludq 224-128(%r9),%ymm10,%ymm5 243299481Sjkim vpbroadcastq 0+8-128(%r15),%ymm10 244299481Sjkim vpaddq 448-448(%r12),%ymm5,%ymm5 245299481Sjkim 246299481Sjkim vmovdqu %ymm3,384-448(%r12) 247299481Sjkim vmovdqu %ymm4,416-448(%r12) 248299481Sjkim leaq 8(%r15),%r15 249299481Sjkim 250299481Sjkim vpmuludq 224-128(%rsi),%ymm11,%ymm12 251299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 252299481Sjkim vpmuludq 224-128(%r9),%ymm11,%ymm6 253299481Sjkim vpaddq 480-448(%r12),%ymm6,%ymm6 254299481Sjkim 255299481Sjkim vpmuludq 256-128(%rsi),%ymm0,%ymm7 256299481Sjkim vmovdqu %ymm5,448-448(%r12) 257299481Sjkim vpaddq 512-448(%r12),%ymm7,%ymm7 258299481Sjkim vmovdqu %ymm6,480-448(%r12) 259299481Sjkim vmovdqu %ymm7,512-448(%r12) 260299481Sjkim leaq 8(%r12),%r12 261299481Sjkim 262299481Sjkim decl %r14d 263299481Sjkim jnz .LOOP_SQR_1024 264299481Sjkim 265299481Sjkim vmovdqu 256(%rsp),%ymm8 266299481Sjkim vmovdqu 288(%rsp),%ymm1 267299481Sjkim vmovdqu 320(%rsp),%ymm2 268299481Sjkim leaq 192(%rsp),%rbx 269299481Sjkim 270299481Sjkim vpsrlq $29,%ymm8,%ymm14 271299481Sjkim vpand %ymm15,%ymm8,%ymm8 272299481Sjkim vpsrlq $29,%ymm1,%ymm11 273299481Sjkim vpand %ymm15,%ymm1,%ymm1 274299481Sjkim 275299481Sjkim vpermq $0x93,%ymm14,%ymm14 276299481Sjkim vpxor %ymm9,%ymm9,%ymm9 277299481Sjkim vpermq $0x93,%ymm11,%ymm11 278299481Sjkim 279299481Sjkim vpblendd $3,%ymm9,%ymm14,%ymm10 280299481Sjkim vpblendd $3,%ymm14,%ymm11,%ymm14 281299481Sjkim vpaddq %ymm10,%ymm8,%ymm8 282299481Sjkim vpblendd $3,%ymm11,%ymm9,%ymm11 283299481Sjkim vpaddq %ymm14,%ymm1,%ymm1 284299481Sjkim vpaddq %ymm11,%ymm2,%ymm2 285299481Sjkim vmovdqu %ymm1,288-192(%rbx) 286299481Sjkim vmovdqu %ymm2,320-192(%rbx) 287299481Sjkim 288299481Sjkim movq (%rsp),%rax 289299481Sjkim movq 8(%rsp),%r10 290299481Sjkim movq 16(%rsp),%r11 291299481Sjkim movq 24(%rsp),%r12 292299481Sjkim vmovdqu 32(%rsp),%ymm1 293299481Sjkim vmovdqu 64-192(%rbx),%ymm2 294299481Sjkim vmovdqu 96-192(%rbx),%ymm3 295299481Sjkim vmovdqu 128-192(%rbx),%ymm4 296299481Sjkim vmovdqu 160-192(%rbx),%ymm5 297299481Sjkim vmovdqu 192-192(%rbx),%ymm6 298299481Sjkim vmovdqu 224-192(%rbx),%ymm7 299299481Sjkim 300299481Sjkim movq %rax,%r9 301299481Sjkim imull %ecx,%eax 302299481Sjkim andl $0x1fffffff,%eax 303299481Sjkim vmovd %eax,%xmm12 304299481Sjkim 305299481Sjkim movq %rax,%rdx 306299481Sjkim imulq -128(%r13),%rax 307299481Sjkim vpbroadcastq %xmm12,%ymm12 308299481Sjkim addq %rax,%r9 309299481Sjkim movq %rdx,%rax 310299481Sjkim imulq 8-128(%r13),%rax 311299481Sjkim shrq $29,%r9 312299481Sjkim addq %rax,%r10 313299481Sjkim movq %rdx,%rax 314299481Sjkim imulq 16-128(%r13),%rax 315299481Sjkim addq %r9,%r10 316299481Sjkim addq %rax,%r11 317299481Sjkim imulq 24-128(%r13),%rdx 318299481Sjkim addq %rdx,%r12 319299481Sjkim 320299481Sjkim movq %r10,%rax 321299481Sjkim imull %ecx,%eax 322299481Sjkim andl $0x1fffffff,%eax 323299481Sjkim 324299481Sjkim movl $9,%r14d 325299481Sjkim jmp .LOOP_REDUCE_1024 326299481Sjkim 327299481Sjkim.align 32 328299481Sjkim.LOOP_REDUCE_1024: 329299481Sjkim vmovd %eax,%xmm13 330299481Sjkim vpbroadcastq %xmm13,%ymm13 331299481Sjkim 332299481Sjkim vpmuludq 32-128(%r13),%ymm12,%ymm10 333299481Sjkim movq %rax,%rdx 334299481Sjkim imulq -128(%r13),%rax 335299481Sjkim vpaddq %ymm10,%ymm1,%ymm1 336299481Sjkim addq %rax,%r10 337299481Sjkim vpmuludq 64-128(%r13),%ymm12,%ymm14 338299481Sjkim movq %rdx,%rax 339299481Sjkim imulq 8-128(%r13),%rax 340299481Sjkim vpaddq %ymm14,%ymm2,%ymm2 341299481Sjkim vpmuludq 96-128(%r13),%ymm12,%ymm11 342299481Sjkim.byte 0x67 343299481Sjkim addq %rax,%r11 344299481Sjkim.byte 0x67 345299481Sjkim movq %rdx,%rax 346299481Sjkim imulq 16-128(%r13),%rax 347299481Sjkim shrq $29,%r10 348299481Sjkim vpaddq %ymm11,%ymm3,%ymm3 349299481Sjkim vpmuludq 128-128(%r13),%ymm12,%ymm10 350299481Sjkim addq %rax,%r12 351299481Sjkim addq %r10,%r11 352299481Sjkim vpaddq %ymm10,%ymm4,%ymm4 353299481Sjkim vpmuludq 160-128(%r13),%ymm12,%ymm14 354299481Sjkim movq %r11,%rax 355299481Sjkim imull %ecx,%eax 356299481Sjkim vpaddq %ymm14,%ymm5,%ymm5 357299481Sjkim vpmuludq 192-128(%r13),%ymm12,%ymm11 358299481Sjkim andl $0x1fffffff,%eax 359299481Sjkim vpaddq %ymm11,%ymm6,%ymm6 360299481Sjkim vpmuludq 224-128(%r13),%ymm12,%ymm10 361299481Sjkim vpaddq %ymm10,%ymm7,%ymm7 362299481Sjkim vpmuludq 256-128(%r13),%ymm12,%ymm14 363299481Sjkim vmovd %eax,%xmm12 364299481Sjkim 365299481Sjkim vpaddq %ymm14,%ymm8,%ymm8 366299481Sjkim 367299481Sjkim vpbroadcastq %xmm12,%ymm12 368299481Sjkim 369299481Sjkim vpmuludq 32-8-128(%r13),%ymm13,%ymm11 370299481Sjkim vmovdqu 96-8-128(%r13),%ymm14 371299481Sjkim movq %rax,%rdx 372299481Sjkim imulq -128(%r13),%rax 373299481Sjkim vpaddq %ymm11,%ymm1,%ymm1 374299481Sjkim vpmuludq 64-8-128(%r13),%ymm13,%ymm10 375299481Sjkim vmovdqu 128-8-128(%r13),%ymm11 376299481Sjkim addq %rax,%r11 377299481Sjkim movq %rdx,%rax 378299481Sjkim imulq 8-128(%r13),%rax 379299481Sjkim vpaddq %ymm10,%ymm2,%ymm2 380299481Sjkim addq %r12,%rax 381299481Sjkim shrq $29,%r11 382299481Sjkim vpmuludq %ymm13,%ymm14,%ymm14 383299481Sjkim vmovdqu 160-8-128(%r13),%ymm10 384299481Sjkim addq %r11,%rax 385299481Sjkim vpaddq %ymm14,%ymm3,%ymm3 386299481Sjkim vpmuludq %ymm13,%ymm11,%ymm11 387299481Sjkim vmovdqu 192-8-128(%r13),%ymm14 388299481Sjkim.byte 0x67 389299481Sjkim movq %rax,%r12 390299481Sjkim imull %ecx,%eax 391299481Sjkim vpaddq %ymm11,%ymm4,%ymm4 392299481Sjkim vpmuludq %ymm13,%ymm10,%ymm10 393299481Sjkim.byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00 394299481Sjkim andl $0x1fffffff,%eax 395299481Sjkim vpaddq %ymm10,%ymm5,%ymm5 396299481Sjkim vpmuludq %ymm13,%ymm14,%ymm14 397299481Sjkim vmovdqu 256-8-128(%r13),%ymm10 398299481Sjkim vpaddq %ymm14,%ymm6,%ymm6 399299481Sjkim vpmuludq %ymm13,%ymm11,%ymm11 400299481Sjkim vmovdqu 288-8-128(%r13),%ymm9 401299481Sjkim vmovd %eax,%xmm0 402299481Sjkim imulq -128(%r13),%rax 403299481Sjkim vpaddq %ymm11,%ymm7,%ymm7 404299481Sjkim vpmuludq %ymm13,%ymm10,%ymm10 405299481Sjkim vmovdqu 32-16-128(%r13),%ymm14 406299481Sjkim vpbroadcastq %xmm0,%ymm0 407299481Sjkim vpaddq %ymm10,%ymm8,%ymm8 408299481Sjkim vpmuludq %ymm13,%ymm9,%ymm9 409299481Sjkim vmovdqu 64-16-128(%r13),%ymm11 410299481Sjkim addq %rax,%r12 411299481Sjkim 412299481Sjkim vmovdqu 32-24-128(%r13),%ymm13 413299481Sjkim vpmuludq %ymm12,%ymm14,%ymm14 414299481Sjkim vmovdqu 96-16-128(%r13),%ymm10 415299481Sjkim vpaddq %ymm14,%ymm1,%ymm1 416299481Sjkim vpmuludq %ymm0,%ymm13,%ymm13 417299481Sjkim vpmuludq %ymm12,%ymm11,%ymm11 418299481Sjkim.byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff 419299481Sjkim vpaddq %ymm1,%ymm13,%ymm13 420299481Sjkim vpaddq %ymm11,%ymm2,%ymm2 421299481Sjkim vpmuludq %ymm12,%ymm10,%ymm10 422299481Sjkim vmovdqu 160-16-128(%r13),%ymm11 423299481Sjkim.byte 0x67 424299481Sjkim vmovq %xmm13,%rax 425299481Sjkim vmovdqu %ymm13,(%rsp) 426299481Sjkim vpaddq %ymm10,%ymm3,%ymm3 427299481Sjkim vpmuludq %ymm12,%ymm14,%ymm14 428299481Sjkim vmovdqu 192-16-128(%r13),%ymm10 429299481Sjkim vpaddq %ymm14,%ymm4,%ymm4 430299481Sjkim vpmuludq %ymm12,%ymm11,%ymm11 431299481Sjkim vmovdqu 224-16-128(%r13),%ymm14 432299481Sjkim vpaddq %ymm11,%ymm5,%ymm5 433299481Sjkim vpmuludq %ymm12,%ymm10,%ymm10 434299481Sjkim vmovdqu 256-16-128(%r13),%ymm11 435299481Sjkim vpaddq %ymm10,%ymm6,%ymm6 436299481Sjkim vpmuludq %ymm12,%ymm14,%ymm14 437299481Sjkim shrq $29,%r12 438299481Sjkim vmovdqu 288-16-128(%r13),%ymm10 439299481Sjkim addq %r12,%rax 440299481Sjkim vpaddq %ymm14,%ymm7,%ymm7 441299481Sjkim vpmuludq %ymm12,%ymm11,%ymm11 442299481Sjkim 443299481Sjkim movq %rax,%r9 444299481Sjkim imull %ecx,%eax 445299481Sjkim vpaddq %ymm11,%ymm8,%ymm8 446299481Sjkim vpmuludq %ymm12,%ymm10,%ymm10 447299481Sjkim andl $0x1fffffff,%eax 448299481Sjkim vmovd %eax,%xmm12 449299481Sjkim vmovdqu 96-24-128(%r13),%ymm11 450299481Sjkim.byte 0x67 451299481Sjkim vpaddq %ymm10,%ymm9,%ymm9 452299481Sjkim vpbroadcastq %xmm12,%ymm12 453299481Sjkim 454299481Sjkim vpmuludq 64-24-128(%r13),%ymm0,%ymm14 455299481Sjkim vmovdqu 128-24-128(%r13),%ymm10 456299481Sjkim movq %rax,%rdx 457299481Sjkim imulq -128(%r13),%rax 458299481Sjkim movq 8(%rsp),%r10 459299481Sjkim vpaddq %ymm14,%ymm2,%ymm1 460299481Sjkim vpmuludq %ymm0,%ymm11,%ymm11 461299481Sjkim vmovdqu 160-24-128(%r13),%ymm14 462299481Sjkim addq %rax,%r9 463299481Sjkim movq %rdx,%rax 464299481Sjkim imulq 8-128(%r13),%rax 465299481Sjkim.byte 0x67 466299481Sjkim shrq $29,%r9 467299481Sjkim movq 16(%rsp),%r11 468299481Sjkim vpaddq %ymm11,%ymm3,%ymm2 469299481Sjkim vpmuludq %ymm0,%ymm10,%ymm10 470299481Sjkim vmovdqu 192-24-128(%r13),%ymm11 471299481Sjkim addq %rax,%r10 472299481Sjkim movq %rdx,%rax 473299481Sjkim imulq 16-128(%r13),%rax 474299481Sjkim vpaddq %ymm10,%ymm4,%ymm3 475299481Sjkim vpmuludq %ymm0,%ymm14,%ymm14 476299481Sjkim vmovdqu 224-24-128(%r13),%ymm10 477299481Sjkim imulq 24-128(%r13),%rdx 478299481Sjkim addq %rax,%r11 479299481Sjkim leaq (%r9,%r10,1),%rax 480299481Sjkim vpaddq %ymm14,%ymm5,%ymm4 481299481Sjkim vpmuludq %ymm0,%ymm11,%ymm11 482299481Sjkim vmovdqu 256-24-128(%r13),%ymm14 483299481Sjkim movq %rax,%r10 484299481Sjkim imull %ecx,%eax 485299481Sjkim vpmuludq %ymm0,%ymm10,%ymm10 486299481Sjkim vpaddq %ymm11,%ymm6,%ymm5 487299481Sjkim vmovdqu 288-24-128(%r13),%ymm11 488299481Sjkim andl $0x1fffffff,%eax 489299481Sjkim vpaddq %ymm10,%ymm7,%ymm6 490299481Sjkim vpmuludq %ymm0,%ymm14,%ymm14 491299481Sjkim addq 24(%rsp),%rdx 492299481Sjkim vpaddq %ymm14,%ymm8,%ymm7 493299481Sjkim vpmuludq %ymm0,%ymm11,%ymm11 494299481Sjkim vpaddq %ymm11,%ymm9,%ymm8 495299481Sjkim vmovq %r12,%xmm9 496299481Sjkim movq %rdx,%r12 497299481Sjkim 498299481Sjkim decl %r14d 499299481Sjkim jnz .LOOP_REDUCE_1024 500299481Sjkim leaq 448(%rsp),%r12 501299481Sjkim vpaddq %ymm9,%ymm13,%ymm0 502299481Sjkim vpxor %ymm9,%ymm9,%ymm9 503299481Sjkim 504299481Sjkim vpaddq 288-192(%rbx),%ymm0,%ymm0 505299481Sjkim vpaddq 320-448(%r12),%ymm1,%ymm1 506299481Sjkim vpaddq 352-448(%r12),%ymm2,%ymm2 507299481Sjkim vpaddq 384-448(%r12),%ymm3,%ymm3 508299481Sjkim vpaddq 416-448(%r12),%ymm4,%ymm4 509299481Sjkim vpaddq 448-448(%r12),%ymm5,%ymm5 510299481Sjkim vpaddq 480-448(%r12),%ymm6,%ymm6 511299481Sjkim vpaddq 512-448(%r12),%ymm7,%ymm7 512299481Sjkim vpaddq 544-448(%r12),%ymm8,%ymm8 513299481Sjkim 514299481Sjkim vpsrlq $29,%ymm0,%ymm14 515299481Sjkim vpand %ymm15,%ymm0,%ymm0 516299481Sjkim vpsrlq $29,%ymm1,%ymm11 517299481Sjkim vpand %ymm15,%ymm1,%ymm1 518299481Sjkim vpsrlq $29,%ymm2,%ymm12 519299481Sjkim vpermq $0x93,%ymm14,%ymm14 520299481Sjkim vpand %ymm15,%ymm2,%ymm2 521299481Sjkim vpsrlq $29,%ymm3,%ymm13 522299481Sjkim vpermq $0x93,%ymm11,%ymm11 523299481Sjkim vpand %ymm15,%ymm3,%ymm3 524299481Sjkim vpermq $0x93,%ymm12,%ymm12 525299481Sjkim 526299481Sjkim vpblendd $3,%ymm9,%ymm14,%ymm10 527299481Sjkim vpermq $0x93,%ymm13,%ymm13 528299481Sjkim vpblendd $3,%ymm14,%ymm11,%ymm14 529299481Sjkim vpaddq %ymm10,%ymm0,%ymm0 530299481Sjkim vpblendd $3,%ymm11,%ymm12,%ymm11 531299481Sjkim vpaddq %ymm14,%ymm1,%ymm1 532299481Sjkim vpblendd $3,%ymm12,%ymm13,%ymm12 533299481Sjkim vpaddq %ymm11,%ymm2,%ymm2 534299481Sjkim vpblendd $3,%ymm13,%ymm9,%ymm13 535299481Sjkim vpaddq %ymm12,%ymm3,%ymm3 536299481Sjkim vpaddq %ymm13,%ymm4,%ymm4 537299481Sjkim 538299481Sjkim vpsrlq $29,%ymm0,%ymm14 539299481Sjkim vpand %ymm15,%ymm0,%ymm0 540299481Sjkim vpsrlq $29,%ymm1,%ymm11 541299481Sjkim vpand %ymm15,%ymm1,%ymm1 542299481Sjkim vpsrlq $29,%ymm2,%ymm12 543299481Sjkim vpermq $0x93,%ymm14,%ymm14 544299481Sjkim vpand %ymm15,%ymm2,%ymm2 545299481Sjkim vpsrlq $29,%ymm3,%ymm13 546299481Sjkim vpermq $0x93,%ymm11,%ymm11 547299481Sjkim vpand %ymm15,%ymm3,%ymm3 548299481Sjkim vpermq $0x93,%ymm12,%ymm12 549299481Sjkim 550299481Sjkim vpblendd $3,%ymm9,%ymm14,%ymm10 551299481Sjkim vpermq $0x93,%ymm13,%ymm13 552299481Sjkim vpblendd $3,%ymm14,%ymm11,%ymm14 553299481Sjkim vpaddq %ymm10,%ymm0,%ymm0 554299481Sjkim vpblendd $3,%ymm11,%ymm12,%ymm11 555299481Sjkim vpaddq %ymm14,%ymm1,%ymm1 556299481Sjkim vmovdqu %ymm0,0-128(%rdi) 557299481Sjkim vpblendd $3,%ymm12,%ymm13,%ymm12 558299481Sjkim vpaddq %ymm11,%ymm2,%ymm2 559299481Sjkim vmovdqu %ymm1,32-128(%rdi) 560299481Sjkim vpblendd $3,%ymm13,%ymm9,%ymm13 561299481Sjkim vpaddq %ymm12,%ymm3,%ymm3 562299481Sjkim vmovdqu %ymm2,64-128(%rdi) 563299481Sjkim vpaddq %ymm13,%ymm4,%ymm4 564299481Sjkim vmovdqu %ymm3,96-128(%rdi) 565299481Sjkim vpsrlq $29,%ymm4,%ymm14 566299481Sjkim vpand %ymm15,%ymm4,%ymm4 567299481Sjkim vpsrlq $29,%ymm5,%ymm11 568299481Sjkim vpand %ymm15,%ymm5,%ymm5 569299481Sjkim vpsrlq $29,%ymm6,%ymm12 570299481Sjkim vpermq $0x93,%ymm14,%ymm14 571299481Sjkim vpand %ymm15,%ymm6,%ymm6 572299481Sjkim vpsrlq $29,%ymm7,%ymm13 573299481Sjkim vpermq $0x93,%ymm11,%ymm11 574299481Sjkim vpand %ymm15,%ymm7,%ymm7 575299481Sjkim vpsrlq $29,%ymm8,%ymm0 576299481Sjkim vpermq $0x93,%ymm12,%ymm12 577299481Sjkim vpand %ymm15,%ymm8,%ymm8 578299481Sjkim vpermq $0x93,%ymm13,%ymm13 579299481Sjkim 580299481Sjkim vpblendd $3,%ymm9,%ymm14,%ymm10 581299481Sjkim vpermq $0x93,%ymm0,%ymm0 582299481Sjkim vpblendd $3,%ymm14,%ymm11,%ymm14 583299481Sjkim vpaddq %ymm10,%ymm4,%ymm4 584299481Sjkim vpblendd $3,%ymm11,%ymm12,%ymm11 585299481Sjkim vpaddq %ymm14,%ymm5,%ymm5 586299481Sjkim vpblendd $3,%ymm12,%ymm13,%ymm12 587299481Sjkim vpaddq %ymm11,%ymm6,%ymm6 588299481Sjkim vpblendd $3,%ymm13,%ymm0,%ymm13 589299481Sjkim vpaddq %ymm12,%ymm7,%ymm7 590299481Sjkim vpaddq %ymm13,%ymm8,%ymm8 591299481Sjkim 592299481Sjkim vpsrlq $29,%ymm4,%ymm14 593299481Sjkim vpand %ymm15,%ymm4,%ymm4 594299481Sjkim vpsrlq $29,%ymm5,%ymm11 595299481Sjkim vpand %ymm15,%ymm5,%ymm5 596299481Sjkim vpsrlq $29,%ymm6,%ymm12 597299481Sjkim vpermq $0x93,%ymm14,%ymm14 598299481Sjkim vpand %ymm15,%ymm6,%ymm6 599299481Sjkim vpsrlq $29,%ymm7,%ymm13 600299481Sjkim vpermq $0x93,%ymm11,%ymm11 601299481Sjkim vpand %ymm15,%ymm7,%ymm7 602299481Sjkim vpsrlq $29,%ymm8,%ymm0 603299481Sjkim vpermq $0x93,%ymm12,%ymm12 604299481Sjkim vpand %ymm15,%ymm8,%ymm8 605299481Sjkim vpermq $0x93,%ymm13,%ymm13 606299481Sjkim 607299481Sjkim vpblendd $3,%ymm9,%ymm14,%ymm10 608299481Sjkim vpermq $0x93,%ymm0,%ymm0 609299481Sjkim vpblendd $3,%ymm14,%ymm11,%ymm14 610299481Sjkim vpaddq %ymm10,%ymm4,%ymm4 611299481Sjkim vpblendd $3,%ymm11,%ymm12,%ymm11 612299481Sjkim vpaddq %ymm14,%ymm5,%ymm5 613299481Sjkim vmovdqu %ymm4,128-128(%rdi) 614299481Sjkim vpblendd $3,%ymm12,%ymm13,%ymm12 615299481Sjkim vpaddq %ymm11,%ymm6,%ymm6 616299481Sjkim vmovdqu %ymm5,160-128(%rdi) 617299481Sjkim vpblendd $3,%ymm13,%ymm0,%ymm13 618299481Sjkim vpaddq %ymm12,%ymm7,%ymm7 619299481Sjkim vmovdqu %ymm6,192-128(%rdi) 620299481Sjkim vpaddq %ymm13,%ymm8,%ymm8 621299481Sjkim vmovdqu %ymm7,224-128(%rdi) 622299481Sjkim vmovdqu %ymm8,256-128(%rdi) 623299481Sjkim 624299481Sjkim movq %rdi,%rsi 625299481Sjkim decl %r8d 626299481Sjkim jne .LOOP_GRANDE_SQR_1024 627299481Sjkim 628299481Sjkim vzeroall 629299481Sjkim movq %rbp,%rax 630299481Sjkim movq -48(%rax),%r15 631299481Sjkim movq -40(%rax),%r14 632299481Sjkim movq -32(%rax),%r13 633299481Sjkim movq -24(%rax),%r12 634299481Sjkim movq -16(%rax),%rbp 635299481Sjkim movq -8(%rax),%rbx 636299481Sjkim leaq (%rax),%rsp 637299481Sjkim.Lsqr_1024_epilogue: 638299481Sjkim .byte 0xf3,0xc3 639299481Sjkim.size rsaz_1024_sqr_avx2,.-rsaz_1024_sqr_avx2 640299481Sjkim.globl rsaz_1024_mul_avx2 641299481Sjkim.type rsaz_1024_mul_avx2,@function 642299481Sjkim.align 64 643290207Sjkimrsaz_1024_mul_avx2: 644299481Sjkim leaq (%rsp),%rax 645299481Sjkim pushq %rbx 646299481Sjkim pushq %rbp 647299481Sjkim pushq %r12 648299481Sjkim pushq %r13 649299481Sjkim pushq %r14 650299481Sjkim pushq %r15 651299481Sjkim movq %rax,%rbp 652299481Sjkim vzeroall 653299481Sjkim movq %rdx,%r13 654299481Sjkim subq $64,%rsp 655299481Sjkim 656299481Sjkim 657299481Sjkim 658299481Sjkim 659299481Sjkim 660299481Sjkim 661299481Sjkim.byte 0x67,0x67 662299481Sjkim movq %rsi,%r15 663299481Sjkim andq $4095,%r15 664299481Sjkim addq $320,%r15 665299481Sjkim shrq $12,%r15 666299481Sjkim movq %rsi,%r15 667299481Sjkim cmovnzq %r13,%rsi 668299481Sjkim cmovnzq %r15,%r13 669299481Sjkim 670299481Sjkim movq %rcx,%r15 671299481Sjkim subq $-128,%rsi 672299481Sjkim subq $-128,%rcx 673299481Sjkim subq $-128,%rdi 674299481Sjkim 675299481Sjkim andq $4095,%r15 676299481Sjkim addq $320,%r15 677299481Sjkim.byte 0x67,0x67 678299481Sjkim shrq $12,%r15 679299481Sjkim jz .Lmul_1024_no_n_copy 680299481Sjkim 681299481Sjkim 682299481Sjkim 683299481Sjkim 684299481Sjkim 685299481Sjkim subq $320,%rsp 686299481Sjkim vmovdqu 0-128(%rcx),%ymm0 687299481Sjkim andq $-512,%rsp 688299481Sjkim vmovdqu 32-128(%rcx),%ymm1 689299481Sjkim vmovdqu 64-128(%rcx),%ymm2 690299481Sjkim vmovdqu 96-128(%rcx),%ymm3 691299481Sjkim vmovdqu 128-128(%rcx),%ymm4 692299481Sjkim vmovdqu 160-128(%rcx),%ymm5 693299481Sjkim vmovdqu 192-128(%rcx),%ymm6 694299481Sjkim vmovdqu 224-128(%rcx),%ymm7 695299481Sjkim vmovdqu 256-128(%rcx),%ymm8 696299481Sjkim leaq 64+128(%rsp),%rcx 697299481Sjkim vmovdqu %ymm0,0-128(%rcx) 698299481Sjkim vpxor %ymm0,%ymm0,%ymm0 699299481Sjkim vmovdqu %ymm1,32-128(%rcx) 700299481Sjkim vpxor %ymm1,%ymm1,%ymm1 701299481Sjkim vmovdqu %ymm2,64-128(%rcx) 702299481Sjkim vpxor %ymm2,%ymm2,%ymm2 703299481Sjkim vmovdqu %ymm3,96-128(%rcx) 704299481Sjkim vpxor %ymm3,%ymm3,%ymm3 705299481Sjkim vmovdqu %ymm4,128-128(%rcx) 706299481Sjkim vpxor %ymm4,%ymm4,%ymm4 707299481Sjkim vmovdqu %ymm5,160-128(%rcx) 708299481Sjkim vpxor %ymm5,%ymm5,%ymm5 709299481Sjkim vmovdqu %ymm6,192-128(%rcx) 710299481Sjkim vpxor %ymm6,%ymm6,%ymm6 711299481Sjkim vmovdqu %ymm7,224-128(%rcx) 712299481Sjkim vpxor %ymm7,%ymm7,%ymm7 713299481Sjkim vmovdqu %ymm8,256-128(%rcx) 714299481Sjkim vmovdqa %ymm0,%ymm8 715299481Sjkim vmovdqu %ymm9,288-128(%rcx) 716299481Sjkim.Lmul_1024_no_n_copy: 717299481Sjkim andq $-64,%rsp 718299481Sjkim 719299481Sjkim movq (%r13),%rbx 720299481Sjkim vpbroadcastq (%r13),%ymm10 721299481Sjkim vmovdqu %ymm0,(%rsp) 722299481Sjkim xorq %r9,%r9 723299481Sjkim.byte 0x67 724299481Sjkim xorq %r10,%r10 725299481Sjkim xorq %r11,%r11 726299481Sjkim xorq %r12,%r12 727299481Sjkim 728299481Sjkim vmovdqu .Land_mask(%rip),%ymm15 729299481Sjkim movl $9,%r14d 730299481Sjkim vmovdqu %ymm9,288-128(%rdi) 731299481Sjkim jmp .Loop_mul_1024 732299481Sjkim 733299481Sjkim.align 32 734299481Sjkim.Loop_mul_1024: 735299481Sjkim vpsrlq $29,%ymm3,%ymm9 736299481Sjkim movq %rbx,%rax 737299481Sjkim imulq -128(%rsi),%rax 738299481Sjkim addq %r9,%rax 739299481Sjkim movq %rbx,%r10 740299481Sjkim imulq 8-128(%rsi),%r10 741299481Sjkim addq 8(%rsp),%r10 742299481Sjkim 743299481Sjkim movq %rax,%r9 744299481Sjkim imull %r8d,%eax 745299481Sjkim andl $0x1fffffff,%eax 746299481Sjkim 747299481Sjkim movq %rbx,%r11 748299481Sjkim imulq 16-128(%rsi),%r11 749299481Sjkim addq 16(%rsp),%r11 750299481Sjkim 751299481Sjkim movq %rbx,%r12 752299481Sjkim imulq 24-128(%rsi),%r12 753299481Sjkim addq 24(%rsp),%r12 754299481Sjkim vpmuludq 32-128(%rsi),%ymm10,%ymm0 755299481Sjkim vmovd %eax,%xmm11 756299481Sjkim vpaddq %ymm0,%ymm1,%ymm1 757299481Sjkim vpmuludq 64-128(%rsi),%ymm10,%ymm12 758299481Sjkim vpbroadcastq %xmm11,%ymm11 759299481Sjkim vpaddq %ymm12,%ymm2,%ymm2 760299481Sjkim vpmuludq 96-128(%rsi),%ymm10,%ymm13 761299481Sjkim vpand %ymm15,%ymm3,%ymm3 762299481Sjkim vpaddq %ymm13,%ymm3,%ymm3 763299481Sjkim vpmuludq 128-128(%rsi),%ymm10,%ymm0 764299481Sjkim vpaddq %ymm0,%ymm4,%ymm4 765299481Sjkim vpmuludq 160-128(%rsi),%ymm10,%ymm12 766299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 767299481Sjkim vpmuludq 192-128(%rsi),%ymm10,%ymm13 768299481Sjkim vpaddq %ymm13,%ymm6,%ymm6 769299481Sjkim vpmuludq 224-128(%rsi),%ymm10,%ymm0 770299481Sjkim vpermq $0x93,%ymm9,%ymm9 771299481Sjkim vpaddq %ymm0,%ymm7,%ymm7 772299481Sjkim vpmuludq 256-128(%rsi),%ymm10,%ymm12 773299481Sjkim vpbroadcastq 8(%r13),%ymm10 774299481Sjkim vpaddq %ymm12,%ymm8,%ymm8 775299481Sjkim 776299481Sjkim movq %rax,%rdx 777299481Sjkim imulq -128(%rcx),%rax 778299481Sjkim addq %rax,%r9 779299481Sjkim movq %rdx,%rax 780299481Sjkim imulq 8-128(%rcx),%rax 781299481Sjkim addq %rax,%r10 782299481Sjkim movq %rdx,%rax 783299481Sjkim imulq 16-128(%rcx),%rax 784299481Sjkim addq %rax,%r11 785299481Sjkim shrq $29,%r9 786299481Sjkim imulq 24-128(%rcx),%rdx 787299481Sjkim addq %rdx,%r12 788299481Sjkim addq %r9,%r10 789299481Sjkim 790299481Sjkim vpmuludq 32-128(%rcx),%ymm11,%ymm13 791299481Sjkim vmovq %xmm10,%rbx 792299481Sjkim vpaddq %ymm13,%ymm1,%ymm1 793299481Sjkim vpmuludq 64-128(%rcx),%ymm11,%ymm0 794299481Sjkim vpaddq %ymm0,%ymm2,%ymm2 795299481Sjkim vpmuludq 96-128(%rcx),%ymm11,%ymm12 796299481Sjkim vpaddq %ymm12,%ymm3,%ymm3 797299481Sjkim vpmuludq 128-128(%rcx),%ymm11,%ymm13 798299481Sjkim vpaddq %ymm13,%ymm4,%ymm4 799299481Sjkim vpmuludq 160-128(%rcx),%ymm11,%ymm0 800299481Sjkim vpaddq %ymm0,%ymm5,%ymm5 801299481Sjkim vpmuludq 192-128(%rcx),%ymm11,%ymm12 802299481Sjkim vpaddq %ymm12,%ymm6,%ymm6 803299481Sjkim vpmuludq 224-128(%rcx),%ymm11,%ymm13 804326663Sjkim vpblendd $3,%ymm14,%ymm9,%ymm12 805299481Sjkim vpaddq %ymm13,%ymm7,%ymm7 806299481Sjkim vpmuludq 256-128(%rcx),%ymm11,%ymm0 807326663Sjkim vpaddq %ymm12,%ymm3,%ymm3 808299481Sjkim vpaddq %ymm0,%ymm8,%ymm8 809299481Sjkim 810299481Sjkim movq %rbx,%rax 811299481Sjkim imulq -128(%rsi),%rax 812299481Sjkim addq %rax,%r10 813299481Sjkim vmovdqu -8+32-128(%rsi),%ymm12 814299481Sjkim movq %rbx,%rax 815299481Sjkim imulq 8-128(%rsi),%rax 816299481Sjkim addq %rax,%r11 817299481Sjkim vmovdqu -8+64-128(%rsi),%ymm13 818299481Sjkim 819299481Sjkim movq %r10,%rax 820326663Sjkim vpblendd $0xfc,%ymm14,%ymm9,%ymm9 821299481Sjkim imull %r8d,%eax 822326663Sjkim vpaddq %ymm9,%ymm4,%ymm4 823299481Sjkim andl $0x1fffffff,%eax 824299481Sjkim 825299481Sjkim imulq 16-128(%rsi),%rbx 826299481Sjkim addq %rbx,%r12 827299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 828299481Sjkim vmovd %eax,%xmm11 829299481Sjkim vmovdqu -8+96-128(%rsi),%ymm0 830299481Sjkim vpaddq %ymm12,%ymm1,%ymm1 831299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 832299481Sjkim vpbroadcastq %xmm11,%ymm11 833299481Sjkim vmovdqu -8+128-128(%rsi),%ymm12 834299481Sjkim vpaddq %ymm13,%ymm2,%ymm2 835299481Sjkim vpmuludq %ymm10,%ymm0,%ymm0 836299481Sjkim vmovdqu -8+160-128(%rsi),%ymm13 837299481Sjkim vpaddq %ymm0,%ymm3,%ymm3 838299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 839299481Sjkim vmovdqu -8+192-128(%rsi),%ymm0 840299481Sjkim vpaddq %ymm12,%ymm4,%ymm4 841299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 842299481Sjkim vmovdqu -8+224-128(%rsi),%ymm12 843299481Sjkim vpaddq %ymm13,%ymm5,%ymm5 844299481Sjkim vpmuludq %ymm10,%ymm0,%ymm0 845299481Sjkim vmovdqu -8+256-128(%rsi),%ymm13 846299481Sjkim vpaddq %ymm0,%ymm6,%ymm6 847299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 848299481Sjkim vmovdqu -8+288-128(%rsi),%ymm9 849299481Sjkim vpaddq %ymm12,%ymm7,%ymm7 850299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 851299481Sjkim vpaddq %ymm13,%ymm8,%ymm8 852299481Sjkim vpmuludq %ymm10,%ymm9,%ymm9 853299481Sjkim vpbroadcastq 16(%r13),%ymm10 854299481Sjkim 855299481Sjkim movq %rax,%rdx 856299481Sjkim imulq -128(%rcx),%rax 857299481Sjkim addq %rax,%r10 858299481Sjkim vmovdqu -8+32-128(%rcx),%ymm0 859299481Sjkim movq %rdx,%rax 860299481Sjkim imulq 8-128(%rcx),%rax 861299481Sjkim addq %rax,%r11 862299481Sjkim vmovdqu -8+64-128(%rcx),%ymm12 863299481Sjkim shrq $29,%r10 864299481Sjkim imulq 16-128(%rcx),%rdx 865299481Sjkim addq %rdx,%r12 866299481Sjkim addq %r10,%r11 867299481Sjkim 868299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 869299481Sjkim vmovq %xmm10,%rbx 870299481Sjkim vmovdqu -8+96-128(%rcx),%ymm13 871299481Sjkim vpaddq %ymm0,%ymm1,%ymm1 872299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 873299481Sjkim vmovdqu -8+128-128(%rcx),%ymm0 874299481Sjkim vpaddq %ymm12,%ymm2,%ymm2 875299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 876299481Sjkim vmovdqu -8+160-128(%rcx),%ymm12 877299481Sjkim vpaddq %ymm13,%ymm3,%ymm3 878299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 879299481Sjkim vmovdqu -8+192-128(%rcx),%ymm13 880299481Sjkim vpaddq %ymm0,%ymm4,%ymm4 881299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 882299481Sjkim vmovdqu -8+224-128(%rcx),%ymm0 883299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 884299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 885299481Sjkim vmovdqu -8+256-128(%rcx),%ymm12 886299481Sjkim vpaddq %ymm13,%ymm6,%ymm6 887299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 888299481Sjkim vmovdqu -8+288-128(%rcx),%ymm13 889299481Sjkim vpaddq %ymm0,%ymm7,%ymm7 890299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 891299481Sjkim vpaddq %ymm12,%ymm8,%ymm8 892299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 893299481Sjkim vpaddq %ymm13,%ymm9,%ymm9 894299481Sjkim 895299481Sjkim vmovdqu -16+32-128(%rsi),%ymm0 896299481Sjkim movq %rbx,%rax 897299481Sjkim imulq -128(%rsi),%rax 898299481Sjkim addq %r11,%rax 899299481Sjkim 900299481Sjkim vmovdqu -16+64-128(%rsi),%ymm12 901299481Sjkim movq %rax,%r11 902299481Sjkim imull %r8d,%eax 903299481Sjkim andl $0x1fffffff,%eax 904299481Sjkim 905299481Sjkim imulq 8-128(%rsi),%rbx 906299481Sjkim addq %rbx,%r12 907299481Sjkim vpmuludq %ymm10,%ymm0,%ymm0 908299481Sjkim vmovd %eax,%xmm11 909299481Sjkim vmovdqu -16+96-128(%rsi),%ymm13 910299481Sjkim vpaddq %ymm0,%ymm1,%ymm1 911299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 912299481Sjkim vpbroadcastq %xmm11,%ymm11 913299481Sjkim vmovdqu -16+128-128(%rsi),%ymm0 914299481Sjkim vpaddq %ymm12,%ymm2,%ymm2 915299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 916299481Sjkim vmovdqu -16+160-128(%rsi),%ymm12 917299481Sjkim vpaddq %ymm13,%ymm3,%ymm3 918299481Sjkim vpmuludq %ymm10,%ymm0,%ymm0 919299481Sjkim vmovdqu -16+192-128(%rsi),%ymm13 920299481Sjkim vpaddq %ymm0,%ymm4,%ymm4 921299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 922299481Sjkim vmovdqu -16+224-128(%rsi),%ymm0 923299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 924299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 925299481Sjkim vmovdqu -16+256-128(%rsi),%ymm12 926299481Sjkim vpaddq %ymm13,%ymm6,%ymm6 927299481Sjkim vpmuludq %ymm10,%ymm0,%ymm0 928299481Sjkim vmovdqu -16+288-128(%rsi),%ymm13 929299481Sjkim vpaddq %ymm0,%ymm7,%ymm7 930299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 931299481Sjkim vpaddq %ymm12,%ymm8,%ymm8 932299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 933299481Sjkim vpbroadcastq 24(%r13),%ymm10 934299481Sjkim vpaddq %ymm13,%ymm9,%ymm9 935299481Sjkim 936299481Sjkim vmovdqu -16+32-128(%rcx),%ymm0 937299481Sjkim movq %rax,%rdx 938299481Sjkim imulq -128(%rcx),%rax 939299481Sjkim addq %rax,%r11 940299481Sjkim vmovdqu -16+64-128(%rcx),%ymm12 941299481Sjkim imulq 8-128(%rcx),%rdx 942299481Sjkim addq %rdx,%r12 943299481Sjkim shrq $29,%r11 944299481Sjkim 945299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 946299481Sjkim vmovq %xmm10,%rbx 947299481Sjkim vmovdqu -16+96-128(%rcx),%ymm13 948299481Sjkim vpaddq %ymm0,%ymm1,%ymm1 949299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 950299481Sjkim vmovdqu -16+128-128(%rcx),%ymm0 951299481Sjkim vpaddq %ymm12,%ymm2,%ymm2 952299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 953299481Sjkim vmovdqu -16+160-128(%rcx),%ymm12 954299481Sjkim vpaddq %ymm13,%ymm3,%ymm3 955299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 956299481Sjkim vmovdqu -16+192-128(%rcx),%ymm13 957299481Sjkim vpaddq %ymm0,%ymm4,%ymm4 958299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 959299481Sjkim vmovdqu -16+224-128(%rcx),%ymm0 960299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 961299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 962299481Sjkim vmovdqu -16+256-128(%rcx),%ymm12 963299481Sjkim vpaddq %ymm13,%ymm6,%ymm6 964299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 965299481Sjkim vmovdqu -16+288-128(%rcx),%ymm13 966299481Sjkim vpaddq %ymm0,%ymm7,%ymm7 967299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 968299481Sjkim vmovdqu -24+32-128(%rsi),%ymm0 969299481Sjkim vpaddq %ymm12,%ymm8,%ymm8 970299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 971299481Sjkim vmovdqu -24+64-128(%rsi),%ymm12 972299481Sjkim vpaddq %ymm13,%ymm9,%ymm9 973299481Sjkim 974299481Sjkim addq %r11,%r12 975299481Sjkim imulq -128(%rsi),%rbx 976299481Sjkim addq %rbx,%r12 977299481Sjkim 978299481Sjkim movq %r12,%rax 979299481Sjkim imull %r8d,%eax 980299481Sjkim andl $0x1fffffff,%eax 981299481Sjkim 982299481Sjkim vpmuludq %ymm10,%ymm0,%ymm0 983299481Sjkim vmovd %eax,%xmm11 984299481Sjkim vmovdqu -24+96-128(%rsi),%ymm13 985299481Sjkim vpaddq %ymm0,%ymm1,%ymm1 986299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 987299481Sjkim vpbroadcastq %xmm11,%ymm11 988299481Sjkim vmovdqu -24+128-128(%rsi),%ymm0 989299481Sjkim vpaddq %ymm12,%ymm2,%ymm2 990299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 991299481Sjkim vmovdqu -24+160-128(%rsi),%ymm12 992299481Sjkim vpaddq %ymm13,%ymm3,%ymm3 993299481Sjkim vpmuludq %ymm10,%ymm0,%ymm0 994299481Sjkim vmovdqu -24+192-128(%rsi),%ymm13 995299481Sjkim vpaddq %ymm0,%ymm4,%ymm4 996299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 997299481Sjkim vmovdqu -24+224-128(%rsi),%ymm0 998299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 999299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 1000299481Sjkim vmovdqu -24+256-128(%rsi),%ymm12 1001299481Sjkim vpaddq %ymm13,%ymm6,%ymm6 1002299481Sjkim vpmuludq %ymm10,%ymm0,%ymm0 1003299481Sjkim vmovdqu -24+288-128(%rsi),%ymm13 1004299481Sjkim vpaddq %ymm0,%ymm7,%ymm7 1005299481Sjkim vpmuludq %ymm10,%ymm12,%ymm12 1006299481Sjkim vpaddq %ymm12,%ymm8,%ymm8 1007299481Sjkim vpmuludq %ymm10,%ymm13,%ymm13 1008299481Sjkim vpbroadcastq 32(%r13),%ymm10 1009299481Sjkim vpaddq %ymm13,%ymm9,%ymm9 1010299481Sjkim addq $32,%r13 1011299481Sjkim 1012299481Sjkim vmovdqu -24+32-128(%rcx),%ymm0 1013299481Sjkim imulq -128(%rcx),%rax 1014299481Sjkim addq %rax,%r12 1015299481Sjkim shrq $29,%r12 1016299481Sjkim 1017299481Sjkim vmovdqu -24+64-128(%rcx),%ymm12 1018299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 1019299481Sjkim vmovq %xmm10,%rbx 1020299481Sjkim vmovdqu -24+96-128(%rcx),%ymm13 1021299481Sjkim vpaddq %ymm0,%ymm1,%ymm0 1022299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 1023299481Sjkim vmovdqu %ymm0,(%rsp) 1024299481Sjkim vpaddq %ymm12,%ymm2,%ymm1 1025299481Sjkim vmovdqu -24+128-128(%rcx),%ymm0 1026299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 1027299481Sjkim vmovdqu -24+160-128(%rcx),%ymm12 1028299481Sjkim vpaddq %ymm13,%ymm3,%ymm2 1029299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 1030299481Sjkim vmovdqu -24+192-128(%rcx),%ymm13 1031299481Sjkim vpaddq %ymm0,%ymm4,%ymm3 1032299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 1033299481Sjkim vmovdqu -24+224-128(%rcx),%ymm0 1034299481Sjkim vpaddq %ymm12,%ymm5,%ymm4 1035299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 1036299481Sjkim vmovdqu -24+256-128(%rcx),%ymm12 1037299481Sjkim vpaddq %ymm13,%ymm6,%ymm5 1038299481Sjkim vpmuludq %ymm11,%ymm0,%ymm0 1039299481Sjkim vmovdqu -24+288-128(%rcx),%ymm13 1040299481Sjkim movq %r12,%r9 1041299481Sjkim vpaddq %ymm0,%ymm7,%ymm6 1042299481Sjkim vpmuludq %ymm11,%ymm12,%ymm12 1043299481Sjkim addq (%rsp),%r9 1044299481Sjkim vpaddq %ymm12,%ymm8,%ymm7 1045299481Sjkim vpmuludq %ymm11,%ymm13,%ymm13 1046299481Sjkim vmovq %r12,%xmm12 1047299481Sjkim vpaddq %ymm13,%ymm9,%ymm8 1048299481Sjkim 1049299481Sjkim decl %r14d 1050299481Sjkim jnz .Loop_mul_1024 1051299481Sjkim vpaddq (%rsp),%ymm12,%ymm0 1052299481Sjkim 1053299481Sjkim vpsrlq $29,%ymm0,%ymm12 1054299481Sjkim vpand %ymm15,%ymm0,%ymm0 1055299481Sjkim vpsrlq $29,%ymm1,%ymm13 1056299481Sjkim vpand %ymm15,%ymm1,%ymm1 1057299481Sjkim vpsrlq $29,%ymm2,%ymm10 1058299481Sjkim vpermq $0x93,%ymm12,%ymm12 1059299481Sjkim vpand %ymm15,%ymm2,%ymm2 1060299481Sjkim vpsrlq $29,%ymm3,%ymm11 1061299481Sjkim vpermq $0x93,%ymm13,%ymm13 1062299481Sjkim vpand %ymm15,%ymm3,%ymm3 1063299481Sjkim 1064299481Sjkim vpblendd $3,%ymm14,%ymm12,%ymm9 1065299481Sjkim vpermq $0x93,%ymm10,%ymm10 1066299481Sjkim vpblendd $3,%ymm12,%ymm13,%ymm12 1067299481Sjkim vpermq $0x93,%ymm11,%ymm11 1068299481Sjkim vpaddq %ymm9,%ymm0,%ymm0 1069299481Sjkim vpblendd $3,%ymm13,%ymm10,%ymm13 1070299481Sjkim vpaddq %ymm12,%ymm1,%ymm1 1071299481Sjkim vpblendd $3,%ymm10,%ymm11,%ymm10 1072299481Sjkim vpaddq %ymm13,%ymm2,%ymm2 1073299481Sjkim vpblendd $3,%ymm11,%ymm14,%ymm11 1074299481Sjkim vpaddq %ymm10,%ymm3,%ymm3 1075299481Sjkim vpaddq %ymm11,%ymm4,%ymm4 1076299481Sjkim 1077299481Sjkim vpsrlq $29,%ymm0,%ymm12 1078299481Sjkim vpand %ymm15,%ymm0,%ymm0 1079299481Sjkim vpsrlq $29,%ymm1,%ymm13 1080299481Sjkim vpand %ymm15,%ymm1,%ymm1 1081299481Sjkim vpsrlq $29,%ymm2,%ymm10 1082299481Sjkim vpermq $0x93,%ymm12,%ymm12 1083299481Sjkim vpand %ymm15,%ymm2,%ymm2 1084299481Sjkim vpsrlq $29,%ymm3,%ymm11 1085299481Sjkim vpermq $0x93,%ymm13,%ymm13 1086299481Sjkim vpand %ymm15,%ymm3,%ymm3 1087299481Sjkim vpermq $0x93,%ymm10,%ymm10 1088299481Sjkim 1089299481Sjkim vpblendd $3,%ymm14,%ymm12,%ymm9 1090299481Sjkim vpermq $0x93,%ymm11,%ymm11 1091299481Sjkim vpblendd $3,%ymm12,%ymm13,%ymm12 1092299481Sjkim vpaddq %ymm9,%ymm0,%ymm0 1093299481Sjkim vpblendd $3,%ymm13,%ymm10,%ymm13 1094299481Sjkim vpaddq %ymm12,%ymm1,%ymm1 1095299481Sjkim vpblendd $3,%ymm10,%ymm11,%ymm10 1096299481Sjkim vpaddq %ymm13,%ymm2,%ymm2 1097299481Sjkim vpblendd $3,%ymm11,%ymm14,%ymm11 1098299481Sjkim vpaddq %ymm10,%ymm3,%ymm3 1099299481Sjkim vpaddq %ymm11,%ymm4,%ymm4 1100299481Sjkim 1101299481Sjkim vmovdqu %ymm0,0-128(%rdi) 1102299481Sjkim vmovdqu %ymm1,32-128(%rdi) 1103299481Sjkim vmovdqu %ymm2,64-128(%rdi) 1104299481Sjkim vmovdqu %ymm3,96-128(%rdi) 1105299481Sjkim vpsrlq $29,%ymm4,%ymm12 1106299481Sjkim vpand %ymm15,%ymm4,%ymm4 1107299481Sjkim vpsrlq $29,%ymm5,%ymm13 1108299481Sjkim vpand %ymm15,%ymm5,%ymm5 1109299481Sjkim vpsrlq $29,%ymm6,%ymm10 1110299481Sjkim vpermq $0x93,%ymm12,%ymm12 1111299481Sjkim vpand %ymm15,%ymm6,%ymm6 1112299481Sjkim vpsrlq $29,%ymm7,%ymm11 1113299481Sjkim vpermq $0x93,%ymm13,%ymm13 1114299481Sjkim vpand %ymm15,%ymm7,%ymm7 1115299481Sjkim vpsrlq $29,%ymm8,%ymm0 1116299481Sjkim vpermq $0x93,%ymm10,%ymm10 1117299481Sjkim vpand %ymm15,%ymm8,%ymm8 1118299481Sjkim vpermq $0x93,%ymm11,%ymm11 1119299481Sjkim 1120299481Sjkim vpblendd $3,%ymm14,%ymm12,%ymm9 1121299481Sjkim vpermq $0x93,%ymm0,%ymm0 1122299481Sjkim vpblendd $3,%ymm12,%ymm13,%ymm12 1123299481Sjkim vpaddq %ymm9,%ymm4,%ymm4 1124299481Sjkim vpblendd $3,%ymm13,%ymm10,%ymm13 1125299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 1126299481Sjkim vpblendd $3,%ymm10,%ymm11,%ymm10 1127299481Sjkim vpaddq %ymm13,%ymm6,%ymm6 1128299481Sjkim vpblendd $3,%ymm11,%ymm0,%ymm11 1129299481Sjkim vpaddq %ymm10,%ymm7,%ymm7 1130299481Sjkim vpaddq %ymm11,%ymm8,%ymm8 1131299481Sjkim 1132299481Sjkim vpsrlq $29,%ymm4,%ymm12 1133299481Sjkim vpand %ymm15,%ymm4,%ymm4 1134299481Sjkim vpsrlq $29,%ymm5,%ymm13 1135299481Sjkim vpand %ymm15,%ymm5,%ymm5 1136299481Sjkim vpsrlq $29,%ymm6,%ymm10 1137299481Sjkim vpermq $0x93,%ymm12,%ymm12 1138299481Sjkim vpand %ymm15,%ymm6,%ymm6 1139299481Sjkim vpsrlq $29,%ymm7,%ymm11 1140299481Sjkim vpermq $0x93,%ymm13,%ymm13 1141299481Sjkim vpand %ymm15,%ymm7,%ymm7 1142299481Sjkim vpsrlq $29,%ymm8,%ymm0 1143299481Sjkim vpermq $0x93,%ymm10,%ymm10 1144299481Sjkim vpand %ymm15,%ymm8,%ymm8 1145299481Sjkim vpermq $0x93,%ymm11,%ymm11 1146299481Sjkim 1147299481Sjkim vpblendd $3,%ymm14,%ymm12,%ymm9 1148299481Sjkim vpermq $0x93,%ymm0,%ymm0 1149299481Sjkim vpblendd $3,%ymm12,%ymm13,%ymm12 1150299481Sjkim vpaddq %ymm9,%ymm4,%ymm4 1151299481Sjkim vpblendd $3,%ymm13,%ymm10,%ymm13 1152299481Sjkim vpaddq %ymm12,%ymm5,%ymm5 1153299481Sjkim vpblendd $3,%ymm10,%ymm11,%ymm10 1154299481Sjkim vpaddq %ymm13,%ymm6,%ymm6 1155299481Sjkim vpblendd $3,%ymm11,%ymm0,%ymm11 1156299481Sjkim vpaddq %ymm10,%ymm7,%ymm7 1157299481Sjkim vpaddq %ymm11,%ymm8,%ymm8 1158299481Sjkim 1159299481Sjkim vmovdqu %ymm4,128-128(%rdi) 1160299481Sjkim vmovdqu %ymm5,160-128(%rdi) 1161299481Sjkim vmovdqu %ymm6,192-128(%rdi) 1162299481Sjkim vmovdqu %ymm7,224-128(%rdi) 1163299481Sjkim vmovdqu %ymm8,256-128(%rdi) 1164299481Sjkim vzeroupper 1165299481Sjkim 1166299481Sjkim movq %rbp,%rax 1167299481Sjkim movq -48(%rax),%r15 1168299481Sjkim movq -40(%rax),%r14 1169299481Sjkim movq -32(%rax),%r13 1170299481Sjkim movq -24(%rax),%r12 1171299481Sjkim movq -16(%rax),%rbp 1172299481Sjkim movq -8(%rax),%rbx 1173299481Sjkim leaq (%rax),%rsp 1174299481Sjkim.Lmul_1024_epilogue: 1175299481Sjkim .byte 0xf3,0xc3 1176299481Sjkim.size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2 1177299481Sjkim.globl rsaz_1024_red2norm_avx2 1178299481Sjkim.type rsaz_1024_red2norm_avx2,@function 1179299481Sjkim.align 32 1180299481Sjkimrsaz_1024_red2norm_avx2: 1181299481Sjkim subq $-128,%rsi 1182299481Sjkim xorq %rax,%rax 1183299481Sjkim movq -128(%rsi),%r8 1184299481Sjkim movq -120(%rsi),%r9 1185299481Sjkim movq -112(%rsi),%r10 1186299481Sjkim shlq $0,%r8 1187299481Sjkim shlq $29,%r9 1188299481Sjkim movq %r10,%r11 1189299481Sjkim shlq $58,%r10 1190299481Sjkim shrq $6,%r11 1191299481Sjkim addq %r8,%rax 1192299481Sjkim addq %r9,%rax 1193299481Sjkim addq %r10,%rax 1194299481Sjkim adcq $0,%r11 1195299481Sjkim movq %rax,0(%rdi) 1196299481Sjkim movq %r11,%rax 1197299481Sjkim movq -104(%rsi),%r8 1198299481Sjkim movq -96(%rsi),%r9 1199299481Sjkim shlq $23,%r8 1200299481Sjkim movq %r9,%r10 1201299481Sjkim shlq $52,%r9 1202299481Sjkim shrq $12,%r10 1203299481Sjkim addq %r8,%rax 1204299481Sjkim addq %r9,%rax 1205299481Sjkim adcq $0,%r10 1206299481Sjkim movq %rax,8(%rdi) 1207299481Sjkim movq %r10,%rax 1208299481Sjkim movq -88(%rsi),%r11 1209299481Sjkim movq -80(%rsi),%r8 1210299481Sjkim shlq $17,%r11 1211299481Sjkim movq %r8,%r9 1212299481Sjkim shlq $46,%r8 1213299481Sjkim shrq $18,%r9 1214299481Sjkim addq %r11,%rax 1215299481Sjkim addq %r8,%rax 1216299481Sjkim adcq $0,%r9 1217299481Sjkim movq %rax,16(%rdi) 1218299481Sjkim movq %r9,%rax 1219299481Sjkim movq -72(%rsi),%r10 1220299481Sjkim movq -64(%rsi),%r11 1221299481Sjkim shlq $11,%r10 1222299481Sjkim movq %r11,%r8 1223299481Sjkim shlq $40,%r11 1224299481Sjkim shrq $24,%r8 1225299481Sjkim addq %r10,%rax 1226299481Sjkim addq %r11,%rax 1227299481Sjkim adcq $0,%r8 1228299481Sjkim movq %rax,24(%rdi) 1229299481Sjkim movq %r8,%rax 1230299481Sjkim movq -56(%rsi),%r9 1231299481Sjkim movq -48(%rsi),%r10 1232299481Sjkim movq -40(%rsi),%r11 1233299481Sjkim shlq $5,%r9 1234299481Sjkim shlq $34,%r10 1235299481Sjkim movq %r11,%r8 1236299481Sjkim shlq $63,%r11 1237299481Sjkim shrq $1,%r8 1238299481Sjkim addq %r9,%rax 1239299481Sjkim addq %r10,%rax 1240299481Sjkim addq %r11,%rax 1241299481Sjkim adcq $0,%r8 1242299481Sjkim movq %rax,32(%rdi) 1243299481Sjkim movq %r8,%rax 1244299481Sjkim movq -32(%rsi),%r9 1245299481Sjkim movq -24(%rsi),%r10 1246299481Sjkim shlq $28,%r9 1247299481Sjkim movq %r10,%r11 1248299481Sjkim shlq $57,%r10 1249299481Sjkim shrq $7,%r11 1250299481Sjkim addq %r9,%rax 1251299481Sjkim addq %r10,%rax 1252299481Sjkim adcq $0,%r11 1253299481Sjkim movq %rax,40(%rdi) 1254299481Sjkim movq %r11,%rax 1255299481Sjkim movq -16(%rsi),%r8 1256299481Sjkim movq -8(%rsi),%r9 1257299481Sjkim shlq $22,%r8 1258299481Sjkim movq %r9,%r10 1259299481Sjkim shlq $51,%r9 1260299481Sjkim shrq $13,%r10 1261299481Sjkim addq %r8,%rax 1262299481Sjkim addq %r9,%rax 1263299481Sjkim adcq $0,%r10 1264299481Sjkim movq %rax,48(%rdi) 1265299481Sjkim movq %r10,%rax 1266299481Sjkim movq 0(%rsi),%r11 1267299481Sjkim movq 8(%rsi),%r8 1268299481Sjkim shlq $16,%r11 1269299481Sjkim movq %r8,%r9 1270299481Sjkim shlq $45,%r8 1271299481Sjkim shrq $19,%r9 1272299481Sjkim addq %r11,%rax 1273299481Sjkim addq %r8,%rax 1274299481Sjkim adcq $0,%r9 1275299481Sjkim movq %rax,56(%rdi) 1276299481Sjkim movq %r9,%rax 1277299481Sjkim movq 16(%rsi),%r10 1278299481Sjkim movq 24(%rsi),%r11 1279299481Sjkim shlq $10,%r10 1280299481Sjkim movq %r11,%r8 1281299481Sjkim shlq $39,%r11 1282299481Sjkim shrq $25,%r8 1283299481Sjkim addq %r10,%rax 1284299481Sjkim addq %r11,%rax 1285299481Sjkim adcq $0,%r8 1286299481Sjkim movq %rax,64(%rdi) 1287299481Sjkim movq %r8,%rax 1288299481Sjkim movq 32(%rsi),%r9 1289299481Sjkim movq 40(%rsi),%r10 1290299481Sjkim movq 48(%rsi),%r11 1291299481Sjkim shlq $4,%r9 1292299481Sjkim shlq $33,%r10 1293299481Sjkim movq %r11,%r8 1294299481Sjkim shlq $62,%r11 1295299481Sjkim shrq $2,%r8 1296299481Sjkim addq %r9,%rax 1297299481Sjkim addq %r10,%rax 1298299481Sjkim addq %r11,%rax 1299299481Sjkim adcq $0,%r8 1300299481Sjkim movq %rax,72(%rdi) 1301299481Sjkim movq %r8,%rax 1302299481Sjkim movq 56(%rsi),%r9 1303299481Sjkim movq 64(%rsi),%r10 1304299481Sjkim shlq $27,%r9 1305299481Sjkim movq %r10,%r11 1306299481Sjkim shlq $56,%r10 1307299481Sjkim shrq $8,%r11 1308299481Sjkim addq %r9,%rax 1309299481Sjkim addq %r10,%rax 1310299481Sjkim adcq $0,%r11 1311299481Sjkim movq %rax,80(%rdi) 1312299481Sjkim movq %r11,%rax 1313299481Sjkim movq 72(%rsi),%r8 1314299481Sjkim movq 80(%rsi),%r9 1315299481Sjkim shlq $21,%r8 1316299481Sjkim movq %r9,%r10 1317299481Sjkim shlq $50,%r9 1318299481Sjkim shrq $14,%r10 1319299481Sjkim addq %r8,%rax 1320299481Sjkim addq %r9,%rax 1321299481Sjkim adcq $0,%r10 1322299481Sjkim movq %rax,88(%rdi) 1323299481Sjkim movq %r10,%rax 1324299481Sjkim movq 88(%rsi),%r11 1325299481Sjkim movq 96(%rsi),%r8 1326299481Sjkim shlq $15,%r11 1327299481Sjkim movq %r8,%r9 1328299481Sjkim shlq $44,%r8 1329299481Sjkim shrq $20,%r9 1330299481Sjkim addq %r11,%rax 1331299481Sjkim addq %r8,%rax 1332299481Sjkim adcq $0,%r9 1333299481Sjkim movq %rax,96(%rdi) 1334299481Sjkim movq %r9,%rax 1335299481Sjkim movq 104(%rsi),%r10 1336299481Sjkim movq 112(%rsi),%r11 1337299481Sjkim shlq $9,%r10 1338299481Sjkim movq %r11,%r8 1339299481Sjkim shlq $38,%r11 1340299481Sjkim shrq $26,%r8 1341299481Sjkim addq %r10,%rax 1342299481Sjkim addq %r11,%rax 1343299481Sjkim adcq $0,%r8 1344299481Sjkim movq %rax,104(%rdi) 1345299481Sjkim movq %r8,%rax 1346299481Sjkim movq 120(%rsi),%r9 1347299481Sjkim movq 128(%rsi),%r10 1348299481Sjkim movq 136(%rsi),%r11 1349299481Sjkim shlq $3,%r9 1350299481Sjkim shlq $32,%r10 1351299481Sjkim movq %r11,%r8 1352299481Sjkim shlq $61,%r11 1353299481Sjkim shrq $3,%r8 1354299481Sjkim addq %r9,%rax 1355299481Sjkim addq %r10,%rax 1356299481Sjkim addq %r11,%rax 1357299481Sjkim adcq $0,%r8 1358299481Sjkim movq %rax,112(%rdi) 1359299481Sjkim movq %r8,%rax 1360299481Sjkim movq 144(%rsi),%r9 1361299481Sjkim movq 152(%rsi),%r10 1362299481Sjkim shlq $26,%r9 1363299481Sjkim movq %r10,%r11 1364299481Sjkim shlq $55,%r10 1365299481Sjkim shrq $9,%r11 1366299481Sjkim addq %r9,%rax 1367299481Sjkim addq %r10,%rax 1368299481Sjkim adcq $0,%r11 1369299481Sjkim movq %rax,120(%rdi) 1370299481Sjkim movq %r11,%rax 1371299481Sjkim .byte 0xf3,0xc3 1372299481Sjkim.size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2 1373299481Sjkim 1374299481Sjkim.globl rsaz_1024_norm2red_avx2 1375299481Sjkim.type rsaz_1024_norm2red_avx2,@function 1376299481Sjkim.align 32 1377290207Sjkimrsaz_1024_norm2red_avx2: 1378299481Sjkim subq $-128,%rdi 1379299481Sjkim movq (%rsi),%r8 1380299481Sjkim movl $0x1fffffff,%eax 1381299481Sjkim movq 8(%rsi),%r9 1382299481Sjkim movq %r8,%r11 1383299481Sjkim shrq $0,%r11 1384299481Sjkim andq %rax,%r11 1385299481Sjkim movq %r11,-128(%rdi) 1386299481Sjkim movq %r8,%r10 1387299481Sjkim shrq $29,%r10 1388299481Sjkim andq %rax,%r10 1389299481Sjkim movq %r10,-120(%rdi) 1390299481Sjkim shrdq $58,%r9,%r8 1391299481Sjkim andq %rax,%r8 1392299481Sjkim movq %r8,-112(%rdi) 1393299481Sjkim movq 16(%rsi),%r10 1394299481Sjkim movq %r9,%r8 1395299481Sjkim shrq $23,%r8 1396299481Sjkim andq %rax,%r8 1397299481Sjkim movq %r8,-104(%rdi) 1398299481Sjkim shrdq $52,%r10,%r9 1399299481Sjkim andq %rax,%r9 1400299481Sjkim movq %r9,-96(%rdi) 1401299481Sjkim movq 24(%rsi),%r11 1402299481Sjkim movq %r10,%r9 1403299481Sjkim shrq $17,%r9 1404299481Sjkim andq %rax,%r9 1405299481Sjkim movq %r9,-88(%rdi) 1406299481Sjkim shrdq $46,%r11,%r10 1407299481Sjkim andq %rax,%r10 1408299481Sjkim movq %r10,-80(%rdi) 1409299481Sjkim movq 32(%rsi),%r8 1410299481Sjkim movq %r11,%r10 1411299481Sjkim shrq $11,%r10 1412299481Sjkim andq %rax,%r10 1413299481Sjkim movq %r10,-72(%rdi) 1414299481Sjkim shrdq $40,%r8,%r11 1415299481Sjkim andq %rax,%r11 1416299481Sjkim movq %r11,-64(%rdi) 1417299481Sjkim movq 40(%rsi),%r9 1418299481Sjkim movq %r8,%r11 1419299481Sjkim shrq $5,%r11 1420299481Sjkim andq %rax,%r11 1421299481Sjkim movq %r11,-56(%rdi) 1422299481Sjkim movq %r8,%r10 1423299481Sjkim shrq $34,%r10 1424299481Sjkim andq %rax,%r10 1425299481Sjkim movq %r10,-48(%rdi) 1426299481Sjkim shrdq $63,%r9,%r8 1427299481Sjkim andq %rax,%r8 1428299481Sjkim movq %r8,-40(%rdi) 1429299481Sjkim movq 48(%rsi),%r10 1430299481Sjkim movq %r9,%r8 1431299481Sjkim shrq $28,%r8 1432299481Sjkim andq %rax,%r8 1433299481Sjkim movq %r8,-32(%rdi) 1434299481Sjkim shrdq $57,%r10,%r9 1435299481Sjkim andq %rax,%r9 1436299481Sjkim movq %r9,-24(%rdi) 1437299481Sjkim movq 56(%rsi),%r11 1438299481Sjkim movq %r10,%r9 1439299481Sjkim shrq $22,%r9 1440299481Sjkim andq %rax,%r9 1441299481Sjkim movq %r9,-16(%rdi) 1442299481Sjkim shrdq $51,%r11,%r10 1443299481Sjkim andq %rax,%r10 1444299481Sjkim movq %r10,-8(%rdi) 1445299481Sjkim movq 64(%rsi),%r8 1446299481Sjkim movq %r11,%r10 1447299481Sjkim shrq $16,%r10 1448299481Sjkim andq %rax,%r10 1449299481Sjkim movq %r10,0(%rdi) 1450299481Sjkim shrdq $45,%r8,%r11 1451299481Sjkim andq %rax,%r11 1452299481Sjkim movq %r11,8(%rdi) 1453299481Sjkim movq 72(%rsi),%r9 1454299481Sjkim movq %r8,%r11 1455299481Sjkim shrq $10,%r11 1456299481Sjkim andq %rax,%r11 1457299481Sjkim movq %r11,16(%rdi) 1458299481Sjkim shrdq $39,%r9,%r8 1459299481Sjkim andq %rax,%r8 1460299481Sjkim movq %r8,24(%rdi) 1461299481Sjkim movq 80(%rsi),%r10 1462299481Sjkim movq %r9,%r8 1463299481Sjkim shrq $4,%r8 1464299481Sjkim andq %rax,%r8 1465299481Sjkim movq %r8,32(%rdi) 1466299481Sjkim movq %r9,%r11 1467299481Sjkim shrq $33,%r11 1468299481Sjkim andq %rax,%r11 1469299481Sjkim movq %r11,40(%rdi) 1470299481Sjkim shrdq $62,%r10,%r9 1471299481Sjkim andq %rax,%r9 1472299481Sjkim movq %r9,48(%rdi) 1473299481Sjkim movq 88(%rsi),%r11 1474299481Sjkim movq %r10,%r9 1475299481Sjkim shrq $27,%r9 1476299481Sjkim andq %rax,%r9 1477299481Sjkim movq %r9,56(%rdi) 1478299481Sjkim shrdq $56,%r11,%r10 1479299481Sjkim andq %rax,%r10 1480299481Sjkim movq %r10,64(%rdi) 1481299481Sjkim movq 96(%rsi),%r8 1482299481Sjkim movq %r11,%r10 1483299481Sjkim shrq $21,%r10 1484299481Sjkim andq %rax,%r10 1485299481Sjkim movq %r10,72(%rdi) 1486299481Sjkim shrdq $50,%r8,%r11 1487299481Sjkim andq %rax,%r11 1488299481Sjkim movq %r11,80(%rdi) 1489299481Sjkim movq 104(%rsi),%r9 1490299481Sjkim movq %r8,%r11 1491299481Sjkim shrq $15,%r11 1492299481Sjkim andq %rax,%r11 1493299481Sjkim movq %r11,88(%rdi) 1494299481Sjkim shrdq $44,%r9,%r8 1495299481Sjkim andq %rax,%r8 1496299481Sjkim movq %r8,96(%rdi) 1497299481Sjkim movq 112(%rsi),%r10 1498299481Sjkim movq %r9,%r8 1499299481Sjkim shrq $9,%r8 1500299481Sjkim andq %rax,%r8 1501299481Sjkim movq %r8,104(%rdi) 1502299481Sjkim shrdq $38,%r10,%r9 1503299481Sjkim andq %rax,%r9 1504299481Sjkim movq %r9,112(%rdi) 1505299481Sjkim movq 120(%rsi),%r11 1506299481Sjkim movq %r10,%r9 1507299481Sjkim shrq $3,%r9 1508299481Sjkim andq %rax,%r9 1509299481Sjkim movq %r9,120(%rdi) 1510299481Sjkim movq %r10,%r8 1511299481Sjkim shrq $32,%r8 1512299481Sjkim andq %rax,%r8 1513299481Sjkim movq %r8,128(%rdi) 1514299481Sjkim shrdq $61,%r11,%r10 1515299481Sjkim andq %rax,%r10 1516299481Sjkim movq %r10,136(%rdi) 1517299481Sjkim xorq %r8,%r8 1518299481Sjkim movq %r11,%r10 1519299481Sjkim shrq $26,%r10 1520299481Sjkim andq %rax,%r10 1521299481Sjkim movq %r10,144(%rdi) 1522299481Sjkim shrdq $55,%r8,%r11 1523299481Sjkim andq %rax,%r11 1524299481Sjkim movq %r11,152(%rdi) 1525299481Sjkim movq %r8,160(%rdi) 1526299481Sjkim movq %r8,168(%rdi) 1527299481Sjkim movq %r8,176(%rdi) 1528299481Sjkim movq %r8,184(%rdi) 1529299481Sjkim .byte 0xf3,0xc3 1530299481Sjkim.size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2 1531299481Sjkim.globl rsaz_1024_scatter5_avx2 1532299481Sjkim.type rsaz_1024_scatter5_avx2,@function 1533299481Sjkim.align 32 1534290207Sjkimrsaz_1024_scatter5_avx2: 1535299481Sjkim vzeroupper 1536299481Sjkim vmovdqu .Lscatter_permd(%rip),%ymm5 1537299481Sjkim shll $4,%edx 1538299481Sjkim leaq (%rdi,%rdx,1),%rdi 1539299481Sjkim movl $9,%eax 1540299481Sjkim jmp .Loop_scatter_1024 1541299481Sjkim 1542299481Sjkim.align 32 1543299481Sjkim.Loop_scatter_1024: 1544299481Sjkim vmovdqu (%rsi),%ymm0 1545299481Sjkim leaq 32(%rsi),%rsi 1546299481Sjkim vpermd %ymm0,%ymm5,%ymm0 1547299481Sjkim vmovdqu %xmm0,(%rdi) 1548299481Sjkim leaq 512(%rdi),%rdi 1549299481Sjkim decl %eax 1550299481Sjkim jnz .Loop_scatter_1024 1551299481Sjkim 1552299481Sjkim vzeroupper 1553299481Sjkim .byte 0xf3,0xc3 1554299481Sjkim.size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2 1555299481Sjkim 1556299481Sjkim.globl rsaz_1024_gather5_avx2 1557299481Sjkim.type rsaz_1024_gather5_avx2,@function 1558299481Sjkim.align 32 1559290207Sjkimrsaz_1024_gather5_avx2: 1560299481Sjkim vzeroupper 1561299481Sjkim movq %rsp,%r11 1562299481Sjkim leaq -256(%rsp),%rsp 1563299481Sjkim andq $-32,%rsp 1564299481Sjkim leaq .Linc(%rip),%r10 1565299481Sjkim leaq -128(%rsp),%rax 1566299481Sjkim 1567299481Sjkim vmovd %edx,%xmm4 1568299481Sjkim vmovdqa (%r10),%ymm0 1569299481Sjkim vmovdqa 32(%r10),%ymm1 1570299481Sjkim vmovdqa 64(%r10),%ymm5 1571299481Sjkim vpbroadcastd %xmm4,%ymm4 1572299481Sjkim 1573299481Sjkim vpaddd %ymm5,%ymm0,%ymm2 1574299481Sjkim vpcmpeqd %ymm4,%ymm0,%ymm0 1575299481Sjkim vpaddd %ymm5,%ymm1,%ymm3 1576299481Sjkim vpcmpeqd %ymm4,%ymm1,%ymm1 1577299481Sjkim vmovdqa %ymm0,0+128(%rax) 1578299481Sjkim vpaddd %ymm5,%ymm2,%ymm0 1579299481Sjkim vpcmpeqd %ymm4,%ymm2,%ymm2 1580299481Sjkim vmovdqa %ymm1,32+128(%rax) 1581299481Sjkim vpaddd %ymm5,%ymm3,%ymm1 1582299481Sjkim vpcmpeqd %ymm4,%ymm3,%ymm3 1583299481Sjkim vmovdqa %ymm2,64+128(%rax) 1584299481Sjkim vpaddd %ymm5,%ymm0,%ymm2 1585299481Sjkim vpcmpeqd %ymm4,%ymm0,%ymm0 1586299481Sjkim vmovdqa %ymm3,96+128(%rax) 1587299481Sjkim vpaddd %ymm5,%ymm1,%ymm3 1588299481Sjkim vpcmpeqd %ymm4,%ymm1,%ymm1 1589299481Sjkim vmovdqa %ymm0,128+128(%rax) 1590299481Sjkim vpaddd %ymm5,%ymm2,%ymm8 1591299481Sjkim vpcmpeqd %ymm4,%ymm2,%ymm2 1592299481Sjkim vmovdqa %ymm1,160+128(%rax) 1593299481Sjkim vpaddd %ymm5,%ymm3,%ymm9 1594299481Sjkim vpcmpeqd %ymm4,%ymm3,%ymm3 1595299481Sjkim vmovdqa %ymm2,192+128(%rax) 1596299481Sjkim vpaddd %ymm5,%ymm8,%ymm10 1597299481Sjkim vpcmpeqd %ymm4,%ymm8,%ymm8 1598299481Sjkim vmovdqa %ymm3,224+128(%rax) 1599299481Sjkim vpaddd %ymm5,%ymm9,%ymm11 1600299481Sjkim vpcmpeqd %ymm4,%ymm9,%ymm9 1601299481Sjkim vpaddd %ymm5,%ymm10,%ymm12 1602299481Sjkim vpcmpeqd %ymm4,%ymm10,%ymm10 1603299481Sjkim vpaddd %ymm5,%ymm11,%ymm13 1604299481Sjkim vpcmpeqd %ymm4,%ymm11,%ymm11 1605299481Sjkim vpaddd %ymm5,%ymm12,%ymm14 1606299481Sjkim vpcmpeqd %ymm4,%ymm12,%ymm12 1607299481Sjkim vpaddd %ymm5,%ymm13,%ymm15 1608299481Sjkim vpcmpeqd %ymm4,%ymm13,%ymm13 1609299481Sjkim vpcmpeqd %ymm4,%ymm14,%ymm14 1610299481Sjkim vpcmpeqd %ymm4,%ymm15,%ymm15 1611299481Sjkim 1612299481Sjkim vmovdqa -32(%r10),%ymm7 1613299481Sjkim leaq 128(%rsi),%rsi 1614299481Sjkim movl $9,%edx 1615299481Sjkim 1616299481Sjkim.Loop_gather_1024: 1617299481Sjkim vmovdqa 0-128(%rsi),%ymm0 1618299481Sjkim vmovdqa 32-128(%rsi),%ymm1 1619299481Sjkim vmovdqa 64-128(%rsi),%ymm2 1620299481Sjkim vmovdqa 96-128(%rsi),%ymm3 1621299481Sjkim vpand 0+128(%rax),%ymm0,%ymm0 1622299481Sjkim vpand 32+128(%rax),%ymm1,%ymm1 1623299481Sjkim vpand 64+128(%rax),%ymm2,%ymm2 1624299481Sjkim vpor %ymm0,%ymm1,%ymm4 1625299481Sjkim vpand 96+128(%rax),%ymm3,%ymm3 1626299481Sjkim vmovdqa 128-128(%rsi),%ymm0 1627299481Sjkim vmovdqa 160-128(%rsi),%ymm1 1628299481Sjkim vpor %ymm2,%ymm3,%ymm5 1629299481Sjkim vmovdqa 192-128(%rsi),%ymm2 1630299481Sjkim vmovdqa 224-128(%rsi),%ymm3 1631299481Sjkim vpand 128+128(%rax),%ymm0,%ymm0 1632299481Sjkim vpand 160+128(%rax),%ymm1,%ymm1 1633299481Sjkim vpand 192+128(%rax),%ymm2,%ymm2 1634299481Sjkim vpor %ymm0,%ymm4,%ymm4 1635299481Sjkim vpand 224+128(%rax),%ymm3,%ymm3 1636299481Sjkim vpand 256-128(%rsi),%ymm8,%ymm0 1637299481Sjkim vpor %ymm1,%ymm5,%ymm5 1638299481Sjkim vpand 288-128(%rsi),%ymm9,%ymm1 1639299481Sjkim vpor %ymm2,%ymm4,%ymm4 1640299481Sjkim vpand 320-128(%rsi),%ymm10,%ymm2 1641299481Sjkim vpor %ymm3,%ymm5,%ymm5 1642299481Sjkim vpand 352-128(%rsi),%ymm11,%ymm3 1643299481Sjkim vpor %ymm0,%ymm4,%ymm4 1644299481Sjkim vpand 384-128(%rsi),%ymm12,%ymm0 1645299481Sjkim vpor %ymm1,%ymm5,%ymm5 1646299481Sjkim vpand 416-128(%rsi),%ymm13,%ymm1 1647299481Sjkim vpor %ymm2,%ymm4,%ymm4 1648299481Sjkim vpand 448-128(%rsi),%ymm14,%ymm2 1649299481Sjkim vpor %ymm3,%ymm5,%ymm5 1650299481Sjkim vpand 480-128(%rsi),%ymm15,%ymm3 1651299481Sjkim leaq 512(%rsi),%rsi 1652299481Sjkim vpor %ymm0,%ymm4,%ymm4 1653299481Sjkim vpor %ymm1,%ymm5,%ymm5 1654299481Sjkim vpor %ymm2,%ymm4,%ymm4 1655299481Sjkim vpor %ymm3,%ymm5,%ymm5 1656299481Sjkim 1657299481Sjkim vpor %ymm5,%ymm4,%ymm4 1658299481Sjkim vextracti128 $1,%ymm4,%xmm5 1659299481Sjkim vpor %xmm4,%xmm5,%xmm5 1660299481Sjkim vpermd %ymm5,%ymm7,%ymm5 1661299481Sjkim vmovdqu %ymm5,(%rdi) 1662299481Sjkim leaq 32(%rdi),%rdi 1663299481Sjkim decl %edx 1664299481Sjkim jnz .Loop_gather_1024 1665299481Sjkim 1666299481Sjkim vpxor %ymm0,%ymm0,%ymm0 1667299481Sjkim vmovdqu %ymm0,(%rdi) 1668299481Sjkim vzeroupper 1669299481Sjkim leaq (%r11),%rsp 1670290207Sjkim .byte 0xf3,0xc3 1671299481Sjkim.size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2 1672299481Sjkim 1673299481Sjkim.globl rsaz_avx2_eligible 1674299481Sjkim.type rsaz_avx2_eligible,@function 1675299481Sjkim.align 32 1676299481Sjkimrsaz_avx2_eligible: 1677299481Sjkim movl OPENSSL_ia32cap_P+8(%rip),%eax 1678299481Sjkim movl $524544,%ecx 1679299481Sjkim movl $0,%edx 1680299481Sjkim andl %eax,%ecx 1681299481Sjkim cmpl $524544,%ecx 1682299481Sjkim cmovel %edx,%eax 1683299481Sjkim andl $32,%eax 1684299481Sjkim shrl $5,%eax 1685299481Sjkim .byte 0xf3,0xc3 1686299481Sjkim.size rsaz_avx2_eligible,.-rsaz_avx2_eligible 1687299481Sjkim 1688299481Sjkim.align 64 1689299481Sjkim.Land_mask: 1690326663Sjkim.quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff 1691299481Sjkim.Lscatter_permd: 1692299481Sjkim.long 0,2,4,6,7,7,7,7 1693299481Sjkim.Lgather_permd: 1694299481Sjkim.long 0,7,1,7,2,7,3,7 1695299481Sjkim.Linc: 1696299481Sjkim.long 0,0,0,0, 1,1,1,1 1697299481Sjkim.long 2,2,2,2, 3,3,3,3 1698299481Sjkim.long 4,4,4,4, 4,4,4,4 1699299481Sjkim.align 64 1700