From 926a0c51071f6cf5718c77958cc801030ce9d404 Mon Sep 17 00:00:00 2001 From: Dietrich Geisler Date: Tue, 2 Jun 2020 12:12:35 -0400 Subject: 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 --- tests/diagnostics/matrix-swizzle.slang | 24 ++++++++++++++++++++++++ tests/diagnostics/matrix-swizzle.slang.expected | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tests/diagnostics/matrix-swizzle.slang create mode 100644 tests/diagnostics/matrix-swizzle.slang.expected (limited to 'tests/diagnostics') 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 = { +} -- cgit v1.2.3