From b68516e2c2e39af79dda2ec7871fe4d821ef67c4 Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 3 Apr 2023 15:54:16 -0700 Subject: Emit simpler vector element access code. (#2770) * Emit simpler vector element access code * Fix. --------- Co-authored-by: Yong He --- tests/bugs/type-legalize-bug-1.slang | 56 +++++++++++++++++++++++ tests/bugs/type-legalize-bug-1.slang.expected.txt | 4 ++ 2 files changed, 60 insertions(+) create mode 100644 tests/bugs/type-legalize-bug-1.slang create mode 100644 tests/bugs/type-legalize-bug-1.slang.expected.txt (limited to 'tests/bugs') diff --git a/tests/bugs/type-legalize-bug-1.slang b/tests/bugs/type-legalize-bug-1.slang new file mode 100644 index 000000000..83e28a509 --- /dev/null +++ b/tests/bugs/type-legalize-bug-1.slang @@ -0,0 +1,56 @@ +//TEST(compute):COMPARE_COMPUTE: -shaderobj + +//TEST_INPUT:ubuffer(data=[9 9 9 9], stride=4):out,name outputBuffer +//TEST_INPUT:type_conformance A:IFoo=0 +//TEST_INPUT:type_conformance B:IFoo=1 + +RWStructuredBuffer outputBuffer : register(u0); +interface IFoo +{ + associatedtype T : IFoo; + T getT(); + void doSomething(); +} + +A createA() { return {}; } +B createB() { return {}; } +ParameterBlock gB; +void user() +{ + IFoo a = createDynamicObject(0, 0); + IFoo b = createDynamicObject(1, 0); + test(a.getT(), b); + test(a, gB.getT()); +} +B test(T a, IFoo b) +{ + a.doSomething(); + b.doSomething(); + return {}; +} +struct B :IFoo +{ + A a; + typealias T = A; + T getT() { return {};} + void doSomething() + { + outputBuffer[0] = 1; + } +} +struct A : IFoo +{ + typealias T = B; + T getT() { return {};} + void doSomething() + { + outputBuffer[0] = 1; + } +} + + +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + user(); +} \ No newline at end of file diff --git a/tests/bugs/type-legalize-bug-1.slang.expected.txt b/tests/bugs/type-legalize-bug-1.slang.expected.txt new file mode 100644 index 000000000..89999d47a --- /dev/null +++ b/tests/bugs/type-legalize-bug-1.slang.expected.txt @@ -0,0 +1,4 @@ +1 +9 +9 +9 -- cgit v1.2.3