-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Accelerate System.Half arithmetic and conversions with FP16 #130512
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
Merged
tannergooding
merged 48 commits into
dotnet:main
from
tannergooding:tannergooding-accelerate-half-fp16
Aug 10, 2026
Merged
Changes from 33 commits
Commits
Show all changes
48 commits
Select commit
Hold shift + click to select a range
ec68eb0
Add internal TYP_HALF JIT type for FP16 acceleration
tannergooding 09529f8
Add AVX10v1 FP16 scalar hwintrinsic table entries and TYP_HALF ins slot
tannergooding 0e31957
Wire up FP16 scalar instruction flags, EVEX map asserts, and perfscore
tannergooding 36b6796
Wire up FP16 scalar codegen, lowering, and LSRA for AVX10v1
tannergooding 0a10f92
Accelerate System.Half arithmetic via AVX10v1 using the F16C premise
tannergooding 8fffc3d
Add TYP_HALF ins slot to the ARM64 SVE hwintrinsic table
tannergooding 2c03606
Handle AVX10v1 FP16 scalar intrinsics in HWIntrinsic costing and embe…
tannergooding d2caf2f
Fix doubled-v display name for the FP16 scalar fmadd instructions
tannergooding 1a4337c
Fix swapped Ceiling/Floor rounding mode for Half RoundScaleScalar
tannergooding 914b9b2
Don't accelerate Half.Min/Max with raw vminsh/vmaxsh
tannergooding cb53880
Don't redundantly check AVX10v2 alongside AVX10v1 in emitxarch asserts
tannergooding bd28667
Rebind Half to ushort internally instead of adding TYP_HALF
tannergooding aa11831
Fix register width display for AVX10v1 Half convert intrinsics
tannergooding 6ed0cf7
Add internal Arm64 Fp16 instruction set for Half acceleration
tannergooding 9336392
Detect Arm64 FEAT_FP16 and expose the internal Fp16 ISA to the JIT
tannergooding 739d2f3
Add Arm64 emitter support for scalar half-precision floating-point
tannergooding 90b53ce
Add Arm64 internal Fp16 hardware intrinsic table entries
tannergooding 55fcb5a
Add Arm64 importer support for accelerating System.Half
tannergooding 838b8d4
Add Arm64 codegen for Fp16 compare and conversion intrinsics
tannergooding 75d41fd
Accelerate Arm64 Half<->float/double conversions at the FP baseline
tannergooding 6f36102
Merge remote-tracking branch 'dotnet/main' into tannergooding-acceler…
tannergooding 9da051c
Wire up Half constant getters and fix the class handle used for gener…
tannergooding a4a1fdd
Use the standard TODO- prefix for the Half rounding follow-up comments
tannergooding 6dd01c1
Fix Arm64 FP16 scalar frecpe/frsqrte encoding and add Half reciprocal…
tannergooding 7e3c4f9
Use unordered Half compares and fix packed FP16 FMA disasm mnemonics
tannergooding 900e2e0
Potential fix for pull request finding
tannergooding 428116a
Merge remote-tracking branch 'dotnet/main' into tannergooding-acceler…
tannergooding cd98756
Merge branch 'main' into tannergooding-accelerate-half-fp16
tannergooding d3731e8
Merge branch 'main' into tannergooding-accelerate-half-fp16
tannergooding 074a5a1
Merge remote-tracking branch 'dotnet/main' into tannergooding-acceler…
tannergooding f578dcf
Merge branch 'main' into tannergooding-accelerate-half-fp16
tannergooding 9016acc
Use the float compare path for Half on Arm64 as well
tannergooding 2d41404
Detect Arm64 FEAT_FP16 on Windows via IsProcessorFeaturePresent
tannergooding 48825a4
Merge remote-tracking branch 'dotnet/main' into tannergooding-acceler…
tannergooding ec2f279
Bump NEXT_AVAILABLE_R2R_BIT and add FMSUB/FNMSUB emitter tests
tannergooding f614605
Mark the FP16 FMA instructions as IsDstDstSrcAVXInstruction
tannergooding bc2a60a
Merge remote-tracking branch 'dotnet/main' into tannergooding-acceler…
tannergooding 42267e0
Merge remote-tracking branch 'dotnet/main' into tannergooding-acceler…
tannergooding d9b6af9
Fix side-effect ordering when importing multi-operand Half intrinsics
tannergooding 64f4717
Don't intrinsify Half to integer conversions on x64
tannergooding a1d73e6
Fix Half.FusedMultiplyAdd rounding to match a true FP16 FMA
tannergooding 96513fb
Keep vfmulcph/vfmulcsh out of the AVX10v1 FMA RMW range
tannergooding 6641a6d
Move internal ArmBase conversions out of the name lookup range
tannergooding d307d6c
Add Half conversion, arithmetic, comparison and rounding tests
tannergooding 40b63e5
Merge remote-tracking branch 'dotnet/main' into tannergooding-acceler…
tannergooding f14da77
Fix Mono floating-point to uint infinity conversion
tannergooding d49c475
Fix Mono floating-point to ulong infinity conversion
tannergooding 47f7446
Skip Half integer conversion test on Mono
tannergooding File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.