From 8196dc4a684a75344e507697273e2123af97b979 Mon Sep 17 00:00:00 2001 From: Yong He Date: Sun, 21 Jan 2018 16:26:52 -0800 Subject: specialize witness tables when needed when specializing `lookup_witness_table` instruction. (#376) --- tests/compute/int-generic.slang | 42 ++++++++++++++++++++++++++++ tests/compute/int-generic.slang.expected.txt | 1 + 2 files changed, 43 insertions(+) create mode 100644 tests/compute/int-generic.slang create mode 100644 tests/compute/int-generic.slang.expected.txt (limited to 'tests') diff --git a/tests/compute/int-generic.slang b/tests/compute/int-generic.slang new file mode 100644 index 000000000..7531ee74e --- /dev/null +++ b/tests/compute/int-generic.slang @@ -0,0 +1,42 @@ +//TEST(compute):COMPARE_COMPUTE:-xslang -use-ir +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +//TEST_INPUT:type Material<1,2> +RWStructuredBuffer outputBuffer; + +interface IBRDF +{ + int compute(); +}; + +interface IMaterial +{ + associatedtype TBRDF : IBRDF; + TBRDF getBRDF(); +} + +struct BRDF : IBRDF +{ + int c; + int compute() + { + return A+B; + } +}; + +struct Material : IMaterial +{ + typedef BRDF TBRDF; + TBRDF getBRDF() { TBRDF a; a.c = 0; return a; } +}; + +type_param TMaterial : IMaterial; + +TMaterial material; + +[numthreads(1, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + TMaterial.TBRDF brdf = material.getBRDF(); + int outVal = brdf.compute(); + outputBuffer[dispatchThreadID.x] = outVal; +} \ No newline at end of file diff --git a/tests/compute/int-generic.slang.expected.txt b/tests/compute/int-generic.slang.expected.txt new file mode 100644 index 000000000..e440e5c84 --- /dev/null +++ b/tests/compute/int-generic.slang.expected.txt @@ -0,0 +1 @@ +3 \ No newline at end of file -- cgit v1.2.3