- fullpgo_random_gdv
- fullpgo_random_gdv_methodprofiling_only
- fullpgo_random_gdv_edge
+ - fullpgo_methodprofiling_always_optimized
${{ if in(parameters.testGroup, 'gc-longrunning') }}:
longRunningGcTests: true
scenarios:
// 0) Instrument all IL-only code, R2R'd code is never instrumented
// 1) Instrument only hot IL-only and hot R2R code (use optimizations in the instrumented tier for hot R2R and no optimizations for hot IL-only)
RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_TieredPGO_InstrumentOnlyHotCode, W("TieredPGO_InstrumentOnlyHotCode"), 1, "Strategy for TieredPGO, see comments in clrconfigvalues.h")
+
+// By default, we only use optimizations in instrumented tiers for hot R2R code only.
+RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_TieredPGO_InstrumentedTierAlwaysOptimized, W("TieredPGO_InstrumentedTierAlwaysOptimized"), 0, "Always use optimizations inside instrumented tiers")
#endif
///
// 3) Unoptimized instrumented tier is faster to produce and wire up
nextTier = NativeCodeVersion::OptimizationTier0Instrumented;
+#if _DEBUG
+ if (CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_TieredPGO_InstrumentedTierAlwaysOptimized) != 0)
+ {
+ // Override that behavior and always use optimizations.
+ nextTier = NativeCodeVersion::OptimizationTier1Instrumented;
+ }
+#endif
+
// NOTE: we might consider using OptimizationTier1Instrumented if the previous Tier0
// made it to Tier1-OSR.
}
DOTNET_JitRandomEdgeCounts;
DOTNET_JitRandomOnStackReplacement;
DOTNET_JitRandomlyCollect64BitCounts;
+ DOTNET_TieredPGO_InstrumentedTierAlwaysOptimized;
DOTNET_JitForceControlFlowGuard;
DOTNET_JitCFGUseDispatcher;
RunningIlasmRoundTrip
<TestEnvironment Include="defaultpgo" TieredPGO="1" TieredCompilation="1" TC_QuickJitForLoops="1" />
<TestEnvironment Include="fullpgo" TieredPGO="1" TieredCompilation="1" TC_QuickJitForLoops="1" ReadyToRun="0"/>
<TestEnvironment Include="fullpgo_methodprofiling" TieredPGO="1" TieredCompilation="1" TC_QuickJitForLoops="1" ReadyToRun="0" JitDelegateProfiling="1" JitVTableProfiling="1" />
+ <TestEnvironment Include="fullpgo_methodprofiling_always_optimized" TieredPGO="1" TieredCompilation="1" TC_QuickJitForLoops="1" ReadyToRun="0" JitDelegateProfiling="1" JitVTableProfiling="1" TieredPGO_InstrumentedTierAlwaysOptimized="1" />
<TestEnvironment Include="fullpgo_random_gdv" TieredPGO="1" TieredCompilation="1" TC_QuickJitForLoops="1" ReadyToRun="0" JitRandomGuardedDevirtualization="1" JitRandomlyCollect64BitCounts="1" />
<TestEnvironment Include="fullpgo_random_gdv_methodprofiling_only" TieredPGO="1" TieredCompilation="1" TC_QuickJitForLoops="1" ReadyToRun="0" JitRandomGuardedDevirtualization="1" JitClassProfiling="0" JitDelegateProfiling="1" JitVTableProfiling="1" JitRandomlyCollect64BitCounts="1" />
<TestEnvironment Include="fullpgo_random_gdv_edge" TieredPGO="1" TieredCompilation="1" TC_QuickJitForLoops="1" ReadyToRun="0" JitRandomGuardedDevirtualization="1" JitRandomEdgeCounts="1" JitRandomlyCollect64BitCounts="1" />