|
Revision tags: dev, v36.0.9, v44.0.1, v43.0.2, v36.0.8, v24.0.8, v44.0.0, v43.0.1, v42.0.2, v36.0.7, v24.0.7, v43.0.0, v42.0.1, v41.0.4, v42.0.0, v40.0.4, v36.0.6, v24.0.6, v41.0.3, v41.0.2, v41.0.1, v36.0.5, v40.0.3, v41.0.0, v36.0.4, v39.0.2, v40.0.2, v40.0.1, v40.0.0, v39.0.1, v39.0.0, v38.0.4, v37.0.3, v36.0.3, v24.0.5, v38.0.3, v38.0.2, v38.0.1 |
|
| #
37553b2c |
| 20-Oct-2025 |
withtimezone <[email protected]> |
chore: remove repetitive word in comment (#11887)
Signed-off-by: withtimezone <[email protected]>
|
|
Revision tags: v37.0.2, v37.0.1, v37.0.0, v36.0.2, v36.0.1, v36.0.0, v35.0.0, v24.0.4, v33.0.2, v34.0.2, v34.0.1, v33.0.1, v24.0.3, v32.0.1, v34.0.0, v33.0.0, v32.0.0, v31.0.0, v30.0.2, v30.0.1, v30.0.0 |
|
| #
ba4e22bc |
| 27-Jan-2025 |
Alex Crichton <[email protected]> |
Make it easier to reuse fuzzing configuration on the CLI (#10123)
* Make it easier to reuse fuzzing configuration on the CLI
During fuzzing we emit a debug log of configured options to assist with
Make it easier to reuse fuzzing configuration on the CLI (#10123)
* Make it easier to reuse fuzzing configuration on the CLI
During fuzzing we emit a debug log of configured options to assist with reproducing fuzz test cases outside of the fuzzing harness. Mapping options the fuzzer is using though to CLI flags, for example, is a bit of an art though and not obvious. Just today we've got a fuzz bug and I couldn't figure out how to reproduce on the CLI and it turns out the issue was that I was forgetting a flag that was being configured in response to another flag. I got a bit fed up with constantly trying to map one to the other, so I've decided to fix things.
This commit adds a `Display for CommonOptions` implementation to the `wasmtime-cli-flags` crate. This is built on the same macro-construction infrastructure of all our flags making it a relatively low one-time-cost to implement this. Each option value now implements not only parsing but printing as well.
Next the `wasmtime-fuzzing` crate was updated to create a `CommonOptions` first which is then in turn used to create a `wasmtime::Config`. This provides a layer to insert a log statement with to emit all configuration options in a form that can be easily copy/pasted to the CLI to reproduce.
Overall after doing this I was able to quickly reproduce the bug in question (yay!). The CLI flag logging is pretty verbose right now since the fuzzing infrastructure sets many settings redundantly to their defaults, but reducing flags to a minimum is expected to be relatively easy compared to otherwise trying to extract the options.
* Fix build and dependencies from wasmtime-fuzzing
* Always provide `wasmtime::MpkEnabled`
It's an otherwise very small `enum` which makes it easier to conditionally compile `wasmtime-cli-flags`
* Frob some crate features some more
* Fix specification of `wasmtime_linkopt_force_jump_veneer` option
show more ...
|
|
Revision tags: v29.0.1 |
|
| #
4d75ebd1 |
| 21-Jan-2025 |
Jeffrey Charles <[email protected]> |
Fuzzing: Keep AVX flags enabled for Winch (#10052)
* Fuzzing: Keep AVX flags enabled for Winch
* Check that SIMD is enabled
* Inspect flags in wast oracle
* Add log statement
|
|
Revision tags: v29.0.0, v28.0.1, v28.0.0 |
|
| #
45b60bd6 |
| 02-Dec-2024 |
Alex Crichton <[email protected]> |
Start using `#[expect]` instead of `#[allow]` (#9696)
* Start using `#[expect]` instead of `#[allow]`
In Rust 1.81, our new MSRV, a new feature was added to Rust to use `#[expect]` to control lint
Start using `#[expect]` instead of `#[allow]` (#9696)
* Start using `#[expect]` instead of `#[allow]`
In Rust 1.81, our new MSRV, a new feature was added to Rust to use `#[expect]` to control lint levels. This new lint annotation will silence a lint but will itself cause a lint if it doesn't actually silence anything. This is quite useful to ensure that annotations don't get stale over time.
Another feature is the ability to use a `reason` directive on the attribute with a string explaining why the attribute is there. This string is then rendered in compiler messages if a warning or error happens.
This commit migrates applies a few changes across the workspace:
* Some `#[allow]` are changed to `#[expect]` with a `reason`. * Some `#[allow]` have a `reason` added if the lint conditionally fires (mostly related to macros). * Some `#[allow]` are removed since the lint doesn't actually fire. * The workspace configures `clippy::allow_attributes_without_reason = 'warn'` as a "ratchet" to prevent future regressions. * Many crates are annotated to allow `allow_attributes_without_reason` during this transitionary period.
The end-state is that all crates should use `#[expect(..., reason = "...")]` for any lint that unconditionally fires but is expected. The `#[allow(..., reason = "...")]` lint should be used for conditionally firing lints, primarily in macro-related code. The `allow_attributes_without_reason = 'warn'` level is intended to be permanent but the transitionary `#[expect(clippy::allow_attributes_without_reason)]` crate annotations to go away over time.
* Fix adapter build
prtest:full
* Fix one-core build of icache coherence
* Use `allow` for missing_docs
Work around rust-lang/rust#130021 which was fixed in Rust 1.83 and isn't fixed for our MSRV at this time.
* More MSRV compat
show more ...
|
|
Revision tags: v27.0.0, v26.0.1, v25.0.3, v24.0.2, v26.0.0 |
|
| #
3036e795 |
| 14-Oct-2024 |
beetrees <[email protected]> |
Add I128 atomic support to the `x64` backend (#9459)
* Add I128 atomic support to the `x64` backend
* fix typo in cranelift/codegen/src/isa/x64/inst/emit.rs
---------
Co-authored-by: Nick Fitzger
Add I128 atomic support to the `x64` backend (#9459)
* Add I128 atomic support to the `x64` backend
* fix typo in cranelift/codegen/src/isa/x64/inst/emit.rs
---------
Co-authored-by: Nick Fitzgerald <[email protected]>
show more ...
|
|
Revision tags: v21.0.2, v22.0.1, v23.0.3, v25.0.2, v24.0.1, v25.0.1, v25.0.0, v24.0.0 |
|
| #
3f5c21bf |
| 16-Aug-2024 |
beetrees <[email protected]> |
Add initial f16 and f128 support to the aarch64 backend (#9076)
|
|
Revision tags: v23.0.2, v23.0.1, v23.0.0, v22.0.0, v21.0.1, v21.0.0, v20.0.2, v20.0.1, v20.0.0, v17.0.3, v19.0.2, v18.0.4, v19.0.1, v19.0.0, v18.0.3, v18.0.2, v17.0.2, v18.0.1, v18.0.0, v17.0.1, v17.0.0, v16.0.0, v15.0.1, v15.0.0, v14.0.4, v14.0.3, v14.0.2, v13.0.1, v14.0.1, v14.0.0, minimum-viable-wasi-proxy-serve, v13.0.0, v12.0.2, v11.0.2, v10.0.2, v12.0.1, v12.0.0, v11.0.1, v11.0.0 |
|
| #
0c980788 |
| 22-Jun-2023 |
Alex Crichton <[email protected]> |
x64: Lower SIMD requirement to SSE2 (#6625)
All instructions in Cranelift now have lowerings for SSE2 as a baseline, even if they're not exactly the speediest things in the world. This enables lower
x64: Lower SIMD requirement to SSE2 (#6625)
All instructions in Cranelift now have lowerings for SSE2 as a baseline, even if they're not exactly the speediest things in the world. This enables lowering the baseline required for the SIMD proposal for WebAssembly to SSE2, the base features set of x86_64. Lots of tests were updated here to remove explicit `has_foo=false` annotations as they no longer have any effect.
Additionally fuzzing has been updated to enable disabling `sse3` and `ssse3` which will help stress-test all previously-added lowerings.
show more ...
|
|
Revision tags: v10.0.1, v10.0.0, v9.0.4 |
|
| #
8fb41ca4 |
| 01-Jun-2023 |
Alex Crichton <[email protected]> |
x64: Don't require SSE4.1 for `enable_simd` (#6489)
This commit removes the SSE4.1 requirement for the `enable_simd` CLIF feature. This means that the new baseline required is SSSE3 for the WebAssem
x64: Don't require SSE4.1 for `enable_simd` (#6489)
This commit removes the SSE4.1 requirement for the `enable_simd` CLIF feature. This means that the new baseline required is SSSE3 for the WebAssembly SIMD proposal. Many existing tests for codegen were all updated to explicitly enable `has_sse41` and runtests were updated to test with and without SSE 4.1.
Wasmtime's fuzzing is additionally updated to flip the SSE4.1 feature to enable fuzz-testing this.
show more ...
|
|
Revision tags: v9.0.3, v9.0.2, v9.0.1, v9.0.0, v6.0.2, v7.0.1, v8.0.1, v8.0.0 |
|
| #
2d25db04 |
| 14-Apr-2023 |
Alex Crichton <[email protected]> |
x64: Lower SIMD requirement to SSE4.1 from SSE4.2 (#6206)
Cranelift only has one instruction SIMD which depends on SSE4.2 so this commit adds a lowering rule for `pcmpgtq` which doesn't use SSE4.2 a
x64: Lower SIMD requirement to SSE4.1 from SSE4.2 (#6206)
Cranelift only has one instruction SIMD which depends on SSE4.2 so this commit adds a lowering rule for `pcmpgtq` which doesn't use SSE4.2 and enables lowering the baseline requirement for SIMD support from SSE4.2 to SSE4.1.
The `has_sse42` setting is no longer enabled by default for Cranelift. Additionally `enable_simd` no longer requires `has_sse42` on x64. Finally the fuzz-generator for Wasmtime codegen settings now enables flipping the `has_sse42` setting instead of unconditionally setting it to `true`.
The specific lowering for `pcmpgtq` is copied from LLVM's lowering of this instruction.
show more ...
|
|
Revision tags: v7.0.0, v6.0.1, v5.0.1, v4.0.1, v6.0.0, v5.0.0 |
|
| #
9b896d2a |
| 18-Jan-2023 |
Alex Crichton <[email protected]> |
Resolve libcall relocations for older CPUs (#5567)
* Resolve libcall relocations for older CPUs
Long ago Wasmtime used to have logic for resolving relocations
post-compilation for libcalls which
Resolve libcall relocations for older CPUs (#5567)
* Resolve libcall relocations for older CPUs
Long ago Wasmtime used to have logic for resolving relocations
post-compilation for libcalls which I ended up removing during
refactorings last year. As #5563 points out, however, it's possible to
get Wasmtime to panic by disabling SSE features which forces Cranelift
to use libcalls for some floating-point operations instead. Note that
this also requires disabling SIMD because SIMD support has a baseline of
SSE 4.2.
This commit pulls back the old implementations of various libcalls and
reimplements logic necessary to have them work on CPUs without SSE 4.2
Closes #5563
* Fix log message in `wast` support
* Fix offset listed in relocations
Be sure to factor in the offset of the function itself
* Review comments
show more ...
|
|
Revision tags: v4.0.0, v3.0.1, v3.0.0, v1.0.2, v2.0.2, v2.0.1, v2.0.0, v1.0.1, v1.0.0 |
|
| #
d8b29089 |
| 08-Sep-2022 |
Anton Kirilov <[email protected]> |
Initial forward-edge CFI implementation (#3693)
* Initial forward-edge CFI implementation
Give the user the option to start all basic blocks that are targets
of indirect branches with the BTI in
Initial forward-edge CFI implementation (#3693)
* Initial forward-edge CFI implementation
Give the user the option to start all basic blocks that are targets
of indirect branches with the BTI instruction introduced by the
Branch Target Identification extension to the Arm instruction set
architecture.
Copyright (c) 2022, Arm Limited.
* Refactor `from_artifacts` to avoid second `make_executable` (#1)
This involves "parsing" twice but this is parsing just the header of an
ELF file so it's not a very intensive operation and should be ok to do
twice.
* Address the code review feedback
Copyright (c) 2022, Arm Limited.
Co-authored-by: Alex Crichton <[email protected]>
show more ...
|
|
Revision tags: v0.40.1, v0.40.0 |
|
| #
1481721c |
| 17-Aug-2022 |
Anton Kirilov <[email protected]> |
Enable back-edge CFI by default on macOS (#4720)
Also, adjust the tests that are executed on that platform. Finally,
fix a bug with obtaining backtraces when back-edge CFI is enabled.
Copyright
Enable back-edge CFI by default on macOS (#4720)
Also, adjust the tests that are executed on that platform. Finally,
fix a bug with obtaining backtraces when back-edge CFI is enabled.
Copyright (c) 2022, Arm Limited.
show more ...
|
| #
02c3b47d |
| 25-Jul-2022 |
Afonso Bordado <[email protected]> |
x64: Implement SIMD `fma` (#4474)
* x64: Add VEX Instruction Encoder
This uses a similar builder pattern to the EVEX Encoder.
Does not yet support memory accesses.
* x64: Add FMA Flag
* x6
x64: Implement SIMD `fma` (#4474)
* x64: Add VEX Instruction Encoder
This uses a similar builder pattern to the EVEX Encoder.
Does not yet support memory accesses.
* x64: Add FMA Flag
* x64: Implement SIMD `fma`
* x64: Use 4 register Vex Inst
* x64: Reorder VEX pretty print args
show more ...
|
|
Revision tags: v0.39.1, v0.38.3, v0.38.2, v0.39.0 |
|
| #
c227063f |
| 07-Jul-2022 |
Andrew Brown <[email protected]> |
fuzz: refactor fuzz generators (#4404)
Previously, much of the logic for generating the various objects needed
for fuzzing was concentrated primarily in `generators.rs`. In trying to
piece togethe
fuzz: refactor fuzz generators (#4404)
Previously, much of the logic for generating the various objects needed
for fuzzing was concentrated primarily in `generators.rs`. In trying to
piece together what code does what, the size of the file and the light
documentation make it hard to discern what each part does. Since several
generator structures had been split out as separate modules in the
`generators/` directory, this change takes that refactoring further by
moving the structures in `generators.rs` to their own modules. No logic
changes were made, only the addition of documentation in a few places.
show more ...
|