Bring back JIT support for core Vector64/128/256/512 APIs #103177
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As per the discussion in #103150, the basic building blocks (
Vector64/128/256/512<T>
andVector<T>
) should stay intrinsic in the JIT.This doesn't bring back "all" APIs, but rather the core ones that are expected to see the heaviest usage. In general, the rule I followed on deciding what to bring back vs not was that if it was a general API that was a 1-to-1 forward to another intrinsic and didn't get any other specialization it was fine to leave in managed
So while it brings back ones like
get_Zero
andAs
, it doesn't bring backAnd
(forwards toop_BitwiseAddition
),Add
(forwards toop_Addition
), orLoad
(forwards toLoadUnsafe
).As per the discussion,
Vector2
,Vector3
,Vector4
,Quaternion
, andPlane
remain implemented in managed.