1 #ifndef GIM_MEMORY_H_INCLUDED
2 #define GIM_MEMORY_H_INCLUDED
40 #include <xmmintrin.h>
43 #define pf(_x,_i) _mm_prefetch((void *)(_x + _i + pfval), 0)
45 #define pf2(_x,_i) _mm_prefetch((void *)(_x + _i + pfval2), 0)
56 #define GIM_COPY_ARRAYS(dest_array,source_array,element_count)\
58 for (GUINT _i_=0;_i_<element_count ;++_i_)\
60 dest_array[_i_] = source_array[_i_];\
64 #define GIM_COPY_ARRAYS_1(dest_array,source_array,element_count,copy_macro)\
66 for (GUINT _i_=0;_i_<element_count ;++_i_)\
68 copy_macro(dest_array[_i_],source_array[_i_]);\
73 #define GIM_ZERO_ARRAY(array,element_count)\
75 for (GUINT _i_=0;_i_<element_count ;++_i_)\
81 #define GIM_CONSTANT_ARRAY(array,element_count,constant)\
83 for (GUINT _i_=0;_i_<element_count ;++_i_)\
85 array[_i_] = constant;\
115 void *
gim_realloc(
void *ptr,
size_t oldsize,
size_t newsize);
120 #if defined (_WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__)
121 #define GIM_SIMD_MEMORY 1
125 #define SIMD_T GUINT64
126 #define SIMD_T_SIZE sizeof(SIMD_T)
132 #ifdef GIM_SIMD_MEMORY
146 char * c_src_ptr = (
char *)src;
147 char * c_dst_ptr = (
char *)dst;
150 *(c_dst_ptr++) = *(c_src_ptr++);
155 memcpy(dst,src,copysize);
164 T _e_tmp_ = _array[_i];
165 _array[_i] = _array[_j];
166 _array[_j] = _e_tmp_;
173 char _e_tmp_[
sizeof(T)];
190 #endif // GIM_MEMORY_H_INCLUDED