From 48f26ef082fa3b0c2a02dc57585f7e43210bbb63 Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 13 Jul 2020 15:16:09 -0700 Subject: Dynamic code gen for functions returning generic types. (#1439) * Dynamic code gen for functions returning generic types. * Add expected test result. --- tests/compute/dynamic-dispatch-6.slang | 55 ++++++++++++++++++++++ .../compute/dynamic-dispatch-6.slang.expected.txt | 4 ++ 2 files changed, 59 insertions(+) create mode 100644 tests/compute/dynamic-dispatch-6.slang create mode 100644 tests/compute/dynamic-dispatch-6.slang.expected.txt (limited to 'tests') diff --git a/tests/compute/dynamic-dispatch-6.slang b/tests/compute/dynamic-dispatch-6.slang new file mode 100644 index 000000000..f9631713d --- /dev/null +++ b/tests/compute/dynamic-dispatch-6.slang @@ -0,0 +1,55 @@ +//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -allow-dynamic-code +//DISABLE_TEST(compute):COMPARE_COMPUTE:-cuda -xslang -allow-dynamic-code + +// Test dynamic dispatch code gen for generic-typed return values. + +interface IInterface +{ + [mutating] + void SetVal(int inVal); + int Compute(); +}; + +T CreateT_Inner(int inVal) +{ + T obj; + obj.SetVal(inVal); + return obj; +} + +T CreateT(int inVal) +{ + return CreateT_Inner(inVal); +} + +struct Impl : IInterface +{ + int base; + [mutating] + void SetVal(int inVal) + { + base = inVal; + } + int Compute() + { + return base; + } +}; + +int test() +{ + var obj = CreateT(3); + var obj2 = CreateT_Inner(1); + return obj.Compute() + obj2.Compute(); +} + +//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):out,name=outputBuffer +RWStructuredBuffer outputBuffer : register(u0); + +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + uint tid = dispatchThreadID.x; + int outVal = test(); + outputBuffer[tid] = outVal; +} diff --git a/tests/compute/dynamic-dispatch-6.slang.expected.txt b/tests/compute/dynamic-dispatch-6.slang.expected.txt new file mode 100644 index 000000000..e785149d2 --- /dev/null +++ b/tests/compute/dynamic-dispatch-6.slang.expected.txt @@ -0,0 +1,4 @@ +4 +4 +4 +4 -- cgit v1.2.3