Commit Graph

3228 Commits

Author SHA1 Message Date
08cdc9a42f Allow disabling state tracking for faster startup. 2019-07-12 23:37:40 +08:00
f327feccef Merge remote-tracking branch 'origin/master' into fix/imul-relax 2019-07-12 23:37:01 +08:00
08111b77bc Update install.sh 2019-07-11 18:01:42 -07:00
6f36cc00ee Merge #551
551: Try a new list of optimization passes. r=nlewycky a=nlewycky

A few notes:
a) the inliner doesn't help because all the calls are indirect and not even opt -O2 can figure out which functions they're actually calling.
b) aggressive instruction combining is not a super-set of the instruction combiner. Instcombine is made up of a large number (probably 10,000s) of patterns, and some particularly slow ones were taken out and moved to the aggressive instruction combiner. Aggressive instcombine *only* runs that handful of optimizations, which fired zero times on our example wasm files.
c) NewGVN is not ready for production, it has asserts that fire when building sqlite or cowsay. This is why sqlite didn't build with the llvm backend.
d) Scalar-replacement-of-aggregates (sroa) is a strict superset of promote-memory-to-registers (mem2reg), and you probably want sroa because it's usually faster. It also fires 10,000s more times than mem2reg on lua.wasm.
e) Aggressive-dead-code-elimination was only deleting as much regular dead-code-elimination, but is slower because it depends on a postdominator tree (PDT) analysis that. Other passes don't need PDT so we'll have to build it for just this one pass (as opposed to regular dominator-tree which is reused by many passes). I've replaced this with bit-tracking dead-code-elimination which deletes more code than dce/adce.

Co-authored-by: Nick Lewycky <nicholas@mxc.ca>
Co-authored-by: nlewycky <nicholas@mxc.ca>
2019-07-12 00:38:40 +00:00
278adf678a Merge branch 'master' into nlewycky/llvm 2019-07-11 16:48:46 -07:00
7fb88251d4 Simplify trap_if_not_representable_as_int.
Fix typo in function name. Use two fcmp instructions instead of unpacking the bits of the IEEE float and using integer arithmetic to determine details about its value.
2019-07-11 16:46:37 -07:00
d59c5531fd Update install.sh 2019-07-11 16:23:57 -07:00
0583da0ae2 Use WASMER_DIR if present when INSTALL_DIRECTORY is not present
Fixed #549
2019-07-11 16:22:02 -07:00
9e974c7ce3 Merge #548
548: Update to nix 0.14 r=syrusakbary a=repi

Instead of using a mix of nix 0.12 & 0.13 crates.

Co-authored-by: Johan Andersson <repi@repi.se>
2019-07-11 21:58:55 +00:00
7045030532 Try a new list of optimization passes.
A few notes:
a) the inliner doesn't help because all the calls are indirect and not even opt -O2 can figure out which functions they're actually calling.
b) aggressive instruction combining is not a super-set of the instruction combiner. Instcombine is made up of a large number (probably 10,000s) of patterns, and some particularly slow ones were taken out and moved to the aggressive instruction combiner. Aggressive instcombine *only* runs that handful of optimizations, which fired zero times on our example wasm files.
c) NewGVN is not ready for production, it has asserts that fire when building sqlite or cowsay. This is why sqlite didn't build with the llvm backend.
d) Scalar-replacement-of-aggregates (sroa) is a strict superset of promote-memory-to-registers (mem2reg), and you probably want sroa because it's usually faster. It also fires 10,000s more times than mem2reg on lua.wasm.
e) Aggressive-dead-code-elimination was only deleting as much regular dead-code-elimination, but is slower because it depends on a postdominator tree (PDT) analysis that. Other passes don't need PDT so we'll have to build it for just this one pass (as opposed to regular dominator-tree which is reused by many passes). I've replaced this with bit-tracking dead-code-elimination which deletes more code than dce/adce.
2019-07-11 14:48:07 -07:00
c186e0244e Fix compile error on imul. 2019-07-11 20:26:20 +08:00
b41040cc59 Update to nix 0.14.
Instead of using a mix of nix 0.12 & 0.13
2019-07-11 12:28:56 +02:00
0c4a8f77d2 Merge #543 #544
543: update version numbers to 0.5.5 r=MarkMcCaskey a=MarkMcCaskey



544: Use bitcast instead of alloca+load+ptrcast+store sequence. r=MarkMcCaskey a=nlewycky



Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <markmccaskey@users.noreply.github.com>
Co-authored-by: Nick Lewycky <nick@wasmer.io>
Co-authored-by: nlewycky <nick@wasmer.io>
0.5.5
2019-07-11 00:51:31 +00:00
80a8262b2f revert appveyor change 2019-07-10 17:30:24 -07:00
019de38fe8 update lock file 2019-07-10 17:19:20 -07:00
3795b48401 Merge branch 'master' into llvm-cleanup 2019-07-10 16:58:27 -07:00
7789d1b096 Merge branch 'master' into release-0.5.5 2019-07-10 16:35:00 -07:00
e084cd9e04 Merge pull request #546 from wasmerio/fix/publishing-for-clif-backend
use published forks of clif so we can publish again
2019-07-10 16:33:55 -07:00
7f00dc3cdb Reformat. 2019-07-10 15:33:32 -07:00
8faff26c31 Give float_bits bitcast instruction a name. 2019-07-10 15:31:18 -07:00
50302d5d4e use published forks of clif so we can publish again 2019-07-10 15:10:00 -07:00
e980931329 Added simd spectest file 2019-07-10 14:43:54 -07:00
a14d2b27b4 Added simd tests for llvm 2019-07-10 14:41:15 -07:00
702125eef2 Fill in changelog entry. 2019-07-10 14:31:58 -07:00
e4123433a1 Reformat. 2019-07-10 14:28:07 -07:00
53907b0ab2 Update inkwell to our own copy until upstream supports LLVM 8.
LLVM 8 support from https://github.com/lumen/inkwell/tree/llvm8 .
2019-07-10 14:23:47 -07:00
1ac2416c89 Add changelog entry. 2019-07-10 13:54:36 -07:00
f4af4e387d Stub out support for V128 in the C API for now. 2019-07-10 13:54:36 -07:00
bb30434392 This .into_iter() call is equivalent to .iter() and will not move the array. 2019-07-10 13:54:36 -07:00
fdc13563b8 Initial implementation of SIMD in the LLVM backend. 2019-07-10 13:54:32 -07:00
3ba8100e98 Add V128 stubs to allow singlepass backend to build again. 2019-07-10 13:48:12 -07:00
77afcea9dc Add V128 stubs to allow LLVM backend to build again. 2019-07-10 13:48:12 -07:00
df5c12cbe1 Add V128 to wasmer runtime. Unimplemented in clif-backend. Other backends don't build. 2019-07-10 13:48:12 -07:00
0a1bdd449e Update to @llvm.minimum/@llvm.maximum which requires LLVM 8.
The @llvm.minnum/@llvm.maxnum intrinsics don't produce correct (for wasm) outputs in all cases.
2019-07-10 13:48:12 -07:00
ea83924547 Update to LLVM 8.0. 2019-07-10 13:48:12 -07:00
51556e74da Turn on parsing of SIMD in .wat files. 2019-07-10 13:48:12 -07:00
b8d2aee80f Update wabt to 0.8 release. 2019-07-10 13:48:12 -07:00
9579b07a54 Enable SIMD support in wasmparser. 2019-07-10 13:48:12 -07:00
acbface4be Factor out creating wasmparser::ValidatingParserConfig to its own function. 2019-07-10 13:48:08 -07:00
d1f3fb2ec2 Merge branch 'master' into llvm-cleanup 2019-07-10 13:32:17 -07:00
b2db9238af Merge pull request #545 from wasmerio/fix/ci-on-master-oops
rm clif submodule; fix master
2019-07-10 13:23:35 -07:00
ad3d4a4679 rm clif submodule; fix master 2019-07-10 10:38:38 -07:00
1e86e32d40 Use bitcast instead of alloca+load+ptrcast+store sequence. 2019-07-10 10:24:14 -07:00
2ef7448e62 remove colons from feature names 2019-07-09 17:57:31 -07:00
4752492974 update version numbers to 0.5.5 2019-07-09 17:43:04 -07:00
8901f3fb66 Merge #541
541: fix abi crates depending on compilers r=MarkMcCaskey a=MarkMcCaskey

Here's the new dep graph: (red is optional)
![wasmer_depgraph](https://user-images.githubusercontent.com/5770194/60916081-6191d800-a242-11e9-9a0d-438079dea701.png)


Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <markmccaskey@users.noreply.github.com>
2019-07-09 23:35:02 +00:00
74ce33919f Merge branch 'master' into fix/abi-crate-deps 2019-07-09 15:31:45 -07:00
3dbb4c27ba update CI for new submodule 2019-07-09 15:28:50 -07:00
40e67e37aa Merge pull request #537 from wasmerio/feature/prehashed-keys
Add hidden flag `--cache-key` to use prehashed modules for speed
2019-07-09 15:15:59 -07:00
4612b2bf9a add cranelift as submodule to clif-backend 2019-07-09 14:30:31 -07:00