Expose various new Create and conversion APIs for the Vector types#103462
Expose various new Create and conversion APIs for the Vector types#103462tannergooding merged 6 commits intodotnet:mainfrom
Conversation
|
Note regarding the |
1 similar comment
|
Note regarding the |
| SIMD_AS_HWINTRINSIC_ID(VectorT, ConvertToUInt32Native, 1, {NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_VectorT_ConvertToUInt32Native, NI_Illegal}, SimdAsHWIntrinsicFlag::None) | ||
| SIMD_AS_HWINTRINSIC_ID(VectorT, ConvertToUInt64, 1, {NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_VectorT_ConvertToUInt64}, SimdAsHWIntrinsicFlag::None) | ||
| SIMD_AS_HWINTRINSIC_ID(VectorT, ConvertToUInt64Native, 1, {NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_Illegal, NI_VectorT_ConvertToUInt64Native}, SimdAsHWIntrinsicFlag::None) | ||
| SIMD_AS_HWINTRINSIC_NM(VectorT, CreateBroadcast, ".ctor", 2, {NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast, NI_VectorT_CreateBroadcast}, SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1) |
There was a problem hiding this comment.
With this PR, the only remaining simdashwintrinsic importation handling is for Vector<T>.
After this PR is merged, we can take advantage of that fact and change the importation logic a bit. Namely, since we've moved towards having parity across Vector<T> and Vector64/128/256/512<T> we can special case Vector<T> to import as if it were Vector128/256/512<T> instead (based on its size), allowing us to remove simdashwintrinsic in its entirety and just defer down a single path.
|
Will use |
Not in this PR, but I will be getting it updated in a separate PR. There is some additional work required to get the different overloads of |
|
CC. @dotnet/jit-contrib, this is ready for review. Removes the rest of the Vector2/3 handling from simdashwintrinsic and adds some of the new xplat APIs that were approved. |
|
Non-mono additional regressions: |
|
The "regression" here is because we aren't constant folding the call to |
|
mono wasm interpreter regressions here dotnet/perf-autofiling-issues#36484 |
This resolves #92299 and #94384