9#include <botan/internal/isa_extn.h>
10#include <botan/internal/simd_4x32.h>
20 return SIMD_4x32(_mm_add_epi8(v.raw(), v.raw()));
24 return SIMD_4x32(_mm_cmpgt_epi8(_mm_setzero_si128(), v.raw()));
31BOTAN_FN_ISA_SSE2
size_t ZFEC::addmul_sse2(uint8_t z[],
const uint8_t x[], uint8_t y,
size_t size) {
34 const size_t orig_size = size;
48 if((y & 0x01) == 0x01) {
55 for(
size_t j = 1; j != 8; ++j) {
61 const SIMD_4x32 mask_1(high_bit_set_u8(x_1));
62 const SIMD_4x32 mask_2(high_bit_set_u8(x_2));
63 const SIMD_4x32 mask_3(high_bit_set_u8(x_3));
64 const SIMD_4x32 mask_4(high_bit_set_u8(x_4));
67 x_1 = rshift_1_u8(x_1);
68 x_2 = rshift_1_u8(x_2);
69 x_3 = rshift_1_u8(x_3);
70 x_4 = rshift_1_u8(x_4);
72 x_1 ^= mask_1 & polynomial;
73 x_2 ^= mask_2 & polynomial;
74 x_3 ^= mask_3 & polynomial;
75 x_4 ^= mask_4 & polynomial;
77 if(((y >> j) & 0x01) == 0x01) {
95 return orig_size - size;
static SIMD_4x32 load_le(const void *in) noexcept
static SIMD_4x32 splat_u8(uint8_t B) noexcept