mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-29 18:27:29 +02:00
Merge pull request #7409 from SparkiDev/asm_x64_rip_fix
SHA-256 x64 ASM - fix use of %rip
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
/* chacha_asm.S */
|
||||
/*
|
||||
* Copyright (C) 2006-2023 wolfSSL Inc.
|
||||
* Copyright (C) 2006-2024 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
@ -536,9 +536,19 @@ chacha_encrypt_avx1:
|
||||
.p2align 4
|
||||
_chacha_encrypt_avx1:
|
||||
#endif /* __APPLE__ */
|
||||
pushq %r12
|
||||
pushq %r13
|
||||
pushq %r14
|
||||
pushq %r15
|
||||
subq $0x190, %rsp
|
||||
movq %rsp, %r9
|
||||
leaq 256(%rsp), %r10
|
||||
leaq L_chacha20_avx1_rotl8(%rip), %r12
|
||||
leaq L_chacha20_avx1_rotl16(%rip), %r13
|
||||
leaq L_chacha20_avx1_add(%rip), %r14
|
||||
leaq L_chacha20_avx1_four(%rip), %r15
|
||||
addq $15, %r9
|
||||
addq $15, %r10
|
||||
andq $-16, %r9
|
||||
andq $-16, %r10
|
||||
movl %ecx, %eax
|
||||
@ -560,7 +570,7 @@ _chacha_encrypt_avx1:
|
||||
vpshufd $0x00, 52(%rdi), %xmm13
|
||||
vpshufd $0x00, 56(%rdi), %xmm14
|
||||
vpshufd $0x00, 60(%rdi), %xmm15
|
||||
vpaddd L_chacha20_avx1_add(%rip), %xmm12, %xmm12
|
||||
vpaddd (%r14), %xmm12, %xmm12
|
||||
vmovdqa %xmm0, (%r9)
|
||||
vmovdqa %xmm1, 16(%r9)
|
||||
vmovdqa %xmm2, 32(%r9)
|
||||
@ -584,22 +594,22 @@ L_chacha20_avx1_loop128:
|
||||
vpaddd %xmm4, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm12, %xmm12
|
||||
vmovdqa 48(%r10), %xmm11
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm12, %xmm12
|
||||
vpshufb (%r13), %xmm12, %xmm12
|
||||
vpaddd %xmm12, %xmm8, %xmm8
|
||||
vpxor %xmm8, %xmm4, %xmm4
|
||||
vpaddd %xmm5, %xmm1, %xmm1
|
||||
vpxor %xmm1, %xmm13, %xmm13
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm13, %xmm13
|
||||
vpshufb (%r13), %xmm13, %xmm13
|
||||
vpaddd %xmm13, %xmm9, %xmm9
|
||||
vpxor %xmm9, %xmm5, %xmm5
|
||||
vpaddd %xmm6, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm14, %xmm14
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm14, %xmm14
|
||||
vpshufb (%r13), %xmm14, %xmm14
|
||||
vpaddd %xmm14, %xmm10, %xmm10
|
||||
vpxor %xmm10, %xmm6, %xmm6
|
||||
vpaddd %xmm7, %xmm3, %xmm3
|
||||
vpxor %xmm3, %xmm15, %xmm15
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm15, %xmm15
|
||||
vpshufb (%r13), %xmm15, %xmm15
|
||||
vpaddd %xmm15, %xmm11, %xmm11
|
||||
vpxor %xmm11, %xmm7, %xmm7
|
||||
vmovdqa %xmm11, 48(%r10)
|
||||
@ -618,22 +628,22 @@ L_chacha20_avx1_loop128:
|
||||
vpaddd %xmm4, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm12, %xmm12
|
||||
vmovdqa 48(%r10), %xmm11
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm12, %xmm12
|
||||
vpshufb (%r12), %xmm12, %xmm12
|
||||
vpaddd %xmm12, %xmm8, %xmm8
|
||||
vpxor %xmm8, %xmm4, %xmm4
|
||||
vpaddd %xmm5, %xmm1, %xmm1
|
||||
vpxor %xmm1, %xmm13, %xmm13
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm13, %xmm13
|
||||
vpshufb (%r12), %xmm13, %xmm13
|
||||
vpaddd %xmm13, %xmm9, %xmm9
|
||||
vpxor %xmm9, %xmm5, %xmm5
|
||||
vpaddd %xmm6, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm14, %xmm14
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm14, %xmm14
|
||||
vpshufb (%r12), %xmm14, %xmm14
|
||||
vpaddd %xmm14, %xmm10, %xmm10
|
||||
vpxor %xmm10, %xmm6, %xmm6
|
||||
vpaddd %xmm7, %xmm3, %xmm3
|
||||
vpxor %xmm3, %xmm15, %xmm15
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm15, %xmm15
|
||||
vpshufb (%r12), %xmm15, %xmm15
|
||||
vpaddd %xmm15, %xmm11, %xmm11
|
||||
vpxor %xmm11, %xmm7, %xmm7
|
||||
vmovdqa %xmm11, 48(%r10)
|
||||
@ -652,22 +662,22 @@ L_chacha20_avx1_loop128:
|
||||
vpaddd %xmm5, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm15, %xmm15
|
||||
vmovdqa 48(%r10), %xmm11
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm15, %xmm15
|
||||
vpshufb (%r13), %xmm15, %xmm15
|
||||
vpaddd %xmm15, %xmm10, %xmm10
|
||||
vpxor %xmm10, %xmm5, %xmm5
|
||||
vpaddd %xmm6, %xmm1, %xmm1
|
||||
vpxor %xmm1, %xmm12, %xmm12
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm12, %xmm12
|
||||
vpshufb (%r13), %xmm12, %xmm12
|
||||
vpaddd %xmm12, %xmm11, %xmm11
|
||||
vpxor %xmm11, %xmm6, %xmm6
|
||||
vpaddd %xmm7, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm13, %xmm13
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm13, %xmm13
|
||||
vpshufb (%r13), %xmm13, %xmm13
|
||||
vpaddd %xmm13, %xmm8, %xmm8
|
||||
vpxor %xmm8, %xmm7, %xmm7
|
||||
vpaddd %xmm4, %xmm3, %xmm3
|
||||
vpxor %xmm3, %xmm14, %xmm14
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm14, %xmm14
|
||||
vpshufb (%r13), %xmm14, %xmm14
|
||||
vpaddd %xmm14, %xmm9, %xmm9
|
||||
vpxor %xmm9, %xmm4, %xmm4
|
||||
vmovdqa %xmm11, 48(%r10)
|
||||
@ -686,22 +696,22 @@ L_chacha20_avx1_loop128:
|
||||
vpaddd %xmm5, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm15, %xmm15
|
||||
vmovdqa 48(%r10), %xmm11
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm15, %xmm15
|
||||
vpshufb (%r12), %xmm15, %xmm15
|
||||
vpaddd %xmm15, %xmm10, %xmm10
|
||||
vpxor %xmm10, %xmm5, %xmm5
|
||||
vpaddd %xmm6, %xmm1, %xmm1
|
||||
vpxor %xmm1, %xmm12, %xmm12
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm12, %xmm12
|
||||
vpshufb (%r12), %xmm12, %xmm12
|
||||
vpaddd %xmm12, %xmm11, %xmm11
|
||||
vpxor %xmm11, %xmm6, %xmm6
|
||||
vpaddd %xmm7, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm13, %xmm13
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm13, %xmm13
|
||||
vpshufb (%r12), %xmm13, %xmm13
|
||||
vpaddd %xmm13, %xmm8, %xmm8
|
||||
vpxor %xmm8, %xmm7, %xmm7
|
||||
vpaddd %xmm4, %xmm3, %xmm3
|
||||
vpxor %xmm3, %xmm14, %xmm14
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm14, %xmm14
|
||||
vpshufb (%r12), %xmm14, %xmm14
|
||||
vpaddd %xmm14, %xmm9, %xmm9
|
||||
vpxor %xmm9, %xmm4, %xmm4
|
||||
vmovdqa %xmm11, 48(%r10)
|
||||
@ -835,7 +845,7 @@ L_chacha20_avx1_loop128:
|
||||
vmovdqa 192(%r9), %xmm12
|
||||
addq $0x100, %rsi
|
||||
addq $0x100, %rdx
|
||||
vpaddd L_chacha20_avx1_four(%rip), %xmm12, %xmm12
|
||||
vpaddd (%r15), %xmm12, %xmm12
|
||||
subl $0x100, %ecx
|
||||
vmovdqa %xmm12, 192(%r9)
|
||||
cmpl $0x100, %ecx
|
||||
@ -876,7 +886,7 @@ L_chacha20_avx1_block_start:
|
||||
L_chacha20_avx1_block_crypt_start:
|
||||
vpaddd %xmm1, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm3, %xmm3
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm3, %xmm3
|
||||
vpshufb (%r13), %xmm3, %xmm3
|
||||
vpaddd %xmm3, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm1, %xmm1
|
||||
vpsrld $20, %xmm1, %xmm4
|
||||
@ -884,7 +894,7 @@ L_chacha20_avx1_block_crypt_start:
|
||||
vpxor %xmm4, %xmm1, %xmm1
|
||||
vpaddd %xmm1, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm3, %xmm3
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm3, %xmm3
|
||||
vpshufb (%r12), %xmm3, %xmm3
|
||||
vpaddd %xmm3, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm1, %xmm1
|
||||
vpsrld $25, %xmm1, %xmm4
|
||||
@ -895,7 +905,7 @@ L_chacha20_avx1_block_crypt_start:
|
||||
vpshufd $0x93, %xmm3, %xmm3
|
||||
vpaddd %xmm1, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm3, %xmm3
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm3, %xmm3
|
||||
vpshufb (%r13), %xmm3, %xmm3
|
||||
vpaddd %xmm3, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm1, %xmm1
|
||||
vpsrld $20, %xmm1, %xmm4
|
||||
@ -903,7 +913,7 @@ L_chacha20_avx1_block_crypt_start:
|
||||
vpxor %xmm4, %xmm1, %xmm1
|
||||
vpaddd %xmm1, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm3, %xmm3
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm3, %xmm3
|
||||
vpshufb (%r12), %xmm3, %xmm3
|
||||
vpaddd %xmm3, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm1, %xmm1
|
||||
vpsrld $25, %xmm1, %xmm4
|
||||
@ -952,7 +962,7 @@ L_chacha20_avx1_block_done:
|
||||
L_chacha20_avx1_partial_crypt_start:
|
||||
vpaddd %xmm1, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm3, %xmm3
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm3, %xmm3
|
||||
vpshufb (%r13), %xmm3, %xmm3
|
||||
vpaddd %xmm3, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm1, %xmm1
|
||||
vpsrld $20, %xmm1, %xmm4
|
||||
@ -960,7 +970,7 @@ L_chacha20_avx1_partial_crypt_start:
|
||||
vpxor %xmm4, %xmm1, %xmm1
|
||||
vpaddd %xmm1, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm3, %xmm3
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm3, %xmm3
|
||||
vpshufb (%r12), %xmm3, %xmm3
|
||||
vpaddd %xmm3, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm1, %xmm1
|
||||
vpsrld $25, %xmm1, %xmm4
|
||||
@ -971,7 +981,7 @@ L_chacha20_avx1_partial_crypt_start:
|
||||
vpshufd $0x93, %xmm3, %xmm3
|
||||
vpaddd %xmm1, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm3, %xmm3
|
||||
vpshufb L_chacha20_avx1_rotl16(%rip), %xmm3, %xmm3
|
||||
vpshufb (%r13), %xmm3, %xmm3
|
||||
vpaddd %xmm3, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm1, %xmm1
|
||||
vpsrld $20, %xmm1, %xmm4
|
||||
@ -979,7 +989,7 @@ L_chacha20_avx1_partial_crypt_start:
|
||||
vpxor %xmm4, %xmm1, %xmm1
|
||||
vpaddd %xmm1, %xmm0, %xmm0
|
||||
vpxor %xmm0, %xmm3, %xmm3
|
||||
vpshufb L_chacha20_avx1_rotl8(%rip), %xmm3, %xmm3
|
||||
vpshufb (%r12), %xmm3, %xmm3
|
||||
vpaddd %xmm3, %xmm2, %xmm2
|
||||
vpxor %xmm2, %xmm1, %xmm1
|
||||
vpsrld $25, %xmm1, %xmm4
|
||||
@ -1023,7 +1033,12 @@ L_chacha20_avx1_partial_end64:
|
||||
subl %r11d, %r8d
|
||||
movl %r8d, 76(%rdi)
|
||||
L_chacha20_avx1_partial_done:
|
||||
vzeroupper
|
||||
addq $0x190, %rsp
|
||||
popq %r15
|
||||
popq %r14
|
||||
popq %r13
|
||||
popq %r12
|
||||
repz retq
|
||||
#ifndef __APPLE__
|
||||
.size chacha_encrypt_avx1,.-chacha_encrypt_avx1
|
||||
@ -1094,9 +1109,18 @@ chacha_encrypt_avx2:
|
||||
.p2align 4
|
||||
_chacha_encrypt_avx2:
|
||||
#endif /* __APPLE__ */
|
||||
subq $0x310, %rsp
|
||||
pushq %r12
|
||||
pushq %r13
|
||||
pushq %r14
|
||||
subq $0x320, %rsp
|
||||
movq %rsp, %r9
|
||||
leaq L_chacha20_avx2_rotl8(%rip), %r11
|
||||
leaq L_chacha20_avx2_rotl16(%rip), %r12
|
||||
leaq L_chacha20_avx2_add(%rip), %r13
|
||||
leaq L_chacha20_avx2_eight(%rip), %r14
|
||||
leaq 512(%rsp), %r10
|
||||
addq $31, %r9
|
||||
addq $31, %r10
|
||||
andq $-32, %r9
|
||||
andq $-32, %r10
|
||||
movl %ecx, %eax
|
||||
@ -1118,7 +1142,7 @@ _chacha_encrypt_avx2:
|
||||
vpbroadcastd 52(%rdi), %ymm13
|
||||
vpbroadcastd 56(%rdi), %ymm14
|
||||
vpbroadcastd 60(%rdi), %ymm15
|
||||
vpaddd L_chacha20_avx2_add(%rip), %ymm12, %ymm12
|
||||
vpaddd (%r13), %ymm12, %ymm12
|
||||
vmovdqa %ymm0, (%r9)
|
||||
vmovdqa %ymm1, 32(%r9)
|
||||
vmovdqa %ymm2, 64(%r9)
|
||||
@ -1142,22 +1166,22 @@ L_chacha20_avx2_loop256:
|
||||
vpaddd %ymm4, %ymm0, %ymm0
|
||||
vpxor %ymm0, %ymm12, %ymm12
|
||||
vmovdqa 96(%r10), %ymm11
|
||||
vpshufb L_chacha20_avx2_rotl16(%rip), %ymm12, %ymm12
|
||||
vpshufb (%r12), %ymm12, %ymm12
|
||||
vpaddd %ymm12, %ymm8, %ymm8
|
||||
vpxor %ymm8, %ymm4, %ymm4
|
||||
vpaddd %ymm5, %ymm1, %ymm1
|
||||
vpxor %ymm1, %ymm13, %ymm13
|
||||
vpshufb L_chacha20_avx2_rotl16(%rip), %ymm13, %ymm13
|
||||
vpshufb (%r12), %ymm13, %ymm13
|
||||
vpaddd %ymm13, %ymm9, %ymm9
|
||||
vpxor %ymm9, %ymm5, %ymm5
|
||||
vpaddd %ymm6, %ymm2, %ymm2
|
||||
vpxor %ymm2, %ymm14, %ymm14
|
||||
vpshufb L_chacha20_avx2_rotl16(%rip), %ymm14, %ymm14
|
||||
vpshufb (%r12), %ymm14, %ymm14
|
||||
vpaddd %ymm14, %ymm10, %ymm10
|
||||
vpxor %ymm10, %ymm6, %ymm6
|
||||
vpaddd %ymm7, %ymm3, %ymm3
|
||||
vpxor %ymm3, %ymm15, %ymm15
|
||||
vpshufb L_chacha20_avx2_rotl16(%rip), %ymm15, %ymm15
|
||||
vpshufb (%r12), %ymm15, %ymm15
|
||||
vpaddd %ymm15, %ymm11, %ymm11
|
||||
vpxor %ymm11, %ymm7, %ymm7
|
||||
vmovdqa %ymm11, 96(%r10)
|
||||
@ -1176,22 +1200,22 @@ L_chacha20_avx2_loop256:
|
||||
vpaddd %ymm4, %ymm0, %ymm0
|
||||
vpxor %ymm0, %ymm12, %ymm12
|
||||
vmovdqa 96(%r10), %ymm11
|
||||
vpshufb L_chacha20_avx2_rotl8(%rip), %ymm12, %ymm12
|
||||
vpshufb (%r11), %ymm12, %ymm12
|
||||
vpaddd %ymm12, %ymm8, %ymm8
|
||||
vpxor %ymm8, %ymm4, %ymm4
|
||||
vpaddd %ymm5, %ymm1, %ymm1
|
||||
vpxor %ymm1, %ymm13, %ymm13
|
||||
vpshufb L_chacha20_avx2_rotl8(%rip), %ymm13, %ymm13
|
||||
vpshufb (%r11), %ymm13, %ymm13
|
||||
vpaddd %ymm13, %ymm9, %ymm9
|
||||
vpxor %ymm9, %ymm5, %ymm5
|
||||
vpaddd %ymm6, %ymm2, %ymm2
|
||||
vpxor %ymm2, %ymm14, %ymm14
|
||||
vpshufb L_chacha20_avx2_rotl8(%rip), %ymm14, %ymm14
|
||||
vpshufb (%r11), %ymm14, %ymm14
|
||||
vpaddd %ymm14, %ymm10, %ymm10
|
||||
vpxor %ymm10, %ymm6, %ymm6
|
||||
vpaddd %ymm7, %ymm3, %ymm3
|
||||
vpxor %ymm3, %ymm15, %ymm15
|
||||
vpshufb L_chacha20_avx2_rotl8(%rip), %ymm15, %ymm15
|
||||
vpshufb (%r11), %ymm15, %ymm15
|
||||
vpaddd %ymm15, %ymm11, %ymm11
|
||||
vpxor %ymm11, %ymm7, %ymm7
|
||||
vmovdqa %ymm11, 96(%r10)
|
||||
@ -1210,22 +1234,22 @@ L_chacha20_avx2_loop256:
|
||||
vpaddd %ymm5, %ymm0, %ymm0
|
||||
vpxor %ymm0, %ymm15, %ymm15
|
||||
vmovdqa 96(%r10), %ymm11
|
||||
vpshufb L_chacha20_avx2_rotl16(%rip), %ymm15, %ymm15
|
||||
vpshufb (%r12), %ymm15, %ymm15
|
||||
vpaddd %ymm15, %ymm10, %ymm10
|
||||
vpxor %ymm10, %ymm5, %ymm5
|
||||
vpaddd %ymm6, %ymm1, %ymm1
|
||||
vpxor %ymm1, %ymm12, %ymm12
|
||||
vpshufb L_chacha20_avx2_rotl16(%rip), %ymm12, %ymm12
|
||||
vpshufb (%r12), %ymm12, %ymm12
|
||||
vpaddd %ymm12, %ymm11, %ymm11
|
||||
vpxor %ymm11, %ymm6, %ymm6
|
||||
vpaddd %ymm7, %ymm2, %ymm2
|
||||
vpxor %ymm2, %ymm13, %ymm13
|
||||
vpshufb L_chacha20_avx2_rotl16(%rip), %ymm13, %ymm13
|
||||
vpshufb (%r12), %ymm13, %ymm13
|
||||
vpaddd %ymm13, %ymm8, %ymm8
|
||||
vpxor %ymm8, %ymm7, %ymm7
|
||||
vpaddd %ymm4, %ymm3, %ymm3
|
||||
vpxor %ymm3, %ymm14, %ymm14
|
||||
vpshufb L_chacha20_avx2_rotl16(%rip), %ymm14, %ymm14
|
||||
vpshufb (%r12), %ymm14, %ymm14
|
||||
vpaddd %ymm14, %ymm9, %ymm9
|
||||
vpxor %ymm9, %ymm4, %ymm4
|
||||
vmovdqa %ymm11, 96(%r10)
|
||||
@ -1244,22 +1268,22 @@ L_chacha20_avx2_loop256:
|
||||
vpaddd %ymm5, %ymm0, %ymm0
|
||||
vpxor %ymm0, %ymm15, %ymm15
|
||||
vmovdqa 96(%r10), %ymm11
|
||||
vpshufb L_chacha20_avx2_rotl8(%rip), %ymm15, %ymm15
|
||||
vpshufb (%r11), %ymm15, %ymm15
|
||||
vpaddd %ymm15, %ymm10, %ymm10
|
||||
vpxor %ymm10, %ymm5, %ymm5
|
||||
vpaddd %ymm6, %ymm1, %ymm1
|
||||
vpxor %ymm1, %ymm12, %ymm12
|
||||
vpshufb L_chacha20_avx2_rotl8(%rip), %ymm12, %ymm12
|
||||
vpshufb (%r11), %ymm12, %ymm12
|
||||
vpaddd %ymm12, %ymm11, %ymm11
|
||||
vpxor %ymm11, %ymm6, %ymm6
|
||||
vpaddd %ymm7, %ymm2, %ymm2
|
||||
vpxor %ymm2, %ymm13, %ymm13
|
||||
vpshufb L_chacha20_avx2_rotl8(%rip), %ymm13, %ymm13
|
||||
vpshufb (%r11), %ymm13, %ymm13
|
||||
vpaddd %ymm13, %ymm8, %ymm8
|
||||
vpxor %ymm8, %ymm7, %ymm7
|
||||
vpaddd %ymm4, %ymm3, %ymm3
|
||||
vpxor %ymm3, %ymm14, %ymm14
|
||||
vpshufb L_chacha20_avx2_rotl8(%rip), %ymm14, %ymm14
|
||||
vpshufb (%r11), %ymm14, %ymm14
|
||||
vpaddd %ymm14, %ymm9, %ymm9
|
||||
vpxor %ymm9, %ymm4, %ymm4
|
||||
vmovdqa %ymm11, 96(%r10)
|
||||
@ -1409,7 +1433,7 @@ L_chacha20_avx2_loop256:
|
||||
vmovdqa 384(%r9), %ymm12
|
||||
addq $0x200, %rsi
|
||||
addq $0x200, %rdx
|
||||
vpaddd L_chacha20_avx2_eight(%rip), %ymm12, %ymm12
|
||||
vpaddd (%r14), %ymm12, %ymm12
|
||||
subl $0x200, %ecx
|
||||
vmovdqa %ymm12, 384(%r9)
|
||||
cmpl $0x200, %ecx
|
||||
@ -1440,7 +1464,11 @@ L_chacha20_avx2_end256:
|
||||
#else
|
||||
callq _chacha_encrypt_avx1
|
||||
#endif /* __APPLE__ */
|
||||
addq $0x310, %rsp
|
||||
vzeroupper
|
||||
addq $0x320, %rsp
|
||||
popq %r14
|
||||
popq %r13
|
||||
popq %r12
|
||||
repz retq
|
||||
#ifndef __APPLE__
|
||||
.size chacha_encrypt_avx2,.-chacha_encrypt_avx2
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* poly1305_asm.S */
|
||||
/*
|
||||
* Copyright (C) 2006-2023 wolfSSL Inc.
|
||||
* Copyright (C) 2006-2024 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
@ -699,7 +699,11 @@ _poly1305_blocks_avx2:
|
||||
#endif /* __APPLE__ */
|
||||
pushq %r12
|
||||
pushq %rbx
|
||||
pushq %r13
|
||||
pushq %r14
|
||||
subq $0x140, %rsp
|
||||
leaq L_poly1305_avx2_blocks_mask(%rip), %r13
|
||||
leaq L_poly1305_avx2_blocks_hibit(%rip), %r14
|
||||
movq %rsp, %rcx
|
||||
andq $-32, %rcx
|
||||
addq $32, %rcx
|
||||
@ -720,11 +724,11 @@ _poly1305_blocks_avx2:
|
||||
vpunpckhdq %ymm15, %ymm1, %ymm1
|
||||
vpunpckldq %ymm15, %ymm3, %ymm2
|
||||
vpunpckhdq %ymm15, %ymm3, %ymm3
|
||||
vmovdqu L_poly1305_avx2_blocks_hibit(%rip), %ymm4
|
||||
vmovdqu (%r14), %ymm4
|
||||
vpsllq $6, %ymm1, %ymm1
|
||||
vpsllq $12, %ymm2, %ymm2
|
||||
vpsllq $18, %ymm3, %ymm3
|
||||
vmovdqu L_poly1305_avx2_blocks_mask(%rip), %ymm14
|
||||
vmovdqu (%r13), %ymm14
|
||||
# Reduce, in place, the message data
|
||||
vpsrlq $26, %ymm0, %ymm10
|
||||
vpsrlq $26, %ymm3, %ymm11
|
||||
@ -811,7 +815,7 @@ L_poly1305_avx2_blocks_mul_5:
|
||||
vmovdqa %ymm7, 64(%rcx)
|
||||
vmovdqa %ymm8, 96(%rcx)
|
||||
vmovdqa %ymm9, 128(%rcx)
|
||||
vmovdqu L_poly1305_avx2_blocks_mask(%rip), %ymm14
|
||||
vmovdqu (%r13), %ymm14
|
||||
# If not finished then loop over data
|
||||
cmpb $0x01, 616(%rdi)
|
||||
jne L_poly1305_avx2_blocks_start
|
||||
@ -922,7 +926,7 @@ L_poly1305_avx2_blocks_start:
|
||||
vpunpckhdq %ymm15, %ymm6, %ymm6
|
||||
vpunpckldq %ymm15, %ymm8, %ymm7
|
||||
vpunpckhdq %ymm15, %ymm8, %ymm8
|
||||
vmovdqu L_poly1305_avx2_blocks_hibit(%rip), %ymm9
|
||||
vmovdqu (%r14), %ymm9
|
||||
vpsllq $6, %ymm6, %ymm6
|
||||
vpsllq $12, %ymm7, %ymm7
|
||||
vpsllq $18, %ymm8, %ymm8
|
||||
@ -1038,7 +1042,10 @@ L_poly1305_avx2_blocks_end_calc:
|
||||
movq %rcx, 40(%rdi)
|
||||
L_poly1305_avx2_blocks_complete:
|
||||
movb $0x01, 617(%rdi)
|
||||
vzeroupper
|
||||
addq $0x140, %rsp
|
||||
popq %r14
|
||||
popq %r13
|
||||
popq %rbx
|
||||
popq %r12
|
||||
repz retq
|
||||
@ -1118,6 +1125,7 @@ L_poly1305_avx2_final_cmp_copy:
|
||||
vmovdqu %ymm0, 320(%rdi)
|
||||
movq $0x00, 608(%rdi)
|
||||
movw $0x00, 616(%rdi)
|
||||
vzeroupper
|
||||
repz retq
|
||||
#ifndef __APPLE__
|
||||
.size poly1305_final_avx2,.-poly1305_final_avx2
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user