Enable AMD64 SHA512 implementations for WIN64
[libgcrypt.git] / cipher / sha512-avx-amd64.S
index 900936e..699c271 100644 (file)
@@ -41,7 +41,8 @@
 
 #ifdef __x86_64
 #include <config.h>
-#if defined(HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS) && \
+#if (defined(HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS) || \
+     defined(HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS)) && \
     defined(HAVE_INTEL_SYNTAX_PLATFORM_AS) && \
     defined(HAVE_GCC_INLINE_ASM_AVX) && defined(USE_SHA512)
 
 #  define ADD_RIP
 #endif
 
+#ifdef HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS
+# define ELF(...) __VA_ARGS__
+#else
+# define ELF(...) /*_*/
+#endif
+
 .intel_syntax noprefix
 
 .text
@@ -259,7 +266,7 @@ frame_size = ((frame_GPRSAVE) + (frame_GPRSAVE_size))
 ; L is the message length in SHA512 blocks
 */
 .globl _gcry_sha512_transform_amd64_avx
-.type _gcry_sha512_transform_amd64_avx,@function;
+ELF(.type _gcry_sha512_transform_amd64_avx,@function;)
 .align 16
 _gcry_sha512_transform_amd64_avx:
        xor eax, eax
@@ -348,17 +355,7 @@ _gcry_sha512_transform_amd64_avx:
        /* Restore Stack Pointer */
        add     rsp, frame_size
 
-       vzeroupper
-       pxor    xmm0, xmm0
-       pxor    xmm1, xmm1
-       pxor    xmm2, xmm2
-       pxor    xmm3, xmm3
-       pxor    xmm4, xmm4
-       pxor    xmm5, xmm5
-       pxor    xmm6, xmm6
-       pxor    xmm7, xmm7
-       pxor    xmm8, xmm8
-       pxor    xmm9, xmm9
+       vzeroall
 
        /* Return stack burn depth */
        mov     rax, frame_size