diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2023-08-22 16:07:30 +0200 |
---|---|---|
committer | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2023-09-02 10:28:52 +0200 |
commit | 6754de4a121ec7f261b16723180df6592cbb4508 (patch) | |
tree | 37e3fe58997d1e5d761f15ca18a5c9ec2981d6f4 | |
parent | 9e4418f7eddba63c9c5a882d1273edd7dc0fc466 (diff) |
Avoid clobbering non-volatile XMM registers
This affects some Poly1305 assembler functions
which are only used for certain CPU types.
Remove those functions for Windows targets,
as a simple interim solution.
Fixes #21522
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21808)
(cherry picked from commit 7b8e27bc2e02238986d89ef0ece067ec1b48e165)
-rwxr-xr-x | crypto/poly1305/asm/poly1305-x86_64.pl | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/crypto/poly1305/asm/poly1305-x86_64.pl b/crypto/poly1305/asm/poly1305-x86_64.pl index fa9bfb7a7b..24bab9d0bc 100755 --- a/crypto/poly1305/asm/poly1305-x86_64.pl +++ b/crypto/poly1305/asm/poly1305-x86_64.pl @@ -195,7 +195,7 @@ $code.=<<___ if ($avx>1); bt \$`5+32`,%r9 # AVX2? cmovc %rax,%r10 ___ -$code.=<<___ if ($avx>3); +$code.=<<___ if ($avx>3 && !$win64); mov \$`(1<<31|1<<21|1<<16)`,%rax shr \$32,%r9 and %rax,%r9 @@ -2724,7 +2724,7 @@ $code.=<<___; .cfi_endproc .size poly1305_blocks_avx512,.-poly1305_blocks_avx512 ___ -if ($avx>3) { +if ($avx>3 && !$win64) { ######################################################################## # VPMADD52 version using 2^44 radix. # |