summaryrefslogtreecommitdiff
path: root/src/asm2wasm.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-21 12:10:26 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-21 12:10:26 -0800
commited567a4f49d3296dcf91bdb966c0deb077dacff7 (patch)
tree736f07fcd61a8c4623938220c6c3768c3d2b5807 /src/asm2wasm.h
parent7bf31d447bca02947b56f05edf0a171c68c92c7a (diff)
parent1956794aa5200274d7b67329be55bf97af83f49e (diff)
downloadbinaryen-ed567a4f49d3296dcf91bdb966c0deb077dacff7.tar.gz
binaryen-ed567a4f49d3296dcf91bdb966c0deb077dacff7.tar.bz2
binaryen-ed567a4f49d3296dcf91bdb966c0deb077dacff7.zip
Merge pull request #209 from WebAssembly/asm-fixes
Asm fixes
Diffstat (limited to 'src/asm2wasm.h')
-rw-r--r--src/asm2wasm.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/asm2wasm.h b/src/asm2wasm.h
index 16ed0cf68..353f80413 100644
--- a/src/asm2wasm.h
+++ b/src/asm2wasm.h
@@ -197,6 +197,7 @@ private:
IString Math_fround;
IString Math_abs;
IString Math_floor;
+ IString Math_ceil;
IString Math_sqrt;
// function types. we fill in this information as we see
@@ -458,6 +459,10 @@ void Asm2WasmBuilder::processAsm(Ref ast) {
assert(Math_floor.isNull());
Math_floor = name;
return;
+ } else if (imported[2] == CEIL) {
+ assert(Math_ceil.isNull());
+ Math_ceil = name;
+ return;
} else if (imported[2] == SQRT) {
assert(Math_sqrt.isNull());
Math_sqrt = name;
@@ -1126,12 +1131,12 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
abort();
}
}
- if (name == Math_floor || name == Math_sqrt) {
+ if (name == Math_floor || name == Math_sqrt || name == Math_ceil) {
// overloaded on type: f32 or f64
Expression* value = process(ast[2][0]);
if (value->type == f32 || value->type == f64) {
auto ret = allocator.alloc<Unary>();
- ret->op = name == Math_floor ? Floor : Sqrt;
+ ret->op = name == Math_floor ? Floor : name == Math_ceil ? Ceil : Sqrt;
ret->value = value;
ret->type = value->type;
return ret;