summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2020-10-05 10:30:27 -0700
committerGitHub <noreply@github.com>2020-10-05 10:30:27 -0700
commitd930c65e7fef6414af363e1f8d4fff52beb448af (patch)
tree39a4ea4bbd7bbbdbb2825cd5701cee919765c687 /tests
parent3321df74904dfe3a11a41179b66a4c3ce5b57022 (diff)
Update the type of a call inst during specialization. (#1569)
Diffstat (limited to 'tests')
-rw-r--r--tests/compute/interface-assoc-type-param.slang60
-rw-r--r--tests/compute/interface-assoc-type-param.slang.expected.txt4
2 files changed, 64 insertions, 0 deletions
diff --git a/tests/compute/interface-assoc-type-param.slang b/tests/compute/interface-assoc-type-param.slang
new file mode 100644
index 000000000..d43a43fc9
--- /dev/null
+++ b/tests/compute/interface-assoc-type-param.slang
@@ -0,0 +1,60 @@
+// Tests using associated types through an existential-struct-typed param.
+
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cuda
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -cpu
+
+[anyValueSize(8)]
+interface IInterface
+{
+ associatedtype TEval:IEval;
+ TEval getEval();
+}
+
+[anyValueSize(8)]
+interface IEval
+{
+ uint eval();
+}
+
+struct Impl : IInterface
+{
+ uint val;
+ struct TEval : IEval
+ {
+ uint val;
+ uint eval()
+ {
+ return val;
+ }
+ };
+ TEval getEval()
+ {
+ TEval rs;
+ rs.val = val;
+ return rs;
+ }
+};
+
+struct Params
+{
+ StructuredBuffer<IInterface> obj;
+};
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=gOutputBuffer
+RWStructuredBuffer<uint> gOutputBuffer;
+
+void compute(uint tid, Params p)
+{
+ gOutputBuffer[tid] = p.obj[0].getEval().eval();
+}
+
+//TEST_INPUT: entryPointExistentialType Impl
+
+[numthreads(4, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID,
+//TEST_INPUT:ubuffer(data=[0 0 0 0 1 0], stride=4):name=params.obj
+ uniform Params params)
+{
+ uint tid = dispatchThreadID.x;
+ compute(tid, params);
+} \ No newline at end of file
diff --git a/tests/compute/interface-assoc-type-param.slang.expected.txt b/tests/compute/interface-assoc-type-param.slang.expected.txt
new file mode 100644
index 000000000..98fb6a686
--- /dev/null
+++ b/tests/compute/interface-assoc-type-param.slang.expected.txt
@@ -0,0 +1,4 @@
+1
+1
+1
+1