Commit Graph

3132 Commits

Author SHA1 Message Date
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
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
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
26c8fd52c8 Initial implementation of "known to be arithmetic NaN / not NaN". 2019-11-26 12:20:43 -08:00
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
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
49665d5797 use checked_sub for peekn_extra 2019-11-26 09:17:13 +01:00
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
4e2440daec Add a 'clear' method to map. 2019-11-25 14:53:25 -08:00
7ca0430a40 activate pre_validation when llvm backend selected 2019-11-25 13:17:07 +01:00
d376b89ef0 Merge branch 'master' into ventuzelo/fix-1005-panic-sub-overflow 2019-11-25 12:05:33 +01:00
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
3ef9f769df Fix TBAA crash with LLVM + the gas middleware. 2019-11-22 17:03:31 -08:00
681219b06c Fix bug in LLVM lowering of 'return' when the stack has a float on it. 2019-11-22 17:03:31 -08:00
85666fc522 Add new llvm-backend-test crate. 2019-11-22 17:03:23 -08:00
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
bb1e7a8d78 Prepare for 0.11.0 release 2019-11-22 11:18:06 -08:00
a691d3454c Skip serializing on singlepass 2019-11-22 09:49:17 -08:00
2261f8b449 cargo fmt 2019-11-22 17:21:15 +01:00
508004088e check stack len before getting value 2019-11-22 17:10:54 +01:00
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
0834ccf661 Merge branch 'master' into feature/singlepass-aarch64
# Conflicts:
#	Makefile
2019-11-21 20:10:09 -08:00
180528241d Fix merge issue in wasi tests 2019-11-21 19:31:17 -08:00
27b6acdb16 Fixed typo 2019-11-21 18:55:38 -08:00
9a146c57fc Make docs compilation happy 2019-11-21 18:35:19 -08:00
7b9485320d Revert "Autodetect default backend, add features for architecture type"
This reverts commit 31437a1e74.
2019-11-21 18:26:31 -08:00
44f2e926ac Merge branch 'master' into compiler-tests 2019-11-21 17:24:08 -08:00
31437a1e74 Autodetect default backend, add features for architecture type 2019-11-21 17:22:21 -08:00
87f4183440 Merge remote-tracking branch 'origin/master' into feature/singlepass-aarch64 2019-11-22 09:09:01 +08:00
5da44c3bf8 Add 'fault' placeholder for Windows. 2019-11-22 07:26:35 +08:00
bdeec52152 Fix imports in test; copy manual implementations of Debug for wasi 2019-11-21 14:00:46 -08:00
c3f93f1275 Fixed formatting 2019-11-21 13:38:22 -08:00
aeb66ee48e Simplify compiler test options 2019-11-21 13:36:44 -08:00
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
ddccdb92b8 More fixes for CI 2019-11-21 11:30:44 -08:00
36a26717c2 Merge branch 'master' into feature/add-support-for-new-wasi 2019-11-21 10:58:05 -08:00
be217e8f8e Update from feedback, fix CI issues, update wasi-test 2019-11-21 10:57:04 -08:00
7626957203 Enable block_trace middleware only on unix. 2019-11-22 02:38:47 +08:00
4dd810bbac Ensure code version metadata is pushed properly. 2019-11-22 02:23:51 +08:00
8709708de7 Unwind if breakpoint handler returns error. 2019-11-22 01:57:04 +08:00
4ec4fcf28a Try fixing middleware failure. 2019-11-22 01:46:02 +08:00
6f3e6fab3b Try fixing compilation on Windows. 2019-11-22 00:51:20 +08:00
c0ff110ca9 Merge remote-tracking branch 'origin/master' into feature/singlepass-aarch64 2019-11-22 00:38:02 +08:00
15e3a038ea Try fixing compilation on Windows. 2019-11-22 00:36:34 +08:00
1e6dbf9b86 Merge branch 'master' into fix-gh-979 2019-11-21 11:01:45 +01:00
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
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
b8aee87d6e Skip atomic tests for now in singlepass Aarch64 2019-11-20 19:11:33 -08:00
b77dffbbfe Merge branch 'master' into feature/singlepass-aarch64 2019-11-20 19:09:19 -08:00
fc733647ec Add info in c api readme in the testing section 2019-11-20 16:38:44 -08:00