MarinPostma opened PR #9970 from MarinPostma:winch-atomic-loads-x64
to bytecodealliance:main
:
this PR enable the thread feature for x64 in Winch, and implements atomic loads. This includes:
i32.atomic.load8_u
i32.atomic.load16_u
i32.atomic.load
i64.atomic.load8_u
i64.atomic.load16_u
i64.atomic.load32_u
i64.atomic.load
https://github.com/bytecodealliance/wasmtime/issues/9734
reopened from https://github.com/bytecodealliance/wasmtime/pull/9954 because the branch was wrong
MarinPostma requested cfallin for a review on PR #9970.
MarinPostma requested wasmtime-compiler-reviewers for a review on PR #9970.
MarinPostma requested dicej for a review on PR #9970.
MarinPostma requested wasmtime-core-reviewers for a review on PR #9970.
cfallin submitted PR review.
cfallin created PR review comment:
Rather than a
bool
, which can be error-prone, could you define a small enumWasmLoadKind { Regular, Atomic }
or similar and match on it in this function?
saulecabrera submitted PR review.
saulecabrera created PR review comment:
Could you return a proper
CodeGenError
instead of panicking? I'm in the process of enabling spec tests for aarch64, in general recoverable errors are preferred as it makes it easier to define when a particular proposal is not fully supported in a particular backend (like threads inaarch64
)I believe we have
CodeGenError::unimplemented_masm_instruction()
saulecabrera created PR review comment:
Given this comment and for the purposes of this pull request, I wonder if it's necessary to introduce a new method in the MacroAssembler. I'd prefer if possible, if we could instead extend the current load definition to take in a
load_kind
argument, which categorizes if the load is atomic or not, similar to Chris' comment in https://github.com/bytecodealliance/wasmtime/pull/9970/files#r1909577300, that would also simplify the indirection happening in theCodeGen
module:We could simplify to:
- Extending
emit_wasm_load
to take in a load kind- Performing the right dispatch directly from that method to the MacroAssembler, by passing the in-scope load kind.
MarinPostma submitted PR review.
MarinPostma created PR review comment:
sure i'll do that
MarinPostma updated PR #9970.
MarinPostma commented on PR #9970:
comments addressed
MarinPostma requested saulecabrera for a review on PR #9970.
MarinPostma commented on PR #9970:
I'll fix the test tommorow.
github-actions[bot] commented on PR #9970:
Subscribe to Label Action
cc @saulecabrera
<details>
This issue or pull request has been labeled: "wasmtime:api", "wasmtime:config", "winch"Thus the following users have been cc'd because of the following labels:
- saulecabrera: winch
To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.
Learn more.
</details>
github-actions[bot] commented on PR #9970:
Label Messager: wasmtime:config
It looks like you are changing Wasmtime's configuration options. Make sure to
complete this check list:
[ ] If you added a new
Config
method, you wrote extensive documentation for
it.<details>
Our documentation should be of the following form:
```text
Short, simple summary sentence.More details. These details can be multiple paragraphs. There should be
information about not just the method, but its parameters and results as
well.Is this method fallible? If so, when can it return an error?
Can this method panic? If so, when does it panic?
Example
Optional example here.
```</details>
[ ] If you added a new
Config
method, or modified an existing one, you
ensured that this configuration is exercised by the fuzz targets.<details>
For example, if you expose a new strategy for allocating the next instance
slot inside the pooling allocator, you should ensure that at least one of our
fuzz targets exercises that new strategy.Often, all that is required of you is to ensure that there is a knob for this
configuration option in [wasmtime_fuzzing::Config
][fuzzing-config] (or one
of its nestedstruct
s).Rarely, this may require authoring a new fuzz target to specifically test this
configuration. See [our docs on fuzzing][fuzzing-docs] for more details.</details>
[ ] If you are enabling a configuration option by default, make sure that it
has been fuzzed for at least two weeks before turning it on by default.[fuzzing-config]: https://github.com/bytecodealliance/wasmtime/blob/ca0e8d0a1d8cefc0496dba2f77a670571d8fdcab/crates/fuzzing/src/generators.rs#L182-L194
[fuzzing-docs]: https://docs.wasmtime.dev/contributing-fuzzing.html
<details>
To modify this label's message, edit the <code>.github/label-messager/wasmtime-config.md</code> file.
To add new label messages or remove existing label messages, edit the
<code>.github/label-messager.json</code> configuration file.</details>
MarinPostma updated PR #9970.
MarinPostma updated PR #9970.
MarinPostma updated PR #9970.
MarinPostma edited PR #9970:
this PR enable the thread feature for x64 in Winch, and implements atomic loads. This includes:
i32.atomic.load8_u
i32.atomic.load16_u
i32.atomic.load
i64.atomic.load8_u
i64.atomic.load16_u
i64.atomic.load32_u
i64.atomic.load
It also enabled shared memory for winch.
https://github.com/bytecodealliance/wasmtime/issues/9734
reopened from https://github.com/bytecodealliance/wasmtime/pull/9954 because the branch was wrong
MarinPostma commented on PR #9970:
I have enabled shared memory in winch, and updated the spec tests
saulecabrera submitted PR review:
Thanks!
saulecabrera merged PR #9970.
Last updated: Jan 24 2025 at 00:11 UTC