|
Botan
2.13.0
Crypto and TLS for C++11
|
#include <simd_32.h>
Public Member Functions | |
| SIMD_4x32 | andc (const SIMD_4x32 &other) const |
| SIMD_4x32 | bswap () const |
| SIMD_4x32 | operator& (const SIMD_4x32 &other) const |
| void | operator&= (const SIMD_4x32 &other) |
| SIMD_4x32 | operator+ (const SIMD_4x32 &other) const |
| void | operator+= (const SIMD_4x32 &other) |
| SIMD_4x32 | operator- (const SIMD_4x32 &other) const |
| void | operator-= (const SIMD_4x32 &other) |
| SIMD_4x32 & | operator= (const SIMD_4x32 &other)=default |
| SIMD_4x32 & | operator= (SIMD_4x32 &&other)=default |
| SIMD_4x32 | operator^ (const SIMD_4x32 &other) const |
| void | operator^= (const SIMD_4x32 &other) |
| SIMD_4x32 | operator| (const SIMD_4x32 &other) const |
| void | operator|= (const SIMD_4x32 &other) |
| SIMD_4x32 | operator~ () const |
| native_simd_type | raw () const BOTAN_FUNC_ISA(BOTAN_SIMD_ISA) |
| template<size_t ROT1, size_t ROT2, size_t ROT3> | |
| SIMD_4x32 | rho () const |
| template<size_t ROT> | |
| SIMD_4x32 | rotl () const |
| template<size_t ROT> | |
| SIMD_4x32 | rotr () const |
| template<size_t I> | |
| SIMD_4x32 | shift_elems_left () const |
| template<size_t I> | |
| SIMD_4x32 | shift_elems_right () const |
| template<int SHIFT> | |
| SIMD_4x32 | shl () const |
| template<int SHIFT> | |
| SIMD_4x32 | shr () const |
| SIMD_4x32 (const SIMD_4x32 &other)=default | |
| SIMD_4x32 (SIMD_4x32 &&other)=default | |
| SIMD_4x32 () | |
| SIMD_4x32 (const uint32_t B[4]) | |
| SIMD_4x32 (uint32_t B0, uint32_t B1, uint32_t B2, uint32_t B3) | |
| SIMD_4x32 (native_simd_type x) | |
| void | store_be (uint8_t out[]) const |
| void | store_le (uint32_t out[4]) const |
| void | store_le (uint64_t out[2]) const |
| void | store_le (uint8_t out[]) const |
Static Public Member Functions | |
| static SIMD_4x32 | load_be (const void *in) |
| static SIMD_4x32 | load_le (const void *in) |
| static SIMD_4x32 | splat (uint32_t B) |
| static SIMD_4x32 | splat_u8 (uint8_t B) |
| static void | transpose (SIMD_4x32 &B0, SIMD_4x32 &B1, SIMD_4x32 &B2, SIMD_4x32 &B3) |
4x32 bit SIMD register
This class is not a general purpose SIMD type, and only offers instructions needed for evaluation of specific crypto primitives. For example it does not currently have equality operators of any kind.
Implemented for SSE2, VMX (Altivec), and NEON.
|
default |
|
default |
|
inline |
Zero initialize SIMD register with 4 32-bit elements
Definition at line 84 of file simd_32.h.
Referenced by andc(), bswap(), load_be(), load_le(), operator~(), rotl(), shift_elems_left(), shift_elems_right(), shl(), shr(), splat(), and splat_u8().
|
inlineexplicit |
|
inline |
|
inlineexplicit |
|
inline |
Return copy *this with each word byte swapped
Definition at line 491 of file simd_32.h.
References Botan::bswap_4(), SIMD_4x32(), and T.
Referenced by load_be(), load_le(), store_be(), and store_le().
|
inlinestatic |
Load a SIMD register with big-endian convention
Definition at line 176 of file simd_32.h.
References bswap(), Botan::CPUID::is_little_endian(), Botan::load_be(), load_le(), and SIMD_4x32().
|
inlinestatic |
Load a SIMD register with little-endian convention
Definition at line 159 of file simd_32.h.
References bswap(), Botan::CPUID::is_big_endian(), Botan::load_le(), and SIMD_4x32().
Referenced by Botan::gcm_clmul_precompute(), Botan::gcm_multiply_clmul(), and load_be().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 611 of file simd_32.h.
Referenced by shift_elems_left(), shift_elems_right(), and store_le().
|
inline |
|
inline |
Left rotation by a compile time constant
Definition at line 279 of file simd_32.h.
References BOTAN_IF_CONSTEXPR, and SIMD_4x32().
Referenced by rotr().
|
inline |
|
inline |
Definition at line 517 of file simd_32.h.
References raw(), and SIMD_4x32().
|
inline |
Definition at line 539 of file simd_32.h.
References raw(), and SIMD_4x32().
|
inline |
|
inline |
|
inlinestatic |
Load SIMD register with one 32-bit element repeated
Definition at line 130 of file simd_32.h.
References SIMD_4x32().
|
inlinestatic |
Load SIMD register with one 8-bit element repeated
Definition at line 144 of file simd_32.h.
References Botan::make_uint32(), and SIMD_4x32().
|
inline |
Load a SIMD register with big-endian convention
Definition at line 235 of file simd_32.h.
References bswap(), Botan::CPUID::is_little_endian(), Botan::store_be(), and store_le().
|
inline |
Definition at line 192 of file simd_32.h.
Referenced by Botan::gcm_clmul_precompute(), Botan::gcm_multiply_clmul(), store_be(), and store_le().
|
inline |
|
inline |
Load a SIMD register with little-endian convention
Definition at line 205 of file simd_32.h.
References bswap(), Botan::CPUID::is_little_endian(), raw(), and Botan::store_le().
|
inlinestatic |
1.8.9.1