summaryrefslogtreecommitdiff
path: root/src/wasm-s-parser.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-05 13:44:54 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-05 13:44:54 -0800
commitebc45c89ca10c0e91a717abf83d914bb225ced0f (patch)
tree74a29dd2143b8372dd2f42452b453853f4abe661 /src/wasm-s-parser.h
parent86c4e807f469b0133ec959a700ce6b76be31c2d0 (diff)
downloadbinaryen-ebc45c89ca10c0e91a717abf83d914bb225ced0f.tar.gz
binaryen-ebc45c89ca10c0e91a717abf83d914bb225ced0f.tar.bz2
binaryen-ebc45c89ca10c0e91a717abf83d914bb225ced0f.zip
parse more unaries
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r--src/wasm-s-parser.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index 96759b541..dbd6f7a95 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -296,11 +296,13 @@ public:
const char *op = dot + 1;
switch (op[0]) {
case 'a': {
+ if (op[1] == 'b') return makeUnary(s, UnaryOp::Abs, type);
if (op[1] == 'd') return makeBinary(s, BinaryOp::Add, type);
if (op[1] == 'n') return makeBinary(s, BinaryOp::And, type);
abort_on(op);
}
case 'c': {
+ if (op[1] == 'e') return makeUnary(s, UnaryOp::Ceil, type);
if (op[1] == 'o') {
if (op[2] == 'p') return makeBinary(s, BinaryOp::CopySign, type);
if (op[2] == 'n') {
@@ -363,6 +365,7 @@ public:
case 'n': {
if (op[1] == 'e') {
if (op[2] == 0) return makeCompare(s, RelationalOp::Ne, type);
+ if (op[2] == 'a') return makeUnary(s, UnaryOp::Nearest, type);
if (op[2] == 'g') return makeUnary(s, UnaryOp::Neg, type);
}
abort_on(op);
@@ -388,6 +391,7 @@ public:
return makeBinary(s, op[4] == 'u' ? BinaryOp::ShrU : BinaryOp::ShrS, type);
}
if (op[1] == 'u') return makeBinary(s, BinaryOp::Sub, type);
+ if (op[1] == 'q') return makeUnary(s, UnaryOp::Sqrt, type);
if (op[1] == 't') return makeStore(s, type);
abort_on(op);
}
@@ -395,7 +399,7 @@ public:
if (op[1] == 'r') {
if (op[6] == 's') return makeConvert(s, op[9] == '3' ? ConvertOp::TruncSFloat32 : ConvertOp::TruncSFloat64, type);
if (op[6] == 'u') return makeConvert(s, op[9] == '3' ? ConvertOp::TruncUFloat32 : ConvertOp::TruncUFloat64, type);
- onError();
+ if (op[2] == 'u') return makeUnary(s, UnaryOp::Trunc, type);
}
abort_on(op);
}