7#include <botan/shacal2.h>
8#include <botan/internal/simd_avx2.h>
15 SHACAL2_Fwd(const SIMD_8x32& A, const SIMD_8x32& B, const SIMD_8x32& C, SIMD_8x32& D,
16 const SIMD_8x32& E, const SIMD_8x32& F, const SIMD_8x32& G, SIMD_8x32& H,
21 H += A.rho<2,13,22>() + ((A & B) | ((A | B) & C));
25 SHACAL2_Rev(const SIMD_8x32& A, const SIMD_8x32& B, const SIMD_8x32& C, SIMD_8x32& D,
26 const SIMD_8x32& E, const SIMD_8x32& F, const SIMD_8x32& G, SIMD_8x32& H,
29 H -= A.rho<2,13,22>() + ((A & B) | ((A | B) & C));
36void BOTAN_FUNC_ISA(
"avx2") SHACAL2::avx2_encrypt_8(const uint8_t in[], uint8_t out[])
const
52 for(
size_t r = 0; r != 64; r += 8)
54 SHACAL2_Fwd(A, B, C, D, E, F, G, H, m_RK[r+0]);
55 SHACAL2_Fwd(H, A, B, C, D, E, F, G, m_RK[r+1]);
56 SHACAL2_Fwd(G, H, A, B, C, D, E, F, m_RK[r+2]);
57 SHACAL2_Fwd(F, G, H, A, B, C, D, E, m_RK[r+3]);
58 SHACAL2_Fwd(E, F, G, H, A, B, C, D, m_RK[r+4]);
59 SHACAL2_Fwd(D, E, F, G, H, A, B, C, m_RK[r+5]);
60 SHACAL2_Fwd(C, D, E, F, G, H, A, B, m_RK[r+6]);
61 SHACAL2_Fwd(B, C, D, E, F, G, H, A, m_RK[r+7]);
79BOTAN_FUNC_ISA(
"avx2") void SHACAL2::avx2_decrypt_8(const uint8_t in[], uint8_t out[])
const
95 for(
size_t r = 0; r != 64; r += 8)
97 SHACAL2_Rev(B, C, D, E, F, G, H, A, m_RK[63-r]);
98 SHACAL2_Rev(C, D, E, F, G, H, A, B, m_RK[62-r]);
99 SHACAL2_Rev(D, E, F, G, H, A, B, C, m_RK[61-r]);
100 SHACAL2_Rev(E, F, G, H, A, B, C, D, m_RK[60-r]);
101 SHACAL2_Rev(F, G, H, A, B, C, D, E, m_RK[59-r]);
102 SHACAL2_Rev(G, H, A, B, C, D, E, F, m_RK[58-r]);
103 SHACAL2_Rev(H, A, B, C, D, E, F, G, m_RK[57-r]);
104 SHACAL2_Rev(A, B, C, D, E, F, G, H, m_RK[56-r]);
static SIMD_8x32 splat(uint32_t B)
static SIMD_8x32 load_be(const uint8_t *in)
static void reset_registers()
static void zero_registers()
static void transpose(SIMD_8x32 &B0, SIMD_8x32 &B1, SIMD_8x32 &B2, SIMD_8x32 &B3)
#define BOTAN_FUNC_ISA(isa)
#define BOTAN_FORCE_INLINE