MCKL
Monte Carlo Kernel Library
Classes | Namespaces | Macros
threefry_sse2_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::Threefish512GeneratorSSE2Impl< T >
 
class  mckl::internal::Threefry8x64GeneratorSSE2Impl< T >
 

Namespaces

 mckl
 
 mckl::internal
 

Macros

#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_CYCLE_4(N)
 
#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_CYCLE_8(N)
 
#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_KBOX(N)
 
#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N)
 

Macro Definition Documentation

◆ MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_CYCLE_4

#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_CYCLE_4 (   N)
Value:
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 2); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 3); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 4); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_KBOX(N * 8 + 4);
#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N)

Definition at line 105 of file threefry_sse2_8x64.hpp.

◆ MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_CYCLE_8

#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_CYCLE_8 (   N)
Value:
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 2); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 3); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 4); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_KBOX(N * 8 + 4); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 5); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 6); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 7); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N * 8 + 8); \
MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_KBOX(N * 8 + 8);
#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX(N)

Definition at line 112 of file threefry_sse2_8x64.hpp.

◆ MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_KBOX

#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_KBOX (   N)
Value:
xmmt0 = _mm_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<0>(par))); \
xmmt1 = _mm_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<1>(par))); \
xmmt2 = _mm_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<2>(par))); \
xmmt3 = _mm_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<3>(par))); \
xmmt4 = _mm_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<4>(par))); \
xmmt5 = _mm_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<5>(par))); \
xmmt6 = _mm_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<6>(par))); \
xmmt7 = _mm_set1_epi64x(static_cast<MCKL_INT64>( \
ThreefryKBox<T, K, N>::template key<7>(par))); \
xmms0 = _mm_add_epi64(xmms0, xmmt0); \
xmms1 = _mm_add_epi64(xmms1, xmmt1); \
xmms2 = _mm_add_epi64(xmms2, xmmt2); \
xmms3 = _mm_add_epi64(xmms3, xmmt3); \
xmms4 = _mm_add_epi64(xmms4, xmmt4); \
xmms5 = _mm_add_epi64(xmms5, xmmt5); \
xmms6 = _mm_add_epi64(xmms6, xmmt6); \
xmms7 = _mm_add_epi64(xmms7, xmmt7);

Definition at line 43 of file threefry_sse2_8x64.hpp.

◆ MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX

#define MCKL_RANDOM_INTERNAL_THREEFRY_SSE2_8X64_RBOX (   N)

Definition at line 69 of file threefry_sse2_8x64.hpp.