================
@@ -0,0 +1,28 @@
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl 
-finclude-default-header -verify %s
+
+void foo() {
+    float3x3 A;
+    float r = A._m00;      // read is ok
+    float good1 = A._11;    
+    float good2 = A._33;
+
+    float bad0 = A._m44;     // expected-error {{matrix row element accessor 
is out of bounds of zero based indexing}} expected-error {{matrix column 
element accessor is out of bounds of zero based indexing}}
+    float bad1 = A._m33;     // expected-error {{matrix row index 3 is out of 
bounds of rows size 3}} expected-error {{matrix column index 3 is out of bounds 
of columns size 3}}
+    float bad2 = A._mA2;     // expected-error {{invalid matrix member 'A' 
expected row as integer}}
+    float bad3 = A._m2F;     // expected-error {{invalid matrix member 'F' 
expected column as integer}}
+
+    float bad4 = A._00;      // expected-error {{matrix row element accessor 
is out of bounds of one based indexing}} expected-error {{matrix column element 
accessor is out of bounds of one based indexing}}
+    float bad5 = A._44;      // expected-error {{matrix row index 3 is out of 
bounds of rows size 3}} expected-error {{matrix column index 3 is out of bounds 
of columns size 3}}
+    float bad6 = A._55;      // expected-error {{matrix row element accessor 
is out of bounds of one based indexing}} expected-error {{matrix column element 
accessor is out of bounds of one based indexing}}
+    float bad7 = A.foo;      // expected-error {{invalid matrix member 'foo' 
expected zero based: '_mRC' or one-based: '_RC' accessor}}
+    float2 bad8 = A._m00_33; // expected-error {{invalid matrix member '3' 
expected '_m' prefix}}
+    float2 bad9 = A._11_m33; // expected-error {{invalid matrix member 'm' 
expected row as integer}}
+    float bad10 = A._m0000;  // expected-error {{invalid matrix member '0' 
expected '_m' prefix}}
+    float bad11 = A._m1;     // expected-error {{invalid matrix member '_m1' 
expected zero based: '_mRC' accessor}}
+    float bad12 = A._m;      // expected-error {{invalid matrix member '_m' 
expected zero based: '_mRC' accessor}}
+    float bad13 = A._1;      // expected-error {{invalid matrix member '_1' 
expected one-based: '_RC' accessor}}
+    float bad14 = A.m;       // expected-error {{invalid matrix member 'm' 
expected length 4 for zero based: '_mRC' or length 3 for one-based: '_RC' 
accessor}}
+
----------------
hekota wrote:

```suggestion
    float bad15 = A._m11_m2;      // expected-error {{invalid matrix member 
'_m2' expected zero based: '_mRC' accessor}}
    float bad16 = A._11_2;      // expected-error {{invalid matrix member '_2' 
expected zero based: '_mRC' accessor}}
```

https://github.com/llvm/llvm-project/pull/171225
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to