diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml
index 53dba08d4293fc..e8ca30b4e54e22 100644
--- a/eng/pipelines/common/templates/runtimes/run-test-job.yml
+++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml
@@ -465,6 +465,12 @@ jobs:
- jitminopts
- forcerelocs
- gcstress0xf
+ ${{ if in(parameters.testGroup, 'pgo') }}:
+ scenarios:
+ - nopgo
+ - defaultpgo
+ - dynamicpgo
+ - fullpgo
${{ if in(parameters.testGroup, 'gc-longrunning') }}:
longRunningGcTests: true
scenarios:
@@ -481,10 +487,7 @@ jobs:
scenarios:
- jitosr
- jitosr_stress
- - jitehwritethru
- jitobjectstackallocation
- - jitpgo
- - jitpgo_inline
${{ if in(parameters.testGroup, 'ilasm') }}:
scenarios:
- ilasmroundtrip
diff --git a/eng/pipelines/coreclr/libraries-pgo.yml b/eng/pipelines/coreclr/libraries-pgo.yml
new file mode 100644
index 00000000000000..0914451b55ec66
--- /dev/null
+++ b/eng/pipelines/coreclr/libraries-pgo.yml
@@ -0,0 +1,55 @@
+trigger: none
+
+schedules:
+- cron: "0 16 * * 0,6"
+ displayName: Sat and Sun at 8:00 AM (UTC-8:00)
+ branches:
+ include:
+ - main
+ always: true
+
+jobs:
+
+#
+# Build CoreCLR checked and libraries Release
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/build-coreclr-and-libraries-job.yml
+ buildConfig: checked
+ platforms:
+ - Linux_x64
+ - Linux_arm
+ - Linux_arm64
+ - windows_x86
+ - windows_x64
+ - windows_arm64
+ jobParameters:
+ # libraries test build platforms
+ testBuildPlatforms:
+ - Linux_x64
+ - windows_x64
+
+#
+# Libraries Test Run using Release libraries, Checked CoreCLR, and stress modes
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/libraries/run-test-job.yml
+ buildConfig: Release
+ platforms:
+ - Linux_arm
+ - Linux_arm64
+ - Linux_x64
+ - windows_arm64
+ - windows_x64
+ - windows_x86
+ helixQueueGroup: libraries
+ helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+ jobParameters:
+ timeoutInMinutes: 150
+ testScope: innerloop
+ liveRuntimeBuildConfig: checked
+ dependsOnTestBuildConfiguration: Release
+ dependsOnTestArchitecture: x64
+ coreclrTestGroup: pgo
diff --git a/eng/pipelines/coreclr/pgo.yml b/eng/pipelines/coreclr/pgo.yml
new file mode 100644
index 00000000000000..132464b8dad59f
--- /dev/null
+++ b/eng/pipelines/coreclr/pgo.yml
@@ -0,0 +1,57 @@
+trigger: none
+
+schedules:
+- cron: "0 8 * * *"
+ displayName: Mon through Sun at 12:00 AM (UTC-8:00)
+ branches:
+ include:
+ - main
+ always: true
+
+jobs:
+
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/build-coreclr-and-libraries-job.yml
+ buildConfig: checked
+ platforms:
+ - Linux_arm
+ - Linux_arm64
+ - Linux_x64
+ - OSX_arm64
+ - windows_arm
+ - windows_arm64
+ - windows_x64
+ - windows_x86
+ - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64
+ jobParameters:
+ testGroup: pgo
+
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
+ buildConfig: checked
+ platforms:
+ - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64
+ jobParameters:
+ testGroup: pgo
+ liveLibrariesBuildConfig: Release
+
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
+ buildConfig: checked
+ platforms:
+ - Linux_arm
+ - Linux_arm64
+ - Linux_x64
+ - OSX_arm64
+ - windows_arm
+ - windows_arm64
+ - windows_x64
+ - windows_x86
+ helixQueueGroup: ci
+ helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+ jobParameters:
+ testGroup: pgo
+ liveLibrariesBuildConfig: Release
diff --git a/eng/pipelines/libraries/run-test-job.yml b/eng/pipelines/libraries/run-test-job.yml
index 9e073dd6e74cd6..3e9d2de85f49fb 100644
--- a/eng/pipelines/libraries/run-test-job.yml
+++ b/eng/pipelines/libraries/run-test-job.yml
@@ -193,3 +193,10 @@ jobs:
- gcstress0xc_jitstress1
- gcstress0xc_jitstress2
- gcstress0xc_jitminopts_heapverify1
+ ${{ if in(parameters.coreclrTestGroup, 'pgo') }}:
+ scenarios:
+ - nopgo
+ - defaultpgo
+ - dynamicpgo
+ - fullpgo
+
diff --git a/src/tests/Common/testenvironment.proj b/src/tests/Common/testenvironment.proj
index 762ba145e325b1..b1a359d90283bf 100644
--- a/src/tests/Common/testenvironment.proj
+++ b/src/tests/Common/testenvironment.proj
@@ -148,12 +148,13 @@
-
-
-
+
+
+
+