Crypto++ 8.9
Free C++ class library of cryptographic schemes
|
Template for AdvancedProcessBlocks and SIMD processing. More...
Go to the source code of this file.
Macros | |
#define | MAYBE_CONST const |
SunCC workaround. | |
#define | MAYBE_UNCONST_CAST(T, x) (x) |
SunCC workaround. | |
#define | M128_CAST(x) ((__m128i *)(void *)(x)) |
Clang workaround. | |
#define | CONST_M128_CAST(x) ((const __m128i *)(const void *)(x)) |
Clang workaround. | |
Functions | |
template<typename F1 , typename F6 , typename W > | |
size_t | AdvancedProcessBlocks128_6x1_NEON (F1 func1, F6 func6, const W *subKeys, size_t rounds, const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) |
AdvancedProcessBlocks for 1 and 6 blocks. | |
template<typename F1 , typename F4 , typename W > | |
size_t | AdvancedProcessBlocks128_4x1_NEON (F1 func1, F4 func4, const W *subKeys, size_t rounds, const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) |
AdvancedProcessBlocks for 1 and 4 blocks. | |
template<typename F2 , typename F6 , typename W > | |
size_t | AdvancedProcessBlocks128_6x2_NEON (F2 func2, F6 func6, const W *subKeys, size_t rounds, const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) |
AdvancedProcessBlocks for 2 and 6 blocks. | |
template<typename F2 , typename F6 , typename W > | |
size_t | AdvancedProcessBlocks128_6x2_SSE (F2 func2, F6 func6, const W *subKeys, size_t rounds, const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) |
AdvancedProcessBlocks for 2 and 6 blocks. | |
template<typename F1 , typename F4 , typename W > | |
size_t | AdvancedProcessBlocks128_4x1_SSE (F1 func1, F4 func4, const W *subKeys, size_t rounds, const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) |
AdvancedProcessBlocks for 1 and 4 blocks. | |
template<typename F1 , typename F4 , typename W > | |
size_t | AdvancedProcessBlocks128_4x1_ALTIVEC (F1 func1, F4 func4, const W *subKeys, size_t rounds, const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) |
AdvancedProcessBlocks for 1 and 4 blocks. | |
template<typename F1 , typename F6 , typename W > | |
size_t | AdvancedProcessBlocks128_6x1_ALTIVEC (F1 func1, F6 func6, const W *subKeys, size_t rounds, const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) |
AdvancedProcessBlocks for 1 and 6 blocks. | |
Template for AdvancedProcessBlocks and SIMD processing.
Definition in file adv_simd.h.
#define MAYBE_CONST const |
SunCC workaround.
SunCC loses the const on AES_Enc_Block and AES_Dec_Block
Definition at line 590 of file adv_simd.h.
#define MAYBE_UNCONST_CAST | ( | T, | |
x ) (x) |
SunCC workaround.
SunCC loses the const on AES_Enc_Block and AES_Dec_Block
Definition at line 595 of file adv_simd.h.
#define M128_CAST | ( | x | ) | ((__m128i *)(void *)(x)) |
Clang workaround.
Clang issues spurious alignment warnings
Definition at line 609 of file adv_simd.h.
#define CONST_M128_CAST | ( | x | ) | ((const __m128i *)(const void *)(x)) |
Clang workaround.
Clang issues spurious alignment warnings
Definition at line 614 of file adv_simd.h.
|
inline |
AdvancedProcessBlocks for 1 and 6 blocks.
F1 | function to process 1 128-bit block |
F6 | function to process 6 128-bit blocks |
W | word type of the subkey table |
AdvancedProcessBlocks128_6x1_NEON processes 6 and 2 NEON SIMD words at a time.
The subkey type is usually word32 or word64. F1 and F6 must use the same word type.
Definition at line 100 of file adv_simd.h.
|
inline |
AdvancedProcessBlocks for 1 and 4 blocks.
F1 | function to process 1 128-bit block |
F4 | function to process 4 128-bit blocks |
W | word type of the subkey table |
AdvancedProcessBlocks128_4x1_NEON processes 4 and 1 NEON SIMD words at a time.
The subkey type is usually word32 or word64. V is the vector type and it is usually uint32x4_t or uint32x4_t. F1, F4, and W must use the same word and vector type.
Definition at line 254 of file adv_simd.h.
|
inline |
AdvancedProcessBlocks for 2 and 6 blocks.
F2 | function to process 2 128-bit blocks |
F6 | function to process 6 128-bit blocks |
W | word type of the subkey table |
AdvancedProcessBlocks128_6x2_NEON processes 6 and 2 NEON SIMD words at a time. For a single block the template uses F2 with a zero block.
The subkey type is usually word32 or word64. F2 and F6 must use the same word type.
Definition at line 388 of file adv_simd.h.
|
inline |
AdvancedProcessBlocks for 2 and 6 blocks.
F2 | function to process 2 128-bit blocks |
F6 | function to process 6 128-bit blocks |
W | word type of the subkey table |
AdvancedProcessBlocks128_6x2_SSE processes 6 and 2 SSE SIMD words at a time. For a single block the template uses F2 with a zero block.
The subkey type is usually word32 or word64. F2 and F6 must use the same word type.
Definition at line 635 of file adv_simd.h.
|
inline |
AdvancedProcessBlocks for 1 and 4 blocks.
F1 | function to process 1 128-bit block |
F4 | function to process 4 128-bit blocks |
W | word type of the subkey table |
AdvancedProcessBlocks128_4x1_SSE processes 4 and 1 SSE SIMD words at a time.
The subkey type is usually word32 or word64. F1 and F4 must use the same word type.
Definition at line 830 of file adv_simd.h.
|
inline |
AdvancedProcessBlocks for 1 and 4 blocks.
F1 | function to process 1 128-bit block |
F4 | function to process 4 128-bit blocks |
W | word type of the subkey table |
AdvancedProcessBlocks128_4x1_ALTIVEC processes 4 and 1 Altivec SIMD words at a time.
The subkey type is usually word32 or word64. F1 and F4 must use the same word type.
Definition at line 971 of file adv_simd.h.
|
inline |
AdvancedProcessBlocks for 1 and 6 blocks.
F1 | function to process 1 128-bit block |
F6 | function to process 6 128-bit blocks |
W | word type of the subkey table |
AdvancedProcessBlocks128_6x1_ALTIVEC processes 6 and 1 Altivec SIMD words at a time.
The subkey type is usually word32 or word64. F1 and F6 must use the same word type.
Definition at line 1116 of file adv_simd.h.