From 8532f317b3440154b421b1e8b8b004ead28f847e Mon Sep 17 00:00:00 2001 From: weidai Date: Sat, 24 Jul 2010 05:55:22 +0000 Subject: add support for AES-NI and CLMUL instruction sets in AES and GMAC/GCM git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@508 57ff6487-cd31-0410-9ec3-f628ee90f5f0 --- bench.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'bench.cpp') diff --git a/bench.cpp b/bench.cpp index cee316c..8521a5a 100644 --- a/bench.cpp +++ b/bench.cpp @@ -10,6 +10,7 @@ #include "hex.h" #include "modes.h" #include "factory.h" +#include "cpu.h" #include #include @@ -242,14 +243,24 @@ void BenchmarkAll(double t, double hertz) cout << "AlgorithmMiB/Second" << cpb << "Microseconds to
Setup Key and IV" << cpk << endl; cout << "\n"; - BenchMarkByName2("AES/GCM", 0, "AES/GCM (2K tables)", MakeParameters(Name::TableSize(), 2048)); - BenchMarkByName2("AES/GCM", 0, "AES/GCM (64K tables)", MakeParameters(Name::TableSize(), 64*1024)); + if (CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE && HasCLMUL()) + BenchMarkByName2("AES/GCM", 0, "AES/GCM"); + else + { + BenchMarkByName2("AES/GCM", 0, "AES/GCM (2K tables)", MakeParameters(Name::TableSize(), 2048)); + BenchMarkByName2("AES/GCM", 0, "AES/GCM (64K tables)", MakeParameters(Name::TableSize(), 64*1024)); + } BenchMarkByName2("AES/CCM"); BenchMarkByName2("AES/EAX"); cout << "\n"; - BenchMarkByName2("AES/GCM", 0, "GMAC(AES) (2K tables)", MakeParameters(Name::TableSize(), 2048)); - BenchMarkByName2("AES/GCM", 0, "GMAC(AES) (64K tables)", MakeParameters(Name::TableSize(), 64*1024)); + if (CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE && HasCLMUL()) + BenchMarkByName2("AES/GCM", 0, "GMAC(AES)"); + else + { + BenchMarkByName2("AES/GCM", 0, "GMAC(AES) (2K tables)", MakeParameters(Name::TableSize(), 2048)); + BenchMarkByName2("AES/GCM", 0, "GMAC(AES) (64K tables)", MakeParameters(Name::TableSize(), 64*1024)); + } BenchMarkByName("VMAC(AES)-64"); BenchMarkByName("VMAC(AES)-128"); BenchMarkByName("HMAC(SHA-1)"); -- cgit v1.2.1