diff options
author | Alon Zakai <alonzakai@gmail.com> | 2018-04-11 12:02:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-11 12:02:29 -0700 |
commit | 92afb40eea6e9a09af2d355ff9ab6a4bd04c54bb (patch) | |
tree | 671827c29364ef509ce2a6ba050d9b119c54c9cc /src/wasm-js.cpp | |
parent | 9b5ce471992033eeec9a8779bce55f2429496431 (diff) | |
download | binaryen-92afb40eea6e9a09af2d355ff9ab6a4bd04c54bb.tar.gz binaryen-92afb40eea6e9a09af2d355ff9ab6a4bd04c54bb.tar.bz2 binaryen-92afb40eea6e9a09af2d355ff9ab6a4bd04c54bb.zip |
Some simple integer math opts (#1504)
Stuff like x + 5 != 2 => x != -3.
Also some cleanups of utility functions I noticed while writing this, isTypeFloat => isFloatType.
Inspired by
https://github.com/golang/go/blob/master/src/cmd/compile/internal/ssa/gen/generic.rules
Diffstat (limited to 'src/wasm-js.cpp')
-rw-r--r-- | src/wasm-js.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/wasm-js.cpp b/src/wasm-js.cpp index a2f09504d..5bcd7e133 100644 --- a/src/wasm-js.cpp +++ b/src/wasm-js.cpp @@ -369,8 +369,8 @@ extern "C" void EMSCRIPTEN_KEEPALIVE instantiate() { } HEAP32[0] = save0; HEAP32[1] = save1; return ret; - }, (uint32_t)addr, load->bytes, isTypeFloat(load->type), load->signed_, &out64); - if (!isTypeFloat(load->type)) { + }, (uint32_t)addr, load->bytes, isFloatType(load->type), load->signed_, &out64); + if (!isFloatType(load->type)) { if (load->type == i64) { if (load->bytes == 8) { return Literal(out64); @@ -391,7 +391,7 @@ extern "C" void EMSCRIPTEN_KEEPALIVE instantiate() { abort(); } // nicely aligned - if (!isTypeFloat(load->type)) { + if (!isFloatType(load->type)) { int64_t ret; if (load->bytes == 1) { if (load->signed_) { @@ -463,11 +463,11 @@ extern "C" void EMSCRIPTEN_KEEPALIVE instantiate() { Module["info"].parent["HEAPU8"][addr + i] = HEAPU8[i]; } HEAP32[0] = save0; HEAP32[1] = save1; - }, (uint32_t)addr, store_->bytes, isTypeFloat(store_->valueType), isTypeFloat(store_->valueType) ? value.getFloat() : (double)value.getInteger()); + }, (uint32_t)addr, store_->bytes, isFloatType(store_->valueType), isFloatType(store_->valueType) ? value.getFloat() : (double)value.getInteger()); return; } // nicely aligned - if (!isTypeFloat(store_->valueType)) { + if (!isFloatType(store_->valueType)) { if (store_->bytes == 1) { EM_ASM_INT({ Module['info'].parent['HEAP8'][$0] = $1 }, addr, (uint32_t)value.getInteger()); } else if (store_->bytes == 2) { |