summaryrefslogtreecommitdiff
path: root/lsh512.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2021-04-22 13:27:06 -0400
committerJeffrey Walton <noloader@gmail.com>2021-04-22 13:27:06 -0400
commit3123bf4a55cc9f6a56de29af060f5f830bf4ab93 (patch)
treec790d1f3ae41a76befa5e7b86a50801bd4d87861 /lsh512.cpp
parent643348f7590bcd041f13282d70f6d656df492c7f (diff)
downloadcryptopp-git-3123bf4a55cc9f6a56de29af060f5f830bf4ab93.tar.gz
Enable AVX2 for word_perm
Diffstat (limited to 'lsh512.cpp')
-rw-r--r--lsh512.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/lsh512.cpp b/lsh512.cpp
index 2cec0bc7..c0909336 100644
--- a/lsh512.cpp
+++ b/lsh512.cpp
@@ -147,6 +147,7 @@ const unsigned int LSH512_HASH_VAL_MAX_BYTE_LEN = 64;
const unsigned int CV_WORD_LEN = 16;
const unsigned int CONST_WORD_LEN = 8;
const unsigned int HASH_VAL_MAX_WORD_LEN = 8;
+// const unsigned int WORD_BIT_LEN = 64;
const unsigned int NUM_STEPS = 28;
const unsigned int ROT_EVEN_ALPHA = 23;
@@ -200,14 +201,8 @@ lsh_u64 ROTL64(lsh_u64 x, lsh_u32 r) {
* LSH: iv
* -------------------------------------------------------- */
-#if (CRYPTOPP_CXX11_CONSTEXPR)
-# define MAYBE_CONSTEXPR constexpr
-#else
-# define MAYBE_CONSTEXPR const
-#endif
-
CRYPTOPP_ALIGN_DATA(32)
-MAYBE_CONSTEXPR lsh_u64 g_IV224[CV_WORD_LEN] = {
+const lsh_u64 g_IV224[CV_WORD_LEN] = {
W64LIT(0x0C401E9FE8813A55), W64LIT(0x4A5F446268FD3D35), W64LIT(0xFF13E452334F612A), W64LIT(0xF8227661037E354A),
W64LIT(0xA5F223723C9CA29D), W64LIT(0x95D965A11AED3979), W64LIT(0x01E23835B9AB02CC), W64LIT(0x52D49CBAD5B30616),
W64LIT(0x9E5C2027773F4ED3), W64LIT(0x66A5C8801925B701), W64LIT(0x22BBC85B4C6779D9), W64LIT(0xC13171A42C559C23),
@@ -215,7 +210,7 @@ MAYBE_CONSTEXPR lsh_u64 g_IV224[CV_WORD_LEN] = {
};
CRYPTOPP_ALIGN_DATA(32)
-MAYBE_CONSTEXPR lsh_u64 g_IV256[CV_WORD_LEN] = {
+const lsh_u64 g_IV256[CV_WORD_LEN] = {
W64LIT(0x6DC57C33DF989423), W64LIT(0xD8EA7F6E8342C199), W64LIT(0x76DF8356F8603AC4), W64LIT(0x40F1B44DE838223A),
W64LIT(0x39FFE7CFC31484CD), W64LIT(0x39C4326CC5281548), W64LIT(0x8A2FF85A346045D8), W64LIT(0xFF202AA46DBDD61E),
W64LIT(0xCF785B3CD5FCDB8B), W64LIT(0x1F0323B64A8150BF), W64LIT(0xFF75D972F29EA355), W64LIT(0x2E567F30BF1CA9E1),
@@ -223,7 +218,7 @@ MAYBE_CONSTEXPR lsh_u64 g_IV256[CV_WORD_LEN] = {
};
CRYPTOPP_ALIGN_DATA(32)
-MAYBE_CONSTEXPR lsh_u64 g_IV384[CV_WORD_LEN] = {
+const lsh_u64 g_IV384[CV_WORD_LEN] = {
W64LIT(0x53156A66292808F6), W64LIT(0xB2C4F362B204C2BC), W64LIT(0xB84B7213BFA05C4E), W64LIT(0x976CEB7C1B299F73),
W64LIT(0xDF0CC63C0570AE97), W64LIT(0xDA4441BAA486CE3F), W64LIT(0x6559F5D9B5F2ACC2), W64LIT(0x22DACF19B4B52A16),
W64LIT(0xBBCDACEFDE80953A), W64LIT(0xC9891A2879725B3E), W64LIT(0x7C9FE6330237E440), W64LIT(0xA30BA550553F7431),
@@ -231,20 +226,20 @@ MAYBE_CONSTEXPR lsh_u64 g_IV384[CV_WORD_LEN] = {
};
CRYPTOPP_ALIGN_DATA(32)
-MAYBE_CONSTEXPR lsh_u64 g_IV512[CV_WORD_LEN] = {
+const lsh_u64 g_IV512[CV_WORD_LEN] = {
W64LIT(0xadd50f3c7f07094e), W64LIT(0xe3f3cee8f9418a4f), W64LIT(0xb527ecde5b3d0ae9), W64LIT(0x2ef6dec68076f501),
W64LIT(0x8cb994cae5aca216), W64LIT(0xfbb9eae4bba48cc7), W64LIT(0x650a526174725fea), W64LIT(0x1f9a61a73f8d8085),
W64LIT(0xb6607378173b539b), W64LIT(0x1bc99853b0c0b9ed), W64LIT(0xdf727fc19b182d47), W64LIT(0xdbef360cf893a457),
W64LIT(0x4981f5e570147e80), W64LIT(0xd00c4490ca7d3e30), W64LIT(0x5d73940c0e4ae1ec), W64LIT(0x894085e2edb2d819)
};
-MAYBE_CONSTEXPR lsh_uint g_gamma512[8] = { 0, 16, 32, 48, 8, 24, 40, 56 };
+const lsh_uint g_gamma512[8] = { 0, 16, 32, 48, 8, 24, 40, 56 };
/* -------------------------------------------------------- *
* LSH: step constants
* -------------------------------------------------------- */
-MAYBE_CONSTEXPR lsh_u64 g_StepConstants[CONST_WORD_LEN * NUM_STEPS] = {
+const lsh_u64 g_StepConstants[CONST_WORD_LEN * NUM_STEPS] = {
W64LIT(0x97884283c938982a), W64LIT(0xba1fca93533e2355), W64LIT(0xc519a2e87aeb1c03), W64LIT(0x9a0fc95462af17b1),
W64LIT(0xfc3dda8ab019a82b), W64LIT(0x02825d079a895407), W64LIT(0x79f2d0a7ee06a6f7), W64LIT(0xd76d15eed9fdf5fe),
W64LIT(0x1fcac64d01d0c2c1), W64LIT(0xd9ea5de69161790f), W64LIT(0xdebc8b6366071fc8), W64LIT(0xa9d91db711c6c94b),
@@ -911,8 +906,7 @@ inline void word_perm(lsh_u64* cv_l, lsh_u64* cv_r)
CRYPTOPP_ASSERT(cv_l != NULLPTR);
CRYPTOPP_ASSERT(cv_r != NULLPTR);
- // Don't use AVX2 here. It is 0.4 cpb slower.
-#if 0 // defined(CRYPTOPP_LSH512_AVX2_AVAILABLE)
+#if defined(CRYPTOPP_LSH512_AVX2_AVAILABLE)
__m256i temp[2];
_mm256_storeu_si256(M256_CAST(cv_l+0), _mm256_permute4x64_epi64(
_mm256_loadu_si256(CONST_M256_CAST(cv_l+0)), _MM_SHUFFLE(3,1,0,2)));