9#include <botan/internal/isa_extn.h>
10#include <botan/internal/simd_4x32.h>
18 return SIMD_4x32(_mm_add_epi8(v.raw(), v.raw()));
22 return SIMD_4x32(_mm_cmpgt_epi8(_mm_setzero_si128(), v.raw()));
27BOTAN_FN_ISA_SSE2
size_t ZFEC::addmul_sse2(uint8_t z[],
const uint8_t x[], uint8_t y,
size_t size) {
30 const size_t orig_size = size;
44 if((y & 0x01) == 0x01) {
51 for(
size_t j = 1; j != 8; ++j) {
57 const SIMD_4x32 mask_1(high_bit_set_u8(x_1));
58 const SIMD_4x32 mask_2(high_bit_set_u8(x_2));
59 const SIMD_4x32 mask_3(high_bit_set_u8(x_3));
60 const SIMD_4x32 mask_4(high_bit_set_u8(x_4));
63 x_1 = rshift_1_u8(x_1);
64 x_2 = rshift_1_u8(x_2);
65 x_3 = rshift_1_u8(x_3);
66 x_4 = rshift_1_u8(x_4);
68 x_1 ^= mask_1 & polynomial;
69 x_2 ^= mask_2 & polynomial;
70 x_3 ^= mask_3 & polynomial;
71 x_4 ^= mask_4 & polynomial;
73 if(((y >> j) & 0x01) == 0x01) {
91 return orig_size - size;
static SIMD_4x32 load_le(const void *in) noexcept
static SIMD_4x32 splat_u8(uint8_t B) noexcept