float_dsp-test: allow forcing cpuflags
authorJames Almer <jamrial@gmail.com>
Fri, 10 Oct 2014 05:18:14 +0000 (02:18 -0300)
committerJames Almer <jamrial@gmail.com>
Fri, 10 Oct 2014 16:51:51 +0000 (13:51 -0300)
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
libavutil/float_dsp.c
tests/fate/libavutil.mak

index 8ac7480..78de1a1 100644 (file)
@@ -146,6 +146,12 @@ av_cold void avpriv_float_dsp_init(AVFloatDSPContext *fdsp, int bit_exact)
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
+#if HAVE_UNISTD_H
+#include <unistd.h> /* for getopt */
+#endif
+#if !HAVE_GETOPT
+#include "compat/getopt.c"
+#endif
 
 #include "common.h"
 #include "cpu.h"
@@ -369,7 +375,7 @@ static int test_scalarproduct_float(AVFloatDSPContext *fdsp, AVFloatDSPContext *
 
 int main(int argc, char **argv)
 {
-    int ret = 0;
+    int ret = 0, seeded = 0;
     uint32_t seed;
     AVFloatDSPContext fdsp, cdsp;
     AVLFG lfg;
@@ -380,12 +386,31 @@ int main(int argc, char **argv)
     LOCAL_ALIGNED(32, double, dbl_src0, [LEN]);
     LOCAL_ALIGNED(32, double, dbl_src1, [LEN]);
 
-    if (argc > 2 && !strcmp(argv[1], "-s"))
-        seed = strtoul(argv[2], NULL, 10);
-    else
+    for (;;) {
+        int arg = getopt(argc, argv, "s:c:");
+        if (arg == -1)
+            break;
+        switch (arg) {
+        case 's':
+            seed = strtoul(optarg, NULL, 10);
+            seeded = 1;
+            break;
+        case 'c':
+        {
+            int cpuflags = av_get_cpu_flags();
+
+            if (av_parse_cpu_caps(&cpuflags, optarg) < 0)
+                return 1;
+
+            av_force_cpu_flags(cpuflags);
+            break;
+        }
+        }
+    }
+    if (!seeded)
         seed = av_get_random_seed();
 
-    av_log(NULL, AV_LOG_INFO, "float_dsp-test: random seed %u\n", seed);
+    av_log(NULL, AV_LOG_INFO, "float_dsp-test: %s %u\n", seeded ? "seed" : "random seed", seed);
 
     av_lfg_init(&lfg, seed);
 
index 579bdfb..4d1a038 100644 (file)
@@ -53,7 +53,7 @@ fate-fifo: CMD = run libavutil/fifo-test
 
 FATE_LIBAVUTIL += fate-float-dsp
 fate-float-dsp: libavutil/float_dsp-test$(EXESUF)
-fate-float-dsp: CMD = run libavutil/float_dsp-test
+fate-float-dsp: CMD = run libavutil/float_dsp-test $(CPUFLAGS:%=-c%)
 fate-float-dsp: CMP = null
 fate-float-dsp: REF = /dev/null