diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index f835914c56a741..3456823366d03d 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -1,4 +1,3 @@
-
- 5.0.0-2.25414.103
- 5.0.0-2.25414.103
- 5.0.0-2.25414.103
- 10.0.0-preview.25414.103
- 10.0.100-rc.1.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 0.11.5-alpha.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 10.0.0-beta.25414.103
- 2.9.3-beta.25414.103
- 2.9.3-beta.25414.103
- 10.0.0-beta.25414.103
- 5.0.0-2.25414.103
- 10.0.0-rc.1.25414.103
- 10.0.100-rc.1.25414.103
- 10.0.0-rc.1.25414.103
- 10.0.0-rc.1.25414.103
- 7.0.0-preview.1.42003
- 7.0.0-preview.1.42003
- 7.0.0-preview.1.42003
- 7.0.0-preview.1.42003
- 10.0.0-rc.1.25414.103
- 2.0.0-rc.1.25414.103
- 10.0.0-rc.1.25414.103
- 10.0.0-rc.1.25414.103
- 10.0.0-rc.1.25414.103
+ 5.0.0-2.25451.107
+ 5.0.0-2.25451.107
+ 5.0.0-2.25451.107
+ 10.0.100-rc.1.25451.107
+ 10.0.100-rc.1.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 0.11.5-alpha.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 10.0.0-beta.25451.107
+ 2.9.3-beta.25451.107
+ 2.9.3-beta.25451.107
+ 10.0.0-beta.25451.107
+ 5.0.0-2.25451.107
+ 10.0.0-rc.1.25451.107
+ 10.0.100-rc.1.25451.107
+ 10.0.0-rc.1.25451.107
+ 10.0.0-rc.1.25451.107
+ 7.0.0-preview.1.45207
+ 7.0.0-preview.1.45207
+ 7.0.0-preview.1.45207
+ 7.0.0-preview.1.45207
+ 10.0.0-rc.1.25451.107
+ 2.0.0-rc.1.25451.107
+ 10.0.0-rc.1.25451.107
+ 10.0.0-rc.1.25451.107
+ 10.0.0-rc.1.25451.107
10.0.0-beta.25310.1
10.0.0-beta.25310.1
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 3ac18f0b9cd027..a6edb16d7c7b7d 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,5 +1,5 @@
-
+
https://github.com/dotnet/icu
@@ -41,91 +41,91 @@
https://github.com/dotnet/llvm-project
da5dd054a531e6fea65643b7e754285b73eab433
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
https://github.com/dotnet/runtime-assets
@@ -263,33 +263,33 @@
https://github.com/dotnet/llvm-project
da5dd054a531e6fea65643b7e754285b73eab433
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
https://github.com/dotnet/xharness
@@ -303,9 +303,9 @@
https://github.com/dotnet/xharness
4c17e23fcb7575baa9de575e5a96258096cbaea1
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
@@ -331,29 +331,29 @@
https://github.com/dotnet/runtime-assets
385d085eb055cabeaed3dde958a900e7b31cf6ce
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
@@ -365,21 +365,21 @@
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
-
+
https://github.com/dotnet/dotnet
- 5088919af0e4a144ce5b294542f472bf668c9cc8
+ 2db1f5ee2bdda2e8d873769325fabede32e420e0
https://github.com/dotnet/node
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index 5db4ad71ee2f3e..792b60b49d424d 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -10,8 +10,8 @@
# displayName: Setup Private Feeds Credentials
# condition: eq(variables['Agent.OS'], 'Windows_NT')
# inputs:
-# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
-# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
+# filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
+# arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
# env:
# Token: $(dn-bot-dnceng-artifact-feeds-rw)
#
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index 4604b61b0323ae..facb415ca6ff35 100755
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -11,8 +11,8 @@
# - task: Bash@3
# displayName: Setup Internal Feeds
# inputs:
-# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
-# arguments: $(Build.SourcesDirectory)/NuGet.config
+# filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh
+# arguments: $(System.DefaultWorkingDirectory)/NuGet.config
# condition: ne(variables['Agent.OS'], 'Windows_NT')
# - task: NuGetAuthenticate@1
#
diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml
index d9013251542c73..5ce51840619888 100644
--- a/eng/common/core-templates/job/job.yml
+++ b/eng/common/core-templates/job/job.yml
@@ -163,7 +163,7 @@ jobs:
inputs:
testResultsFormat: 'xUnit'
testResultsFiles: '*.xml'
- searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)'
testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit
mergeTestResults: ${{ parameters.mergeTestResults }}
continueOnError: true
@@ -174,7 +174,7 @@ jobs:
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '*.trx'
- searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)'
testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx
mergeTestResults: ${{ parameters.mergeTestResults }}
continueOnError: true
@@ -218,7 +218,7 @@ jobs:
- task: CopyFiles@2
displayName: Gather buildconfiguration for build retry
inputs:
- SourceFolder: '$(Build.SourcesDirectory)/eng/common/BuildConfiguration'
+ SourceFolder: '$(System.DefaultWorkingDirectory)/eng/common/BuildConfiguration'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/eng/common/BuildConfiguration'
continueOnError: true
diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml
index 8bf7d23355bc5e..c5788829a872e5 100644
--- a/eng/common/core-templates/job/onelocbuild.yml
+++ b/eng/common/core-templates/job/onelocbuild.yml
@@ -8,7 +8,7 @@ parameters:
CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
- SourcesDirectory: $(Build.SourcesDirectory)
+ SourcesDirectory: $(System.DefaultWorkingDirectory)
CreatePr: true
AutoCompletePr: false
ReusePr: true
@@ -68,7 +68,7 @@ jobs:
- ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}:
- task: Powershell@2
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1
arguments: $(_GenerateLocProjectArguments)
displayName: Generate LocProject.json
condition: ${{ parameters.condition }}
@@ -103,7 +103,7 @@ jobs:
- task: CopyFiles@2
displayName: Copy LocProject.json
inputs:
- SourceFolder: '$(Build.SourcesDirectory)/eng/Localize/'
+ SourceFolder: '$(System.DefaultWorkingDirectory)/eng/Localize/'
Contents: 'LocProject.json'
TargetFolder: '$(Build.ArtifactStagingDirectory)/loc'
condition: ${{ parameters.condition }}
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index d5303229c97e27..348cd16376f10d 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -38,6 +38,8 @@ parameters:
# Optional: A minimatch pattern for the asset manifests to publish to BAR
assetManifestsPattern: '*/manifests/**/*.xml'
+ repositoryAlias: self
+
jobs:
- job: Asset_Registry_Publish
@@ -78,7 +80,7 @@ jobs:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- - checkout: self
+ - checkout: ${{ parameters.repositoryAlias }}
fetchDepth: 3
clean: true
@@ -117,7 +119,7 @@ jobs:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
- scriptPath: $(Build.SourcesDirectory)/eng/common/sdk-task.ps1
+ scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1
arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
/p:ManifestsPath='$(Build.StagingDirectory)/AssetManifests'
/p:IsAssetlessBuild=${{ parameters.isAssetlessBuild }}
@@ -137,7 +139,7 @@ jobs:
Add-Content -Path $filePath -Value "$(DefaultChannels)"
Add-Content -Path $filePath -Value $(IsStableBuild)
- $symbolExclusionfile = "$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt"
+ $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt"
if (Test-Path -Path $symbolExclusionfile)
{
Write-Host "SymbolExclusionFile exists"
@@ -177,7 +179,7 @@ jobs:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
- scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
+ scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
arguments: >
-BuildId $(BARBuildId)
-PublishingInfraVersion 3
diff --git a/eng/common/core-templates/jobs/codeql-build.yml b/eng/common/core-templates/jobs/codeql-build.yml
index 693b00b370447b..dbc14ac580a271 100644
--- a/eng/common/core-templates/jobs/codeql-build.yml
+++ b/eng/common/core-templates/jobs/codeql-build.yml
@@ -24,7 +24,7 @@ jobs:
- name: DefaultGuardianVersion
value: 0.109.0
- name: GuardianPackagesConfigFile
- value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
+ value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config
- name: GuardianVersion
value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }}
diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml
index 2f992b2c6eccbd..b637cb6e94808e 100644
--- a/eng/common/core-templates/jobs/jobs.yml
+++ b/eng/common/core-templates/jobs/jobs.yml
@@ -43,6 +43,7 @@ parameters:
artifacts: {}
is1ESPipeline: ''
+ repositoryAlias: self
# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
# and some (Microbuild) should only be applied to non-PR cases for internal builds.
@@ -114,3 +115,4 @@ jobs:
enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }}
+ repositoryAlias: ${{ parameters.repositoryAlias }}
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index a151fd811e3e48..f6f87fe5c675d9 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -154,7 +154,7 @@ stages:
- task: PowerShell@2
displayName: Validate
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1
arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
- job:
@@ -208,7 +208,7 @@ stages:
filePath: eng\common\sdk-task.ps1
arguments: -task SigningValidation -restore -msbuildEngine vs
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
- /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt'
+ /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt'
${{ parameters.signingValidationAdditionalParameters }}
- template: /eng/common/core-templates/steps/publish-logs.yml
@@ -258,7 +258,7 @@ stages:
- task: PowerShell@2
displayName: Validate
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1
arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/
-ExtractPath $(Agent.BuildDirectory)/Extract/
-GHRepoName $(Build.Repository.Name)
@@ -313,7 +313,7 @@ stages:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
- scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
+ scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
arguments: >
-BuildId $(BARBuildId)
-PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml
index f7602980dbe721..a7abd58c4bb609 100644
--- a/eng/common/core-templates/post-build/setup-maestro-vars.yml
+++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml
@@ -36,7 +36,7 @@ steps:
$AzureDevOpsBuildId = $Env:Build_BuildId
}
else {
- . $(Build.SourcesDirectory)\eng\common\tools.ps1
+ . $(System.DefaultWorkingDirectory)\eng\common\tools.ps1
$darc = Get-Darc
$buildInfo = & $darc get-build `
--id ${{ parameters.BARBuildId }} `
diff --git a/eng/common/core-templates/steps/enable-internal-sources.yml b/eng/common/core-templates/steps/enable-internal-sources.yml
index 64f881bffc3cf1..4085512b690910 100644
--- a/eng/common/core-templates/steps/enable-internal-sources.yml
+++ b/eng/common/core-templates/steps/enable-internal-sources.yml
@@ -17,8 +17,8 @@ steps:
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
- arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
env:
Token: ${{ parameters.legacyCredential }}
# If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate.
@@ -29,8 +29,8 @@ steps:
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
- arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config
- ${{ else }}:
- template: /eng/common/templates/steps/get-federated-access-token.yml
parameters:
@@ -39,8 +39,8 @@ steps:
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
- arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token)
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token)
# This is required in certain scenarios to install the ADO credential provider.
# It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others
# (e.g. dotnet msbuild).
diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml
index 44a9636cdff90a..c05f650279795f 100644
--- a/eng/common/core-templates/steps/generate-sbom.yml
+++ b/eng/common/core-templates/steps/generate-sbom.yml
@@ -6,7 +6,7 @@
parameters:
PackageVersion: 10.0.0
- BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+ BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
PackageName: '.NET'
ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
IgnoreDirectories: ''
diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml
index da30e67bc34c95..d6b9878f54db7f 100644
--- a/eng/common/core-templates/steps/install-microbuild.yml
+++ b/eng/common/core-templates/steps/install-microbuild.yml
@@ -12,6 +12,7 @@ parameters:
# variable is not available in template expression. _SignType has a very large proliferation across .NET, so replacing it is tough.
microbuildUseESRP: true
# Location of the MicroBuild output folder
+ # NOTE: There's something that relies on this being in the "default" source directory for tasks such as Signing to work properly.
microBuildOutputFolder: '$(Build.SourcesDirectory)'
continueOnError: false
@@ -46,17 +47,19 @@ steps:
displayName: 'Validate ESRP usage (Non-Windows)'
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
+ # Two different MB install steps. This is due to not being able to use the agent OS during
+ # YAML expansion, and Windows vs. Linux/Mac uses different service connections. However,
+ # we can avoid including the MB install step if not enabled at all. This avoids a bunch of
+ # extra pipeline authorizations, since most pipelines do not sign on non-Windows.
- task: MicroBuildSigningPlugin@4
- displayName: Install MicroBuild plugin
+ displayName: Install MicroBuild plugin (Windows)
inputs:
signType: $(_SignType)
zipSources: false
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
${{ if eq(parameters.microbuildUseESRP, true) }}:
- ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}:
- azureSubscription: 'MicroBuild Signing Task (DevDiv)'
- useEsrpCli: true
- ${{ elseif eq(variables['System.TeamProject'], 'DevDiv') }}:
+ ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea
${{ else }}:
ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
@@ -65,16 +68,24 @@ steps:
MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
continueOnError: ${{ parameters.continueOnError }}
- condition: and(
- succeeded(),
- or(
- and(
- eq(variables['Agent.Os'], 'Windows_NT'),
- in(variables['_SignType'], 'real', 'test')
- ),
- and(
- ${{ eq(parameters.enableMicrobuildForMacAndLinux, true) }},
- ne(variables['Agent.Os'], 'Windows_NT'),
- eq(variables['_SignType'], 'real')
- )
- ))
+ condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test'))
+
+ - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}:
+ - task: MicroBuildSigningPlugin@4
+ displayName: Install MicroBuild plugin (non-Windows)
+ inputs:
+ signType: $(_SignType)
+ zipSources: false
+ feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+ ${{ if eq(parameters.microbuildUseESRP, true) }}:
+ ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39
+ ${{ else }}:
+ ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc
+ env:
+ TeamName: $(_TeamName)
+ MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
+ SYSTEM_ACCESSTOKEN: $(System.AccessToken)
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'), eq(variables['_SignType'], 'real'))
diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml
index de24d0087c58bb..10f825e270a03b 100644
--- a/eng/common/core-templates/steps/publish-logs.yml
+++ b/eng/common/core-templates/steps/publish-logs.yml
@@ -12,22 +12,22 @@ steps:
inputs:
targetType: inline
script: |
- New-Item -ItemType Directory $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
- Move-Item -Path $(Build.SourcesDirectory)/artifacts/log/Debug/* $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
+ New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
+ Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
continueOnError: true
condition: always()
- task: PowerShell@2
displayName: Redact Logs
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/redact-logs.ps1
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/redact-logs.ps1
# For now this needs to have explicit list of all sensitive data. Taken from eng/publishing/v3/publish.yml
- # Sensitive data can as well be added to $(Build.SourcesDirectory)/eng/BinlogSecretsRedactionFile.txt'
+ # Sensitive data can as well be added to $(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
# If the file exists - sensitive data for redaction will be sourced from it
# (single entry per line, lines starting with '# ' are considered comments and skipped)
- arguments: -InputPath '$(Build.SourcesDirectory)/PostBuildLogs'
+ arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs'
-BinlogToolVersion ${{parameters.BinlogToolVersion}}
- -TokensFilePath '$(Build.SourcesDirectory)/eng/BinlogSecretsRedactionFile.txt'
+ -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
'$(publishing-dnceng-devdiv-code-r-build-re)'
'$(MaestroAccessToken)'
'$(dn-bot-all-orgs-artifact-feeds-rw)'
@@ -44,7 +44,7 @@ steps:
- task: CopyFiles@2
displayName: Gather post build logs
inputs:
- SourceFolder: '$(Build.SourcesDirectory)/PostBuildLogs'
+ SourceFolder: '$(System.DefaultWorkingDirectory)/PostBuildLogs'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
condition: always()
diff --git a/eng/common/core-templates/steps/source-index-stage1-publish.yml b/eng/common/core-templates/steps/source-index-stage1-publish.yml
index c2917c1efc1cb7..e9a694afa58e66 100644
--- a/eng/common/core-templates/steps/source-index-stage1-publish.yml
+++ b/eng/common/core-templates/steps/source-index-stage1-publish.yml
@@ -1,6 +1,6 @@
parameters:
- sourceIndexUploadPackageVersion: 2.0.0-20250425.2
- sourceIndexProcessBinlogPackageVersion: 1.0.1-20250515.1
+ sourceIndexUploadPackageVersion: 2.0.0-20250818.1
+ sourceIndexProcessBinlogPackageVersion: 1.0.1-20250818.1
sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
binlogPath: artifacts/log/Debug/Build.binlog
@@ -20,7 +20,7 @@ steps:
# Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk.
workingDirectory: $(Agent.TempDirectory)
-- script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i ${{parameters.BinlogPath}} -r $(Build.SourcesDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output
+- script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i ${{parameters.BinlogPath}} -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output
displayName: "Source Index: Process Binlog into indexable sln"
- ${{ if and(ne(parameters.runAsPublic, 'true'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
diff --git a/eng/common/generate-locproject.ps1 b/eng/common/generate-locproject.ps1
index 524aaa57f2b742..fa1cdc2b30076a 100644
--- a/eng/common/generate-locproject.ps1
+++ b/eng/common/generate-locproject.ps1
@@ -33,15 +33,27 @@ $jsonTemplateFiles | ForEach-Object {
$jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern
+$wxlFilesV3 = @()
+$wxlFilesV5 = @()
$wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them
if (-not $wxlFiles) {
$wxlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\1033\\.+\.wxl" } # pick up en files (1033 = en) specifically so we can copy them to use as the neutral xlf files
if ($wxlEnFiles) {
- $wxlFiles = @()
- $wxlEnFiles | ForEach-Object {
- $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)"
- $wxlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
- }
+ $wxlFiles = @()
+ $wxlEnFiles | ForEach-Object {
+ $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)"
+ $content = Get-Content $_.FullName -Raw
+
+ # Split files on schema to select different parser settings in the generated project.
+ if ($content -like "*http://wixtoolset.org/schemas/v4/wxl*")
+ {
+ $wxlFilesV5 += Copy-Item $_.FullName -Destination $destinationFile -PassThru
+ }
+ elseif ($content -like "*http://schemas.microsoft.com/wix/2006/localization*")
+ {
+ $wxlFilesV3 += Copy-Item $_.FullName -Destination $destinationFile -PassThru
+ }
+ }
}
}
@@ -114,7 +126,32 @@ $locJson = @{
CloneLanguageSet = "WiX_CloneLanguages"
LssFiles = @( "wxl_loc.lss" )
LocItems = @(
- $wxlFiles | ForEach-Object {
+ $wxlFilesV3 | ForEach-Object {
+ $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\"
+ $continue = $true
+ foreach ($exclusion in $exclusions.Exclusions) {
+ if ($_.FullName.Contains($exclusion)) {
+ $continue = $false
+ }
+ }
+ $sourceFile = ($_.FullName | Resolve-Path -Relative)
+ if ($continue)
+ {
+ return @{
+ SourceFile = $sourceFile
+ CopyOption = "LangIDOnPath"
+ OutputPath = $outputPath
+ }
+ }
+ }
+ )
+ },
+ @{
+ LanguageSet = $LanguageSet
+ CloneLanguageSet = "WiX_CloneLanguages"
+ LssFiles = @( "P210WxlSchemaV4.lss" )
+ LocItems = @(
+ $wxlFilesV5 | ForEach-Object {
$outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\"
$continue = $true
foreach ($exclusion in $exclusions.Exclusions) {
diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1
index a9d2a2d2699666..b62e132d32a40d 100644
--- a/eng/common/sdk-task.ps1
+++ b/eng/common/sdk-task.ps1
@@ -7,13 +7,14 @@ Param(
[switch] $restore,
[switch] $prepareMachine,
[switch][Alias('nobl')]$excludeCIBinaryLog,
+ [switch]$noWarnAsError,
[switch] $help,
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
)
$ci = $true
$binaryLog = if ($excludeCIBinaryLog) { $false } else { $true }
-$warnAsError = $true
+$warnAsError = if ($noWarnAsError) { $false } else { $true }
. $PSScriptRoot\tools.ps1
diff --git a/eng/common/sdk-task.sh b/eng/common/sdk-task.sh
index 2f83adc0269faf..0c92f81d74f7fa 100755
--- a/eng/common/sdk-task.sh
+++ b/eng/common/sdk-task.sh
@@ -10,6 +10,7 @@ show_usage() {
echo "Advanced settings:"
echo " --excludeCIBinarylog Don't output binary log (short: -nobl)"
+ echo " --noWarnAsError Do not warn as error
echo ""
echo "Command line arguments not listed above are passed thru to msbuild."
}
@@ -52,6 +53,7 @@ exclude_ci_binary_log=false
restore=false
help=false
properties=''
+warnAsError=true
while (($# > 0)); do
lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")"
@@ -73,6 +75,10 @@ while (($# > 0)); do
exclude_ci_binary_log=true
shift 1
;;
+ --noWarnAsError)
+ warnAsError=false
+ shift 1
+ ;;
--help)
help=true
shift 1
@@ -85,7 +91,6 @@ while (($# > 0)); do
done
ci=true
-warnAsError=true
if $help; then
show_usage
diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md
index 98bbc1ded0ba88..4bf4cf41bd7c76 100644
--- a/eng/common/template-guidance.md
+++ b/eng/common/template-guidance.md
@@ -50,7 +50,7 @@ extends:
- task: CopyFiles@2
displayName: Gather build output
inputs:
- SourceFolder: '$(Build.SourcesDirectory)/artifacts/marvel'
+ SourceFolder: '$(System.DefaultWorkingDirectory)/artifacts/marvel'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/marvel'
```
diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml
index a8a94328745823..92a0664f5647d5 100644
--- a/eng/common/templates-official/job/job.yml
+++ b/eng/common/templates-official/job/job.yml
@@ -3,7 +3,7 @@ parameters:
enableSbom: true
runAsPublic: false
PackageVersion: 9.0.0
- BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+ BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
jobs:
- template: /eng/common/core-templates/job/job.yml
diff --git a/eng/common/templates-official/variables/sdl-variables.yml b/eng/common/templates-official/variables/sdl-variables.yml
index dbdd66d4a4b3a0..f1311bbb1b33d9 100644
--- a/eng/common/templates-official/variables/sdl-variables.yml
+++ b/eng/common/templates-official/variables/sdl-variables.yml
@@ -4,4 +4,4 @@ variables:
- name: DefaultGuardianVersion
value: 0.109.0
- name: GuardianPackagesConfigFile
- value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
\ No newline at end of file
+ value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config
\ No newline at end of file
diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml
index 7cbf668c22bc04..238fa0818f7b27 100644
--- a/eng/common/templates/job/job.yml
+++ b/eng/common/templates/job/job.yml
@@ -6,7 +6,7 @@ parameters:
enableSbom: true
runAsPublic: false
PackageVersion: 9.0.0
- BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+ BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
jobs:
- template: /eng/common/core-templates/job/job.yml
@@ -77,7 +77,7 @@ jobs:
parameters:
is1ESPipeline: false
args:
- targetPath: '$(Build.SourcesDirectory)\eng\common\BuildConfiguration'
+ targetPath: '$(System.DefaultWorkingDirectory)\eng\common\BuildConfiguration'
artifactName: 'BuildConfiguration'
displayName: 'Publish build retry configuration'
continueOnError: true
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index d4cfd9ccd806c9..06b44de78709cf 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -544,7 +544,8 @@ function LocateVisualStudio([object]$vsRequirements = $null){
if (Get-Member -InputObject $GlobalJson.tools -Name 'vswhere') {
$vswhereVersion = $GlobalJson.tools.vswhere
} else {
- $vswhereVersion = '2.5.2'
+ # keep this in sync with the VSWhereVersion in DefaultVersions.props
+ $vswhereVersion = '3.1.7'
}
$vsWhereDir = Join-Path $ToolsDir "vswhere\$vswhereVersion"
@@ -552,7 +553,8 @@ function LocateVisualStudio([object]$vsRequirements = $null){
if (!(Test-Path $vsWhereExe)) {
Create-Directory $vsWhereDir
- Write-Host 'Downloading vswhere'
+ Write-Host "Downloading vswhere $vswhereVersion"
+ $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
Retry({
Invoke-WebRequest "https://netcorenativeassets.blob.core.windows.net/resource-packages/external/windows/vswhere/$vswhereVersion/vswhere.exe" -OutFile $vswhereExe
})
diff --git a/global.json b/global.json
index 5da2c8d6d5d1cd..32113af2886728 100644
--- a/global.json
+++ b/global.json
@@ -1,18 +1,18 @@
{
"sdk": {
- "version": "10.0.100-rc.1.25411.109",
+ "version": "10.0.100-rc.1.25420.111",
"allowPrerelease": true,
"rollForward": "major"
},
"tools": {
- "dotnet": "10.0.100-rc.1.25411.109"
+ "dotnet": "10.0.100-rc.1.25420.111"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25414.103",
- "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25414.103",
- "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25414.103",
+ "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25451.107",
+ "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25451.107",
+ "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25451.107",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0",
- "Microsoft.NET.Sdk.IL": "10.0.0-rc.1.25414.103"
+ "Microsoft.NET.Sdk.IL": "10.0.0-rc.1.25451.107"
}
}
diff --git a/src/coreclr/jit/fgbasic.cpp b/src/coreclr/jit/fgbasic.cpp
index 1b58b09a5d1b76..f03f3061035b77 100644
--- a/src/coreclr/jit/fgbasic.cpp
+++ b/src/coreclr/jit/fgbasic.cpp
@@ -1483,18 +1483,54 @@ void Compiler::fgFindJumpTargets(const BYTE* codeAddr, IL_OFFSET codeSize, Fixed
#if defined(FEATURE_HW_INTRINSICS)
#if defined(TARGET_ARM64)
case NI_Vector64_get_AllBitsSet:
+ case NI_Vector64_get_E:
+ case NI_Vector64_get_Epsilon:
+ case NI_Vector64_get_NaN:
+ case NI_Vector64_get_NegativeInfinity:
+ case NI_Vector64_get_NegativeOne:
+ case NI_Vector64_get_NegativeZero:
case NI_Vector64_get_One:
+ case NI_Vector64_get_Pi:
+ case NI_Vector64_get_PositiveInfinity:
+ case NI_Vector64_get_Tau:
case NI_Vector64_get_Zero:
#endif // TARGET_ARM64
case NI_Vector128_get_AllBitsSet:
+ case NI_Vector128_get_E:
+ case NI_Vector128_get_Epsilon:
+ case NI_Vector128_get_NaN:
+ case NI_Vector128_get_NegativeInfinity:
+ case NI_Vector128_get_NegativeOne:
+ case NI_Vector128_get_NegativeZero:
case NI_Vector128_get_One:
+ case NI_Vector128_get_Pi:
+ case NI_Vector128_get_PositiveInfinity:
+ case NI_Vector128_get_Tau:
case NI_Vector128_get_Zero:
#if defined(TARGET_XARCH)
case NI_Vector256_get_AllBitsSet:
+ case NI_Vector256_get_E:
+ case NI_Vector256_get_Epsilon:
+ case NI_Vector256_get_NaN:
+ case NI_Vector256_get_NegativeInfinity:
+ case NI_Vector256_get_NegativeOne:
+ case NI_Vector256_get_NegativeZero:
case NI_Vector256_get_One:
+ case NI_Vector256_get_Pi:
+ case NI_Vector256_get_PositiveInfinity:
+ case NI_Vector256_get_Tau:
case NI_Vector256_get_Zero:
case NI_Vector512_get_AllBitsSet:
+ case NI_Vector512_get_E:
+ case NI_Vector512_get_Epsilon:
+ case NI_Vector512_get_NaN:
+ case NI_Vector512_get_NegativeInfinity:
+ case NI_Vector512_get_NegativeOne:
+ case NI_Vector512_get_NegativeZero:
case NI_Vector512_get_One:
+ case NI_Vector512_get_Pi:
+ case NI_Vector512_get_PositiveInfinity:
+ case NI_Vector512_get_Tau:
case NI_Vector512_get_Zero:
#endif // TARGET_XARCH
#endif // FEATURE_HW_INTRINSICS
diff --git a/src/coreclr/jit/hwintrinsicarm64.cpp b/src/coreclr/jit/hwintrinsicarm64.cpp
index 650919f3934e23..a41e6219c20f84 100644
--- a/src/coreclr/jit/hwintrinsicarm64.cpp
+++ b/src/coreclr/jit/hwintrinsicarm64.cpp
@@ -1439,6 +1439,40 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
break;
}
+ case NI_Vector64_get_E:
+ case NI_Vector128_get_E:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, 2.718281828459045);
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector64_get_Epsilon:
+ case NI_Vector128_get_Epsilon:
+ {
+ assert(sig->numArgs == 0);
+
+ if (simdBaseType == TYP_FLOAT)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_INT, static_cast(0x00000001));
+ retNode = vecCns;
+ }
+ else if (simdBaseType == TYP_DOUBLE)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_LONG, static_cast(0x0000000000000001));
+ retNode = vecCns;
+ }
+ break;
+ }
+
case NI_Vector64_get_Indices:
case NI_Vector128_get_Indices:
{
@@ -1447,6 +1481,80 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
break;
}
+ case NI_Vector64_get_NaN:
+ case NI_Vector128_get_NaN:
+ {
+ assert(sig->numArgs == 0);
+
+ if (simdBaseType == TYP_FLOAT)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_INT, static_cast(0x7FC00000));
+ retNode = vecCns;
+ }
+ else if (simdBaseType == TYP_DOUBLE)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_LONG, static_cast(0x7FF8000000000000));
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector64_get_NegativeInfinity:
+ case NI_Vector128_get_NegativeInfinity:
+ {
+ assert(sig->numArgs == 0);
+
+ if (simdBaseType == TYP_FLOAT)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_INT, static_cast(0xFF800000));
+ retNode = vecCns;
+ }
+ else if (simdBaseType == TYP_DOUBLE)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_LONG, static_cast(0xFFF0000000000000));
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector64_get_NegativeOne:
+ case NI_Vector128_get_NegativeOne:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, -1.0);
+ retNode = vecCns;
+ }
+ else if (varTypeIsSigned(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, static_cast(-1));
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector64_get_NegativeZero:
+ case NI_Vector128_get_NegativeZero:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, -0.0);
+ retNode = vecCns;
+ }
+ break;
+ }
+
case NI_Vector64_get_One:
case NI_Vector128_get_One:
{
@@ -1455,6 +1563,54 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
break;
}
+ case NI_Vector64_get_Pi:
+ case NI_Vector128_get_Pi:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, 3.141592653589793);
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector64_get_PositiveInfinity:
+ case NI_Vector128_get_PositiveInfinity:
+ {
+ assert(sig->numArgs == 0);
+
+ if (simdBaseType == TYP_FLOAT)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_INT, static_cast(0x7F800000));
+ retNode = vecCns;
+ }
+ else if (simdBaseType == TYP_DOUBLE)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_LONG, static_cast(0x7FF0000000000000));
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector64_get_Tau:
+ case NI_Vector128_get_Tau:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, 6.283185307179586);
+ retNode = vecCns;
+ }
+ break;
+ }
+
case NI_Vector64_get_Zero:
case NI_Vector128_get_Zero:
{
diff --git a/src/coreclr/jit/hwintrinsiccodegenxarch.cpp b/src/coreclr/jit/hwintrinsiccodegenxarch.cpp
index 9dc8a978174c9d..598c4342d1a60f 100644
--- a/src/coreclr/jit/hwintrinsiccodegenxarch.cpp
+++ b/src/coreclr/jit/hwintrinsiccodegenxarch.cpp
@@ -2346,7 +2346,7 @@ void CodeGen::genBaseIntrinsic(GenTreeHWIntrinsic* node, insOpts instOptions)
//
// Vector128 overflowMask =
// Vector128.Equals(op1, Vector128.Create(int.MinValue)
- // & Vector128.Equals(op2, Vector128.Create(-1));
+ // & Vector128.Equals(op2, Vector128.NegativeOne);
// if (!Vector128.EqualsAll(overflowMask, Vector128.Zero))
// {
// throw new OverflowException();
diff --git a/src/coreclr/jit/hwintrinsiclistarm64.h b/src/coreclr/jit/hwintrinsiclistarm64.h
index ec721f567c50f3..9e3d0a4f8fea7d 100644
--- a/src/coreclr/jit/hwintrinsiclistarm64.h
+++ b/src/coreclr/jit/hwintrinsiclistarm64.h
@@ -115,8 +115,17 @@ HARDWARE_INTRINSIC(Vector64, WidenLower,
HARDWARE_INTRINSIC(Vector64, WidenUpper, 8, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId|HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(Vector64, WithElement, 8, 3, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_BaseTypeFromFirstArg|HW_Flag_SpecialImport)
HARDWARE_INTRINSIC(Vector64, get_AllBitsSet, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_E, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_Epsilon, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector64, get_Indices, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_NaN, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_NegativeInfinity, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_NegativeOne, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_NegativeZero, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector64, get_One, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_Pi, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_PositiveInfinity, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector64, get_Tau, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector64, get_Zero, 8, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector64, op_Addition, 8, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector64, op_BitwiseAnd, 8, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId|HW_Flag_Commutative)
@@ -248,8 +257,17 @@ HARDWARE_INTRINSIC(Vector128, WithElement,
HARDWARE_INTRINSIC(Vector128, WithLower, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen)
HARDWARE_INTRINSIC(Vector128, WithUpper, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen)
HARDWARE_INTRINSIC(Vector128, get_AllBitsSet, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_E, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_Epsilon, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, get_Indices, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_NaN, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_NegativeInfinity, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_NegativeOne, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_NegativeZero, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, get_One, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_Pi, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_PositiveInfinity, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_Tau, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, get_Zero, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, op_Addition, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, op_BitwiseAnd, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId|HW_Flag_Commutative)
diff --git a/src/coreclr/jit/hwintrinsiclistxarch.h b/src/coreclr/jit/hwintrinsiclistxarch.h
index be680becff0b52..406c0de231a15a 100644
--- a/src/coreclr/jit/hwintrinsiclistxarch.h
+++ b/src/coreclr/jit/hwintrinsiclistxarch.h
@@ -134,8 +134,17 @@ HARDWARE_INTRINSIC(Vector128, WidenLower,
HARDWARE_INTRINSIC(Vector128, WidenUpper, 16, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId|HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(Vector128, WithElement, 16, 3, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoContainment|HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(Vector128, get_AllBitsSet, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_E, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_Epsilon, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, get_Indices, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_NaN, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_NegativeInfinity, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_NegativeOne, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_NegativeZero, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, get_One, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_Pi, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_PositiveInfinity, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector128, get_Tau, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, get_Zero, 16, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, op_Addition, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector128, op_BitwiseAnd, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
@@ -264,10 +273,19 @@ HARDWARE_INTRINSIC(Vector256, WidenUpper,
HARDWARE_INTRINSIC(Vector256, WithElement, 32, 3, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoContainment|HW_Flag_BaseTypeFromFirstArg|HW_Flag_AvxOnlyCompatible)
HARDWARE_INTRINSIC(Vector256, WithLower, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen|HW_Flag_AvxOnlyCompatible)
HARDWARE_INTRINSIC(Vector256, WithUpper, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen|HW_Flag_AvxOnlyCompatible)
-HARDWARE_INTRINSIC(Vector256, get_AllBitsSet, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId|HW_Flag_AvxOnlyCompatible)
+HARDWARE_INTRINSIC(Vector256, get_AllBitsSet, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_E, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_Epsilon, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector256, get_Indices, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_NaN, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_NegativeInfinity, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_NegativeOne, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_NegativeZero, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector256, get_One, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
-HARDWARE_INTRINSIC(Vector256, get_Zero, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId|HW_Flag_AvxOnlyCompatible)
+HARDWARE_INTRINSIC(Vector256, get_Pi, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_PositiveInfinity, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_Tau, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector256, get_Zero, 32, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector256, op_Addition, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector256, op_BitwiseAnd, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId|HW_Flag_AvxOnlyCompatible)
HARDWARE_INTRINSIC(Vector256, op_BitwiseOr, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId|HW_Flag_AvxOnlyCompatible)
@@ -395,8 +413,17 @@ HARDWARE_INTRINSIC(Vector512, WithElement,
HARDWARE_INTRINSIC(Vector512, WithLower, 64, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen)
HARDWARE_INTRINSIC(Vector512, WithUpper, 64, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_SpecialImport|HW_Flag_NoCodeGen)
HARDWARE_INTRINSIC(Vector512, get_AllBitsSet, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_E, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_Epsilon, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector512, get_Indices, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_NaN, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_NegativeInfinity, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_NegativeOne, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_NegativeZero, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector512, get_One, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_Pi, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_PositiveInfinity, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
+HARDWARE_INTRINSIC(Vector512, get_Tau, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector512, get_Zero, 64, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector512, op_Addition, 64, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
HARDWARE_INTRINSIC(Vector512, op_BitwiseAnd, 64, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Helper, HW_Flag_InvalidNodeId)
diff --git a/src/coreclr/jit/hwintrinsicxarch.cpp b/src/coreclr/jit/hwintrinsicxarch.cpp
index c614918b2074d5..04feba178f7d91 100644
--- a/src/coreclr/jit/hwintrinsicxarch.cpp
+++ b/src/coreclr/jit/hwintrinsicxarch.cpp
@@ -2528,6 +2528,42 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
break;
}
+ case NI_Vector128_get_E:
+ case NI_Vector256_get_E:
+ case NI_Vector512_get_E:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, 2.718281828459045);
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector128_get_Epsilon:
+ case NI_Vector256_get_Epsilon:
+ case NI_Vector512_get_Epsilon:
+ {
+ assert(sig->numArgs == 0);
+
+ if (simdBaseType == TYP_FLOAT)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_INT, static_cast(0x00000001));
+ retNode = vecCns;
+ }
+ else if (simdBaseType == TYP_DOUBLE)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_LONG, static_cast(0x0000000000000001));
+ retNode = vecCns;
+ }
+ break;
+ }
+
case NI_Vector128_get_Indices:
case NI_Vector256_get_Indices:
case NI_Vector512_get_Indices:
@@ -2537,6 +2573,84 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
break;
}
+ case NI_Vector128_get_NaN:
+ case NI_Vector256_get_NaN:
+ case NI_Vector512_get_NaN:
+ {
+ assert(sig->numArgs == 0);
+
+ if (simdBaseType == TYP_FLOAT)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_INT, static_cast(0xFFC00000));
+ retNode = vecCns;
+ }
+ else if (simdBaseType == TYP_DOUBLE)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_LONG, static_cast(0xFFF8000000000000));
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector128_get_NegativeInfinity:
+ case NI_Vector256_get_NegativeInfinity:
+ case NI_Vector512_get_NegativeInfinity:
+ {
+ assert(sig->numArgs == 0);
+
+ if (simdBaseType == TYP_FLOAT)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_INT, static_cast(0xFF800000));
+ retNode = vecCns;
+ }
+ else if (simdBaseType == TYP_DOUBLE)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_LONG, static_cast(0xFFF0000000000000));
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector128_get_NegativeOne:
+ case NI_Vector256_get_NegativeOne:
+ case NI_Vector512_get_NegativeOne:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, -1.0);
+ retNode = vecCns;
+ }
+ else if (varTypeIsSigned(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, static_cast(-1));
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector128_get_NegativeZero:
+ case NI_Vector256_get_NegativeZero:
+ case NI_Vector512_get_NegativeZero:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, -0.0);
+ retNode = vecCns;
+ }
+ break;
+ }
+
case NI_Vector128_get_One:
case NI_Vector256_get_One:
case NI_Vector512_get_One:
@@ -2546,6 +2660,57 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
break;
}
+ case NI_Vector128_get_Pi:
+ case NI_Vector256_get_Pi:
+ case NI_Vector512_get_Pi:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, 3.141592653589793);
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector128_get_PositiveInfinity:
+ case NI_Vector256_get_PositiveInfinity:
+ case NI_Vector512_get_PositiveInfinity:
+ {
+ assert(sig->numArgs == 0);
+
+ if (simdBaseType == TYP_FLOAT)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_INT, static_cast(0x7F800000));
+ retNode = vecCns;
+ }
+ else if (simdBaseType == TYP_DOUBLE)
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(TYP_LONG, static_cast(0x7FF0000000000000));
+ retNode = vecCns;
+ }
+ break;
+ }
+
+ case NI_Vector128_get_Tau:
+ case NI_Vector256_get_Tau:
+ case NI_Vector512_get_Tau:
+ {
+ assert(sig->numArgs == 0);
+
+ if (varTypeIsFloating(simdBaseType))
+ {
+ GenTreeVecCon* vecCns = gtNewVconNode(retType);
+ vecCns->EvaluateBroadcastInPlace(simdBaseType, 6.283185307179586);
+ retNode = vecCns;
+ }
+ break;
+ }
+
case NI_Vector128_get_Zero:
case NI_Vector256_get_Zero:
case NI_Vector512_get_Zero:
diff --git a/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs b/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs
index b8643c54d9c81d..f816c820aa67e7 100644
--- a/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs
+++ b/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs
@@ -573,6 +573,24 @@ public static partial class Vector
public static System.Numerics.Vector3 WithElement(this System.Numerics.Vector3 vector, int index, float value) { throw null; }
public static System.Numerics.Vector4 WithElement(this System.Numerics.Vector4 vector, int index, float value) { throw null; }
public static System.Numerics.Vector Xor(System.Numerics.Vector left, System.Numerics.Vector right) { throw null; }
+ extension(Vector) where T : System.Numerics.IFloatingPointConstants
+ {
+ public static System.Numerics.Vector E { get { throw null; } }
+ public static System.Numerics.Vector Pi { get { throw null; } }
+ public static System.Numerics.Vector Tau { get { throw null; } }
+ }
+ extension(Vector) where T : System.Numerics.IFloatingPointIeee754
+ {
+ public static System.Numerics.Vector Epsilon { get { throw null; } }
+ public static System.Numerics.Vector NaN { get { throw null; } }
+ public static System.Numerics.Vector NegativeInfinity { get { throw null; } }
+ public static System.Numerics.Vector NegativeZero { get { throw null; } }
+ public static System.Numerics.Vector PositiveInfinity { get { throw null; } }
+ }
+ extension(Vector) where T : System.Numerics.ISignedNumber
+ {
+ public static System.Numerics.Vector NegativeOne { get { throw null; } }
+ }
}
public partial struct Vector2 : System.IEquatable, System.IFormattable
{
diff --git a/src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs b/src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs
index b5f4568a628285..f18f9ff9278419 100644
--- a/src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs
+++ b/src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs
@@ -6079,5 +6079,113 @@ public void SubtractSaturateSByteTest()
[Fact]
public void SubtractSaturateUIntPtrTest() => SubtractSaturateToMinTest(1);
+
+ [Fact]
+ public void EDoubleTest() => TestConstant(Vector.E, double.E);
+
+ [Fact]
+ public void ESingleTest() => TestConstant(Vector.E, float.E);
+
+ [Fact]
+ public void EpsilonDoubleTest() => TestConstant(Vector.Epsilon, double.Epsilon);
+
+ [Fact]
+ public void EpsilonSingleTest() => TestConstant(Vector.Epsilon, float.Epsilon);
+
+ [Fact]
+ public void NaNDoubleTest() => TestConstant(Vector.NaN, double.NaN);
+
+ [Fact]
+ public void NaNSingleTest() => TestConstant(Vector.NaN, float.NaN);
+
+ [Fact]
+ public void NegativeInfinityDoubleTest() => TestConstant(Vector.NegativeInfinity, double.NegativeInfinity);
+
+ [Fact]
+ public void NegativeInfinitySingleTest() => TestConstant(Vector.NegativeInfinity, float.NegativeInfinity);
+
+ [Fact]
+ public void NegativeOneDoubleTest() => TestConstant(Vector.NegativeOne, -1.0);
+
+ [Fact]
+ public void NegativeOneInt16Test() => TestConstant(Vector.NegativeOne, -1);
+
+ [Fact]
+ public void NegativeOneInt32Test() => TestConstant(Vector.NegativeOne, -1);
+
+ [Fact]
+ public void NegativeOneInt64Test() => TestConstant(Vector.NegativeOne, -1);
+
+ [Fact]
+ public void NegativeOneSByteTest() => TestConstant(Vector.NegativeOne, -1);
+
+ [Fact]
+ public void NegativeOneSingleTest() => TestConstant(Vector.NegativeOne, -1.0f);
+
+ [Fact]
+ public void NegativeZeroDoubleTest() => TestConstant(Vector.NegativeZero, double.NegativeZero);
+
+ [Fact]
+ public void NegativeZeroSingleTest() => TestConstant(Vector.NegativeZero, float.NegativeZero);
+
+ [Fact]
+ public void PiDoubleTest() => TestConstant(Vector.Pi, double.Pi);
+
+ [Fact]
+ public void PiSingleTest() => TestConstant(Vector.Pi, float.Pi);
+
+ [Fact]
+ public void PositiveInfinityDoubleTest() => TestConstant(Vector.PositiveInfinity, double.PositiveInfinity);
+
+ [Fact]
+ public void PositiveInfinitySingleTest() => TestConstant(Vector.PositiveInfinity, float.PositiveInfinity);
+
+ [Fact]
+ public void TauDoubleTest() => TestConstant(Vector.Tau, double.Tau);
+
+ [Fact]
+ public void TauSingleTest() => TestConstant(Vector.Tau, float.Tau);
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private void TestConstant(Vector actual, double expected)
+ {
+ for (int i = 0; i < Vector.Count; i++)
+ {
+ if (double.IsNaN(expected))
+ {
+ Assert.True(double.IsNaN(actual[i]));
+ }
+ else
+ {
+ Assert.Equal(BitConverter.DoubleToInt64Bits(expected), BitConverter.DoubleToInt64Bits(actual[i]));
+ }
+ }
+ }
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private void TestConstant(Vector actual, float expected)
+ {
+ for (int i = 0; i < Vector.Count; i++)
+ {
+ if (float.IsNaN(expected))
+ {
+ Assert.True(float.IsNaN(actual[i]));
+ }
+ else
+ {
+ Assert.Equal(BitConverter.SingleToInt32Bits(expected), BitConverter.SingleToInt32Bits(actual[i]));
+ }
+ }
+ }
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private void TestConstant(Vector actual, T expected)
+ where T : IBinaryInteger
+ {
+ for (int i = 0; i < Vector.Count; i++)
+ {
+ Assert.Equal(expected, actual[i]);
+ }
+ }
}
}
diff --git a/src/libraries/System.Numerics.Vectors/tests/Matrix3x2Tests.cs b/src/libraries/System.Numerics.Vectors/tests/Matrix3x2Tests.cs
index f06cc4e73dcfa8..4371b7b7b6e053 100644
--- a/src/libraries/System.Numerics.Vectors/tests/Matrix3x2Tests.cs
+++ b/src/libraries/System.Numerics.Vectors/tests/Matrix3x2Tests.cs
@@ -1089,9 +1089,9 @@ public void Matrix3x2CreateBroadcastScalarTest()
{
Matrix3x2 a = Matrix3x2.Create(float.Pi);
- Assert.Equal(Vector2.Create(float.Pi), a.X);
- Assert.Equal(Vector2.Create(float.Pi), a.Y);
- Assert.Equal(Vector2.Create(float.Pi), a.Z);
+ Assert.Equal(Vector2.Pi, a.X);
+ Assert.Equal(Vector2.Pi, a.Y);
+ Assert.Equal(Vector2.Pi, a.Z);
}
[Fact]
diff --git a/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs b/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs
index 87e035215ede69..1ae9921d78babe 100644
--- a/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs
+++ b/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs
@@ -67,14 +67,14 @@ private static Matrix4x4 GenerateTestMatrix()
// The handedness-swapped matrix of matrix M is B^-1 * M * B where B is the change of handedness matrix.
// Since only the Z coordinate is flipped when changing handedness,
- //
+ //
// B = [ 1 0 0 0
// 0 1 0 0
// 0 0 -1 0
// 0 0 0 1 ]
//
// and B is its own inverse. So the handedness swap can be simplified to
- //
+ //
// B^-1 * M * B = [ m11 m12 -m13 m14
// m21 m22 -m23 m24
// -m31 -m32 m33 -m34
@@ -3174,10 +3174,10 @@ public void Matrix4x4CreateBroadcastScalarTest()
{
Matrix4x4 a = Matrix4x4.Create(float.Pi);
- Assert.Equal(Vector4.Create(float.Pi), a.X);
- Assert.Equal(Vector4.Create(float.Pi), a.Y);
- Assert.Equal(Vector4.Create(float.Pi), a.Z);
- Assert.Equal(Vector4.Create(float.Pi), a.W);
+ Assert.Equal(Vector4.Pi, a.X);
+ Assert.Equal(Vector4.Pi, a.Y);
+ Assert.Equal(Vector4.Pi, a.Z);
+ Assert.Equal(Vector4.Pi, a.W);
}
[Fact]
diff --git a/src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Base64Helper/Base64DecoderHelper.cs b/src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Base64Helper/Base64DecoderHelper.cs
index 37b8c4bb97cf96..8c6e002b46c800 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Base64Helper/Base64DecoderHelper.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Base64Helper/Base64DecoderHelper.cs
@@ -1069,7 +1069,7 @@ private static unsafe void Vector128Decode(TBase64Decoder dec
Vector128 packBytesMask = Vector128.Create(0x06000102, 0x090A0405, 0x0C0D0E08, 0xffffffff).AsSByte();
Vector128 mergeConstant0 = Vector128.Create(0x01400140).AsByte();
Vector128 mergeConstant1 = Vector128.Create(0x00011000).AsInt16();
- Vector128 one = Vector128.Create((byte)1);
+ Vector128 one = Vector128.One;
Vector128 mask2F = Vector128.Create(decoder.MaskSlashOrUnderscore);
Vector128 mask8F = Vector128.Create((byte)0x8F);
Vector128 shiftForUnderscore = Vector128.Create((byte)33);
diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/BitArray.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/BitArray.cs
index 66fe6f6c37eff6..773d178d34e1d7 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Collections/BitArray.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Collections/BitArray.cs
@@ -744,7 +744,7 @@ public unsafe void CopyTo(Array array, int index)
Vector256 lowerShuffleMask_CopyToBoolArray256 = Vector256.Create(lowerShuffleMask_CopyToBoolArray, upperShuffleMask_CopyToBoolArray);
Vector512 shuffleMask = Vector512.Create(lowerShuffleMask_CopyToBoolArray256, upperShuffleMask_CopyToBoolArray256);
Vector512 bitMask = Vector512.Create(0x80402010_08040201).AsByte();
- Vector512 ones = Vector512.Create((byte)1);
+ Vector512 ones = Vector512.One;
fixed (bool* destination = &boolArray[index])
{
@@ -766,7 +766,7 @@ public unsafe void CopyTo(Array array, int index)
{
Vector256 shuffleMask = Vector256.Create(lowerShuffleMask_CopyToBoolArray, upperShuffleMask_CopyToBoolArray);
Vector256 bitMask = Vector256.Create(0x80402010_08040201).AsByte();
- Vector256 ones = Vector256.Create((byte)1);
+ Vector256 ones = Vector256.One;
fixed (bool* destination = &boolArray[index])
{
@@ -788,7 +788,7 @@ public unsafe void CopyTo(Array array, int index)
{
Vector128 lowerShuffleMask = lowerShuffleMask_CopyToBoolArray;
Vector128 upperShuffleMask = upperShuffleMask_CopyToBoolArray;
- Vector128 ones = Vector128.Create((byte)1);
+ Vector128 ones = Vector128.One;
Vector128 bitMask128 = Vector128.Create(0x80402010_08040201).AsByte();
fixed (bool* destination = &boolArray[index])
@@ -812,7 +812,7 @@ public unsafe void CopyTo(Array array, int index)
}
else if (AdvSimd.Arm64.IsSupported)
{
- Vector128 ones = Vector128.Create((byte)1);
+ Vector128 ones = Vector128.One;
Vector128 bitMask128 = Vector128.Create(0x80402010_08040201).AsByte();
fixed (bool* destination = &boolArray[index])
diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.Impl.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.Impl.cs
index 09815c5089a570..12aed8626dd75a 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.Impl.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.Impl.cs
@@ -357,7 +357,7 @@ public static bool Invert(in Impl matrix, out Impl result)
if (float.Abs(det) < float.Epsilon)
{
- Vector2 vNaN = Vector2.Create(float.NaN);
+ Vector2 vNaN = Vector2.NaN;
result.X = vNaN;
result.Y = vNaN;
diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs
index 708d1e03b1b945..3ff84c8e9de3b3 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs
@@ -1286,7 +1286,7 @@ static bool SseImpl(in Impl matrix, out Impl result)
// Check determinate is not zero
if (float.Abs(det) < float.Epsilon)
{
- Vector4 vNaN = Vector4.Create(float.NaN);
+ Vector4 vNaN = Vector4.NaN;
result.X = vNaN;
result.Y = vNaN;
@@ -1424,7 +1424,7 @@ static bool SoftwareFallback(in Impl matrix, out Impl result)
if (float.Abs(det) < float.Epsilon)
{
- Vector4 vNaN = Vector4.Create(float.NaN);
+ Vector4 vNaN = Vector4.NaN;
result.X = vNaN;
result.Y = vNaN;
diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs
index 5e756f452c9a92..dab451045467cd 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs
@@ -133,7 +133,7 @@ public static Plane Normalize(Plane value)
return Vector128.AndNot(
(value.AsVector128() / Vector128.Sqrt(lengthSquared)),
- Vector128.Equals(lengthSquared, Vector128.Create(float.PositiveInfinity))
+ Vector128.Equals(lengthSquared, Vector128.PositiveInfinity)
).AsPlane();
}
diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs
index f80cba2809dc12..ceccc9aebd9305 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs
@@ -23,6 +23,84 @@ public static bool IsHardwareAccelerated
get => IsHardwareAccelerated;
}
+ /// The type of the elements in the vector.
+ extension(Vector)
+ where T : IFloatingPointConstants
+ {
+ ///
+ public static Vector E
+ {
+ [Intrinsic]
+ get => Create(T.E);
+ }
+
+ ///
+ public static Vector Pi
+ {
+ [Intrinsic]
+ get => Create(T.Pi);
+ }
+
+ ///
+ public static Vector Tau
+ {
+ [Intrinsic]
+ get => Create(T.Tau);
+ }
+ }
+
+ /// The type of the elements in the vector.
+ extension(Vector)
+ where T : IFloatingPointIeee754
+ {
+ ///
+ public static Vector Epsilon
+ {
+ [Intrinsic]
+ get => Create(T.Epsilon);
+ }
+
+ ///
+ public static Vector NaN
+ {
+ [Intrinsic]
+ get => Create(T.NaN);
+ }
+
+ ///
+ public static Vector NegativeInfinity
+ {
+ [Intrinsic]
+ get => Create(T.NegativeInfinity);
+ }
+
+ ///
+ public static Vector NegativeZero
+ {
+ [Intrinsic]
+ get => Create(T.NegativeZero);
+ }
+
+ ///
+ public static Vector PositiveInfinity
+ {
+ [Intrinsic]
+ get => Create(T.PositiveInfinity);
+ }
+ }
+
+ /// The type of the elements in the vector.
+ extension(Vector)
+ where T : ISignedNumber
+ {
+ ///
+ public static Vector NegativeOne
+ {
+ [Intrinsic]
+ get => Create(T.NegativeOne);
+ }
+ }
+
/// Computes the absolute value of each element in a vector.
/// The vector that will have its absolute value computed.
/// The type of the elements in the vector.
@@ -1405,11 +1483,11 @@ public static Vector IsFinite(Vector vector)
{
if (typeof(T) == typeof(float))
{
- return ~IsZero(AndNot(Create(float.PositiveInfinityBits), vector.As())).As();
+ return ~IsZero(AndNot(Vector.PositiveInfinity.As(), vector.As())).As();
}
else if (typeof(T) == typeof(double))
{
- return ~IsZero(AndNot(Create(double.PositiveInfinityBits), vector.As())).As();
+ return ~IsZero(AndNot(Vector.PositiveInfinity.As(), vector.As())).As();
}
return Vector.AllBitsSet;
}
@@ -1484,11 +1562,11 @@ public static Vector IsNegativeInfinity(Vector vector)
{
if (typeof(T) == typeof(float))
{
- return Equals(vector, Create(float.NegativeInfinity).As());
+ return Equals(vector, Vector.NegativeInfinity.As());
}
else if (typeof(T) == typeof(double))
{
- return Equals(vector, Create(double.NegativeInfinity).As());
+ return Equals(vector, Vector.NegativeInfinity.As());
}
return Vector.Zero;
}
@@ -1559,11 +1637,11 @@ public static Vector IsPositiveInfinity(Vector vector)
{
if (typeof(T) == typeof(float))
{
- return Equals(vector, Create(float.PositiveInfinity).As());
+ return Equals(vector, Vector.PositiveInfinity.As());
}
else if (typeof(T) == typeof(double))
{
- return Equals(vector, Create(double.PositiveInfinity).As());
+ return Equals(vector, Vector.PositiveInfinity.As());
}
return Vector.Zero;
}
diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector_1.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector_1.cs
index 3cea422e72c638..9799c31049649f 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector_1.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector_1.cs
@@ -577,11 +577,11 @@ public static Vector operator >>(Vector value, int shiftCount)
{
if (typeof(T) == typeof(float))
{
- return value ^ Vector.Create(-0.0f).As();
+ return value ^ Vector.NegativeZero.As();
}
else if (typeof(T) == typeof(double))
{
- return value ^ Vector.Create(-0.0).As();
+ return value ^ Vector.NegativeZero.As();
}
else
{
diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/SimdVectorExtensions.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/SimdVectorExtensions.cs
index 74b3e7729a5d4f..666497b294eaa2 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/SimdVectorExtensions.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/SimdVectorExtensions.cs
@@ -1,6 +1,8 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
+using System.Numerics;
+
namespace System.Runtime.Intrinsics
{
internal static unsafe class SimdVectorExtensions
diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs
index 6aac6ab0314a74..e26aaf0effb926 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs
@@ -49,6 +49,93 @@ public static bool IsHardwareAccelerated
get => IsHardwareAccelerated;
}
+ /// The type of the elements in the vector.
+ extension(Vector128)
+ where T : IFloatingPointConstants
+ {
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 E
+ {
+ [Intrinsic]
+ get => Create(T.E);
+ }
+
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 Pi
+ {
+ [Intrinsic]
+ get => Create(T.Pi);
+ }
+
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 Tau
+ {
+ [Intrinsic]
+ get => Create(T.Tau);
+ }
+ }
+
+ /// The type of the elements in the vector.
+ extension(Vector128)
+ where T : IFloatingPointIeee754
+ {
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 Epsilon
+ {
+ [Intrinsic]
+ get => Create(T.Epsilon);
+ }
+
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 NaN
+ {
+ [Intrinsic]
+ get => Create(T.NaN);
+ }
+
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 NegativeInfinity
+ {
+ [Intrinsic]
+ get => Create(T.NegativeInfinity);
+ }
+
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 NegativeZero
+ {
+ [Intrinsic]
+ get => Create(T.NegativeZero);
+ }
+
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 PositiveInfinity
+ {
+ [Intrinsic]
+ get => Create(T.PositiveInfinity);
+ }
+ }
+
+ /// The type of the elements in the vector.
+ extension(Vector128)
+ where T : ISignedNumber
+ {
+ /// Gets a new vector with all elements initialized to .
+ /// The type of the current instance () is not supported.
+ public static Vector128 NegativeOne
+ {
+ [Intrinsic]
+ get => Create(T.NegativeOne);
+ }
+ }
+
/// Computes the absolute value of each element in a vector.
/// The type of the elements in the vector.
/// The vector that will have its absolute value computed.
@@ -1970,11 +2057,11 @@ public static Vector128 IsNegativeInfinity(Vector128 vector)
{
if (typeof(T) == typeof(float))
{
- return Equals(vector, Create(float.NegativeInfinity).As());
+ return Equals(vector, Vector128.NegativeInfinity.As());
}
else if (typeof(T) == typeof(double))
{
- return Equals(vector, Create(double.NegativeInfinity).As());
+ return Equals(vector, Vector128.NegativeInfinity.As());
}
return Vector128.Zero;
}
@@ -2045,11 +2132,11 @@ public static Vector128 IsPositiveInfinity(Vector128 vector)
{
if (typeof(T) == typeof(float))
{
- return Equals(vector, Create(float.PositiveInfinity).As());
+ return Equals(vector, Vector128.PositiveInfinity.As());
}
else if (typeof(T) == typeof(double))
{
- return Equals(vector, Create(double.PositiveInfinity).As());
+ return Equals(vector, Vector128.PositiveInfinity.As());
}
return Vector128.Zero;
}
diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128_1.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128_1.cs
index bfcf28021c5845..7c8e8a8a75073d 100644
--- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128_1.cs
+++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128_1.cs
@@ -342,11 +342,11 @@ public static Vector128 operator >>(Vector128 value, int shiftCount)
{
if (typeof(T) == typeof(float))
{
- return vector ^ Vector128.Create(-0.0f).As