riscv64: Implement SIMD floating point conversion instructions #6924
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
👋 Hey,
This PR implements the floating point conversion instructions (
fvdemote
,fvpromote_low
,fcvt_{to,from}_{u,s}int{,_sat}
) on the RISC-V backend.Almost all instructions match 1-to-1 with the WASM spec, except
fcvt_to_{u,s}int_sat
, where NaN's need to be manually zeroed out. And onfvdemote
RISC-V leaves the upper lanes undefined, so we also zero them out manually.🎉 With this PR we now have SIMD fully implemented for RISC-V🎉
There is 1 test that is not passing yet, but I think that is due to a NaN payload bit mismatch that is allowed by the spec. But I'm going to open a separate issue to confirm that.
(This PR is built on top of #6920 so we need to merge that one first)