Skip to content

Commit cc91f51

Browse files
committed
gcm_ghash_vpclmulqdq_avx2_1: Make it clear that we only use XMM registers.
1 parent 8a17f77 commit cc91f51

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

crypto/fipsmodule/aes/asm/aes-gcm-avx2-x86_64.pl

+13-12
Original file line numberDiff line numberDiff line change
@@ -445,17 +445,16 @@ sub _ghash_4x {
445445
# Function arguments
446446
my ( $GHASH_ACC_PTR, $HTABLE, $AAD, $AADLEN ) = @argregs[ 0 .. 3 ];
447447

448-
# Additional local variables
449-
my ( $TMP0, $TMP0_XMM ) = ( "%ymm0", "%xmm0" );
450-
my ( $TMP1, $TMP1_XMM ) = ( "%ymm1", "%xmm1" );
451-
my ( $TMP2, $TMP2_XMM ) = ( "%ymm2", "%xmm2" );
452-
my ( $LO, $LO_XMM ) = ( "%ymm3", "%xmm3" );
453-
my ( $MI, $MI_XMM ) = ( "%ymm4", "%xmm4" );
454-
my ( $GHASH_ACC, $GHASH_ACC_XMM ) = ( "%ymm5", "%xmm5" );
455-
my ( $BSWAP_MASK, $BSWAP_MASK_XMM ) = ( "%ymm6", "%xmm6" );
456-
my ( $GFPOLY, $GFPOLY_XMM ) = ( "%ymm7", "%xmm7" );
457-
my $H_POW2_XORED = "%ymm8";
458-
my $H_POW1_XORED = "%ymm9";
448+
# Additional local variables.
449+
# Unlike upstream, we avoid YMM registers in this function.
450+
my $TMP0_XMM = "%xmm0";
451+
my $TMP1_XMM = "%xmm1";
452+
my $TMP2_XMM = "%xmm2";
453+
my $LO_XMM = "%xmm3";
454+
my $MI_XMM = "%xmm4";
455+
my $GHASH_ACC_XMM = "%xmm5";
456+
my $BSWAP_MASK_XMM = "%xmm6";
457+
my $GFPOLY_XMM = "%xmm7";
459458

460459
$code .= <<___;
461460
@{[ _save_xmmregs (6 .. 9) ]}
@@ -486,7 +485,9 @@ sub _ghash_4x {
486485
vpshufb $BSWAP_MASK_XMM, $GHASH_ACC_XMM, $GHASH_ACC_XMM
487486
vmovdqu $GHASH_ACC_XMM, ($GHASH_ACC_PTR)
488487
489-
vzeroupper
488+
# No vzeroupper is needed, unlike upstream, since we don't use YMM*. The
489+
# epilogue may use XMM registers, so a vzeroupper might be needed here if
490+
# we had used YMM registers.
490491
___
491492
}
492493
$code .= _end_func;

0 commit comments

Comments
 (0)