Correctly tag Vulkan Ampere tests as requiring sm80 (#14039)

Also exclude requires-gpu-sm80 in the same places we exclude
requires-gpu-nvidia. I'm actually not sure how this wasn't causing
errors. I went with a relaxed regex of any label starting with
"requires-gpu" in our CMake build scripts, but Bazel requires listing
tags explicitly.

This actually also raised a question for me. Why are our tests for
Valhall tagges as "requires-gpu-nvidia"? I would expect these to not
even *run* on an Nvidia GPU... Do we just happen to not take advantage
of any Valhall-specific features?
diff --git a/.github/workflows/build_and_test_android.yml b/.github/workflows/build_and_test_android.yml
index 4797d9b..3fcaab8 100644
--- a/.github/workflows/build_and_test_android.yml
+++ b/.github/workflows/build_and_test_android.yml
@@ -116,9 +116,9 @@
           - device-name: pixel-4
             label-exclude: "vulkan"
           - device-name: pixel-6-pro
-            label-exclude: "^requires-gpu-nvidia$"
+            label-exclude: "^requires-gpu"
           - device-name: moto-edge-x30
-            label-exclude: "^requires-gpu-nvidia$"
+            label-exclude: "^requires-gpu"
     name: test_on_${{ matrix.target.device-name }}
     runs-on:
       - self-hosted # must come first
diff --git a/build_tools/bazel/build_core.sh b/build_tools/bazel/build_core.sh
index 08a961a..ccad1ba 100755
--- a/build_tools/bazel/build_core.sh
+++ b/build_tools/bazel/build_core.sh
@@ -67,7 +67,7 @@
   default_test_tag_filters+=("-driver=vulkan")
 fi
 if [[ "${IREE_NVIDIA_GPU_TESTS_DISABLE?}" == 1 ]]; then
-  default_test_tag_filters+=("-requires-gpu-nvidia")
+  default_test_tag_filters+=("-requires-gpu-nvidia" "-requires-gpu-sm80")
 fi
 
 # Use user-environment variables if set, otherwise use CI-friendly defaults.
diff --git a/build_tools/cmake/build_and_test_asan.sh b/build_tools/cmake/build_and_test_asan.sh
index b29d4e2..30e5418 100755
--- a/build_tools/cmake/build_and_test_asan.sh
+++ b/build_tools/cmake/build_and_test_asan.sh
@@ -117,7 +117,7 @@
     label_exclude_args+=("^vulkan_uses_vk_khr_shader_float16_int8$")
   fi
   if [[ "${IREE_NVIDIA_GPU_TESTS_DISABLE}" == 1 ]]; then
-    label_exclude_args+=("^requires-gpu-nvidia$")
+    label_exclude_args+=("^requires-gpu")
   fi
 
   label_exclude_regex="($(IFS="|" ; echo "${label_exclude_args[*]?}"))"
diff --git a/build_tools/cmake/ctest_all.sh b/build_tools/cmake/ctest_all.sh
index 429315d..802cb0b 100755
--- a/build_tools/cmake/ctest_all.sh
+++ b/build_tools/cmake/ctest_all.sh
@@ -72,7 +72,7 @@
   label_exclude_args+=("^vulkan_uses_vk_khr_shader_float16_int8$")
 fi
 if [[ "${IREE_NVIDIA_GPU_TESTS_DISABLE}" == 1 ]]; then
-  label_exclude_args+=("^requires-gpu-nvidia$")
+  label_exclude_args+=("^requires-gpu$")
 fi
 
 IFS=',' read -ra extra_label_exclude_args <<< "${IREE_EXTRA_COMMA_SEPARATED_CTEST_LABELS_TO_EXCLUDE:-}"
diff --git a/tests/e2e/matmul/BUILD.bazel b/tests/e2e/matmul/BUILD.bazel
index 28a3daa..d35ba89 100644
--- a/tests/e2e/matmul/BUILD.bazel
+++ b/tests/e2e/matmul/BUILD.bazel
@@ -409,20 +409,18 @@
 ]]
 
 [iree_generated_trace_runner_test(
-    name = "e2e_matmul_direct_{0}_gpu_large_{1}".format(
-        lhs_rhs_type,
-        vulkan_target_and_pipeline[0],
-    ),
+    name = "e2e_matmul_direct_{0}_gpu_large_valhall".format(lhs_rhs_type),
     compiler_flags = [
-        "--iree-vulkan-target-triple=%s" % vulkan_target_and_pipeline[0],
+        "--iree-vulkan-target-triple=valhall-unknown-android31",
     ],
     generator = ":generate_e2e_matmul_tests",
     generator_args = [
         "--lhs_rhs_type=%s" % lhs_rhs_type,
         "--shapes=gpu_large_aligned",
-        "--compilation_info=%s" % vulkan_target_and_pipeline[1],
+        "--compilation_info=SPIRVVectorizeMali",
     ],
     tags = [
+        # Nvidia GPUs support a superset of Valhall features
         "requires-gpu-nvidia",
         "vulkan_uses_vk_khr_shader_float16_int8",
     ],
@@ -430,10 +428,33 @@
         ("vulkan-spirv", "vulkan"),
     ],
     trace_runner = "//tools:iree-e2e-matmul-test",
-) for vulkan_target_and_pipeline in [
-    ("valhall-unknown-android31", "SPIRVVectorizeMali"),
-    ("ampere-unknown-linux", "SPIRVVectorizeNVIDIA"),
-] for lhs_rhs_type in [
+) for lhs_rhs_type in [
+    "i8",
+    "f16",
+    "f32",
+]]
+
+[iree_generated_trace_runner_test(
+    name = "e2e_matmul_direct_{0}_gpu_large_ampere".format(lhs_rhs_type),
+    compiler_flags = [
+        "--iree-vulkan-target-triple=ampere-unknown-linux",
+    ],
+    generator = ":generate_e2e_matmul_tests",
+    generator_args = [
+        "--lhs_rhs_type=%s" % lhs_rhs_type,
+        "--shapes=gpu_large_aligned",
+        "--compilation_info=SPIRVVectorizeNVIDIA",
+    ],
+    tags = [
+        "requires-gpu-nvidia",
+        "requires-gpu-sm80",
+        "vulkan_uses_vk_khr_shader_float16_int8",
+    ],
+    target_backends_and_drivers = [
+        ("vulkan-spirv", "vulkan"),
+    ],
+    trace_runner = "//tools:iree-e2e-matmul-test",
+) for lhs_rhs_type in [
     "i8",
     "f16",
     "f32",
diff --git a/tests/e2e/matmul/CMakeLists.txt b/tests/e2e/matmul/CMakeLists.txt
index 133d678..6a15c4e 100644
--- a/tests/e2e/matmul/CMakeLists.txt
+++ b/tests/e2e/matmul/CMakeLists.txt
@@ -538,7 +538,7 @@
 
 iree_generated_trace_runner_test(
   NAME
-    e2e_matmul_direct_i8_gpu_large_valhall-unknown-android31
+    e2e_matmul_direct_i8_gpu_large_valhall
   GENERATOR
     "generate_e2e_matmul_tests.py"
   GENERATOR_ARGS
@@ -560,7 +560,7 @@
 
 iree_generated_trace_runner_test(
   NAME
-    e2e_matmul_direct_f16_gpu_large_valhall-unknown-android31
+    e2e_matmul_direct_f16_gpu_large_valhall
   GENERATOR
     "generate_e2e_matmul_tests.py"
   GENERATOR_ARGS
@@ -582,7 +582,7 @@
 
 iree_generated_trace_runner_test(
   NAME
-    e2e_matmul_direct_f32_gpu_large_valhall-unknown-android31
+    e2e_matmul_direct_f32_gpu_large_valhall
   GENERATOR
     "generate_e2e_matmul_tests.py"
   GENERATOR_ARGS
@@ -604,7 +604,7 @@
 
 iree_generated_trace_runner_test(
   NAME
-    e2e_matmul_direct_i8_gpu_large_ampere-unknown-linux
+    e2e_matmul_direct_i8_gpu_large_ampere
   GENERATOR
     "generate_e2e_matmul_tests.py"
   GENERATOR_ARGS
@@ -621,12 +621,13 @@
     "--iree-vulkan-target-triple=ampere-unknown-linux"
   LABELS
     "requires-gpu-nvidia"
+    "requires-gpu-sm80"
     "vulkan_uses_vk_khr_shader_float16_int8"
 )
 
 iree_generated_trace_runner_test(
   NAME
-    e2e_matmul_direct_f16_gpu_large_ampere-unknown-linux
+    e2e_matmul_direct_f16_gpu_large_ampere
   GENERATOR
     "generate_e2e_matmul_tests.py"
   GENERATOR_ARGS
@@ -643,12 +644,13 @@
     "--iree-vulkan-target-triple=ampere-unknown-linux"
   LABELS
     "requires-gpu-nvidia"
+    "requires-gpu-sm80"
     "vulkan_uses_vk_khr_shader_float16_int8"
 )
 
 iree_generated_trace_runner_test(
   NAME
-    e2e_matmul_direct_f32_gpu_large_ampere-unknown-linux
+    e2e_matmul_direct_f32_gpu_large_ampere
   GENERATOR
     "generate_e2e_matmul_tests.py"
   GENERATOR_ARGS
@@ -665,6 +667,7 @@
     "--iree-vulkan-target-triple=ampere-unknown-linux"
   LABELS
     "requires-gpu-nvidia"
+    "requires-gpu-sm80"
     "vulkan_uses_vk_khr_shader_float16_int8"
 )
 
diff --git a/tests/transform_dialect/cuda/BUILD.bazel b/tests/transform_dialect/cuda/BUILD.bazel
index ca1c2dc..7d43838 100644
--- a/tests/transform_dialect/cuda/BUILD.bazel
+++ b/tests/transform_dialect/cuda/BUILD.bazel
@@ -104,6 +104,7 @@
         "nomsan",
         "notsan",
         "noubsan",
+        "requires-gpu-nvidia",
         "requires-gpu-sm80",
         "driver=cuda",
     ],
diff --git a/tests/transform_dialect/cuda/CMakeLists.txt b/tests/transform_dialect/cuda/CMakeLists.txt
index 2ccf09e..44d9758 100644
--- a/tests/transform_dialect/cuda/CMakeLists.txt
+++ b/tests/transform_dialect/cuda/CMakeLists.txt
@@ -81,6 +81,7 @@
     "nomsan"
     "notsan"
     "noubsan"
+    "requires-gpu-nvidia"
     "requires-gpu-sm80"
     "driver=cuda"
 )