Port #39096 - Implementation of CSE for large constants on ARM64#39883
Merged
briansull merged 1 commit intodotnet:release/5.0-preview8from Jul 24, 2020
Merged
Port #39096 - Implementation of CSE for large constants on ARM64#39883briansull merged 1 commit intodotnet:release/5.0-preview8from
briansull merged 1 commit intodotnet:release/5.0-preview8from
Conversation
* Change the type of csdHashKey to size_t * Update gtCostSz and gtCostEx for constant nodes * Implementation of code size optimization, CSE of constant values for ARM64 Implementation of code size optimization, CSE of constant values for ARM64 We will share a single CSE for constants that differ only in their low 12 bits on ARM64 Number of shared constant low bits set in target.h CSE_CONST_SHARED_LOW_BITS we use 12 bits on Arm platforms and 16 bits on XArch platforms Disable the CSE of the REG_R2R_INDIRECT_PARAM on Arm32 as it hits Assertion failed 'candidates != candidateBit' in lsra.cpp Line: 3723 Config variable: COMPlus_JitConstCSE // Default 0: enable the CSE of Constants, including nearby offsets. (only for ARM64) // If 1, disable all the CSE of Constants // If 2, enable the CSE of Constants but don't combine with nearby offsets. (only for ARM64) // If 3, enable the CSE of Constants including nearby offsets. (all platforms) // If 4, enable the CSE of Constants but don't combine with nearby offsets. (all platforms) // * Added additional Priority 0 test coverage for Floating Point optimizations * Fix for COMPLUS_JitConstCSE=4 * Renamed config variable from COMPlus_JitDisableConstCSE to COMPlus_JitConstCSE * Updated with Codereview feedback, removed sort from Const CSE phase * Fix for assertionProp issue in the refTypesdynamic test
Contributor
Author
|
I believe that the test failure is due to: #39473 runtime (Build Browser wasm Release AllSubsets_Mono) Failing after 74m — Build Browser wasm Release AllSubsets_Mono failed This is what I found in the console log for the test leg: |
Contributor
Author
|
@jeffschwMSFT PTAL |
Contributor
Author
BruceForstall
approved these changes
Jul 24, 2020
sandreenko
approved these changes
Jul 24, 2020
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implementation of code size optimization, CSE of large constant for ARM64
We will share a single CSE for constants that differ only in their low 12 bits on ARM64
Config variable: COMPlus_JitConstCSE
// Default 0: enable the CSE of Constants, including nearby offsets. (only for ARM64)
// If 1, disable all the CSE of Constants
// If 2, enable the CSE of Constants but don't combine with nearby offsets. (only for ARM64)
// If 3, enable the CSE of Constants including nearby offsets. (all platforms)
// If 4, enable the CSE of Constants but don't combine with nearby offsets. (all platforms)
//