summaryrefslogtreecommitdiff
path: root/cipher/serpent-sse2-amd64.S
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2013-08-22 15:26:52 +0300
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2013-08-22 15:26:52 +0300
commit040aa7688296e93659cb32ca31e9a001a6ab1edd (patch)
treea4b662bb71cdd0ac18d19bb9792532b4ed2030fb /cipher/serpent-sse2-amd64.S
parent82db04a6a0058cf870485459abe7c1659b138ec5 (diff)
downloadlibgcrypt-040aa7688296e93659cb32ca31e9a001a6ab1edd.tar.gz
serpent-sse2-amd64: Move register clearing to assembly functions
cipher/serpent-sse2-amd64.S (_gcry_serpent_sse2_ctr_enc) (_gcry_serpent_sse2_cbc_dec, _gcry_serpent_sse2_cfb_dec): Clear used XMM registers. cipher/serpent.c (_gcry_serpent_ctr_enc, _gcry_serpent_cbc_dec) ( _gcry_serpent_cfb_dec) [USE_SSE2]: Remove XMM register clearing from bulk functions. -- Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher/serpent-sse2-amd64.S')
-rw-r--r--cipher/serpent-sse2-amd64.S42
1 files changed, 42 insertions, 0 deletions
diff --git a/cipher/serpent-sse2-amd64.S b/cipher/serpent-sse2-amd64.S
index fe9feeea..a5cf3539 100644
--- a/cipher/serpent-sse2-amd64.S
+++ b/cipher/serpent-sse2-amd64.S
@@ -756,6 +756,20 @@ _gcry_serpent_sse2_ctr_enc:
movdqu RB2, (6 * 16)(%rsi);
movdqu RB3, (7 * 16)(%rsi);
+ /* clear the used registers */
+ pxor RA0, RA0;
+ pxor RA1, RA1;
+ pxor RA2, RA2;
+ pxor RA3, RA3;
+ pxor RB0, RB0;
+ pxor RB1, RB1;
+ pxor RB2, RB2;
+ pxor RB3, RB3;
+ pxor RTMP0, RTMP0;
+ pxor RTMP1, RTMP1;
+ pxor RTMP2, RTMP2;
+ pxor RNOT, RNOT;
+
ret
.size _gcry_serpent_sse2_ctr_enc,.-_gcry_serpent_sse2_ctr_enc;
@@ -819,6 +833,20 @@ _gcry_serpent_sse2_cbc_dec:
movdqu RB2, (6 * 16)(%rsi);
movdqu RB3, (7 * 16)(%rsi);
+ /* clear the used registers */
+ pxor RA0, RA0;
+ pxor RA1, RA1;
+ pxor RA2, RA2;
+ pxor RA3, RA3;
+ pxor RB0, RB0;
+ pxor RB1, RB1;
+ pxor RB2, RB2;
+ pxor RB3, RB3;
+ pxor RTMP0, RTMP0;
+ pxor RTMP1, RTMP1;
+ pxor RTMP2, RTMP2;
+ pxor RNOT, RNOT;
+
ret
.size _gcry_serpent_sse2_cbc_dec,.-_gcry_serpent_sse2_cbc_dec;
@@ -885,6 +913,20 @@ _gcry_serpent_sse2_cfb_dec:
movdqu RB2, (6 * 16)(%rsi);
movdqu RB3, (7 * 16)(%rsi);
+ /* clear the used registers */
+ pxor RA0, RA0;
+ pxor RA1, RA1;
+ pxor RA2, RA2;
+ pxor RA3, RA3;
+ pxor RB0, RB0;
+ pxor RB1, RB1;
+ pxor RB2, RB2;
+ pxor RB3, RB3;
+ pxor RTMP0, RTMP0;
+ pxor RTMP1, RTMP1;
+ pxor RTMP2, RTMP2;
+ pxor RNOT, RNOT;
+
ret
.size _gcry_serpent_sse2_cfb_dec,.-_gcry_serpent_sse2_cfb_dec;