diff options
Diffstat (limited to 'tests')
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 |
