summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/spirv/direct-spirv-compute-simple.slang23
-rw-r--r--tests/spirv/direct-spirv-compute-simple.slang.expected.txt4
-rw-r--r--tests/spirv/direct-spirv-control-flow-2.slang47
-rw-r--r--tests/spirv/direct-spirv-control-flow-2.slang.expected.txt5
-rw-r--r--tests/spirv/direct-spirv-control-flow.slang30
-rw-r--r--tests/spirv/direct-spirv-control-flow.slang.expected.txt4
6 files changed, 113 insertions, 0 deletions
diff --git a/tests/spirv/direct-spirv-compute-simple.slang b/tests/spirv/direct-spirv-compute-simple.slang
new file mode 100644
index 000000000..39b9074ed
--- /dev/null
+++ b/tests/spirv/direct-spirv-compute-simple.slang
@@ -0,0 +1,23 @@
+// direct-spirv-compute-simple.slang
+
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -emit-spirv-directly
+
+// Test runinng a shader generated from direct SPIR-V emit.
+
+//TEST_INPUT:set resultBuffer = out ubuffer(data=[0 0 0 0], stride=4)
+RWStructuredBuffer<uint> resultBuffer;
+
+[numthreads(4,1,1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ uint threadId = dispatchThreadID.x;
+ uint result = threadId + 1;
+ result = result - 1;
+ result = result * 2;
+ result = result / 2;
+ result = result % 3;
+ result = (result ^ 7);
+ result = (result & 7);
+ result = (result | 8);
+ resultBuffer[threadId] = result;
+}
diff --git a/tests/spirv/direct-spirv-compute-simple.slang.expected.txt b/tests/spirv/direct-spirv-compute-simple.slang.expected.txt
new file mode 100644
index 000000000..4fc6bca7a
--- /dev/null
+++ b/tests/spirv/direct-spirv-compute-simple.slang.expected.txt
@@ -0,0 +1,4 @@
+F
+E
+D
+F \ No newline at end of file
diff --git a/tests/spirv/direct-spirv-control-flow-2.slang b/tests/spirv/direct-spirv-control-flow-2.slang
new file mode 100644
index 000000000..cc908100e
--- /dev/null
+++ b/tests/spirv/direct-spirv-control-flow-2.slang
@@ -0,0 +1,47 @@
+// direct-spirv-control-flow-2.slang
+
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -xslang -emit-spirv-directly
+
+// Test direct SPIR-V emit on control flows.
+
+//TEST_INPUT:set resultBuffer = out ubuffer(data=[0 0 0 0], stride=4)
+RWStructuredBuffer<uint> resultBuffer;
+
+uint test(uint p)
+{
+ int result = 0;
+ for (int i = 0; i < 5; i++)
+ {
+ result += i*2;
+ }
+ switch (p)
+ {
+ case 0:
+ result = result - 1;
+ break;
+ case 1:
+ result = result + 1;
+ break;
+ default:
+ result = result * 2;
+ break;
+ }
+ if (p > 2)
+ {
+ switch (p)
+ {
+ case 3:
+ result++;
+ break;
+ }
+ }
+ return result;
+}
+
+[numthreads(4,1,1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ uint threadId = dispatchThreadID.x;
+ uint result = test(threadId);
+ resultBuffer[threadId] = result;
+}
diff --git a/tests/spirv/direct-spirv-control-flow-2.slang.expected.txt b/tests/spirv/direct-spirv-control-flow-2.slang.expected.txt
new file mode 100644
index 000000000..36929d66f
--- /dev/null
+++ b/tests/spirv/direct-spirv-control-flow-2.slang.expected.txt
@@ -0,0 +1,5 @@
+type: uint32_t
+19
+21
+40
+41
diff --git a/tests/spirv/direct-spirv-control-flow.slang b/tests/spirv/direct-spirv-control-flow.slang
new file mode 100644
index 000000000..9efddeb12
--- /dev/null
+++ b/tests/spirv/direct-spirv-control-flow.slang
@@ -0,0 +1,30 @@
+// direct-spirv-control-flow.slang
+
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -emit-spirv-directly
+
+// Test direct SPIRV emit on control fl.
+
+//TEST_INPUT:set resultBuffer = out ubuffer(data=[0 0 0 0], stride=4)
+RWStructuredBuffer<uint> resultBuffer;
+
+uint test(uint p)
+{
+ int result = 0;
+ if (p == 0)
+ {
+ result = 5;
+ }
+ else
+ {
+ result = 6;
+ }
+ return result;
+}
+
+[numthreads(4,1,1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ uint threadId = dispatchThreadID.x;
+ uint result = test(threadId);
+ resultBuffer[threadId] = result;
+}
diff --git a/tests/spirv/direct-spirv-control-flow.slang.expected.txt b/tests/spirv/direct-spirv-control-flow.slang.expected.txt
new file mode 100644
index 000000000..c0bcc1c4a
--- /dev/null
+++ b/tests/spirv/direct-spirv-control-flow.slang.expected.txt
@@ -0,0 +1,4 @@
+5
+6
+6
+6