diff options
author | David Wrighton <davidwr@microsoft.com> | 2021-03-19 07:27:51 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-19 07:27:51 +0300 |
commit | 5d4a85156cc5ab999997f0c6e6d44f9a28208537 (patch) | |
tree | f1b7606939e9ae2f6fc888785fe7d7367de4754d /eng/restore | |
parent | 3df7a6e3dd4ab11494f4e3a2394b386a73bb446f (diff) |
Enable the latest managed pgo data (#49793)
- Implementation is parallel to existing ibc handling, so that it can be toggled on/off by adjusting the `UsingToolIbcOptimization` property
- Use the same data for all assemblies produced in current build
- Apply data to release builds only
- Disable mismatch assertions in jit for current state where il mismatches are common
Diffstat (limited to 'eng/restore')
-rw-r--r-- | eng/restore/optimizationData.targets | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/eng/restore/optimizationData.targets b/eng/restore/optimizationData.targets index 9b431aa953a..c7ce30fadd2 100644 --- a/eng/restore/optimizationData.targets +++ b/eng/restore/optimizationData.targets @@ -34,4 +34,50 @@ </Target> + + <ItemGroup> + <!-- Mibc data to use when exact architecture match is available --> + <MIBCPackageDef Include="optimization.windows_nt-x86.mibc.runtime" Version="$(optimizationwindows_ntx86MIBCRuntimeVersion)" MibcArchitecture="Windows/x86"/> + <MIBCPackageDef Include="optimization.windows_nt-x64.mibc.runtime" Version="$(optimizationwindows_ntx64MIBCRuntimeVersion)" MibcArchitecture="Windows/x64"/> + <MIBCPackageDef Include="optimization.linux-x64.mibc.runtime" Version="$(optimizationlinuxx64MIBCRuntimeVersion)" MibcArchitecture="Linux/x64"/> + + <!-- Mibc data to use when exact architecture match not available --> + <MIBCPackageDef Include="optimization.windows_nt-x64.mibc.runtime" Version="$(optimizationwindows_ntx64MIBCRuntimeVersion)" MibcArchitecture="Windows"/> + <MIBCPackageDef Include="optimization.linux-x64.mibc.runtime" Version="$(optimizationlinuxx64MIBCRuntimeVersion)" MibcArchitecture="Linux"/> + <MIBCPackageDef Include="optimization.linux-x64.mibc.runtime" Version="$(optimizationlinuxx64MIBCRuntimeVersion)" MibcArchitecture="OSX"/> + + <MIBCPackage Include="@(MIBCPackageDef->HasMetadata('MibcArchitecture')->WithMetadataValue('MibcArchitecture','$(TargetOS)/$(TargetArchitecture)'))" /> + <MIBCPackage Include="@(MIBCPackageDef->HasMetadata('MibcArchitecture')->WithMetadataValue('MibcArchitecture','$(TargetOS)'))" Condition="'@(MIBCPackage)' == ''" /> + + <!-- Fallback in case no os specific data is available--> + <MIBCPackage Include="optimization.linux-x64.mibc.runtime" Version="$(optimizationlinuxx64MIBCRuntimeVersion)" Condition="'@(MIBCPackage)' == ''" /> + + <PackageDownload Include="@(MIBCPackage)" Version="[%(Version)]" /> + </ItemGroup> + + <!-- IBC data packages don't follow NuGet conventions. --> + <Target Name="GetMIBCData" + AfterTargets="Restore"> + + <ItemGroup> + <MIBCPackage> + <PackagePath>$(NuGetPackageRoot)%(MIBCPackage.Identity)/%(MIBCPackage.Version)</PackagePath> + </MIBCPackage> + <_optimizationMibcFile Include="%(MIBCPackage.PackagePath)/**/*.mibc" SubdirectoryName="$(TargetOS)/$(TargetArchitecture)" /> + <ExcessFilesCurrentlyPresent Include="$(MibcOptimizationDataDir)/**" + Exclude="@(_optimizationMibcFile->'$(MibcOptimizationDataDir)%(SubdirectoryName)/%(RecursiveDir)%(Filename)%(Extension)')"/> + </ItemGroup> + + <Error Condition="'@(_optimizationMibcFile)' == ''" Text="Failed to restore Mibc optimization data" /> + + <!-- Clean mibc restore directory so that no extra mibc files are present. Improves incremental build resiliency --> + <Delete Files="@(ExcessFilesCurrentlyPresent)" /> + + <!-- Copy the correct mibc files into place --> + <Copy SourceFiles="@(_optimizationMibcFile)" + DestinationFiles="@(_optimizationMibcFile->'$(MibcOptimizationDataDir)%(SubdirectoryName)/%(RecursiveDir)%(Filename)%(Extension)')" + SkipUnchangedFiles="true" + UseHardlinksIfPossible="true" /> + + </Target> </Project> |