|
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, v37.0.2 |
|
| #
2a2e8f62 |
| 01-Oct-2025 |
bjorn3 <[email protected]> |
Couple cleanups to the flags/settings handling in Cranelift (#11744)
* Remove unused shared flags
* Get rid of predicate settings
They were important in the old backend framework, but with the new
Couple cleanups to the flags/settings handling in Cranelift (#11744)
* Remove unused shared flags
* Get rid of predicate settings
They were important in the old backend framework, but with the new backend framework if we need a combination of multiple settings, that can just be done as a regular extractor doing &&. This simplifies the settings implementation.
show more ...
|
|
Revision tags: v37.0.1, v37.0.0, v36.0.2, v36.0.1, v36.0.0 |
|
| #
f1cccc43 |
| 23-Jul-2025 |
Alex Crichton <[email protected]> |
Fix reproducing cranelift-fuzzgen cases across CPUs (#11309)
There's a bug on OSS-Fuzz which I can't reproduce and I believe it's due to the CPU features on OSS-Fuzz being different than what I have
Fix reproducing cranelift-fuzzgen cases across CPUs (#11309)
There's a bug on OSS-Fuzz which I can't reproduce and I believe it's due to the CPU features on OSS-Fuzz being different than what I have locally. Try to work around this by consuming a constant amount of data from the fuzz input regardless of what features the host CPU has.
show more ...
|
|
Revision tags: 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 |
|
| #
c5fd5bbe |
| 17-Jun-2025 |
Alex Crichton <[email protected]> |
Fix Cranelift-native fuzzers (#11062)
This commit fixes a typo mistake from #10588 where the option specified there was actually invalid. This error got covered up by accident when generating the fu
Fix Cranelift-native fuzzers (#11062)
This commit fixes a typo mistake from #10588 where the option specified there was actually invalid. This error got covered up by accident when generating the fuzz test case, however, meaning that the error was not noticed. This changes builder configuration to using `.unwrap()` more liberally for options that are all known should be enabled.
show more ...
|
|
Revision tags: v33.0.0 |
|
| #
90ac295e |
| 19-May-2025 |
Alex Crichton <[email protected]> |
Update Wasmtime to the 2024 Rust Edition (#10806)
* Update Wasmtime to the 2024 Rust Edition
Now that our MSRV supports the 2024 edition it's possible to make this switch. This commit moves Wasmtim
Update Wasmtime to the 2024 Rust Edition (#10806)
* Update Wasmtime to the 2024 Rust Edition
Now that our MSRV supports the 2024 edition it's possible to make this switch. This commit moves Wasmtime to the 2024 Edition to keep up-to-date with Rust idioms and access many of the edition features exclusive to the 2024 edition.
prtest:full
* Reformat with the 2024 edition
show more ...
|
|
Revision tags: v32.0.0 |
|
| #
67494c8b |
| 15-Apr-2025 |
Alex Crichton <[email protected]> |
Canonicalize NaN in cranelift-fuzzgen (#10588)
Lacking this has happened to work fine up to now but Rust nightly is changing float implementations which is changing float payloads. As a result this
Canonicalize NaN in cranelift-fuzzgen (#10588)
Lacking this has happened to work fine up to now but Rust nightly is changing float implementations which is changing float payloads. As a result this is the only reliable method of ensuring that differential fuzzing between the interpreter and native backends remains reliable, in the same manner as this being enabled for core wasm as well.
Closes #10583
show more ...
|
|
Revision tags: v31.0.0, v30.0.2, v30.0.1, v30.0.0, v29.0.1, v29.0.0, v28.0.1, v28.0.0, v27.0.0, v26.0.1, v25.0.3, v24.0.2 |
|
| #
af968461 |
| 27-Oct-2024 |
bjorn3 <[email protected]> |
Gate support for implicit return area pointers behind an option (#9511)
* Remove couple of unused isle helpers
* Gate support for implicit return area pointers behind an option
It implements an in
Gate support for implicit return area pointers behind an option (#9511)
* Remove couple of unused isle helpers
* Gate support for implicit return area pointers behind an option
It implements an incorrect ABI and may be removed in the future due to complexity reasons. By requiring to enable an option to use it, it becomes harder to accidentally hit the ABI issue and allows a more deprecation and eventual removal.
* Fix review comments
* Enable enable_multi_ret_implicit_sret for s390x tests that use i128
* Enable enable_multi_ret_implicit_sret for riscv tests that use vector types
* Enable enable_multi_ret_implicit_sret for more riscv tests
* Enable enable_multi_ret_implicit_sret for windows tests that use i128
show more ...
|
|
Revision tags: v26.0.0, v21.0.2, v22.0.1, v23.0.3, v25.0.2, v24.0.1, v25.0.1, v25.0.0, v24.0.0, v23.0.2 |
|
| #
a0442ea0 |
| 05-Aug-2024 |
Hamir Mahal <[email protected]> |
Enforce `uninlined_format_args` for the workspace (#9065)
* Enforce `uninlined_format_args` for the workspace
* fix: failing `Monolith Checks` job
* fix: formatting
|
|
Revision tags: v23.0.1, v23.0.0, v22.0.0, v21.0.1, v21.0.0 |
|
| #
0e9121da |
| 16-May-2024 |
FrankReh <[email protected]> |
Fix some typos (#8641)
* occurred
* winch typos
* tests typos
* cli typos
* fuzz typos
* examples typos
* docs typos
* crates/wasmtime typos
* crates/environ typos
* crates/cranelift typos
Fix some typos (#8641)
* occurred
* winch typos
* tests typos
* cli typos
* fuzz typos
* examples typos
* docs typos
* crates/wasmtime typos
* crates/environ typos
* crates/cranelift typos
* crates/test-programs typos
* crates/c-api typos
* crates/cache typos
* crates other typos
* cranelift/codegen/src/isa typos
* cranelift/codegen/src other typos
* cranelift/codegen other typos
* cranelift other typos
* ci js typo
* .github workflows typo
* RELEASES typo
* Fix clang-format documentation line
---------
Co-authored-by: Andrew Brown <[email protected]>
show more ...
|
|
Revision tags: v20.0.2, v20.0.1, v20.0.0 |
|
| #
4d17d4f6 |
| 13-Apr-2024 |
Afonso Bordado <[email protected]> |
fuzzgen: Use the correct ISA when running NaN Canonicalization pass (#8360)
cranelift-fuzzgen unconditionally runs the NaN Canonicalization pass on all functions that it generates. This is so that w
fuzzgen: Use the correct ISA when running NaN Canonicalization pass (#8360)
cranelift-fuzzgen unconditionally runs the NaN Canonicalization pass on all functions that it generates. This is so that we can ensure that when running in the interpreter vs natively we get the same bitpattern for all NaN's.
Until now we just picked a random ISA (the host ISA), disabled the verifier and ran the pass with that. This was because the ISA didn't really matter for the passes that we wanted to run.
In #8313 the ISA now drives some codgen decisions for the NaN Canonicalization pass. Namely, if the ISA supports Vectors, it tries to use that.
In #8359 there was a fuzz bug reported where fuzzgen generated vector code for RISC-V without the `has_v` flag, something that should *never* happen, because we simply cannot compile that code.
It turns out that fuzzgen did not generate vector code itself. But since we were passing the host ISA to the nan canonicalization pass, it assumed that it could use vectors and did so. But the actual target isa did not support vectors.
To fix this, we now correctly pass the target isa that we are building a function for.
show more ...
|
|
Revision tags: v17.0.3, v19.0.2, v18.0.4, v19.0.1, v19.0.0, v18.0.3, v18.0.2, v17.0.2 |
|
| #
9ce3ffe1 |
| 22-Feb-2024 |
Alex Crichton <[email protected]> |
Update some CI dependencies (#7983)
* Update some CI dependencies
* Update to the latest nightly toolchain * Update mdbook * Update QEMU for cross-compiled testing * Update `cargo nextest` for usag
Update some CI dependencies (#7983)
* Update some CI dependencies
* Update to the latest nightly toolchain * Update mdbook * Update QEMU for cross-compiled testing * Update `cargo nextest` for usage with MIRI
prtest:full
* Remove lots of unnecessary imports
* Downgrade qemu as 8.2.1 seems to segfault
* Remove more imports
* Remove unused winch trait method
* Fix warnings about unused trait methods
* More unused imports
* More unused imports
show more ...
|
|
Revision tags: 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 |
|
| #
f10d665b |
| 02-Sep-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Enable SIMD fuzzing for RISC-V (#6949)
|
|
Revision tags: v12.0.1, v12.0.0, v11.0.1, v11.0.0 |
|
| #
a43d1dc6 |
| 29-Jun-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Generate Tail Calls (#6641)
* fuzzgen: Generate Tail Calls
* fuzzgen: Use the ISA's pointer type when preparing indirect calls
|
| #
b25fe4b4 |
| 22-Jun-2023 |
Alex Crichton <[email protected]> |
cranelift: Remove the `enable_simd` shared setting (#6631)
This commit removes a setting for Cranelift which I've found a bit confusing historically and I think is no longer necessary. The setting i
cranelift: Remove the `enable_simd` shared setting (#6631)
This commit removes a setting for Cranelift which I've found a bit confusing historically and I think is no longer necessary. The setting is currently documented as enabling SIMD instructions, but that only sort of works for the x64 backend and none of the other backends look at it. Historically this was used to flag to Cranelift that a higher x64 baseline feature set is required for codegen but as of #6625 that's no longer necessary.
Otherwise it seems more Cranelift-like nowadays to say that vector instructions generate SIMD instructions where non-vector instructions probably don't, but may still depending on activated CPU features. In that sense I'm not sure if a dedicated `enable_simd` setting is still motivated, so this PR removes it.
This renames some features in the x86 backend such as `use_avx_simd` to `use_avx` since the `_simd` part is no longer part of the computation now that `enable_simd` is gone.
show more ...
|
|
Revision tags: v10.0.1, v10.0.0 |
|
| #
1d604431 |
| 13-Jun-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Add `bb_padding_log2` option (#6575)
|
|
Revision tags: v9.0.4, v9.0.3, v9.0.2, v9.0.1, v9.0.0, v6.0.2, v7.0.1, v8.0.1, v8.0.0 |
|
| #
230e2135 |
| 06-Apr-2023 |
Chris Fallin <[email protected]> |
Cranelift: remove non-egraphs optimization pipeline and `use_egraphs` option. (#6167)
* Cranelift: remove non-egraphs optimization pipeline and `use_egraphs` option.
This PR removes the LICM, GVN,
Cranelift: remove non-egraphs optimization pipeline and `use_egraphs` option. (#6167)
* Cranelift: remove non-egraphs optimization pipeline and `use_egraphs` option.
This PR removes the LICM, GVN, and preopt passes, and associated support pieces, from `cranelift-codegen`. Not to worry, we still have optimizations: the egraph framework subsumes all of these, and has been on by default since #5181.
A few decision points:
- Filetests for the legacy LICM, GVN and simple_preopt were removed too. As we built optimizations in the egraph framework we wrote new tests for the equivalent functionality, and many of the old tests were testing specific behaviors in the old implementations that may not be relevant anymore. However if folks prefer I could take a different approach here and try to port over all of the tests.
- The corresponding filetest modes (commands) were deleted too. The `test alias_analysis` mode remains, but no longer invokes a separate GVN first (since there is no separate GVN that will not also do alias analysis) so the tests were tweaked slightly to work with that. The egrpah testsuite also covers alias analysis.
- The `divconst_magic_numbers` module is removed since it's unused without `simple_preopt`, though this is the one remaining optimization we still need to build in the egraphs framework, pending #5908. The magic numbers will live forever in git history so removing this in the meantime is not a major issue IMHO.
- The `use_egraphs` setting itself was removed at both the Cranelift and Wasmtime levels. It has been marked deprecated for a few releases now (Wasmtime 6.0, 7.0, upcoming 8.0, and corresponding Cranelift versions) so I think this is probably OK. As an alternative if anyone feels strongly, we could leave the setting and make it a no-op.
* Update test outputs for remaining test differences.
show more ...
|
| #
3957d577 |
| 22-Mar-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Fuzz ISA flags (#6001)
|
|
Revision tags: v7.0.0, v6.0.1, v5.0.1, v4.0.1 |
|
| #
e9621496 |
| 04-Mar-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Move `Arbitrary` structs into the fuzzers (#5820)
* fuzzgen: Move `FunctionWithIsa` to icache fuzzer
* fuzzgen: Move `Testcase` to fuzzgen fuzzer
* fuzzgen: Move allowed libcalls to fuzze
fuzzgen: Move `Arbitrary` structs into the fuzzers (#5820)
* fuzzgen: Move `FunctionWithIsa` to icache fuzzer
* fuzzgen: Move `Testcase` to fuzzgen fuzzer
* fuzzgen: Move allowed libcalls to fuzzers
* fuzzgen: Centralize printing of testcases
show more ...
|
| #
db8fe010 |
| 02-Mar-2023 |
Jan-Justin van Tonder <[email protected]> |
cranelift: Add big and little endian memory accesses to interpreter (#5893)
* Added `mem_flags` parameter to `State::checked_{load,store}` as the means for determining the endianness, typically deri
cranelift: Add big and little endian memory accesses to interpreter (#5893)
* Added `mem_flags` parameter to `State::checked_{load,store}` as the means for determining the endianness, typically derived from an instruction.
* Added `native_endianness` property to `InterpreterState` as fallback when determining endianness, such as in cases where there are no memory flags avaiable or set.
* Added `to_be` and `to_le` methods to `DataValue`.
* Added `AtomicCas` and `AtomicRmw` to list of instructions with retrievable memory flags for `InstructionData::memflags`.
* Enabled `atomic-{cas,rmw}-subword-{big,little}.clif` for interpreter run tests.
show more ...
|
| #
2dd60640 |
| 28-Feb-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Generate multiple functions per testcase (#5765)
* fuzzgen: Generate multiple functions per testcase
* fuzzgen: Fix typo
Co-authored-by: Jamey Sharp <[email protected]>
---------
Co-aut
fuzzgen: Generate multiple functions per testcase (#5765)
* fuzzgen: Generate multiple functions per testcase
* fuzzgen: Fix typo
Co-authored-by: Jamey Sharp <[email protected]>
---------
Co-authored-by: Jamey Sharp <[email protected]>
show more ...
|
| #
480c45b8 |
| 28-Feb-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Initial SIMD support (#5885)
* fuzzgen: Initial SIMD support
* riscv64: Address PR Feedback
Thanks!
|
|
Revision tags: v6.0.0 |
|
| #
853ff787 |
| 17-Feb-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Refactor name and signature generation (#5764)
* fuzzgen: Move cranelift type generation into CraneliftArbitrary
* fuzzgen: Deduplicate DataValue generation
* fuzzgen: Remove unused code
fuzzgen: Refactor name and signature generation (#5764)
* fuzzgen: Move cranelift type generation into CraneliftArbitrary
* fuzzgen: Deduplicate DataValue generation
* fuzzgen: Remove unused code
* fuzzgen: Pass allowed function calls into `FunctionGenerator`
show more ...
|
| #
a7bd65d1 |
| 17-Feb-2023 |
Afonso Bordado <[email protected]> |
fuzzgen: Allow inline stackprobes for riscv64 (#5822)
|
|
Revision tags: v5.0.0 |
|
| #
1efa3d6f |
| 06-Jan-2023 |
Sam Sartor <[email protected]> |
Add `clif-util compile` option to output object file (#5493)
* add clif-util compile option to output object file
* switch from a box to a borrow
* update objectmodule tests to use borrowed is
Add `clif-util compile` option to output object file (#5493)
* add clif-util compile option to output object file
* switch from a box to a borrow
* update objectmodule tests to use borrowed isa
* put targetisa into an arc
show more ...
|
| #
36e5bdfd |
| 05-Jan-2023 |
Trevor Elliott <[email protected]> |
Fuzz multiple targets in cranelift-icache (#5482)
Fuzz additional targets in the cranelift-icache target. The list of targets fuzzed is controlled by the targets enabled in fuzz/Cargo.toml.
This
Fuzz multiple targets in cranelift-icache (#5482)
Fuzz additional targets in the cranelift-icache target. The list of targets fuzzed is controlled by the targets enabled in fuzz/Cargo.toml.
This PR also reworks how instruction disabling is done in function generator, moving the deny-list to a function to make the decision at runtime instead of compile time.
show more ...
|
|
Revision tags: v4.0.0 |
|
| #
0eb22429 |
| 07-Dec-2022 |
Chris Fallin <[email protected]> |
Fuzzing: add `use_egraphs` option back to fuzzing config generator. (#5388)
This PR reverts #5128 (commit b3333bf9ea465a708b1504c10122d1626e13d5a9),
adding back the ability for the fuzzing config g
Fuzzing: add `use_egraphs` option back to fuzzing config generator. (#5388)
This PR reverts #5128 (commit b3333bf9ea465a708b1504c10122d1626e13d5a9),
adding back the ability for the fuzzing config generator to set
the `use_egraphs` Cranelift option. This will start to fuzz the
egraphs-based optimization framework again, now that #5382 has landed.
show more ...
|