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

void operator() (ctr_type &ctr, const key_type &key, std::array< ResultType, size()> &buffer) const
 
void operator() (ctr_type &ctr, const key_type &key, std::size_t n, std::array< ResultType, size()> *buffer) 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 46 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 57 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 58 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 56 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< ResultType, size()> &  buffer 
) const
inline

Definition at line 67 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 >::operator() ( ctr_type ctr,
const key_type key,
std::size_t  n,
std::array< ResultType, size()> *  buffer 
) const
inline

Definition at line 86 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 65 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 60 of file aes_ni.hpp.