Commit Graph

6481 Commits

Author SHA1 Message Date
Artur Jamro
dde1c6ba58 Cache configuration documentation 2019-09-23 16:03:28 -07:00
Artur Jamro
1c22211d57 Refactor cache configuration 2019-09-23 12:48:36 -07:00
Marius Wachtler
c3a519d3a1 wasm2obj: add -O / --optimize command line option 2019-09-23 12:46:52 -07:00
Erin Power
947fce194e Replaced instances of SparseSet with EntitySet 2019-09-23 17:20:25 +02:00
Benjamin Bouvier
f0244516c5 [meta] Make more things pub(crate) instead of pub;
This could help the compiler find unused fields/methods. It didn't find any
during this migration.
2019-09-23 14:42:20 +02:00
Benjamin Bouvier
c2587c9d61 [meta] Remove Literal's kind field; 2019-09-23 14:42:20 +02:00
Benjamin Bouvier
3ab8eed7d3 Remove unused core::mem import; 2019-09-23 14:41:07 +02:00
Anthony Ramine
eeb3159fe9 Make wasm_unsupported be composeable 2019-09-23 10:36:03 +02:00
Anthony Ramine
26accbadf8 Use f32::to_bits and f64::to_bits 2019-09-23 10:36:03 +02:00
Anthony Ramine
178241625c Use slice::from_ref and slice::from_mut 2019-09-23 10:36:03 +02:00
Dan Gohman
411545ed9a Bump version to 0.43.1 2019-09-20 14:11:15 -07:00
Andrew Brown
2330ca7e2c Fix incorrect regmove and fill encodings for SIMD types
- `fill` attempted to use a GPR recipe, `fillSib32`, instead of its FPR equivalent, `ffillSib32` (code compiled without error but incorrect instructions were allowed, e.g. `v1 = regmove v0, %rdi -> %xmm0`
- `regmove` could be encoded with a GPR recipe, `rmov`, which hid the above incorrectness; now only FPR-to-FPR regmoves are allowed using the `frmov` recipe
2019-09-20 14:02:03 -07:00
Nick Fitzgerald
9b8e7b511e tidy: Remove extra semicolons
These were causing compilation warnings.
2019-09-19 16:25:49 -07:00
Dan Gohman
5c5eabb8d0 Bump version to 0.43.0 2019-09-19 12:23:51 -07:00
Andrew Brown
fe25abeb0d Add x86 encodings for vector copy, copy_nop, fill_nop 2019-09-19 12:04:14 -07:00
Andrew Brown
766cf8ddfd Add x86 implemention for SIMD iadd 2019-09-19 12:04:14 -07:00
Andrew Brown
cd426cb7bc Rename Uimm128 to V128Imm 2019-09-19 12:04:14 -07:00
Andrew Brown
6cbc6e8bfb Handle use of SIMD vector globals and locals 2019-09-19 12:04:14 -07:00
Andrew Brown
7e6913e362 Add x86 encodings for vector store, load, fill, spill, and regmove 2019-09-19 12:04:14 -07:00
Andrew Brown
ddd1680e76 Add V128 -> I8X16 type conversions 2019-09-19 12:04:14 -07:00
Andrew Brown
13ac951004 Allow global initialization of SIMD vectors 2019-09-19 12:04:14 -07:00
Wander Lairson Costa
1e74d01111 Check for types::INVALID in the function signature, resolves #493 (#1046) 2019-09-19 11:26:17 -07:00
Andrew Brown
20c67f243e Add boolean shuffle test 2019-09-19 10:53:40 -07:00
Andrew Brown
e72434e58f Add boolean encodings for x86
Includes and, or, xor, not, and regmove; TODO re-factor PerCpuModeEncodings to avoid code duplication
2019-09-19 10:53:40 -07:00
Andrew Brown
af1499ce99 Add x86 implementation of shuffle 2019-09-19 10:53:40 -07:00
Mark Bestavros
bd613ecafd Utilize cranelift-codegen's new all-arch feature to maintain architecture support 2019-09-19 10:39:41 -07:00
julian-seward1
9e088e4164 Reorganise optimisation level settings, and make the insn shrink pass optional (#1044)
This patch:

* removes the "default" opt level, on the basis that it has no definition and
  is referred to nowhere in the compiler.

* renames the "fastest" level to "none".  The resulting set of transformations
  is unchanged.

* renames the "best" level to "speed_and_size".  The resulting set of
  transformations is unchanged.

* adds a new level, "speed".  This is the same as "speed_and_size" except that
  it omits transformations aimed only at reducing code size.  Currently it
  omits only the insn shrinking pass.
2019-09-19 18:51:25 +02:00
Artur Jamro
acd6a5ea58 Fix crash when cache disabled 2019-09-18 16:51:44 -07:00
Joshua Nelson
59139c6c46 Add more documentation for entities, fixes #1038 (#1041)
Also fixes broken links to point to docs.rs; see
https://github.com/CraneStation/cranelift/pull/1041#issuecomment-532356880,
there doesn't currently seem to be a way to link to a type in a
dependent crate.
2019-09-18 16:48:57 -07:00
Artur Jamro
febb0cb693 Cache worker 2019-09-18 16:43:27 -07:00
Yury Delendik
9c747db429 Make data() unsafe 2019-09-18 09:15:14 -07:00
Yury Delendik
6a41417b52 Add examples; refactor HostRef 2019-09-18 09:15:14 -07:00
Joshua Nelson
e252e0f5b7 fix broken link in cranelift-object 2019-09-18 08:33:17 -07:00
Erin Power
3c6795decf Fixed broken pipe race condition in ensure_installed 2019-09-18 11:11:30 +02:00
AnthonyMikh
c0274eca24 Simplify and rename Stackmap::from_vec (#1032)
Co-Authored-By: bjorn3 <bjorn3@users.noreply.github.com>
2019-09-18 10:11:32 +02:00
bjorn3
add6a4f269 Correctly zero extend operand of fcvt_from_uint for 8ints and 16bit ints (#997)
Fixes #996
2019-09-18 10:06:15 +02:00
bookmoons
156938facf Continuous fuzzing with Fuzzit (#1042)
Enables automated fuzzing on Fuzzit. Runs fuzz regression tests
every push and PR. Runs full fuzzing every push. Fuzzit emails
if it finds crashes.

Uses the existing fuzz targets:
* translate-module - Fuzz valid WebAssembly modules.
* reader-parse - Fuzz IR text format parsing.
2019-09-18 14:35:30 +09:00
Jakub Konka
90f1cd5c96 Fix path_remove_directory on *nixes 2019-09-17 23:22:43 +02:00
Andrew Brown
9b852fde09 Add verifier check to ensure each SIMD lane index is within bounds, fixes #1016 2019-09-17 09:29:36 -07:00
Wander Lairson Costa
863ac809d9 [codegen] Check for downcasting in bitcast instruction
Bitcasting to a smaller size is invalid.

closes #854
2019-09-17 17:07:07 +02:00
Erin Power
5426e42a27 Revert "Remove FunctionBuilderContext from API, and change FunctionBuilder API"
This reverts commit 39e638af99dbe6537bc935bfb1a74669b62877b3.
2019-09-17 08:58:46 +02:00
Till Schneidereit
8d62d5f724 Revert "Continuous fuzzing (#944)" (#1036)
This reverts commit 374fd238b06860a1e6e3f8bb9eb598afe91b90fe.
2019-09-17 15:06:37 +09:00
bookmoons
f8d0e6ecab Continuous fuzzing (#944)
Enables automated fuzzing on Fuzzit. Runs fuzz regression tests
every push and PR. Runs full fuzzing every push. Fuzzit emails
if it finds crashes.

Uses the existing fuzz targets:
* translate-module - Fuzz valid WebAssembly modules.
* reader-parse - Fuzz IR text format parsing.
2019-09-17 14:12:31 +09:00
Dan Gohman
30a4f73cce Mark public API functions as unsafe. (#90)
* Mark public API functions as unsafe.

This marks the public hostcalls functions as unsafe.

This is generalizing from Rust's `from_raw_fd` function, which is
unsafe. The observation is that nothing prevents code using this
function from passing a bogus or stale dangling file descriptor and
corrupting an arbitrary open stream.

Technically, some of these functions don't use file descriptors, such as
random, clocks, and a few others. However I expect that in the future,
random and clocks will switch to using file descriptors anyway, and it
keeps the macro definitions simpler if we only have to handle one form.

* Mark WasiCtx functions that operate on file descriptors unsafe too.

* `fd_filestat_set_times_impl` doesn't need to be unsafe.

* Remove unnecessary unsafes
2019-09-16 15:55:35 -07:00
Jakub Konka
fec5b7ab0a Refactor mgmt of misc testsuite (#101)
Changes:
* use [tempfile] crate for auto mgmt of temp dirs
* use concrete types in place of generics in `utils` module

[tempfile]: https://github.com/Stebalien/tempfile
2019-09-16 15:35:14 -07:00
Jakub Konka
dfeae067cc Sync with wasmtime and update public interface
Internal modules `memory` and `host` can indeed be internal hidden
behind public-private visibility as `wasmtime-wasi` has already
been updated not to use the said modules (see
CraneStation/wasmtime#298).
2019-09-16 15:30:20 -07:00
Andy Wortman
99380fad1a Use 'xor r, r' to set registers to 0 instead of mov (#766) 2019-09-16 16:35:55 +02:00
julian-seward1
b95508c51a legalizer/split.rs: split_ebb_params: avoid pointless Vec allocations. (#1025)
This function is responsible for 2.2% of all heap allocation (calls) in CL.
This change avoids all of them in the (presumably) common case where none of
the parameters require splitting.  It also slightly reduces the compiler's
instruction count.
2019-09-16 15:01:07 +02:00
Wander Lairson Costa
a51606bfeb [frontend] Add message for pristine assertion violation
After we add any instruction to an EBB, we can't add EBB parameters
anymore. There is an assertion in `append_ebb_param` to detect this
error, but the backtrace generated doesn't give any hint what happened.

We add an error message to the assertion so the user can understand what
is wrong.

fixes #1003
2019-09-16 14:55:19 +02:00
Rett Berg
4aef679243 fix reflink in CONTRIBUTING.md 2019-09-16 10:45:51 +02:00