From 98ff41989b04ce883e9dc9f4464c45290d30c560 Mon Sep 17 00:00:00 2001 From: Anders Leino Date: Mon, 17 Mar 2025 15:05:11 +0200 Subject: Add error diagnostic vectors and matrices with disallowed element types (#6596) - Add the diagnostic messages, and code to emit them - Add some tests This helps to address issue #6183. --- tests/compute/integer-matrix-diagnostic.slang | 22 ++++++++++++++++++++++ tests/compute/integer-vector-diagnostic.slang | 20 ++++++++++++++++++++ tests/compute/matrix-layout.hlsl | 3 ++- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 tests/compute/integer-matrix-diagnostic.slang create mode 100644 tests/compute/integer-vector-diagnostic.slang (limited to 'tests') diff --git a/tests/compute/integer-matrix-diagnostic.slang b/tests/compute/integer-matrix-diagnostic.slang new file mode 100644 index 000000000..bd69c28e4 --- /dev/null +++ b/tests/compute/integer-matrix-diagnostic.slang @@ -0,0 +1,22 @@ +// Check that using matrices with integer floating point type yields the correct diagnostic + +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): -target glsl -entry computeMain -stage compute +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): -target metal -entry computeMain -stage compute +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): -target spirv -entry computeMain -stage compute +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): -target wgsl -entry computeMain -stage compute + +cbuffer MatrixBuffer +{ + // CHECK: error 38202 + int4x4 iMatrix; +} + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name=outputBuffer +RWStructuredBuffer outputBuffer; + +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + uint index = dispatchThreadID.x; + outputBuffer[index] = iMatrix[0][0]; +} \ No newline at end of file diff --git a/tests/compute/integer-vector-diagnostic.slang b/tests/compute/integer-vector-diagnostic.slang new file mode 100644 index 000000000..98ca881ff --- /dev/null +++ b/tests/compute/integer-vector-diagnostic.slang @@ -0,0 +1,20 @@ +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): -target wgsl -entry computeMain -stage compute + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name=outputBuffer +RWStructuredBuffer outputBuffer; + +cbuffer VectorBuffer +{ + // CHECK: error 38203 + vector int8Vector; + // CHECK: error 38203 + vector int16Vector; + // CHECK: error 38203 + vector int64Vector; +}; + +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + outputBuffer[0] = int8Vector.x + int16Vector.y + int64Vector.z; +} \ No newline at end of file diff --git a/tests/compute/matrix-layout.hlsl b/tests/compute/matrix-layout.hlsl index 4a2d3f014..f3ff7d76c 100644 --- a/tests/compute/matrix-layout.hlsl +++ b/tests/compute/matrix-layout.hlsl @@ -7,7 +7,8 @@ // This has a compatibility issue on Windows 10.0.10586 on Dx12 - dxcompiler will crash (can remove form tests with -exclude compatibility-issue) -//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major -shaderobj +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx11 -xslang -matrix-layout-row-major -shaderobj +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -xslang -matrix-layout-row-major -shaderobj //TEST(compute,compatibility-issue):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -xslang -matrix-layout-row-major -shaderobj //DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl -- cgit v1.2.3