diff --git a/src/tools/wasm-interp.cc b/src/tools/wasm-interp.cc index 239d23f625..1c0ea9b6b2 100644 --- a/src/tools/wasm-interp.cc +++ b/src/tools/wasm-interp.cc @@ -123,12 +123,12 @@ Result ParseWasmValue(std::string argument, Value& val) { if (strcmp(ptype, "f32") == 0) { uint32_t parsed_value; result |= ParseFloat(LiteralType::Float, pval, pval_end, &parsed_value); - val.Set(parsed_value); + val.Set(Bitcast(parsed_value)); } if (strcmp(ptype, "f64") == 0) { uint64_t parsed_value; result |= ParseDouble(LiteralType::Float, pval, pval_end, &parsed_value); - val.Set(parsed_value); + val.Set(Bitcast(parsed_value)); } return result; } diff --git a/test/interp/run-export-with-float-arguments.txt b/test/interp/run-export-with-float-arguments.txt new file mode 100644 index 0000000000..3464055566 --- /dev/null +++ b/test/interp/run-export-with-float-arguments.txt @@ -0,0 +1,17 @@ +;;; TOOL: run-interp +;;; ARGS1: --run-export=f32_add --argument=f32:1.5 --argument=f32:2.25 --run-export=f64_add --argument=f64:1.5 --argument=f64:2.25 +(module + (func (export "f32_add") (param f32 f32) (result f32) + local.get 0 + local.get 1 + f32.add) + + (func (export "f64_add") (param f64 f64) (result f64) + local.get 0 + local.get 1 + f64.add) +) +(;; STDOUT ;;; +f32_add(f32:1.500000, f32:2.250000) => f32:3.750000 +f64_add(f64:1.500000, f64:2.250000) => f64:3.750000 +;;; STDOUT ;;)