diff options
| author | Sriram Murali <85252063+sriramm-nv@users.noreply.github.com> | 2024-07-25 15:58:54 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-25 15:58:54 -0700 |
| commit | 0fe55d6d8793fcd005b6d3c0ccaa0afbc27c069f (patch) | |
| tree | 8e1cf68aa6aff6b4db3aababb1b3cf365ba74e3d /tests | |
| parent | 2e7e2b568ce93697e36a7c0b50364dc78bd1bb97 (diff) | |
Disallow multi-dim vector subscript in slang IR (#4277)
Fixes bug #3180
This test verifies the check for illegal swizzle on vector types, whose
element is not a basic Type (int, float).
The check captures the failure within swizzle access on a nested vector
subscript element.
vector<vector<int, 2>, 2> a
int b = a[0].x; // illegal
Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bugs/g3180-swizzle-nd-vectors.slang | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/bugs/g3180-swizzle-nd-vectors.slang b/tests/bugs/g3180-swizzle-nd-vectors.slang new file mode 100644 index 000000000..a6d81740f --- /dev/null +++ b/tests/bugs/g3180-swizzle-nd-vectors.slang @@ -0,0 +1,18 @@ +//TEST:SIMPLE(filecheck=CHECK):-target cpp -entry computeMain -stage compute +//TEST:SIMPLE(filecheck=CHECK):-target glsl -entry computeMain -stage compute +//TEST:SIMPLE(filecheck=CHECK):-target hlsl -entry computeMain -stage compute +//TEST:SIMPLE(filecheck=CHECK):-target spirv -emit-spirv-via-glsl -entry computeMain -stage compute +//TEST:SIMPLE(filecheck=CHECK):-target spirv -emit-spirv-directly -entry computeMain -stage compute + +// This test tests that assigning to a subscript of a unary swizzle works + +RWStructuredBuffer<float> outputBuffer; + +[numthreads(1, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + vector<vector<int, 2>, 2> v; + v.x[0] = 1; + // CHECK: ([[# @LINE+1]]): error 55200: 'vector<vector<{{.*}}>' is not a supported builtin type for the target. + outputBuffer[dispatchThreadID.x] = v.x[0]; +} |
