Don't always do optimistic HW intrinsic expansion #89282
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.
"Optimistic" expansion means we generate a method body for
IsSupported
that returns true/false depending on the currently running CPU.Don't do this when
--instruction-set:native
was specified becausenative
should mean "exactly this, as if I was using a JIT". Also don't do this when optimizing for size (saves 0.6% on hello world). I was going back and forth whether to do this when user specifies instruction sets manually, but it would be a "breaking" change to pull out the optimistic part.I also though about #87865 (comment) (adding
?
), but that one would have odd failure modes--instruction-set:avx?
is not supportable by RyuJIT and there are others. The rules are bespoke.Cc @dotnet/ilc-contrib