diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2015-10-23 22:39:47 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2015-10-28 20:08:54 +0200 |
commit | 909644ef5883927262366c356eed530e55aba478 (patch) | |
tree | 71c03dfeae98a5a7ab1118663a877cd3941f1dba /src/g10lib.h | |
parent | 16fd540f4d01eb6dc23d9509ae549353617c7a67 (diff) | |
download | libgcrypt-909644ef5883927262366c356eed530e55aba478.tar.gz |
hwf-x86: add detection for Intel CPUs with fast SHLD instruction
* cipher/sha1.c (sha1_init): Use HWF_INTEL_FAST_SHLD instead of
HWF_INTEL_CPU.
* cipher/sha256.c (sha256_init, sha224_init): Ditto.
* cipher/sha512.c (sha512_init, sha384_init): Ditto.
* src/g10lib.h (HWF_INTEL_FAST_SHLD): New.
(HWF_INTEL_BMI2, HWF_INTEL_SSSE3, HWF_INTEL_PCLMUL, HWF_INTEL_AESNI)
(HWF_INTEL_RDRAND, HWF_INTEL_AVX, HWF_INTEL_AVX2)
(HWF_ARM_NEON): Update.
* src/hwf-x86.c (detect_x86_gnuc): Add detection of Intel Core
CPUs with fast SHLD/SHRD instruction.
* src/hwfeatures.c (hwflist): Add "intel-fast-shld".
--
Intel Core CPUs since codename sandy-bridge have been able to
execute SHLD/SHRD instructions faster than rotate instructions
ROL/ROR. Since SHLD/SHRD can be used to do rotation, some
optimized implementations (SHA1/SHA256/SHA512) use SHLD/SHRD
instructions in-place of ROL/ROR.
This patch provides more accurate detection of CPUs with
fast SHLD implementation.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'src/g10lib.h')
-rw-r--r-- | src/g10lib.h | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/g10lib.h b/src/g10lib.h index d1f94268..a579e945 100644 --- a/src/g10lib.h +++ b/src/g10lib.h @@ -197,16 +197,17 @@ int _gcry_log_verbosity( int level ); #define HWF_PADLOCK_SHA 4 #define HWF_PADLOCK_MMUL 8 -#define HWF_INTEL_CPU 16 -#define HWF_INTEL_BMI2 32 -#define HWF_INTEL_SSSE3 64 -#define HWF_INTEL_PCLMUL 128 -#define HWF_INTEL_AESNI 256 -#define HWF_INTEL_RDRAND 512 -#define HWF_INTEL_AVX 1024 -#define HWF_INTEL_AVX2 2048 - -#define HWF_ARM_NEON 4096 +#define HWF_INTEL_CPU 16 +#define HWF_INTEL_FAST_SHLD 32 +#define HWF_INTEL_BMI2 64 +#define HWF_INTEL_SSSE3 128 +#define HWF_INTEL_PCLMUL 256 +#define HWF_INTEL_AESNI 512 +#define HWF_INTEL_RDRAND 1024 +#define HWF_INTEL_AVX 2048 +#define HWF_INTEL_AVX2 4096 + +#define HWF_ARM_NEON 8192 gpg_err_code_t _gcry_disable_hw_feature (const char *name); |