Winch atomic loads x64#9970
Conversation
| ty: WasmValType, | ||
| size: OperandSize, | ||
| sextend: Option<ExtendKind>, | ||
| atomic: bool, |
There was a problem hiding this comment.
Rather than a bool, which can be error-prone, could you define a small enum WasmLoadKind { Regular, Atomic } or similar and match on it in this function?
| _size: OperandSize, | ||
| _sextend: Option<ExtendKind>, | ||
| ) -> Result<()> { | ||
| todo!() |
There was a problem hiding this 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 in aarch64)
I believe we have CodeGenError::unimplemented_masm_instruction()
| // The guarantees of the x86-64 memory model ensure that `SeqCst` | ||
| // loads are equivalent to normal loads. |
There was a problem hiding this 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 the CodeGen module:
We could simplify to:
- Extending
emit_wasm_loadto take in a load kind - Performing the right dispatch directly from that method to the MacroAssembler, by passing the in-scope load kind.
There was a problem hiding this comment.
sure i'll do that
|
comments addressed |
|
I'll fix the test tommorow. |
Subscribe to Label ActionDetailsThis 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:
To subscribe or unsubscribe from this label, edit the |
Label Messager: wasmtime:configIt looks like you are changing Wasmtime's configuration options. Make sure to
DetailsTo modify this label's message, edit the To add new label messages or remove existing label messages, edit the |
|
I have enabled shared memory in winch, and updated the spec tests |
this PR enable the thread feature for x64 in Winch, and implements atomic loads. This includes:
i32.atomic.load8_ui32.atomic.load16_ui32.atomic.loadi64.atomic.load8_ui64.atomic.load16_ui64.atomic.load32_ui64.atomic.loadIt also enabled shared memory for winch.
#9734
reopened from #9954 because the branch was wrong