diff options
Diffstat (limited to 'tests')
4 files changed, 80 insertions, 0 deletions
diff --git a/tests/diagnostics/matrix-swizzle.slang b/tests/diagnostics/matrix-swizzle.slang new file mode 100644 index 000000000..d9331d89a --- /dev/null +++ b/tests/diagnostics/matrix-swizzle.slang @@ -0,0 +1,24 @@ +//DIAGNOSTIC_TEST:SIMPLE: + +int doSomething(int a) +{ + int2x3 m1 = int2x3(0, 1, 2, 3, 4, 5); + int3x2 m2 = int3x2(0, 1, 2, 3, 4, 5); + + int c = m1._14; // Out of bounds + c = m1._32; + c = m2._m22; + c = m2._; // unfinished + c = m2._m; + c = m2._1; + c = m2._m1; + c = m2._m12_; + int2 c2 = m1._m11_11; // Mixing of 1 and 0-indexing + c = m1._11_11_11_11_11; // More than 4 elements + c = m1.x; // Invalid character + c = m1._x; + c = m1.x123; + + return m1._11; +} + diff --git a/tests/diagnostics/matrix-swizzle.slang.expected b/tests/diagnostics/matrix-swizzle.slang.expected new file mode 100644 index 000000000..8d349a2ed --- /dev/null +++ b/tests/diagnostics/matrix-swizzle.slang.expected @@ -0,0 +1,18 @@ +result code = -1 +standard error = { +tests/diagnostics/matrix-swizzle.slang(8): error 30052: invalid swizzle pattern '_14' on type 'int' +tests/diagnostics/matrix-swizzle.slang(9): error 30052: invalid swizzle pattern '_32' on type 'int' +tests/diagnostics/matrix-swizzle.slang(10): error 30052: invalid swizzle pattern '_m22' on type 'int' +tests/diagnostics/matrix-swizzle.slang(11): error 30052: invalid swizzle pattern '_' on type 'int' +tests/diagnostics/matrix-swizzle.slang(12): error 30052: invalid swizzle pattern '_m' on type 'int' +tests/diagnostics/matrix-swizzle.slang(13): error 30052: invalid swizzle pattern '_1' on type 'int' +tests/diagnostics/matrix-swizzle.slang(14): error 30052: invalid swizzle pattern '_m1' on type 'int' +tests/diagnostics/matrix-swizzle.slang(15): error 30052: invalid swizzle pattern '_m12_' on type 'int' +tests/diagnostics/matrix-swizzle.slang(16): error 30052: invalid swizzle pattern '_m11_11' on type 'int' +tests/diagnostics/matrix-swizzle.slang(17): error 30052: invalid swizzle pattern '_11_11_11_11_11' on type 'int' +tests/diagnostics/matrix-swizzle.slang(18): error 30052: invalid swizzle pattern 'x' on type 'int' +tests/diagnostics/matrix-swizzle.slang(19): error 30052: invalid swizzle pattern '_x' on type 'int' +tests/diagnostics/matrix-swizzle.slang(20): error 30052: invalid swizzle pattern 'x123' on type 'int' +} +standard output = { +} diff --git a/tests/language-feature/swizzles/matrix-swizzles.slang b/tests/language-feature/swizzles/matrix-swizzles.slang new file mode 100644 index 000000000..e1a2d7473 --- /dev/null +++ b/tests/language-feature/swizzles/matrix-swizzles.slang @@ -0,0 +1,34 @@ +// matrix-swizzle.slang + +//TEST(compute):COMPARE_COMPUTE: + +// Test that matrix swizzle works correctly +// Matrix swizzles can either be one or zero indexed +// Reference: https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-per-component-math + +int test(int val) +{ + float2x2 worldMatrix = float2x2(val + 0, val + 1, val + 2, val + 3); + float2 tempVector1; + float2 tempVector2; + + // TODO: make left-hand side matrix swizzles work + tempVector1 = worldMatrix._m00_m11; + tempVector2 = worldMatrix._12_21; + + // return tempMatrix[0][0] + tempMatrix[0][1] = val + 0 + val + 1 + return tempVector1.x + tempVector2.x; +} + + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer +RWStructuredBuffer<int> outputBuffer; + +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + uint tid = dispatchThreadID.x; + int inVal = tid; + int outVal = test(inVal); + outputBuffer[tid] = outVal; +} diff --git a/tests/language-feature/swizzles/matrix-swizzles.slang.expected.txt b/tests/language-feature/swizzles/matrix-swizzles.slang.expected.txt new file mode 100644 index 000000000..9b4237ab1 --- /dev/null +++ b/tests/language-feature/swizzles/matrix-swizzles.slang.expected.txt @@ -0,0 +1,4 @@ +1 +3 +5 +7 |
