8#include <botan/internal/simd_32.h>
15inline SIMD_4x32 rshift_1_u8(
const SIMD_4x32& v)
17 return SIMD_4x32(_mm_add_epi8(v.raw(), v.raw()));
20inline SIMD_4x32 high_bit_set_u8(
const SIMD_4x32& v)
22 return SIMD_4x32(_mm_cmpgt_epi8(_mm_setzero_si128(), v.raw()));
28size_t ZFEC::addmul_sse2(uint8_t z[], const uint8_t x[], uint8_t y,
size_t size)
32 const size_t orig_size = size;
55 for(
size_t j = 1; j != 8; ++j)
62 const SIMD_4x32 mask_1(high_bit_set_u8(x_1));
63 const SIMD_4x32 mask_2(high_bit_set_u8(x_2));
64 const SIMD_4x32 mask_3(high_bit_set_u8(x_3));
65 const SIMD_4x32 mask_4(high_bit_set_u8(x_4));
68 x_1 = rshift_1_u8(x_1);
69 x_2 = rshift_1_u8(x_2);
70 x_3 = rshift_1_u8(x_3);
71 x_4 = rshift_1_u8(x_4);
73 x_1 ^= mask_1 & polynomial;
74 x_2 ^= mask_2 & polynomial;
75 x_3 ^= mask_3 & polynomial;
76 x_4 ^= mask_4 & polynomial;
97 return orig_size - size;
static SIMD_4x32 splat_u8(uint8_t B)
static SIMD_4x32 load_le(const void *in)
#define BOTAN_FUNC_ISA(isa)