diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2015-05-14 13:07:48 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2015-05-14 14:10:28 +0300 |
commit | eb0ed576893b6c7990dbcb568510f831d246cea6 (patch) | |
tree | 312203efc3f87c0ed917ec966630c3f70328a0f9 /cipher/serpent-avx2-amd64.S | |
parent | 12bc93ca8187b8061c2e705427ef22f5a71d29b0 (diff) | |
download | libgcrypt-eb0ed576893b6c7990dbcb568510f831d246cea6.tar.gz |
Enable AMD64 Serpent implementations on WIN64
* cipher/serpent-avx2-amd64.S: Enable when
HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
(ELF): New macro to mask lines with ELF specific commands.
* cipher/serpent-sse2-amd64.S: Enable when
HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
(ELF): New macro to mask lines with ELF specific commands.
* cipher/chacha20.c (USE_SSE2, USE_AVX2): Enable when
HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
[USE_SSE2 || USE_AVX2] (ASM_FUNC_ABI): New.
(_gcry_serpent_sse2_ctr_enc, _gcry_serpent_sse2_cbc_dec)
(_gcry_serpent_sse2_cfb_dec, _gcry_serpent_avx2_ctr_enc)
(_gcry_serpent_avx2_cbc_dec, _gcry_serpent_avx2_cfb_dec): Add
ASM_FUNC_ABI.
--
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher/serpent-avx2-amd64.S')
-rw-r--r-- | cipher/serpent-avx2-amd64.S | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/cipher/serpent-avx2-amd64.S b/cipher/serpent-avx2-amd64.S index 03d29aec..3f59f060 100644 --- a/cipher/serpent-avx2-amd64.S +++ b/cipher/serpent-avx2-amd64.S @@ -20,9 +20,16 @@ #ifdef __x86_64 #include <config.h> -#if defined(HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS) && defined(USE_SERPENT) && \ +#if (defined(HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS) || \ + defined(HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS)) && defined(USE_SERPENT) && \ defined(ENABLE_AVX2_SUPPORT) +#ifdef HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS +# define ELF(...) __VA_ARGS__ +#else +# define ELF(...) /*_*/ +#endif + #ifdef __PIC__ # define RIP (%rip) #else @@ -404,7 +411,7 @@ .text .align 8 -.type __serpent_enc_blk16,@function; +ELF(.type __serpent_enc_blk16,@function;) __serpent_enc_blk16: /* input: * %rdi: ctx, CTX @@ -489,10 +496,10 @@ __serpent_enc_blk16: transpose_4x4(RB4, RB1, RB2, RB0, RB3, RTMP0, RTMP1); ret; -.size __serpent_enc_blk16,.-__serpent_enc_blk16; +ELF(.size __serpent_enc_blk16,.-__serpent_enc_blk16;) .align 8 -.type __serpent_dec_blk16,@function; +ELF(.type __serpent_dec_blk16,@function;) __serpent_dec_blk16: /* input: * %rdi: ctx, CTX @@ -579,7 +586,7 @@ __serpent_dec_blk16: transpose_4x4(RB0, RB1, RB2, RB3, RB4, RTMP0, RTMP1); ret; -.size __serpent_dec_blk16,.-__serpent_dec_blk16; +ELF(.size __serpent_dec_blk16,.-__serpent_dec_blk16;) #define inc_le128(x, minus_one, tmp) \ vpcmpeqq minus_one, x, tmp; \ @@ -589,7 +596,7 @@ __serpent_dec_blk16: .align 8 .globl _gcry_serpent_avx2_ctr_enc -.type _gcry_serpent_avx2_ctr_enc,@function; +ELF(.type _gcry_serpent_avx2_ctr_enc,@function;) _gcry_serpent_avx2_ctr_enc: /* input: * %rdi: ctx, CTX @@ -695,11 +702,11 @@ _gcry_serpent_avx2_ctr_enc: vzeroall; ret -.size _gcry_serpent_avx2_ctr_enc,.-_gcry_serpent_avx2_ctr_enc; +ELF(.size _gcry_serpent_avx2_ctr_enc,.-_gcry_serpent_avx2_ctr_enc;) .align 8 .globl _gcry_serpent_avx2_cbc_dec -.type _gcry_serpent_avx2_cbc_dec,@function; +ELF(.type _gcry_serpent_avx2_cbc_dec,@function;) _gcry_serpent_avx2_cbc_dec: /* input: * %rdi: ctx, CTX @@ -746,11 +753,11 @@ _gcry_serpent_avx2_cbc_dec: vzeroall; ret -.size _gcry_serpent_avx2_cbc_dec,.-_gcry_serpent_avx2_cbc_dec; +ELF(.size _gcry_serpent_avx2_cbc_dec,.-_gcry_serpent_avx2_cbc_dec;) .align 8 .globl _gcry_serpent_avx2_cfb_dec -.type _gcry_serpent_avx2_cfb_dec,@function; +ELF(.type _gcry_serpent_avx2_cfb_dec,@function;) _gcry_serpent_avx2_cfb_dec: /* input: * %rdi: ctx, CTX @@ -799,7 +806,7 @@ _gcry_serpent_avx2_cfb_dec: vzeroall; ret -.size _gcry_serpent_avx2_cfb_dec,.-_gcry_serpent_avx2_cfb_dec; +ELF(.size _gcry_serpent_avx2_cfb_dec,.-_gcry_serpent_avx2_cfb_dec;) .data .align 16 |