From d10ca980c3d84e4838272f2082e8e35f3a7e50c0 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Tue, 30 Nov 2021 17:09:52 -0500 Subject: Fix issue around constant folding/bool (#2036) * #include an absolute path didn't work - because paths were taken to always be relative. * Fix bool handling in constant folding for generic parameters. --- tests/bugs/generic-constant-fold.slang | 58 ++++++++++++++++++++++ .../bugs/generic-constant-fold.slang.expected.txt | 8 +++ 2 files changed, 66 insertions(+) create mode 100644 tests/bugs/generic-constant-fold.slang create mode 100644 tests/bugs/generic-constant-fold.slang.expected.txt (limited to 'tests') diff --git a/tests/bugs/generic-constant-fold.slang b/tests/bugs/generic-constant-fold.slang new file mode 100644 index 000000000..35aa2a042 --- /dev/null +++ b/tests/bugs/generic-constant-fold.slang @@ -0,0 +1,58 @@ +// constant-fold.slang + +//TEST(compute):COMPARE_COMPUTE: -shaderobj +//DISABLE_TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj + +struct AnotherStruct +{ + __init() + { + value = SomeValue; + } + int value; +}; + +struct SomeStruct +{ + __init() + { + value = SomeValue; + } + bool value; +}; + +//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer +RWStructuredBuffer outputBuffer; + +[numthreads(8, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + SomeStruct a; + SomeStruct b; + SomeStruct<1> c; + SomeStruct<0> d; + + AnotherStruct e; + AnotherStruct f; + AnotherStruct<2> g; + AnotherStruct<-2> h; + + + uint tid = dispatchThreadID.x; + + int outVal; + switch (tid) + { + default: + case 0: outVal = a.value; break; + case 1: outVal = b.value; break; + case 2: outVal = c.value; break; + case 3: outVal = d.value; break; + case 4: outVal = e.value; break; + case 5: outVal = f.value; break; + case 6: outVal = g.value; break; + case 7: outVal = h.value; break; + } + + outputBuffer[tid] = outVal; +} diff --git a/tests/bugs/generic-constant-fold.slang.expected.txt b/tests/bugs/generic-constant-fold.slang.expected.txt new file mode 100644 index 000000000..cdbc7949e --- /dev/null +++ b/tests/bugs/generic-constant-fold.slang.expected.txt @@ -0,0 +1,8 @@ +1 +0 +1 +0 +1 +0 +2 +FFFFFFFE -- cgit v1.2.3