Libav 0.7.1
|
00001 /* 00002 * This file is part of Libav. 00003 * 00004 * Libav is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU Lesser General Public 00006 * License as published by the Free Software Foundation; either 00007 * version 2.1 of the License, or (at your option) any later version. 00008 * 00009 * Libav is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Lesser General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Lesser General Public 00015 * License along with Libav; if not, write to the Free Software 00016 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 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_ATOM ? "Atom " : "", 00062 cpu_flags & AV_CPU_FLAG_SSE4 ? "SSE4.1 " : "", 00063 cpu_flags & AV_CPU_FLAG_SSE42 ? "SSE4.2 " : "", 00064 cpu_flags & AV_CPU_FLAG_AVX ? "AVX " : "", 00065 cpu_flags & AV_CPU_FLAG_3DNOW ? "3DNow " : "", 00066 cpu_flags & AV_CPU_FLAG_3DNOWEXT ? "3DNowExt " : ""); 00067 #endif 00068 return 0; 00069 } 00070 00071 #endif