summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/hlsl-intrinsic/wave-active-product.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang5
-rw-r--r--tests/hlsl-intrinsic/wave-broadcast-lane-at.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-diverge.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-equality.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-get-lane-index.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-is-first-lane.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-active-product.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang5
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-diverge.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-equality.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-get-active.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-mask-prefix.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-matrix.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang5
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave-vector.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-mask/wave.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-matrix.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-multi-prefix.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-prefix-product.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-prefix-sum.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-read-lane-at-vk.slang6
-rw-r--r--tests/hlsl-intrinsic/wave-read-lane-at.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-shuffle-vk.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-shuffle.slang11
-rw-r--r--tests/hlsl-intrinsic/wave-vector.slang11
-rw-r--r--tests/hlsl-intrinsic/wave.slang11
-rw-r--r--tools/slang-test/options.cpp8
-rw-r--r--tools/slang-test/options.h9
-rw-r--r--tools/slang-test/slang-test-main.cpp215
-rw-r--r--tools/slang-test/test-context.cpp12
-rw-r--r--tools/slang-test/test-context.h9
-rw-r--r--tools/slang-test/test-reporter.cpp5
-rw-r--r--tools/slang-test/test-reporter.h1
42 files changed, 395 insertions, 226 deletions
diff --git a/tests/hlsl-intrinsic/wave-active-product.slang b/tests/hlsl-intrinsic/wave-active-product.slang
index 67b9ca587..7fd42e038 100644
--- a/tests/hlsl-intrinsic/wave-active-product.slang
+++ b/tests/hlsl-intrinsic/wave-active-product.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang b/tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang
index 3c746476a..b67bb601b 100644
--- a/tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang
+++ b/tests/hlsl-intrinsic/wave-broadcast-lane-at-vk.slang
@@ -1,5 +1,6 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST_CATEGORY(wave, compute)
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-broadcast-lane-at.slang b/tests/hlsl-intrinsic/wave-broadcast-lane-at.slang
index bb1523219..ee5ce45ab 100644
--- a/tests/hlsl-intrinsic/wave-broadcast-lane-at.slang
+++ b/tests/hlsl-intrinsic/wave-broadcast-lane-at.slang
@@ -1,9 +1,10 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
// Disabled on VK because glsl can't do WaveReadLaneAt on matrix.
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-diverge.slang b/tests/hlsl-intrinsic/wave-diverge.slang
index 2d500d0c8..1f0e6aac5 100644
--- a/tests/hlsl-intrinsic/wave-diverge.slang
+++ b/tests/hlsl-intrinsic/wave-diverge.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-equality.slang b/tests/hlsl-intrinsic/wave-equality.slang
index 7ed67b632..fc8d28f10 100644
--- a/tests/hlsl-intrinsic/wave-equality.slang
+++ b/tests/hlsl-intrinsic/wave-equality.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-get-lane-index.slang b/tests/hlsl-intrinsic/wave-get-lane-index.slang
index 50cf9822c..84b1c3fea 100644
--- a/tests/hlsl-intrinsic/wave-get-lane-index.slang
+++ b/tests/hlsl-intrinsic/wave-get-lane-index.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-is-first-lane.slang b/tests/hlsl-intrinsic/wave-is-first-lane.slang
index e1f0faef3..4b78647ee 100644
--- a/tests/hlsl-intrinsic/wave-is-first-lane.slang
+++ b/tests/hlsl-intrinsic/wave-is-first-lane.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-active-product.slang b/tests/hlsl-intrinsic/wave-mask/wave-active-product.slang
index 3135586a5..682622580 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-active-product.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-active-product.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang b/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang
index 94a44df97..552ef7144 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at-vk.slang
@@ -1,5 +1,6 @@
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST_CATEGORY(wave-mask, compute)
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang b/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang
index 62d29085f..1fe8a54b2 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-broadcast-lane-at.slang
@@ -1,9 +1,10 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
// Disabled on VK because glsl can't do WaveReadLaneAt on matrix.
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-diverge.slang b/tests/hlsl-intrinsic/wave-mask/wave-diverge.slang
index 51b7d3aeb..63176bac1 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-diverge.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-diverge.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-equality.slang b/tests/hlsl-intrinsic/wave-mask/wave-equality.slang
index 13887b2c8..020e6415a 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-equality.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-equality.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-get-active.slang b/tests/hlsl-intrinsic/wave-mask/wave-get-active.slang
index 393cf7199..7f2c63b86 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-get-active.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-get-active.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang b/tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang
index 9b2e814f2..d6c6cd380 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-get-converged.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang b/tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang
index 2b332bfb5..8d126f2ec 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-is-first-lane.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-mask-prefix.slang b/tests/hlsl-intrinsic/wave-mask/wave-mask-prefix.slang
index a2f25d71b..e80714d02 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-mask-prefix.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-mask-prefix.slang
@@ -1,11 +1,12 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
// We need SM6.5 for these tests
// Disable because version of dxc we are currently using doesn't support SM6.5
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile sm_6_5
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile sm_6_5
// Disabled because we don't have GLSL intrinsics for these it seems
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-matrix.slang b/tests/hlsl-intrinsic/wave-mask/wave-matrix.slang
index dadce4051..3fd551be9 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-matrix.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-matrix.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang b/tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang
index 14ac8d652..56dbf7e4e 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-prefix-product.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang b/tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang
index f756398b8..6149d1cca 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-prefix-sum.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang b/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang
index e0464ae68..39b01bec3 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at-vk.slang
@@ -1,8 +1,9 @@
// This is similar to wave-lane-at.slang but tests more limited supported types for vk.
// We have this 'simple' test, because we can't do matrix (or imat) operations on GLSL/Vk target
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST_CATEGORY(wave-mask, compute)
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang b/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang
index 1b231fbc1..e2dccffea 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-read-lane-at.slang
@@ -1,9 +1,10 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
// Disabled on VK because glsl can't do WaveReadLaneAt on matrix.
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang b/tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang
index fa9f4b3e5..fe4bedfe7 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-shuffle-vk.slang
@@ -1,9 +1,10 @@
+//TEST_CATEGORY(wave-mask, compute)
// Disabled because main tests is wave-shuffle.slang, this just tests VK
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang b/tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang
index a559aae8f..d108fc39e 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-shuffle.slang
@@ -1,10 +1,11 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
//Disabled on D3D, because in general WaveShuffle requires hardware that doesn't have the 'uniform laneId across Wave' restriction.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
// Disabled because vk doesn't currently support matrix types. See wave-shuffle-vk.slang
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave-vector.slang b/tests/hlsl-intrinsic/wave-mask/wave-vector.slang
index 083e1b5b9..dc6947bfd 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave-vector.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave-vector.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-mask/wave.slang b/tests/hlsl-intrinsic/wave-mask/wave.slang
index 346940cb2..9d6fbac46 100644
--- a/tests/hlsl-intrinsic/wave-mask/wave.slang
+++ b/tests/hlsl-intrinsic/wave-mask/wave.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute
+//TEST_CATEGORY(wave-mask, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-matrix.slang b/tests/hlsl-intrinsic/wave-matrix.slang
index 50acc4a71..dd239a155 100644
--- a/tests/hlsl-intrinsic/wave-matrix.slang
+++ b/tests/hlsl-intrinsic/wave-matrix.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-multi-prefix.slang b/tests/hlsl-intrinsic/wave-multi-prefix.slang
index a1eb0e7a9..a3adc1a80 100644
--- a/tests/hlsl-intrinsic/wave-multi-prefix.slang
+++ b/tests/hlsl-intrinsic/wave-multi-prefix.slang
@@ -1,11 +1,12 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
// We need SM6.5 for these tests
// Disable because version of dxc we are currently using doesn't support SM6.5
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile sm_6_5
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile sm_6_5
// Disabled because we don't have GLSL intrinsics for these it seems
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-prefix-product.slang b/tests/hlsl-intrinsic/wave-prefix-product.slang
index 436ce06f7..888d3ba22 100644
--- a/tests/hlsl-intrinsic/wave-prefix-product.slang
+++ b/tests/hlsl-intrinsic/wave-prefix-product.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-prefix-sum.slang b/tests/hlsl-intrinsic/wave-prefix-sum.slang
index 358debedc..4b86da763 100644
--- a/tests/hlsl-intrinsic/wave-prefix-sum.slang
+++ b/tests/hlsl-intrinsic/wave-prefix-sum.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-read-lane-at-vk.slang b/tests/hlsl-intrinsic/wave-read-lane-at-vk.slang
index 3bd6b36b8..f085081b0 100644
--- a/tests/hlsl-intrinsic/wave-read-lane-at-vk.slang
+++ b/tests/hlsl-intrinsic/wave-read-lane-at-vk.slang
@@ -1,8 +1,8 @@
// This is similar to wave-lane-at.slang but tests more limited supported types for vk.
// We have this 'simple' test, because we can't do matrix (or imat) operations on GLSL/Vk target
-
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST_CATEGORY(wave, compute)
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-read-lane-at.slang b/tests/hlsl-intrinsic/wave-read-lane-at.slang
index 4d840ad0f..bc32cf1f8 100644
--- a/tests/hlsl-intrinsic/wave-read-lane-at.slang
+++ b/tests/hlsl-intrinsic/wave-read-lane-at.slang
@@ -1,9 +1,10 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
// Disabled on VK because glsl can't do WaveReadLaneAt on matrix.
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-shuffle-vk.slang b/tests/hlsl-intrinsic/wave-shuffle-vk.slang
index 820a69e89..ecd325c95 100644
--- a/tests/hlsl-intrinsic/wave-shuffle-vk.slang
+++ b/tests/hlsl-intrinsic/wave-shuffle-vk.slang
@@ -1,9 +1,10 @@
+//TEST_CATEGORY(wave, compute)
// Disabled because main tests is wave-shuffle.slang, this just tests VK
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-shuffle.slang b/tests/hlsl-intrinsic/wave-shuffle.slang
index 608e57ffd..30f3db3c8 100644
--- a/tests/hlsl-intrinsic/wave-shuffle.slang
+++ b/tests/hlsl-intrinsic/wave-shuffle.slang
@@ -1,10 +1,11 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
//Disabled on D3D, because in general WaveShuffle requires hardware that doesn't have the 'uniform laneId across Wave' restriction.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
// Disabled because vk doesn't currently support matrix types. See wave-shuffle-vk.slang
-//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//DISABLE_TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave-vector.slang b/tests/hlsl-intrinsic/wave-vector.slang
index 784f16c16..3a3f4b4be 100644
--- a/tests/hlsl-intrinsic/wave-vector.slang
+++ b/tests/hlsl-intrinsic/wave-vector.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/wave.slang b/tests/hlsl-intrinsic/wave.slang
index eb647d0fe..04a6c2048 100644
--- a/tests/hlsl-intrinsic/wave.slang
+++ b/tests/hlsl-intrinsic/wave.slang
@@ -1,8 +1,9 @@
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
+//TEST_CATEGORY(wave, compute)
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute
+//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute
+//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST:COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tools/slang-test/options.cpp b/tools/slang-test/options.cpp
index 4c8108f4a..27b759a0e 100644
--- a/tools/slang-test/options.cpp
+++ b/tools/slang-test/options.cpp
@@ -133,6 +133,14 @@ static bool _isSubCommand(const char* arg)
{
optionsOut->shouldBeVerbose = true;
}
+ else if (strcmp(arg, "-hide-ignored") == 0)
+ {
+ optionsOut->hideIgnored = true;
+ }
+ else if (strcmp(arg, "-api-only") == 0)
+ {
+ optionsOut->apiOnly = true;
+ }
else if (strcmp(arg, "-verbose-paths") == 0)
{
optionsOut->verbosePaths = true;
diff --git a/tools/slang-test/options.h b/tools/slang-test/options.h
index ffad16fdc..a8c2e3852 100644
--- a/tools/slang-test/options.h
+++ b/tools/slang-test/options.h
@@ -49,6 +49,12 @@ struct Options
// generate extra output (notably: command lines we run)
bool shouldBeVerbose = false;
+ // When true results from ignored tests are not shown
+ bool hideIgnored = false;
+
+ // When true only tests that use an api that matches the enabledApis flags will run
+ bool apiOnly = false;
+
// Use verbose paths
bool verbosePaths = false;
@@ -72,7 +78,8 @@ struct Options
// Exclude test that match one these categories
Slang::Dictionary<TestCategory*, TestCategory*> excludeCategories;
- // By default we can test against all apis
+ // By default we can test against all apis. If is set to anything other than AllOf only tests that *require* the API
+ // will be run.
Slang::RenderApiFlags enabledApis = Slang::RenderApiFlag::AllOf;
// The subCommand to execute. Will be empty if there is no subCommand
diff --git a/tools/slang-test/slang-test-main.cpp b/tools/slang-test/slang-test-main.cpp
index f85ade2ea..399aa52da 100644
--- a/tools/slang-test/slang-test-main.cpp
+++ b/tools/slang-test/slang-test-main.cpp
@@ -46,6 +46,21 @@ struct TestOptions
Diagnostic, ///< Diagnostic tests will always run (as form of failure is being tested)
};
+ void addCategory(TestCategory* category)
+ {
+ if (categories.indexOf(category) < 0)
+ {
+ categories.add(category);
+ }
+ }
+ void addCategories(TestCategory*const* inCategories, Index count)
+ {
+ for (Index i = 0; i < count; ++i)
+ {
+ addCategory(inCategories[i]);
+ }
+ }
+
Type type = Type::Normal;
String command;
@@ -191,32 +206,29 @@ String collectRestOfLine(char const** ioCursor)
return getString(textBegin, textEnd);
}
-
-static TestResult _gatherTestOptions(
- TestCategorySet* categorySet,
- char const** ioCursor,
- TestOptions& outOptions)
+static SlangResult _parseCategories(TestCategorySet* categorySet, char const** ioCursor, TestOptions& out)
{
char const* cursor = *ioCursor;
// Right after the `TEST` keyword, the user may specify
// one or more categories for the test.
- if(*cursor == '(')
+ if (*cursor == '(')
{
cursor++;
// optional test category
skipHorizontalSpace(&cursor);
char const* categoryStart = cursor;
- for(;;)
+ for (;;)
{
- switch( *cursor )
+ switch (*cursor)
{
- default:
- cursor++;
- continue;
-
- case ',':
- case ')':
+ default:
+ {
+ cursor++;
+ continue;
+ }
+ case ',':
+ case ')':
{
char const* categoryEnd = cursor;
cursor++;
@@ -224,38 +236,52 @@ static TestResult _gatherTestOptions(
auto categoryName = getString(categoryStart, categoryEnd);
TestCategory* category = categorySet->find(categoryName);
- if(!category)
+ if (!category)
{
- return TestResult::Fail;
+ // Failure if we don't find the category
+ return SLANG_FAIL;
}
-
- outOptions.categories.add(category);
+ out.addCategory(category);
- if( *categoryEnd == ',' )
+ if (*categoryEnd == ',')
{
skipHorizontalSpace(&cursor);
categoryStart = cursor;
continue;
}
+
+ *ioCursor = cursor;
+ return SLANG_OK;
+ }
+ case 0: case '\r': case '\n':
+ {
+ return SLANG_FAIL;
}
- break;
-
- case 0: case '\r': case '\n':
- return TestResult::Fail;
}
break;
}
}
- // If no categories were specified, then add the default category
- if(outOptions.categories.getCount() == 0)
+ *ioCursor = cursor;
+ return SLANG_OK;
+}
+
+
+static TestResult _gatherTestOptions(
+ TestCategorySet* categorySet,
+ char const** ioCursor,
+ TestOptions& outOptions)
+{
+ if (SLANG_FAILED(_parseCategories(categorySet, ioCursor, outOptions)))
{
- outOptions.categories.add(categorySet->defaultCategory);
+ return TestResult::Fail;
}
- if(*cursor == ':')
+ char const* cursor = *ioCursor;
+
+ if(*cursor == ':')
cursor++;
else
{
@@ -335,6 +361,24 @@ static TestResult _gatherTestOptions(
}
}
+
+static RenderApiFlags _getRequiredRenderApisByCommand(const UnownedStringSlice& name);
+
+static void _combineOptions(
+ TestCategorySet* categorySet,
+ const TestOptions& fileOptions,
+ TestOptions& ioOptions)
+{
+ // And the file categories
+ ioOptions.addCategories(fileOptions.categories.getBuffer(), fileOptions.categories.getCount());
+
+ // If no categories were specified, then add the default category
+ if (ioOptions.categories.getCount() == 0)
+ {
+ ioOptions.categories.add(categorySet->defaultCategory);
+ }
+}
+
// Try to read command-line options from the test file itself
TestResult gatherTestsForFile(
TestCategorySet* categorySet,
@@ -354,6 +398,9 @@ TestResult gatherTestsForFile(
// Walk through the lines of the file, looking for test commands
char const* cursor = fileContents.begin();
+ // Options that are specified across all tests in the file.
+ TestOptions fileOptions;
+
while(*cursor)
{
// We are at the start of a line of input.
@@ -378,11 +425,26 @@ TestResult gatherTestsForFile(
testDetails.options.isEnabled = false;
}
+ if (match(&cursor, "TEST_CATEGORY"))
+ {
+ if (SLANG_FAILED(_parseCategories(categorySet, &cursor, fileOptions)))
+ {
+ return TestResult::Fail;
+ }
+ }
+
if(match(&cursor, "TEST"))
{
if(_gatherTestOptions(categorySet, &cursor, testDetails.options) != TestResult::Pass)
return TestResult::Fail;
+ // See if the type of test needs certain APIs available
+ const RenderApiFlags testRequiredApis = _getRequiredRenderApisByCommand(testDetails.options.command.getUnownedSlice());
+ testDetails.requirements.addUsedRenderApis(testRequiredApis);
+
+ // Apply the file wide options
+ _combineOptions(categorySet, fileOptions, testDetails.options);
+
testList->tests.add(testDetails);
}
else if (match(&cursor, "DIAGNOSTIC_TEST"))
@@ -390,6 +452,9 @@ TestResult gatherTestsForFile(
if (_gatherTestOptions(categorySet, &cursor, testDetails.options) != TestResult::Pass)
return TestResult::Fail;
+ // Apply the file wide options
+ _combineOptions(categorySet, fileOptions, testDetails.options);
+
// Mark that it is a diagnostic test
testDetails.options.type = TestOptions::Type::Diagnostic;
testList->tests.add(testDetails);
@@ -2611,33 +2676,52 @@ struct TestCommandInfo
{
char const* name;
TestCallback callback;
+ RenderApiFlags requiredRenderApiFlags; ///< An RenderApi types that are needed to run the tests
};
static const TestCommandInfo s_testCommandInfos[] =
{
- { "SIMPLE", &runSimpleTest},
- { "SIMPLE_EX", &runSimpleTest},
- { "REFLECTION", &runReflectionTest},
- { "CPU_REFLECTION", &runReflectionTest},
- { "COMMAND_LINE_SIMPLE", &runSimpleCompareCommandLineTest},
- { "COMPARE_HLSL", &runDXBCComparisonTest},
- { "COMPARE_DXIL", &runDXILComparisonTest},
- { "COMPARE_HLSL_RENDER", &runHLSLRenderComparisonTest},
- { "COMPARE_HLSL_CROSS_COMPILE_RENDER", &runHLSLCrossCompileRenderComparisonTest},
- { "COMPARE_HLSL_GLSL_RENDER", &runHLSLAndGLSLRenderComparisonTest},
- { "COMPARE_COMPUTE", &runSlangComputeComparisonTest},
- { "COMPARE_COMPUTE_EX", &runSlangComputeComparisonTestEx},
- { "HLSL_COMPUTE", &runHLSLComputeTest},
- { "COMPARE_RENDER_COMPUTE", &runSlangRenderComputeComparisonTest},
- { "COMPARE_GLSL", &runGLSLComparisonTest},
- { "CROSS_COMPILE", &runCrossCompilerTest},
- { "CPP_COMPILER_EXECUTE", &runCPPCompilerExecute},
- { "CPP_COMPILER_SHARED_LIBRARY", &runCPPCompilerSharedLibrary},
- { "CPP_COMPILER_COMPILE", &runCPPCompilerCompile},
- { "PERFORMANCE_PROFILE", &runPerformanceProfile},
- { "COMPILE", &runCompile},
+ { "SIMPLE", &runSimpleTest, 0 },
+ { "SIMPLE_EX", &runSimpleTest, 0 },
+ { "REFLECTION", &runReflectionTest, 0 },
+ { "CPU_REFLECTION", &runReflectionTest, 0 },
+ { "COMMAND_LINE_SIMPLE", &runSimpleCompareCommandLineTest, 0 },
+ { "COMPARE_HLSL", &runDXBCComparisonTest, 0 },
+ { "COMPARE_DXIL", &runDXILComparisonTest, 0 },
+ { "COMPARE_HLSL_RENDER", &runHLSLRenderComparisonTest, 0 },
+ { "COMPARE_HLSL_CROSS_COMPILE_RENDER", &runHLSLCrossCompileRenderComparisonTest, 0 },
+ { "COMPARE_HLSL_GLSL_RENDER", &runHLSLAndGLSLRenderComparisonTest, 0 },
+ { "COMPARE_COMPUTE", &runSlangComputeComparisonTest, 0 },
+ { "COMPARE_COMPUTE_EX", &runSlangComputeComparisonTestEx, 0 },
+ { "HLSL_COMPUTE", &runHLSLComputeTest, 0 },
+ { "COMPARE_RENDER_COMPUTE", &runSlangRenderComputeComparisonTest, 0 },
+ { "COMPARE_GLSL", &runGLSLComparisonTest, 0 },
+ { "CROSS_COMPILE", &runCrossCompilerTest, 0 },
+ { "CPP_COMPILER_EXECUTE", &runCPPCompilerExecute, RenderApiFlag::CPU},
+ { "CPP_COMPILER_SHARED_LIBRARY", &runCPPCompilerSharedLibrary, RenderApiFlag::CPU},
+ { "CPP_COMPILER_COMPILE", &runCPPCompilerCompile, RenderApiFlag::CPU},
+ { "PERFORMANCE_PROFILE", &runPerformanceProfile, 0 },
+ { "COMPILE", &runCompile, 0 },
};
+const TestCommandInfo* _findTestCommandInfoByCommand(const UnownedStringSlice& name)
+{
+ for (const auto& command : s_testCommandInfos)
+ {
+ if (name == command.name)
+ {
+ return &command;
+ }
+ }
+ return nullptr;
+}
+
+static RenderApiFlags _getRequiredRenderApisByCommand(const UnownedStringSlice& name)
+{
+ auto info = _findTestCommandInfoByCommand(name);
+ return info ? info->requiredRenderApiFlags : 0;
+}
+
TestResult runTest(
TestContext* context,
String const& filePath,
@@ -2654,18 +2738,17 @@ TestResult runTest(
const SpawnType defaultSpawnType = context->options.useExes ? SpawnType::UseExe : SpawnType::UseSharedLibrary;
- for( const auto& command : s_testCommandInfos)
- {
- if(testOptions.command != command.name)
- continue;
+ auto testInfo = _findTestCommandInfoByCommand(testOptions.command.getUnownedSlice());
+ if (testInfo)
+ {
TestInput testInput;
testInput.filePath = filePath;
testInput.outputStem = outputStem;
testInput.testOptions = &testOptions;
testInput.spawnType = defaultSpawnType;
- return command.callback(context, testInput);
+ return testInfo->callback(context, testInput);
}
// No actual test runner found!
@@ -2771,7 +2854,9 @@ static void _calcSynthesizedTests(TestContext* context, RenderApiType synthRende
{
// TODO(JS): Arguably we should synthesize from explicit tests. In principal we can remove the explicit api apply another
// although that may not always work.
+ // If it doesn't use any render API or only uses CPU, we don't synthesize
if (requirements.usedRenderApiFlags == 0 ||
+ requirements.usedRenderApiFlags == RenderApiFlag::CPU ||
requirements.explicitRenderApi != RenderApiType::Unknown)
{
continue;
@@ -2829,8 +2914,11 @@ static bool _canIgnore(TestContext* context, const TestDetails& details)
const auto& requirements = details.requirements;
- // Work out what render api flags are available
- const RenderApiFlags availableRenderApiFlags = requirements.usedRenderApiFlags ? _getAvailableRenderApiFlags(context) : 0;
+ // Check if it's possible in principal to run this test with the render api flags used by this test
+ if (!context->canRunTestWithRenderApiFlags(requirements.usedRenderApiFlags))
+ {
+ return true;
+ }
// Are all the required backends available?
if (((requirements.usedBackendFlags & context->availableBackendFlags) != requirements.usedBackendFlags))
@@ -2838,18 +2926,15 @@ static bool _canIgnore(TestContext* context, const TestDetails& details)
return true;
}
+ // Work out what render api flags are actually available, lazily
+ const RenderApiFlags availableRenderApiFlags = requirements.usedRenderApiFlags ? _getAvailableRenderApiFlags(context) : 0;
+
// Are all the required rendering apis available?
if ((requirements.usedRenderApiFlags & availableRenderApiFlags) != requirements.usedRenderApiFlags)
{
return true;
}
- // Are the required rendering APIs enabled from the -api command line switch
- if ((requirements.usedRenderApiFlags & context->options.enabledApis) != requirements.usedRenderApiFlags)
- {
- return true;
- }
-
return false;
}
@@ -3113,6 +3198,10 @@ SlangResult innerMain(int argc, char** argv)
auto cudaTestCategory = categorySet.add("cuda", fullTestCategory);
auto optixTestCategory = categorySet.add("optix", cudaTestCategory);
+ auto waveTestCategory = categorySet.add("wave", fullTestCategory);
+ auto waveMaskCategory = categorySet.add("wave-mask", waveTestCategory);
+ auto waveActiveCategory = categorySet.add("wave-active", waveTestCategory);
+
auto compatibilityIssueCategory = categorySet.add("compatibility-issue", fullTestCategory);
#if SLANG_WINDOWS_FAMILY
@@ -3237,6 +3326,7 @@ SlangResult innerMain(int argc, char** argv)
reporter.m_dumpOutputOnFailure = options.dumpOutputOnFailure;
reporter.m_isVerbose = options.shouldBeVerbose;
+ reporter.m_hideIgnored = options.hideIgnored;
{
TestReporter::SuiteScope suiteScope(&reporter, "tests");
@@ -3248,6 +3338,9 @@ SlangResult innerMain(int argc, char** argv)
// Run the unit tests (these are internal C++ tests - not specified via files in a directory)
// They are registered with SLANG_UNIT_TEST macro
+ //
+ //
+ if (context.canRunUnitTests())
{
TestReporter::SuiteScope suiteScope(&reporter, "unit tests");
TestReporter::set(&reporter);
diff --git a/tools/slang-test/test-context.cpp b/tools/slang-test/test-context.cpp
index 0a0931596..8fa5cb345 100644
--- a/tools/slang-test/test-context.cpp
+++ b/tools/slang-test/test-context.cpp
@@ -110,3 +110,15 @@ Slang::DownstreamCompiler* TestContext::getDefaultCompiler(SlangSourceLanguage s
return set ? set->getDefaultCompiler(sourceLanguage) : nullptr;
}
+bool TestContext::canRunTestWithRenderApiFlags(Slang::RenderApiFlags requiredFlags)
+{
+ // If only allow tests that use API - then the requiredFlags must be 0
+ if (options.apiOnly && requiredFlags == 0)
+ {
+ return false;
+ }
+ // Are the required rendering APIs enabled from the -api command line switch
+ return (requiredFlags & options.enabledApis) == requiredFlags;
+}
+
+
diff --git a/tools/slang-test/test-context.h b/tools/slang-test/test-context.h
index e10b8d60b..ab0a00b40 100644
--- a/tools/slang-test/test-context.h
+++ b/tools/slang-test/test-context.h
@@ -95,6 +95,15 @@ class TestContext
/// If set, then tests are executed
bool isExecuting() const { return testRequirements == nullptr; }
+ /// True if a render API filter is enabled
+ bool isRenderApiFilterEnabled() const { return options.enabledApis != Slang::RenderApiFlag::AllOf && options.enabledApis != 0; }
+
+ /// True if a test with the requiredFlags can in principal run (it may not be possible if the API is not available though)
+ bool canRunTestWithRenderApiFlags(Slang::RenderApiFlags requiredFlags);
+
+ /// True if can run unit tests
+ bool canRunUnitTests() const { return options.apiOnly == false; }
+
/// Get compiler set
Slang::DownstreamCompilerSet* getCompilerSet();
Slang::DownstreamCompiler* getDefaultCompiler(SlangSourceLanguage sourceLanguage);
diff --git a/tools/slang-test/test-reporter.cpp b/tools/slang-test/test-reporter.cpp
index 9dd34739b..fd9748b28 100644
--- a/tools/slang-test/test-reporter.cpp
+++ b/tools/slang-test/test-reporter.cpp
@@ -286,6 +286,11 @@ static void _appendTime(double timeInSec, StringBuilder& out)
void TestReporter::_addResult(const TestInfo& info)
{
+ if (info.testResult == TestResult::Ignored && m_hideIgnored)
+ {
+ return;
+ }
+
m_totalTestCount++;
switch (info.testResult)
diff --git a/tools/slang-test/test-reporter.h b/tools/slang-test/test-reporter.h
index 6a862afef..1ebce81cd 100644
--- a/tools/slang-test/test-reporter.h
+++ b/tools/slang-test/test-reporter.h
@@ -166,6 +166,7 @@ class TestReporter
TestOutputMode m_outputMode = TestOutputMode::Default;
bool m_dumpOutputOnFailure;
bool m_isVerbose = false;
+ bool m_hideIgnored = false;
protected: