Upload Kmake

This commit is contained in:
Gorochu
2026-05-26 23:36:42 -07:00
parent ba051b2f74
commit 555ec72358
41615 changed files with 13344630 additions and 1 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,901 @@
.globl ossl_rsaz_avx512ifma_eligible
.type ossl_rsaz_avx512ifma_eligible,@function
.align 32
ossl_rsaz_avx512ifma_eligible:
movl OPENSSL_ia32cap_P+8(%rip),%ecx
xorl %eax,%eax
andl $2149777408,%ecx
cmpl $2149777408,%ecx
cmovel %ecx,%eax
.byte 0xf3,0xc3
.size ossl_rsaz_avx512ifma_eligible, .-ossl_rsaz_avx512ifma_eligible
.text
.globl ossl_rsaz_amm52x20_x1_256
.type ossl_rsaz_amm52x20_x1_256,@function
.align 32
ossl_rsaz_amm52x20_x1_256:
.cfi_startproc
.byte 243,15,30,250
pushq %rbx
.cfi_adjust_cfa_offset 8
.cfi_offset %rbx,-16
pushq %rbp
.cfi_adjust_cfa_offset 8
.cfi_offset %rbp,-24
pushq %r12
.cfi_adjust_cfa_offset 8
.cfi_offset %r12,-32
pushq %r13
.cfi_adjust_cfa_offset 8
.cfi_offset %r13,-40
pushq %r14
.cfi_adjust_cfa_offset 8
.cfi_offset %r14,-48
pushq %r15
.cfi_adjust_cfa_offset 8
.cfi_offset %r15,-56
.Lrsaz_amm52x20_x1_256_body:
vpxord %ymm0,%ymm0,%ymm0
vmovdqa64 %ymm0,%ymm1
vmovdqa64 %ymm0,%ymm16
vmovdqa64 %ymm0,%ymm17
vmovdqa64 %ymm0,%ymm18
vmovdqa64 %ymm0,%ymm19
xorl %r9d,%r9d
movq %rdx,%r11
movq $0xfffffffffffff,%rax
movl $5,%ebx
.align 32
.Lloop5:
movq 0(%r11),%r13
vpbroadcastq %r13,%ymm3
movq 0(%rsi),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
movq %r12,%r10
adcq $0,%r10
movq %r8,%r13
imulq %r9,%r13
andq %rax,%r13
vpbroadcastq %r13,%ymm4
movq 0(%rcx),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
adcq %r12,%r10
shrq $52,%r9
salq $12,%r10
orq %r10,%r9
vpmadd52luq 0(%rsi),%ymm3,%ymm1
vpmadd52luq 32(%rsi),%ymm3,%ymm16
vpmadd52luq 64(%rsi),%ymm3,%ymm17
vpmadd52luq 96(%rsi),%ymm3,%ymm18
vpmadd52luq 128(%rsi),%ymm3,%ymm19
vpmadd52luq 0(%rcx),%ymm4,%ymm1
vpmadd52luq 32(%rcx),%ymm4,%ymm16
vpmadd52luq 64(%rcx),%ymm4,%ymm17
vpmadd52luq 96(%rcx),%ymm4,%ymm18
vpmadd52luq 128(%rcx),%ymm4,%ymm19
valignq $1,%ymm1,%ymm16,%ymm1
valignq $1,%ymm16,%ymm17,%ymm16
valignq $1,%ymm17,%ymm18,%ymm17
valignq $1,%ymm18,%ymm19,%ymm18
valignq $1,%ymm19,%ymm0,%ymm19
vmovq %xmm1,%r13
addq %r13,%r9
vpmadd52huq 0(%rsi),%ymm3,%ymm1
vpmadd52huq 32(%rsi),%ymm3,%ymm16
vpmadd52huq 64(%rsi),%ymm3,%ymm17
vpmadd52huq 96(%rsi),%ymm3,%ymm18
vpmadd52huq 128(%rsi),%ymm3,%ymm19
vpmadd52huq 0(%rcx),%ymm4,%ymm1
vpmadd52huq 32(%rcx),%ymm4,%ymm16
vpmadd52huq 64(%rcx),%ymm4,%ymm17
vpmadd52huq 96(%rcx),%ymm4,%ymm18
vpmadd52huq 128(%rcx),%ymm4,%ymm19
movq 8(%r11),%r13
vpbroadcastq %r13,%ymm3
movq 0(%rsi),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
movq %r12,%r10
adcq $0,%r10
movq %r8,%r13
imulq %r9,%r13
andq %rax,%r13
vpbroadcastq %r13,%ymm4
movq 0(%rcx),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
adcq %r12,%r10
shrq $52,%r9
salq $12,%r10
orq %r10,%r9
vpmadd52luq 0(%rsi),%ymm3,%ymm1
vpmadd52luq 32(%rsi),%ymm3,%ymm16
vpmadd52luq 64(%rsi),%ymm3,%ymm17
vpmadd52luq 96(%rsi),%ymm3,%ymm18
vpmadd52luq 128(%rsi),%ymm3,%ymm19
vpmadd52luq 0(%rcx),%ymm4,%ymm1
vpmadd52luq 32(%rcx),%ymm4,%ymm16
vpmadd52luq 64(%rcx),%ymm4,%ymm17
vpmadd52luq 96(%rcx),%ymm4,%ymm18
vpmadd52luq 128(%rcx),%ymm4,%ymm19
valignq $1,%ymm1,%ymm16,%ymm1
valignq $1,%ymm16,%ymm17,%ymm16
valignq $1,%ymm17,%ymm18,%ymm17
valignq $1,%ymm18,%ymm19,%ymm18
valignq $1,%ymm19,%ymm0,%ymm19
vmovq %xmm1,%r13
addq %r13,%r9
vpmadd52huq 0(%rsi),%ymm3,%ymm1
vpmadd52huq 32(%rsi),%ymm3,%ymm16
vpmadd52huq 64(%rsi),%ymm3,%ymm17
vpmadd52huq 96(%rsi),%ymm3,%ymm18
vpmadd52huq 128(%rsi),%ymm3,%ymm19
vpmadd52huq 0(%rcx),%ymm4,%ymm1
vpmadd52huq 32(%rcx),%ymm4,%ymm16
vpmadd52huq 64(%rcx),%ymm4,%ymm17
vpmadd52huq 96(%rcx),%ymm4,%ymm18
vpmadd52huq 128(%rcx),%ymm4,%ymm19
movq 16(%r11),%r13
vpbroadcastq %r13,%ymm3
movq 0(%rsi),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
movq %r12,%r10
adcq $0,%r10
movq %r8,%r13
imulq %r9,%r13
andq %rax,%r13
vpbroadcastq %r13,%ymm4
movq 0(%rcx),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
adcq %r12,%r10
shrq $52,%r9
salq $12,%r10
orq %r10,%r9
vpmadd52luq 0(%rsi),%ymm3,%ymm1
vpmadd52luq 32(%rsi),%ymm3,%ymm16
vpmadd52luq 64(%rsi),%ymm3,%ymm17
vpmadd52luq 96(%rsi),%ymm3,%ymm18
vpmadd52luq 128(%rsi),%ymm3,%ymm19
vpmadd52luq 0(%rcx),%ymm4,%ymm1
vpmadd52luq 32(%rcx),%ymm4,%ymm16
vpmadd52luq 64(%rcx),%ymm4,%ymm17
vpmadd52luq 96(%rcx),%ymm4,%ymm18
vpmadd52luq 128(%rcx),%ymm4,%ymm19
valignq $1,%ymm1,%ymm16,%ymm1
valignq $1,%ymm16,%ymm17,%ymm16
valignq $1,%ymm17,%ymm18,%ymm17
valignq $1,%ymm18,%ymm19,%ymm18
valignq $1,%ymm19,%ymm0,%ymm19
vmovq %xmm1,%r13
addq %r13,%r9
vpmadd52huq 0(%rsi),%ymm3,%ymm1
vpmadd52huq 32(%rsi),%ymm3,%ymm16
vpmadd52huq 64(%rsi),%ymm3,%ymm17
vpmadd52huq 96(%rsi),%ymm3,%ymm18
vpmadd52huq 128(%rsi),%ymm3,%ymm19
vpmadd52huq 0(%rcx),%ymm4,%ymm1
vpmadd52huq 32(%rcx),%ymm4,%ymm16
vpmadd52huq 64(%rcx),%ymm4,%ymm17
vpmadd52huq 96(%rcx),%ymm4,%ymm18
vpmadd52huq 128(%rcx),%ymm4,%ymm19
movq 24(%r11),%r13
vpbroadcastq %r13,%ymm3
movq 0(%rsi),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
movq %r12,%r10
adcq $0,%r10
movq %r8,%r13
imulq %r9,%r13
andq %rax,%r13
vpbroadcastq %r13,%ymm4
movq 0(%rcx),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
adcq %r12,%r10
shrq $52,%r9
salq $12,%r10
orq %r10,%r9
vpmadd52luq 0(%rsi),%ymm3,%ymm1
vpmadd52luq 32(%rsi),%ymm3,%ymm16
vpmadd52luq 64(%rsi),%ymm3,%ymm17
vpmadd52luq 96(%rsi),%ymm3,%ymm18
vpmadd52luq 128(%rsi),%ymm3,%ymm19
vpmadd52luq 0(%rcx),%ymm4,%ymm1
vpmadd52luq 32(%rcx),%ymm4,%ymm16
vpmadd52luq 64(%rcx),%ymm4,%ymm17
vpmadd52luq 96(%rcx),%ymm4,%ymm18
vpmadd52luq 128(%rcx),%ymm4,%ymm19
valignq $1,%ymm1,%ymm16,%ymm1
valignq $1,%ymm16,%ymm17,%ymm16
valignq $1,%ymm17,%ymm18,%ymm17
valignq $1,%ymm18,%ymm19,%ymm18
valignq $1,%ymm19,%ymm0,%ymm19
vmovq %xmm1,%r13
addq %r13,%r9
vpmadd52huq 0(%rsi),%ymm3,%ymm1
vpmadd52huq 32(%rsi),%ymm3,%ymm16
vpmadd52huq 64(%rsi),%ymm3,%ymm17
vpmadd52huq 96(%rsi),%ymm3,%ymm18
vpmadd52huq 128(%rsi),%ymm3,%ymm19
vpmadd52huq 0(%rcx),%ymm4,%ymm1
vpmadd52huq 32(%rcx),%ymm4,%ymm16
vpmadd52huq 64(%rcx),%ymm4,%ymm17
vpmadd52huq 96(%rcx),%ymm4,%ymm18
vpmadd52huq 128(%rcx),%ymm4,%ymm19
leaq 32(%r11),%r11
decl %ebx
jne .Lloop5
vmovdqa64 .Lmask52x4(%rip),%ymm4
vpbroadcastq %r9,%ymm3
vpblendd $3,%ymm3,%ymm1,%ymm1
vpsrlq $52,%ymm1,%ymm24
vpsrlq $52,%ymm16,%ymm25
vpsrlq $52,%ymm17,%ymm26
vpsrlq $52,%ymm18,%ymm27
vpsrlq $52,%ymm19,%ymm28
valignq $3,%ymm27,%ymm28,%ymm28
valignq $3,%ymm26,%ymm27,%ymm27
valignq $3,%ymm25,%ymm26,%ymm26
valignq $3,%ymm24,%ymm25,%ymm25
valignq $3,%ymm0,%ymm24,%ymm24
vpandq %ymm4,%ymm1,%ymm1
vpandq %ymm4,%ymm16,%ymm16
vpandq %ymm4,%ymm17,%ymm17
vpandq %ymm4,%ymm18,%ymm18
vpandq %ymm4,%ymm19,%ymm19
vpaddq %ymm24,%ymm1,%ymm1
vpaddq %ymm25,%ymm16,%ymm16
vpaddq %ymm26,%ymm17,%ymm17
vpaddq %ymm27,%ymm18,%ymm18
vpaddq %ymm28,%ymm19,%ymm19
vpcmpuq $1,%ymm1,%ymm4,%k1
vpcmpuq $1,%ymm16,%ymm4,%k2
vpcmpuq $1,%ymm17,%ymm4,%k3
vpcmpuq $1,%ymm18,%ymm4,%k4
vpcmpuq $1,%ymm19,%ymm4,%k5
kmovb %k1,%r14d
kmovb %k2,%r13d
kmovb %k3,%r12d
kmovb %k4,%r11d
kmovb %k5,%r10d
vpcmpuq $0,%ymm1,%ymm4,%k1
vpcmpuq $0,%ymm16,%ymm4,%k2
vpcmpuq $0,%ymm17,%ymm4,%k3
vpcmpuq $0,%ymm18,%ymm4,%k4
vpcmpuq $0,%ymm19,%ymm4,%k5
kmovb %k1,%r9d
kmovb %k2,%r8d
kmovb %k3,%ebx
kmovb %k4,%ecx
kmovb %k5,%edx
shlb $4,%r13b
orb %r13b,%r14b
shlb $4,%r11b
orb %r11b,%r12b
addb %r14b,%r14b
adcb %r12b,%r12b
adcb %r10b,%r10b
shlb $4,%r8b
orb %r8b,%r9b
shlb $4,%cl
orb %cl,%bl
addb %r9b,%r14b
adcb %bl,%r12b
adcb %dl,%r10b
xorb %r9b,%r14b
xorb %bl,%r12b
xorb %dl,%r10b
kmovb %r14d,%k1
shrb $4,%r14b
kmovb %r14d,%k2
kmovb %r12d,%k3
shrb $4,%r12b
kmovb %r12d,%k4
kmovb %r10d,%k5
vpsubq %ymm4,%ymm1,%ymm1{%k1}
vpsubq %ymm4,%ymm16,%ymm16{%k2}
vpsubq %ymm4,%ymm17,%ymm17{%k3}
vpsubq %ymm4,%ymm18,%ymm18{%k4}
vpsubq %ymm4,%ymm19,%ymm19{%k5}
vpandq %ymm4,%ymm1,%ymm1
vpandq %ymm4,%ymm16,%ymm16
vpandq %ymm4,%ymm17,%ymm17
vpandq %ymm4,%ymm18,%ymm18
vpandq %ymm4,%ymm19,%ymm19
vmovdqu64 %ymm1,(%rdi)
vmovdqu64 %ymm16,32(%rdi)
vmovdqu64 %ymm17,64(%rdi)
vmovdqu64 %ymm18,96(%rdi)
vmovdqu64 %ymm19,128(%rdi)
vzeroupper
movq 0(%rsp),%r15
.cfi_restore %r15
movq 8(%rsp),%r14
.cfi_restore %r14
movq 16(%rsp),%r13
.cfi_restore %r13
movq 24(%rsp),%r12
.cfi_restore %r12
movq 32(%rsp),%rbp
.cfi_restore %rbp
movq 40(%rsp),%rbx
.cfi_restore %rbx
leaq 48(%rsp),%rsp
.cfi_adjust_cfa_offset -48
.Lrsaz_amm52x20_x1_256_epilogue:
.byte 0xf3,0xc3
.cfi_endproc
.size ossl_rsaz_amm52x20_x1_256, .-ossl_rsaz_amm52x20_x1_256
.data
.align 32
.Lmask52x4:
.quad 0xfffffffffffff
.quad 0xfffffffffffff
.quad 0xfffffffffffff
.quad 0xfffffffffffff
.text
.globl ossl_rsaz_amm52x20_x2_256
.type ossl_rsaz_amm52x20_x2_256,@function
.align 32
ossl_rsaz_amm52x20_x2_256:
.cfi_startproc
.byte 243,15,30,250
pushq %rbx
.cfi_adjust_cfa_offset 8
.cfi_offset %rbx,-16
pushq %rbp
.cfi_adjust_cfa_offset 8
.cfi_offset %rbp,-24
pushq %r12
.cfi_adjust_cfa_offset 8
.cfi_offset %r12,-32
pushq %r13
.cfi_adjust_cfa_offset 8
.cfi_offset %r13,-40
pushq %r14
.cfi_adjust_cfa_offset 8
.cfi_offset %r14,-48
pushq %r15
.cfi_adjust_cfa_offset 8
.cfi_offset %r15,-56
.Lrsaz_amm52x20_x2_256_body:
vpxord %ymm0,%ymm0,%ymm0
vmovdqa64 %ymm0,%ymm1
vmovdqa64 %ymm0,%ymm16
vmovdqa64 %ymm0,%ymm17
vmovdqa64 %ymm0,%ymm18
vmovdqa64 %ymm0,%ymm19
vmovdqa64 %ymm0,%ymm2
vmovdqa64 %ymm0,%ymm20
vmovdqa64 %ymm0,%ymm21
vmovdqa64 %ymm0,%ymm22
vmovdqa64 %ymm0,%ymm23
xorl %r9d,%r9d
xorl %r15d,%r15d
movq %rdx,%r11
movq $0xfffffffffffff,%rax
movl $20,%ebx
.align 32
.Lloop20:
movq 0(%r11),%r13
vpbroadcastq %r13,%ymm3
movq 0(%rsi),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
movq %r12,%r10
adcq $0,%r10
movq (%r8),%r13
imulq %r9,%r13
andq %rax,%r13
vpbroadcastq %r13,%ymm4
movq 0(%rcx),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r9
adcq %r12,%r10
shrq $52,%r9
salq $12,%r10
orq %r10,%r9
vpmadd52luq 0(%rsi),%ymm3,%ymm1
vpmadd52luq 32(%rsi),%ymm3,%ymm16
vpmadd52luq 64(%rsi),%ymm3,%ymm17
vpmadd52luq 96(%rsi),%ymm3,%ymm18
vpmadd52luq 128(%rsi),%ymm3,%ymm19
vpmadd52luq 0(%rcx),%ymm4,%ymm1
vpmadd52luq 32(%rcx),%ymm4,%ymm16
vpmadd52luq 64(%rcx),%ymm4,%ymm17
vpmadd52luq 96(%rcx),%ymm4,%ymm18
vpmadd52luq 128(%rcx),%ymm4,%ymm19
valignq $1,%ymm1,%ymm16,%ymm1
valignq $1,%ymm16,%ymm17,%ymm16
valignq $1,%ymm17,%ymm18,%ymm17
valignq $1,%ymm18,%ymm19,%ymm18
valignq $1,%ymm19,%ymm0,%ymm19
vmovq %xmm1,%r13
addq %r13,%r9
vpmadd52huq 0(%rsi),%ymm3,%ymm1
vpmadd52huq 32(%rsi),%ymm3,%ymm16
vpmadd52huq 64(%rsi),%ymm3,%ymm17
vpmadd52huq 96(%rsi),%ymm3,%ymm18
vpmadd52huq 128(%rsi),%ymm3,%ymm19
vpmadd52huq 0(%rcx),%ymm4,%ymm1
vpmadd52huq 32(%rcx),%ymm4,%ymm16
vpmadd52huq 64(%rcx),%ymm4,%ymm17
vpmadd52huq 96(%rcx),%ymm4,%ymm18
vpmadd52huq 128(%rcx),%ymm4,%ymm19
movq 160(%r11),%r13
vpbroadcastq %r13,%ymm3
movq 160(%rsi),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r15
movq %r12,%r10
adcq $0,%r10
movq 8(%r8),%r13
imulq %r15,%r13
andq %rax,%r13
vpbroadcastq %r13,%ymm4
movq 160(%rcx),%rdx
mulxq %r13,%r13,%r12
addq %r13,%r15
adcq %r12,%r10
shrq $52,%r15
salq $12,%r10
orq %r10,%r15
vpmadd52luq 160(%rsi),%ymm3,%ymm2
vpmadd52luq 192(%rsi),%ymm3,%ymm20
vpmadd52luq 224(%rsi),%ymm3,%ymm21
vpmadd52luq 256(%rsi),%ymm3,%ymm22
vpmadd52luq 288(%rsi),%ymm3,%ymm23
vpmadd52luq 160(%rcx),%ymm4,%ymm2
vpmadd52luq 192(%rcx),%ymm4,%ymm20
vpmadd52luq 224(%rcx),%ymm4,%ymm21
vpmadd52luq 256(%rcx),%ymm4,%ymm22
vpmadd52luq 288(%rcx),%ymm4,%ymm23
valignq $1,%ymm2,%ymm20,%ymm2
valignq $1,%ymm20,%ymm21,%ymm20
valignq $1,%ymm21,%ymm22,%ymm21
valignq $1,%ymm22,%ymm23,%ymm22
valignq $1,%ymm23,%ymm0,%ymm23
vmovq %xmm2,%r13
addq %r13,%r15
vpmadd52huq 160(%rsi),%ymm3,%ymm2
vpmadd52huq 192(%rsi),%ymm3,%ymm20
vpmadd52huq 224(%rsi),%ymm3,%ymm21
vpmadd52huq 256(%rsi),%ymm3,%ymm22
vpmadd52huq 288(%rsi),%ymm3,%ymm23
vpmadd52huq 160(%rcx),%ymm4,%ymm2
vpmadd52huq 192(%rcx),%ymm4,%ymm20
vpmadd52huq 224(%rcx),%ymm4,%ymm21
vpmadd52huq 256(%rcx),%ymm4,%ymm22
vpmadd52huq 288(%rcx),%ymm4,%ymm23
leaq 8(%r11),%r11
decl %ebx
jne .Lloop20
vmovdqa64 .Lmask52x4(%rip),%ymm4
vpbroadcastq %r9,%ymm3
vpblendd $3,%ymm3,%ymm1,%ymm1
vpsrlq $52,%ymm1,%ymm24
vpsrlq $52,%ymm16,%ymm25
vpsrlq $52,%ymm17,%ymm26
vpsrlq $52,%ymm18,%ymm27
vpsrlq $52,%ymm19,%ymm28
valignq $3,%ymm27,%ymm28,%ymm28
valignq $3,%ymm26,%ymm27,%ymm27
valignq $3,%ymm25,%ymm26,%ymm26
valignq $3,%ymm24,%ymm25,%ymm25
valignq $3,%ymm0,%ymm24,%ymm24
vpandq %ymm4,%ymm1,%ymm1
vpandq %ymm4,%ymm16,%ymm16
vpandq %ymm4,%ymm17,%ymm17
vpandq %ymm4,%ymm18,%ymm18
vpandq %ymm4,%ymm19,%ymm19
vpaddq %ymm24,%ymm1,%ymm1
vpaddq %ymm25,%ymm16,%ymm16
vpaddq %ymm26,%ymm17,%ymm17
vpaddq %ymm27,%ymm18,%ymm18
vpaddq %ymm28,%ymm19,%ymm19
vpcmpuq $1,%ymm1,%ymm4,%k1
vpcmpuq $1,%ymm16,%ymm4,%k2
vpcmpuq $1,%ymm17,%ymm4,%k3
vpcmpuq $1,%ymm18,%ymm4,%k4
vpcmpuq $1,%ymm19,%ymm4,%k5
kmovb %k1,%r14d
kmovb %k2,%r13d
kmovb %k3,%r12d
kmovb %k4,%r11d
kmovb %k5,%r10d
vpcmpuq $0,%ymm1,%ymm4,%k1
vpcmpuq $0,%ymm16,%ymm4,%k2
vpcmpuq $0,%ymm17,%ymm4,%k3
vpcmpuq $0,%ymm18,%ymm4,%k4
vpcmpuq $0,%ymm19,%ymm4,%k5
kmovb %k1,%r9d
kmovb %k2,%r8d
kmovb %k3,%ebx
kmovb %k4,%ecx
kmovb %k5,%edx
shlb $4,%r13b
orb %r13b,%r14b
shlb $4,%r11b
orb %r11b,%r12b
addb %r14b,%r14b
adcb %r12b,%r12b
adcb %r10b,%r10b
shlb $4,%r8b
orb %r8b,%r9b
shlb $4,%cl
orb %cl,%bl
addb %r9b,%r14b
adcb %bl,%r12b
adcb %dl,%r10b
xorb %r9b,%r14b
xorb %bl,%r12b
xorb %dl,%r10b
kmovb %r14d,%k1
shrb $4,%r14b
kmovb %r14d,%k2
kmovb %r12d,%k3
shrb $4,%r12b
kmovb %r12d,%k4
kmovb %r10d,%k5
vpsubq %ymm4,%ymm1,%ymm1{%k1}
vpsubq %ymm4,%ymm16,%ymm16{%k2}
vpsubq %ymm4,%ymm17,%ymm17{%k3}
vpsubq %ymm4,%ymm18,%ymm18{%k4}
vpsubq %ymm4,%ymm19,%ymm19{%k5}
vpandq %ymm4,%ymm1,%ymm1
vpandq %ymm4,%ymm16,%ymm16
vpandq %ymm4,%ymm17,%ymm17
vpandq %ymm4,%ymm18,%ymm18
vpandq %ymm4,%ymm19,%ymm19
vpbroadcastq %r15,%ymm3
vpblendd $3,%ymm3,%ymm2,%ymm2
vpsrlq $52,%ymm2,%ymm24
vpsrlq $52,%ymm20,%ymm25
vpsrlq $52,%ymm21,%ymm26
vpsrlq $52,%ymm22,%ymm27
vpsrlq $52,%ymm23,%ymm28
valignq $3,%ymm27,%ymm28,%ymm28
valignq $3,%ymm26,%ymm27,%ymm27
valignq $3,%ymm25,%ymm26,%ymm26
valignq $3,%ymm24,%ymm25,%ymm25
valignq $3,%ymm0,%ymm24,%ymm24
vpandq %ymm4,%ymm2,%ymm2
vpandq %ymm4,%ymm20,%ymm20
vpandq %ymm4,%ymm21,%ymm21
vpandq %ymm4,%ymm22,%ymm22
vpandq %ymm4,%ymm23,%ymm23
vpaddq %ymm24,%ymm2,%ymm2
vpaddq %ymm25,%ymm20,%ymm20
vpaddq %ymm26,%ymm21,%ymm21
vpaddq %ymm27,%ymm22,%ymm22
vpaddq %ymm28,%ymm23,%ymm23
vpcmpuq $1,%ymm2,%ymm4,%k1
vpcmpuq $1,%ymm20,%ymm4,%k2
vpcmpuq $1,%ymm21,%ymm4,%k3
vpcmpuq $1,%ymm22,%ymm4,%k4
vpcmpuq $1,%ymm23,%ymm4,%k5
kmovb %k1,%r14d
kmovb %k2,%r13d
kmovb %k3,%r12d
kmovb %k4,%r11d
kmovb %k5,%r10d
vpcmpuq $0,%ymm2,%ymm4,%k1
vpcmpuq $0,%ymm20,%ymm4,%k2
vpcmpuq $0,%ymm21,%ymm4,%k3
vpcmpuq $0,%ymm22,%ymm4,%k4
vpcmpuq $0,%ymm23,%ymm4,%k5
kmovb %k1,%r9d
kmovb %k2,%r8d
kmovb %k3,%ebx
kmovb %k4,%ecx
kmovb %k5,%edx
shlb $4,%r13b
orb %r13b,%r14b
shlb $4,%r11b
orb %r11b,%r12b
addb %r14b,%r14b
adcb %r12b,%r12b
adcb %r10b,%r10b
shlb $4,%r8b
orb %r8b,%r9b
shlb $4,%cl
orb %cl,%bl
addb %r9b,%r14b
adcb %bl,%r12b
adcb %dl,%r10b
xorb %r9b,%r14b
xorb %bl,%r12b
xorb %dl,%r10b
kmovb %r14d,%k1
shrb $4,%r14b
kmovb %r14d,%k2
kmovb %r12d,%k3
shrb $4,%r12b
kmovb %r12d,%k4
kmovb %r10d,%k5
vpsubq %ymm4,%ymm2,%ymm2{%k1}
vpsubq %ymm4,%ymm20,%ymm20{%k2}
vpsubq %ymm4,%ymm21,%ymm21{%k3}
vpsubq %ymm4,%ymm22,%ymm22{%k4}
vpsubq %ymm4,%ymm23,%ymm23{%k5}
vpandq %ymm4,%ymm2,%ymm2
vpandq %ymm4,%ymm20,%ymm20
vpandq %ymm4,%ymm21,%ymm21
vpandq %ymm4,%ymm22,%ymm22
vpandq %ymm4,%ymm23,%ymm23
vmovdqu64 %ymm1,(%rdi)
vmovdqu64 %ymm16,32(%rdi)
vmovdqu64 %ymm17,64(%rdi)
vmovdqu64 %ymm18,96(%rdi)
vmovdqu64 %ymm19,128(%rdi)
vmovdqu64 %ymm2,160(%rdi)
vmovdqu64 %ymm20,192(%rdi)
vmovdqu64 %ymm21,224(%rdi)
vmovdqu64 %ymm22,256(%rdi)
vmovdqu64 %ymm23,288(%rdi)
vzeroupper
movq 0(%rsp),%r15
.cfi_restore %r15
movq 8(%rsp),%r14
.cfi_restore %r14
movq 16(%rsp),%r13
.cfi_restore %r13
movq 24(%rsp),%r12
.cfi_restore %r12
movq 32(%rsp),%rbp
.cfi_restore %rbp
movq 40(%rsp),%rbx
.cfi_restore %rbx
leaq 48(%rsp),%rsp
.cfi_adjust_cfa_offset -48
.Lrsaz_amm52x20_x2_256_epilogue:
.byte 0xf3,0xc3
.cfi_endproc
.size ossl_rsaz_amm52x20_x2_256, .-ossl_rsaz_amm52x20_x2_256
.text
.align 32
.globl ossl_extract_multiplier_2x20_win5
.type ossl_extract_multiplier_2x20_win5,@function
ossl_extract_multiplier_2x20_win5:
.cfi_startproc
.byte 243,15,30,250
leaq (%rcx,%rcx,4),%rax
salq $5,%rax
addq %rax,%rsi
vmovdqa64 .Lones(%rip),%ymm23
vpbroadcastq %rdx,%ymm22
leaq 10240(%rsi),%rax
vpxor %xmm4,%xmm4,%xmm4
vmovdqa64 %ymm4,%ymm3
vmovdqa64 %ymm4,%ymm2
vmovdqa64 %ymm4,%ymm1
vmovdqa64 %ymm4,%ymm0
vmovdqa64 %ymm4,%ymm21
.align 32
.Lloop:
vpcmpq $0,%ymm21,%ymm22,%k1
addq $320,%rsi
vpaddq %ymm23,%ymm21,%ymm21
vmovdqu64 -320(%rsi),%ymm16
vmovdqu64 -288(%rsi),%ymm17
vmovdqu64 -256(%rsi),%ymm18
vmovdqu64 -224(%rsi),%ymm19
vmovdqu64 -192(%rsi),%ymm20
vpblendmq %ymm16,%ymm0,%ymm0{%k1}
vpblendmq %ymm17,%ymm1,%ymm1{%k1}
vpblendmq %ymm18,%ymm2,%ymm2{%k1}
vpblendmq %ymm19,%ymm3,%ymm3{%k1}
vpblendmq %ymm20,%ymm4,%ymm4{%k1}
cmpq %rsi,%rax
jne .Lloop
vmovdqu64 %ymm0,(%rdi)
vmovdqu64 %ymm1,32(%rdi)
vmovdqu64 %ymm2,64(%rdi)
vmovdqu64 %ymm3,96(%rdi)
vmovdqu64 %ymm4,128(%rdi)
.byte 0xf3,0xc3
.cfi_endproc
.size ossl_extract_multiplier_2x20_win5, .-ossl_extract_multiplier_2x20_win5
.data
.align 32
.Lones:
.quad 1,1,1,1
.section ".note.gnu.property", "a"
.p2align 3
.long 1f - 0f
.long 4f - 1f
.long 5
0:
# "GNU" encoded with .byte, since .asciz isn't supported
# on Solaris.
.byte 0x47
.byte 0x4e
.byte 0x55
.byte 0
1:
.p2align 3
.long 0xc0000002
.long 3f - 2f
2:
.long 3
3:
.p2align 3
4:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,332 @@
.text
.type _mul_1x1,@function
.align 16
_mul_1x1:
.cfi_startproc
subq $128+8,%rsp
.cfi_adjust_cfa_offset 128+8
movq $-1,%r9
leaq (%rax,%rax,1),%rsi
shrq $3,%r9
leaq (,%rax,4),%rdi
andq %rax,%r9
leaq (,%rax,8),%r12
sarq $63,%rax
leaq (%r9,%r9,1),%r10
sarq $63,%rsi
leaq (,%r9,4),%r11
andq %rbp,%rax
sarq $63,%rdi
movq %rax,%rdx
shlq $63,%rax
andq %rbp,%rsi
shrq $1,%rdx
movq %rsi,%rcx
shlq $62,%rsi
andq %rbp,%rdi
shrq $2,%rcx
xorq %rsi,%rax
movq %rdi,%rbx
shlq $61,%rdi
xorq %rcx,%rdx
shrq $3,%rbx
xorq %rdi,%rax
xorq %rbx,%rdx
movq %r9,%r13
movq $0,0(%rsp)
xorq %r10,%r13
movq %r9,8(%rsp)
movq %r11,%r14
movq %r10,16(%rsp)
xorq %r12,%r14
movq %r13,24(%rsp)
xorq %r11,%r9
movq %r11,32(%rsp)
xorq %r11,%r10
movq %r9,40(%rsp)
xorq %r11,%r13
movq %r10,48(%rsp)
xorq %r14,%r9
movq %r13,56(%rsp)
xorq %r14,%r10
movq %r12,64(%rsp)
xorq %r14,%r13
movq %r9,72(%rsp)
xorq %r11,%r9
movq %r10,80(%rsp)
xorq %r11,%r10
movq %r13,88(%rsp)
xorq %r11,%r13
movq %r14,96(%rsp)
movq %r8,%rsi
movq %r9,104(%rsp)
andq %rbp,%rsi
movq %r10,112(%rsp)
shrq $4,%rbp
movq %r13,120(%rsp)
movq %r8,%rdi
andq %rbp,%rdi
shrq $4,%rbp
movq (%rsp,%rsi,8),%xmm0
movq %r8,%rsi
andq %rbp,%rsi
shrq $4,%rbp
movq (%rsp,%rdi,8),%rcx
movq %r8,%rdi
movq %rcx,%rbx
shlq $4,%rcx
andq %rbp,%rdi
movq (%rsp,%rsi,8),%xmm1
shrq $60,%rbx
xorq %rcx,%rax
pslldq $1,%xmm1
movq %r8,%rsi
shrq $4,%rbp
xorq %rbx,%rdx
andq %rbp,%rsi
shrq $4,%rbp
pxor %xmm1,%xmm0
movq (%rsp,%rdi,8),%rcx
movq %r8,%rdi
movq %rcx,%rbx
shlq $12,%rcx
andq %rbp,%rdi
movq (%rsp,%rsi,8),%xmm1
shrq $52,%rbx
xorq %rcx,%rax
pslldq $2,%xmm1
movq %r8,%rsi
shrq $4,%rbp
xorq %rbx,%rdx
andq %rbp,%rsi
shrq $4,%rbp
pxor %xmm1,%xmm0
movq (%rsp,%rdi,8),%rcx
movq %r8,%rdi
movq %rcx,%rbx
shlq $20,%rcx
andq %rbp,%rdi
movq (%rsp,%rsi,8),%xmm1
shrq $44,%rbx
xorq %rcx,%rax
pslldq $3,%xmm1
movq %r8,%rsi
shrq $4,%rbp
xorq %rbx,%rdx
andq %rbp,%rsi
shrq $4,%rbp
pxor %xmm1,%xmm0
movq (%rsp,%rdi,8),%rcx
movq %r8,%rdi
movq %rcx,%rbx
shlq $28,%rcx
andq %rbp,%rdi
movq (%rsp,%rsi,8),%xmm1
shrq $36,%rbx
xorq %rcx,%rax
pslldq $4,%xmm1
movq %r8,%rsi
shrq $4,%rbp
xorq %rbx,%rdx
andq %rbp,%rsi
shrq $4,%rbp
pxor %xmm1,%xmm0
movq (%rsp,%rdi,8),%rcx
movq %r8,%rdi
movq %rcx,%rbx
shlq $36,%rcx
andq %rbp,%rdi
movq (%rsp,%rsi,8),%xmm1
shrq $28,%rbx
xorq %rcx,%rax
pslldq $5,%xmm1
movq %r8,%rsi
shrq $4,%rbp
xorq %rbx,%rdx
andq %rbp,%rsi
shrq $4,%rbp
pxor %xmm1,%xmm0
movq (%rsp,%rdi,8),%rcx
movq %r8,%rdi
movq %rcx,%rbx
shlq $44,%rcx
andq %rbp,%rdi
movq (%rsp,%rsi,8),%xmm1
shrq $20,%rbx
xorq %rcx,%rax
pslldq $6,%xmm1
movq %r8,%rsi
shrq $4,%rbp
xorq %rbx,%rdx
andq %rbp,%rsi
shrq $4,%rbp
pxor %xmm1,%xmm0
movq (%rsp,%rdi,8),%rcx
movq %r8,%rdi
movq %rcx,%rbx
shlq $52,%rcx
andq %rbp,%rdi
movq (%rsp,%rsi,8),%xmm1
shrq $12,%rbx
xorq %rcx,%rax
pslldq $7,%xmm1
movq %r8,%rsi
shrq $4,%rbp
xorq %rbx,%rdx
andq %rbp,%rsi
shrq $4,%rbp
pxor %xmm1,%xmm0
movq (%rsp,%rdi,8),%rcx
movq %rcx,%rbx
shlq $60,%rcx
.byte 102,72,15,126,198
shrq $4,%rbx
xorq %rcx,%rax
psrldq $8,%xmm0
xorq %rbx,%rdx
.byte 102,72,15,126,199
xorq %rsi,%rax
xorq %rdi,%rdx
addq $128+8,%rsp
.cfi_adjust_cfa_offset -128-8
.byte 0xf3,0xc3
.Lend_mul_1x1:
.cfi_endproc
.size _mul_1x1,.-_mul_1x1
.globl bn_GF2m_mul_2x2
.type bn_GF2m_mul_2x2,@function
.align 16
bn_GF2m_mul_2x2:
.cfi_startproc
movq %rsp,%rax
movq OPENSSL_ia32cap_P(%rip),%r10
btq $33,%r10
jnc .Lvanilla_mul_2x2
.byte 102,72,15,110,198
.byte 102,72,15,110,201
.byte 102,72,15,110,210
.byte 102,73,15,110,216
movdqa %xmm0,%xmm4
movdqa %xmm1,%xmm5
.byte 102,15,58,68,193,0
pxor %xmm2,%xmm4
pxor %xmm3,%xmm5
.byte 102,15,58,68,211,0
.byte 102,15,58,68,229,0
xorps %xmm0,%xmm4
xorps %xmm2,%xmm4
movdqa %xmm4,%xmm5
pslldq $8,%xmm4
psrldq $8,%xmm5
pxor %xmm4,%xmm2
pxor %xmm5,%xmm0
movdqu %xmm2,0(%rdi)
movdqu %xmm0,16(%rdi)
.byte 0xf3,0xc3
.align 16
.Lvanilla_mul_2x2:
leaq -136(%rsp),%rsp
.cfi_adjust_cfa_offset 8*17
movq %r14,80(%rsp)
.cfi_rel_offset %r14,8*10
movq %r13,88(%rsp)
.cfi_rel_offset %r13,8*11
movq %r12,96(%rsp)
.cfi_rel_offset %r12,8*12
movq %rbp,104(%rsp)
.cfi_rel_offset %rbp,8*13
movq %rbx,112(%rsp)
.cfi_rel_offset %rbx,8*14
.Lbody_mul_2x2:
movq %rdi,32(%rsp)
movq %rsi,40(%rsp)
movq %rdx,48(%rsp)
movq %rcx,56(%rsp)
movq %r8,64(%rsp)
movq $0xf,%r8
movq %rsi,%rax
movq %rcx,%rbp
call _mul_1x1
movq %rax,16(%rsp)
movq %rdx,24(%rsp)
movq 48(%rsp),%rax
movq 64(%rsp),%rbp
call _mul_1x1
movq %rax,0(%rsp)
movq %rdx,8(%rsp)
movq 40(%rsp),%rax
movq 56(%rsp),%rbp
xorq 48(%rsp),%rax
xorq 64(%rsp),%rbp
call _mul_1x1
movq 0(%rsp),%rbx
movq 8(%rsp),%rcx
movq 16(%rsp),%rdi
movq 24(%rsp),%rsi
movq 32(%rsp),%rbp
xorq %rdx,%rax
xorq %rcx,%rdx
xorq %rbx,%rax
movq %rbx,0(%rbp)
xorq %rdi,%rdx
movq %rsi,24(%rbp)
xorq %rsi,%rax
xorq %rsi,%rdx
xorq %rdx,%rax
movq %rdx,16(%rbp)
movq %rax,8(%rbp)
movq 80(%rsp),%r14
.cfi_restore %r14
movq 88(%rsp),%r13
.cfi_restore %r13
movq 96(%rsp),%r12
.cfi_restore %r12
movq 104(%rsp),%rbp
.cfi_restore %rbp
movq 112(%rsp),%rbx
.cfi_restore %rbx
leaq 136(%rsp),%rsp
.cfi_adjust_cfa_offset -8*17
.Lepilogue_mul_2x2:
.byte 0xf3,0xc3
.Lend_mul_2x2:
.cfi_endproc
.size bn_GF2m_mul_2x2,.-bn_GF2m_mul_2x2
.byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 16
.section ".note.gnu.property", "a"
.p2align 3
.long 1f - 0f
.long 4f - 1f
.long 5
0:
# "GNU" encoded with .byte, since .asciz isn't supported
# on Solaris.
.byte 0x47
.byte 0x4e
.byte 0x55
.byte 0
1:
.p2align 3
.long 0xc0000002
.long 3f - 2f
2:
.long 3
3:
.p2align 3
4:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff