00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <stdio.h>
00020
00021 #include "cpu.h"
00022 #include "config.h"
00023
00024 int av_get_cpu_flags(void)
00025 {
00026 static int flags, checked;
00027
00028 if (checked)
00029 return flags;
00030
00031 if (ARCH_ARM) flags = ff_get_cpu_flags_arm();
00032 if (ARCH_PPC) flags = ff_get_cpu_flags_ppc();
00033 if (ARCH_X86) flags = ff_get_cpu_flags_x86();
00034
00035 checked = 1;
00036 return flags;
00037 }
00038
00039 #ifdef TEST
00040
00041 #undef printf
00042
00043 int main(void)
00044 {
00045 int cpu_flags = av_get_cpu_flags();
00046
00047 printf("cpu_flags = 0x%08X\n", cpu_flags);
00048 printf("cpu_flags = %s%s%s%s%s%s%s%s%s%s%s%s\n",
00049 #if ARCH_ARM
00050 cpu_flags & AV_CPU_FLAG_IWMMXT ? "IWMMXT " : "",
00051 #elif ARCH_PPC
00052 cpu_flags & AV_CPU_FLAG_ALTIVEC ? "ALTIVEC " : "",
00053 #elif ARCH_X86
00054 cpu_flags & AV_CPU_FLAG_MMX ? "MMX " : "",
00055 cpu_flags & AV_CPU_FLAG_MMX2 ? "MMX2 " : "",
00056 cpu_flags & AV_CPU_FLAG_SSE ? "SSE " : "",
00057 cpu_flags & AV_CPU_FLAG_SSE2 ? "SSE2 " : "",
00058 cpu_flags & AV_CPU_FLAG_SSE2SLOW ? "SSE2(slow) " : "",
00059 cpu_flags & AV_CPU_FLAG_SSE3 ? "SSE3 " : "",
00060 cpu_flags & AV_CPU_FLAG_SSE3SLOW ? "SSE3(slow) " : "",
00061 cpu_flags & AV_CPU_FLAG_SSSE3 ? "SSSE3 " : "",
00062 cpu_flags & AV_CPU_FLAG_SSE4 ? "SSE4.1 " : "",
00063 cpu_flags & AV_CPU_FLAG_SSE42 ? "SSE4.2 " : "",
00064 cpu_flags & AV_CPU_FLAG_3DNOW ? "3DNow " : "",
00065 cpu_flags & AV_CPU_FLAG_3DNOWEXT ? "3DNowExt " : "");
00066 #endif
00067 return 0;
00068 }
00069
00070 #endif