7#include <botan/argon2.h>
9#include <botan/compiler.h>
10#include <botan/internal/simd_2x64.h>
61 blamka_G(A0, A1, B0, B1, C0, C1, D0, D1);
64 blamka_G(A0, A1, B0, B1, C0, C1, D0, D1);
70void Argon2::blamka_ssse3(uint64_t N[128], uint64_t T[128]) {
71 for(
size_t i = 0; i != 8; ++i) {
73 for(
size_t j = 0; j != 4; ++j) {
78 blamka_R(Tv[0], Tv[1], Tv[2], Tv[3], Tv[4], Tv[5], Tv[6], Tv[7]);
80 for(
size_t j = 0; j != 4; ++j) {
81 Tv[2 * j].store_le(&T[16 * i + 4 * j]);
82 Tv[2 * j + 1].store_le(&T[16 * i + 4 * j + 2]);
86 for(
size_t i = 0; i != 8; ++i) {
88 for(
size_t j = 0; j != 4; ++j) {
93 blamka_R(Tv[0], Tv[1], Tv[2], Tv[3], Tv[4], Tv[5], Tv[6], Tv[7]);
95 for(
size_t j = 0; j != 4; ++j) {
96 Tv[2 * j].store_le(&T[2 * i + 32 * j]);
97 Tv[2 * j + 1].store_le(&T[2 * i + 32 * j + 16]);
101 for(
size_t i = 0; i != 128 / 4; ++i) {
109 n0.store_le(&N[4 * i]);
110 n1.store_le(&N[4 * i + 2]);
static void untwist(SIMD_2x64 &B0, SIMD_2x64 &B1, SIMD_2x64 &C0, SIMD_2x64 &C1, SIMD_2x64 &D0, SIMD_2x64 &D1)
static void twist(SIMD_2x64 &B0, SIMD_2x64 &B1, SIMD_2x64 &C0, SIMD_2x64 &C1, SIMD_2x64 &D0, SIMD_2x64 &D1)
static SIMD_2x64 load_le(const void *in)
static SIMD_2x64 mul2_32(SIMD_2x64 x, SIMD_2x64 y)
#define BOTAN_FORCE_INLINE