7#include <botan/internal/salsa20.h>
9#include <botan/assert.h>
10#include <botan/internal/simd_4x32.h>
15void BOTAN_FN_ISA_SIMD_4X32 Salsa20::salsa20_simd32_x4(uint8_t output[64 * 4], uint32_t state[16],
size_t rounds) {
30 SIMD_4x32 R08 = CTR_LO;
31 SIMD_4x32 R09 = CTR_HI;
39 for(
size_t r = 0; r != rounds / 2; ++r) {
103 R00.store_le(output + 0 * 16);
104 R04.store_le(output + 1 * 16);
105 R08.store_le(output + 2 * 16);
106 R12.store_le(output + 3 * 16);
107 R01.store_le(output + 4 * 16);
108 R05.store_le(output + 5 * 16);
109 R09.store_le(output + 6 * 16);
110 R13.store_le(output + 7 * 16);
111 R02.store_le(output + 8 * 16);
112 R06.store_le(output + 9 * 16);
113 R10.store_le(output + 10 * 16);
114 R14.store_le(output + 11 * 16);
115 R03.store_le(output + 12 * 16);
116 R07.store_le(output + 13 * 16);
117 R11.store_le(output + 14 * 16);
118 R15.store_le(output + 15 * 16);
#define BOTAN_ASSERT(expr, assertion_made)
static SIMD_4x32 BOTAN_FN_ISA_SIMD_4X32 splat(uint32_t B) noexcept
static void BOTAN_FN_ISA_SIMD_4X32 transpose(SIMD_4x32 &B0, SIMD_4x32 &B1, SIMD_4x32 &B2, SIMD_4x32 &B3) noexcept
SIMD_4x32 BOTAN_FN_ISA_SIMD_4X32 unsigned_lt(const SIMD_4x32 &other) const noexcept
BOTAN_FORCE_INLINE constexpr T rotl(T input)