Browse Source
Detect PCLMUL in cpuinfo; implement the accel hook. Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>pull/251/head
5 changed files with 35 additions and 0 deletions
@ -0,0 +1,29 @@ |
|||
/*
|
|||
* x86 specific clmul acceleration. |
|||
* SPDX-License-Identifier: GPL-2.0-or-later |
|||
*/ |
|||
|
|||
#ifndef X86_HOST_CRYPTO_CLMUL_H |
|||
#define X86_HOST_CRYPTO_CLMUL_H |
|||
|
|||
#include "host/cpuinfo.h" |
|||
#include <immintrin.h> |
|||
|
|||
#if defined(__PCLMUL__) |
|||
# define HAVE_CLMUL_ACCEL true |
|||
# define ATTR_CLMUL_ACCEL |
|||
#else |
|||
# define HAVE_CLMUL_ACCEL likely(cpuinfo & CPUINFO_PCLMUL) |
|||
# define ATTR_CLMUL_ACCEL __attribute__((target("pclmul"))) |
|||
#endif |
|||
|
|||
static inline Int128 ATTR_CLMUL_ACCEL |
|||
clmul_64_accel(uint64_t n, uint64_t m) |
|||
{ |
|||
union { __m128i v; Int128 s; } u; |
|||
|
|||
u.v = _mm_clmulepi64_si128(_mm_set_epi64x(0, n), _mm_set_epi64x(0, m), 0); |
|||
return u.s; |
|||
} |
|||
|
|||
#endif /* X86_HOST_CRYPTO_CLMUL_H */ |
|||
@ -0,0 +1 @@ |
|||
#include "host/include/i386/host/crypto/clmul.h" |
|||
Loading…
Reference in new issue