Browse code

Fix cpu flags test program

Signed-off-by: Mans Rullgard <mans@mansr.com>

Mans Rullgard authored on 2011/06/30 22:03:54
Showing 1 changed files
... ...
@@ -39,32 +39,45 @@ int av_get_cpu_flags(void)
39 39
 #undef printf
40 40
 #include <stdio.h>
41 41
 
42
+static const struct {
43
+    int flag;
44
+    const char *name;
45
+} cpu_flag_tab[] = {
46
+#if   ARCH_ARM
47
+    { AV_CPU_FLAG_IWMMXT,    "iwmmxt"     },
48
+#elif ARCH_PPC
49
+    { AV_CPU_FLAG_ALTIVEC,   "altivec"    },
50
+#elif ARCH_X86
51
+    { AV_CPU_FLAG_MMX,       "mmx"        },
52
+    { AV_CPU_FLAG_MMX2,      "mmx2"       },
53
+    { AV_CPU_FLAG_SSE,       "sse"        },
54
+    { AV_CPU_FLAG_SSE2,      "sse2"       },
55
+    { AV_CPU_FLAG_SSE2SLOW,  "sse2(slow)" },
56
+    { AV_CPU_FLAG_SSE3,      "sse3"       },
57
+    { AV_CPU_FLAG_SSE3SLOW,  "sse3(slow)" },
58
+    { AV_CPU_FLAG_SSSE3,     "ssse3"      },
59
+    { AV_CPU_FLAG_ATOM,      "atom"       },
60
+    { AV_CPU_FLAG_SSE4,      "sse4.1"     },
61
+    { AV_CPU_FLAG_SSE42,     "sse4.2"     },
62
+    { AV_CPU_FLAG_AVX,       "avx"        },
63
+    { AV_CPU_FLAG_3DNOW,     "3dnow"      },
64
+    { AV_CPU_FLAG_3DNOWEXT,  "3dnowext"   },
65
+#endif
66
+    { 0 }
67
+};
68
+
42 69
 int main(void)
43 70
 {
44 71
     int cpu_flags = av_get_cpu_flags();
72
+    int i;
45 73
 
46 74
     printf("cpu_flags = 0x%08X\n", cpu_flags);
47
-    printf("cpu_flags = %s%s%s%s%s%s%s%s%s%s%s%s%s\n",
48
-#if   ARCH_ARM
49
-           cpu_flags & AV_CPU_FLAG_IWMMXT   ? "IWMMXT "     : "",
50
-#elif ARCH_PPC
51
-           cpu_flags & AV_CPU_FLAG_ALTIVEC  ? "ALTIVEC "    : "",
52
-#elif ARCH_X86
53
-           cpu_flags & AV_CPU_FLAG_MMX      ? "MMX "        : "",
54
-           cpu_flags & AV_CPU_FLAG_MMX2     ? "MMX2 "       : "",
55
-           cpu_flags & AV_CPU_FLAG_SSE      ? "SSE "        : "",
56
-           cpu_flags & AV_CPU_FLAG_SSE2     ? "SSE2 "       : "",
57
-           cpu_flags & AV_CPU_FLAG_SSE2SLOW ? "SSE2(slow) " : "",
58
-           cpu_flags & AV_CPU_FLAG_SSE3     ? "SSE3 "       : "",
59
-           cpu_flags & AV_CPU_FLAG_SSE3SLOW ? "SSE3(slow) " : "",
60
-           cpu_flags & AV_CPU_FLAG_SSSE3    ? "SSSE3 "      : "",
61
-           cpu_flags & AV_CPU_FLAG_ATOM     ? "Atom "       : "",
62
-           cpu_flags & AV_CPU_FLAG_SSE4     ? "SSE4.1 "     : "",
63
-           cpu_flags & AV_CPU_FLAG_SSE42    ? "SSE4.2 "     : "",
64
-           cpu_flags & AV_CPU_FLAG_AVX      ? "AVX "        : "",
65
-           cpu_flags & AV_CPU_FLAG_3DNOW    ? "3DNow "      : "",
66
-           cpu_flags & AV_CPU_FLAG_3DNOWEXT ? "3DNowExt "   : "");
67
-#endif
75
+    printf("cpu_flags =");
76
+    for (i = 0; cpu_flag_tab[i].flag; i++)
77
+        if (cpu_flags & cpu_flag_tab[i].flag)
78
+            printf(" %s", cpu_flag_tab[i].name);
79
+    printf("\n");
80
+
68 81
     return 0;
69 82
 }
70 83