1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Add optimized CRC calculator when OPT is on

This commit is contained in:
Logan McNaughton 2016-07-07 07:19:40 -06:00
parent b234daf505
commit 2bc803dd14
2 changed files with 47 additions and 0 deletions

View File

@ -181,6 +181,12 @@ if(OPT)
add_definitions(
-D__VEC4_OPT
)
list(APPEND GLideN64_SOURCES
CRC_OPT.cpp
)
list(REMOVE_ITEM GLideN64_SOURCES
CRC.cpp
)
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
EXEC_PROGRAM(cat ARGS "/proc/cpuinfo" OUTPUT_VARIABLE CPUINFO)
STRING(REGEX REPLACE "^.*(neon).*$" "\\1" NEON_THERE ${CPUINFO})

41
src/CRC_OPT.cpp Normal file
View File

@ -0,0 +1,41 @@
#include "Types.h"
void CRC_BuildTable()
{
}
u32 CRC_Calculate( u32 crc, const void * buffer, u32 count )
{
unsigned int i;
u32 *data = (u32 *) buffer;
count /= 4;
for(i = 0; i < count; ++i) {
crc += data[i];
crc += (crc << 10);
crc ^= (crc >> 6);
}
crc += (crc << 3);
crc ^= (crc >> 11);
crc += (crc << 15);
return crc;
}
u32 CRC_CalculatePalette( u32 crc, const void * buffer, u32 count )
{
unsigned int i;
u16 *data = (u16 *) buffer;
count /= 4;
for(i = 0; i < count; ++i) {
crc += data[i << 2];
crc += (crc << 10);
crc ^= (crc >> 6);
}
crc += (crc << 3);
crc ^= (crc >> 11);
crc += (crc << 15);
return crc;
}