-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Convert STORE_BLK into STORIND for SIMD #116265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Adds a hardware‐intrinsics path to transform zero‐init and const‐init SIMD stores from STORE_BLOCK
to STORE_IND
, using a vector constant node for better coalescing.
- Introduces
FEATURE_HW_INTRINSICS
guard with const‐value handling - Builds a
GenTreeVecCon
from a byte‐filledsimd_t
and replaces the original init node - Changes the block operation to
GT_STOREIND
and invokes common lowering
@jakobbotsch @dotnet/jit-contrib small change if we have |
hm.. oops, some unexpected diffs on arm64, let me take a look UPD: I've just disabled it on arm64, SIMD stores can't be merged on arm64 anyway + arm64 has zero-reg |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple of nits, and the TODO-CQ in the function header can be removed now I think. Otherwise LGTM.
Co-authored-by: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Closes #116258
STORE_IND<SIMD*>
is more coalescing-friendlySome minor diffs