vSMC
vSMC: Scalable Monte Carlo
Classes | Namespaces | Macros | Functions
cstring.hpp File Reference
#include <vsmc/internal/common.hpp>
#include <vsmc/utility/cpuid.hpp>
#include <emmintrin.h>
#include <immintrin.h>

Go to the source code of this file.

Classes

class  vsmc::CStringNonTemporalThreshold
 The threshold of buffer size above which memcpy use non-temporal instructions. More...
 
class  vsmc::internal::CStringRuntimeDispatch
 

Namespaces

 vsmc
 
 vsmc::internal
 

Macros

#define VSMC_CSTRING_NON_TEMPORAL_THRESHOLD   0
 Threshold above which non-temporal copy shall be used (0 for auto) More...
 
#define VSMC_CSTRING_RUNTIME_DISPATCH   0
 Shall functions in this module do runtime dispatch. More...
 
#define VSMC_DEFINE_UTILITY_CSTRING_CPY(ISA, sa, da, nt, c, m, load, store)
 
#define VSMC_DEFINE_UTILITY_CSTRING_SET(ISA, da, nt, c, m, cast, set1, store)
 
#define VSMC_RUNTIME_ASSERT_UTILITY_CSTRING_ALIGNED_DST(ISA, dst, func)
 
#define VSMC_RUNTIME_ASSERT_UTILITY_CSTRING_ALIGNED_SRC(ISA, src, func)
 
#define VSMC_RUNTIME_ASSERT_UTILITY_CSTRING_MEMCPY(dst, src, n)
 

Functions

template<SIMD ISA>
unsigned vsmc::internal::cstring_is_aligned (const void *ptr)
 
void * vsmc::memcpy (void *dst, const void *src, std::size_t n)
 SIMD optimized memcpy with non-temporal store for large buffers. More...
 
template<SIMD >
void vsmc::internal::memcpy_0 (void *dst, const void *src, std::size_t n)
 
void * vsmc::memcpy_avx (void *dst, const void *src, std::size_t n)
 AVX optimized memcpy with non-temporal store for large buffers. More...
 
void * vsmc::memcpy_avx_nt (void *dst, const void *src, std::size_t n)
 AVX optimized memcpy with non-temporal store regardless of size. More...
 
template<SIMD , std::size_t , bool , bool , bool >
void vsmc::internal::memcpy_l (void *, const void *, std::size_t)
 
template<>
void vsmc::internal::memcpy_l< AVX, 4, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 4, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 4, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 4, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 4, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 4, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 4, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 4, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 8, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 8, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 8, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 8, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 8, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 8, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 8, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< AVX, 8, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 4, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 4, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 4, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 4, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 4, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 4, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 4, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 4, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 8, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 8, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 8, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 8, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 8, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 8, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 8, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_l< SSE2, 8, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<SIMD ISA, std::size_t N>
void vsmc::internal::memcpy_l_switch (void *dst, const void *src, std::size_t n, unsigned flag)
 
template<SIMD , std::size_t , bool , bool , bool >
void vsmc::internal::memcpy_n (void *, const void *, std::size_t)
 
template<>
void vsmc::internal::memcpy_n< AVX, 1, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 1, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 1, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 1, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 1, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 1, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 1, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 1, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 2, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 2, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 2, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 2, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 2, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 2, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 2, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 2, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 4, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 4, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 4, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 4, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 4, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 4, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 4, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 4, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 8, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 8, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 8, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 8, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 8, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 8, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 8, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< AVX, 8, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 1, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 1, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 1, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 1, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 1, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 1, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 1, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 1, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 2, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 2, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 2, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 2, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 2, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 2, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 2, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 2, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 4, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 4, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 4, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 4, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 4, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 4, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 4, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 4, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 8, false, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 8, false, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 8, false, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 8, false, true, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 8, true, false, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 8, true, false, true > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 8, true, true, false > (void *dst, const void *src, std::size_t n)
 
template<>
void vsmc::internal::memcpy_n< SSE2, 8, true, true, true > (void *dst, const void *src, std::size_t n)
 
template<SIMD ISA, std::size_t N>
void vsmc::internal::memcpy_n_switch (void *dst, const void *src, std::size_t n, unsigned flag)
 
void * vsmc::memcpy_nt (void *dst, const void *src, std::size_t n)
 SIMD optimized memcpy with non-temporal store regardless of size. More...
 
template<SIMD ISA>
void * vsmc::internal::memcpy_simd (void *dst, const void *src, std::size_t n)
 
template<SIMD ISA>
void * vsmc::internal::memcpy_simd_nt (void *dst, const void *src, std::size_t n)
 
void * vsmc::memcpy_sse2 (void *dst, const void *src, std::size_t n)
 SSE2 optimized memcpy with non-temporal store for large buffers. More...
 
void * vsmc::memcpy_sse2_nt (void *dst, const void *src, std::size_t n)
 SSE2 optimized memcpy with non-temporal store regardless of size. More...
 
void * vsmc::memcpy_std (void *dst, const void *src, std::size_t n)
 Direct call to std::memcpy More...
 
void * vsmc::memset (void *dst, int ch, std::size_t n)
 SIMD optimized memset with non-temporal store for large buffers. More...
 
template<SIMD >
void vsmc::internal::memset_0 (void *dst, int ch, std::size_t n)
 
void * vsmc::memset_avx (void *dst, int ch, std::size_t n)
 AVX optimized memset with non-temporal store for large buffers. More...
 
void * vsmc::memset_avx_nt (void *dst, int ch, std::size_t n)
 AVX optimized memset with non-temporal store regardless of size. More...
 
template<SIMD , std::size_t , bool , bool >
void vsmc::internal::memset_l (void *, int, std::size_t)
 
template<>
void vsmc::internal::memset_l< AVX, 4, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< AVX, 4, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< AVX, 4, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< AVX, 4, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< AVX, 8, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< AVX, 8, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< AVX, 8, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< AVX, 8, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< SSE2, 4, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< SSE2, 4, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< SSE2, 4, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< SSE2, 4, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< SSE2, 8, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< SSE2, 8, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< SSE2, 8, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_l< SSE2, 8, true, true > (void *dst, int ch, std::size_t n)
 
template<SIMD ISA, std::size_t N>
void vsmc::internal::memset_l_switch (void *dst, int ch, std::size_t n, unsigned flag)
 
template<SIMD , std::size_t , bool , bool >
void vsmc::internal::memset_n (void *, int, std::size_t)
 
template<>
void vsmc::internal::memset_n< AVX, 1, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 1, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 1, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 1, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 2, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 2, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 2, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 2, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 4, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 4, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 4, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 4, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 8, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 8, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 8, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< AVX, 8, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 1, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 1, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 1, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 1, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 2, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 2, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 2, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 2, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 4, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 4, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 4, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 4, true, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 8, false, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 8, false, true > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 8, true, false > (void *dst, int ch, std::size_t n)
 
template<>
void vsmc::internal::memset_n< SSE2, 8, true, true > (void *dst, int ch, std::size_t n)
 
template<SIMD ISA, std::size_t N>
void vsmc::internal::memset_n_switch (void *dst, int ch, std::size_t n, unsigned flag)
 
void * vsmc::memset_nt (void *dst, int ch, std::size_t n)
 SIMD optimized memset with non-temporal store regardless of size. More...
 
template<SIMD ISA>
void * vsmc::internal::memset_simd (void *dst, int ch, std::size_t n)
 
template<SIMD ISA>
void * vsmc::internal::memset_simd_nt (void *dst, int ch, std::size_t n)
 
void * vsmc::memset_sse2 (void *dst, int ch, std::size_t n)
 SSE2 optimized memset with non-temporal store for large buffers. More...
 
void * vsmc::memset_sse2_nt (void *dst, int ch, std::size_t n)
 SSE2 optimized memset with non-temporal store regardless of size. More...
 
void * vsmc::memset_std (void *dst, int ch, std::size_t n)
 Direct call to std::memset More...
 

Macro Definition Documentation

#define VSMC_DEFINE_UTILITY_CSTRING_CPY (   ISA,
  sa,
  da,
  nt,
  c,
  m,
  load,
  store 
)

Definition at line 260 of file cstring.hpp.

#define VSMC_DEFINE_UTILITY_CSTRING_SET (   ISA,
  da,
  nt,
  c,
  m,
  cast,
  set1,
  store 
)

Definition at line 141 of file cstring.hpp.

#define VSMC_RUNTIME_ASSERT_UTILITY_CSTRING_ALIGNED_DST (   ISA,
  dst,
  func 
)
Value:
(::vsmc::internal::cstring_is_aligned<ISA>(dst) != 0), \
("**vsmc::"#func" DESTINATION POINTER IS NOT ALIGNED"))
#define VSMC_RUNTIME_ASSERT(cond, msg)
Definition: assert.hpp:64

Definition at line 130 of file cstring.hpp.

#define VSMC_RUNTIME_ASSERT_UTILITY_CSTRING_ALIGNED_SRC (   ISA,
  src,
  func 
)
Value:
(::vsmc::internal::cstring_is_aligned<ISA>(src) != 0), \
("**vsmc::"#func" SOURCE POINTER IS NOT ALIGNED"))
#define VSMC_RUNTIME_ASSERT(cond, msg)
Definition: assert.hpp:64

Definition at line 135 of file cstring.hpp.

#define VSMC_RUNTIME_ASSERT_UTILITY_CSTRING_MEMCPY (   dst,
  src,
 
)
Value:
static_cast<const char *>(dst) - \
static_cast<const char *>(src) <= \
static_cast<std::ptrdiff_t>(n) && \
static_cast<const char *>(src) - \
static_cast<const char *>(dst) <= \
static_cast<std::ptrdiff_t>(n)), \
("**vsmc::memcpy** OVERLAPPING BUFFERS"))
#define VSMC_RUNTIME_ASSERT(cond, msg)
Definition: assert.hpp:64

Definition at line 120 of file cstring.hpp.