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