create symbols for the various SSE values
add GCC check for SSSE3, and assume it is ordered SSE3 < SSSE3 < SSE4 git-svn-id: http://skia.googlecode.com/svn/trunk@4421 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
4a2cb30acc
commit
ab69788571
@ -59,11 +59,27 @@ inline uint32_t SkComputeChecksum32(const uint32_t* ptr, size_t size) {
|
||||
SkASSERT(SkIsAlign4(size));
|
||||
SkASSERT(SkIsAlign4((intptr_t)ptr));
|
||||
|
||||
const uint32_t* stop = ptr + (size >> 2);
|
||||
uint32_t result = 0;
|
||||
while (ptr < stop) {
|
||||
SkCHECKSUM_MASH(result, *ptr);
|
||||
ptr++;
|
||||
uint32_t result;
|
||||
|
||||
if (8 == sizeof(void*)) {
|
||||
uint64_t result8 = 0;
|
||||
if (size & 4) {
|
||||
result8 = *ptr++; // initial 32bit value
|
||||
}
|
||||
const uint64_t* ptr8 = (const uint64_t*)ptr;
|
||||
const uint64_t* stop = ptr8 + (size >> 3);
|
||||
while (ptr8 < stop) {
|
||||
SkCHECKSUM_MASH(result8, *ptr8);
|
||||
ptr8++;
|
||||
}
|
||||
result = static_cast<uint32_t>(result8 ^ (result8 >> 32));
|
||||
} else {
|
||||
result = 0;
|
||||
const uint32_t* stop = ptr + (size >> 2);
|
||||
while (ptr < stop) {
|
||||
SkCHECKSUM_MASH(result, *ptr);
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -103,14 +103,20 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* If defined, SK_CPU_SSE_LEVEL should be set to [2,3,41,42]. On non-intel CPU,
|
||||
* this should be undefined.
|
||||
* If defined, SK_CPU_SSE_LEVEL should be set to the highest supported level.
|
||||
* On non-intel CPU this should be undefined.
|
||||
*/
|
||||
#define SK_CPU_LEVEL_SSE2_VALUE 20
|
||||
#define SK_CPU_LEVEL_SSE3_VALUE 30
|
||||
#define SK_CPU_LEVEL_SSSE3_VALUE 31
|
||||
|
||||
#ifndef SK_CPU_SSE_LEVEL
|
||||
#ifdef __SSE3__
|
||||
#define SK_CPU_SSE_LEVEL 3
|
||||
#if defined(__SSSE3__)
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_LEVEL_SSSE3_VALUE
|
||||
#elif defined(__SSE3__)
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_LEVEL_SSE3_VALUE
|
||||
#elif defined(__SSE2__)
|
||||
#define SK_CPU_SSE_LEVEL 2
|
||||
#define SK_CPU_SSE_LEVEL SK_CPU_LEVEL_SSE2_VALUE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user