-
Notifications
You must be signed in to change notification settings - Fork 5.2k
JIT ARM64-SVE: Add Sve.LoadVector*FirstFaulting APIs #104964
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
…ectorFirstFaulting.
…ly without the FirstFaulting test. Added SveFfrTest template.
|
Note regarding the |
|
Note regarding the |
|
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics |
|
@tannergooding, @dotnet/arm64-contrib, this is ready for code review. |
| TestLibrary.TestFramework.BeginScenario(nameof(ConditionalSelect_ZeroOp)); | ||
| ConditionalSelectScenario(_mask, ref _fld1, {Op1VectorType}<{RetBaseType}>.Zero); | ||
| ConditionalSelectScenario(_mask, _dataTable.inArray1Ptr, {Op1VectorType}<{RetBaseType}>.Zero); |
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.
why this change?
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.
why this change?
It's tied to other changes in the file, let me try to explain:
- In case of this template
{Op1BaseType}and{Op2BaseType}are the types of themaskandaddressarguments accordingly. Prior to this changeValidateConditionalSelectResultused to accept a vector/array of{Op1BaseType}elements as the firstfirstOp(data) argument. This was correct as long as{Op1BaseType}and{Op2BaseType}are same which used to be true any more. This change addsLoadVector*FirstFaultingAPIs for which this doesn't hold true. This explains changes at lines324-339of this file. - Due to the change
1in the signature ofValidateConditionalSelectResult, the second parameter must be passed as{Op2BaseType*}which leads to the change at line279. - Since
{Op1BaseType}and{Op2BaseType}may differ now,_fld1which has{Op1VectorType}<{RetBaseType}>type can't be passes toValidateConditionalSelectResult. To overcome this, this change replace it with_dataTable.inArray1Ptrofvoid *type at lines264-270. (Also_fld1is assigned a return value ofLoadVector*FirstFaultingat line234which is perfectly fine). - Because of
3, the signature ofConditionalSelectScenariowas changed at line274.
Please let me know if you would like to get more details on this or think this should be implemented another way.
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 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. Can you please confirm all the `FirstFaulting tests, including the one that @TIHan added pass (with stress)? @amanasifkhalid - once we get the confirmation about the tests, this should be ready to merge.
All Output |
Contributes to #99957
Adds:
LoadVectorByteZeroExtendFirstFaultingLoadVectorUInt16ZeroExtendFirstFaultingLoadVectorUInt32ZeroExtendFirstFaultingLoadVectorInt16SignExtendFirstFaultingLoadVectorInt32SignExtendFirstFaultingLoadVectorSByteSignExtendFirstFaultingTesting
The added APIs successfully pass stress testing: