-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
JIT: Added SVE Prefetch*
APIs.
#103094
JIT: Added SVE Prefetch*
APIs.
#103094
Conversation
Note regarding the
|
Note regarding the
|
@@ -4940,6 +4945,22 @@ public enum SveMaskPattern : byte | |||
LargestMultipleOf3 = 30, // The largest multiple of 3. | |||
All = 31 // All available (implicitly a multiple of two). | |||
}; | |||
|
|||
public enum SvePrefetchType : byte |
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.
@kunalspathak @tannergooding was this enum type approved? I ask because of the SV_PLDL1KEEP
names.
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 see a note here about they not approved? @tannergooding can you confirm?
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.
#97831 approved the Prefetch*
APIs.
The enum should have been approved as part of that, but wasn't looked at directly.
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.
The enum names are different and were approved in #94007 (comment)
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.
@TIHan - can you update the names accordingly?
@dotnet/arm64-contrib @kunalspathak this is ready. There is no visible output to validate since this instruction is intended to be a hint.
|
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics |
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.
added some comments.
@@ -4940,6 +4945,22 @@ public enum SveMaskPattern : byte | |||
LargestMultipleOf3 = 30, // The largest multiple of 3. | |||
All = 31 // All available (implicitly a multiple of two). | |||
}; | |||
|
|||
public enum SvePrefetchType : byte |
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 see a note here about they not approved? @tannergooding can you confirm?
src/tests/JIT/HardwareIntrinsics/Arm/Shared/SvePrefetchTest.template
Outdated
Show resolved
Hide resolved
src/tests/JIT/HardwareIntrinsics/Arm/Shared/SvePrefetchTest.template
Outdated
Show resolved
Hide resolved
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.cs
Outdated
Show resolved
Hide resolved
also, need to handle immediate value and table generation logic. |
@a74nh - so for this API, there is no visual side effect, so wondering how do we test it? also, values 6 and 7 seems invalid(?) but we are not sure how to validate it. |
I'm not sure if there is anything we can test for. We can't read the setting back from the system.
We can't pass 6 or 7 as an immediate as C# compile will fail. So this only applies where it's in a variable, and we generate the lookup table. Testing this in C++ asm, prfw with 6 or 7 doesn't cause an error when run. So, I don't think we should do anything special, and keep this patch as is. |
src/tests/JIT/HardwareIntrinsics/Arm/Shared/SvePrefetchTest.template
Outdated
Show resolved
Hide resolved
Depends how you define valid :) |
@kunalspathak this is ready again. #103288 will need to be merged first before this one. |
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.
There is some left over code that I don't think is needed. Also we should generalize the test template.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/SvePrefetchTest.template
Outdated
Show resolved
Hide resolved
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.
LGTM. Thanks!
Woo! |
Contributes to #99957
Adds:
PrefetchBytes
PrefetchInt16
PrefetchInt32
PrefetchInt64