summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-12-10 22:54:08 -0500
committerAlon Zakai <alonzakai@gmail.com>2015-12-10 22:54:08 -0500
commitd60ffc7021ecf4dfcf0785362afdd5efffe817c5 (patch)
tree119700e2c38d61dbead7f6b21aaada431d8a4b0b
parent46041b5b73c0f88e07bf1ed7b5af0ce2c2301267 (diff)
downloadbinaryen-d60ffc7021ecf4dfcf0785362afdd5efffe817c5.tar.gz
binaryen-d60ffc7021ecf4dfcf0785362afdd5efffe817c5.tar.bz2
binaryen-d60ffc7021ecf4dfcf0785362afdd5efffe817c5.zip
more binaries in s2wasm
-rw-r--r--src/s2wasm.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h
index db241bb4a..ee13aeb75 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -212,7 +212,6 @@ private:
}
};
auto setOutput = [&](Expression* curr, Name assign) {
-std::cerr << "assign: " << assign.str << '\n';
if (assign.str[1] == 'p') { // push
stack.push_back(curr);
} else if (assign.str[1] == 'd') { // discard
@@ -242,6 +241,12 @@ std::cerr << "assign: " << assign.str << '\n';
skipWhitespace();
if (match("i32.")) {
switch (*s) {
+ case 'a': {
+ if (match("add")) makeBinary(BinaryOp::Add, i32);
+ else if (match("and")) makeBinary(BinaryOp::And, i32);
+ else abort_on("i32.a");
+ break;
+ }
case 'c': {
if (match("const")) {
mustMatch("$push");
@@ -259,9 +264,15 @@ std::cerr << "assign: " << assign.str << '\n';
} else abort_on("i32.c");
break;
}
+ case 'n': {
+ if (match("ne")) makeBinary(BinaryOp::Ne, i32);
+ else abort_on("i32.n");
+ break;
+ }
case 's': {
if (match("shr_s")) makeBinary(BinaryOp::ShrS, i32);
else if (match("shr_u")) makeBinary(BinaryOp::ShrU, i32);
+ else if (match("sub")) makeBinary(BinaryOp::Sub, i32);
else abort_on("i32.s");
break;
}