[Arm64] Implement Store Hardware Intrinsic#33535
Conversation
|
Note regarding the This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change. |
…d.cs AdvSimd.PlatformNotSupported.cs
… base type in hwintrinsic.cpp
...braries/System.Runtime.Intrinsics.Experimental/ref/System.Runtime.Intrinsics.Experimental.cs
Show resolved
Hide resolved
…argument base type in hwintrinsic.cpp" Also update Compiler::getBaseTypeFromArgIfNeeded and annotate Store* methods in hwintrinsiclistxarch.h with HW_Flag_BaseTypeFromSecondArg
|
Any other feedback here? |
So for the single element versions of e.g. will generate a For big-endian we do generate the |
Thank you for your feedback @TamarChristinaArm I am leaning towards keeping |
CarolEidt
left a comment
There was a problem hiding this comment.
LGTM - nice to see so much of it being table-driven. Most of my time reviewing was reading the manual!
No there isn't a performance difference in instructions themselves, so that's fine for now. |
Interestingly, Visual C++ 2019 compiles the following functions __declspec(noinline)
void foo(int32x4_t v, int32_t* a)
{
return vst1q_s32(a, v);
}
__declspec(noinline)
void bar(int32x2_t v, int32_t* a)
{
return vst1_s32(a, v);
}into ?foo@@YAXT__n128@@PEAH@Z:
0000000140001158: 4C007800 st1 {v0.4s},[x0]
000000014000115C: D65F03C0 ret
?bar@@YAXT__n64@@PEAH@Z:
0000000140001160: 0C007800 st1 {v0.2s},[x0]
0000000140001164: D65F03C0 ret |
hmm yeah I only checked |
Implements Store Arm64 hardware intrinsic
Fixes #24771
Also addresses Brian's feedback and partly Bruce's feedback received on #33461
I decided to have a separate PR for @BruceForstall suggestions concerning finding a proper names for
emitDispVectorElemListand other functions.