Add SHA3 and SVE SHA3 APIs - #126941

Merged
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github
Jun 29, 2026
Merged

Add SHA3 and SVE SHA3 APIs#126941
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github

Conversation

@a74nh

Copy link
Copy Markdown
Contributor

Fixes#98692
Fixes#94425

CopilotAI review requested due to automatic review settings April 15, 2026 09:09
@dotnet-policy-servicedotnet-policy-serviceBot added linkable-framework Issues associated with delivering a linker friendly framework community-contribution Indicates that the PR has been added by a community member labels Apr 15, 2026
@a74nh

Copy link
Copy Markdown
ContributorAuthor

@dhartglassMSFT @dotnet/arm64-contrib

@a74nh

Copy link
Copy Markdown
ContributorAuthor

hardware-intrinsics-arm64

This is erroring with:

##[error]Pipeline does not have permissions to use the referenced pool(s) NetCore-Public. For authorization details, refer to https://aka.ms/yamlauthz.

Comment threadsrc/coreclr/jit/hwintrinsiclistarm64.h Outdated
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h
@a74nh
a74nh requested review from Copilot and removed request for CopilotJune 17, 2026 09:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new ARM64 hardware intrinsics for Sha3 and SveSha3 (including JIT recognition/codegen paths) and wires up corresponding generated JIT tests.

Changes:

  • Introduces System.Runtime.Intrinsics.Arm.Sha3 and System.Runtime.Intrinsics.Arm.SveSha3 APIs (ref + implementation + linker substitutions).
  • Extends CoreCLR JIT intrinsic tables and codegen to support Sha3/SveSha3 instructions (including immediates and containment).
  • Adds generated test groups/projects and helper methods for validating Sha3/SveSha3 behaviors.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 7 comments.

Show a summary per file
FileDescription
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_ro.csprojAdds optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_r.csprojAdds non-optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.csAdds test entrypoint scaffold for SveSha3 tests.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.csLogs new Sha3/SveSha3 ISA support flags.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.csAdds helper ops used by Sha3/SveSha3 test validation.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_ro.csprojAdds optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_r.csprojAdds non-optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.csAdds test entrypoint scaffold for Sha3 tests.
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.csHooks new Sha3/SveSha3 test groups into generator flow.
src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.csAdds SveSha3Inputs test group definitions.
src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.csAdds Sha3Inputs test group definitions.
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.csAdds public surface area definitions for Sha3/SveSha3.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.csAdds CoreLib implementation stub for SveSha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.PlatformNotSupported.csAdds non-supported fallback stubs for SveSha3 APIs.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.csAdds CoreLib implementation stub for Sha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.PlatformNotSupported.csAdds non-supported fallback stubs for Sha3 APIs.
src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitemsIncludes new Sha3/SveSha3 files in CoreLib build.
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoArmIntrinsics.xmlStubs IsSupported for new ISAs when Arm intrinsics are disabled.
src/coreclr/jit/lsraarm64.cppUpdates LSRA immediate handling for new/adjusted intrinsics.
src/coreclr/jit/lowerarmarch.cppAdds containment handling for Sha3 immediate operand.
src/coreclr/jit/hwintrinsiclistarm64sve.hDefines SveSha3 intrinsic list entry for RAX1.
src/coreclr/jit/hwintrinsiclistarm64.hDefines Sha3 intrinsic list entries (BCAX/EOR3/RAX1/XAR).
src/coreclr/jit/hwintrinsiccodegenarm64.cppExtends codegen to support 3-arg immediates and Sha3 opt selection.
src/coreclr/jit/hwintrinsicarm64.cppAdds immediate bounds for Sha3 XAR.
src/coreclr/jit/hwintrinsic.cppEnables ISA ranges for Sha3 and SveSha3.
Comments suppressed due to low confidence (4)

src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1

  • The generated validation expression uses &~ inside a C# source string (e.g. secondOp[i] &~ thirdOp[i]), which is not valid C# syntax and will cause generated tests to fail compilation. Update these ValidateIterResult strings to use & ~thirdOp[i] (with a space) and keep the intended parentheses.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • Templates.VecBinOpTest is a binary-op template but this entry supplies NextValueOp3. If the template doesn't expect an Op3 key, this can cause confusion or template failures; if it ignores extra keys, it still makes this test definition misleading. Remove NextValueOp3 from this dictionary (or switch to a ternary-op template if three inputs are actually needed).

Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.cs Outdated
Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.cs Outdated
CopilotAI review requested due to automatic review settings June 17, 2026 13:49
@a74nh
a74nh removed the request for review from MichalStrehovskyJune 18, 2026 08:36
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h Outdated
Comment threadsrc/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Outdated
@dhartglassMSFT

dhartglassMSFT commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Hi @a74nh the JIT changes + tests LGTM

@tannergooding can you take a glance at the libraries/* changes here? It is mostly boilerplate

@dhartglassMSFT

Copy link
Copy Markdown
Contributor

Pinging @tannergooding to look at some mostly boilerplate libs changes.

@tannergooding
tannergooding enabled auto-merge (squash) June 29, 2026 14:58
@tannergooding
tannergooding merged commit 21b722d into dotnet:mainJun 29, 2026
181 of 183 checks passed
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview7 milestone Jun 30, 2026
@a74nh
a74nh deleted the sha3_github branch June 30, 2026 10:36
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
Fixes#98692Fixes#94425
---------
Co-authored-by: dhartglassMSFT <dhartglass+github@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 31, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Runtime.Intrinsicscommunity-contributionIndicates that the PR has been added by a community memberlinkable-frameworkIssues associated with delivering a linker friendly framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[API Proposal]: Arm64: FEAT_SHA3 [API Proposal]: Arm64: FEAT_SVE_SHA3

4 participants

@a74nh@dhartglassMSFT@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add SHA3 and SVE SHA3 APIs - #126941

Merged
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github
Jun 29, 2026
Merged

Add SHA3 and SVE SHA3 APIs#126941
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github

Conversation

@a74nh

Copy link
Copy Markdown
Contributor

Fixes#98692
Fixes#94425

CopilotAI review requested due to automatic review settings April 15, 2026 09:09
@dotnet-policy-servicedotnet-policy-serviceBot added linkable-framework Issues associated with delivering a linker friendly framework community-contribution Indicates that the PR has been added by a community member labels Apr 15, 2026
@a74nh

Copy link
Copy Markdown
ContributorAuthor

@dhartglassMSFT @dotnet/arm64-contrib

@a74nh

Copy link
Copy Markdown
ContributorAuthor

hardware-intrinsics-arm64

This is erroring with:

##[error]Pipeline does not have permissions to use the referenced pool(s) NetCore-Public. For authorization details, refer to https://aka.ms/yamlauthz.

Comment threadsrc/coreclr/jit/hwintrinsiclistarm64.h Outdated
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h
@a74nh
a74nh requested review from Copilot and removed request for CopilotJune 17, 2026 09:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new ARM64 hardware intrinsics for Sha3 and SveSha3 (including JIT recognition/codegen paths) and wires up corresponding generated JIT tests.

Changes:

  • Introduces System.Runtime.Intrinsics.Arm.Sha3 and System.Runtime.Intrinsics.Arm.SveSha3 APIs (ref + implementation + linker substitutions).
  • Extends CoreCLR JIT intrinsic tables and codegen to support Sha3/SveSha3 instructions (including immediates and containment).
  • Adds generated test groups/projects and helper methods for validating Sha3/SveSha3 behaviors.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 7 comments.

Show a summary per file
FileDescription
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_ro.csprojAdds optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_r.csprojAdds non-optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.csAdds test entrypoint scaffold for SveSha3 tests.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.csLogs new Sha3/SveSha3 ISA support flags.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.csAdds helper ops used by Sha3/SveSha3 test validation.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_ro.csprojAdds optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_r.csprojAdds non-optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.csAdds test entrypoint scaffold for Sha3 tests.
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.csHooks new Sha3/SveSha3 test groups into generator flow.
src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.csAdds SveSha3Inputs test group definitions.
src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.csAdds Sha3Inputs test group definitions.
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.csAdds public surface area definitions for Sha3/SveSha3.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.csAdds CoreLib implementation stub for SveSha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.PlatformNotSupported.csAdds non-supported fallback stubs for SveSha3 APIs.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.csAdds CoreLib implementation stub for Sha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.PlatformNotSupported.csAdds non-supported fallback stubs for Sha3 APIs.
src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitemsIncludes new Sha3/SveSha3 files in CoreLib build.
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoArmIntrinsics.xmlStubs IsSupported for new ISAs when Arm intrinsics are disabled.
src/coreclr/jit/lsraarm64.cppUpdates LSRA immediate handling for new/adjusted intrinsics.
src/coreclr/jit/lowerarmarch.cppAdds containment handling for Sha3 immediate operand.
src/coreclr/jit/hwintrinsiclistarm64sve.hDefines SveSha3 intrinsic list entry for RAX1.
src/coreclr/jit/hwintrinsiclistarm64.hDefines Sha3 intrinsic list entries (BCAX/EOR3/RAX1/XAR).
src/coreclr/jit/hwintrinsiccodegenarm64.cppExtends codegen to support 3-arg immediates and Sha3 opt selection.
src/coreclr/jit/hwintrinsicarm64.cppAdds immediate bounds for Sha3 XAR.
src/coreclr/jit/hwintrinsic.cppEnables ISA ranges for Sha3 and SveSha3.
Comments suppressed due to low confidence (4)

src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1

  • The generated validation expression uses &~ inside a C# source string (e.g. secondOp[i] &~ thirdOp[i]), which is not valid C# syntax and will cause generated tests to fail compilation. Update these ValidateIterResult strings to use & ~thirdOp[i] (with a space) and keep the intended parentheses.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • Templates.VecBinOpTest is a binary-op template but this entry supplies NextValueOp3. If the template doesn't expect an Op3 key, this can cause confusion or template failures; if it ignores extra keys, it still makes this test definition misleading. Remove NextValueOp3 from this dictionary (or switch to a ternary-op template if three inputs are actually needed).

Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.cs Outdated
Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.cs Outdated
CopilotAI review requested due to automatic review settings June 17, 2026 13:49
@a74nh
a74nh removed the request for review from MichalStrehovskyJune 18, 2026 08:36
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h Outdated
Comment threadsrc/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Outdated
@dhartglassMSFT

dhartglassMSFT commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Hi @a74nh the JIT changes + tests LGTM

@tannergooding can you take a glance at the libraries/* changes here? It is mostly boilerplate

@dhartglassMSFT

Copy link
Copy Markdown
Contributor

Pinging @tannergooding to look at some mostly boilerplate libs changes.

@tannergooding
tannergooding enabled auto-merge (squash) June 29, 2026 14:58
@tannergooding
tannergooding merged commit 21b722d into dotnet:mainJun 29, 2026
181 of 183 checks passed
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview7 milestone Jun 30, 2026
@a74nh
a74nh deleted the sha3_github branch June 30, 2026 10:36
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
Fixes#98692Fixes#94425
---------
Co-authored-by: dhartglassMSFT <dhartglass+github@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 31, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Runtime.Intrinsicscommunity-contributionIndicates that the PR has been added by a community memberlinkable-frameworkIssues associated with delivering a linker friendly framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[API Proposal]: Arm64: FEAT_SHA3 [API Proposal]: Arm64: FEAT_SVE_SHA3

4 participants

@a74nh@dhartglassMSFT@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add SHA3 and SVE SHA3 APIs - #126941

Merged
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github
Jun 29, 2026
Merged

Add SHA3 and SVE SHA3 APIs#126941
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github

Conversation

@a74nh

Copy link
Copy Markdown
Contributor

Fixes#98692
Fixes#94425

CopilotAI review requested due to automatic review settings April 15, 2026 09:09
@dotnet-policy-servicedotnet-policy-serviceBot added linkable-framework Issues associated with delivering a linker friendly framework community-contribution Indicates that the PR has been added by a community member labels Apr 15, 2026
@a74nh

Copy link
Copy Markdown
ContributorAuthor

@dhartglassMSFT @dotnet/arm64-contrib

@a74nh

Copy link
Copy Markdown
ContributorAuthor

hardware-intrinsics-arm64

This is erroring with:

##[error]Pipeline does not have permissions to use the referenced pool(s) NetCore-Public. For authorization details, refer to https://aka.ms/yamlauthz.

Comment threadsrc/coreclr/jit/hwintrinsiclistarm64.h Outdated
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h
@a74nh
a74nh requested review from Copilot and removed request for CopilotJune 17, 2026 09:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new ARM64 hardware intrinsics for Sha3 and SveSha3 (including JIT recognition/codegen paths) and wires up corresponding generated JIT tests.

Changes:

  • Introduces System.Runtime.Intrinsics.Arm.Sha3 and System.Runtime.Intrinsics.Arm.SveSha3 APIs (ref + implementation + linker substitutions).
  • Extends CoreCLR JIT intrinsic tables and codegen to support Sha3/SveSha3 instructions (including immediates and containment).
  • Adds generated test groups/projects and helper methods for validating Sha3/SveSha3 behaviors.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 7 comments.

Show a summary per file
FileDescription
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_ro.csprojAdds optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_r.csprojAdds non-optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.csAdds test entrypoint scaffold for SveSha3 tests.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.csLogs new Sha3/SveSha3 ISA support flags.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.csAdds helper ops used by Sha3/SveSha3 test validation.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_ro.csprojAdds optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_r.csprojAdds non-optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.csAdds test entrypoint scaffold for Sha3 tests.
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.csHooks new Sha3/SveSha3 test groups into generator flow.
src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.csAdds SveSha3Inputs test group definitions.
src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.csAdds Sha3Inputs test group definitions.
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.csAdds public surface area definitions for Sha3/SveSha3.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.csAdds CoreLib implementation stub for SveSha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.PlatformNotSupported.csAdds non-supported fallback stubs for SveSha3 APIs.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.csAdds CoreLib implementation stub for Sha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.PlatformNotSupported.csAdds non-supported fallback stubs for Sha3 APIs.
src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitemsIncludes new Sha3/SveSha3 files in CoreLib build.
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoArmIntrinsics.xmlStubs IsSupported for new ISAs when Arm intrinsics are disabled.
src/coreclr/jit/lsraarm64.cppUpdates LSRA immediate handling for new/adjusted intrinsics.
src/coreclr/jit/lowerarmarch.cppAdds containment handling for Sha3 immediate operand.
src/coreclr/jit/hwintrinsiclistarm64sve.hDefines SveSha3 intrinsic list entry for RAX1.
src/coreclr/jit/hwintrinsiclistarm64.hDefines Sha3 intrinsic list entries (BCAX/EOR3/RAX1/XAR).
src/coreclr/jit/hwintrinsiccodegenarm64.cppExtends codegen to support 3-arg immediates and Sha3 opt selection.
src/coreclr/jit/hwintrinsicarm64.cppAdds immediate bounds for Sha3 XAR.
src/coreclr/jit/hwintrinsic.cppEnables ISA ranges for Sha3 and SveSha3.
Comments suppressed due to low confidence (4)

src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1

  • The generated validation expression uses &~ inside a C# source string (e.g. secondOp[i] &~ thirdOp[i]), which is not valid C# syntax and will cause generated tests to fail compilation. Update these ValidateIterResult strings to use & ~thirdOp[i] (with a space) and keep the intended parentheses.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • Templates.VecBinOpTest is a binary-op template but this entry supplies NextValueOp3. If the template doesn't expect an Op3 key, this can cause confusion or template failures; if it ignores extra keys, it still makes this test definition misleading. Remove NextValueOp3 from this dictionary (or switch to a ternary-op template if three inputs are actually needed).

Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.cs Outdated
Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.cs Outdated
CopilotAI review requested due to automatic review settings June 17, 2026 13:49
@a74nh
a74nh removed the request for review from MichalStrehovskyJune 18, 2026 08:36
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h Outdated
Comment threadsrc/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Outdated
@dhartglassMSFT

dhartglassMSFT commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Hi @a74nh the JIT changes + tests LGTM

@tannergooding can you take a glance at the libraries/* changes here? It is mostly boilerplate

@dhartglassMSFT

Copy link
Copy Markdown
Contributor

Pinging @tannergooding to look at some mostly boilerplate libs changes.

@tannergooding
tannergooding enabled auto-merge (squash) June 29, 2026 14:58
@tannergooding
tannergooding merged commit 21b722d into dotnet:mainJun 29, 2026
181 of 183 checks passed
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview7 milestone Jun 30, 2026
@a74nh
a74nh deleted the sha3_github branch June 30, 2026 10:36
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
Fixes#98692Fixes#94425
---------
Co-authored-by: dhartglassMSFT <dhartglass+github@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 31, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Runtime.Intrinsicscommunity-contributionIndicates that the PR has been added by a community memberlinkable-frameworkIssues associated with delivering a linker friendly framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[API Proposal]: Arm64: FEAT_SHA3 [API Proposal]: Arm64: FEAT_SVE_SHA3

4 participants

@a74nh@dhartglassMSFT@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add SHA3 and SVE SHA3 APIs - #126941

Merged
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github
Jun 29, 2026
Merged

Add SHA3 and SVE SHA3 APIs#126941
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github

Conversation

@a74nh

Copy link
Copy Markdown
Contributor

Fixes#98692
Fixes#94425

CopilotAI review requested due to automatic review settings April 15, 2026 09:09
@dotnet-policy-servicedotnet-policy-serviceBot added linkable-framework Issues associated with delivering a linker friendly framework community-contribution Indicates that the PR has been added by a community member labels Apr 15, 2026
@a74nh

Copy link
Copy Markdown
ContributorAuthor

@dhartglassMSFT @dotnet/arm64-contrib

@a74nh

Copy link
Copy Markdown
ContributorAuthor

hardware-intrinsics-arm64

This is erroring with:

##[error]Pipeline does not have permissions to use the referenced pool(s) NetCore-Public. For authorization details, refer to https://aka.ms/yamlauthz.

Comment threadsrc/coreclr/jit/hwintrinsiclistarm64.h Outdated
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h
@a74nh
a74nh requested review from Copilot and removed request for CopilotJune 17, 2026 09:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new ARM64 hardware intrinsics for Sha3 and SveSha3 (including JIT recognition/codegen paths) and wires up corresponding generated JIT tests.

Changes:

  • Introduces System.Runtime.Intrinsics.Arm.Sha3 and System.Runtime.Intrinsics.Arm.SveSha3 APIs (ref + implementation + linker substitutions).
  • Extends CoreCLR JIT intrinsic tables and codegen to support Sha3/SveSha3 instructions (including immediates and containment).
  • Adds generated test groups/projects and helper methods for validating Sha3/SveSha3 behaviors.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 7 comments.

Show a summary per file
FileDescription
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_ro.csprojAdds optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_r.csprojAdds non-optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.csAdds test entrypoint scaffold for SveSha3 tests.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.csLogs new Sha3/SveSha3 ISA support flags.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.csAdds helper ops used by Sha3/SveSha3 test validation.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_ro.csprojAdds optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_r.csprojAdds non-optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.csAdds test entrypoint scaffold for Sha3 tests.
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.csHooks new Sha3/SveSha3 test groups into generator flow.
src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.csAdds SveSha3Inputs test group definitions.
src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.csAdds Sha3Inputs test group definitions.
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.csAdds public surface area definitions for Sha3/SveSha3.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.csAdds CoreLib implementation stub for SveSha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.PlatformNotSupported.csAdds non-supported fallback stubs for SveSha3 APIs.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.csAdds CoreLib implementation stub for Sha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.PlatformNotSupported.csAdds non-supported fallback stubs for Sha3 APIs.
src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitemsIncludes new Sha3/SveSha3 files in CoreLib build.
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoArmIntrinsics.xmlStubs IsSupported for new ISAs when Arm intrinsics are disabled.
src/coreclr/jit/lsraarm64.cppUpdates LSRA immediate handling for new/adjusted intrinsics.
src/coreclr/jit/lowerarmarch.cppAdds containment handling for Sha3 immediate operand.
src/coreclr/jit/hwintrinsiclistarm64sve.hDefines SveSha3 intrinsic list entry for RAX1.
src/coreclr/jit/hwintrinsiclistarm64.hDefines Sha3 intrinsic list entries (BCAX/EOR3/RAX1/XAR).
src/coreclr/jit/hwintrinsiccodegenarm64.cppExtends codegen to support 3-arg immediates and Sha3 opt selection.
src/coreclr/jit/hwintrinsicarm64.cppAdds immediate bounds for Sha3 XAR.
src/coreclr/jit/hwintrinsic.cppEnables ISA ranges for Sha3 and SveSha3.
Comments suppressed due to low confidence (4)

src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1

  • The generated validation expression uses &~ inside a C# source string (e.g. secondOp[i] &~ thirdOp[i]), which is not valid C# syntax and will cause generated tests to fail compilation. Update these ValidateIterResult strings to use & ~thirdOp[i] (with a space) and keep the intended parentheses.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • Templates.VecBinOpTest is a binary-op template but this entry supplies NextValueOp3. If the template doesn't expect an Op3 key, this can cause confusion or template failures; if it ignores extra keys, it still makes this test definition misleading. Remove NextValueOp3 from this dictionary (or switch to a ternary-op template if three inputs are actually needed).

Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.cs Outdated
Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.cs Outdated
CopilotAI review requested due to automatic review settings June 17, 2026 13:49
@a74nh
a74nh removed the request for review from MichalStrehovskyJune 18, 2026 08:36
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h Outdated
Comment threadsrc/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Outdated
@dhartglassMSFT

dhartglassMSFT commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Hi @a74nh the JIT changes + tests LGTM

@tannergooding can you take a glance at the libraries/* changes here? It is mostly boilerplate

@dhartglassMSFT

Copy link
Copy Markdown
Contributor

Pinging @tannergooding to look at some mostly boilerplate libs changes.

@tannergooding
tannergooding enabled auto-merge (squash) June 29, 2026 14:58
@tannergooding
tannergooding merged commit 21b722d into dotnet:mainJun 29, 2026
181 of 183 checks passed
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview7 milestone Jun 30, 2026
@a74nh
a74nh deleted the sha3_github branch June 30, 2026 10:36
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
Fixes#98692Fixes#94425
---------
Co-authored-by: dhartglassMSFT <dhartglass+github@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 31, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Runtime.Intrinsicscommunity-contributionIndicates that the PR has been added by a community memberlinkable-frameworkIssues associated with delivering a linker friendly framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[API Proposal]: Arm64: FEAT_SHA3 [API Proposal]: Arm64: FEAT_SVE_SHA3

4 participants

@a74nh@dhartglassMSFT@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add SHA3 and SVE SHA3 APIs - #126941

Merged
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github
Jun 29, 2026
Merged

Add SHA3 and SVE SHA3 APIs#126941
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github

Conversation

@a74nh

Copy link
Copy Markdown
Contributor

Fixes#98692
Fixes#94425

CopilotAI review requested due to automatic review settings April 15, 2026 09:09
@dotnet-policy-servicedotnet-policy-serviceBot added linkable-framework Issues associated with delivering a linker friendly framework community-contribution Indicates that the PR has been added by a community member labels Apr 15, 2026
@a74nh

Copy link
Copy Markdown
ContributorAuthor

@dhartglassMSFT @dotnet/arm64-contrib

@a74nh

Copy link
Copy Markdown
ContributorAuthor

hardware-intrinsics-arm64

This is erroring with:

##[error]Pipeline does not have permissions to use the referenced pool(s) NetCore-Public. For authorization details, refer to https://aka.ms/yamlauthz.

Comment threadsrc/coreclr/jit/hwintrinsiclistarm64.h Outdated
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h
@a74nh
a74nh requested review from Copilot and removed request for CopilotJune 17, 2026 09:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new ARM64 hardware intrinsics for Sha3 and SveSha3 (including JIT recognition/codegen paths) and wires up corresponding generated JIT tests.

Changes:

  • Introduces System.Runtime.Intrinsics.Arm.Sha3 and System.Runtime.Intrinsics.Arm.SveSha3 APIs (ref + implementation + linker substitutions).
  • Extends CoreCLR JIT intrinsic tables and codegen to support Sha3/SveSha3 instructions (including immediates and containment).
  • Adds generated test groups/projects and helper methods for validating Sha3/SveSha3 behaviors.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 7 comments.

Show a summary per file
FileDescription
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_ro.csprojAdds optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_r.csprojAdds non-optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.csAdds test entrypoint scaffold for SveSha3 tests.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.csLogs new Sha3/SveSha3 ISA support flags.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.csAdds helper ops used by Sha3/SveSha3 test validation.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_ro.csprojAdds optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_r.csprojAdds non-optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.csAdds test entrypoint scaffold for Sha3 tests.
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.csHooks new Sha3/SveSha3 test groups into generator flow.
src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.csAdds SveSha3Inputs test group definitions.
src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.csAdds Sha3Inputs test group definitions.
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.csAdds public surface area definitions for Sha3/SveSha3.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.csAdds CoreLib implementation stub for SveSha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.PlatformNotSupported.csAdds non-supported fallback stubs for SveSha3 APIs.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.csAdds CoreLib implementation stub for Sha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.PlatformNotSupported.csAdds non-supported fallback stubs for Sha3 APIs.
src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitemsIncludes new Sha3/SveSha3 files in CoreLib build.
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoArmIntrinsics.xmlStubs IsSupported for new ISAs when Arm intrinsics are disabled.
src/coreclr/jit/lsraarm64.cppUpdates LSRA immediate handling for new/adjusted intrinsics.
src/coreclr/jit/lowerarmarch.cppAdds containment handling for Sha3 immediate operand.
src/coreclr/jit/hwintrinsiclistarm64sve.hDefines SveSha3 intrinsic list entry for RAX1.
src/coreclr/jit/hwintrinsiclistarm64.hDefines Sha3 intrinsic list entries (BCAX/EOR3/RAX1/XAR).
src/coreclr/jit/hwintrinsiccodegenarm64.cppExtends codegen to support 3-arg immediates and Sha3 opt selection.
src/coreclr/jit/hwintrinsicarm64.cppAdds immediate bounds for Sha3 XAR.
src/coreclr/jit/hwintrinsic.cppEnables ISA ranges for Sha3 and SveSha3.
Comments suppressed due to low confidence (4)

src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1

  • The generated validation expression uses &~ inside a C# source string (e.g. secondOp[i] &~ thirdOp[i]), which is not valid C# syntax and will cause generated tests to fail compilation. Update these ValidateIterResult strings to use & ~thirdOp[i] (with a space) and keep the intended parentheses.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • Templates.VecBinOpTest is a binary-op template but this entry supplies NextValueOp3. If the template doesn't expect an Op3 key, this can cause confusion or template failures; if it ignores extra keys, it still makes this test definition misleading. Remove NextValueOp3 from this dictionary (or switch to a ternary-op template if three inputs are actually needed).

Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.cs Outdated
Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.cs Outdated
CopilotAI review requested due to automatic review settings June 17, 2026 13:49
@a74nh
a74nh removed the request for review from MichalStrehovskyJune 18, 2026 08:36
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h Outdated
Comment threadsrc/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Outdated
@dhartglassMSFT

dhartglassMSFT commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Hi @a74nh the JIT changes + tests LGTM

@tannergooding can you take a glance at the libraries/* changes here? It is mostly boilerplate

@dhartglassMSFT

Copy link
Copy Markdown
Contributor

Pinging @tannergooding to look at some mostly boilerplate libs changes.

@tannergooding
tannergooding enabled auto-merge (squash) June 29, 2026 14:58
@tannergooding
tannergooding merged commit 21b722d into dotnet:mainJun 29, 2026
181 of 183 checks passed
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview7 milestone Jun 30, 2026
@a74nh
a74nh deleted the sha3_github branch June 30, 2026 10:36
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
Fixes#98692Fixes#94425
---------
Co-authored-by: dhartglassMSFT <dhartglass+github@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 31, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Runtime.Intrinsicscommunity-contributionIndicates that the PR has been added by a community memberlinkable-frameworkIssues associated with delivering a linker friendly framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[API Proposal]: Arm64: FEAT_SHA3 [API Proposal]: Arm64: FEAT_SVE_SHA3

4 participants

@a74nh@dhartglassMSFT@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add SHA3 and SVE SHA3 APIs - #126941

Merged
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github
Jun 29, 2026
Merged

Add SHA3 and SVE SHA3 APIs#126941
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github

Conversation

@a74nh

Copy link
Copy Markdown
Contributor

Fixes#98692
Fixes#94425

CopilotAI review requested due to automatic review settings April 15, 2026 09:09
@dotnet-policy-servicedotnet-policy-serviceBot added linkable-framework Issues associated with delivering a linker friendly framework community-contribution Indicates that the PR has been added by a community member labels Apr 15, 2026
@a74nh

Copy link
Copy Markdown
ContributorAuthor

@dhartglassMSFT @dotnet/arm64-contrib

@a74nh

Copy link
Copy Markdown
ContributorAuthor

hardware-intrinsics-arm64

This is erroring with:

##[error]Pipeline does not have permissions to use the referenced pool(s) NetCore-Public. For authorization details, refer to https://aka.ms/yamlauthz.

Comment threadsrc/coreclr/jit/hwintrinsiclistarm64.h Outdated
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h
@a74nh
a74nh requested review from Copilot and removed request for CopilotJune 17, 2026 09:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new ARM64 hardware intrinsics for Sha3 and SveSha3 (including JIT recognition/codegen paths) and wires up corresponding generated JIT tests.

Changes:

  • Introduces System.Runtime.Intrinsics.Arm.Sha3 and System.Runtime.Intrinsics.Arm.SveSha3 APIs (ref + implementation + linker substitutions).
  • Extends CoreCLR JIT intrinsic tables and codegen to support Sha3/SveSha3 instructions (including immediates and containment).
  • Adds generated test groups/projects and helper methods for validating Sha3/SveSha3 behaviors.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 7 comments.

Show a summary per file
FileDescription
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_ro.csprojAdds optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_r.csprojAdds non-optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.csAdds test entrypoint scaffold for SveSha3 tests.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.csLogs new Sha3/SveSha3 ISA support flags.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.csAdds helper ops used by Sha3/SveSha3 test validation.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_ro.csprojAdds optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_r.csprojAdds non-optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.csAdds test entrypoint scaffold for Sha3 tests.
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.csHooks new Sha3/SveSha3 test groups into generator flow.
src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.csAdds SveSha3Inputs test group definitions.
src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.csAdds Sha3Inputs test group definitions.
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.csAdds public surface area definitions for Sha3/SveSha3.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.csAdds CoreLib implementation stub for SveSha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.PlatformNotSupported.csAdds non-supported fallback stubs for SveSha3 APIs.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.csAdds CoreLib implementation stub for Sha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.PlatformNotSupported.csAdds non-supported fallback stubs for Sha3 APIs.
src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitemsIncludes new Sha3/SveSha3 files in CoreLib build.
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoArmIntrinsics.xmlStubs IsSupported for new ISAs when Arm intrinsics are disabled.
src/coreclr/jit/lsraarm64.cppUpdates LSRA immediate handling for new/adjusted intrinsics.
src/coreclr/jit/lowerarmarch.cppAdds containment handling for Sha3 immediate operand.
src/coreclr/jit/hwintrinsiclistarm64sve.hDefines SveSha3 intrinsic list entry for RAX1.
src/coreclr/jit/hwintrinsiclistarm64.hDefines Sha3 intrinsic list entries (BCAX/EOR3/RAX1/XAR).
src/coreclr/jit/hwintrinsiccodegenarm64.cppExtends codegen to support 3-arg immediates and Sha3 opt selection.
src/coreclr/jit/hwintrinsicarm64.cppAdds immediate bounds for Sha3 XAR.
src/coreclr/jit/hwintrinsic.cppEnables ISA ranges for Sha3 and SveSha3.
Comments suppressed due to low confidence (4)

src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1

  • The generated validation expression uses &~ inside a C# source string (e.g. secondOp[i] &~ thirdOp[i]), which is not valid C# syntax and will cause generated tests to fail compilation. Update these ValidateIterResult strings to use & ~thirdOp[i] (with a space) and keep the intended parentheses.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • Templates.VecBinOpTest is a binary-op template but this entry supplies NextValueOp3. If the template doesn't expect an Op3 key, this can cause confusion or template failures; if it ignores extra keys, it still makes this test definition misleading. Remove NextValueOp3 from this dictionary (or switch to a ternary-op template if three inputs are actually needed).

Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.cs Outdated
Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.cs Outdated
CopilotAI review requested due to automatic review settings June 17, 2026 13:49
@a74nh
a74nh removed the request for review from MichalStrehovskyJune 18, 2026 08:36
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h Outdated
Comment threadsrc/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Outdated
@dhartglassMSFT

dhartglassMSFT commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Hi @a74nh the JIT changes + tests LGTM

@tannergooding can you take a glance at the libraries/* changes here? It is mostly boilerplate

@dhartglassMSFT

Copy link
Copy Markdown
Contributor

Pinging @tannergooding to look at some mostly boilerplate libs changes.

@tannergooding
tannergooding enabled auto-merge (squash) June 29, 2026 14:58
@tannergooding
tannergooding merged commit 21b722d into dotnet:mainJun 29, 2026
181 of 183 checks passed
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview7 milestone Jun 30, 2026
@a74nh
a74nh deleted the sha3_github branch June 30, 2026 10:36
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
Fixes#98692Fixes#94425
---------
Co-authored-by: dhartglassMSFT <dhartglass+github@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 31, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Runtime.Intrinsicscommunity-contributionIndicates that the PR has been added by a community memberlinkable-frameworkIssues associated with delivering a linker friendly framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[API Proposal]: Arm64: FEAT_SHA3 [API Proposal]: Arm64: FEAT_SVE_SHA3

4 participants

@a74nh@dhartglassMSFT@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add SHA3 and SVE SHA3 APIs - #126941

Merged
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github
Jun 29, 2026
Merged

Add SHA3 and SVE SHA3 APIs#126941
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github

Conversation

@a74nh

Copy link
Copy Markdown
Contributor

Fixes#98692
Fixes#94425

CopilotAI review requested due to automatic review settings April 15, 2026 09:09
@dotnet-policy-servicedotnet-policy-serviceBot added linkable-framework Issues associated with delivering a linker friendly framework community-contribution Indicates that the PR has been added by a community member labels Apr 15, 2026
@a74nh

Copy link
Copy Markdown
ContributorAuthor

@dhartglassMSFT @dotnet/arm64-contrib

@a74nh

Copy link
Copy Markdown
ContributorAuthor

hardware-intrinsics-arm64

This is erroring with:

##[error]Pipeline does not have permissions to use the referenced pool(s) NetCore-Public. For authorization details, refer to https://aka.ms/yamlauthz.

Comment threadsrc/coreclr/jit/hwintrinsiclistarm64.h Outdated
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h
@a74nh
a74nh requested review from Copilot and removed request for CopilotJune 17, 2026 09:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new ARM64 hardware intrinsics for Sha3 and SveSha3 (including JIT recognition/codegen paths) and wires up corresponding generated JIT tests.

Changes:

  • Introduces System.Runtime.Intrinsics.Arm.Sha3 and System.Runtime.Intrinsics.Arm.SveSha3 APIs (ref + implementation + linker substitutions).
  • Extends CoreCLR JIT intrinsic tables and codegen to support Sha3/SveSha3 instructions (including immediates and containment).
  • Adds generated test groups/projects and helper methods for validating Sha3/SveSha3 behaviors.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 7 comments.

Show a summary per file
FileDescription
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_ro.csprojAdds optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_r.csprojAdds non-optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.csAdds test entrypoint scaffold for SveSha3 tests.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.csLogs new Sha3/SveSha3 ISA support flags.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.csAdds helper ops used by Sha3/SveSha3 test validation.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_ro.csprojAdds optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_r.csprojAdds non-optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.csAdds test entrypoint scaffold for Sha3 tests.
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.csHooks new Sha3/SveSha3 test groups into generator flow.
src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.csAdds SveSha3Inputs test group definitions.
src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.csAdds Sha3Inputs test group definitions.
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.csAdds public surface area definitions for Sha3/SveSha3.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.csAdds CoreLib implementation stub for SveSha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.PlatformNotSupported.csAdds non-supported fallback stubs for SveSha3 APIs.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.csAdds CoreLib implementation stub for Sha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.PlatformNotSupported.csAdds non-supported fallback stubs for Sha3 APIs.
src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitemsIncludes new Sha3/SveSha3 files in CoreLib build.
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoArmIntrinsics.xmlStubs IsSupported for new ISAs when Arm intrinsics are disabled.
src/coreclr/jit/lsraarm64.cppUpdates LSRA immediate handling for new/adjusted intrinsics.
src/coreclr/jit/lowerarmarch.cppAdds containment handling for Sha3 immediate operand.
src/coreclr/jit/hwintrinsiclistarm64sve.hDefines SveSha3 intrinsic list entry for RAX1.
src/coreclr/jit/hwintrinsiclistarm64.hDefines Sha3 intrinsic list entries (BCAX/EOR3/RAX1/XAR).
src/coreclr/jit/hwintrinsiccodegenarm64.cppExtends codegen to support 3-arg immediates and Sha3 opt selection.
src/coreclr/jit/hwintrinsicarm64.cppAdds immediate bounds for Sha3 XAR.
src/coreclr/jit/hwintrinsic.cppEnables ISA ranges for Sha3 and SveSha3.
Comments suppressed due to low confidence (4)

src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1

  • The generated validation expression uses &~ inside a C# source string (e.g. secondOp[i] &~ thirdOp[i]), which is not valid C# syntax and will cause generated tests to fail compilation. Update these ValidateIterResult strings to use & ~thirdOp[i] (with a space) and keep the intended parentheses.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • Templates.VecBinOpTest is a binary-op template but this entry supplies NextValueOp3. If the template doesn't expect an Op3 key, this can cause confusion or template failures; if it ignores extra keys, it still makes this test definition misleading. Remove NextValueOp3 from this dictionary (or switch to a ternary-op template if three inputs are actually needed).

Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.cs Outdated
Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.cs Outdated
CopilotAI review requested due to automatic review settings June 17, 2026 13:49
@a74nh
a74nh removed the request for review from MichalStrehovskyJune 18, 2026 08:36
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h Outdated
Comment threadsrc/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Outdated
@dhartglassMSFT

dhartglassMSFT commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Hi @a74nh the JIT changes + tests LGTM

@tannergooding can you take a glance at the libraries/* changes here? It is mostly boilerplate

@dhartglassMSFT

Copy link
Copy Markdown
Contributor

Pinging @tannergooding to look at some mostly boilerplate libs changes.

@tannergooding
tannergooding enabled auto-merge (squash) June 29, 2026 14:58
@tannergooding
tannergooding merged commit 21b722d into dotnet:mainJun 29, 2026
181 of 183 checks passed
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview7 milestone Jun 30, 2026
@a74nh
a74nh deleted the sha3_github branch June 30, 2026 10:36
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
Fixes#98692Fixes#94425
---------
Co-authored-by: dhartglassMSFT <dhartglass+github@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 31, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Runtime.Intrinsicscommunity-contributionIndicates that the PR has been added by a community memberlinkable-frameworkIssues associated with delivering a linker friendly framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[API Proposal]: Arm64: FEAT_SHA3 [API Proposal]: Arm64: FEAT_SVE_SHA3

4 participants

@a74nh@dhartglassMSFT@tannergooding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add SHA3 and SVE SHA3 APIs - #126941

Merged
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github
Jun 29, 2026
Merged

Add SHA3 and SVE SHA3 APIs#126941
tannergooding merged 22 commits into
dotnet:mainfrom
a74nh:sha3_github

Conversation

@a74nh

Copy link
Copy Markdown
Contributor

Fixes#98692
Fixes#94425

CopilotAI review requested due to automatic review settings April 15, 2026 09:09
@dotnet-policy-servicedotnet-policy-serviceBot added linkable-framework Issues associated with delivering a linker friendly framework community-contribution Indicates that the PR has been added by a community member labels Apr 15, 2026
@a74nh

Copy link
Copy Markdown
ContributorAuthor

@dhartglassMSFT @dotnet/arm64-contrib

@a74nh

Copy link
Copy Markdown
ContributorAuthor

hardware-intrinsics-arm64

This is erroring with:

##[error]Pipeline does not have permissions to use the referenced pool(s) NetCore-Public. For authorization details, refer to https://aka.ms/yamlauthz.

Comment threadsrc/coreclr/jit/hwintrinsiclistarm64.h Outdated
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h
@a74nh
a74nh requested review from Copilot and removed request for CopilotJune 17, 2026 09:29

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new ARM64 hardware intrinsics for Sha3 and SveSha3 (including JIT recognition/codegen paths) and wires up corresponding generated JIT tests.

Changes:

  • Introduces System.Runtime.Intrinsics.Arm.Sha3 and System.Runtime.Intrinsics.Arm.SveSha3 APIs (ref + implementation + linker substitutions).
  • Extends CoreCLR JIT intrinsic tables and codegen to support Sha3/SveSha3 instructions (including immediates and containment).
  • Adds generated test groups/projects and helper methods for validating Sha3/SveSha3 behaviors.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 7 comments.

Show a summary per file
FileDescription
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_ro.csprojAdds optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/SveSha3_r.csprojAdds non-optimized test project for SveSha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.csAdds test entrypoint scaffold for SveSha3 tests.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.csLogs new Sha3/SveSha3 ISA support flags.
src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.csAdds helper ops used by Sha3/SveSha3 test validation.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_ro.csprojAdds optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Sha3_r.csprojAdds non-optimized test project for Sha3 ISA coverage.
src/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.csAdds test entrypoint scaffold for Sha3 tests.
src/tests/Common/GenerateHWIntrinsicTests/GenerateHWIntrinsicTests_Arm.csHooks new Sha3/SveSha3 test groups into generator flow.
src/tests/Common/GenerateHWIntrinsicTests/Arm/SveTests.csAdds SveSha3Inputs test group definitions.
src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.csAdds Sha3Inputs test group definitions.
src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.csAdds public surface area definitions for Sha3/SveSha3.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.csAdds CoreLib implementation stub for SveSha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/SveSha3.PlatformNotSupported.csAdds non-supported fallback stubs for SveSha3 APIs.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.csAdds CoreLib implementation stub for Sha3 intrinsics.
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/Sha3.PlatformNotSupported.csAdds non-supported fallback stubs for Sha3 APIs.
src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitemsIncludes new Sha3/SveSha3 files in CoreLib build.
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoArmIntrinsics.xmlStubs IsSupported for new ISAs when Arm intrinsics are disabled.
src/coreclr/jit/lsraarm64.cppUpdates LSRA immediate handling for new/adjusted intrinsics.
src/coreclr/jit/lowerarmarch.cppAdds containment handling for Sha3 immediate operand.
src/coreclr/jit/hwintrinsiclistarm64sve.hDefines SveSha3 intrinsic list entry for RAX1.
src/coreclr/jit/hwintrinsiclistarm64.hDefines Sha3 intrinsic list entries (BCAX/EOR3/RAX1/XAR).
src/coreclr/jit/hwintrinsiccodegenarm64.cppExtends codegen to support 3-arg immediates and Sha3 opt selection.
src/coreclr/jit/hwintrinsicarm64.cppAdds immediate bounds for Sha3 XAR.
src/coreclr/jit/hwintrinsic.cppEnables ISA ranges for Sha3 and SveSha3.
Comments suppressed due to low confidence (4)

src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1

  • The generated validation expression uses &~ inside a C# source string (e.g. secondOp[i] &~ thirdOp[i]), which is not valid C# syntax and will cause generated tests to fail compilation. Update these ValidateIterResult strings to use & ~thirdOp[i] (with a space) and keep the intended parentheses.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • The *_long Sha3 test cases generate Int16 inputs (GetInt16()), but the operands/base type are Int64. This will significantly reduce coverage and can hide sign/bit-pattern issues. Use TestLibrary.Generator.GetInt64() for NextValueOp1/2/3 in the *_long cases.
    src/tests/Common/GenerateHWIntrinsicTests/Arm/AdvSimdTests.cs:1
  • Templates.VecBinOpTest is a binary-op template but this entry supplies NextValueOp3. If the template doesn't expect an Op3 key, this can cause confusion or template failures; if it ignores extra keys, it still makes this test definition misleading. Remove NextValueOp3 from this dictionary (or switch to a ternary-op template if three inputs are actually needed).

Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/Sha3/Program.Sha3.cs Outdated
Comment threadsrc/tests/JIT/HardwareIntrinsics/Arm/SveSha3/Program.SveSha3.cs Outdated
CopilotAI review requested due to automatic review settings June 17, 2026 13:49
@a74nh
a74nh removed the request for review from MichalStrehovskyJune 18, 2026 08:36
Comment threadsrc/coreclr/jit/hwintrinsiclistarm64sve.h Outdated
Comment threadsrc/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs Outdated
@dhartglassMSFT

dhartglassMSFT commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Hi @a74nh the JIT changes + tests LGTM

@tannergooding can you take a glance at the libraries/* changes here? It is mostly boilerplate

@dhartglassMSFT

Copy link
Copy Markdown
Contributor

Pinging @tannergooding to look at some mostly boilerplate libs changes.

@tannergooding
tannergooding enabled auto-merge (squash) June 29, 2026 14:58
@tannergooding
tannergooding merged commit 21b722d into dotnet:mainJun 29, 2026
181 of 183 checks passed
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview7 milestone Jun 30, 2026
@a74nh
a74nh deleted the sha3_github branch June 30, 2026 10:36
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
Fixes#98692Fixes#94425
---------
Co-authored-by: dhartglassMSFT <dhartglass+github@microsoft.com>
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 31, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Runtime.Intrinsicscommunity-contributionIndicates that the PR has been added by a community memberlinkable-frameworkIssues associated with delivering a linker friendly framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[API Proposal]: Arm64: FEAT_SHA3 [API Proposal]: Arm64: FEAT_SVE_SHA3

4 participants

@a74nh@dhartglassMSFT@tannergooding