SSE_ALL-Cryptography-XMM

SSE_ALL-Cryptography-XMM#

_mm_crc32_u8#

Tech:

SSE_ALL

Category:

Cryptography

Header:

nmmintrin.h

Searchable:

SSE_ALL-Cryptography-XMM

Register:

XMM 128 bit

Return Type:

unsigned int

Param Types:

unsigned int crc, unsigned char v

Param ETypes:

UI32 crc, UI8 v

unsigned int _mm_crc32_u8(unsigned int crc, unsigned char v);

Intel Description

Starting with the initial value in “crc”, accumulates a CRC32 value for unsigned 8-bit integer “v”, and stores the result in “dst”.

Intel Implementation Psudeo-Code

tmp1[7:0] := v[0:7] // bit reflection
tmp2[31:0] := crc[0:31] // bit reflection
tmp3[39:0] := tmp1[7:0] << 32
tmp4[39:0] := tmp2[31:0] << 8
tmp5[39:0] := tmp3[39:0] XOR tmp4[39:0]
tmp6[31:0] := MOD2(tmp5[39:0], 0x11EDC6F41) // remainder from polynomial division modulus 2
dst[31:0] := tmp6[0:31] // bit reflection

_mm_crc32_u16#

Tech:

SSE_ALL

Category:

Cryptography

Header:

nmmintrin.h

Searchable:

SSE_ALL-Cryptography-XMM

Register:

XMM 128 bit

Return Type:

unsigned int

Param Types:

unsigned int crc, unsigned short v

Param ETypes:

UI32 crc, UI16 v

unsigned int _mm_crc32_u16(unsigned int crc, unsigned short v);

Intel Description

Starting with the initial value in “crc”, accumulates a CRC32 value for unsigned 16-bit integer “v”, and stores the result in “dst”.

Intel Implementation Psudeo-Code

tmp1[15:0] := v[0:15] // bit reflection
tmp2[31:0] := crc[0:31] // bit reflection
tmp3[47:0] := tmp1[15:0] << 32
tmp4[47:0] := tmp2[31:0] << 16
tmp5[47:0] := tmp3[47:0] XOR tmp4[47:0]
tmp6[31:0] := MOD2(tmp5[47:0], 0x11EDC6F41) // remainder from polynomial division modulus 2
dst[31:0] := tmp6[0:31] // bit reflection

_mm_crc32_u32#

Tech:

SSE_ALL

Category:

Cryptography

Header:

nmmintrin.h

Searchable:

SSE_ALL-Cryptography-XMM

Register:

XMM 128 bit

Return Type:

unsigned int

Param Types:

unsigned int crc, unsigned int v

Param ETypes:

UI32 crc, UI32 v

unsigned int _mm_crc32_u32(unsigned int crc, unsigned int v);

Intel Description

Starting with the initial value in “crc”, accumulates a CRC32 value for unsigned 32-bit integer “v”, and stores the result in “dst”.

Intel Implementation Psudeo-Code

tmp1[31:0] := v[0:31] // bit reflection
tmp2[31:0] := crc[0:31] // bit reflection
tmp3[63:0] := tmp1[31:0] << 32
tmp4[63:0] := tmp2[31:0] << 32
tmp5[63:0] := tmp3[63:0] XOR tmp4[63:0]
tmp6[31:0] := MOD2(tmp5[63:0], 0x11EDC6F41) // remainder from polynomial division modulus 2
dst[31:0] := tmp6[0:31] // bit reflection

_mm_crc32_u64#

Tech:

SSE_ALL

Category:

Cryptography

Header:

nmmintrin.h

Searchable:

SSE_ALL-Cryptography-XMM

Register:

XMM 128 bit

Return Type:

unsigned __int64

Param Types:

unsigned __int64 crc, unsigned __int64 v

Param ETypes:

UI64 crc, UI64 v

unsigned __int64 _mm_crc32_u64(unsigned __int64 crc, unsigned __int64 v);

Intel Description

Starting with the initial value in “crc”, accumulates a CRC32 value for unsigned 64-bit integer “v”, and stores the result in “dst”.

Intel Implementation Psudeo-Code

tmp1[63:0] := v[0:63] // bit reflection
tmp2[31:0] := crc[0:31] // bit reflection
tmp3[95:0] := tmp1[31:0] << 32
tmp4[95:0] := tmp2[63:0] << 64
tmp5[95:0] := tmp3[95:0] XOR tmp4[95:0]
tmp6[31:0] := MOD2(tmp5[95:0], 0x11EDC6F41) // remainder from polynomial division modulus 2
dst[31:0] := tmp6[0:31] // bit reflection