summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/diagnostics/matrix-swizzle.slang24
-rw-r--r--tests/diagnostics/matrix-swizzle.slang.expected18
-rw-r--r--tests/language-feature/swizzles/matrix-swizzles.slang34
-rw-r--r--tests/language-feature/swizzles/matrix-swizzles.slang.expected.txt4
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