-
Couldn't load subscription status.
- Fork 5.2k
[clr-interp] Enhance InterpMode and CI testing #120955
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
davidwrighton
commented
Oct 21, 2025
- Enhance InterpMode flag to autoimply various other flags like ReadyToRun=0 EnableHWIntrinsic=0 consistently, so that InterpMode can be used on its own to control interpretation behavior
- The comments around InterpMode are now accurate as to what they imply
- Enhance CI to allow testing of various interpreter scenarios (The existing model + InterModes 1, 2, and 3)
- Enhance InterpMode flag to autoimply various other flags like ReadyToRun=0 EnableHWIntrinsic=0 consistently, so that InterpMode can be used on its own to control interpretation behavior - The comments around InterpMode are now accurate as to what they imply - Enhance CI to allow testing of various interpreter scenarios (The existing model + InterModes 1, 2, and 3)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR enhances the InterpMode configuration flag to automatically imply related settings (ReadyToRun=0, EnableHWIntrinsic=0) and expands CI testing to cover multiple interpreter scenarios (InterpMode 1, 2, and 3) in addition to the existing test model.
Key Changes:
- InterpMode now auto-configures dependent flags (ReadyToRun, EnableHWIntrinsic, vector widths) based on mode value
- CI infrastructure updated to test InterpMode scenarios 1-3 with various tiered compilation settings
- Test execution scripts enhanced to detect and skip interpreter-incompatible tests when DOTNET_InterpMode is set
Reviewed Changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/tests/Common/testenvironment.proj | Adds InterpMode to environment variables and defines six new test scenarios for interpreter modes 1-3 with/without tiered compilation |
| src/tests/Common/CLRTest.Execute.Batch.targets | Adds Windows batch script logic to skip interpreter-incompatible tests when DOTNET_InterpMode is set and conditionally sets DOTNET_Interpreter |
| src/tests/Common/CLRTest.Execute.Bash.targets | Adds Bash script logic to skip interpreter-incompatible tests when DOTNET_InterpMode is set and conditionally sets DOTNET_Interpreter |
| src/coreclr/vm/jitinterface.cpp | Simplifies interpreter loading logic by consolidating config checks into EnableInterpreter() |
| src/coreclr/vm/jithost.cpp | Adds special handling for EnableHWIntrinsic config queries to respect EEConfig settings |
| src/coreclr/vm/eeconfig.h | Declares enableInterpreter and enableHWIntrinsic fields and their accessor methods |
| src/coreclr/vm/eeconfig.cpp | Implements InterpMode auto-configuration logic: sets enableInterpreter, disables ReadyToRun for modes 2+, and disables HWIntrinsic for mode 3 |
| src/coreclr/vm/codeman.cpp | Updates CPU info setup to respect EnableHWIntrinsic config and constrains vector widths to 128 bits for InterpMode 3 |
| src/coreclr/interpreter/eeinterp.cpp | Updates comments describing InterpMode values to accurately reflect implied settings |
| eng/pipelines/common/templates/runtimes/run-test-job.yml | Configures CI to run interpreter test scenarios, with reduced coverage for PRs |
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
|
Tagging subscribers to this area: @BrzVlad, @janvorli, @kg |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thank you!
|
/ba-g Libraries_NET481 build failure is fixed by #120991 and is not related to this change. |