-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Fix arm64 scalar intrinsic use with small arguments #73876
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
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 |
@@ -866,6 +866,11 @@ struct HWIntrinsic final | |||
{ | |||
baseType = node->TypeGet(); | |||
} | |||
|
|||
if (category == HW_Category_Scalar) |
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.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
emitActualTypeSize
in the scalar case;this also uses
genActualType
to get the "actual" type of smalltypes when deciding the intrinsic base type, used in codegen.
Fixes #73804