Commit Graph

2391 Commits

Author SHA1 Message Date
Nick Lewycky
ff73c5d71b Address review feedback from Mark.
Fix a bug in Operator::Select and add a comment to explain the intention.

Use derived default for ExtraInfo.

Make ExtraInfo associated functions const.

Turn two asserts into debug_asserts.
2019-11-26 12:25:03 -08:00
Nick Lewycky
d1ce8ee20d Give that panic! a message. Also, make it an unreachable!. 2019-11-26 12:20:44 -08:00
Nick Lewycky
fa576093c2 Fix ExtraInfo on F32Add and similar.
We want to ignore the incoming pending NaN state (since the pending will propagate to the output if there was one on the input), and we want to add a new pending NaN state if we can (that is to say, if it isn't cancelled out by both inputs having arithmetic state). Do this by discarding the pending states on the inputs, intersecting them (to keep only the arithmetic state), then union in a pending nan state (which might do nothing, if it's arithmetic).

If the above sounds confusing, keep in mind that when a value is arithmetic, the act of performing the "NaN canonicalization" is a no-op. Thus, being arithmetic cancels out pending NaN states.
2019-11-26 12:20:44 -08:00
Nick Lewycky
a06c858087 Make ExtraInfo bitand check for pending validity.
Unfortunately, this is quite buggy. For something as simple as F32Sub, to combine two ExtraInfos, we want to add a new pending_f32_nan(), unless both of the inputs are arithmetic_f32(). In this commit, we incorrectly calculate that we don't need a pending_f32_nan if either one of the inputs was arithmetic_f32().
2019-11-26 12:20:43 -08:00
Nick Lewycky
284948b6d4 Refactor so as to convert ExtraInfo when potentially canonicalizing.
It seemed like a good idea at the time, but in practice we discard the extra info all or almost all of the time.

This also introduces a new bug. In an operation like multiply, it's valid to multiply two values, one with a pending NaN and one without. As written, in the SIMD case (because of the two kinds of pending in play), we assert.
2019-11-26 12:20:43 -08:00
Nick Lewycky
26c8fd52c8 Initial implementation of "known to be arithmetic NaN / not NaN". 2019-11-26 12:20:43 -08:00
Nick Lewycky
fafc7ad38c Add "known to not contain non-arithmetic NaNs" to ExtraInfo in LLVM backend.
Not wired up yet.
2019-11-26 12:20:43 -08:00
Patrick Ventuzelo
bb16547567 Merge branch 'ventuzelo/fix-1005-panic-sub-overflow' of github.com:pventuzelo/wasmer into ventuzelo/fix-1005-panic-sub-overflow 2019-11-26 09:18:05 +01:00
Patrick Ventuzelo
49665d5797 use checked_sub for peekn_extra 2019-11-26 09:17:13 +01:00
bors[bot]
7715be9ccb
Merge #1017
1017: Add a 'clear' method to map. r=nlewycky a=nlewycky

# Description
Motivated by work on the `nlewycky/inkwell-lifetimes` branch. No callers yet on master, but we use it on the branch and I'd like to merge in pieces.


Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-11-25 22:54:12 +00:00
Nick Lewycky
4e2440daec Add a 'clear' method to map. 2019-11-25 14:53:25 -08:00
Patrick Ventuzelo
7ca0430a40 activate pre_validation when llvm backend selected 2019-11-25 13:17:07 +01:00
Patrick Ventuzelo
d376b89ef0
Merge branch 'master' into ventuzelo/fix-1005-panic-sub-overflow 2019-11-25 12:05:33 +01:00
bors[bot]
5c1c786e35
Merge #1002
1002: Update the LLVM pass list. r=nlewycky a=nlewycky

# Description
Adds optimizations of loops, and inlinling and some simple interprocedural optimization.

Measured on the libsodium benchmarks, the new pass pipeline is a 2.35% geomean improvement. No major performance regressions known.

Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-11-23 05:11:44 +00:00
Nick Lewycky
3ef9f769df Fix TBAA crash with LLVM + the gas middleware. 2019-11-22 17:03:31 -08:00
Nick Lewycky
681219b06c Fix bug in LLVM lowering of 'return' when the stack has a float on it. 2019-11-22 17:03:31 -08:00
Nick Lewycky
85666fc522 Add new llvm-backend-test crate. 2019-11-22 17:03:23 -08:00
Nick Lewycky
2433d365af Add new test feature, enabled in test crates.
When test feature is enabled, turn on LLVM verifier. This was previously never enabled.
2019-11-22 16:51:44 -08:00
Mark McCaskey
bb1e7a8d78 Prepare for 0.11.0 release 2019-11-22 11:18:06 -08:00
Syrus
a691d3454c Skip serializing on singlepass 2019-11-22 09:49:17 -08:00
Patrick Ventuzelo
2261f8b449 cargo fmt 2019-11-22 17:21:15 +01:00
Patrick Ventuzelo
508004088e check stack len before getting value 2019-11-22 17:10:54 +01:00
Nick Lewycky
9fe5e261ea Update the LLVM pass list.
Adds optimizations of loops, and inlinling and some simple interprocedural optimization.
2019-11-21 22:41:23 -08:00
Syrus
0834ccf661 Merge branch 'master' into feature/singlepass-aarch64
# Conflicts:
#	Makefile
2019-11-21 20:10:09 -08:00
Mark McCaskey
180528241d Fix merge issue in wasi tests 2019-11-21 19:31:17 -08:00
Syrus
27b6acdb16 Fixed typo 2019-11-21 18:55:38 -08:00
Syrus
9a146c57fc Make docs compilation happy 2019-11-21 18:35:19 -08:00
Syrus
7b9485320d Revert "Autodetect default backend, add features for architecture type"
This reverts commit 31437a1e74.
2019-11-21 18:26:31 -08:00
Mark McCaskey
44f2e926ac
Merge branch 'master' into compiler-tests 2019-11-21 17:24:08 -08:00
Mark McCaskey
31437a1e74 Autodetect default backend, add features for architecture type 2019-11-21 17:22:21 -08:00
losfair
87f4183440 Merge remote-tracking branch 'origin/master' into feature/singlepass-aarch64 2019-11-22 09:09:01 +08:00
losfair
5da44c3bf8 Add 'fault' placeholder for Windows. 2019-11-22 07:26:35 +08:00
Mark McCaskey
bdeec52152 Fix imports in test; copy manual implementations of Debug for wasi 2019-11-21 14:00:46 -08:00
Syrus
c3f93f1275 Fixed formatting 2019-11-21 13:38:22 -08:00
Syrus
aeb66ee48e Simplify compiler test options 2019-11-21 13:36:44 -08:00
Mark McCaskey
68fa9e2639 Merge branch 'feature/add-support-for-new-wasi' of github.com:wasmerio/wasmer into feature/add-support-for-new-wasi 2019-11-21 11:31:00 -08:00
Mark McCaskey
ddccdb92b8 More fixes for CI 2019-11-21 11:30:44 -08:00
Mark McCaskey
36a26717c2
Merge branch 'master' into feature/add-support-for-new-wasi 2019-11-21 10:58:05 -08:00
Mark McCaskey
be217e8f8e Update from feedback, fix CI issues, update wasi-test 2019-11-21 10:57:04 -08:00
losfair
7626957203 Enable block_trace middleware only on unix. 2019-11-22 02:38:47 +08:00
losfair
4dd810bbac Ensure code version metadata is pushed properly. 2019-11-22 02:23:51 +08:00
losfair
8709708de7 Unwind if breakpoint handler returns error. 2019-11-22 01:57:04 +08:00
losfair
4ec4fcf28a Try fixing middleware failure. 2019-11-22 01:46:02 +08:00
losfair
6f3e6fab3b Try fixing compilation on Windows. 2019-11-22 00:51:20 +08:00
losfair
c0ff110ca9 Merge remote-tracking branch 'origin/master' into feature/singlepass-aarch64 2019-11-22 00:38:02 +08:00
losfair
15e3a038ea Try fixing compilation on Windows. 2019-11-22 00:36:34 +08:00
Ivan Enderlin
1e6dbf9b86 Merge branch 'master' into fix-gh-979 2019-11-21 11:01:45 +01:00
Ivan Enderlin
b1f58bded0 fix(runtime-core) Improve error message when globals are corrupted.
Before this patch:

```
$ cargo run -- run panic_index_oob_all_backends.wasm
Error: ExportNotFound { name: "main" }
```

With this patch:

```sh
$ cargo run -- run panic_index_oob_all_backends.wasm
Error: Can't instantiate module: LinkError([Generic { message: "Trying to read the `0` global that isn\'t properly initialized." }])
```
2019-11-21 10:57:52 +01:00
Ivan Enderlin
a9e446b5cd fix(runtime-core) Fix a panic when generating globals.
Fix https://github.com/wasmerio/wasmer/issues/979.

When we try to get a global that doesn't exist, a panic is
generated. This patch just skip that path, and let a proper error be
generated later.

With this patch, we get:

```sh
$ cargo run -- run panic_index_oob_all_backends.wasm
Error: ExportNotFound { name: "main" }
```

which is kind of the expected behavior in such situation.
2019-11-21 10:51:04 +01:00
Syrus
b8aee87d6e Skip atomic tests for now in singlepass Aarch64 2019-11-20 19:11:33 -08:00
Syrus
b77dffbbfe Merge branch 'master' into feature/singlepass-aarch64 2019-11-20 19:09:19 -08:00
Mark McCaskey
fc733647ec Add info in c api readme in the testing section 2019-11-20 16:38:44 -08:00
Mark McCaskey
4a84441ab0 Run WASI C API tests based on feature; prevent cmake caching 2019-11-20 15:41:33 -08:00
bors[bot]
6831a6d8c9
Merge #987
987: Fix runtime c api header preprocessor gcc r=syrusakbary a=Hywan

`ARCH_X86_64` is correctly defined for GCC or clang, but gnuc was
missing. This patch fixes that.

Address https://github.com/wasmerio/php-ext-wasm/issues/93
Fix https://github.com/wasmerio/wasmer/issues/984

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-11-20 16:09:09 +00:00
Ivan Enderlin
9468e229f4 chore(runtime-c-api) Update header files. 2019-11-20 13:30:02 +01:00
Ivan Enderlin
dfe7c0d764 fix(runtime-c-api) Add support for GNUC when defining ARCH_X86_64.
`ARCH_X86_64` is correctly defined for GCC or clang, but gnuc was
missing. This patch fixes that.
2019-11-20 13:27:18 +01:00
Brandon Fish
bd58842041 Refactor excludes and add target_arch option 2019-11-19 23:38:50 -06:00
losfair
0c7545ded7 Tell dynasm we are generating x64 code in emitter_x64. 2019-11-20 02:09:32 +08:00
losfair
d56fd96395 Merge remote-tracking branch 'origin/master' into feature/singlepass-aarch64 2019-11-20 01:54:34 +08:00
losfair
c9aa37fc99 Cleanup. 2019-11-20 01:48:20 +08:00
losfair
34bb321e66 Rename emit_host_redirection. 2019-11-20 01:34:45 +08:00
losfair
98052f82b9 Unmap stack after call. 2019-11-20 01:27:48 +08:00
losfair
85b1935366 Uncomment previously disabled test. 2019-11-20 01:22:56 +08:00
losfair
3d48115586 Allocate a big enough stack for invoke(). 2019-11-20 01:07:02 +08:00
losfair
a7577dfcef Try further reducing preallocated stack size. 2019-11-20 00:37:38 +08:00
bors[bot]
e8e460ec60
Merge #977
977: fix(runtime-core) Remove unnecessary implementation of `WasmTypeList` r=Hywan a=Hywan

The unit tests `test_func_arity_*` covers all possibilities, from 0 to
12. Removing this specific implementation of `WasmTypeList` for `(A,)`
doesn't break the test cases.

Also, the `impl_traits!` macro already implement `WasmTypeList` for
`(A,)` with `impl_traits!([transparent] S1, A)`. It's not clear why
`rustc` doesn't detect that though.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-11-19 14:07:37 +00:00
Ivan Enderlin
dbefa165dc
Merge branch 'master' into fix-runtime-core-clean-up-typed_func 2019-11-19 14:35:11 +01:00
Ivan Enderlin
b856e111b6
Merge branch 'master' into test-runtime-core-typed_func 2019-11-19 14:34:53 +01:00
bors[bot]
8ffd380006
Merge #973
973: Add sign extension spec tests; add sign extension to singlepass r=nlewycky a=MarkMcCaskey

Adds missing spectests from official repo, implements instructions for singlepass

# Review

- [ ] Add a short description of the the change to the CHANGELOG.md file


Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <5770194+markmccaskey@users.noreply.github.com>
2019-11-18 22:16:49 +00:00
Mark McCaskey
8a096a09e4 Remove extra register use in sign extension instructions 2019-11-18 11:47:58 -08:00
bors[bot]
e568c4a374
Merge #972
972: Prepare for 0.10.2 release r=MarkMcCaskey a=MarkMcCaskey



Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-11-18 19:44:33 +00:00
Mark McCaskey
344132cc89
Merge branch 'master' into feature/singlepass-sign-extension 2019-11-18 11:38:12 -08:00
Mark McCaskey
8b6a7b77fc Clean up from feedback 2019-11-18 11:36:49 -08:00
losfair
8ebf8986f0 Reduce stack size. 2019-11-19 03:15:12 +08:00
losfair
2776daedfa Fix entry with more than 5/6 arguments. 2019-11-19 03:04:07 +08:00
losfair
ddbdb3e585 Ignore extra arguments. 2019-11-19 02:46:31 +08:00
losfair
06a7e5424b Inline entry trampolines. 2019-11-19 02:39:51 +08:00
Mark McCaskey
2cbc748188 Revert "Update Rust version to 1.39.0." 2019-11-18 09:59:07 -08:00
losfair
d7308c361d Fix call_indirect on imported functions. 2019-11-19 01:25:01 +08:00
losfair
23f03f555b Fix compilation failure in tiering.rs. 2019-11-18 23:10:49 +08:00
Ivan Enderlin
f6cb6ce286 fix(runtime-core) Remove a warning for unused_parens.
The behavior of `unused_parens` has changed since Rust 1.39. A warning
is then raised. This patch fixes that.
2019-11-18 12:44:40 +01:00
Ivan Enderlin
85a53e8e1f test(runtime-core) Test closures in Func::new. 2019-11-18 12:44:00 +01:00
Ivan Enderlin
4e42fa1e48 fix(runtime-core) Remove unnecessary implementation of WasmTypeList.
The unit tests `test_func_arity_*` covers all possibilities, from 0 to
12. Removing this specific implementation of `WasmTypeList` for `(A,)`
doesn't break the test cases.

Also, the `impl_traits!` macro already implement `WasmTypeList` for
`(A,)` with `impl_traits!([transparent] S1, A)`. It's not clear why
`rustc` doesn't detect that though.
2019-11-18 12:22:17 +01:00
losfair
1eed6ce8f8 Fix CONSTRUCT_STACK_AND_CALL_WASM for aarch64. 2019-11-18 02:06:31 +08:00
losfair
5d2ee4fcc8 Fix floating point comparision involving NaNs. 2019-11-18 01:39:44 +08:00
losfair
cbaa94a7fa Fix movsx(S32, S64). 2019-11-18 01:08:39 +08:00
losfair
08beb99baa Fix popcnt. 2019-11-17 05:15:10 +08:00
losfair
021a75244e Reformat code for rust 1.39. 2019-11-17 04:39:39 +08:00
losfair
1db6425cd5 Merge remote-tracking branch 'origin/master' into feature/singlepass-aarch64 2019-11-17 04:36:22 +08:00
Mark McCaskey
7631aee4f4 Add sign extension spec tests; add sign extension to singlepass 2019-11-15 21:54:34 -08:00
anb
3b2d751c55 Enable compilation for specific target
By exposing the target information through `CompilerConfig`,
compiler(only LLVM at the moment) could create a machine with
different CPU feature flags other than current host, which makes it
capable to "cross compile" to some degree.

Update #959
2019-11-15 18:51:59 -08:00
Mark McCaskey
cebcb4c927 Prepare for 0.10.2 release 2019-11-15 14:55:53 -08:00
Nick Lewycky
ebe8da7bd3 When accessing memory, use byte aligned accesses.
LLVM's instcombine will attempt to bump the alignment when it can prove that it's safe to do so.

Fixes #969.
2019-11-15 14:47:53 -08:00
bors[bot]
4a2eaa4143
Merge #966
966: Add deny missing docs to runtime lib r=bjfish a=bjfish

<!-- 
Prior to submitting a PR, review the CONTRIBUTING.md document for recommendations on how to test:
https://github.com/wasmerio/wasmer/blob/master/CONTRIBUTING.md#pull-requests

-->

# Description
<!-- 
Provide details regarding the change including motivation,
links to related issues, and the context of the PR.
-->


Co-authored-by: Brandon Fish <brandon.j.fish@gmail.com>
2019-11-14 18:16:03 +00:00
losfair
342974effd Comment out failing test. 2019-11-15 00:23:10 +08:00
losfair
a9c89eb1a8 Merge remote-tracking branch 'origin/master' into feature/singlepass-aarch64 2019-11-14 23:46:15 +08:00
Ivan Enderlin
074a8f9747 Merge branch 'fix-runtime-c-api-header-preprocessor-clang' of github.com:Hywan/wasmer into fix-runtime-c-api-header-preprocessor-clang 2019-11-14 14:46:09 +01:00
Ivan Enderlin
c43a7c78d0
Merge branch 'master' into fix-runtime-c-api-header-preprocessor-clang 2019-11-14 14:45:27 +01:00
Ivan Enderlin
987b0765c0 chore(runtime-c-api) Update header files. 2019-11-14 14:37:55 +01:00
Ivan Enderlin
42b02bee71 fix(runtime-c-api) Write macros at column 0. 2019-11-14 14:37:06 +01:00