diff options
-rw-r--r-- | cipher/sha512-avx512-amd64.S | 14 | ||||
-rw-r--r-- | configure.ac | 3 |
2 files changed, 10 insertions, 7 deletions
diff --git a/cipher/sha512-avx512-amd64.S b/cipher/sha512-avx512-amd64.S index 317f3e5c..c0fdbc33 100644 --- a/cipher/sha512-avx512-amd64.S +++ b/cipher/sha512-avx512-amd64.S @@ -382,13 +382,13 @@ _gcry_sha512_transform_amd64_avx512: vmovdqa [rsp + frame_XFER + 1*32], ymm0 /* burn stack */ vmovdqa [rsp + frame_XFER + 2*32], ymm0 /* burn stack */ vmovdqa [rsp + frame_XFER + 3*32], ymm0 /* burn stack */ - clear_reg(%xmm16); - clear_reg(%xmm17); - clear_reg(%xmm18); - clear_reg(%xmm19); - clear_reg(%xmm20); - clear_reg(%xmm21); - clear_reg(%xmm22); + clear_reg(xmm16); + clear_reg(xmm17); + clear_reg(xmm18); + clear_reg(xmm19); + clear_reg(xmm20); + clear_reg(xmm21); + clear_reg(xmm22); /* Restore Stack Pointer */ mov rsp, RSP_SAVE diff --git a/configure.ac b/configure.ac index cf255bf3..b41322e3 100644 --- a/configure.ac +++ b/configure.ac @@ -1567,6 +1567,9 @@ AC_CACHE_CHECK([whether GCC inline assembler supports AVX512 instructions], [[void a(void) { __asm__("xgetbv; vpopcntq %%zmm7, %%zmm1%{%%k1%}%{z%};\n\t":::"cc"); __asm__("vpexpandb %%zmm3, %%zmm1;\n\t":::"cc"); + __asm__("vpxorq %%xmm22, %%xmm22, %%xmm22;\n\t":::"cc"); + __asm__("vpxorq %%ymm22, %%ymm22, %%ymm22;\n\t":::"cc"); + __asm__("vpxorq %%zmm22, %%zmm22, %%zmm22;\n\t":::"cc"); }]], [ a(); ] )], [gcry_cv_gcc_inline_asm_avx512=yes]) fi]) |