Repository navigation
Arm64-SVE: Support Vector<T> as element of an array - #133943
snickolls-arm wants to merge 4 commits into
Conversation
Convert GenTreeIndexAddr::gtElemSize from `unsigned` to `ValueSize` to allow reasoning on a runtime evaluated size. When indexing `Vector<T>[]`, scale the index by `Sve.Count8BitElements` at runtime before accessing.
|
Azure Pipelines: Successfully started running 8 pipeline(s). 8 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
|
cc: @dotnet/arm64-contrib @SwapnilGaikwad @dhartglassMSFT |
|
The failures on x64 superpmi seem consistent, I will need to look into these. It's failing at codegen in |
|
@dhartglassMSFT PTAL. |
These seem to have been fixed by #135327 |
| buildInternalIntRegisterDefForNode(tree); | ||
| if (!tree->AsIndexAddr()->Index()->TypeIs(TYP_I_IMPL) && | ||
| !(isPow2(tree->AsIndexAddr()->gtElemSize) && (tree->AsIndexAddr()->gtElemSize <= 32768))) | ||
| !varTypeHasUnknownSize(tree->AsIndexAddr()->gtElemType) && |
There was a problem hiding this comment.
Do we still need to widen here if Index is not TYP_I_IMPL? Because the expansion in codegenarmarch.cpp uses 64b madd (or if we need some kind of zero extend along that path)
| uint64_t data = *reinterpret_cast<uint64_t*>(&add); | ||
| unsigned hash = old; | ||
| hash = genTreeHashAdd(hash, (unsigned)data); | ||
| hash = genTreeHashAdd(hash, (unsigned)(data >> sizeof(unsigned))); |
There was a problem hiding this comment.
Nit, think you meant (data >> (8 * sizeof(unsigned)))
| } | ||
| else | ||
| { | ||
| *pInxVN = inxVN; |
There was a problem hiding this comment.
can constIndexOffset be non-zero here? If not, can you assert? (Think this code might need to take nonzero const index into account)
Convert GenTreeIndexAddr::gtElemSize from
unsignedtoValueSizeto allow reasoning on a runtime evaluated size.When indexing
Vector<T>[], scale the index bySve.Count8BitElementsat runtime before accessing.