Fix arm64 scalar intrinsic use with small arguments#73876
Fix arm64 scalar intrinsic use with small arguments#73876BruceForstall merged 1 commit intodotnet:mainfrom
Conversation
The code already uses `emitActualTypeSize` in the scalar case; this also uses `genActualType` to get the "actual" type of small types when deciding the intrinsic base type, used in codegen. Fixes dotnet#73804
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThe code already uses Fixes #73804
|
|
@tannergooding @dotnet/jit-contrib PTAL |
| baseType = node->TypeGet(); | ||
| } | ||
|
|
||
| if (category == HW_Category_Scalar) |
There was a problem hiding this comment.
What about the HW_Category_Special category? Likely the above three cases that get a type via GenTree::TypeGet should be changed to use genActualType(tree) instead.
There was a problem hiding this comment.
I was trying to make a targeted change, and hadn't fully investigated all the processing that "Special" nodes have. It turns out that this class is only used on arm64, and the only "special" instruction is "Yield", which has no arguments, and for which the "baseType" is ignored. So I could just make the genActualType unconditional as you suggest.
|
@BruceForstall @jakobbotsch can this PR be merged now? |
I am ok with merging this as is if you are blocked on this. |
|
@BruceForstall @jakobbotsch thank you both! |
The code already uses
emitActualTypeSizein the scalar case;this also uses
genActualTypeto get the "actual" type of smalltypes when deciding the intrinsic base type, used in codegen.
Fixes #73804