diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/compute/implicit-generic-app.slang | 40 | ||||
| -rw-r--r-- | tests/compute/implicit-generic-app.slang.expected.txt | 4 |
2 files changed, 44 insertions, 0 deletions
diff --git a/tests/compute/implicit-generic-app.slang b/tests/compute/implicit-generic-app.slang new file mode 100644 index 000000000..d917a5f9a --- /dev/null +++ b/tests/compute/implicit-generic-app.slang @@ -0,0 +1,40 @@ +//TEST(compute):COMPARE_COMPUTE:-xslang -use-ir + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out + +// Testing that we can implicitly specialize a generic +// that has a constrained type parameter. + + +interface ISimple +{ + int getVal(); +} + +struct Simple : ISimple +{ + int val; + + int getVal() { return val; } +}; + +int doIt<T : ISimple>(T obj) +{ + return obj.getVal(); +} + +int test(int val) +{ + Simple simple; + simple.val = val; + return doIt(simple); +} + +RWStructuredBuffer<int> outputBuffer : register(u0); +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + int tid = (int) dispatchThreadID.x; + int outVal = test(tid); + outputBuffer[tid] = outVal; +}
\ No newline at end of file diff --git a/tests/compute/implicit-generic-app.slang.expected.txt b/tests/compute/implicit-generic-app.slang.expected.txt new file mode 100644 index 000000000..bc856dafa --- /dev/null +++ b/tests/compute/implicit-generic-app.slang.expected.txt @@ -0,0 +1,4 @@ +0 +1 +2 +3 |
