Path: blob/main/sys/crypto/openssl/amd64/rsaz-avx2.S
39482 views
/* Do not modify. This file is auto-generated from rsaz-avx2.pl. */1.text23.globl rsaz_1024_sqr_avx24.type rsaz_1024_sqr_avx2,@function5.align 646rsaz_1024_sqr_avx2:7.cfi_startproc8leaq (%rsp),%rax9.cfi_def_cfa_register %rax10pushq %rbx11.cfi_offset %rbx,-1612pushq %rbp13.cfi_offset %rbp,-2414pushq %r1215.cfi_offset %r12,-3216pushq %r1317.cfi_offset %r13,-4018pushq %r1419.cfi_offset %r14,-4820pushq %r1521.cfi_offset %r15,-5622vzeroupper23movq %rax,%rbp24.cfi_def_cfa_register %rbp25movq %rdx,%r1326subq $832,%rsp27movq %r13,%r1528subq $-128,%rdi29subq $-128,%rsi30subq $-128,%r133132andq $4095,%r1533addq $320,%r1534shrq $12,%r1535vpxor %ymm9,%ymm9,%ymm936jz .Lsqr_1024_no_n_copy373839404142subq $320,%rsp43vmovdqu 0-128(%r13),%ymm044andq $-2048,%rsp45vmovdqu 32-128(%r13),%ymm146vmovdqu 64-128(%r13),%ymm247vmovdqu 96-128(%r13),%ymm348vmovdqu 128-128(%r13),%ymm449vmovdqu 160-128(%r13),%ymm550vmovdqu 192-128(%r13),%ymm651vmovdqu 224-128(%r13),%ymm752vmovdqu 256-128(%r13),%ymm853leaq 832+128(%rsp),%r1354vmovdqu %ymm0,0-128(%r13)55vmovdqu %ymm1,32-128(%r13)56vmovdqu %ymm2,64-128(%r13)57vmovdqu %ymm3,96-128(%r13)58vmovdqu %ymm4,128-128(%r13)59vmovdqu %ymm5,160-128(%r13)60vmovdqu %ymm6,192-128(%r13)61vmovdqu %ymm7,224-128(%r13)62vmovdqu %ymm8,256-128(%r13)63vmovdqu %ymm9,288-128(%r13)6465.Lsqr_1024_no_n_copy:66andq $-1024,%rsp6768vmovdqu 32-128(%rsi),%ymm169vmovdqu 64-128(%rsi),%ymm270vmovdqu 96-128(%rsi),%ymm371vmovdqu 128-128(%rsi),%ymm472vmovdqu 160-128(%rsi),%ymm573vmovdqu 192-128(%rsi),%ymm674vmovdqu 224-128(%rsi),%ymm775vmovdqu 256-128(%rsi),%ymm87677leaq 192(%rsp),%rbx78vmovdqu .Land_mask(%rip),%ymm1579jmp .LOOP_GRANDE_SQR_10248081.align 3282.LOOP_GRANDE_SQR_1024:83leaq 576+128(%rsp),%r984leaq 448(%rsp),%r128586878889vpaddq %ymm1,%ymm1,%ymm190vpbroadcastq 0-128(%rsi),%ymm1091vpaddq %ymm2,%ymm2,%ymm292vmovdqa %ymm1,0-128(%r9)93vpaddq %ymm3,%ymm3,%ymm394vmovdqa %ymm2,32-128(%r9)95vpaddq %ymm4,%ymm4,%ymm496vmovdqa %ymm3,64-128(%r9)97vpaddq %ymm5,%ymm5,%ymm598vmovdqa %ymm4,96-128(%r9)99vpaddq %ymm6,%ymm6,%ymm6100vmovdqa %ymm5,128-128(%r9)101vpaddq %ymm7,%ymm7,%ymm7102vmovdqa %ymm6,160-128(%r9)103vpaddq %ymm8,%ymm8,%ymm8104vmovdqa %ymm7,192-128(%r9)105vpxor %ymm9,%ymm9,%ymm9106vmovdqa %ymm8,224-128(%r9)107108vpmuludq 0-128(%rsi),%ymm10,%ymm0109vpbroadcastq 32-128(%rsi),%ymm11110vmovdqu %ymm9,288-192(%rbx)111vpmuludq %ymm10,%ymm1,%ymm1112vmovdqu %ymm9,320-448(%r12)113vpmuludq %ymm10,%ymm2,%ymm2114vmovdqu %ymm9,352-448(%r12)115vpmuludq %ymm10,%ymm3,%ymm3116vmovdqu %ymm9,384-448(%r12)117vpmuludq %ymm10,%ymm4,%ymm4118vmovdqu %ymm9,416-448(%r12)119vpmuludq %ymm10,%ymm5,%ymm5120vmovdqu %ymm9,448-448(%r12)121vpmuludq %ymm10,%ymm6,%ymm6122vmovdqu %ymm9,480-448(%r12)123vpmuludq %ymm10,%ymm7,%ymm7124vmovdqu %ymm9,512-448(%r12)125vpmuludq %ymm10,%ymm8,%ymm8126vpbroadcastq 64-128(%rsi),%ymm10127vmovdqu %ymm9,544-448(%r12)128129movq %rsi,%r15130movl $4,%r14d131jmp .Lsqr_entry_1024132.align 32133.LOOP_SQR_1024:134vpbroadcastq 32-128(%r15),%ymm11135vpmuludq 0-128(%rsi),%ymm10,%ymm0136vpaddq 0-192(%rbx),%ymm0,%ymm0137vpmuludq 0-128(%r9),%ymm10,%ymm1138vpaddq 32-192(%rbx),%ymm1,%ymm1139vpmuludq 32-128(%r9),%ymm10,%ymm2140vpaddq 64-192(%rbx),%ymm2,%ymm2141vpmuludq 64-128(%r9),%ymm10,%ymm3142vpaddq 96-192(%rbx),%ymm3,%ymm3143vpmuludq 96-128(%r9),%ymm10,%ymm4144vpaddq 128-192(%rbx),%ymm4,%ymm4145vpmuludq 128-128(%r9),%ymm10,%ymm5146vpaddq 160-192(%rbx),%ymm5,%ymm5147vpmuludq 160-128(%r9),%ymm10,%ymm6148vpaddq 192-192(%rbx),%ymm6,%ymm6149vpmuludq 192-128(%r9),%ymm10,%ymm7150vpaddq 224-192(%rbx),%ymm7,%ymm7151vpmuludq 224-128(%r9),%ymm10,%ymm8152vpbroadcastq 64-128(%r15),%ymm10153vpaddq 256-192(%rbx),%ymm8,%ymm8154.Lsqr_entry_1024:155vmovdqu %ymm0,0-192(%rbx)156vmovdqu %ymm1,32-192(%rbx)157158vpmuludq 32-128(%rsi),%ymm11,%ymm12159vpaddq %ymm12,%ymm2,%ymm2160vpmuludq 32-128(%r9),%ymm11,%ymm14161vpaddq %ymm14,%ymm3,%ymm3162vpmuludq 64-128(%r9),%ymm11,%ymm13163vpaddq %ymm13,%ymm4,%ymm4164vpmuludq 96-128(%r9),%ymm11,%ymm12165vpaddq %ymm12,%ymm5,%ymm5166vpmuludq 128-128(%r9),%ymm11,%ymm14167vpaddq %ymm14,%ymm6,%ymm6168vpmuludq 160-128(%r9),%ymm11,%ymm13169vpaddq %ymm13,%ymm7,%ymm7170vpmuludq 192-128(%r9),%ymm11,%ymm12171vpaddq %ymm12,%ymm8,%ymm8172vpmuludq 224-128(%r9),%ymm11,%ymm0173vpbroadcastq 96-128(%r15),%ymm11174vpaddq 288-192(%rbx),%ymm0,%ymm0175176vmovdqu %ymm2,64-192(%rbx)177vmovdqu %ymm3,96-192(%rbx)178179vpmuludq 64-128(%rsi),%ymm10,%ymm13180vpaddq %ymm13,%ymm4,%ymm4181vpmuludq 64-128(%r9),%ymm10,%ymm12182vpaddq %ymm12,%ymm5,%ymm5183vpmuludq 96-128(%r9),%ymm10,%ymm14184vpaddq %ymm14,%ymm6,%ymm6185vpmuludq 128-128(%r9),%ymm10,%ymm13186vpaddq %ymm13,%ymm7,%ymm7187vpmuludq 160-128(%r9),%ymm10,%ymm12188vpaddq %ymm12,%ymm8,%ymm8189vpmuludq 192-128(%r9),%ymm10,%ymm14190vpaddq %ymm14,%ymm0,%ymm0191vpmuludq 224-128(%r9),%ymm10,%ymm1192vpbroadcastq 128-128(%r15),%ymm10193vpaddq 320-448(%r12),%ymm1,%ymm1194195vmovdqu %ymm4,128-192(%rbx)196vmovdqu %ymm5,160-192(%rbx)197198vpmuludq 96-128(%rsi),%ymm11,%ymm12199vpaddq %ymm12,%ymm6,%ymm6200vpmuludq 96-128(%r9),%ymm11,%ymm14201vpaddq %ymm14,%ymm7,%ymm7202vpmuludq 128-128(%r9),%ymm11,%ymm13203vpaddq %ymm13,%ymm8,%ymm8204vpmuludq 160-128(%r9),%ymm11,%ymm12205vpaddq %ymm12,%ymm0,%ymm0206vpmuludq 192-128(%r9),%ymm11,%ymm14207vpaddq %ymm14,%ymm1,%ymm1208vpmuludq 224-128(%r9),%ymm11,%ymm2209vpbroadcastq 160-128(%r15),%ymm11210vpaddq 352-448(%r12),%ymm2,%ymm2211212vmovdqu %ymm6,192-192(%rbx)213vmovdqu %ymm7,224-192(%rbx)214215vpmuludq 128-128(%rsi),%ymm10,%ymm12216vpaddq %ymm12,%ymm8,%ymm8217vpmuludq 128-128(%r9),%ymm10,%ymm14218vpaddq %ymm14,%ymm0,%ymm0219vpmuludq 160-128(%r9),%ymm10,%ymm13220vpaddq %ymm13,%ymm1,%ymm1221vpmuludq 192-128(%r9),%ymm10,%ymm12222vpaddq %ymm12,%ymm2,%ymm2223vpmuludq 224-128(%r9),%ymm10,%ymm3224vpbroadcastq 192-128(%r15),%ymm10225vpaddq 384-448(%r12),%ymm3,%ymm3226227vmovdqu %ymm8,256-192(%rbx)228vmovdqu %ymm0,288-192(%rbx)229leaq 8(%rbx),%rbx230231vpmuludq 160-128(%rsi),%ymm11,%ymm13232vpaddq %ymm13,%ymm1,%ymm1233vpmuludq 160-128(%r9),%ymm11,%ymm12234vpaddq %ymm12,%ymm2,%ymm2235vpmuludq 192-128(%r9),%ymm11,%ymm14236vpaddq %ymm14,%ymm3,%ymm3237vpmuludq 224-128(%r9),%ymm11,%ymm4238vpbroadcastq 224-128(%r15),%ymm11239vpaddq 416-448(%r12),%ymm4,%ymm4240241vmovdqu %ymm1,320-448(%r12)242vmovdqu %ymm2,352-448(%r12)243244vpmuludq 192-128(%rsi),%ymm10,%ymm12245vpaddq %ymm12,%ymm3,%ymm3246vpmuludq 192-128(%r9),%ymm10,%ymm14247vpbroadcastq 256-128(%r15),%ymm0248vpaddq %ymm14,%ymm4,%ymm4249vpmuludq 224-128(%r9),%ymm10,%ymm5250vpbroadcastq 0+8-128(%r15),%ymm10251vpaddq 448-448(%r12),%ymm5,%ymm5252253vmovdqu %ymm3,384-448(%r12)254vmovdqu %ymm4,416-448(%r12)255leaq 8(%r15),%r15256257vpmuludq 224-128(%rsi),%ymm11,%ymm12258vpaddq %ymm12,%ymm5,%ymm5259vpmuludq 224-128(%r9),%ymm11,%ymm6260vpaddq 480-448(%r12),%ymm6,%ymm6261262vpmuludq 256-128(%rsi),%ymm0,%ymm7263vmovdqu %ymm5,448-448(%r12)264vpaddq 512-448(%r12),%ymm7,%ymm7265vmovdqu %ymm6,480-448(%r12)266vmovdqu %ymm7,512-448(%r12)267leaq 8(%r12),%r12268269decl %r14d270jnz .LOOP_SQR_1024271272vmovdqu 256(%rsp),%ymm8273vmovdqu 288(%rsp),%ymm1274vmovdqu 320(%rsp),%ymm2275leaq 192(%rsp),%rbx276277vpsrlq $29,%ymm8,%ymm14278vpand %ymm15,%ymm8,%ymm8279vpsrlq $29,%ymm1,%ymm11280vpand %ymm15,%ymm1,%ymm1281282vpermq $0x93,%ymm14,%ymm14283vpxor %ymm9,%ymm9,%ymm9284vpermq $0x93,%ymm11,%ymm11285286vpblendd $3,%ymm9,%ymm14,%ymm10287vpblendd $3,%ymm14,%ymm11,%ymm14288vpaddq %ymm10,%ymm8,%ymm8289vpblendd $3,%ymm11,%ymm9,%ymm11290vpaddq %ymm14,%ymm1,%ymm1291vpaddq %ymm11,%ymm2,%ymm2292vmovdqu %ymm1,288-192(%rbx)293vmovdqu %ymm2,320-192(%rbx)294295movq (%rsp),%rax296movq 8(%rsp),%r10297movq 16(%rsp),%r11298movq 24(%rsp),%r12299vmovdqu 32(%rsp),%ymm1300vmovdqu 64-192(%rbx),%ymm2301vmovdqu 96-192(%rbx),%ymm3302vmovdqu 128-192(%rbx),%ymm4303vmovdqu 160-192(%rbx),%ymm5304vmovdqu 192-192(%rbx),%ymm6305vmovdqu 224-192(%rbx),%ymm7306307movq %rax,%r9308imull %ecx,%eax309andl $0x1fffffff,%eax310vmovd %eax,%xmm12311312movq %rax,%rdx313imulq -128(%r13),%rax314vpbroadcastq %xmm12,%ymm12315addq %rax,%r9316movq %rdx,%rax317imulq 8-128(%r13),%rax318shrq $29,%r9319addq %rax,%r10320movq %rdx,%rax321imulq 16-128(%r13),%rax322addq %r9,%r10323addq %rax,%r11324imulq 24-128(%r13),%rdx325addq %rdx,%r12326327movq %r10,%rax328imull %ecx,%eax329andl $0x1fffffff,%eax330331movl $9,%r14d332jmp .LOOP_REDUCE_1024333334.align 32335.LOOP_REDUCE_1024:336vmovd %eax,%xmm13337vpbroadcastq %xmm13,%ymm13338339vpmuludq 32-128(%r13),%ymm12,%ymm10340movq %rax,%rdx341imulq -128(%r13),%rax342vpaddq %ymm10,%ymm1,%ymm1343addq %rax,%r10344vpmuludq 64-128(%r13),%ymm12,%ymm14345movq %rdx,%rax346imulq 8-128(%r13),%rax347vpaddq %ymm14,%ymm2,%ymm2348vpmuludq 96-128(%r13),%ymm12,%ymm11349.byte 0x67350addq %rax,%r11351.byte 0x67352movq %rdx,%rax353imulq 16-128(%r13),%rax354shrq $29,%r10355vpaddq %ymm11,%ymm3,%ymm3356vpmuludq 128-128(%r13),%ymm12,%ymm10357addq %rax,%r12358addq %r10,%r11359vpaddq %ymm10,%ymm4,%ymm4360vpmuludq 160-128(%r13),%ymm12,%ymm14361movq %r11,%rax362imull %ecx,%eax363vpaddq %ymm14,%ymm5,%ymm5364vpmuludq 192-128(%r13),%ymm12,%ymm11365andl $0x1fffffff,%eax366vpaddq %ymm11,%ymm6,%ymm6367vpmuludq 224-128(%r13),%ymm12,%ymm10368vpaddq %ymm10,%ymm7,%ymm7369vpmuludq 256-128(%r13),%ymm12,%ymm14370vmovd %eax,%xmm12371372vpaddq %ymm14,%ymm8,%ymm8373374vpbroadcastq %xmm12,%ymm12375376vpmuludq 32-8-128(%r13),%ymm13,%ymm11377vmovdqu 96-8-128(%r13),%ymm14378movq %rax,%rdx379imulq -128(%r13),%rax380vpaddq %ymm11,%ymm1,%ymm1381vpmuludq 64-8-128(%r13),%ymm13,%ymm10382vmovdqu 128-8-128(%r13),%ymm11383addq %rax,%r11384movq %rdx,%rax385imulq 8-128(%r13),%rax386vpaddq %ymm10,%ymm2,%ymm2387addq %r12,%rax388shrq $29,%r11389vpmuludq %ymm13,%ymm14,%ymm14390vmovdqu 160-8-128(%r13),%ymm10391addq %r11,%rax392vpaddq %ymm14,%ymm3,%ymm3393vpmuludq %ymm13,%ymm11,%ymm11394vmovdqu 192-8-128(%r13),%ymm14395.byte 0x67396movq %rax,%r12397imull %ecx,%eax398vpaddq %ymm11,%ymm4,%ymm4399vpmuludq %ymm13,%ymm10,%ymm10400.byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00401andl $0x1fffffff,%eax402vpaddq %ymm10,%ymm5,%ymm5403vpmuludq %ymm13,%ymm14,%ymm14404vmovdqu 256-8-128(%r13),%ymm10405vpaddq %ymm14,%ymm6,%ymm6406vpmuludq %ymm13,%ymm11,%ymm11407vmovdqu 288-8-128(%r13),%ymm9408vmovd %eax,%xmm0409imulq -128(%r13),%rax410vpaddq %ymm11,%ymm7,%ymm7411vpmuludq %ymm13,%ymm10,%ymm10412vmovdqu 32-16-128(%r13),%ymm14413vpbroadcastq %xmm0,%ymm0414vpaddq %ymm10,%ymm8,%ymm8415vpmuludq %ymm13,%ymm9,%ymm9416vmovdqu 64-16-128(%r13),%ymm11417addq %rax,%r12418419vmovdqu 32-24-128(%r13),%ymm13420vpmuludq %ymm12,%ymm14,%ymm14421vmovdqu 96-16-128(%r13),%ymm10422vpaddq %ymm14,%ymm1,%ymm1423vpmuludq %ymm0,%ymm13,%ymm13424vpmuludq %ymm12,%ymm11,%ymm11425.byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff426vpaddq %ymm1,%ymm13,%ymm13427vpaddq %ymm11,%ymm2,%ymm2428vpmuludq %ymm12,%ymm10,%ymm10429vmovdqu 160-16-128(%r13),%ymm11430.byte 0x67431vmovq %xmm13,%rax432vmovdqu %ymm13,(%rsp)433vpaddq %ymm10,%ymm3,%ymm3434vpmuludq %ymm12,%ymm14,%ymm14435vmovdqu 192-16-128(%r13),%ymm10436vpaddq %ymm14,%ymm4,%ymm4437vpmuludq %ymm12,%ymm11,%ymm11438vmovdqu 224-16-128(%r13),%ymm14439vpaddq %ymm11,%ymm5,%ymm5440vpmuludq %ymm12,%ymm10,%ymm10441vmovdqu 256-16-128(%r13),%ymm11442vpaddq %ymm10,%ymm6,%ymm6443vpmuludq %ymm12,%ymm14,%ymm14444shrq $29,%r12445vmovdqu 288-16-128(%r13),%ymm10446addq %r12,%rax447vpaddq %ymm14,%ymm7,%ymm7448vpmuludq %ymm12,%ymm11,%ymm11449450movq %rax,%r9451imull %ecx,%eax452vpaddq %ymm11,%ymm8,%ymm8453vpmuludq %ymm12,%ymm10,%ymm10454andl $0x1fffffff,%eax455vmovd %eax,%xmm12456vmovdqu 96-24-128(%r13),%ymm11457.byte 0x67458vpaddq %ymm10,%ymm9,%ymm9459vpbroadcastq %xmm12,%ymm12460461vpmuludq 64-24-128(%r13),%ymm0,%ymm14462vmovdqu 128-24-128(%r13),%ymm10463movq %rax,%rdx464imulq -128(%r13),%rax465movq 8(%rsp),%r10466vpaddq %ymm14,%ymm2,%ymm1467vpmuludq %ymm0,%ymm11,%ymm11468vmovdqu 160-24-128(%r13),%ymm14469addq %rax,%r9470movq %rdx,%rax471imulq 8-128(%r13),%rax472.byte 0x67473shrq $29,%r9474movq 16(%rsp),%r11475vpaddq %ymm11,%ymm3,%ymm2476vpmuludq %ymm0,%ymm10,%ymm10477vmovdqu 192-24-128(%r13),%ymm11478addq %rax,%r10479movq %rdx,%rax480imulq 16-128(%r13),%rax481vpaddq %ymm10,%ymm4,%ymm3482vpmuludq %ymm0,%ymm14,%ymm14483vmovdqu 224-24-128(%r13),%ymm10484imulq 24-128(%r13),%rdx485addq %rax,%r11486leaq (%r9,%r10,1),%rax487vpaddq %ymm14,%ymm5,%ymm4488vpmuludq %ymm0,%ymm11,%ymm11489vmovdqu 256-24-128(%r13),%ymm14490movq %rax,%r10491imull %ecx,%eax492vpmuludq %ymm0,%ymm10,%ymm10493vpaddq %ymm11,%ymm6,%ymm5494vmovdqu 288-24-128(%r13),%ymm11495andl $0x1fffffff,%eax496vpaddq %ymm10,%ymm7,%ymm6497vpmuludq %ymm0,%ymm14,%ymm14498addq 24(%rsp),%rdx499vpaddq %ymm14,%ymm8,%ymm7500vpmuludq %ymm0,%ymm11,%ymm11501vpaddq %ymm11,%ymm9,%ymm8502vmovq %r12,%xmm9503movq %rdx,%r12504505decl %r14d506jnz .LOOP_REDUCE_1024507leaq 448(%rsp),%r12508vpaddq %ymm9,%ymm13,%ymm0509vpxor %ymm9,%ymm9,%ymm9510511vpaddq 288-192(%rbx),%ymm0,%ymm0512vpaddq 320-448(%r12),%ymm1,%ymm1513vpaddq 352-448(%r12),%ymm2,%ymm2514vpaddq 384-448(%r12),%ymm3,%ymm3515vpaddq 416-448(%r12),%ymm4,%ymm4516vpaddq 448-448(%r12),%ymm5,%ymm5517vpaddq 480-448(%r12),%ymm6,%ymm6518vpaddq 512-448(%r12),%ymm7,%ymm7519vpaddq 544-448(%r12),%ymm8,%ymm8520521vpsrlq $29,%ymm0,%ymm14522vpand %ymm15,%ymm0,%ymm0523vpsrlq $29,%ymm1,%ymm11524vpand %ymm15,%ymm1,%ymm1525vpsrlq $29,%ymm2,%ymm12526vpermq $0x93,%ymm14,%ymm14527vpand %ymm15,%ymm2,%ymm2528vpsrlq $29,%ymm3,%ymm13529vpermq $0x93,%ymm11,%ymm11530vpand %ymm15,%ymm3,%ymm3531vpermq $0x93,%ymm12,%ymm12532533vpblendd $3,%ymm9,%ymm14,%ymm10534vpermq $0x93,%ymm13,%ymm13535vpblendd $3,%ymm14,%ymm11,%ymm14536vpaddq %ymm10,%ymm0,%ymm0537vpblendd $3,%ymm11,%ymm12,%ymm11538vpaddq %ymm14,%ymm1,%ymm1539vpblendd $3,%ymm12,%ymm13,%ymm12540vpaddq %ymm11,%ymm2,%ymm2541vpblendd $3,%ymm13,%ymm9,%ymm13542vpaddq %ymm12,%ymm3,%ymm3543vpaddq %ymm13,%ymm4,%ymm4544545vpsrlq $29,%ymm0,%ymm14546vpand %ymm15,%ymm0,%ymm0547vpsrlq $29,%ymm1,%ymm11548vpand %ymm15,%ymm1,%ymm1549vpsrlq $29,%ymm2,%ymm12550vpermq $0x93,%ymm14,%ymm14551vpand %ymm15,%ymm2,%ymm2552vpsrlq $29,%ymm3,%ymm13553vpermq $0x93,%ymm11,%ymm11554vpand %ymm15,%ymm3,%ymm3555vpermq $0x93,%ymm12,%ymm12556557vpblendd $3,%ymm9,%ymm14,%ymm10558vpermq $0x93,%ymm13,%ymm13559vpblendd $3,%ymm14,%ymm11,%ymm14560vpaddq %ymm10,%ymm0,%ymm0561vpblendd $3,%ymm11,%ymm12,%ymm11562vpaddq %ymm14,%ymm1,%ymm1563vmovdqu %ymm0,0-128(%rdi)564vpblendd $3,%ymm12,%ymm13,%ymm12565vpaddq %ymm11,%ymm2,%ymm2566vmovdqu %ymm1,32-128(%rdi)567vpblendd $3,%ymm13,%ymm9,%ymm13568vpaddq %ymm12,%ymm3,%ymm3569vmovdqu %ymm2,64-128(%rdi)570vpaddq %ymm13,%ymm4,%ymm4571vmovdqu %ymm3,96-128(%rdi)572vpsrlq $29,%ymm4,%ymm14573vpand %ymm15,%ymm4,%ymm4574vpsrlq $29,%ymm5,%ymm11575vpand %ymm15,%ymm5,%ymm5576vpsrlq $29,%ymm6,%ymm12577vpermq $0x93,%ymm14,%ymm14578vpand %ymm15,%ymm6,%ymm6579vpsrlq $29,%ymm7,%ymm13580vpermq $0x93,%ymm11,%ymm11581vpand %ymm15,%ymm7,%ymm7582vpsrlq $29,%ymm8,%ymm0583vpermq $0x93,%ymm12,%ymm12584vpand %ymm15,%ymm8,%ymm8585vpermq $0x93,%ymm13,%ymm13586587vpblendd $3,%ymm9,%ymm14,%ymm10588vpermq $0x93,%ymm0,%ymm0589vpblendd $3,%ymm14,%ymm11,%ymm14590vpaddq %ymm10,%ymm4,%ymm4591vpblendd $3,%ymm11,%ymm12,%ymm11592vpaddq %ymm14,%ymm5,%ymm5593vpblendd $3,%ymm12,%ymm13,%ymm12594vpaddq %ymm11,%ymm6,%ymm6595vpblendd $3,%ymm13,%ymm0,%ymm13596vpaddq %ymm12,%ymm7,%ymm7597vpaddq %ymm13,%ymm8,%ymm8598599vpsrlq $29,%ymm4,%ymm14600vpand %ymm15,%ymm4,%ymm4601vpsrlq $29,%ymm5,%ymm11602vpand %ymm15,%ymm5,%ymm5603vpsrlq $29,%ymm6,%ymm12604vpermq $0x93,%ymm14,%ymm14605vpand %ymm15,%ymm6,%ymm6606vpsrlq $29,%ymm7,%ymm13607vpermq $0x93,%ymm11,%ymm11608vpand %ymm15,%ymm7,%ymm7609vpsrlq $29,%ymm8,%ymm0610vpermq $0x93,%ymm12,%ymm12611vpand %ymm15,%ymm8,%ymm8612vpermq $0x93,%ymm13,%ymm13613614vpblendd $3,%ymm9,%ymm14,%ymm10615vpermq $0x93,%ymm0,%ymm0616vpblendd $3,%ymm14,%ymm11,%ymm14617vpaddq %ymm10,%ymm4,%ymm4618vpblendd $3,%ymm11,%ymm12,%ymm11619vpaddq %ymm14,%ymm5,%ymm5620vmovdqu %ymm4,128-128(%rdi)621vpblendd $3,%ymm12,%ymm13,%ymm12622vpaddq %ymm11,%ymm6,%ymm6623vmovdqu %ymm5,160-128(%rdi)624vpblendd $3,%ymm13,%ymm0,%ymm13625vpaddq %ymm12,%ymm7,%ymm7626vmovdqu %ymm6,192-128(%rdi)627vpaddq %ymm13,%ymm8,%ymm8628vmovdqu %ymm7,224-128(%rdi)629vmovdqu %ymm8,256-128(%rdi)630631movq %rdi,%rsi632decl %r8d633jne .LOOP_GRANDE_SQR_1024634635vzeroall636movq %rbp,%rax637.cfi_def_cfa_register %rax638movq -48(%rax),%r15639.cfi_restore %r15640movq -40(%rax),%r14641.cfi_restore %r14642movq -32(%rax),%r13643.cfi_restore %r13644movq -24(%rax),%r12645.cfi_restore %r12646movq -16(%rax),%rbp647.cfi_restore %rbp648movq -8(%rax),%rbx649.cfi_restore %rbx650leaq (%rax),%rsp651.cfi_def_cfa_register %rsp652.Lsqr_1024_epilogue:653.byte 0xf3,0xc3654.cfi_endproc655.size rsaz_1024_sqr_avx2,.-rsaz_1024_sqr_avx2656.globl rsaz_1024_mul_avx2657.type rsaz_1024_mul_avx2,@function658.align 64659rsaz_1024_mul_avx2:660.cfi_startproc661leaq (%rsp),%rax662.cfi_def_cfa_register %rax663pushq %rbx664.cfi_offset %rbx,-16665pushq %rbp666.cfi_offset %rbp,-24667pushq %r12668.cfi_offset %r12,-32669pushq %r13670.cfi_offset %r13,-40671pushq %r14672.cfi_offset %r14,-48673pushq %r15674.cfi_offset %r15,-56675movq %rax,%rbp676.cfi_def_cfa_register %rbp677vzeroall678movq %rdx,%r13679subq $64,%rsp680681682683684685686.byte 0x67,0x67687movq %rsi,%r15688andq $4095,%r15689addq $320,%r15690shrq $12,%r15691movq %rsi,%r15692cmovnzq %r13,%rsi693cmovnzq %r15,%r13694695movq %rcx,%r15696subq $-128,%rsi697subq $-128,%rcx698subq $-128,%rdi699700andq $4095,%r15701addq $320,%r15702.byte 0x67,0x67703shrq $12,%r15704jz .Lmul_1024_no_n_copy705706707708709710subq $320,%rsp711vmovdqu 0-128(%rcx),%ymm0712andq $-512,%rsp713vmovdqu 32-128(%rcx),%ymm1714vmovdqu 64-128(%rcx),%ymm2715vmovdqu 96-128(%rcx),%ymm3716vmovdqu 128-128(%rcx),%ymm4717vmovdqu 160-128(%rcx),%ymm5718vmovdqu 192-128(%rcx),%ymm6719vmovdqu 224-128(%rcx),%ymm7720vmovdqu 256-128(%rcx),%ymm8721leaq 64+128(%rsp),%rcx722vmovdqu %ymm0,0-128(%rcx)723vpxor %ymm0,%ymm0,%ymm0724vmovdqu %ymm1,32-128(%rcx)725vpxor %ymm1,%ymm1,%ymm1726vmovdqu %ymm2,64-128(%rcx)727vpxor %ymm2,%ymm2,%ymm2728vmovdqu %ymm3,96-128(%rcx)729vpxor %ymm3,%ymm3,%ymm3730vmovdqu %ymm4,128-128(%rcx)731vpxor %ymm4,%ymm4,%ymm4732vmovdqu %ymm5,160-128(%rcx)733vpxor %ymm5,%ymm5,%ymm5734vmovdqu %ymm6,192-128(%rcx)735vpxor %ymm6,%ymm6,%ymm6736vmovdqu %ymm7,224-128(%rcx)737vpxor %ymm7,%ymm7,%ymm7738vmovdqu %ymm8,256-128(%rcx)739vmovdqa %ymm0,%ymm8740vmovdqu %ymm9,288-128(%rcx)741.Lmul_1024_no_n_copy:742andq $-64,%rsp743744movq (%r13),%rbx745vpbroadcastq (%r13),%ymm10746vmovdqu %ymm0,(%rsp)747xorq %r9,%r9748.byte 0x67749xorq %r10,%r10750xorq %r11,%r11751xorq %r12,%r12752753vmovdqu .Land_mask(%rip),%ymm15754movl $9,%r14d755vmovdqu %ymm9,288-128(%rdi)756jmp .Loop_mul_1024757758.align 32759.Loop_mul_1024:760vpsrlq $29,%ymm3,%ymm9761movq %rbx,%rax762imulq -128(%rsi),%rax763addq %r9,%rax764movq %rbx,%r10765imulq 8-128(%rsi),%r10766addq 8(%rsp),%r10767768movq %rax,%r9769imull %r8d,%eax770andl $0x1fffffff,%eax771772movq %rbx,%r11773imulq 16-128(%rsi),%r11774addq 16(%rsp),%r11775776movq %rbx,%r12777imulq 24-128(%rsi),%r12778addq 24(%rsp),%r12779vpmuludq 32-128(%rsi),%ymm10,%ymm0780vmovd %eax,%xmm11781vpaddq %ymm0,%ymm1,%ymm1782vpmuludq 64-128(%rsi),%ymm10,%ymm12783vpbroadcastq %xmm11,%ymm11784vpaddq %ymm12,%ymm2,%ymm2785vpmuludq 96-128(%rsi),%ymm10,%ymm13786vpand %ymm15,%ymm3,%ymm3787vpaddq %ymm13,%ymm3,%ymm3788vpmuludq 128-128(%rsi),%ymm10,%ymm0789vpaddq %ymm0,%ymm4,%ymm4790vpmuludq 160-128(%rsi),%ymm10,%ymm12791vpaddq %ymm12,%ymm5,%ymm5792vpmuludq 192-128(%rsi),%ymm10,%ymm13793vpaddq %ymm13,%ymm6,%ymm6794vpmuludq 224-128(%rsi),%ymm10,%ymm0795vpermq $0x93,%ymm9,%ymm9796vpaddq %ymm0,%ymm7,%ymm7797vpmuludq 256-128(%rsi),%ymm10,%ymm12798vpbroadcastq 8(%r13),%ymm10799vpaddq %ymm12,%ymm8,%ymm8800801movq %rax,%rdx802imulq -128(%rcx),%rax803addq %rax,%r9804movq %rdx,%rax805imulq 8-128(%rcx),%rax806addq %rax,%r10807movq %rdx,%rax808imulq 16-128(%rcx),%rax809addq %rax,%r11810shrq $29,%r9811imulq 24-128(%rcx),%rdx812addq %rdx,%r12813addq %r9,%r10814815vpmuludq 32-128(%rcx),%ymm11,%ymm13816vmovq %xmm10,%rbx817vpaddq %ymm13,%ymm1,%ymm1818vpmuludq 64-128(%rcx),%ymm11,%ymm0819vpaddq %ymm0,%ymm2,%ymm2820vpmuludq 96-128(%rcx),%ymm11,%ymm12821vpaddq %ymm12,%ymm3,%ymm3822vpmuludq 128-128(%rcx),%ymm11,%ymm13823vpaddq %ymm13,%ymm4,%ymm4824vpmuludq 160-128(%rcx),%ymm11,%ymm0825vpaddq %ymm0,%ymm5,%ymm5826vpmuludq 192-128(%rcx),%ymm11,%ymm12827vpaddq %ymm12,%ymm6,%ymm6828vpmuludq 224-128(%rcx),%ymm11,%ymm13829vpblendd $3,%ymm14,%ymm9,%ymm12830vpaddq %ymm13,%ymm7,%ymm7831vpmuludq 256-128(%rcx),%ymm11,%ymm0832vpaddq %ymm12,%ymm3,%ymm3833vpaddq %ymm0,%ymm8,%ymm8834835movq %rbx,%rax836imulq -128(%rsi),%rax837addq %rax,%r10838vmovdqu -8+32-128(%rsi),%ymm12839movq %rbx,%rax840imulq 8-128(%rsi),%rax841addq %rax,%r11842vmovdqu -8+64-128(%rsi),%ymm13843844movq %r10,%rax845vpblendd $0xfc,%ymm14,%ymm9,%ymm9846imull %r8d,%eax847vpaddq %ymm9,%ymm4,%ymm4848andl $0x1fffffff,%eax849850imulq 16-128(%rsi),%rbx851addq %rbx,%r12852vpmuludq %ymm10,%ymm12,%ymm12853vmovd %eax,%xmm11854vmovdqu -8+96-128(%rsi),%ymm0855vpaddq %ymm12,%ymm1,%ymm1856vpmuludq %ymm10,%ymm13,%ymm13857vpbroadcastq %xmm11,%ymm11858vmovdqu -8+128-128(%rsi),%ymm12859vpaddq %ymm13,%ymm2,%ymm2860vpmuludq %ymm10,%ymm0,%ymm0861vmovdqu -8+160-128(%rsi),%ymm13862vpaddq %ymm0,%ymm3,%ymm3863vpmuludq %ymm10,%ymm12,%ymm12864vmovdqu -8+192-128(%rsi),%ymm0865vpaddq %ymm12,%ymm4,%ymm4866vpmuludq %ymm10,%ymm13,%ymm13867vmovdqu -8+224-128(%rsi),%ymm12868vpaddq %ymm13,%ymm5,%ymm5869vpmuludq %ymm10,%ymm0,%ymm0870vmovdqu -8+256-128(%rsi),%ymm13871vpaddq %ymm0,%ymm6,%ymm6872vpmuludq %ymm10,%ymm12,%ymm12873vmovdqu -8+288-128(%rsi),%ymm9874vpaddq %ymm12,%ymm7,%ymm7875vpmuludq %ymm10,%ymm13,%ymm13876vpaddq %ymm13,%ymm8,%ymm8877vpmuludq %ymm10,%ymm9,%ymm9878vpbroadcastq 16(%r13),%ymm10879880movq %rax,%rdx881imulq -128(%rcx),%rax882addq %rax,%r10883vmovdqu -8+32-128(%rcx),%ymm0884movq %rdx,%rax885imulq 8-128(%rcx),%rax886addq %rax,%r11887vmovdqu -8+64-128(%rcx),%ymm12888shrq $29,%r10889imulq 16-128(%rcx),%rdx890addq %rdx,%r12891addq %r10,%r11892893vpmuludq %ymm11,%ymm0,%ymm0894vmovq %xmm10,%rbx895vmovdqu -8+96-128(%rcx),%ymm13896vpaddq %ymm0,%ymm1,%ymm1897vpmuludq %ymm11,%ymm12,%ymm12898vmovdqu -8+128-128(%rcx),%ymm0899vpaddq %ymm12,%ymm2,%ymm2900vpmuludq %ymm11,%ymm13,%ymm13901vmovdqu -8+160-128(%rcx),%ymm12902vpaddq %ymm13,%ymm3,%ymm3903vpmuludq %ymm11,%ymm0,%ymm0904vmovdqu -8+192-128(%rcx),%ymm13905vpaddq %ymm0,%ymm4,%ymm4906vpmuludq %ymm11,%ymm12,%ymm12907vmovdqu -8+224-128(%rcx),%ymm0908vpaddq %ymm12,%ymm5,%ymm5909vpmuludq %ymm11,%ymm13,%ymm13910vmovdqu -8+256-128(%rcx),%ymm12911vpaddq %ymm13,%ymm6,%ymm6912vpmuludq %ymm11,%ymm0,%ymm0913vmovdqu -8+288-128(%rcx),%ymm13914vpaddq %ymm0,%ymm7,%ymm7915vpmuludq %ymm11,%ymm12,%ymm12916vpaddq %ymm12,%ymm8,%ymm8917vpmuludq %ymm11,%ymm13,%ymm13918vpaddq %ymm13,%ymm9,%ymm9919920vmovdqu -16+32-128(%rsi),%ymm0921movq %rbx,%rax922imulq -128(%rsi),%rax923addq %r11,%rax924925vmovdqu -16+64-128(%rsi),%ymm12926movq %rax,%r11927imull %r8d,%eax928andl $0x1fffffff,%eax929930imulq 8-128(%rsi),%rbx931addq %rbx,%r12932vpmuludq %ymm10,%ymm0,%ymm0933vmovd %eax,%xmm11934vmovdqu -16+96-128(%rsi),%ymm13935vpaddq %ymm0,%ymm1,%ymm1936vpmuludq %ymm10,%ymm12,%ymm12937vpbroadcastq %xmm11,%ymm11938vmovdqu -16+128-128(%rsi),%ymm0939vpaddq %ymm12,%ymm2,%ymm2940vpmuludq %ymm10,%ymm13,%ymm13941vmovdqu -16+160-128(%rsi),%ymm12942vpaddq %ymm13,%ymm3,%ymm3943vpmuludq %ymm10,%ymm0,%ymm0944vmovdqu -16+192-128(%rsi),%ymm13945vpaddq %ymm0,%ymm4,%ymm4946vpmuludq %ymm10,%ymm12,%ymm12947vmovdqu -16+224-128(%rsi),%ymm0948vpaddq %ymm12,%ymm5,%ymm5949vpmuludq %ymm10,%ymm13,%ymm13950vmovdqu -16+256-128(%rsi),%ymm12951vpaddq %ymm13,%ymm6,%ymm6952vpmuludq %ymm10,%ymm0,%ymm0953vmovdqu -16+288-128(%rsi),%ymm13954vpaddq %ymm0,%ymm7,%ymm7955vpmuludq %ymm10,%ymm12,%ymm12956vpaddq %ymm12,%ymm8,%ymm8957vpmuludq %ymm10,%ymm13,%ymm13958vpbroadcastq 24(%r13),%ymm10959vpaddq %ymm13,%ymm9,%ymm9960961vmovdqu -16+32-128(%rcx),%ymm0962movq %rax,%rdx963imulq -128(%rcx),%rax964addq %rax,%r11965vmovdqu -16+64-128(%rcx),%ymm12966imulq 8-128(%rcx),%rdx967addq %rdx,%r12968shrq $29,%r11969970vpmuludq %ymm11,%ymm0,%ymm0971vmovq %xmm10,%rbx972vmovdqu -16+96-128(%rcx),%ymm13973vpaddq %ymm0,%ymm1,%ymm1974vpmuludq %ymm11,%ymm12,%ymm12975vmovdqu -16+128-128(%rcx),%ymm0976vpaddq %ymm12,%ymm2,%ymm2977vpmuludq %ymm11,%ymm13,%ymm13978vmovdqu -16+160-128(%rcx),%ymm12979vpaddq %ymm13,%ymm3,%ymm3980vpmuludq %ymm11,%ymm0,%ymm0981vmovdqu -16+192-128(%rcx),%ymm13982vpaddq %ymm0,%ymm4,%ymm4983vpmuludq %ymm11,%ymm12,%ymm12984vmovdqu -16+224-128(%rcx),%ymm0985vpaddq %ymm12,%ymm5,%ymm5986vpmuludq %ymm11,%ymm13,%ymm13987vmovdqu -16+256-128(%rcx),%ymm12988vpaddq %ymm13,%ymm6,%ymm6989vpmuludq %ymm11,%ymm0,%ymm0990vmovdqu -16+288-128(%rcx),%ymm13991vpaddq %ymm0,%ymm7,%ymm7992vpmuludq %ymm11,%ymm12,%ymm12993vmovdqu -24+32-128(%rsi),%ymm0994vpaddq %ymm12,%ymm8,%ymm8995vpmuludq %ymm11,%ymm13,%ymm13996vmovdqu -24+64-128(%rsi),%ymm12997vpaddq %ymm13,%ymm9,%ymm9998999addq %r11,%r121000imulq -128(%rsi),%rbx1001addq %rbx,%r1210021003movq %r12,%rax1004imull %r8d,%eax1005andl $0x1fffffff,%eax10061007vpmuludq %ymm10,%ymm0,%ymm01008vmovd %eax,%xmm111009vmovdqu -24+96-128(%rsi),%ymm131010vpaddq %ymm0,%ymm1,%ymm11011vpmuludq %ymm10,%ymm12,%ymm121012vpbroadcastq %xmm11,%ymm111013vmovdqu -24+128-128(%rsi),%ymm01014vpaddq %ymm12,%ymm2,%ymm21015vpmuludq %ymm10,%ymm13,%ymm131016vmovdqu -24+160-128(%rsi),%ymm121017vpaddq %ymm13,%ymm3,%ymm31018vpmuludq %ymm10,%ymm0,%ymm01019vmovdqu -24+192-128(%rsi),%ymm131020vpaddq %ymm0,%ymm4,%ymm41021vpmuludq %ymm10,%ymm12,%ymm121022vmovdqu -24+224-128(%rsi),%ymm01023vpaddq %ymm12,%ymm5,%ymm51024vpmuludq %ymm10,%ymm13,%ymm131025vmovdqu -24+256-128(%rsi),%ymm121026vpaddq %ymm13,%ymm6,%ymm61027vpmuludq %ymm10,%ymm0,%ymm01028vmovdqu -24+288-128(%rsi),%ymm131029vpaddq %ymm0,%ymm7,%ymm71030vpmuludq %ymm10,%ymm12,%ymm121031vpaddq %ymm12,%ymm8,%ymm81032vpmuludq %ymm10,%ymm13,%ymm131033vpbroadcastq 32(%r13),%ymm101034vpaddq %ymm13,%ymm9,%ymm91035addq $32,%r1310361037vmovdqu -24+32-128(%rcx),%ymm01038imulq -128(%rcx),%rax1039addq %rax,%r121040shrq $29,%r1210411042vmovdqu -24+64-128(%rcx),%ymm121043vpmuludq %ymm11,%ymm0,%ymm01044vmovq %xmm10,%rbx1045vmovdqu -24+96-128(%rcx),%ymm131046vpaddq %ymm0,%ymm1,%ymm01047vpmuludq %ymm11,%ymm12,%ymm121048vmovdqu %ymm0,(%rsp)1049vpaddq %ymm12,%ymm2,%ymm11050vmovdqu -24+128-128(%rcx),%ymm01051vpmuludq %ymm11,%ymm13,%ymm131052vmovdqu -24+160-128(%rcx),%ymm121053vpaddq %ymm13,%ymm3,%ymm21054vpmuludq %ymm11,%ymm0,%ymm01055vmovdqu -24+192-128(%rcx),%ymm131056vpaddq %ymm0,%ymm4,%ymm31057vpmuludq %ymm11,%ymm12,%ymm121058vmovdqu -24+224-128(%rcx),%ymm01059vpaddq %ymm12,%ymm5,%ymm41060vpmuludq %ymm11,%ymm13,%ymm131061vmovdqu -24+256-128(%rcx),%ymm121062vpaddq %ymm13,%ymm6,%ymm51063vpmuludq %ymm11,%ymm0,%ymm01064vmovdqu -24+288-128(%rcx),%ymm131065movq %r12,%r91066vpaddq %ymm0,%ymm7,%ymm61067vpmuludq %ymm11,%ymm12,%ymm121068addq (%rsp),%r91069vpaddq %ymm12,%ymm8,%ymm71070vpmuludq %ymm11,%ymm13,%ymm131071vmovq %r12,%xmm121072vpaddq %ymm13,%ymm9,%ymm810731074decl %r14d1075jnz .Loop_mul_10241076vpaddq (%rsp),%ymm12,%ymm010771078vpsrlq $29,%ymm0,%ymm121079vpand %ymm15,%ymm0,%ymm01080vpsrlq $29,%ymm1,%ymm131081vpand %ymm15,%ymm1,%ymm11082vpsrlq $29,%ymm2,%ymm101083vpermq $0x93,%ymm12,%ymm121084vpand %ymm15,%ymm2,%ymm21085vpsrlq $29,%ymm3,%ymm111086vpermq $0x93,%ymm13,%ymm131087vpand %ymm15,%ymm3,%ymm310881089vpblendd $3,%ymm14,%ymm12,%ymm91090vpermq $0x93,%ymm10,%ymm101091vpblendd $3,%ymm12,%ymm13,%ymm121092vpermq $0x93,%ymm11,%ymm111093vpaddq %ymm9,%ymm0,%ymm01094vpblendd $3,%ymm13,%ymm10,%ymm131095vpaddq %ymm12,%ymm1,%ymm11096vpblendd $3,%ymm10,%ymm11,%ymm101097vpaddq %ymm13,%ymm2,%ymm21098vpblendd $3,%ymm11,%ymm14,%ymm111099vpaddq %ymm10,%ymm3,%ymm31100vpaddq %ymm11,%ymm4,%ymm411011102vpsrlq $29,%ymm0,%ymm121103vpand %ymm15,%ymm0,%ymm01104vpsrlq $29,%ymm1,%ymm131105vpand %ymm15,%ymm1,%ymm11106vpsrlq $29,%ymm2,%ymm101107vpermq $0x93,%ymm12,%ymm121108vpand %ymm15,%ymm2,%ymm21109vpsrlq $29,%ymm3,%ymm111110vpermq $0x93,%ymm13,%ymm131111vpand %ymm15,%ymm3,%ymm31112vpermq $0x93,%ymm10,%ymm1011131114vpblendd $3,%ymm14,%ymm12,%ymm91115vpermq $0x93,%ymm11,%ymm111116vpblendd $3,%ymm12,%ymm13,%ymm121117vpaddq %ymm9,%ymm0,%ymm01118vpblendd $3,%ymm13,%ymm10,%ymm131119vpaddq %ymm12,%ymm1,%ymm11120vpblendd $3,%ymm10,%ymm11,%ymm101121vpaddq %ymm13,%ymm2,%ymm21122vpblendd $3,%ymm11,%ymm14,%ymm111123vpaddq %ymm10,%ymm3,%ymm31124vpaddq %ymm11,%ymm4,%ymm411251126vmovdqu %ymm0,0-128(%rdi)1127vmovdqu %ymm1,32-128(%rdi)1128vmovdqu %ymm2,64-128(%rdi)1129vmovdqu %ymm3,96-128(%rdi)1130vpsrlq $29,%ymm4,%ymm121131vpand %ymm15,%ymm4,%ymm41132vpsrlq $29,%ymm5,%ymm131133vpand %ymm15,%ymm5,%ymm51134vpsrlq $29,%ymm6,%ymm101135vpermq $0x93,%ymm12,%ymm121136vpand %ymm15,%ymm6,%ymm61137vpsrlq $29,%ymm7,%ymm111138vpermq $0x93,%ymm13,%ymm131139vpand %ymm15,%ymm7,%ymm71140vpsrlq $29,%ymm8,%ymm01141vpermq $0x93,%ymm10,%ymm101142vpand %ymm15,%ymm8,%ymm81143vpermq $0x93,%ymm11,%ymm1111441145vpblendd $3,%ymm14,%ymm12,%ymm91146vpermq $0x93,%ymm0,%ymm01147vpblendd $3,%ymm12,%ymm13,%ymm121148vpaddq %ymm9,%ymm4,%ymm41149vpblendd $3,%ymm13,%ymm10,%ymm131150vpaddq %ymm12,%ymm5,%ymm51151vpblendd $3,%ymm10,%ymm11,%ymm101152vpaddq %ymm13,%ymm6,%ymm61153vpblendd $3,%ymm11,%ymm0,%ymm111154vpaddq %ymm10,%ymm7,%ymm71155vpaddq %ymm11,%ymm8,%ymm811561157vpsrlq $29,%ymm4,%ymm121158vpand %ymm15,%ymm4,%ymm41159vpsrlq $29,%ymm5,%ymm131160vpand %ymm15,%ymm5,%ymm51161vpsrlq $29,%ymm6,%ymm101162vpermq $0x93,%ymm12,%ymm121163vpand %ymm15,%ymm6,%ymm61164vpsrlq $29,%ymm7,%ymm111165vpermq $0x93,%ymm13,%ymm131166vpand %ymm15,%ymm7,%ymm71167vpsrlq $29,%ymm8,%ymm01168vpermq $0x93,%ymm10,%ymm101169vpand %ymm15,%ymm8,%ymm81170vpermq $0x93,%ymm11,%ymm1111711172vpblendd $3,%ymm14,%ymm12,%ymm91173vpermq $0x93,%ymm0,%ymm01174vpblendd $3,%ymm12,%ymm13,%ymm121175vpaddq %ymm9,%ymm4,%ymm41176vpblendd $3,%ymm13,%ymm10,%ymm131177vpaddq %ymm12,%ymm5,%ymm51178vpblendd $3,%ymm10,%ymm11,%ymm101179vpaddq %ymm13,%ymm6,%ymm61180vpblendd $3,%ymm11,%ymm0,%ymm111181vpaddq %ymm10,%ymm7,%ymm71182vpaddq %ymm11,%ymm8,%ymm811831184vmovdqu %ymm4,128-128(%rdi)1185vmovdqu %ymm5,160-128(%rdi)1186vmovdqu %ymm6,192-128(%rdi)1187vmovdqu %ymm7,224-128(%rdi)1188vmovdqu %ymm8,256-128(%rdi)1189vzeroupper11901191movq %rbp,%rax1192.cfi_def_cfa_register %rax1193movq -48(%rax),%r151194.cfi_restore %r151195movq -40(%rax),%r141196.cfi_restore %r141197movq -32(%rax),%r131198.cfi_restore %r131199movq -24(%rax),%r121200.cfi_restore %r121201movq -16(%rax),%rbp1202.cfi_restore %rbp1203movq -8(%rax),%rbx1204.cfi_restore %rbx1205leaq (%rax),%rsp1206.cfi_def_cfa_register %rsp1207.Lmul_1024_epilogue:1208.byte 0xf3,0xc31209.cfi_endproc1210.size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx21211.globl rsaz_1024_red2norm_avx21212.type rsaz_1024_red2norm_avx2,@function1213.align 321214rsaz_1024_red2norm_avx2:1215.cfi_startproc1216subq $-128,%rsi1217xorq %rax,%rax1218movq -128(%rsi),%r81219movq -120(%rsi),%r91220movq -112(%rsi),%r101221shlq $0,%r81222shlq $29,%r91223movq %r10,%r111224shlq $58,%r101225shrq $6,%r111226addq %r8,%rax1227addq %r9,%rax1228addq %r10,%rax1229adcq $0,%r111230movq %rax,0(%rdi)1231movq %r11,%rax1232movq -104(%rsi),%r81233movq -96(%rsi),%r91234shlq $23,%r81235movq %r9,%r101236shlq $52,%r91237shrq $12,%r101238addq %r8,%rax1239addq %r9,%rax1240adcq $0,%r101241movq %rax,8(%rdi)1242movq %r10,%rax1243movq -88(%rsi),%r111244movq -80(%rsi),%r81245shlq $17,%r111246movq %r8,%r91247shlq $46,%r81248shrq $18,%r91249addq %r11,%rax1250addq %r8,%rax1251adcq $0,%r91252movq %rax,16(%rdi)1253movq %r9,%rax1254movq -72(%rsi),%r101255movq -64(%rsi),%r111256shlq $11,%r101257movq %r11,%r81258shlq $40,%r111259shrq $24,%r81260addq %r10,%rax1261addq %r11,%rax1262adcq $0,%r81263movq %rax,24(%rdi)1264movq %r8,%rax1265movq -56(%rsi),%r91266movq -48(%rsi),%r101267movq -40(%rsi),%r111268shlq $5,%r91269shlq $34,%r101270movq %r11,%r81271shlq $63,%r111272shrq $1,%r81273addq %r9,%rax1274addq %r10,%rax1275addq %r11,%rax1276adcq $0,%r81277movq %rax,32(%rdi)1278movq %r8,%rax1279movq -32(%rsi),%r91280movq -24(%rsi),%r101281shlq $28,%r91282movq %r10,%r111283shlq $57,%r101284shrq $7,%r111285addq %r9,%rax1286addq %r10,%rax1287adcq $0,%r111288movq %rax,40(%rdi)1289movq %r11,%rax1290movq -16(%rsi),%r81291movq -8(%rsi),%r91292shlq $22,%r81293movq %r9,%r101294shlq $51,%r91295shrq $13,%r101296addq %r8,%rax1297addq %r9,%rax1298adcq $0,%r101299movq %rax,48(%rdi)1300movq %r10,%rax1301movq 0(%rsi),%r111302movq 8(%rsi),%r81303shlq $16,%r111304movq %r8,%r91305shlq $45,%r81306shrq $19,%r91307addq %r11,%rax1308addq %r8,%rax1309adcq $0,%r91310movq %rax,56(%rdi)1311movq %r9,%rax1312movq 16(%rsi),%r101313movq 24(%rsi),%r111314shlq $10,%r101315movq %r11,%r81316shlq $39,%r111317shrq $25,%r81318addq %r10,%rax1319addq %r11,%rax1320adcq $0,%r81321movq %rax,64(%rdi)1322movq %r8,%rax1323movq 32(%rsi),%r91324movq 40(%rsi),%r101325movq 48(%rsi),%r111326shlq $4,%r91327shlq $33,%r101328movq %r11,%r81329shlq $62,%r111330shrq $2,%r81331addq %r9,%rax1332addq %r10,%rax1333addq %r11,%rax1334adcq $0,%r81335movq %rax,72(%rdi)1336movq %r8,%rax1337movq 56(%rsi),%r91338movq 64(%rsi),%r101339shlq $27,%r91340movq %r10,%r111341shlq $56,%r101342shrq $8,%r111343addq %r9,%rax1344addq %r10,%rax1345adcq $0,%r111346movq %rax,80(%rdi)1347movq %r11,%rax1348movq 72(%rsi),%r81349movq 80(%rsi),%r91350shlq $21,%r81351movq %r9,%r101352shlq $50,%r91353shrq $14,%r101354addq %r8,%rax1355addq %r9,%rax1356adcq $0,%r101357movq %rax,88(%rdi)1358movq %r10,%rax1359movq 88(%rsi),%r111360movq 96(%rsi),%r81361shlq $15,%r111362movq %r8,%r91363shlq $44,%r81364shrq $20,%r91365addq %r11,%rax1366addq %r8,%rax1367adcq $0,%r91368movq %rax,96(%rdi)1369movq %r9,%rax1370movq 104(%rsi),%r101371movq 112(%rsi),%r111372shlq $9,%r101373movq %r11,%r81374shlq $38,%r111375shrq $26,%r81376addq %r10,%rax1377addq %r11,%rax1378adcq $0,%r81379movq %rax,104(%rdi)1380movq %r8,%rax1381movq 120(%rsi),%r91382movq 128(%rsi),%r101383movq 136(%rsi),%r111384shlq $3,%r91385shlq $32,%r101386movq %r11,%r81387shlq $61,%r111388shrq $3,%r81389addq %r9,%rax1390addq %r10,%rax1391addq %r11,%rax1392adcq $0,%r81393movq %rax,112(%rdi)1394movq %r8,%rax1395movq 144(%rsi),%r91396movq 152(%rsi),%r101397shlq $26,%r91398movq %r10,%r111399shlq $55,%r101400shrq $9,%r111401addq %r9,%rax1402addq %r10,%rax1403adcq $0,%r111404movq %rax,120(%rdi)1405movq %r11,%rax1406.byte 0xf3,0xc31407.cfi_endproc1408.size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx214091410.globl rsaz_1024_norm2red_avx21411.type rsaz_1024_norm2red_avx2,@function1412.align 321413rsaz_1024_norm2red_avx2:1414.cfi_startproc1415subq $-128,%rdi1416movq (%rsi),%r81417movl $0x1fffffff,%eax1418movq 8(%rsi),%r91419movq %r8,%r111420shrq $0,%r111421andq %rax,%r111422movq %r11,-128(%rdi)1423movq %r8,%r101424shrq $29,%r101425andq %rax,%r101426movq %r10,-120(%rdi)1427shrdq $58,%r9,%r81428andq %rax,%r81429movq %r8,-112(%rdi)1430movq 16(%rsi),%r101431movq %r9,%r81432shrq $23,%r81433andq %rax,%r81434movq %r8,-104(%rdi)1435shrdq $52,%r10,%r91436andq %rax,%r91437movq %r9,-96(%rdi)1438movq 24(%rsi),%r111439movq %r10,%r91440shrq $17,%r91441andq %rax,%r91442movq %r9,-88(%rdi)1443shrdq $46,%r11,%r101444andq %rax,%r101445movq %r10,-80(%rdi)1446movq 32(%rsi),%r81447movq %r11,%r101448shrq $11,%r101449andq %rax,%r101450movq %r10,-72(%rdi)1451shrdq $40,%r8,%r111452andq %rax,%r111453movq %r11,-64(%rdi)1454movq 40(%rsi),%r91455movq %r8,%r111456shrq $5,%r111457andq %rax,%r111458movq %r11,-56(%rdi)1459movq %r8,%r101460shrq $34,%r101461andq %rax,%r101462movq %r10,-48(%rdi)1463shrdq $63,%r9,%r81464andq %rax,%r81465movq %r8,-40(%rdi)1466movq 48(%rsi),%r101467movq %r9,%r81468shrq $28,%r81469andq %rax,%r81470movq %r8,-32(%rdi)1471shrdq $57,%r10,%r91472andq %rax,%r91473movq %r9,-24(%rdi)1474movq 56(%rsi),%r111475movq %r10,%r91476shrq $22,%r91477andq %rax,%r91478movq %r9,-16(%rdi)1479shrdq $51,%r11,%r101480andq %rax,%r101481movq %r10,-8(%rdi)1482movq 64(%rsi),%r81483movq %r11,%r101484shrq $16,%r101485andq %rax,%r101486movq %r10,0(%rdi)1487shrdq $45,%r8,%r111488andq %rax,%r111489movq %r11,8(%rdi)1490movq 72(%rsi),%r91491movq %r8,%r111492shrq $10,%r111493andq %rax,%r111494movq %r11,16(%rdi)1495shrdq $39,%r9,%r81496andq %rax,%r81497movq %r8,24(%rdi)1498movq 80(%rsi),%r101499movq %r9,%r81500shrq $4,%r81501andq %rax,%r81502movq %r8,32(%rdi)1503movq %r9,%r111504shrq $33,%r111505andq %rax,%r111506movq %r11,40(%rdi)1507shrdq $62,%r10,%r91508andq %rax,%r91509movq %r9,48(%rdi)1510movq 88(%rsi),%r111511movq %r10,%r91512shrq $27,%r91513andq %rax,%r91514movq %r9,56(%rdi)1515shrdq $56,%r11,%r101516andq %rax,%r101517movq %r10,64(%rdi)1518movq 96(%rsi),%r81519movq %r11,%r101520shrq $21,%r101521andq %rax,%r101522movq %r10,72(%rdi)1523shrdq $50,%r8,%r111524andq %rax,%r111525movq %r11,80(%rdi)1526movq 104(%rsi),%r91527movq %r8,%r111528shrq $15,%r111529andq %rax,%r111530movq %r11,88(%rdi)1531shrdq $44,%r9,%r81532andq %rax,%r81533movq %r8,96(%rdi)1534movq 112(%rsi),%r101535movq %r9,%r81536shrq $9,%r81537andq %rax,%r81538movq %r8,104(%rdi)1539shrdq $38,%r10,%r91540andq %rax,%r91541movq %r9,112(%rdi)1542movq 120(%rsi),%r111543movq %r10,%r91544shrq $3,%r91545andq %rax,%r91546movq %r9,120(%rdi)1547movq %r10,%r81548shrq $32,%r81549andq %rax,%r81550movq %r8,128(%rdi)1551shrdq $61,%r11,%r101552andq %rax,%r101553movq %r10,136(%rdi)1554xorq %r8,%r81555movq %r11,%r101556shrq $26,%r101557andq %rax,%r101558movq %r10,144(%rdi)1559shrdq $55,%r8,%r111560andq %rax,%r111561movq %r11,152(%rdi)1562movq %r8,160(%rdi)1563movq %r8,168(%rdi)1564movq %r8,176(%rdi)1565movq %r8,184(%rdi)1566.byte 0xf3,0xc31567.cfi_endproc1568.size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx21569.globl rsaz_1024_scatter5_avx21570.type rsaz_1024_scatter5_avx2,@function1571.align 321572rsaz_1024_scatter5_avx2:1573.cfi_startproc1574vzeroupper1575vmovdqu .Lscatter_permd(%rip),%ymm51576shll $4,%edx1577leaq (%rdi,%rdx,1),%rdi1578movl $9,%eax1579jmp .Loop_scatter_102415801581.align 321582.Loop_scatter_1024:1583vmovdqu (%rsi),%ymm01584leaq 32(%rsi),%rsi1585vpermd %ymm0,%ymm5,%ymm01586vmovdqu %xmm0,(%rdi)1587leaq 512(%rdi),%rdi1588decl %eax1589jnz .Loop_scatter_102415901591vzeroupper1592.byte 0xf3,0xc31593.cfi_endproc1594.size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx215951596.globl rsaz_1024_gather5_avx21597.type rsaz_1024_gather5_avx2,@function1598.align 321599rsaz_1024_gather5_avx2:1600.cfi_startproc1601vzeroupper1602movq %rsp,%r111603.cfi_def_cfa_register %r111604leaq -256(%rsp),%rsp1605andq $-32,%rsp1606leaq .Linc(%rip),%r101607leaq -128(%rsp),%rax16081609vmovd %edx,%xmm41610vmovdqa (%r10),%ymm01611vmovdqa 32(%r10),%ymm11612vmovdqa 64(%r10),%ymm51613vpbroadcastd %xmm4,%ymm416141615vpaddd %ymm5,%ymm0,%ymm21616vpcmpeqd %ymm4,%ymm0,%ymm01617vpaddd %ymm5,%ymm1,%ymm31618vpcmpeqd %ymm4,%ymm1,%ymm11619vmovdqa %ymm0,0+128(%rax)1620vpaddd %ymm5,%ymm2,%ymm01621vpcmpeqd %ymm4,%ymm2,%ymm21622vmovdqa %ymm1,32+128(%rax)1623vpaddd %ymm5,%ymm3,%ymm11624vpcmpeqd %ymm4,%ymm3,%ymm31625vmovdqa %ymm2,64+128(%rax)1626vpaddd %ymm5,%ymm0,%ymm21627vpcmpeqd %ymm4,%ymm0,%ymm01628vmovdqa %ymm3,96+128(%rax)1629vpaddd %ymm5,%ymm1,%ymm31630vpcmpeqd %ymm4,%ymm1,%ymm11631vmovdqa %ymm0,128+128(%rax)1632vpaddd %ymm5,%ymm2,%ymm81633vpcmpeqd %ymm4,%ymm2,%ymm21634vmovdqa %ymm1,160+128(%rax)1635vpaddd %ymm5,%ymm3,%ymm91636vpcmpeqd %ymm4,%ymm3,%ymm31637vmovdqa %ymm2,192+128(%rax)1638vpaddd %ymm5,%ymm8,%ymm101639vpcmpeqd %ymm4,%ymm8,%ymm81640vmovdqa %ymm3,224+128(%rax)1641vpaddd %ymm5,%ymm9,%ymm111642vpcmpeqd %ymm4,%ymm9,%ymm91643vpaddd %ymm5,%ymm10,%ymm121644vpcmpeqd %ymm4,%ymm10,%ymm101645vpaddd %ymm5,%ymm11,%ymm131646vpcmpeqd %ymm4,%ymm11,%ymm111647vpaddd %ymm5,%ymm12,%ymm141648vpcmpeqd %ymm4,%ymm12,%ymm121649vpaddd %ymm5,%ymm13,%ymm151650vpcmpeqd %ymm4,%ymm13,%ymm131651vpcmpeqd %ymm4,%ymm14,%ymm141652vpcmpeqd %ymm4,%ymm15,%ymm1516531654vmovdqa -32(%r10),%ymm71655leaq 128(%rsi),%rsi1656movl $9,%edx16571658.Loop_gather_1024:1659vmovdqa 0-128(%rsi),%ymm01660vmovdqa 32-128(%rsi),%ymm11661vmovdqa 64-128(%rsi),%ymm21662vmovdqa 96-128(%rsi),%ymm31663vpand 0+128(%rax),%ymm0,%ymm01664vpand 32+128(%rax),%ymm1,%ymm11665vpand 64+128(%rax),%ymm2,%ymm21666vpor %ymm0,%ymm1,%ymm41667vpand 96+128(%rax),%ymm3,%ymm31668vmovdqa 128-128(%rsi),%ymm01669vmovdqa 160-128(%rsi),%ymm11670vpor %ymm2,%ymm3,%ymm51671vmovdqa 192-128(%rsi),%ymm21672vmovdqa 224-128(%rsi),%ymm31673vpand 128+128(%rax),%ymm0,%ymm01674vpand 160+128(%rax),%ymm1,%ymm11675vpand 192+128(%rax),%ymm2,%ymm21676vpor %ymm0,%ymm4,%ymm41677vpand 224+128(%rax),%ymm3,%ymm31678vpand 256-128(%rsi),%ymm8,%ymm01679vpor %ymm1,%ymm5,%ymm51680vpand 288-128(%rsi),%ymm9,%ymm11681vpor %ymm2,%ymm4,%ymm41682vpand 320-128(%rsi),%ymm10,%ymm21683vpor %ymm3,%ymm5,%ymm51684vpand 352-128(%rsi),%ymm11,%ymm31685vpor %ymm0,%ymm4,%ymm41686vpand 384-128(%rsi),%ymm12,%ymm01687vpor %ymm1,%ymm5,%ymm51688vpand 416-128(%rsi),%ymm13,%ymm11689vpor %ymm2,%ymm4,%ymm41690vpand 448-128(%rsi),%ymm14,%ymm21691vpor %ymm3,%ymm5,%ymm51692vpand 480-128(%rsi),%ymm15,%ymm31693leaq 512(%rsi),%rsi1694vpor %ymm0,%ymm4,%ymm41695vpor %ymm1,%ymm5,%ymm51696vpor %ymm2,%ymm4,%ymm41697vpor %ymm3,%ymm5,%ymm516981699vpor %ymm5,%ymm4,%ymm41700vextracti128 $1,%ymm4,%xmm51701vpor %xmm4,%xmm5,%xmm51702vpermd %ymm5,%ymm7,%ymm51703vmovdqu %ymm5,(%rdi)1704leaq 32(%rdi),%rdi1705decl %edx1706jnz .Loop_gather_102417071708vpxor %ymm0,%ymm0,%ymm01709vmovdqu %ymm0,(%rdi)1710vzeroupper1711leaq (%r11),%rsp1712.cfi_def_cfa_register %rsp1713.byte 0xf3,0xc31714.cfi_endproc1715.LSEH_end_rsaz_1024_gather5:1716.size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx217171718.globl rsaz_avx2_eligible1719.type rsaz_avx2_eligible,@function1720.align 321721rsaz_avx2_eligible:1722movl OPENSSL_ia32cap_P+8(%rip),%eax1723movl $524544,%ecx1724movl $0,%edx1725andl %eax,%ecx1726cmpl $524544,%ecx1727cmovel %edx,%eax1728andl $32,%eax1729shrl $5,%eax1730.byte 0xf3,0xc31731.size rsaz_avx2_eligible,.-rsaz_avx2_eligible17321733.section .rodata1734.align 641735.Land_mask:1736.quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff1737.Lscatter_permd:1738.long 0,2,4,6,7,7,7,71739.Lgather_permd:1740.long 0,7,1,7,2,7,3,71741.Linc:1742.long 0,0,0,0, 1,1,1,11743.long 2,2,2,2, 3,3,3,31744.long 4,4,4,4, 4,4,4,41745.previous1746.align 641747.section ".note.gnu.property", "a"1748.p2align 31749.long 1f - 0f1750.long 4f - 1f1751.long 517520:1753# "GNU" encoded with .byte, since .asciz isn't supported1754# on Solaris.1755.byte 0x471756.byte 0x4e1757.byte 0x551758.byte 017591:1760.p2align 31761.long 0xc00000021762.long 3f - 2f17632:1764.long 317653:1766.p2align 317674:176817691770