[CI] Run Vulkan HAL CTS under rocjitsu (#25001)

Extend the Vulkan simulator helper to select HAL CTS alongside the
existing e2e tests on gfx1100 and gfx1201. Reuse the same CI job, build,
and pinned TheRock SDK.

Give the raw SPIR-V CTS executable a five-minute timeout. Its concurrent
replay case submits two dispatches of 8M workgroups and takes just over
a minute on simulated gfx1100, exceeding the previous 60-second limit.
Regenerate the CMake test definition from Bazel.

The assertions-enabled local run passes all 192 selected test
executables on each GPU, including 43 HAL CTS executables, with existing
per-case capability skips retained. Shell, actionlint, and pre-commit
checks pass.

Assisted-by: codex
diff --git a/.github/workflows/ci_linux_x64_clang.yml b/.github/workflows/ci_linux_x64_clang.yml
index fef9a2d..339c8a9 100644
--- a/.github/workflows/ci_linux_x64_clang.yml
+++ b/.github/workflows/ci_linux_x64_clang.yml
@@ -88,7 +88,7 @@
           IREE_ROCJITSU_RUN_ID: ci
           CTEST_PARALLEL_LEVEL: 8
 
-      - name: Run Vulkan e2e tests under rocjitsu
+      - name: Run Vulkan e2e and HAL CTS tests under rocjitsu
         if: ${{ !cancelled() && steps.build_iree.outcome == 'success' }}
         timeout-minutes: 60
         run: |
diff --git a/build_tools/cmake/test_vulkan_targets_with_rocjitsu.sh b/build_tools/cmake/test_vulkan_targets_with_rocjitsu.sh
index d7d1dbf..149a539 100755
--- a/build_tools/cmake/test_vulkan_targets_with_rocjitsu.sh
+++ b/build_tools/cmake/test_vulkan_targets_with_rocjitsu.sh
@@ -6,7 +6,7 @@
 # See https://llvm.org/LICENSE.txt for license information.
 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-# Runs the regular build's Vulkan compute e2e tests through Mesa RADV on
+# Runs the regular build's Vulkan compute e2e and HAL CTS tests through RADV on
 # simulated RDNA3/RDNA4 GPUs. Build all and iree-test-deps before running.
 set -euo pipefail
 
@@ -15,8 +15,9 @@
 Usage: test_vulkan_targets_with_rocjitsu.sh [BUILD_DIR] [TARGET ...]
 
 BUILD_DIR defaults to IREE_BUILD_DIR or "build". Targets default to gfx1100
-and gfx1201. The existing SPIR-V test modules are shared between targets;
-RADV compiles them to the simulated GPU's native instructions at runtime.
+and gfx1201. Runs the Vulkan compute e2e and HAL CTS tests. The existing
+SPIR-V test modules are shared between targets; RADV compiles them to the
+simulated GPU's native instructions at runtime.
 
 Requires Mesa RADV and rocjitsu with Vulkan compute support.
 Set ROCJITSU_BIN and ROCJITSU_CONFIG_DIR for a source build, or ROCM_ROOT
@@ -106,7 +107,8 @@
   -u VK_ADD_DRIVER_FILES -u VK_INSTANCE_LAYERS -u VK_LOADER_DRIVERS_SELECT
   -u VK_LOADER_DRIVERS_DISABLE -u RADV_FORCE_FAMILY -u IREE_VULKAN_DISABLE
   "VK_DRIVER_FILES=${VK_DRIVER_FILES}" "VK_ICD_FILENAMES=${VK_DRIVER_FILES}" DRI_PRIME=)
-CTEST_FILTER=(-L '^driver=vulkan$' -L '^iree/tests/e2e/'
+CTEST_FILTER=(-L '^driver=vulkan$'
+  -L '^iree/(tests/e2e/|hal/drivers/vulkan/cts$)'
   -LE '^requires-gpu-(nvidia|sm[0-9]+)$|^very-expensive$|^requires-multiple-devices$')
 if [[ -n "${IREE_ROCJITSU_TESTS_REGEX:-}" ]]; then
   CTEST_FILTER+=(-R "${IREE_ROCJITSU_TESTS_REGEX}")
@@ -118,7 +120,7 @@
   log_dir="${WORK_DIR}/logs/${RUN_ID}/vulkan/${target}"
   mkdir -p "${log_dir}"
   config="$(realpath "${ROCJITSU_CONFIG_DIR}/${CONFIGS[${target}]}")"
-  echo "=== Vulkan e2e tests: ${target} ==="
+  echo "=== Vulkan e2e and HAL CTS tests: ${target} ==="
   if (
     # Keep socket paths short and isolate concurrent helper invocations.
     runtime_dir="$(mktemp -d "${TMPDIR:-/tmp}/iree-vulkan-${target}.XXXXXX")" || exit 1
diff --git a/runtime/src/iree/hal/drivers/vulkan/cts/BUILD.bazel b/runtime/src/iree/hal/drivers/vulkan/cts/BUILD.bazel
index bc2787d..ab19a22 100644
--- a/runtime/src/iree/hal/drivers/vulkan/cts/BUILD.bazel
+++ b/runtime/src/iree/hal/drivers/vulkan/cts/BUILD.bazel
@@ -791,6 +791,9 @@
 
 iree_runtime_cc_test(
     name = "bda_raw_spirv_tests",
+    # Concurrent replay coverage dispatches 8M workgroups twice, taking over a
+    # minute under CPU simulation.
+    timeout = "moderate",
     srcs = [
         "bda_raw_spirv_test.cc",
         "//runtime/src/iree/hal/cts/util:test_main.cc",
diff --git a/runtime/src/iree/hal/drivers/vulkan/cts/CMakeLists.txt b/runtime/src/iree/hal/drivers/vulkan/cts/CMakeLists.txt
index 5a9daac..c7b865d 100644
--- a/runtime/src/iree/hal/drivers/vulkan/cts/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/vulkan/cts/CMakeLists.txt
@@ -767,6 +767,8 @@
     "driver=vulkan"
     "requires-gpu-vulkan"
     "vulkan_uses_vk_khr_buffer_device_address"
+  TIMEOUT
+    300
 )
 
 iree_cc_test(