alexcrichton opened PR #6025 from splat
to main
:
This commit goes through the lowerings for the CLIF
splat
instruction and improves the support for each operator. Many of these lowerings are mirrored from v8/SpiderMonkey and there are a number of improvements:
- AVX2
v{p,}broadcast*
instructions are added and used when available.- Float-based splats are much simpler and always a single-instruction
- Integer-based splats don't insert into an uninit xmm value and instead start out with a
movd
to move into anxmm
register. This thoeretically breaks dependencies with prior instructions sincemovd
creates a fresh new value in the destination register.- Loads are now sunk into all of the instructions. A new extractor,
sinkable_load_exact
, was added to sink the i8/i16 loads.<!--
Please ensure that the following steps are all taken care of before submitting
the PR.
[ ] This has been discussed in issue #..., or if not, please tell us why
here.[ ] A short description of what this does, why it is needed; if the
description becomes long, the matter should probably be discussed in an issue
first.[ ] This PR contains test cases, if meaningful.
- [ ] A reviewer from the core maintainer team has been assigned for this PR.
If you don't know who could review this, please indicate so. The list of
suggested reviewers on the right can help you.Please ensure all communication adheres to the code of conduct.
-->
fitzgen submitted PR review.
alexcrichton updated PR #6025 from splat
to main
.
alexcrichton has enabled auto merge for PR #6025.
alexcrichton merged PR #6025.
Last updated: Dec 23 2024 at 13:07 UTC