8 #ifndef ZenLib_MemoryUtilsH 9 #define ZenLib_MemoryUtilsH 18 #ifdef ZENLIB_MEMUTILS_SSE2 19 #include <emmintrin.h> 20 #endif //ZENLIB_MEMUTILS_SSE2 25 #ifndef ZENLIB_MEMUTILS_SSE2 28 #define malloc_Aligned128 (size) \ 30 #define free_Aligned128 (ptr) \ 35 #define memcpy_Unaligned_Unaligned memcpy 36 #define memcpy_Aligned128_Unaligned memcpy 40 #define memcpy_Unaligned_Aligned128 memcpy 41 #define memcpy_Aligned128_Aligned128 memcpy 45 #define memcpy_Unaligned_Unaligned_Once128 memcpy 49 #define memcpy_Aligned128_Aligned128_Once128 memcpy 53 #define memcpy_Unaligned_Unaligned_Once1024 memcpy 57 #define memcpy_Aligned128_Aligned128_Once1024 memcpy 61 #define memcpy_Unaligned_Aligned128_Size128 memcpy 62 #define memcpy_Aligned128_Aligned128_Size128 memcpy 64 #else // ZENLIB_MEMUTILS_SSE2 71 return _aligned_malloc (size, 16);
85 __m128i* destination16=(__m128i*)destination;
86 const __m128i* source16=(
const __m128i*)source;
90 _mm_storeu_si128 (destination16++, _mm_loadu_si128(source16++));
92 char* destination1=(
char*)destination16;
93 char* source1=(
char*)source16;
95 *destination1++=*source1++;
100 size_t extra=num&0xF;
101 __m128i* destination16=(__m128i*)destination;
102 const __m128i* source16=(
const __m128i*)source;
106 _mm_storeu_si128 (destination16++, _mm_load_si128(source16++));
108 char* destination1=(
char*)destination16;
109 char* source1=(
char*)source16;
111 *destination1++=*source1++;
119 size_t extra=num&0xF;
120 __m128i* destination16=(__m128i*)destination;
121 const __m128i* source16=(
const __m128i*)source;
125 _mm_stream_si128 (destination16++, _mm_loadu_si128(source16++));
127 char* destination1=(
char*)destination16;
128 char* source1=(
char*)source16;
130 *destination1++=*source1++;
138 _mm_storeu_si128 ((__m128i*)destination, _mm_loadu_si128((
const __m128i*)source));
146 size_t extra=num&0xF;
147 __m128i* destination16=(__m128i*)destination;
148 const __m128i* source16=(
const __m128i*)source;
152 _mm_stream_si128 (destination16++, _mm_load_si128(source16++));
154 char* destination1=(
char*)destination16;
155 char* source1=(
char*)source16;
157 *destination1++=*source1++;
162 __m128i* destination16=(__m128i*)destination;
163 const __m128i* source16=(__m128i*)source;
167 _mm_stream_si128 (destination16++, _mm_load_si128(source16++));
175 __m128i* destination16=(__m128i*)destination;
176 const __m128i* source16=(__m128i*)source;
180 _mm_storeu_si128 (destination16++, _mm_loadu_si128(source16++));
188 _mm_stream_si128 ((__m128i*)destination, _mm_load_si128((
const __m128i*)source));
194 inline void memcpy_Unaligned_Unaligned_Size128 (
void* destination,
const void* source,
size_t num)
196 __m128i* destination16=(__m128i*)destination;
197 const __m128i* source16=(
const __m128i*)source;
201 _mm_storeu_si128 (destination16++, _mm_loadu_si128(source16++));
204 inline void memcpy_Aligned128_Unaligned_Size128 (
void* destination,
const void* source,
size_t num)
206 __m128i* destination16=(__m128i*)destination;
207 const __m128i* source16=(__m128i*)source;
211 _mm_storeu_si128 (destination16++, _mm_load_si128(source16++));
219 __m128i* destination16=(__m128i*)destination;
220 const __m128i* source16=(__m128i*)source;
224 _mm_stream_si128 (destination16++, _mm_loadu_si128(source16++));
258 #endif // ZENLIB_MEMUTILS_SSE2 #define memcpy_Aligned128_Aligned128_Once128
Definition: MemoryUtils.h:49
#define memcpy_Aligned128_Unaligned
Definition: MemoryUtils.h:36
Definition: BitStream.h:23
#define memcpy_Unaligned_Unaligned_Once1024
Definition: MemoryUtils.h:53
#define memcpy_Unaligned_Unaligned
Definition: MemoryUtils.h:35
#define malloc_Aligned128
Definition: MemoryUtils.h:28
#define free_Aligned128
Definition: MemoryUtils.h:30
#define memcpy_Aligned128_Aligned128_Size128
Definition: MemoryUtils.h:62
#define memcpy_Unaligned_Unaligned_Once128
Definition: MemoryUtils.h:45
#define memcpy_Unaligned_Aligned128
Definition: MemoryUtils.h:40
#define memcpy_Unaligned_Aligned128_Size128
Definition: MemoryUtils.h:61
#define memcpy_Aligned128_Aligned128
Definition: MemoryUtils.h:41