| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
When lowering i64 values in a function, we create new local variables
for all of the i64 local variables, one local for the low bits, and one
for the high bits. We create a mapping between the old locals and the
new as well. During translation, when we encountered a `get_local` that
didn't have type `i64`, we skipped it, on the supposition that there was
nothing to do. But that's not true; the local it was getting may have
been remapped to a new index in the lowered function, and we need to
account for that change. Similar logic holds for `set_local`.
|
|
|
|
|
| |
We were using the global to return 64-bit values from functions, but
said global wasn't actually present in the IR. This omission caused the
generated code to fail validation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* add tests for i32.popcnt
* lower i64.popcnt
* add tests for i64.extend_u/i32
* lower i64.extend_s/i32
* fix lowering i64.eqz
* lower i64.eqz more efficiently
* add tests for i32.clz/i32.ctz
* lower i64.clz/i64.ctz
|
|
|
|
|
|
|
|
|
| |
* fix lowering of i64 adds
We're not permitted to reuse the input as temporary variables for the
results. Weird things happen otherwise.
* add support for lowering i64 subtraction
|
|
|
| |
Plus some tests, to make sure we implemented things correctly.
|
|
|
|
| |
* rename WasmType to Type. it's in the wasm:: namespace anyhow, and without Wasm- it fits in better alongside Index, Address, Expression, Module, etc.
|
|
|
| |
Currently, whenever a global is used, wasm2asm fails with an assertion error here. While this PR doesn't implement anything, it allows the use of non-i64 globals that aren't lowered anyway.
|
|
|
|
| |
* fix wasm2asm in binaryen.js, the function locals may not all have names, so add them as necessary
|
|
|
|
|
|
| |
* Refactor i64 lowering to use RAII temp vars
* Always generate trampoline blocks for Switch lowering
|
|
|