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:
parent
b234daf505
commit
2bc803dd14
|
@ -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
41
src/CRC_OPT.cpp
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user