vSMC
vSMC: Scalable Monte Carlo
Public Types | Public Member Functions | Static Public Member Functions | List of all members
vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks > Class Template Reference

RNG generator using AES-NI instructions. More...

#include <vsmc/rng/aes_ni.hpp>

Public Types

using ctr_type = std::array< ResultType, M128I< ResultType >::size()>
 
using key_type = typename KeySeqType::key_type
 
using result_type = ResultType
 

Public Member Functions

 AESNIGenerator ()
 
void operator() (ctr_type &ctr, const key_type &key, std::array< result_type, Blocks *M128I< ResultType >::size()> &buffer)
 
std::size_t operator() (ctr_type &ctr, const key_type &key, std::size_t n, result_type *r) const
 
void reset (const key_type &key)
 

Static Public Member Functions

static constexpr std::size_t size ()
 

Detailed Description

template<typename ResultType, typename KeySeqType, std::size_t Rounds, std::size_t Blocks>
class vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >

RNG generator using AES-NI instructions.

Definition at line 58 of file aes_ni.hpp.

Member Typedef Documentation

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
using vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >::ctr_type = std::array<ResultType, M128I<ResultType>::size()>

Definition at line 62 of file aes_ni.hpp.

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
using vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >::key_type = typename KeySeqType::key_type

Definition at line 63 of file aes_ni.hpp.

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
using vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >::result_type = ResultType

Definition at line 61 of file aes_ni.hpp.

Constructor & Destructor Documentation

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >::AESNIGenerator ( )
inline

Definition at line 65 of file aes_ni.hpp.

Member Function Documentation

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
void vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >::operator() ( ctr_type ctr,
const key_type key,
std::array< result_type, Blocks *M128I< ResultType >::size()> &  buffer 
)
inline

Definition at line 74 of file aes_ni.hpp.

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
std::size_t vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >::operator() ( ctr_type ctr,
const key_type key,
std::size_t  n,
result_type r 
) const
inline

Definition at line 93 of file aes_ni.hpp.

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
void vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >::reset ( const key_type key)
inline

Definition at line 72 of file aes_ni.hpp.

template<typename ResultType , typename KeySeqType , std::size_t Rounds, std::size_t Blocks>
static constexpr std::size_t vsmc::AESNIGenerator< ResultType, KeySeqType, Rounds, Blocks >::size ( )
inlinestatic

Definition at line 67 of file aes_ni.hpp.