00001
00027 #ifndef DKUTIL_CSTD_MEMORY_H
00028 #define DKUTIL_CSTD_MEMORY_H
00029
00030 #include "os.h"
00031 #include "cpu.h"
00032 #include "x86_optimized_memcpy.h"
00033
00034
00035
00036
00037 typedef struct dkcstd_aligned_memory_result{
00038 void *mem;
00039 size_t offset_from_original;
00040 size_t access_permit_from_mem;
00041 }DKCSTD_ALIGNED_MEM;
00042
00043 DKC_EXTERN void dkcstd_get_memory_align(DKCSTD_ALIGNED_MEM *r,const void *src,size_t srcsize,size_t align_offset);
00044
00045 DKC_EXTERN void *dkcstd_pointer_align( const void *src,size_t align_offset);
00046 DKC_EXTERN size_t dkcstd_offset_align(const void *src,size_t align_offset);
00047
00048 DKC_EXTERN BOOL dkcstd_check_align(const void *src,size_t bytes);
00049
00050
00051
00053 DKC_EXTERN void *dkcstd_memcpy( void *dest, const void *src, size_t count );
00055 DKC_EXTERN void *dkcstd_memcpy8( void *dest, const void *src, size_t count );
00057 DKC_EXTERN void *dkcstd_memcpy32( void *dest, const void *src, size_t count );
00059 DKC_EXTERN void *dkcstd_memcpy64( void *dest, const void *src, size_t count );
00061 DKC_EXTERN void *dkcstd_memcpy64f( void *dest, const void *src, size_t count );
00062
00063
00064 #if 1==DKUTIL_CSTD_MSVC_IASM
00065
00066 DKC_EXTERN void *dkcstd_memcpy_rep_movsd( void *dest, const void *src, size_t count );
00067 DKC_EXTERN void *dkcstd_memcpy_FPU64( void *dest, const void *src, size_t count );
00068
00069 DKC_EXTERN void *dkcstd_memcpy_asm64( void *dest, const void *src, size_t count );
00070 DKC_EXTERN void *dkcstd_memcpy_asm32( void *dest, const void *src, size_t count );
00071
00072
00073 DKC_EXTERN void *dkcstd_memcpy_movntq_mmx_prefetch128( void *dest, const void *src, size_t count );
00074 DKC_EXTERN void *dkcstd_memcpy_movntq_mmx128( void *dest, const void *src, size_t count );
00075 DKC_EXTERN void *dkcstd_memcpy_movntq_mmx64( void *dest, const void *src, size_t count );
00076 DKC_EXTERN void *dkcstd_memcpy_mmx128( void *dest, const void *src, size_t count );
00077 DKC_EXTERN void *dkcstd_memcpy_mmx64( void *dest, const void *src, size_t count );
00078
00079
00080 DKC_EXTERN void *dkcstd_memcpy_movups_sse_prefetch256( void *dest, const void *src, size_t count );
00081
00082
00083 DKC_EXTERN void *dkcstd_memcpy_movntps_sse_prefetch256( void *dest, const void *src, size_t count );
00084 DKC_EXTERN void *dkcstd_memcpy_movntps_sse128( void *dest, const void *src, size_t count );
00085 DKC_EXTERN void *dkcstd_memcpy_sse128( void *dest, const void *src, size_t count );
00086
00087 #endif
00088
00089
00090 DKC_EXTERN void *dkcstd_memmove( void *dest, const void *src, size_t count );
00091
00092 DKC_EXTERN void *dkcstd_memset( void *dest, int c, size_t count );
00093
00094 DKC_EXTERN int dkcstd_memcmp( const void *buf1, const void *buf2, size_t count );
00095
00096 DKC_EXTERN void *dkcstd_memchr( const void *buf, int c, size_t count );
00097
00098 #endif //end of include once
00099