summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-01-22 10:48:55 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-01-22 10:48:55 -0800
commitbb72adc023a0c1484ed0a12deffeec189f199db7 (patch)
tree0a57ee817e1e22aca65c702938156315673124ca /src
parent0d512c9013aa8410a05bf1b3b4bb203dd1d526cc (diff)
downloadbinaryen-bb72adc023a0c1484ed0a12deffeec189f199db7.tar.gz
binaryen-bb72adc023a0c1484ed0a12deffeec189f199db7.tar.bz2
binaryen-bb72adc023a0c1484ed0a12deffeec189f199db7.zip
add I32ReinterpretF32 in binary format, for now
Diffstat (limited to 'src')
-rw-r--r--src/wasm-binary.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index 34b8711f5..c5f844f34 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -286,6 +286,7 @@ enum ASTNodes {
F64ConvertF32 = 0xb2,
F64ReinterpretI64 = 0xb3,
I64ReinterpretF64 = 0xb5,
+ I32ReinterpretF32 = 0xfe, // XXX not in v8 spec doc
I32LoadMem8S = 0x20,
I32LoadMem8U = 0x21,
@@ -805,7 +806,7 @@ public:
case DemoteFloat64: o << int8_t(BinaryConsts::F32ConvertF64); break;
case PromoteFloat32: o << int8_t(BinaryConsts::F64ConvertF32); break;
case ReinterpretFloat: o << int8_t(curr->type == f32 ? BinaryConsts::F32ReinterpretI32 : BinaryConsts::F64ReinterpretI64); break;
- case ReinterpretInt: assert(curr->type == f64); o << int8_t(BinaryConsts::I64ReinterpretF64); break; // XX what about f32?
+ case ReinterpretInt: o << int8_t(curr->type == i32 ? BinaryConsts::I32ReinterpretF32 : BinaryConsts::I64ReinterpretF64); break;
default: abort();
}
recurse(curr->value);
@@ -1487,7 +1488,7 @@ public:
case BinaryConsts::F32ReinterpretI32: curr->op = ReinterpretFloat; curr->type = i32; break;
case BinaryConsts::F64ReinterpretI64: curr->op = ReinterpretFloat; curr->type = i64; break;
case BinaryConsts::I64ReinterpretF64: curr->op = ReinterpretInt; curr->type = f64; break;
- // XXX what about f32 reinterpret?
+ case BinaryConsts::I32ReinterpretF32: curr->op = ReinterpretInt; curr->type = f32; break;
default: return false;
}