Commit Graph

6481 Commits

Author SHA1 Message Date
Dan Gohman
5bf2fc0ffa Don't enable Lightbeam tests if Lightbeam isn't enabled. 2019-10-02 12:06:00 -07:00
Dan Gohman
65b8afabe6 Make use of Lightbeam configurable.
This adds a `--always-lightbeam` option as well as an `--always-cranelift`
option, to allow the compilation strategy to be selected via the
command-line. This also enables regular testing for Lightbeam.
2019-10-02 11:54:06 -07:00
Dan Gohman
f9d802fb1d Format with rustfmt. 2019-10-02 11:50:44 -07:00
Dan Gohman
277d981041 Rewrite another std::string::String to alloc. 2019-10-02 11:50:44 -07:00
bjorn3
a111ba8d11 Enable all-arch feature in test-no_std.sh 2019-10-02 11:50:44 -07:00
bjorn3
bb8fa40ef0 Rustfmt 2019-10-02 11:50:44 -07:00
bjorn3
c274d81b5b Fix it 2019-10-02 11:50:44 -07:00
bjorn3
9037e7a601 Remove std feature from cranelift-preopt 2019-10-02 11:50:44 -07:00
bjorn3
1a99ac6b4a Always use extern crate std in cranelift-frontend 2019-10-02 11:50:44 -07:00
bjorn3
74556d45ae Remove std feature from cranelift-codegen-meta 2019-10-02 11:50:44 -07:00
bjorn3
10e226f9ff Always use extern crate std in cranelift-codegen 2019-10-02 11:50:44 -07:00
bjorn3
a114423d0a Remove std feature from cranelift-entity 2019-10-02 11:50:44 -07:00
bjorn3
d25e611946 Remove std feature from cranelift-bforest 2019-10-02 11:50:44 -07:00
Dan Gohman
8c524815c3 Update dependencies. 2019-10-02 11:00:28 -07:00
Dan Gohman
8d52e389f8 Update Lightbeam for various API changes. 2019-10-02 10:10:32 -07:00
Dan Gohman
9757f7194c Merge Lightbeam into Wasmtime. 2019-10-02 09:49:38 -07:00
Dan Gohman
4cf15bd8c4 Remove the Lightbeam submodule. 2019-10-02 09:48:05 -07:00
Dan Gohman
5832eff76f Merge remote-tracking branch 'yurydelendik-lightbeam/cranelift-32' 2019-10-02 09:45:54 -07:00
Dan Gohman
8298a7a8b5 Merge remote-tracking branch 'jlb6740-lightbeam/update_cranelift_cg_ver_44' 2019-10-02 09:44:35 -07:00
Dan Gohman
6e963b670e Delete .rustfmt.toml 2019-10-02 09:34:09 -07:00
Dan Gohman
25a7e00d50 Delete .gitignore 2019-10-02 09:33:58 -07:00
Dan Gohman
6d5937dee0 Move lightbeam into a subdirectory. 2019-10-02 09:26:36 -07:00
Peter Huene
cb38b48156 Fix memory leaks in extern conversion functions in C API. (#395)
This fixes the memory leaks in the following functions which should not be
returning "owned" pointers:

* `wasm_extern_as_func`
* `wasm_func_as_extern`
* `wasm_extern_as_global`
* `wasm_global_as_extern`
* `wasm_extern_as_memory`
* `wasm_extern_as_table`

Additionally, this commit implements the `wasm_memory_as_extern` and
`wasm_table_as_extern` functions.

Fixes #394.
2019-10-02 05:54:36 -07:00
Erin Power
dadfbcd32b Re-export ReplaceBuilder
ReplaceBuilder is available in the public API through
`DataFlowGraph::replace`, however it's documentation is not available
through rustdoc as the type isn't publicly importable.
2019-10-02 13:56:27 +02:00
Benjamin Bouvier
a9d9f9f135 Write a run test for brz.i128; 2019-10-02 13:43:44 +02:00
Nicolas B. Pierron
e0005f1e6c Insert split-edge of conditional branches before the destination. 2019-10-02 12:03:56 +02:00
bjorn3
093b3b3426 Fix brz.i128
Fixes #1066
2019-10-02 11:04:29 +02:00
Benjamin Bouvier
0d50462a93 Fixes #1091: Use match statements instead of HashMaps in x86 encodings; 2019-10-01 09:01:37 -07:00
Johnnie Birch
5096d7cf92 Updates Cranelift Codegen dependence to 0.44
In trying to build the lightbeam feature in wasmtime there are
compile errors mostly related to outdated or missing trait
definitions. This patch moves the current cranelift codegen
dependence to 0.44 in support of that, though other changes
are still needed in wasmtime to get the feature to build.
2019-10-01 08:45:19 -07:00
Andrew Brown
d8967bb58a Split SIMD arithmetic tests by test directive 2019-09-30 13:54:30 -07:00
Andrew Brown
90c49a2f7c Add saturating subtraction with a SIMD encoding
This includes the new instructions `ssub_sat` and `usub_sat` and only encodes the i8x16 and i16x8 types; these are what is needed for implementing the SIMD spec (see https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md#saturating-integer-subtraction).
2019-09-30 13:54:30 -07:00
Andrew Brown
21144068d4 Add saturating addition with a SIMD encoding
This includes the new instructions `sadd_sat` and `uadd_sat` and only encodes the i8x16 and i16x8 types; these are what is needed for implementing the SIMD spec (see https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md#saturating-integer-addition).
2019-09-30 13:54:30 -07:00
Andrew Brown
630cb3ee62 Add x86 encoding for SIMD imul
Only i16x8 and i32x4 are encoded in this commit mainly because i8x16 and i64x2 do not have simple encodings in x86. i64x2 is not required by the SIMD spec and there is discussion (https://github.com/WebAssembly/simd/pull/98#issuecomment-530092217) about removing i8x16.
2019-09-30 13:54:30 -07:00
Andrew Brown
168ad7fda3 Fix 16-bit x86_pextr encoding
The x86 ISA has (at least) two encodings for PEXTRW:
 1. in the SSE2 opcode (66 0f c5) the XMM operand uses r/m and the GPR operand uses reg
 2. in the SSE4.1 opcode (66 0f 3a 15) the XMM operand uses reg and the GPR operand uses r/m

This changes the 16-bit x86_pextr encoding from 1 to 2 to match the other PEXTR* implementations (all #2 style).
2019-09-30 13:54:30 -07:00
Andrew Brown
c932f9b2b5 Add parsing of 16-bit signed integers 2019-09-30 13:54:30 -07:00
Andrew Brown
ba393afd4d Add x86 legalization for SIMD ineg 2019-09-30 13:54:30 -07:00
Andrew Brown
ca1df499a0 Add x86 encoding for isub 2019-09-30 13:54:30 -07:00
Dan Gohman
6b2f3ebf7c Begin sketching out a new high-level fs API. (#91)
* Begin sketching out a new high-level `fs` API.

This is a very preliminary sketch of #83. It doesn't even compile yet,
but it shows a possible high-level structure of such an API.

* Stub out more functionality.

* Switch from a lazy_static WasiCtx to a borrowed one.

* Reformat some comments.

* Code-quote `Self`.

* Implement error translation for Windows.

* Calls to `fd_close` are now unsafe.

* Implement a few more functions.
2019-09-30 11:27:53 -07:00
Dan Gohman
a679412dd0 Sync with lucet-wasi (#106)
* Open /dev/null for writing as well as reading.

Port this fix to wasi-common:

b905c44483

* Remove all remaining uses of `std::mem::uninitialized`.

Patch inspired by:

2d6519d051

* Replace libc::memcpy() calls with std::ptr::copy_nonoverlapping()

Port this fix to wasi-common:

a3f3a33e9b

* Pass `WasiError` by value.

It's a `u16` underneath, so we can pass it by value.

* Avoid unnecessary explicit lifetime parameters.

* Use immutable references rather than mutable references.

Patch inspired by:

54baa4c38c
2019-09-30 19:22:11 +02:00
Jean-Bapiste Lepesme
e1b9c01d94 Fix opt_level setting passed to cranelift
With 92a19e9398 the optimisation levels of cranelift were renamed, without this change trying to use the -o flag on wasmtime runtime results in "error: Unexpected value for a setting, expected any among none, speed, speed_and_size".

"best" was renamed "speed_and_size", although I think "speed" is more adapted to wastime.

Bye,
JB.
2019-09-30 09:38:00 -07:00
Benjamin Bouvier
4e3cb25983 Use a sorted array for (Ebb, Inst) interval again (fixes #1084); 2019-09-30 16:25:41 +02:00
John Gallagher
79784dfaf6 Change signature of all() function 2019-09-30 16:09:40 +02:00
Benjamin Bouvier
c3d01756a3 Baldrdash: uses ECX for the WasmTableCallSigReg on x86 32-bits; 2019-09-30 15:11:06 +02:00
Ujjwal Sharma
9f3c5b967e [codegen] add documentation for overflow
Add documentation to the icmp instruction text for both signed and
unsigned overflow, making it very clear why unsigned overflow is
complicated and where to find it.
2019-09-27 16:29:16 -07:00
Andrew Brown
e45ef24d3b Convert SIMD load and store to their respective CLIF instructions 2019-09-27 12:48:30 -07:00
Peter Huene
406bc7895a Implement reading module table imports in API. (#387)
This commit implements populating the table imports of a module from the API.

It also allows for `anyref` in table types as per the reference types proposal.
2019-09-27 05:50:54 -07:00
Dan Gohman
0653ae2c9c Fix compilation errors. 2019-09-26 19:37:23 -07:00
Dan Gohman
7899784663 Replace println error handling.
Use `panic!` and log macros for error handling instead of `println!`.
2019-09-26 19:37:23 -07:00
Dan Gohman
053fb3433e Fix compilation error. 2019-09-26 17:22:41 -07:00
Dan Gohman
34766f64ea Recognize "wasi_unstable_preview0" in addition to "wasi_unstable". 2019-09-26 17:22:41 -07:00