OSDN Git Service

crypto: poly1305-x86_64 - Use XORL r32,32
authorUros Bizjak <ubizjak@gmail.com>
Thu, 27 Aug 2020 17:38:31 +0000 (19:38 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 11 Sep 2020 04:39:13 +0000 (14:39 +1000)
x86_64 zero extends 32bit operations, so for 64bit operands,
XORL r32,r32 is functionally equal to XORQ r64,r64, but avoids
a REX prefix byte when legacy registers are used.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Acked-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/poly1305-x86_64-cryptogams.pl

index 137edcf..7d56801 100644 (file)
@@ -246,7 +246,7 @@ $code.=<<___ if (!$kernel);
 ___
 &declare_function("poly1305_init_x86_64", 32, 3);
 $code.=<<___;
-       xor     %rax,%rax
+       xor     %eax,%eax
        mov     %rax,0($ctx)            # initialize hash value
        mov     %rax,8($ctx)
        mov     %rax,16($ctx)
@@ -2853,7 +2853,7 @@ $code.=<<___;
 .type  poly1305_init_base2_44,\@function,3
 .align 32
 poly1305_init_base2_44:
-       xor     %rax,%rax
+       xor     %eax,%eax
        mov     %rax,0($ctx)            # initialize hash value
        mov     %rax,8($ctx)
        mov     %rax,16($ctx)
@@ -3947,7 +3947,7 @@ xor128_decrypt_n_pad:
        mov     \$16,$len
        sub     %r10,$len
        xor     %eax,%eax
-       xor     %r11,%r11
+       xor     %r11d,%r11d
 .Loop_dec_byte:
        mov     ($inp,$otp),%r11b
        mov     ($otp),%al
@@ -4085,7 +4085,7 @@ avx_handler:
        .long   0xa548f3fc              # cld; rep movsq
 
        mov     $disp,%rsi
-       xor     %rcx,%rcx               # arg1, UNW_FLAG_NHANDLER
+       xor     %ecx,%ecx               # arg1, UNW_FLAG_NHANDLER
        mov     8(%rsi),%rdx            # arg2, disp->ImageBase
        mov     0(%rsi),%r8             # arg3, disp->ControlPc
        mov     16(%rsi),%r9            # arg4, disp->FunctionEntry