Crypto++  8.2
Free C++ class library of cryptographic schemes
Functions
arm_simd.h File Reference

Support functions for ARM and vector operations. More...

Go to the source code of this file.

Functions

uint64x2_t PMULL_00 (const uint64x2_t a, const uint64x2_t b)
 Polynomial multiplication. More...
 
uint64x2_t PMULL_01 (const uint64x2_t a, const uint64x2_t b)
 Polynomial multiplication. More...
 
uint64x2_t PMULL_10 (const uint64x2_t a, const uint64x2_t b)
 Polynomial multiplication. More...
 
uint64x2_t PMULL_11 (const uint64x2_t a, const uint64x2_t b)
 Polynomial multiplication. More...
 
uint64x2_t VEXT_U8 (uint64x2_t a, uint64x2_t b, unsigned int c)
 Vector extraction. More...
 
template<unsigned int C>
uint64x2_t VEXT_U8 (uint64x2_t a, uint64x2_t b)
 Vector extraction. More...
 

Detailed Description

Support functions for ARM and vector operations.

Definition in file arm_simd.h.

Function Documentation

◆ PMULL_00()

uint64x2_t PMULL_00 ( const uint64x2_t  a,
const uint64x2_t  b 
)
inline

Polynomial multiplication.

Parameters
athe first term
bthe second term
Returns
vector product

PMULL_00() performs polynomial multiplication and presents the result like Intel's c = _mm_clmulepi64_si128(a, b, 0x00). The 0x00 indicates the low 64-bits of a and b are multiplied.

Note
An Intel XMM register is composed of 128-bits. The leftmost bit is MSB and numbered 127, while the the rightmost bit is LSB and numbered 0.
Since
Crypto++ 8.0

Definition at line 35 of file arm_simd.h.

◆ PMULL_01()

uint64x2_t PMULL_01 ( const uint64x2_t  a,
const uint64x2_t  b 
)
inline

Polynomial multiplication.

Parameters
athe first term
bthe second term
Returns
vector product

PMULL_01 performs() polynomial multiplication and presents the result like Intel's c = _mm_clmulepi64_si128(a, b, 0x01). The 0x01 indicates the low 64-bits of a and high 64-bits of b are multiplied.

Note
An Intel XMM register is composed of 128-bits. The leftmost bit is MSB and numbered 127, while the the rightmost bit is LSB and numbered 0.
Since
Crypto++ 8.0

Definition at line 65 of file arm_simd.h.

◆ PMULL_10()

uint64x2_t PMULL_10 ( const uint64x2_t  a,
const uint64x2_t  b 
)
inline

Polynomial multiplication.

Parameters
athe first term
bthe second term
Returns
vector product

PMULL_10() performs polynomial multiplication and presents the result like Intel's c = _mm_clmulepi64_si128(a, b, 0x10). The 0x10 indicates the high 64-bits of a and low 64-bits of b are multiplied.

Note
An Intel XMM register is composed of 128-bits. The leftmost bit is MSB and numbered 127, while the the rightmost bit is LSB and numbered 0.
Since
Crypto++ 8.0

Definition at line 95 of file arm_simd.h.

◆ PMULL_11()

uint64x2_t PMULL_11 ( const uint64x2_t  a,
const uint64x2_t  b 
)
inline

Polynomial multiplication.

Parameters
athe first term
bthe second term
Returns
vector product

PMULL_11() performs polynomial multiplication and presents the result like Intel's c = _mm_clmulepi64_si128(a, b, 0x11). The 0x11 indicates the high 64-bits of a and b are multiplied.

Note
An Intel XMM register is composed of 128-bits. The leftmost bit is MSB and numbered 127, while the the rightmost bit is LSB and numbered 0.
Since
Crypto++ 8.0

Definition at line 125 of file arm_simd.h.

◆ VEXT_U8() [1/2]

uint64x2_t VEXT_U8 ( uint64x2_t  a,
uint64x2_t  b,
unsigned int  c 
)
inline

Vector extraction.

Parameters
athe first term
bthe second term
cthe byte count
Returns
vector

VEXT_U8() extracts the first c bytes of vector a and the remaining bytes in b.

Since
Crypto++ 8.0

Definition at line 151 of file arm_simd.h.

◆ VEXT_U8() [2/2]

template<unsigned int C>
uint64x2_t VEXT_U8 ( uint64x2_t  a,
uint64x2_t  b 
)
inline

Vector extraction.

Template Parameters
Cthe byte count
Parameters
athe first term
bthe second term
Returns
vector

VEXT_U8() extracts the first C bytes of vector a and the remaining bytes in b.

Since
Crypto++ 8.0

Definition at line 173 of file arm_simd.h.