MCKL
Monte Carlo Kernel Library
Classes | Namespaces | Macros
threefry_avx2_8x64.hpp File Reference
#include <mckl/random/internal/common.hpp>
#include <mckl/random/internal/threefry_common.hpp>
#include <mckl/random/internal/threefry_constants.hpp>
#include <mckl/random/internal/threefry_generic_8x64.hpp>
#include <mckl/random/increment.hpp>

Go to the source code of this file.

Classes

class  mckl::internal::Threefish512GeneratorAVX2Impl< T >
 
class  mckl::internal::Threefry8x64GeneratorAVX2Impl< T >
 

Namespaces

 mckl
 
 mckl::internal
 

Macros

#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_CYCLE_4(N)
 
#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_CYCLE_8(N)
 
#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_KBOX(N)
 
#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N)
 

Macro Definition Documentation

◆ MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_CYCLE_4

#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_CYCLE_4 (   N)
Value:
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 2); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 3); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 4); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_KBOX(N * 8 + 4);
#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N)

Definition at line 105 of file threefry_avx2_8x64.hpp.

◆ MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_CYCLE_8

#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_CYCLE_8 (   N)
Value:
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 2); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 3); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 4); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_KBOX(N * 8 + 4); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 5); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 6); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 7); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N * 8 + 8); \
MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_KBOX(N * 8 + 8);
#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX(N)

Definition at line 112 of file threefry_avx2_8x64.hpp.

◆ MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_KBOX

#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_KBOX (   N)
Value:
ymmt0 = _mm256_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<0>(par))); \
ymmt1 = _mm256_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<1>(par))); \
ymmt2 = _mm256_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<2>(par))); \
ymmt3 = _mm256_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<3>(par))); \
ymmt4 = _mm256_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<4>(par))); \
ymmt5 = _mm256_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<5>(par))); \
ymmt6 = _mm256_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<6>(par))); \
ymmt7 = _mm256_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<7>(par))); \
ymms0 = _mm256_add_epi64(ymms0, ymmt0); \
ymms1 = _mm256_add_epi64(ymms1, ymmt1); \
ymms2 = _mm256_add_epi64(ymms2, ymmt2); \
ymms3 = _mm256_add_epi64(ymms3, ymmt3); \
ymms4 = _mm256_add_epi64(ymms4, ymmt4); \
ymms5 = _mm256_add_epi64(ymms5, ymmt5); \
ymms6 = _mm256_add_epi64(ymms6, ymmt6); \
ymms7 = _mm256_add_epi64(ymms7, ymmt7);

Definition at line 43 of file threefry_avx2_8x64.hpp.

◆ MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX

#define MCKL_RANDOM_INTERNAL_THREEFRY_AVX2_8X64_RBOX (   N)

Definition at line 69 of file threefry_avx2_8x64.hpp.