32 #ifndef VSMC_RNG_DEFINE_MACRO_NA 33 #define VSMC_RNG_DEFINE_MACRO_NA(RNGType, Name, name) 51 VSMC_RNG_DEFINE_MACRO(
53 VSMC_RNG_DEFINE_MACRO(
55 VSMC_RNG_DEFINE_MACRO(
57 VSMC_RNG_DEFINE_MACRO(
59 VSMC_RNG_DEFINE_MACRO(
61 VSMC_RNG_DEFINE_MACRO(
65 #define VSMC_RNG_DEFINE_MACRO_AES_NI VSMC_RNG_DEFINE_MACRO 67 #define VSMC_RNG_DEFINE_MACRO_AES_NI VSMC_RNG_DEFINE_MACRO_NA 106 #undef VSMC_RNG_DEFINE_MACRO_AES_NI 109 #define VSMC_RNG_DEFINE_MACRO_RDRAND VSMC_RNG_DEFINE_MACRO 111 #define VSMC_RNG_DEFINE_MACRO_RDRAND VSMC_RNG_DEFINE_MACRO_NA 118 #undef VSMC_RNG_DEFINE_MACRO_RDRAND
AES192Engine< std::uint32_t, 12, 2 > AES192x2
AES-192 RNG engine with 32-bit integers output, 2 blocks.
AES128Engine< std::uint64_t, 10, 2 > AES128x2_64
AES-128 RNG engine with 64-bit integers output, 2 blocks.
AES256Engine< std::uint64_t, 14, 4 > AES256x4_64
AES-256 RNG engine with 64-bit integers output, 4 blocks.
#define VSMC_RNG_DEFINE_MACRO_AES_NI
AES256Engine< std::uint32_t, 14, 8 > AES256x8
AES-256 RNG engine with 32-bit integers output, 8 blocks.
AES192Engine< std::uint64_t, 12, 2 > AES192x2_64
AES-192 RNG engine with 64-bit integers output, 2 blocks.
AES256Engine< std::uint64_t, 14, 1 > AES256x1_64
AES-256 RNG engine with 64-bit integers output, 1 block.
Philox4x32Engine< std::uint64_t > Philox4x32_64
Philox4x32 RNG engine with 64-bit integer output.
ARSEngine< std::uint32_t, 5, 8 > ARSx8
ARS RNG engine with 32-bit integers output, 8 blocks and default rounds.
Philox2x64Engine< std::uint64_t > Philox2x64_64
Philox2x64 RNG engine with 64-bit integer output.
#define VSMC_RNG_DEFINE_MACRO_RDRAND
Threefry4x32Engine< std::uint64_t > Threefry4x32_64
Threefry4x32 RNG engine with 64-bit integer output.
AES192Engine< std::uint64_t, 12, 8 > AES192x8_64
AES-192 RNG engine with 64-bit integers output, 8 blocks.
Threefry2x32Engine< std::uint32_t > Threefry2x32
Threefry2x32 RNG engine with 32-bit integer output.
AES128Engine< std::uint32_t, 10, 1 > AES128x1
AES-128 RNG engine with 32-bit integers output, 1 block.
RDRANDEngine< std::uint64_t > RDRAND64
C++11 Engine using 64-bit RDRAND instruction.
Counter based RNG engine.
AES128Engine< std::uint32_t, 10, 4 > AES128x4
AES-128 RNG engine with 32-bit integers output, 4 blocks.
AES256Engine< std::uint64_t, 14, 8 > AES256x8_64
AES-256 RNG engine with 64-bit integers output, 8 blocks.
ARSEngine< std::uint32_t, 5, 2 > ARSx2
ARS RNG engine with 32-bit integers output, 2 blocks and default rounds.
AES192Engine< std::uint32_t, 12, 1 > AES192x1
AES-192 RNG engine with 32-bit integers output, 1 block.
AES256Engine< std::uint32_t, 14, 2 > AES256x2
AES-256 RNG engine with 32-bit integers output, 2 blocks.
ARSEngine< std::uint32_t, 5, 1 > ARSx1
ARS RNG engine with 32-bit integers output, 1 block and default rounds.
Threefry8x64Engine< std::uint32_t > Threefry8x64
Threefry8x64 RNG engine with 32-bit integer output.
AES192Engine< std::uint64_t, 12, 1 > AES192x1_64
AES-192 RNG engine with 64-bit integers output, 1 block.
ARSEngine< std::uint64_t, 5, 4 > ARSx4_64
ARS RNG engine with 64-bit integers output, 4 blocks and default rounds.
AES256Engine< std::uint32_t, 14, 4 > AES256x4
AES-256 RNG engine with 32-bit integers output, 4 blocks.
Philox4x64Engine< std::uint64_t > Philox4x64_64
Philox4x64 RNG engine with 64-bit integer output.
AES128Engine< std::uint64_t, 10, 4 > AES128x4_64
AES-128 RNG engine with 64-bit integers output, 4 blocks.
Threefry16x64Engine< std::uint64_t > Threefry16x64_64
Threefry16x64 RNG engine with 64-bit integer output.
Threefry2x64Engine< std::uint64_t > Threefry2x64_64
Threefry2x64 RNG engine with 64-bit integer output.
ARSEngine< std::uint64_t, 5, 2 > ARSx2_64
ARS RNG engine with 64-bit integers output, 2 blocks and default rounds.
Threefry8x64Engine< std::uint64_t > Threefry8x64_64
Threefry8x64 RNG engine with 64-bit integer output.
Philox2x32Engine< std::uint32_t > Philox2x32
Philox2x32 RNG engine with 32-bit integer output.
AES256Engine< std::uint64_t, 14, 2 > AES256x2_64
AES-256 RNG engine with 64-bit integers output, 2 blocks.
Philox4x32Engine< std::uint32_t > Philox4x32
Philox4x32 RNG engine with 32-bit integer output.
AES192Engine< std::uint32_t, 12, 4 > AES192x4
AES-192 RNG engine with 32-bit integers output, 4 blocks.
Philox2x32Engine< std::uint64_t > Philox2x32_64
Philox2x32 RNG engine with 64-bit integer output.
ARSEngine< std::uint64_t, 5, 8 > ARSx8_64
ARS RNG engine with 64-bit integers output, 8 blocks and default rounds.
ARSEngine< std::uint32_t, 5, 4 > ARSx4
ARS RNG engine with 32-bit integers output, 4 blocks and default rounds.
RDRANDEngine< std::uint32_t > RDRAND32
C++11 Engine using 32-bit RDRAND instruction.
Threefry2x64Engine< std::uint32_t > Threefry2x64
Threefry2x64 RNG engine with 32-bit integer output.
RDRANDEngine< std::uint16_t > RDRAND16
C++11 Engine using 16-bit RDRAND instruction.
ARSEngine< std::uint64_t, 5, 1 > ARSx1_64
ARS RNG engine with 64-bit integers output, 1 block and default rounds.
AES192Engine< std::uint64_t, 12, 4 > AES192x4_64
AES-192 RNG engine with 64-bit integers output, 4 blocks.
AES128Engine< std::uint32_t, 10, 2 > AES128x2
AES-128 RNG engine with 32-bit integers output, 2 blocks.
Threefry16x64Engine< std::uint32_t > Threefry16x64
Threefry16x64 RNG engine with 32-bit integer output.
AES256Engine< std::uint32_t, 14, 1 > AES256x1
AES-256 RNG engine with 32-bit integers output, 1 block.
Threefry4x64Engine< std::uint32_t > Threefry4x64
Threefry4x64 RNG engine with 32-bit integer output.
Philox2x64Engine< std::uint32_t > Philox2x64
Philox2x64 RNG engine with 32-bit integer output.
Philox4x64Engine< std::uint32_t > Philox4x64
Philox4x64 RNG engine with 32-bit integer output.
AES192Engine< std::uint32_t, 12, 8 > AES192x8
AES-192 RNG engine with 32-bit integers output, 8 blocks.
AES128Engine< std::uint64_t, 10, 1 > AES128x1_64
AES-128 RNG engine with 64-bit integers output, 1 block.
Threefry4x32Engine< std::uint32_t > Threefry4x32
Threefry4x32 RNG engine with 32-bit integer output.
Threefry4x64Engine< std::uint64_t > Threefry4x64_64
Threefry4x64 RNG engine with 64-bit integer output.
AES128Engine< std::uint64_t, 10, 8 > AES128x8_64
AES-128 RNG engine with 64-bit integers output, 8 blocks.
AES128Engine< std::uint32_t, 10, 8 > AES128x8
AES-128 RNG engine with 32-bit integers output, 8 blocks.
Threefry2x32Engine< std::uint64_t > Threefry2x32_64
Threefry2x32 RNG engine with 64-bit integer output.