From 6cc763939e6089584c1a8e939d390e2a82619887 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sun, 4 Nov 2018 15:35:34 -0500 Subject: [PATCH] Skip unneeded wrap check in SIMD book keeping (GH #732) --- chacha.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/chacha.cpp b/chacha.cpp index 6dac12a1..6a5f50f2 100644 --- a/chacha.cpp +++ b/chacha.cpp @@ -171,9 +171,10 @@ void ChaCha_Policy::OperateKeystream(KeystreamOperation operation, const bool xorInput = (operation & INPUT_NULL) != INPUT_NULL; ChaCha_OperateKeystream_SSE2(m_state, xorInput ? input : NULLPTR, output, m_rounds); + // MultiBlockSafe avoids overflow on the counter words m_state[12] += 4; - if (m_state[12] < 4) - m_state[13]++; + //if (m_state[12] < 4) + // m_state[13]++; input += (!!xorInput)*4*BYTES_PER_ITERATION; output += 4*BYTES_PER_ITERATION; @@ -190,9 +191,10 @@ void ChaCha_Policy::OperateKeystream(KeystreamOperation operation, const bool xorInput = (operation & INPUT_NULL) != INPUT_NULL; ChaCha_OperateKeystream_NEON(m_state, xorInput ? input : NULLPTR, output, m_rounds); + // MultiBlockSafe avoids overflow on the counter words m_state[12] += 4; - if (m_state[12] < 4) - m_state[13]++; + //if (m_state[12] < 4) + // m_state[13]++; input += (!!xorInput)*4*BYTES_PER_ITERATION; output += 4*BYTES_PER_ITERATION; @@ -209,9 +211,10 @@ void ChaCha_Policy::OperateKeystream(KeystreamOperation operation, const bool xorInput = (operation & INPUT_NULL) != INPUT_NULL; ChaCha_OperateKeystream_POWER8(m_state, xorInput ? input : NULLPTR, output, m_rounds); + // MultiBlockSafe avoids overflow on the counter words m_state[12] += 4; - if (m_state[12] < 4) - m_state[13]++; + //if (m_state[12] < 4) + // m_state[13]++; input += (!!xorInput)*4*BYTES_PER_ITERATION; output += 4*BYTES_PER_ITERATION;