JIT ARM64-SVE: Add Sve.LoadVector*FirstFaulting APIs#104964
JIT ARM64-SVE: Add Sve.LoadVector*FirstFaulting APIs#104964amanasifkhalid merged 108 commits intodotnet:mainfrom
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.
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.
kunalspathak
left a comment
There was a problem hiding this comment.
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: