Uh oh!
There was an error while loading. Please reload this page.
Add support for Sve.Store() - #102262
Conversation
ghost
commented
May 15, 2024
Note regarding the |
SwapnilGaikwad
commented
May 15, 2024
@a74nh@kunalspathak @dotnet/arm64-contrib @arch-arm64-sve |
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics |
kunalspathak
left a comment
There was a problem hiding this comment.
This is a big PR and thanks for working on it. Overall, looks good except some nit comments. Also, please run the tests, including the stress tests and share the results.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| break; | ||
| } | ||
| case NI_Sve_Store: |
There was a problem hiding this comment.
Looking at #102180 reminded me that we can do the following....
For NI_Sve_Store remove the Special Code Gen flag and this case statement. This will cause the generic code to call emitIns_R_R_R().
You can now add a special case in emitIns_R_R_R() so that for NI_Sve_Store it just calls down to emitIns_R_R_R_I() with 0 for the immediate. Eg:
runtime/src/coreclr/jit/emitarm64sve.cpp
Line 4377 in 692660e
There was a problem hiding this comment.
Curious...
NI_AdvSimd_Store uses gtNewSimdStoreNode() which eventually gets generated in genCodeForStoreInd(). This has extra code, for example, isvolatile checks.
Meanwhile NI_AdvSimd_StoreSelectedScalar imports like a normal hwintrinsic and gets generated in hwintrinsiccodegenarm64.cpp. This is the same for the various other stores.
Is there a special reason for using genCodeForStoreInd?
Why do the other stores not use genCodeForStoreInd?
Should NI_Sve_Store use genCodeForStoreInd?
There was a problem hiding this comment.
I will have to double check on this one. Opened #102347
Stress tests didn't flag anything |
kunalspathak
commented
May 16, 2024
As noted in #102180 (comment), these should be https://dougallj.github.io/asil/doc/st4d_z_p_bi_64.html Similar API was named as |
Uh oh!
There was an error while loading. Please reload this page.
| break; | ||
| } | ||
| case NI_Sve_Store: |
There was a problem hiding this comment.
I will have to double check on this one. Opened #102347
Uh oh!
There was an error while loading. Please reload this page.
* Add support for Sve.Store() * Fix formatting issues * Remove incorrect instructions from comment * Rename Sve.Store() -> Sve.StoreAndZip() * Refactor test templates
* Add support for Sve.Store() * Fix formatting issues * Remove incorrect instructions from comment * Rename Sve.Store() -> Sve.StoreAndZip() * Refactor test templates

Contribute towards #99957.