From 06a0e3980fd04fa265bd20eb11f2abc18bd6a215 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Thu, 22 Aug 2019 15:58:28 -0400 Subject: WIP: CPU compute coverage (#1030) * Add support for '=' when defining a name in test. * Add support for double intrinsics. * Add support for asdouble Add findOrAddInst - used instead of findOrEmitHoistableInst, for nominal instructions. Support cloning of string literals. C++ working on more compute tests. * Constant buffer support in reflection. Fixed debugging into source for generated C++. buffer-layout.slang works. * Added cpu test result. * Remove some commented out code. Comment on next fixes. * Improvements to reflection CPU code. * C++ working with ByteAddressBuffer. * Enabled more compute tests for CPU. * Enabled more compute tests on CPU. Added support for [] style access to a vector. * Enabled more CPU compute tests. * Handling of buffer-type-splitting.slang Named buffers can be paths to resources * Fix some warnings, remove some dead code. * Fix problem with verification of number of operands for asuint/asint as they can have 1 or 3 operands. asdouble takes 2. * Fix handling in MemoryArena around aligned allocations. That _allocateAlignedFromNewBlock assumed the block allocated has the aligment that was requested and so did not correct the start address. --- tests/compute/assoctype-complex.slang | 4 +++- tests/compute/assoctype-func-param.slang | 4 ++-- tests/compute/assoctype-generic-arg.slang | 5 +++-- tests/compute/assoctype-nested.slang | 3 ++- tests/compute/assoctype-simple.slang | 4 +++- tests/compute/bit-cast-double.slang | 4 ++-- tests/compute/break-stmt.slang | 3 ++- tests/compute/buffer-layout.slang | 8 ++++---- tests/compute/buffer-layout.slang.3.expected.txt | 4 ++++ tests/compute/buffer-type-splitting.slang | 12 +++++++----- tests/compute/byte-address-buffer.slang | 5 +++-- tests/compute/cast-zero-to-struct.slang | 3 ++- tests/compute/continue-stmt.slang | 3 ++- tests/compute/default-parameter.slang | 4 ++-- tests/compute/empty-struct.slang | 4 +++- tests/compute/empty-struct2.slang | 4 +++- tests/compute/enum-tag-conversion.slang | 3 ++- tests/compute/enum.slang | 3 ++- tests/compute/explicit-this-expr.slang | 4 +++- tests/compute/extension-multi-interface.slang | 3 ++- tests/compute/extension-on-interface.slang | 3 ++- tests/compute/func-cbuffer-param.slang | 7 ++++--- tests/compute/func-param-legalize.slang | 6 +++--- tests/compute/func-resource-param.slang | 5 +++-- tests/compute/generic-closer.slang | 5 +++-- tests/compute/generic-interface-method-simple.slang | 3 ++- tests/compute/generic-interface-method.slang | 3 ++- tests/compute/generic-list.slang | 4 +++- tests/compute/generic-struct-with-constraint.slang | 4 +++- tests/compute/generic-struct.slang | 3 ++- tests/compute/generics-constrained.slang | 3 ++- tests/compute/generics-constructor.slang | 3 ++- tests/compute/generics-overload.slang | 4 +++- tests/compute/generics-simple.slang | 4 +++- tests/compute/generics-syntax-2.slang | 4 +++- tests/compute/generics-syntax.slang | 4 +++- tests/compute/global-init.slang | 3 ++- tests/compute/global-type-param.slang | 3 ++- tests/compute/implicit-generic-app.slang | 4 +++- tests/compute/implicit-this-expr.slang | 4 ++-- tests/compute/init-list-defaults.slang | 3 ++- tests/compute/initializer-list.slang | 4 ++-- tests/compute/inout.slang | 3 ++- tests/compute/int-generic.slang | 4 +++- tests/compute/interface-local.slang | 4 +++- tests/compute/interface-param.slang | 3 ++- tests/compute/interface-shader-param.slang | 3 ++- tests/compute/interface-static-method.slang | 3 ++- tests/compute/matrix-layout-structured-buffer.slang | 3 +-- tests/compute/matrix-layout.hlsl | 2 +- tests/compute/modern-syntax.slang | 3 ++- tests/compute/multi-interface.slang | 3 ++- tests/compute/multiple-continue-sites.slang | 3 ++- tests/compute/mutating-methods.slang | 3 ++- tests/compute/nested-generics.slang | 3 ++- tests/compute/nested-generics2.slang | 3 ++- tests/compute/scope-operator.slang | 3 ++- tests/compute/select-expr.slang | 4 ++-- tests/compute/simple.slang | 4 +++- tests/compute/ssa-reduce-bug.slang | 6 +++--- 60 files changed, 150 insertions(+), 83 deletions(-) create mode 100644 tests/compute/buffer-layout.slang.3.expected.txt (limited to 'tests/compute') diff --git a/tests/compute/assoctype-complex.slang b/tests/compute/assoctype-complex.slang index ee5f2c86f..29df5310a 100644 --- a/tests/compute/assoctype-complex.slang +++ b/tests/compute/assoctype-complex.slang @@ -1,7 +1,9 @@ +//TEST(compute):COMPARE_COMPUTE: -cpu //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; + interface IBase { associatedtype V; diff --git a/tests/compute/assoctype-func-param.slang b/tests/compute/assoctype-func-param.slang index fb3875d60..573016e4b 100644 --- a/tests/compute/assoctype-func-param.slang +++ b/tests/compute/assoctype-func-param.slang @@ -1,8 +1,9 @@ +//TEST(compute):COMPARE_COMPUTE:-cpu //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out // Test type checking of associatedtype and typedef +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IBase @@ -41,7 +42,6 @@ U.RetT test(U.RetT val) return obj.getVal(sb); } - [numthreads(4, 1, 1)] void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) { diff --git a/tests/compute/assoctype-generic-arg.slang b/tests/compute/assoctype-generic-arg.slang index dd183ea5d..ae14380f4 100644 --- a/tests/compute/assoctype-generic-arg.slang +++ b/tests/compute/assoctype-generic-arg.slang @@ -1,8 +1,9 @@ +//TEST(compute):COMPARE_COMPUTE:-cpu //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out -//TEST_INPUT:type AssocImpl +//TEST_INPUT:type AssocImpl +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IBase diff --git a/tests/compute/assoctype-nested.slang b/tests/compute/assoctype-nested.slang index b3d96306b..6f267a780 100644 --- a/tests/compute/assoctype-nested.slang +++ b/tests/compute/assoctype-nested.slang @@ -2,6 +2,7 @@ // Confirm that an associated type can be declared nested in its parent. +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute @@ -48,7 +49,7 @@ int test(int val) return helper(strategy, val); } -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=gOutputBuffer RWStructuredBuffer gOutputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/assoctype-simple.slang b/tests/compute/assoctype-simple.slang index d12c29620..6edf46f33 100644 --- a/tests/compute/assoctype-simple.slang +++ b/tests/compute/assoctype-simple.slang @@ -1,8 +1,10 @@ +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out + // Confirm that generics syntax can be used in user // code and generates valid output. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface ISimple diff --git a/tests/compute/bit-cast-double.slang b/tests/compute/bit-cast-double.slang index 27d0b48cf..69c93ba4f 100644 --- a/tests/compute/bit-cast-double.slang +++ b/tests/compute/bit-cast-double.slang @@ -1,9 +1,9 @@ +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out - +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/break-stmt.slang b/tests/compute/break-stmt.slang index 02f5f9fa9..283593ee5 100644 --- a/tests/compute/break-stmt.slang +++ b/tests/compute/break-stmt.slang @@ -1,5 +1,5 @@ +//TEST(compute):COMPARE_COMPUTE:-cpu //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out // Test that `break` from a loop works. @@ -15,6 +15,7 @@ int test(int inVal) return -ii; } +//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); [numthreads(4, 1, 1)] diff --git a/tests/compute/buffer-layout.slang b/tests/compute/buffer-layout.slang index 145da99c8..9e4a63722 100644 --- a/tests/compute/buffer-layout.slang +++ b/tests/compute/buffer-layout.slang @@ -6,9 +6,9 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu - -//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; struct A @@ -103,10 +103,10 @@ struct S int d; } -//TEST_INPUT:cbuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32]):dxbinding(0),glbinding(0) +//TEST_INPUT:cbuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32]):dxbinding(0),glbinding(0),name=cb ConstantBuffer cb; -//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32],stride=4):dxbinding(0),glbinding(1) +//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32],stride=4):dxbinding(0),glbinding(1),name=sb RWStructuredBuffer sb; int test(int val) diff --git a/tests/compute/buffer-layout.slang.3.expected.txt b/tests/compute/buffer-layout.slang.3.expected.txt new file mode 100644 index 000000000..4fcded8c6 --- /dev/null +++ b/tests/compute/buffer-layout.slang.3.expected.txt @@ -0,0 +1,4 @@ +13080308 +23080308 +33080308 +43080308 diff --git a/tests/compute/buffer-type-splitting.slang b/tests/compute/buffer-type-splitting.slang index c7577a0b2..f4a05c8f8 100644 --- a/tests/compute/buffer-type-splitting.slang +++ b/tests/compute/buffer-type-splitting.slang @@ -1,9 +1,11 @@ +//TEST(compute):COMPARE_COMPUTE:-cpu //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out -//TEST_INPUT:ubuffer(data=[0 2 3 3]):dxbinding(1),glbinding(1) -//TEST_INPUT:ubuffer(data=[4 5 6 7]):dxbinding(2),glbinding(2) -//TEST_INPUT:ubuffer(data=[8 9 10 11]):dxbinding(3),glbinding(3) -//TEST_INPUT:ubuffer(data=[12 13 14 15]):dxbinding(4),glbinding(4) + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer +//TEST_INPUT:ubuffer(data=[0 2 3 3]):dxbinding(1),glbinding(1),name=s[0].a +//TEST_INPUT:ubuffer(data=[4 5 6 7]):dxbinding(2),glbinding(2),name=s[1].a +//TEST_INPUT:ubuffer(data=[8 9 10 11]):dxbinding(3),glbinding(3),name=s[0].b +//TEST_INPUT:ubuffer(data=[12 13 14 15]):dxbinding(4),glbinding(4),name=s[1].b RWStructuredBuffer outputBuffer; diff --git a/tests/compute/byte-address-buffer.slang b/tests/compute/byte-address-buffer.slang index 2efbeb630..851e06214 100644 --- a/tests/compute/byte-address-buffer.slang +++ b/tests/compute/byte-address-buffer.slang @@ -1,5 +1,6 @@ // byte-address-buffer.slang +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-d3d12 -compute @@ -9,10 +10,10 @@ // TODO: I'm only using `RWByteAddressBuffer` for now because I don't // know if `render-test` supports the non-UAV case. -//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]):dxbinding(0),glbinding(0) +//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]):dxbinding(0),glbinding(0),name=inputBuffer RWByteAddressBuffer inputBuffer; -//TEST_INPUT:ubuffer(data=[0 0 0 0]):dxbinding(1),glbinding(1),out +//TEST_INPUT:ubuffer(data=[0 0 0 0]):dxbinding(1),glbinding(1),out,name=outputBuffer RWByteAddressBuffer outputBuffer; void test(int val) diff --git a/tests/compute/cast-zero-to-struct.slang b/tests/compute/cast-zero-to-struct.slang index c2ed8fb6d..41bc299e5 100644 --- a/tests/compute/cast-zero-to-struct.slang +++ b/tests/compute/cast-zero-to-struct.slang @@ -4,6 +4,7 @@ // to a `struct` type works. //TEST(compute):COMPARE_COMPUTE: +//TEST(compute):COMPARE_COMPUTE:-cpu struct S { @@ -24,7 +25,7 @@ int test(int val) return t.x + t.y*16; } -//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=gOutputBuffer RWStructuredBuffer gOutputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/continue-stmt.slang b/tests/compute/continue-stmt.slang index 9adb5a4a6..f21592ecc 100644 --- a/tests/compute/continue-stmt.slang +++ b/tests/compute/continue-stmt.slang @@ -1,5 +1,5 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // Test that `break` from a loop works. @@ -20,6 +20,7 @@ int test(int inVal) return -ii; } +//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); [numthreads(4, 1, 1)] diff --git a/tests/compute/default-parameter.slang b/tests/compute/default-parameter.slang index 6e6631bb4..cc960f2e5 100644 --- a/tests/compute/default-parameter.slang +++ b/tests/compute/default-parameter.slang @@ -1,8 +1,8 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out - +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; int helper(int val, int a = 16) diff --git a/tests/compute/empty-struct.slang b/tests/compute/empty-struct.slang index 51094fad5..5e000b723 100644 --- a/tests/compute/empty-struct.slang +++ b/tests/compute/empty-struct.slang @@ -1,8 +1,10 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu + // Confirm that generics syntax can be used in user // code and generates valid output. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; struct Simple diff --git a/tests/compute/empty-struct2.slang b/tests/compute/empty-struct2.slang index 17cbb6ab4..2ec7bbc3f 100644 --- a/tests/compute/empty-struct2.slang +++ b/tests/compute/empty-struct2.slang @@ -1,7 +1,9 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu + // This is a basic test for Slang compute shader. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IInterface diff --git a/tests/compute/enum-tag-conversion.slang b/tests/compute/enum-tag-conversion.slang index 5758cc3c1..869b1c3af 100644 --- a/tests/compute/enum-tag-conversion.slang +++ b/tests/compute/enum-tag-conversion.slang @@ -2,6 +2,7 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute // Confirm that a value of `enum` type can have an initializer // that includes basic operations like type conversion. @@ -16,7 +17,7 @@ int test(int val) return val + int(RoseColors.Red); } -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/enum.slang b/tests/compute/enum.slang index c10cedc25..cbe940f30 100644 --- a/tests/compute/enum.slang +++ b/tests/compute/enum.slang @@ -1,6 +1,7 @@ // enum.slang //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute // Confirm that basic `enum` declarations are supported. @@ -51,7 +52,7 @@ int test(int val) return (val << 4) + int(c); } -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/explicit-this-expr.slang b/tests/compute/explicit-this-expr.slang index 7179d046d..02f744662 100644 --- a/tests/compute/explicit-this-expr.slang +++ b/tests/compute/explicit-this-expr.slang @@ -1,5 +1,6 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu + // Access fields of a `struct` type from within a "method" by // using an explicit `this` expression. @@ -14,6 +15,7 @@ struct A } }; +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); diff --git a/tests/compute/extension-multi-interface.slang b/tests/compute/extension-multi-interface.slang index e29baf3b5..f13769f56 100644 --- a/tests/compute/extension-multi-interface.slang +++ b/tests/compute/extension-multi-interface.slang @@ -1,6 +1,7 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IAdd diff --git a/tests/compute/extension-on-interface.slang b/tests/compute/extension-on-interface.slang index 0034cc43a..4f516092d 100644 --- a/tests/compute/extension-on-interface.slang +++ b/tests/compute/extension-on-interface.slang @@ -1,6 +1,7 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IOp diff --git a/tests/compute/func-cbuffer-param.slang b/tests/compute/func-cbuffer-param.slang index 1fe7d2a38..a0784e21e 100644 --- a/tests/compute/func-cbuffer-param.slang +++ b/tests/compute/func-cbuffer-param.slang @@ -8,19 +8,20 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute, vulkan, compatibility-issue):COMPARE_COMPUTE_EX:-dx12 -compute -use-dxil //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute struct Data { int4 val[4]; } -//TEST_INPUT:cbuffer(data=[0 1 2 3 16 17 18 19 32 33 34 35 48 49 50 51]):dxbinding(0),glbinding(0) +//TEST_INPUT:cbuffer(data=[0 1 2 3 16 17 18 19 32 33 34 35 48 49 50 51]):dxbinding(0),glbinding(0),name=a ConstantBuffer a; -//TEST_INPUT:cbuffer(data=[16 17 18 19 32 33 34 35 48 49 50 51 64 65 66 67]):dxbinding(1),glbinding(1) +//TEST_INPUT:cbuffer(data=[16 17 18 19 32 33 34 35 48 49 50 51 64 65 66 67]):dxbinding(1),glbinding(1),name=b ConstantBuffer b; -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(2),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(2),out,name=outputBuffer RWStructuredBuffer outputBuffer; int helper(ConstantBuffer buffer, int index) diff --git a/tests/compute/func-param-legalize.slang b/tests/compute/func-param-legalize.slang index f3177a1b1..a68766389 100644 --- a/tests/compute/func-param-legalize.slang +++ b/tests/compute/func-param-legalize.slang @@ -1,7 +1,4 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:Texture2D(size=4, content = one) : dxbinding(0),glbinding(0) -//TEST_INPUT: Sampler : dxbinding(0),glbinding(0,1,2,3,4,5,6) -//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out struct Param { @@ -10,8 +7,11 @@ struct Param float base; }; +//TEST_INPUT:Texture2D(size=4, content = one) : dxbinding(0),glbinding(0),name=diffuseMap Texture2D diffuseMap; +//TEST_INPUT: Sampler : dxbinding(0),glbinding(0,1,2,3,4,5,6),name=samplerState SamplerState samplerState; +//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; float4 run(Param p) diff --git a/tests/compute/func-resource-param.slang b/tests/compute/func-resource-param.slang index 19784b108..2f6668dce 100644 --- a/tests/compute/func-resource-param.slang +++ b/tests/compute/func-resource-param.slang @@ -7,13 +7,14 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-dx12 -compute //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cpu -compute //NO_TEST:SIMPLE:-target glsl -entry computeMain -stage compute -validate-ir -dump-ir -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; -//TEST_INPUT:ubuffer(data=[0 16 32 48], stride=4):dxbinding(1),glbinding(1) +//TEST_INPUT:ubuffer(data=[0 16 32 48], stride=4):dxbinding(1),glbinding(1),name=inputBuffer RWStructuredBuffer inputBuffer; int helper(RWStructuredBuffer buffer, int index) diff --git a/tests/compute/generic-closer.slang b/tests/compute/generic-closer.slang index f3bb643de..a40d520cc 100644 --- a/tests/compute/generic-closer.slang +++ b/tests/compute/generic-closer.slang @@ -1,8 +1,7 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute - -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute interface IGetter { @@ -18,7 +17,9 @@ struct Gen1 : IGetter int get() { return g.get(); } }; +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; + void writeArray(inout float3 a[4]) { a[0] = float3(1, 1, 1); diff --git a/tests/compute/generic-interface-method-simple.slang b/tests/compute/generic-interface-method-simple.slang index 2af6da969..a8b2fcd8a 100644 --- a/tests/compute/generic-interface-method-simple.slang +++ b/tests/compute/generic-interface-method-simple.slang @@ -1,6 +1,7 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IVertexInterpolant diff --git a/tests/compute/generic-interface-method.slang b/tests/compute/generic-interface-method.slang index 38babdf7c..16d891636 100644 --- a/tests/compute/generic-interface-method.slang +++ b/tests/compute/generic-interface-method.slang @@ -1,6 +1,7 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; struct DisneyBRDFPattern diff --git a/tests/compute/generic-list.slang b/tests/compute/generic-list.slang index 118cbaed6..8b88a35ac 100644 --- a/tests/compute/generic-list.slang +++ b/tests/compute/generic-list.slang @@ -1,8 +1,10 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu + // Confirm that generics syntax can be used in user // code and generates valid output. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IElement diff --git a/tests/compute/generic-struct-with-constraint.slang b/tests/compute/generic-struct-with-constraint.slang index 1c2fdf4f3..5468cce80 100644 --- a/tests/compute/generic-struct-with-constraint.slang +++ b/tests/compute/generic-struct-with-constraint.slang @@ -1,8 +1,10 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu + // Confirm that generics syntax can be used in user // code and generates valid output. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IElement diff --git a/tests/compute/generic-struct.slang b/tests/compute/generic-struct.slang index b13a7bf77..8c97ef76d 100644 --- a/tests/compute/generic-struct.slang +++ b/tests/compute/generic-struct.slang @@ -1,9 +1,10 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // Check that user code can declare and use a generic // `struct` type. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; __generic diff --git a/tests/compute/generics-constrained.slang b/tests/compute/generics-constrained.slang index ba42b303c..eb3df321a 100644 --- a/tests/compute/generics-constrained.slang +++ b/tests/compute/generics-constrained.slang @@ -1,5 +1,5 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu // Use interface constraints on a generic parameter @@ -27,6 +27,7 @@ float testHelp(T helper) return helper.getHelp(); } +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); diff --git a/tests/compute/generics-constructor.slang b/tests/compute/generics-constructor.slang index 59368b47c..d36f72a59 100644 --- a/tests/compute/generics-constructor.slang +++ b/tests/compute/generics-constructor.slang @@ -1,6 +1,7 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; __generic diff --git a/tests/compute/generics-overload.slang b/tests/compute/generics-overload.slang index 45d0deb2b..8d30666c3 100644 --- a/tests/compute/generics-overload.slang +++ b/tests/compute/generics-overload.slang @@ -1,8 +1,10 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu + // Confirm that generics syntax can be used in user // code and generates valid output. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; diff --git a/tests/compute/generics-simple.slang b/tests/compute/generics-simple.slang index 653ccfd0a..f7b73a5e6 100644 --- a/tests/compute/generics-simple.slang +++ b/tests/compute/generics-simple.slang @@ -1,8 +1,10 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu + // Confirm that generics syntax can be used in user // code and generates valid output. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; diff --git a/tests/compute/generics-syntax-2.slang b/tests/compute/generics-syntax-2.slang index 56ace573c..f57ccb9ed 100644 --- a/tests/compute/generics-syntax-2.slang +++ b/tests/compute/generics-syntax-2.slang @@ -1,8 +1,10 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu + // Confirm that generics syntax can be used in user // code and generates valid output. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; struct GenStruct diff --git a/tests/compute/generics-syntax.slang b/tests/compute/generics-syntax.slang index 194d860f5..2d1adea44 100644 --- a/tests/compute/generics-syntax.slang +++ b/tests/compute/generics-syntax.slang @@ -1,8 +1,10 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu + // Confirm that generics syntax can be used in user // code and generates valid output. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; struct GenStruct diff --git a/tests/compute/global-init.slang b/tests/compute/global-init.slang index 1fc4ae0a8..db99d1f2f 100644 --- a/tests/compute/global-init.slang +++ b/tests/compute/global-init.slang @@ -1,5 +1,5 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // Test that a global variable (not a shader parameter) // with an initializer works. @@ -11,6 +11,7 @@ int test(int inVal) return inVal + gVar; } +//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); [numthreads(4, 1, 1)] diff --git a/tests/compute/global-type-param.slang b/tests/compute/global-type-param.slang index 7621f8961..ed0591064 100644 --- a/tests/compute/global-type-param.slang +++ b/tests/compute/global-type-param.slang @@ -1,7 +1,8 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0], stride=4):dxbinding(0),glbinding(0),out + //TEST_INPUT:type Wrapper +//TEST_INPUT:ubuffer(data=[0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IBase diff --git a/tests/compute/implicit-generic-app.slang b/tests/compute/implicit-generic-app.slang index b6fcbd434..53edefc66 100644 --- a/tests/compute/implicit-generic-app.slang +++ b/tests/compute/implicit-generic-app.slang @@ -1,5 +1,5 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // Testing that we can implicitly specialize a generic // that has a constrained type parameter. @@ -29,7 +29,9 @@ int test(int val) return doIt(simple); } +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); + [numthreads(4, 1, 1)] void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) { diff --git a/tests/compute/implicit-this-expr.slang b/tests/compute/implicit-this-expr.slang index 2d074f677..2197cde10 100644 --- a/tests/compute/implicit-this-expr.slang +++ b/tests/compute/implicit-this-expr.slang @@ -1,5 +1,5 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // Access fields of a `struct` type from within a "method" by // using an implicit `this` expression. @@ -14,9 +14,9 @@ struct A } }; +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); - float test(float inVal) { A a; diff --git a/tests/compute/init-list-defaults.slang b/tests/compute/init-list-defaults.slang index d8eb72b5b..9ed54ffaa 100644 --- a/tests/compute/init-list-defaults.slang +++ b/tests/compute/init-list-defaults.slang @@ -1,5 +1,6 @@ // init-list-defaults.slang //TEST(compute):COMPARE_COMPUTE: +//TEST(compute):COMPARE_COMPUTE:-cpu // Confirm that initializer lists correctly default-initialize elements past those specified. @@ -22,7 +23,7 @@ int test(int inVal) + (inVal+1)*4096; } -//TEST_INPUT:ubuffer(data=[9 9 9 9], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[9 9 9 9], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); [numthreads(4, 1, 1)] diff --git a/tests/compute/initializer-list.slang b/tests/compute/initializer-list.slang index de94d6c25..7d0af700e 100644 --- a/tests/compute/initializer-list.slang +++ b/tests/compute/initializer-list.slang @@ -1,6 +1,5 @@ //TEST(compute):COMPARE_COMPUTE: - -//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu struct Test { @@ -16,6 +15,7 @@ uint test(uint val) return val + t.b; } +//TEST_INPUT: ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/inout.slang b/tests/compute/inout.slang index a11050055..b7c64d57f 100644 --- a/tests/compute/inout.slang +++ b/tests/compute/inout.slang @@ -1,5 +1,5 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // Test that we correctly support both `out` // and `inout` function parameters. @@ -35,6 +35,7 @@ int test(int inVal) return x3; } +//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); [numthreads(4, 1, 1)] diff --git a/tests/compute/int-generic.slang b/tests/compute/int-generic.slang index d9eb85f82..c62ecf3d7 100644 --- a/tests/compute/int-generic.slang +++ b/tests/compute/int-generic.slang @@ -1,6 +1,8 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out + //TEST_INPUT:type Material<1,2> + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IBRDF diff --git a/tests/compute/interface-local.slang b/tests/compute/interface-local.slang index d3ee88062..0a3d1c85f 100644 --- a/tests/compute/interface-local.slang +++ b/tests/compute/interface-local.slang @@ -13,6 +13,8 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute + interface IHelper { @@ -35,7 +37,7 @@ int test(int val) return existentialHelper.getVal(); } -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=gOutputBuffer RWStructuredBuffer gOutputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/interface-param.slang b/tests/compute/interface-param.slang index 1c16d2e9b..6e0a735f4 100644 --- a/tests/compute/interface-param.slang +++ b/tests/compute/interface-param.slang @@ -7,6 +7,7 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute interface IHelper { @@ -31,7 +32,7 @@ int test(int val) return doTheThing(helperImpl); } -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=gOutputBuffer RWStructuredBuffer gOutputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/interface-shader-param.slang b/tests/compute/interface-shader-param.slang index b8968b225..75788ee9a 100644 --- a/tests/compute/interface-shader-param.slang +++ b/tests/compute/interface-shader-param.slang @@ -6,6 +6,7 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute // First we will define some fake interfaces for testing. // Let's pretend we are doing some kind of random number @@ -74,7 +75,7 @@ int test( // // We'll start with the buffer for writing the test output. -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=gOutputBuffer RWStructuredBuffer gOutputBuffer; // Now we'll define a global shader parameter for the diff --git a/tests/compute/interface-static-method.slang b/tests/compute/interface-static-method.slang index 4747c8a8a..f10e00783 100644 --- a/tests/compute/interface-static-method.slang +++ b/tests/compute/interface-static-method.slang @@ -3,6 +3,7 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute interface IHideout { @@ -45,7 +46,7 @@ int test(int val) } -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/matrix-layout-structured-buffer.slang b/tests/compute/matrix-layout-structured-buffer.slang index fc46d7815..68b591f1b 100644 --- a/tests/compute/matrix-layout-structured-buffer.slang +++ b/tests/compute/matrix-layout-structured-buffer.slang @@ -17,8 +17,7 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-column-major - -//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23], stride=48):dxbinding(0),glbinding(0) +//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23], stride=48):dxbinding(0),glbinding(0),name=gMatrices RWStructuredBuffer gMatrices; int test(int val) diff --git a/tests/compute/matrix-layout.hlsl b/tests/compute/matrix-layout.hlsl index 034ac512c..64d863eb3 100644 --- a/tests/compute/matrix-layout.hlsl +++ b/tests/compute/matrix-layout.hlsl @@ -60,7 +60,7 @@ int test(int val) return ((a*N + b) * N + c) * N + d; } -//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):dxbinding(0),glbinding(2),out +//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):dxbinding(0),glbinding(2),out,name=buffer RWStructuredBuffer buffer; [numthreads(12, 1, 1)] diff --git a/tests/compute/modern-syntax.slang b/tests/compute/modern-syntax.slang index c0a1f1442..cf5f89370 100644 --- a/tests/compute/modern-syntax.slang +++ b/tests/compute/modern-syntax.slang @@ -1,5 +1,6 @@ // modern-syntax.slang //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute // This file exists to confirm that declarations using "modern" // syntax are handled correctly by the compiler front-end. @@ -14,7 +15,7 @@ func test(val: MyInt) -> MyInt return tmp; } -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/multi-interface.slang b/tests/compute/multi-interface.slang index f2115f1fc..f3c18ba42 100644 --- a/tests/compute/multi-interface.slang +++ b/tests/compute/multi-interface.slang @@ -1,6 +1,7 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IAdd diff --git a/tests/compute/multiple-continue-sites.slang b/tests/compute/multiple-continue-sites.slang index 5a5b78d0c..afab66a95 100644 --- a/tests/compute/multiple-continue-sites.slang +++ b/tests/compute/multiple-continue-sites.slang @@ -1,5 +1,5 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // Test that a loop with multiple `continue` sites works. // @@ -27,6 +27,7 @@ int test(int inVal) return ii; } +//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); [numthreads(4, 1, 1)] diff --git a/tests/compute/mutating-methods.slang b/tests/compute/mutating-methods.slang index 8192acd82..bb3bdeb7e 100644 --- a/tests/compute/mutating-methods.slang +++ b/tests/compute/mutating-methods.slang @@ -2,6 +2,7 @@ //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -serial-ir //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -xslang -serial-ir //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -serial-ir +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -xslang -serial-ir interface IAccumulator { @@ -40,7 +41,7 @@ int test(int x) return a.state; } -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/nested-generics.slang b/tests/compute/nested-generics.slang index 8996b2574..de1e52991 100644 --- a/tests/compute/nested-generics.slang +++ b/tests/compute/nested-generics.slang @@ -1,8 +1,9 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // test specialization of nested generic functions +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IGetF diff --git a/tests/compute/nested-generics2.slang b/tests/compute/nested-generics2.slang index 1f6d4a50a..855f97a11 100644 --- a/tests/compute/nested-generics2.slang +++ b/tests/compute/nested-generics2.slang @@ -1,8 +1,9 @@ //TEST(compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(compute):COMPARE_COMPUTE:-cpu // test specialization of nested generic functions +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; interface IBRDF diff --git a/tests/compute/scope-operator.slang b/tests/compute/scope-operator.slang index c50d95965..2afb642ab 100644 --- a/tests/compute/scope-operator.slang +++ b/tests/compute/scope-operator.slang @@ -1,10 +1,11 @@ // scope.slang //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute //TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute // Confirm that scoping on enums and types works -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; enum Color diff --git a/tests/compute/select-expr.slang b/tests/compute/select-expr.slang index d90708ab9..ae5375e42 100644 --- a/tests/compute/select-expr.slang +++ b/tests/compute/select-expr.slang @@ -1,6 +1,5 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out - +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu // Test IR code generation for the `?:` "select" operator @@ -9,6 +8,7 @@ int test(int input) return input > 1 ? -input : input; } +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/simple.slang b/tests/compute/simple.slang index 8f53a79b2..67ed67a6c 100644 --- a/tests/compute/simple.slang +++ b/tests/compute/simple.slang @@ -1,7 +1,9 @@ //TEST(smoke,compute):COMPARE_COMPUTE: -//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST(smoke,compute):COMPARE_COMPUTE:-cpu + // This is a basic test for Slang compute shader. +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out,name=outputBuffer RWStructuredBuffer outputBuffer; [numthreads(4, 1, 1)] diff --git a/tests/compute/ssa-reduce-bug.slang b/tests/compute/ssa-reduce-bug.slang index fe53f2ab0..15af36f9f 100644 --- a/tests/compute/ssa-reduce-bug.slang +++ b/tests/compute/ssa-reduce-bug.slang @@ -1,10 +1,10 @@ // ssa-reduce-bug.slang //TEST(compute):COMPARE_COMPUTE_EX:-slang -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cpu -slang -compute -//TEST_INPUT:ubuffer(data=[0 3 1 2 6 4 7 6], stride=4):dxbinding(0),glbinding(0) -//TEST_INPUT:ubuffer(data=[8 8 8 8 8 8 8 8], stride=4):dxbinding(1),glbinding(1),out - +//TEST_INPUT:ubuffer(data=[0 3 1 2 6 4 7 6], stride=4):dxbinding(0),glbinding(0),name=inputBuffer RWStructuredBuffer inputBuffer; +//TEST_INPUT:ubuffer(data=[8 8 8 8 8 8 8 8], stride=4):dxbinding(1),glbinding(1),out,name=outputBuffer RWStructuredBuffer outputBuffer; int2 reduce(int2 val) -- cgit v1.2.3