summaryrefslogtreecommitdiff
path: root/src/wasm/literal.cpp
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2018-11-29 13:54:10 -0800
committerGitHub <noreply@github.com>2018-11-29 13:54:10 -0800
commit252fd7f176c4a5ae6a6fa9a5124e153ddbaab638 (patch)
tree798386cd9eba764138acfbfe27c7d9d41842d811 /src/wasm/literal.cpp
parent5274d943ec65866089f6764af89205d003a15078 (diff)
downloadbinaryen-252fd7f176c4a5ae6a6fa9a5124e153ddbaab638.tar.gz
binaryen-252fd7f176c4a5ae6a6fa9a5124e153ddbaab638.tar.bz2
binaryen-252fd7f176c4a5ae6a6fa9a5124e153ddbaab638.zip
Add v128 type (#1777)
Diffstat (limited to 'src/wasm/literal.cpp')
-rw-r--r--src/wasm/literal.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/wasm/literal.cpp b/src/wasm/literal.cpp
index 3eb508bde..7b248010e 100644
--- a/src/wasm/literal.cpp
+++ b/src/wasm/literal.cpp
@@ -75,6 +75,7 @@ int64_t Literal::getBits() const {
switch (type) {
case Type::i32: case Type::f32: return i32;
case Type::i64: case Type::f64: return i64;
+ case Type::v128: assert(false && "v128 not implemented");
case Type::none: case Type::unreachable: WASM_UNREACHABLE();
}
WASM_UNREACHABLE();
@@ -164,6 +165,7 @@ std::ostream& operator<<(std::ostream& o, Literal literal) {
case Type::i64: o << literal.i64; break;
case Type::f32: literal.printFloat(o, literal.getf32()); break;
case Type::f64: literal.printDouble(o, literal.getf64()); break;
+ case Type::v128: assert(false && "v128 not implemented yet");
case Type::unreachable: WASM_UNREACHABLE();
}
restoreNormalColor(o);
@@ -260,6 +262,7 @@ Literal Literal::eqz() const {
case Type::i64: return eq(Literal(int64_t(0)));
case Type::f32: return eq(Literal(float(0)));
case Type::f64: return eq(Literal(double(0)));
+ case Type::v128:
case Type::none:
case Type::unreachable: WASM_UNREACHABLE();
}
@@ -272,6 +275,7 @@ Literal Literal::neg() const {
case Type::i64: return Literal(-uint64_t(i64));
case Type::f32: return Literal(i32 ^ 0x80000000).castToF32();
case Type::f64: return Literal(int64_t(i64 ^ 0x8000000000000000ULL)).castToF64();
+ case Type::v128:
case Type::none:
case Type::unreachable: WASM_UNREACHABLE();
}
@@ -284,6 +288,7 @@ Literal Literal::abs() const {
case Type::i64: return Literal(int64_t(i64 & 0x7fffffffffffffffULL));
case Type::f32: return Literal(i32 & 0x7fffffff).castToF32();
case Type::f64: return Literal(int64_t(i64 & 0x7fffffffffffffffULL)).castToF64();
+ case Type::v128:
case Type::none:
case Type::unreachable: WASM_UNREACHABLE();
}
@@ -351,6 +356,7 @@ Literal Literal::add(const Literal& other) const {
case Type::i64: return Literal(uint64_t(i64) + uint64_t(other.i64));
case Type::f32: return Literal(getf32() + other.getf32());
case Type::f64: return Literal(getf64() + other.getf64());
+ case Type::v128:
case Type::none:
case Type::unreachable: WASM_UNREACHABLE();
}
@@ -363,6 +369,7 @@ Literal Literal::sub(const Literal& other) const {
case Type::i64: return Literal(uint64_t(i64) - uint64_t(other.i64));
case Type::f32: return Literal(getf32() - other.getf32());
case Type::f64: return Literal(getf64() - other.getf64());
+ case Type::v128:
case Type::none:
case Type::unreachable: WASM_UNREACHABLE();
}
@@ -375,6 +382,7 @@ Literal Literal::mul(const Literal& other) const {
case Type::i64: return Literal(uint64_t(i64) * uint64_t(other.i64));
case Type::f32: return Literal(getf32() * other.getf32());
case Type::f64: return Literal(getf64() * other.getf64());
+ case Type::v128:
case Type::none:
case Type::unreachable: WASM_UNREACHABLE();
}
@@ -529,6 +537,7 @@ Literal Literal::eq(const Literal& other) const {
case Type::i64: return Literal(i64 == other.i64);
case Type::f32: return Literal(getf32() == other.getf32());
case Type::f64: return Literal(getf64() == other.getf64());
+ case Type::v128:
case Type::none:
case Type::unreachable: WASM_UNREACHABLE();
}
@@ -541,6 +550,7 @@ Literal Literal::ne(const Literal& other) const {
case Type::i64: return Literal(i64 != other.i64);
case Type::f32: return Literal(getf32() != other.getf32());
case Type::f64: return Literal(getf64() != other.getf64());
+ case Type::v128:
case Type::none:
case Type::unreachable: WASM_UNREACHABLE();
}