summaryrefslogtreecommitdiff
path: root/tests/diagnostics
diff options
context:
space:
mode:
authorDietrich Geisler <dag368@cornell.edu>2020-06-02 12:12:35 -0400
committerGitHub <noreply@github.com>2020-06-02 09:12:35 -0700
commit926a0c51071f6cf5718c77958cc801030ce9d404 (patch)
treec02e84cd402afc6383db2e169c08d05c2a12fbc6 /tests/diagnostics
parent8acb704ecabc10c31e664de3814c544572e3945f (diff)
Working matrix swizzle (#1354)
* Working matrix swizzle. Supports one and zero indexing and multiple elements. Performs semantic checking of the swizzle. Matrix swizzles are transformed into a vector of indexing operations during lowering to the IR. This change does not handle matrix swizzle as lvalues. * Renaming * Added missing semicolon * Initialize variable for gcc * Added the expect file for diagnostics * Matrix swizzle updated per PR feedback * Stylistic fix * Formatting fixes * Fix compiling with AST change. Change indentation. Co-authored-by: jsmall-nvidia <jsmall@nvidia.com>
Diffstat (limited to 'tests/diagnostics')
-rw-r--r--tests/diagnostics/matrix-swizzle.slang24
-rw-r--r--tests/diagnostics/matrix-swizzle.slang.expected18
2 files changed, 42 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 = {
+}