2002-11-08 00:02:15 -08:00
|
|
|
#include "evas_common.h"
|
|
|
|
|
|
|
|
#ifdef BUILD_MMX
|
|
|
|
#include "evas_mmx.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void
|
2002-11-13 21:38:10 -08:00
|
|
|
evas_common_cpu_init(void)
|
2002-11-08 00:02:15 -08:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
int
|
2002-11-13 21:38:10 -08:00
|
|
|
evas_common_cpu_have_cpuid(void)
|
2002-11-08 00:02:15 -08:00
|
|
|
{
|
|
|
|
#ifdef BUILD_MMX
|
|
|
|
unsigned int have_cpu_id;
|
|
|
|
|
|
|
|
have_cpu_id = 0;
|
|
|
|
have_cpuid(have_cpu_id);
|
|
|
|
return have_cpu_id;
|
|
|
|
#else
|
|
|
|
return 0;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2002-11-13 21:38:10 -08:00
|
|
|
evas_common_cpu_can_do(int *mmx, int *sse, int *sse2)
|
2002-11-08 00:02:15 -08:00
|
|
|
{
|
|
|
|
#ifdef BUILD_MMX
|
|
|
|
#ifndef HARD_CODED_P3
|
|
|
|
#ifndef HARD_CODED_P2
|
|
|
|
static int do_mmx = 0, do_sse = 0, do_sse2 = 0, done = 0;
|
|
|
|
unsigned int have_cpu_id;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef BUILD_MMX
|
|
|
|
*mmx = 0;
|
|
|
|
*sse = 0;
|
|
|
|
*sse2 = 0;
|
|
|
|
return;
|
|
|
|
#else
|
|
|
|
# ifdef HARD_CODED_P3
|
|
|
|
*mmx = 1;
|
|
|
|
*sse = 1;
|
|
|
|
*sse2 = 0;
|
|
|
|
return;
|
|
|
|
# else
|
|
|
|
# ifdef HARD_CODED_P2
|
|
|
|
*mmx = 1;
|
|
|
|
*sse = 0;
|
|
|
|
*sse2 = 0;
|
|
|
|
return;
|
|
|
|
# else
|
|
|
|
if (done)
|
|
|
|
{
|
|
|
|
*mmx = do_mmx;
|
|
|
|
*sse = do_sse;
|
|
|
|
*sse2 = do_sse2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
# ifdef BUILD_MMX
|
2002-11-13 21:38:10 -08:00
|
|
|
have_cpu_id = evas_common_cpu_have_cpuid();
|
2002-11-08 00:02:15 -08:00
|
|
|
if (have_cpu_id)
|
|
|
|
{
|
|
|
|
unsigned int cpu_id;
|
|
|
|
|
|
|
|
cpu_id = 0;
|
|
|
|
get_cpuid(cpu_id);
|
|
|
|
if (cpu_id & CPUID_MMX) do_mmx = 1;
|
|
|
|
if (cpu_id & CPUID_SSE) do_sse = 1;
|
|
|
|
if (cpu_id & CPUID_SSE2) do_sse2 = 1;
|
|
|
|
}
|
|
|
|
# endif
|
|
|
|
*mmx = do_mmx;
|
|
|
|
*sse = do_sse;
|
|
|
|
*sse2 = do_sse2;
|
|
|
|
done = 1;
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
#ifdef BUILD_MMX
|
|
|
|
void
|
2002-11-13 21:38:10 -08:00
|
|
|
evas_common_cpu_end_opt(void)
|
2002-11-08 00:02:15 -08:00
|
|
|
{
|
|
|
|
emms();
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
void
|
2002-11-13 21:38:10 -08:00
|
|
|
evas_common_cpu_end_opt(void)
|
2002-11-08 00:02:15 -08:00
|
|
|
{
|
|
|
|
}
|
|
|
|
#endif
|