daedalus/Source/Utility/FastMemcpy.h
2022-06-22 23:35:36 +10:00

43 lines
1.1 KiB
C

#ifndef UTILITY_FASTMEMCPY_H_
#define UTILITY_FASTMEMCPY_H_
#include <stdlib.h>
//#define PROFILE_MEMCPY
#ifdef PROFILE_MEMCPY
void memcpy_test( void * dst, const void * src, size_t size );
#endif
void memcpy_byteswap( void* dst, const void* src, size_t size ); // Little endian, platform independent, ALWAYS swaps.
// memcpy_swizzle is just a regular memcpy on big-endian targets.
#ifdef DAEDALUS_ENDIAN_BIG
#define memcpy_swizzle memcpy
#elif DAEDALUS_ENDIAN_LITTLE
#define memcpy_swizzle memcpy_byteswap
#else
#error No DAEDALUS_ENDIAN_MODE specified
#endif
// The PSP build defines fast versions of memcpy/memcpy_swizzle.
#ifdef DAEDALUS_PSP
void memcpy_vfpu( void* dst, const void* src, size_t size );
void memcpy_vfpu_byteswap( void* dst, const void* src, size_t size );
#define fast_memcpy memcpy_vfpu
#define fast_memcpy_swizzle memcpy_vfpu_byteswap
#else // DAEDALUS_PSP
// Just use regular memcpy/memcpy_swizzle.
#define fast_memcpy memcpy
#define fast_memcpy_swizzle memcpy_swizzle
#endif // DAEDALUS_PSP
#endif // UTILITY_FASTMEMCPY_H_