Fix testing of float params
authorDavid Schleef <ds@schleef.org>
Wed, 25 Aug 2010 23:00:58 +0000 (16:00 -0700)
committerDavid Schleef <ds@schleef.org>
Wed, 25 Aug 2010 23:00:58 +0000 (16:00 -0700)
orc-test/orctest.c
orc/orcexecutor.c
orc/orcprogram.h
testsuite/show_parse.c

index c9b873e..f4a66dc 100644 (file)
@@ -568,7 +568,11 @@ orc_test_compare_output_full (OrcProgram *program, int flags)
       orc_array_set_pattern (dest_emul[i], ORC_OOB_VALUE);
       misalignment++;
     } else if (program->vars[i].vartype == ORC_VAR_TYPE_PARAM) {
-      orc_executor_set_param (ex, i, 2);
+      if (program->vars[i].is_float_param) {
+        orc_executor_set_param_float (ex, i, 2.0);
+      } else {
+        orc_executor_set_param (ex, i, 2);
+      }
     }
   }
 
index df2ed94..fef9e67 100644 (file)
@@ -101,6 +101,14 @@ orc_executor_set_param (OrcExecutor *ex, int var, int value)
 }
 
 void
+orc_executor_set_param_float (OrcExecutor *ex, int var, float value)
+{
+  orc_union32 u;
+  u.f = value;
+  ex->params[var] = u.i;
+}
+
+void
 orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value)
 {
   int var;
index 13d56ed..6cbe43b 100644 (file)
@@ -640,6 +640,7 @@ void orc_executor_set_stride (OrcExecutor *ex, int var, int stride);
 void orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *ptr);
 void orc_executor_set_param (OrcExecutor *ex, int var, int value);
 void orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value);
+void orc_executor_set_param_float (OrcExecutor *ex, int var, float value);
 int orc_executor_get_accumulator (OrcExecutor *ex, int var);
 int orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name);
 void orc_executor_set_n (OrcExecutor *ex, int n);
index 45ee92d..b932691 100644 (file)
@@ -285,7 +285,11 @@ show (OrcProgram *program)
       dest[i-ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, 0);
       orc_array_set_pattern (dest[i], ORC_OOB_VALUE);
     } else if (program->vars[i].vartype == ORC_VAR_TYPE_PARAM) {
-      orc_executor_set_param (ex, i, 2);
+      if (program->vars[i].is_float_param) {
+        orc_executor_set_param_float (ex, i, 2.0);
+      } else {
+        orc_executor_set_param (ex, i, 2);
+      }
     }
   }