|
@@ -0,0 +1,39 @@
|
|
|
|
+// Run: %dxc -T vs_6_0 -E main
|
|
|
|
+
|
|
|
|
+// CHECK: OpDecorate %_arr_double_uint_3 ArrayStride 8
|
|
|
|
+// CHECK: OpDecorate %_arr_mat2v3double_uint_2 ArrayStride 64
|
|
|
|
+// CHECK: OpDecorate %_arr_v2long_uint_1 ArrayStride 16
|
|
|
|
+
|
|
|
|
+// CHECK: OpMemberDecorate %S 0 Offset 0
|
|
|
|
+// CHECK: OpMemberDecorate %S 1 Offset 8
|
|
|
|
+// CHECK: OpMemberDecorate %S 2 Offset 16
|
|
|
|
+// CHECK: OpMemberDecorate %S 3 Offset 40
|
|
|
|
+// CHECK: OpMemberDecorate %S 4 Offset 64
|
|
|
|
+// CHECK: OpMemberDecorate %S 5 Offset 96
|
|
|
|
+// CHECK: OpMemberDecorate %S 5 MatrixStride 32
|
|
|
|
+// CHECK: OpMemberDecorate %S 5 RowMajor
|
|
|
|
+// CHECK: OpMemberDecorate %S 6 Offset 160
|
|
|
|
+// CHECK: OpMemberDecorate %S 7 Offset 176
|
|
|
|
+// CHECK: OpMemberDecorate %S 8 Offset 192
|
|
|
|
+// CHECK: OpMemberDecorate %S 8 MatrixStride 32
|
|
|
|
+// CHECK: OpMemberDecorate %S 8 ColMajor
|
|
|
|
+// CHECK: OpMemberDecorate %S 9 Offset 320
|
|
|
|
+
|
|
|
|
+// CHECK: OpDecorate %_runtimearr_S ArrayStride 352
|
|
|
|
+
|
|
|
|
+struct S { // Alignment | Offset + Size = Next
|
|
|
|
+ float f1; // 0 | 0 4 4
|
|
|
|
+ uint64_t f2; // 8 | 8 8 16
|
|
|
|
+ double f3[3]; // 8 | 16 8 * 3 40
|
|
|
|
+ float f4; // 4 | 40 4 44
|
|
|
|
+ int64_t3 f5; // 32 | 64 8 * 3 88
|
|
|
|
+ double3x2 f6; // 32 | 96 32 * 2 160 // SPIR-V RowMajor
|
|
|
|
+ double2x1 f7; // 16 | 160 16 176
|
|
|
|
+ float f8; // 4 | 176 4 180
|
|
|
|
+ row_major double2x3 f9[2]; // 32 | 192 32 * 4 320 // SPIR-V ColMajor
|
|
|
|
+ int64_t2 f10[1]; // 16 | 320 16 336
|
|
|
|
+}; // 32 (max) 352
|
|
|
|
+
|
|
|
|
+StructuredBuffer<S> MySBuffer;
|
|
|
|
+
|
|
|
|
+void main() { }
|